{%- macro rich_rule(rule) %} {%- if 'ipset' in rule %} {%- endif %} {%- if 'source' in rule %} {%- endif %} {%- if 'destination' in rule %} {%- endif %} {%- if 'service' in rule %} {%- endif %} {%- if 'port' in rule %} {%- endif %} {%- if 'protocol' in rule %} {%- endif %} {%- if 'icmp_block' in rule %} {%- endif %} {%- if 'icmp_type' in rule %} {%- endif %} {%- if 'masquerade' in rule %} {%- if rule.masquerade %}{%- endif %} {%- endif %} {%- if 'forward_port' in rule %} {%- if 'comment' in rule.forward_port %} {%- endif %} {%- endif %} {%- if 'source_port' in rule %} {%- if 'comment' in rule.source_port %} {%- endif %} {%- endif %} {%- if 'log' in rule %} {%- if 'limit' in rule.log %} {%- endif %} {%- endif %} {%- if 'audit' in rule %} {%- if 'limit' in rule.audit %} {%- endif %} {%- endif %} {%- if 'accept' in rule %} {%- if rule.accept is mapping and 'limit' in rule.accept %} {%- endif %} {%- endif %} {%- if 'reject' in rule %} {%- endif %} {%- if 'drop' in rule %} {%- endif %} {%- endmacro %} {% if 'short' in policy %}{{ policy.short }}{% else %}{{ name }}{% endif %} {% if 'description' in policy %}{{ policy.description }}{% endif %} {% if 'ingress_zone' in policy %}{% endif %} {% if 'egress_zone' in policy %}{% endif %} {%- if 'sources' in policy %} {%- for v in policy.sources %} {%- if 'comment' in v %} {%- else %} {%- endif %} {%- endfor %} {%- endif %} {%- if 'ipsets' in policy %} {%- for v in policy.ipsets %} {%- if 'comment' in v %} {%- else %} {%- endif %} {%- endfor %} {%- endif %} {%- for k,val in policy.items() %} {%- if k.endswith("services") %} {%- for v in val %} {%- endfor %} {%- endif %} {%- endfor %} {%- if 'ports' in policy %} {%- for v in policy.ports %} {%- if 'comment' in v %} {%- endif %} {%- endfor %} {%- endif %} {%- if 'protocols' in policy %} {%- for v in policy.protocols %} {%- endfor %} {%- endif %} {%- if 'icmp_blocks' in policy %} {%- for v in policy.icmp_blocks %} {%- endfor %} {%- endif %} {%- if 'icmp_block_inversion' in policy and policy.icmp_block_inversion %} {%- endif %} {%- if 'masquerade' in policy %} {%- if policy.masquerade %} {%- endif %} {%- endif %} {%- if 'forward_ports' in policy %} {%- for v in policy.forward_ports %} {%- if 'comment' in v %} {%- endif %} {%- endfor %} {%- endif %} {%- if 'source_ports' in policy %} {%- for v in policy.source_ports %} {%- if 'comment' in v %} {%- endif %} {%- endfor %} {%- endif %} {%- if 'rich_rules' in policy %} {%- if policy.rich_rules is list %} {%- set rich_rules = policy.rich_rules %} {%- else %} {%- set expanded_ipset_rules = [] %} {%- for name,rule in policy.rich_rules|dictsort %} {%- if 'ipsets' in rule %} {%- for ipset in rule.ipsets %} {%- set tmp_rule = {} %} {%- set _dummy = tmp_rule.update(rule) %} {%- set _dummy = tmp_rule.update({'ipset':{'name':ipset}}) %} {%- set _dummy = expanded_ipset_rules.append(tmp_rule) %} {%- endfor %} {%- else %} {%- set _dummy = expanded_ipset_rules.append(rule) %} {%- endif %} {%- endfor %} {%- set rich_rules = [] %} {%- for rule in expanded_ipset_rules %} {%- if 'services' in rule %} {%- for service in rule.services %} {%- set tmp_rule = {} %} {%- set _dummy = tmp_rule.update(rule) %} {%- set _dummy = tmp_rule.update({'service':service}) %} {%- set _dummy = rich_rules.append(tmp_rule) %} {%- endfor %} {%- else %} {%- set _dummy = rich_rules.append(rule) %} {%- endif %} {%- endfor %} {%- endif %} {%- for rule in rich_rules %} {{- rich_rule(rule) }} {%- endfor %} {%- endif %}