# Autogenerated by VyOS
# Do not edit this file, all your changes will be lost
# on next commit or reboot

global_defs {
    dynamic_interfaces
    script_user root
    notify_fifo /run/keepalived_notify_fifo
    notify_fifo_script /usr/libexec/vyos/system/keepalived-fifo.py
}

{% for group in groups -%}

{% if group.health_check_script -%}
vrrp_script healthcheck_{{ group.name }} {
    script "{{ group.health_check_script }}"
    interval {{ group.health_check_interval }}
    fall {{ group.health_check_count }}
    rise 1

}
{% endif %}

vrrp_instance {{ group.name }} {
    {% if group.description -%}
    # {{ group.description }}
    {% endif -%}

    state BACKUP
    interface {{ group.interface }}
    virtual_router_id {{ group.vrid }}
    priority {{ group.priority }}
    advert_int {{ group.advertise_interval }}

    {% if group.preempt -%}
    preempt_delay {{ group.preempt_delay }}
    {% else -%}
    nopreempt
    {% endif -%}

    {% if group.peer_address -%}
    unicast_peer { {{ group.peer_address }} }
    {% endif -%}

    {% if group.hello_source -%}
      {%- if group.peer_address -%}
      unicast_src_ip {{ group.hello_source }}
      {%- else -%}
      mcast_src_ip {{ group.hello_source }}
      {%- endif %}
    {% endif -%}

    {% if group.use_vmac and group.peer_address -%}
      use_vmac {{group.interface}}v{{group.vrid}}
      vmac_xmit_base
    {% elif group.use_vmac -%}
      use_vmac {{group.interface}}v{{group.vrid}}
    {% endif -%}

    {% if group.auth_password -%}
      authentication {
        auth_pass "{{ group.auth_password }}"
        auth_type {{ group.auth_type }}
      }
    {% endif -%}

    virtual_ipaddress {
    {% for addr in group.virtual_addresses -%}
        {{ addr }}
    {% endfor -%}
    }

    {% if group.health_check_script -%}
    track_script {
        healthcheck_{{ group.name }}
    }
    {% endif -%}
}

{% endfor -%}

{% for sync_group in sync_groups -%}
vrrp_sync_group {{ sync_group.name }} {
       group {
            {% for member in sync_group.members -%}
                {{ member }}
            {% endfor -%}
        }

        {% if sync_group.conntrack_sync -%}
            notify_master "/opt/vyatta/sbin/vyatta-vrrp-conntracksync.sh master {{ sync_group.name }}"
            notify_backup "/opt/vyatta/sbin/vyatta-vrrp-conntracksync.sh backup {{ sync_group.name }}"
            notify_fault "/opt/vyatta/sbin/vyatta-vrrp-conntracksync.sh fault {{ sync_group.name }}"
        {% endif -%}
}

{% endfor -%}