### Autogenerated by load-balancing_wan.py ### {% if disable_source_nat is vyos_defined %} disable-source-nat {% endif %} {% if enable_local_traffic is vyos_defined %} enable-local-traffic {% endif %} {% if sticky_connections is vyos_defined %} sticky-connections inbound {% endif %} {% if flush_connections is vyos_defined %} flush-conntrack {% endif %} {% if hook is vyos_defined %} hook "{{ hook }}" {% endif %} {% if interface_health is vyos_defined %} health { {% for interface, interface_config in interface_health.items() %} interface {{ interface }} { {% if interface_config.failure_count is vyos_defined %} failure-ct {{ interface_config.failure_count }} {% endif %} {% if interface_config.success_count is vyos_defined %} success-ct {{ interface_config.success_count }} {% endif %} {% if interface_config.nexthop is vyos_defined %} nexthop {{ interface_config.nexthop }} {% endif %} {% if interface_config.test is vyos_defined %} {% for test_rule, test_config in interface_config.test.items() %} rule {{ test_rule }} { {% if test_config.type is vyos_defined %} {% set type_translate = {'ping': 'ping', 'ttl': 'udp', 'user-defined': 'user-defined'} %} type {{ type_translate[test_config.type] }} { {% if test_config.ttl_limit is vyos_defined and test_config.type == 'ttl' %} ttl {{ test_config.ttl_limit }} {% endif %} {% if test_config.test_script is vyos_defined and test_config.type == 'user-defined' %} test-script {{ test_config.test_script }} {% endif %} {% if test_config.target is vyos_defined %} target {{ test_config.target }} {% endif %} resp-time {{ test_config.resp_time | int * 1000 }} } {% endif %} } {% endfor %} {% endif %} } {% endfor %} } {% endif %} {% if rule is vyos_defined %} {% for rule, rule_config in rule.items() %} rule {{ rule }} { {% if rule_config.exclude is vyos_defined %} exclude {% endif %} {% if rule_config.failover is vyos_defined %} failover {% endif %} {% if rule_config.limit is vyos_defined %} limit { {% if rule_config.limit.burst is vyos_defined %} burst {{ rule_config.limit.burst }} {% endif %} {% if rule_config.limit.rate is vyos_defined %} rate {{ rule_config.limit.rate }} {% endif %} {% if rule_config.limit.period is vyos_defined %} period {{ rule_config.limit.period }} {% endif %} {% if rule_config.limit.threshold is vyos_defined %} thresh {{ rule_config.limit.threshold }} {% endif %} } {% endif %} {% if rule_config.per_packet_balancing is vyos_defined %} per-packet-balancing {% endif %} {% if rule_config.protocol is vyos_defined %} protocol {{ rule_config.protocol }} {% endif %} {% if rule_config.destination is vyos_defined %} destination { {% if rule_config.destination.address is vyos_defined %} address "{{ rule_config.destination.address }}" {% endif %} {% if rule_config.destination.port is vyos_defined %} {% if '-' in rule_config.destination.port %} port-ipt "-m multiport --dports {{ rule_config.destination.port | replace('-', ':') }}" {% else %} port-ipt " --dport {{ rule_config.destination.port }}" {% endif %} {% endif %} } {% endif %} {% if rule_config.source is vyos_defined %} source { {% if rule_config.source.address is vyos_defined %} address "{{ rule_config.source.address }}" {% endif %} {% if rule_config.source.port is vyos_defined %} {% if '-' in rule_config.source.port %} port-ipt "-m multiport --sports {{ rule_config.source.port | replace('-', ':') }}" {% else %} port.ipt " --sport {{ rule_config.source.port }}" {% endif %} {% endif %} } {% endif %} {% if rule_config.inbound_interface is vyos_defined %} inbound-interface {{ rule_config.inbound_interface }} {% endif %} {% if rule_config.interface is vyos_defined %} {% for interface, interface_config in rule_config.interface.items() %} interface {{ interface }} { {% if interface_config.weight is vyos_defined %} weight {{ interface_config.weight }} {% endif %} } {% endfor %} {% endif %} } {% endfor %} {% endif %}