docs: def check(table='filter', chain=None, rule=None, family='ipv4'):
      '''
      Check for the existence of a rule in the table and chain
  
      This function accepts a rule in a standard iptables command format,
          starting with the chain. Trying to force users to adapt to a new
          method of creating rules would be irritating at best, and we
          already have a parser that can handle it.
  
      CLI Example:
  
      .. code-block:: bash
  
          salt '*' iptables.check filter INPUT \\
              rule='-m state --state RELATED,ESTABLISHED -j ACCEPT'
  
          IPv6:
          salt '*' iptables.check filter INPUT \\
              rule='-m state --state RELATED,ESTABLISHED -j ACCEPT' \\
              family=ipv6
      '''
      if not chain:
          return 'Error: Chain needs to be specified'
      if not rule:
          return 'Error: Rule needs to be specified'
      ipt_cmd = _iptables_cmd(family)
  
      if _has_option('--check', family):
          cmd = '{0} -t {1} -C {2} {3}'.format(ipt_cmd, table, chain, rule)
          out = __salt__['cmd.run'](cmd, output_loglevel='quiet')
      else:
          _chain_name = hex(uuid.getnode())
  
          # Create temporary table
          __salt__['cmd.run']('{0} -t {1} -N {2}'.format(ipt_cmd, table, _chain_name))
          __salt__['cmd.run']('{0} -t {1} -A {2} {3}'.format(ipt_cmd, table, _chain_name, rule))
  
          out = __salt__['cmd.run']('{0}-save'.format(ipt_cmd))
  
          # Clean up temporary table
          __salt__['cmd.run']('{0} -t {1} -F {2}'.format(ipt_cmd, table, _chain_name))
          __salt__['cmd.run']('{0} -t {1} -X {2}'.format(ipt_cmd, table, _chain_name))
  
          for i in out.splitlines():
              if i.startswith('-A {0}'.format(_chain_name)):
                  if i.replace(_chain_name, chain) in out.splitlines():
                      return True
  
          return False
  
      if not out:
          return True
      return out