docs: def insert(table='filter', chain=None, position=None, rule=None, family='ipv4'):
      '''
      Insert a rule into the specified table/chain, at the specified position.
  
      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.
  
      If the position specified is a negative number, then the insert will be
          performed counting from the end of the list. For instance, a position
          of -1 will insert the rule as the second to last rule. To insert a rule
          in the last position, use the append function instead.
  
      CLI Examples:
  
      .. code-block:: bash
  
          salt '*' iptables.insert filter INPUT position=3 \\
              rule='-m state --state RELATED,ESTABLISHED -j ACCEPT'
  
          IPv6:
          salt '*' iptables.insert filter INPUT position=3 \\
              rule='-m state --state RELATED,ESTABLISHED -j ACCEPT' \\
              family=ipv6
      '''
      if not chain:
          return 'Error: Chain needs to be specified'
      if not position:
          return 'Error: Position needs to be specified or use append (-A)'
      if not rule:
          return 'Error: Rule needs to be specified'
  
      if position < 0:
          rules = get_rules(family=family)
          size = len(rules[table][chain]['rules'])
          position = (size + position) + 1
          if position is 0:
              position = 1
  
      wait = '--wait' if _has_option('--wait', family) else ''
      returnCheck = check(table, chain, rule, family)
      if isinstance(returnCheck, bool) and returnCheck:
          return False
      cmd = '{0} {1} -t {2} -I {3} {4} {5}'.format(
              _iptables_cmd(family), wait, table, chain, position, rule)
      out = __salt__['cmd.run'](cmd)
      return out