From 1923920b3353f1dd091df3159e68afb05e7f2d3c Mon Sep 17 00:00:00 2001 From: Lawrence Lee Date: Thu, 21 Jan 2021 15:05:35 -0800 Subject: [PATCH] [minigraph.py]: Force /128 prefix for server IPv6 loopbacks (#6524) Meet the requirement for the MUX_CABLE table that IPv6 loopbacks have a /128 prefix Note that this change only affects the MUX_CABLE table, all other tables continue to use the loopback address provided in minigraph. Signed-off-by: Lawrence Lee --- src/sonic-config-engine/minigraph.py | 6 ++++-- src/sonic-config-engine/tests/simple-sample-graph-case.xml | 2 +- src/sonic-config-engine/tests/test_minigraph_case.py | 6 +++--- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/sonic-config-engine/minigraph.py b/src/sonic-config-engine/minigraph.py index f30e668251..ba81e8faf7 100644 --- a/src/sonic-config-engine/minigraph.py +++ b/src/sonic-config-engine/minigraph.py @@ -1512,8 +1512,10 @@ def get_mux_cable_entries(mux_cable_ports, neighbors, devices): server_ipv4_lo_prefix = ipaddress.ip_network(UNICODE_TYPE(server_ipv4_lo_addr)) entry['server_ipv4'] = str(server_ipv4_lo_prefix) - if 'lo_addr_v6' in devices[neighbor]: - entry['server_ipv6'] = devices[neighbor]['lo_addr_v6'] + if 'lo_addr_v6' in devices[neighbor] and devices[neighbor]['lo_addr_v6'] is not None: + server_ipv6_lo_addr = devices[neighbor]['lo_addr_v6'].split('/')[0] + server_ipv6_lo_prefix = ipaddress.ip_network(UNICODE_TYPE(server_ipv6_lo_addr)) + entry['server_ipv6'] = str(server_ipv6_lo_prefix) mux_cable_table[intf] = entry else: print("Warning: no server IPv4 loopback found for {}, skipping mux cable table entry".format(neighbor)) diff --git a/src/sonic-config-engine/tests/simple-sample-graph-case.xml b/src/sonic-config-engine/tests/simple-sample-graph-case.xml index d9a21158c4..ce0174adc8 100644 --- a/src/sonic-config-engine/tests/simple-sample-graph-case.xml +++ b/src/sonic-config-engine/tests/simple-sample-graph-case.xml @@ -303,7 +303,7 @@ 10.10.10.1/32 - fe80::0001/128 + fe80::0001/80 10.0.0.1/32 diff --git a/src/sonic-config-engine/tests/test_minigraph_case.py b/src/sonic-config-engine/tests/test_minigraph_case.py index cf8a7557ae..6fa7c5352d 100644 --- a/src/sonic-config-engine/tests/test_minigraph_case.py +++ b/src/sonic-config-engine/tests/test_minigraph_case.py @@ -165,7 +165,7 @@ class TestCfgGenCaseInsensitive(TestCase): 'server1': { 'hwsku': 'server-sku', 'lo_addr': '10.10.10.1/32', - 'lo_addr_v6': 'fe80::0001/128', + 'lo_addr_v6': 'fe80::0001/80', 'mgmt_addr': '10.0.0.1/32', 'type': 'Server' }, @@ -275,12 +275,12 @@ class TestCfgGenCaseInsensitive(TestCase): 'Ethernet4': { 'state': 'auto', 'server_ipv4': '10.10.10.1/32', - 'server_ipv6': 'fe80::0001/128' + 'server_ipv6': 'fe80::1/128' }, 'Ethernet8': { 'state': 'auto', 'server_ipv4': '10.10.10.2/32', - 'server_ipv6': 'fe80::0002/128' + 'server_ipv6': 'fe80::2/128' } }