2017-10-05 01:35:43 -05:00
|
|
|
[supervisord]
|
|
|
|
logfile_maxbytes=1MB
|
|
|
|
logfile_backups=2
|
|
|
|
nodaemon=true
|
|
|
|
|
2019-11-05 20:32:14 -06:00
|
|
|
[eventlistener:supervisor-proc-exit-listener]
|
2020-02-07 14:34:07 -06:00
|
|
|
command=/usr/bin/supervisor-proc-exit-listener --container-name dhcp_relay
|
2019-11-05 20:32:14 -06:00
|
|
|
events=PROCESS_STATE_EXITED
|
|
|
|
autostart=true
|
|
|
|
autorestart=unexpected
|
|
|
|
|
2017-10-05 01:35:43 -05:00
|
|
|
[program:start.sh]
|
|
|
|
command=/usr/bin/start.sh
|
|
|
|
priority=1
|
|
|
|
autostart=true
|
|
|
|
autorestart=false
|
|
|
|
stdout_logfile=syslog
|
|
|
|
stderr_logfile=syslog
|
|
|
|
|
|
|
|
[program:rsyslogd]
|
|
|
|
command=/usr/sbin/rsyslogd -n
|
|
|
|
priority=2
|
|
|
|
autostart=false
|
|
|
|
autorestart=false
|
|
|
|
stdout_logfile=syslog
|
|
|
|
stderr_logfile=syslog
|
|
|
|
|
|
|
|
{# If our configuration has VLANs... #}
|
|
|
|
{% if VLAN %}
|
|
|
|
{# Count how many VLANs require a DHCP relay agent... #}
|
|
|
|
{% set num_relays = { 'count': 0 } %}
|
|
|
|
{% for vlan_name in VLAN %}
|
|
|
|
{% if VLAN[vlan_name]['dhcp_servers'] %}
|
|
|
|
{% set _dummy = num_relays.update({'count': num_relays.count + 1}) %}
|
|
|
|
{% endif %}
|
|
|
|
{% endfor %}
|
|
|
|
{# If one or more of the VLANs require a DHCP relay agent... #}
|
|
|
|
{% if num_relays.count > 0 %}
|
|
|
|
[group:isc-dhcp-relay]
|
|
|
|
programs=
|
2019-06-03 16:26:45 -05:00
|
|
|
{%- set add_preceding_comma = { 'flag': False } %}
|
|
|
|
{% for vlan_name in VLAN %}
|
|
|
|
{% if VLAN[vlan_name]['dhcp_servers'] %}
|
|
|
|
{% if add_preceding_comma.flag %},{% endif %}
|
|
|
|
{% set _dummy = add_preceding_comma.update({'flag': True}) %}
|
2017-10-05 01:35:43 -05:00
|
|
|
isc-dhcp-relay-{{ vlan_name }}
|
|
|
|
{%- endif %}
|
|
|
|
{% endfor %}
|
|
|
|
|
|
|
|
|
|
|
|
{# Create a program entry for each DHCP relay agent instance #}
|
2019-09-06 14:01:08 -05:00
|
|
|
{% set relay_for_ipv4 = { 'flag': False } %}
|
2019-06-03 16:26:45 -05:00
|
|
|
{% for vlan_name in VLAN %}
|
|
|
|
{% if VLAN[vlan_name]['dhcp_servers'] %}
|
2019-09-06 14:01:08 -05:00
|
|
|
{% for dhcp_server in VLAN[vlan_name]['dhcp_servers'] %}
|
|
|
|
{% if dhcp_server | ipv4 %}
|
|
|
|
{% set _dummy = relay_for_ipv4.update({'flag': True}) %}
|
|
|
|
{% endif %}
|
|
|
|
{% endfor %}
|
|
|
|
{% if relay_for_ipv4.flag %}
|
|
|
|
{% set _dummy = relay_for_ipv4.update({'flag': False}) %}
|
2017-10-05 01:35:43 -05:00
|
|
|
[program:isc-dhcp-relay-{{ vlan_name }}]
|
2019-06-03 16:26:45 -05:00
|
|
|
{# We treat this VLAN as a downstream interface (-id), as we only want to listen for requests #}
|
|
|
|
command=/usr/sbin/dhcrelay -d -m discard -a %%h:%%p %%P --name-alias-map-file /tmp/port-name-alias-map.txt -id {{ vlan_name }}
|
|
|
|
{#- We treat all other interfaces as upstream interfaces (-iu), as we only want to listen for replies #}
|
2019-06-10 16:02:55 -05:00
|
|
|
{% for (name, prefix) in VLAN_INTERFACE|pfx_filter %}
|
2019-06-03 16:26:45 -05:00
|
|
|
{% if prefix | ipv4 and name != vlan_name %} -iu {{ name }}{% endif -%}
|
|
|
|
{% endfor %}
|
2019-06-10 16:02:55 -05:00
|
|
|
{% for (name, prefix) in INTERFACE|pfx_filter %}
|
2019-06-03 16:26:45 -05:00
|
|
|
{% if prefix | ipv4 %} -iu {{ name }}{% endif -%}
|
|
|
|
{% endfor %}
|
2019-06-10 16:02:55 -05:00
|
|
|
{% for (name, prefix) in PORTCHANNEL_INTERFACE|pfx_filter %}
|
2019-06-03 16:26:45 -05:00
|
|
|
{% if prefix | ipv4 %} -iu {{ name }}{% endif -%}
|
|
|
|
{% endfor %}
|
2019-09-06 14:01:08 -05:00
|
|
|
{% for dhcp_server in VLAN[vlan_name]['dhcp_servers'] %}
|
|
|
|
{%- if dhcp_server | ipv4 %} {{ dhcp_server }}{% endif -%}
|
|
|
|
{% endfor %}
|
2017-10-05 01:35:43 -05:00
|
|
|
|
|
|
|
priority=3
|
|
|
|
autostart=false
|
|
|
|
autorestart=false
|
|
|
|
stdout_logfile=syslog
|
|
|
|
stderr_logfile=syslog
|
|
|
|
|
2019-09-06 14:01:08 -05:00
|
|
|
{% endif %}
|
2017-10-05 01:35:43 -05:00
|
|
|
{% endif %}
|
|
|
|
{% endfor %}
|
2020-01-07 19:48:03 -06:00
|
|
|
|
|
|
|
[group:dhcpmon]
|
|
|
|
programs=
|
|
|
|
{%- set add_preceding_comma = { 'flag': False } %}
|
|
|
|
{% for vlan_name in VLAN %}
|
|
|
|
{% if VLAN[vlan_name]['dhcp_servers'] %}
|
|
|
|
{% if add_preceding_comma.flag %},{% endif %}
|
|
|
|
{% set _dummy = add_preceding_comma.update({'flag': True}) %}
|
|
|
|
dhcpmon-{{ vlan_name }}
|
|
|
|
{%- endif %}
|
|
|
|
{% endfor %}
|
|
|
|
|
|
|
|
|
|
|
|
{# Create a program entry for each DHCP MONitor instance #}
|
|
|
|
{% set relay_for_ipv4 = { 'flag': False } %}
|
|
|
|
{% for vlan_name in VLAN %}
|
|
|
|
{% if VLAN[vlan_name]['dhcp_servers'] %}
|
|
|
|
{% for dhcp_server in VLAN[vlan_name]['dhcp_servers'] %}
|
|
|
|
{% if dhcp_server | ipv4 %}
|
|
|
|
{% set _dummy = relay_for_ipv4.update({'flag': True}) %}
|
|
|
|
{% endif %}
|
|
|
|
{% endfor %}
|
|
|
|
{% if relay_for_ipv4.flag %}
|
|
|
|
{% set _dummy = relay_for_ipv4.update({'flag': False}) %}
|
|
|
|
[program:dhcpmon-{{ vlan_name }}]
|
|
|
|
{# We treat this VLAN as a downstream interface (-id), as we only want to listen for requests #}
|
|
|
|
command=/usr/sbin/dhcpmon -id {{ vlan_name }}
|
|
|
|
{#- We treat all other interfaces as upstream interfaces (-iu), as we only want to listen for replies #}
|
|
|
|
{% for (name, prefix) in VLAN_INTERFACE|pfx_filter %}
|
|
|
|
{% if prefix | ipv4 and name != vlan_name %} -iu {{ name }}{% endif -%}
|
|
|
|
{% endfor %}
|
|
|
|
{% for (name, prefix) in INTERFACE|pfx_filter %}
|
|
|
|
{% if prefix | ipv4 %} -iu {{ name }}{% endif -%}
|
|
|
|
{% endfor %}
|
|
|
|
{% for (name, prefix) in PORTCHANNEL_INTERFACE|pfx_filter %}
|
|
|
|
{% if prefix | ipv4 %} -iu {{ name }}{% endif -%}
|
|
|
|
{% endfor %}
|
|
|
|
|
|
|
|
priority=4
|
|
|
|
autostart=false
|
|
|
|
autorestart=false
|
|
|
|
stdout_logfile=syslog
|
|
|
|
stderr_logfile=syslog
|
|
|
|
|
|
|
|
{% endif %}
|
|
|
|
{% endif %}
|
|
|
|
{% endfor %}
|
|
|
|
|
2017-10-05 01:35:43 -05:00
|
|
|
{% endif %}
|
|
|
|
{% endif %}
|