@@ -41,122 +41,27 @@ dependent_startup_wait_for=rsyslogd:running
41
41
42
42
{# If our configuration has VLANs... #}
43
43
{% if VLAN_INTERFACE %}
44
- {# Count how many VLANs require a DHCP relay agent... # }
45
- {% set num_relays = { 'count' : 0 } %}
44
+ {% set ipv 4 _num_relays = { 'count' : 0 } % }
45
+ {% set ipv 6 _num_relays = { 'count' : 0 } %}
46
46
{% for vlan_name in VLAN_INTERFACE %}
47
47
{% if VLAN and vlan_name in VLAN and 'dhcp_servers' in VLAN [vlan_name ] and VLAN [vlan_name ]['dhcp_servers' ]|length > 0 %}
48
- {% set _dummy = num_relays .update ({'count' : num_relays .count + 1}) %}
49
- {% endif %}
50
- {% endfor %}
51
- {# If one or more of the VLANs require a DHCP relay agent... #}
52
- {% if num_relays .count > 0 %}
53
- [group:isc-dhcp-relay]
54
- programs=
55
- {% - set add_preceding_comma = { 'flag' : False } %}
56
- {% for vlan_name in VLAN_INTERFACE %}
57
- {% if VLAN and vlan_name in VLAN and 'dhcp_servers' in VLAN [vlan_name ] and VLAN [vlan_name ]['dhcp_servers' ]|length > 0 %}
58
- {% if add_preceding_comma .flag %} ,{% endif %}
59
- {% set _dummy = add_preceding_comma .update ({'flag' : True }) %}
60
- isc-dhcp-relay-{{ vlan_name }}
61
- {% - endif %}
62
- {% endfor %}
63
-
64
-
65
- {# Create a program entry for each DHCP relay agent instance #}
66
- {% set relay_for_ipv 4 = { 'flag' : False } %}
67
- {% for vlan_name in VLAN_INTERFACE %}
68
- {% if VLAN and vlan_name in VLAN and 'dhcp_servers' in VLAN [vlan_name ] and VLAN [vlan_name ]['dhcp_servers' ]|length > 0 %}
69
- {% for dhcp_server in VLAN [vlan_name ]['dhcp_servers' ] %}
70
- {% if dhcp_server | ipv 4 %}
71
- {% set _dummy = relay_for_ipv 4.update ({'flag' : True }) %}
72
- {% endif %}
73
- {% endfor %}
74
- {% if relay_for_ipv 4.flag %}
75
- {% set _dummy = relay_for_ipv 4.update ({'flag' : False }) %}
76
- [program:isc-dhcp-relay-{{ vlan_name }}]
77
- {# We treat this VLAN as a downstream interface (-id), as we only want to listen for requests #}
78
- command=/usr/sbin/dhcrelay -d -m discard -a %%h:%%p %%P --name-alias-map-file /tmp/port-name-alias-map.txt -id {{ vlan_name }}
79
- {#- si option to use intf addr in relay #}
80
- {% if DEVICE_METADATA ['localhost' ]['deployment_id' ] == '8' %} -si{% endif -%}
81
- {#- We treat all other interfaces as upstream interfaces (-iu), as we only want to listen for replies #}
82
- {% for (name , prefix ) in VLAN_INTERFACE |pfx_filter %}
83
- {% if prefix | ipv 4 and name != vlan_name %} -iu {{ name }}{% endif -%}
84
- {% endfor %}
85
- {% for (name , prefix ) in INTERFACE |pfx_filter %}
86
- {% if prefix | ipv 4 %} -iu {{ name }}{% endif -%}
87
- {% endfor %}
88
- {% for (name , prefix ) in PORTCHANNEL_INTERFACE |pfx_filter %}
89
- {% if prefix | ipv 4 %} -iu {{ name }}{% endif -%}
90
- {% endfor %}
91
- {% for dhcp_server in VLAN [vlan_name ]['dhcp_servers' ] %}
92
- {% - if dhcp_server | ipv 4 %} {{ dhcp_server }}{% endif -%}
93
- {% endfor %}
94
-
95
- priority=3
96
- autostart=false
97
- autorestart=false
98
- stdout_logfile=syslog
99
- stderr_logfile=syslog
100
- dependent_startup=true
101
- dependent_startup_wait_for=start:exited
102
-
48
+ {% set _dummy = ipv 4_num_relays .update ({'count' : ipv 4_num_relays .count + 1}) %}
103
49
{% endif %}
50
+ {% if DHCP_RELAY and vlan_name in DHCP_RELAY and 'dhcpv6_servers' in DHCP_RELAY [vlan_name ] %}
51
+ {% set _dummy = ipv 6_num_relays .update ({'count' : ipv 6_num_relays .count + 1}) %}
104
52
{% endif %}
105
53
{% endfor %}
54
+ {# If one or more of the VLANs require a DHCP relay agent... #}
55
+ {% if ipv 4_num_relays .count > 0 or ipv 6_num_relays .count > 0 %}
56
+ {% include 'dhcp-relay.programs.j2' %}
106
57
107
- [group:dhcpmon]
108
- programs=
109
- {% - set add_preceding_comma = { 'flag' : False } %}
110
- {% for vlan_name in VLAN_INTERFACE %}
111
- {% if VLAN and vlan_name in VLAN and 'dhcp_servers' in VLAN [vlan_name ] and VLAN [vlan_name ]['dhcp_servers' ]|length > 0 %}
112
- {% if add_preceding_comma .flag %} ,{% endif %}
113
- {% set _dummy = add_preceding_comma .update ({'flag' : True }) %}
114
- dhcpmon-{{ vlan_name }}
115
- {% - endif %}
116
- {% endfor %}
117
-
118
-
119
- {# Create a program entry for each DHCP MONitor instance #}
120
58
{% set relay_for_ipv 4 = { 'flag' : False } %}
59
+ {% set relay_for_ipv 6 = { 'flag' : False } %}
121
60
{% for vlan_name in VLAN_INTERFACE %}
122
- {% if VLAN and vlan_name in VLAN and 'dhcp_servers' in VLAN [vlan_name ] and VLAN [vlan_name ]['dhcp_servers' ]|length > 0 %}
123
- {% for dhcp_server in VLAN [vlan_name ]['dhcp_servers' ] %}
124
- {% if dhcp_server | ipv 4 %}
125
- {% set _dummy = relay_for_ipv 4.update ({'flag' : True }) %}
126
- {% endif %}
127
- {% endfor %}
128
- {% if relay_for_ipv 4.flag %}
129
- {% set _dummy = relay_for_ipv 4.update ({'flag' : False }) %}
130
- [program:dhcpmon-{{ vlan_name }}]
131
- {# We treat this VLAN as a downstream interface (-id), as we only want to listen for requests #}
132
- command=/usr/sbin/dhcpmon -id {{ vlan_name }}
133
- {#- We treat all other interfaces as upstream interfaces (-iu), as we only want to listen for replies #}
134
- {% for (name , prefix ) in VLAN_INTERFACE |pfx_filter %}
135
- {% if prefix | ipv 4 and name != vlan_name %} -iu {{ name }}{% endif -%}
136
- {% endfor %}
137
- {% for (name , prefix ) in INTERFACE |pfx_filter %}
138
- {% if prefix | ipv 4 %} -iu {{ name }}{% endif -%}
139
- {% endfor %}
140
- {% for (name , prefix ) in PORTCHANNEL_INTERFACE |pfx_filter %}
141
- {% if prefix | ipv 4 %} -iu {{ name }}{% endif -%}
142
- {% endfor %}
143
- {% if MGMT_INTERFACE %}
144
- {% for (name , prefix ) in MGMT_INTERFACE |pfx_filter %}
145
- {% if prefix | ipv 4 %} -im {{ name }}{% endif -%}
146
- {% endfor %}
147
- {% endif %}
148
-
149
- priority=4
150
- autostart=false
151
- autorestart=false
152
- stdout_logfile=syslog
153
- stderr_logfile=syslog
154
- dependent_startup=true
155
- dependent_startup_wait_for=isc-dhcp-relay-{{ vlan_name }}:running
156
-
157
- {% endif %}
158
- {% endif %}
61
+ {% include 'dhcpv4-relay.agents.j2' %}
159
62
{% endfor %}
160
63
64
+ {% include 'dhcpv6-relay.agents.j2' %}
65
+ {% include 'dhcp-relay.monitors.j2' %}
161
66
{% endif %}
162
67
{% endif %}
0 commit comments