iptables_{{ chain_name }}_{{ rule_name }}:
  {%- if rule.position is defined %}
  iptables.insert:
  - position: {{ rule.position }}
  {%- else %}
  iptables.append:
  - require:
  {%- if loop.index != 1 %}
    - iptables: iptables_{{ chain_name }}_{% if service_name is defined %}{{ service_name }}_{% endif %}{{ loop.index - 1 }}
  {%- else %}
  {%- for chain in chains %}
    - iptables: iptables_{{ chain }}
  {%- endfor %}
  {%- endif %}
  {%- endif %}
  - table: {{ rule.get('table', 'filter') }}
  - chain: {{ chain_name }}
  {%- if rule.family is defined %}
  - family: {{ rule.family }}
  {%- endif %}
  {%- if rule.jump is defined %}
  - jump: {{ rule.jump }}
  {%- endif %}
  {%- if rule.match is defined %}
  - match: {{ rule.match }}
  {%- endif %}
  {%- if rule.comment is defined %}
  - comment: {{ rule.comment }}
  {%- endif %}
  {%- if rule.connection_state is defined %}
  - connstate: {{ rule.connection_state }}
  {%- endif %}
  {%- if rule.protocol is defined %}
  - proto: {{ rule.protocol }}
  {%- endif %}
  {%- if rule.destination_port is defined %}
  - dport: {{ rule.destination_port }}
  {%- endif %}
  {%- if rule.destination_ports is defined %}
  - dports:
  {%- for port in rule.destination_ports %}
    - {{ port }}
  {% endfor %}
  {%- endif %}
  {%- if rule.source_port is defined %}
  - sport: {{ rule.source_port }}
  {%- endif %}
  {%- if rule.in_interface is defined %}
  - in-interface: {{ rule.in_interface }}
  {%- endif %}
  {%- if rule.out_interface is defined %}
  - out-interface: {{ rule.out_interface }}
  {%- endif %}
  {%- if rule.to_destination is defined %}
  - to-destination: {{ rule.to_destination }}
  {%- endif %}
  {%- if rule.to_port is defined %}
  - to-port: {{ rule.to_port }}
  {%- endif %}
  {%- if rule.to_source is defined %}
  - to-source: {{ rule.to_source }}
  {%- endif %}
  {%-  if rule.source_network is defined %}
  - source: {{ rule.source_network }}
  {%- endif %}
  {%-  if rule.destination_network is defined %}
  - destination: {{ rule.destination_network }}
  {%- endif %}
  {%-  if rule.log_prefix is defined %}
  - log-prefix: '{{ rule.log_prefix }}'
  {%- endif %}
  {%-  if rule.log_level is defined %}
  - log-level: {{ rule.log_level }}
  {%- endif %}
  {%-  if rule.limit is defined %}
  - limit: '{{ rule.limit }}'
  {%- endif %}
  {%- if chain.policy is defined %}
  - require_in:
    - iptables: iptables_{{ chain_name }}_policy
  {%- endif %}
  {%- if grains.get('virtual_subtype', None) not in ['Docker', 'LXC'] %}
  - require:
    - iptables: iptables_{{ chain_name }}{% if rule.family is defined %}_{{ rule.family }}{% endif %}
  {%- endif %}
  - save: True
