Skip to content

Commit 1a9d218

Browse files
authored
Add DHCPv6 minigraph parsing support (#8870)
1 parent d790cae commit 1a9d218

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
@@ -552,6 +552,12 @@ def parse_dpg(dpg, hname):
552552
vdhcpserver_list = vintfdhcpservers.split(';')
553553
vlan_attributes['dhcp_servers'] = vdhcpserver_list
554554

555+
vintf_node = vintf.find(str(QName(ns, "Dhcpv6Relays")))
556+
if vintf_node is not None and vintf_node.text is not None:
557+
vintfdhcpservers = vintf_node.text
558+
vdhcpserver_list = vintfdhcpservers.split(';')
559+
vlan_attributes['dhcpv6_servers'] = vdhcpserver_list
560+
555561
vlanmac = vintf.find(str(QName(ns, "MacAddress")))
556562
if vlanmac is not None and vlanmac.text is not None:
557563
vlan_attributes['mac'] = vlanmac.text
@@ -791,6 +797,7 @@ def parse_cpg(cpg, hname, local_devices=[]):
791797
def parse_meta(meta, hname):
792798
syslog_servers = []
793799
dhcp_servers = []
800+
dhcpv6_servers = []
794801
ntp_servers = []
795802
tacacs_servers = []
796803
mgmt_routes = []
@@ -835,7 +842,7 @@ def parse_meta(meta, hname):
835842
kube_data["enable"] = value
836843
elif name == "KubernetesServerIp":
837844
kube_data["ip"] = value
838-
return syslog_servers, dhcp_servers, ntp_servers, tacacs_servers, mgmt_routes, erspan_dst, deployment_id, region, cloudtype, resource_type, downstream_subrole, kube_data
845+
return syslog_servers, dhcp_servers, dhcpv6_servers, ntp_servers, tacacs_servers, mgmt_routes, erspan_dst, deployment_id, region, cloudtype, resource_type, downstream_subrole, kube_data
839846

840847

841848
def parse_linkmeta(meta, hname):
@@ -1117,6 +1124,7 @@ def parse_xml(filename, platform=None, port_config_file=None, asic_name=None, hw
11171124
mux_cable_ports = {}
11181125
syslog_servers = []
11191126
dhcp_servers = []
1127+
dhcpv6_servers = []
11201128
ntp_servers = []
11211129
tacacs_servers = []
11221130
mgmt_routes = []
@@ -1167,7 +1175,7 @@ def parse_xml(filename, platform=None, port_config_file=None, asic_name=None, hw
11671175
elif child.tag == str(QName(ns, "UngDec")):
11681176
(u_neighbors, u_devices, _, _, _, _, _, _) = parse_png(child, hostname, None)
11691177
elif child.tag == str(QName(ns, "MetadataDeclaration")):
1170-
(syslog_servers, dhcp_servers, ntp_servers, tacacs_servers, mgmt_routes, erspan_dst, deployment_id, region, cloudtype, resource_type, downstream_subrole, kube_data) = parse_meta(child, hostname)
1178+
(syslog_servers, dhcp_servers, dhcpv6_servers, ntp_servers, tacacs_servers, mgmt_routes, erspan_dst, deployment_id, region, cloudtype, resource_type, downstream_subrole, kube_data) = parse_meta(child, hostname)
11711179
elif child.tag == str(QName(ns, "LinkMetadataDeclaration")):
11721180
linkmetas = parse_linkmeta(child, hostname)
11731181
elif child.tag == str(QName(ns, "DeviceInfos")):
@@ -1491,6 +1499,7 @@ def parse_xml(filename, platform=None, port_config_file=None, asic_name=None, hw
14911499
results['DEVICE_NEIGHBOR_METADATA'] = { key:devices[key] for key in devices if key in {device['name'] for device in neighbors.values()} }
14921500
results['SYSLOG_SERVER'] = dict((item, {}) for item in syslog_servers)
14931501
results['DHCP_SERVER'] = dict((item, {}) for item in dhcp_servers)
1502+
results['DHCPv6_SERVER'] = dict((item, {}) for item in dhcpv6_servers)
14941503
results['NTP_SERVER'] = dict((item, {}) for item in ntp_servers)
14951504
results['TACPLUS_SERVER'] = dict((item, {'priority': '1', 'tcp_port': '49'}) for item in tacacs_servers)
14961505
results['ACL_TABLE'] = filter_acl_table_bindings(acls, neighbors, pcs, sub_role)

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

+1
Original file line numberDiff line numberDiff line change
@@ -256,6 +256,7 @@
256256
<FhrpProtoType i:nil="true"/>
257257
<Type i:nil="true"/>
258258
<DhcpRelays>192.0.0.1;192.0.0.2</DhcpRelays>
259+
<Dhcpv6Relays>fc02:2000::1;fc02:2000::2</Dhcpv6Relays>
259260
<VlanID>1000</VlanID>
260261
<Tag>1000</Tag>
261262
<Subnets>192.168.0.0/27</Subnets>

0 commit comments

Comments
 (0)