Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 7 additions & 6 deletions src/sonic-config-engine/minigraph.py
Original file line number Diff line number Diff line change
Expand Up @@ -2830,13 +2830,14 @@ def get_mux_cable_entries(ports, mux_cable_ports, active_active_ports, neighbors
neighbor = neighbors[port]['name']
entry['state'] = 'auto'

if devices[neighbor]['lo_addr'] is not None:
if devices[neighbor]['lo_addr'] is not None or devices[neighbor].get('lo_addr_v6') is not None:
# Always force a /32 prefix for server IPv4 loopbacks
server_ipv4_lo_addr = devices[neighbor]['lo_addr'].split("/")[0]
server_ipv4_lo_prefix = ipaddress.ip_network(UNICODE_TYPE(server_ipv4_lo_addr))
entry['server_ipv4'] = str(server_ipv4_lo_prefix)
if devices[neighbor]['lo_addr'] is not None:
server_ipv4_lo_addr = devices[neighbor]['lo_addr'].split("/")[0]
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] and devices[neighbor]['lo_addr_v6'] is not None:
if devices[neighbor].get('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)
Expand All @@ -2847,7 +2848,7 @@ def get_mux_cable_entries(ports, mux_cable_ports, active_active_ports, neighbors

mux_cable_table[port] = entry
else:
print("Warning: no server IPv4 loopback found for {}, skipping mux cable table entry".format(neighbor), file=sys.stderr)
print("Warning: no server loopback found for {}, skipping mux cable table entry".format(neighbor), file=sys.stderr)

return mux_cable_table

Expand Down
35 changes: 35 additions & 0 deletions src/sonic-config-engine/tests/test_minigraph_case.py
Original file line number Diff line number Diff line change
Expand Up @@ -445,6 +445,41 @@ def test_minigraph_mux_cable_table(self):
expected_table
)

def test_get_mux_cable_entries_ipv6_only_active_active(self):
mux_cable_table = minigraph.get_mux_cable_entries(
ports=['Ethernet8'],
mux_cable_ports=[],
active_active_ports={
'Ethernet8': {
'soc_ipv6': 'fc02:1000::3/128'
}
},
neighbors={
'Ethernet8': {
'name': 'server01'
}
},
devices={
'server01': {
'lo_addr': None,
'lo_addr_v6': 'fc02:1000::2/128'
}
},
redundancy_type='mixed'
)

self.assertEqual(
mux_cable_table,
{
'Ethernet8': {
'state': 'auto',
'server_ipv6': 'fc02:1000::2/128',
'soc_ipv6': 'fc02:1000::3/128',
'cable_type': 'active-active'
}
}
)

def test_dhcp_table(self):
argument = ['-m', self.sample_graph, '-p', self.port_config, '-v', "DHCP_RELAY"]
expected = {
Expand Down
Loading