{% if helpers.exists('OPNsense.quagga.general.enabled') and OPNsense.quagga.general.enabled == '1' %}
# XXX rc.d/frr splits up defunct "frr" service into frr_daemons
# and we always start "zebra" so for now this works:
zebra_setup="/usr/local/opnsense/scripts/frr/setup.sh"
frr_enable="YES"
{% if helpers.exists('OPNsense.quagga.general.enablecarp') and OPNsense.quagga.general.enablecarp == '1' %}
start_precmd="ifconfig | grep 'carp: MASTER'"
{% endif %}
frr_daemons="zebra{%
if helpers.exists('OPNsense.quagga.ospf.enabled') and OPNsense.quagga.ospf.enabled == '1' %} ospfd{% endif %}{%
if helpers.exists('OPNsense.quagga.rip.enabled') and OPNsense.quagga.rip.enabled == '1' %} ripd{% endif %}{%
if helpers.exists('OPNsense.quagga.bfd.enabled') and OPNsense.quagga.bfd.enabled == '1' %} bfdd{% endif %}{%
if helpers.exists('OPNsense.quagga.bgp.enabled') and OPNsense.quagga.bgp.enabled == '1' %} bgpd{% endif %}{%
if helpers.exists('OPNsense.quagga.ospf6.enabled') and OPNsense.quagga.ospf6.enabled == '1' %} ospf6d{% endif %}{%
if helpers.exists('OPNsense.quagga.ripng.enabled') and OPNsense.quagga.ripng.enabled == '1' %} ripngd{% endif %}{%
if helpers.exists('OPNsense.quagga.isis.enabled') and OPNsense.quagga.isis.enabled == '1' %} isisd{% endif %}"
frr_carp_demote="{%
    if not helpers.empty('OPNsense.quagga.ospf.carp_demote') %} ospfd{% endif %}{%
    if not helpers.empty('OPNsense.quagga.ospf6.carp_demote') %} ospf6d{% endif
%}"
start_postcmd='
	# XXX rc.d/frr declares its own post command we need to hook first
	start_postcmd
	# XXX rc.d/frr iterates through daemons so we need to hook last one
	if [ "${frr_daemons}" != "${frr_daemons% ${name}}" ]; then
		echo "Starting CARP event handler now"
		/usr/local/opnsense/scripts/frr/carp_event_handler
	fi
'
{% if OPNsense.quagga.general.enablesnmp == '1' %}
zebra_flags="${zebra_flags} -M snmp"
bgpd_flags="${bgpd_flags} -M snmp"
ospf_flags="${ospf_flags} -M snmp"
ospf6_flags="${ospf6_flags} -M snmp"
{% endif %}
{% else %}
frr_enable="NO"
{% endif %}
