Skip to content

Commit 9ca2674

Browse files
[201811] Add DHCPv6 minigraph parsing support (#8970)
* Add DHCPv6 minigraph parsing support Co-authored-by: shlomibitton <[email protected]>
1 parent 1823b85 commit 9ca2674

File tree

2 files changed

+12
-2
lines changed

2 files changed

+12
-2
lines changed

src/sonic-config-engine/minigraph.py

+11-2
Original file line numberDiff line numberDiff line change
@@ -224,6 +224,12 @@ def parse_dpg(dpg, hname):
224224
vdhcpserver_list = vintfdhcpservers.split(';')
225225
vlan_attributes['dhcp_servers'] = vdhcpserver_list
226226

227+
vintf_node = vintf.find(str(QName(ns, "Dhcpv6Relays")))
228+
if vintf_node is not None and vintf_node.text is not None:
229+
vintfdhcpservers = vintf_node.text
230+
vdhcpserver_list = vintfdhcpservers.split(';')
231+
vlan_attributes['dhcpv6_servers'] = vdhcpserver_list
232+
227233
sonic_vlan_name = "Vlan%s" % vlanid
228234
if sonic_vlan_name != vintfname:
229235
vlan_attributes['alias'] = vintfname
@@ -393,6 +399,7 @@ def parse_cpg(cpg, hname):
393399
def parse_meta(meta, hname):
394400
syslog_servers = []
395401
dhcp_servers = []
402+
dhcpv6_servers = []
396403
ntp_servers = []
397404
tacacs_servers = []
398405
mgmt_routes = []
@@ -420,7 +427,7 @@ def parse_meta(meta, hname):
420427
erspan_dst = value_group
421428
elif name == "DeploymentId":
422429
deployment_id = value
423-
return syslog_servers, dhcp_servers, ntp_servers, tacacs_servers, mgmt_routes, erspan_dst, deployment_id
430+
return syslog_servers, dhcp_servers, dhcpv6_servers, ntp_servers, tacacs_servers, mgmt_routes, erspan_dst, deployment_id
424431

425432

426433
def parse_linkmeta(meta, hname):
@@ -538,6 +545,7 @@ def parse_xml(filename, platform=None, port_config_file=None):
538545
console_ports = {}
539546
syslog_servers = []
540547
dhcp_servers = []
548+
dhcpv6_servers = []
541549
ntp_servers = []
542550
tacacs_servers = []
543551
mgmt_routes = []
@@ -569,7 +577,7 @@ def parse_xml(filename, platform=None, port_config_file=None):
569577
elif child.tag == str(QName(ns, "UngDec")):
570578
(u_neighbors, u_devices, _, _, _, _, _, _) = parse_png(child, hostname)
571579
elif child.tag == str(QName(ns, "MetadataDeclaration")):
572-
(syslog_servers, dhcp_servers, ntp_servers, tacacs_servers, mgmt_routes, erspan_dst, deployment_id) = parse_meta(child, hostname)
580+
(syslog_servers, dhcp_servers, dhcpv6_servers, ntp_servers, tacacs_servers, mgmt_routes, erspan_dst, deployment_id) = parse_meta(child, hostname)
573581
elif child.tag == str(QName(ns, "LinkMetadataDeclaration")):
574582
linkmetas = parse_linkmeta(child, hostname)
575583
elif child.tag == str(QName(ns, "DeviceInfos")):
@@ -735,6 +743,7 @@ def parse_xml(filename, platform=None, port_config_file=None):
735743
results['DEVICE_NEIGHBOR_METADATA'] = { key:devices[key] for key in devices if key.lower() != hostname.lower() }
736744
results['SYSLOG_SERVER'] = dict((item, {}) for item in syslog_servers)
737745
results['DHCP_SERVER'] = dict((item, {}) for item in dhcp_servers)
746+
results['DHCPv6_SERVER'] = dict((item, {}) for item in dhcpv6_servers)
738747
results['NTP_SERVER'] = dict((item, {}) for item in ntp_servers)
739748
results['TACPLUS_SERVER'] = dict((item, {'priority': '1', 'tcp_port': '49'}) for item in tacacs_servers)
740749

src/sonic-config-engine/tests/t0-sample-graph.xml

+1
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,7 @@
240240
<FhrpProtoType i:nil="true"/>
241241
<Type i:nil="true"/>
242242
<DhcpRelays>192.0.0.1;192.0.0.2</DhcpRelays>
243+
<Dhcpv6Relays>fc02:2000::1;fc02:2000::2</Dhcpv6Relays>
243244
<VlanID>1000</VlanID>
244245
<Tag>1000</Tag>
245246
<Subnets>192.168.0.0/27</Subnets>

0 commit comments

Comments
 (0)