'Add a rule to the table.
This is just like what you\'d feed to iptables, just without
the \'-A <chain name>\' bit at the start.
However, if you need to jump to one of your wrapped chains,
prepend its name with a \'$\' which will ensure the wrapping
is applied correctly.'

def add_rule(self, chain, rule, wrap=True, top=False, tag=None, comment=None):

    chain = get_chain_name(chain, wrap)
    if (wrap and (chain not in self.chains)):
        raise LookupError((_('Unknown    chain:    %r') % chain))
    if ('$' in rule):
        rule = '    '.join((self._wrap_target_chain(e, wrap) for e in rule.split('    ')))
    self.rules.append(IptablesRule(chain, rule, wrap, top, self.wrap_name, tag, comment))
