Add address.get_canonical() and is_canonical()
These functions will take either an IPv4/IPv6 address, or an IPv4/IPv6 prefix, and cast them to their canonical form. Notably for IPv6 addresses, this means lower case and with the 0-tuples correctly formatted: 2001:DB8::1 becomes 2001:db8::1 2001:db8:0:0::1 becomes 2001:db8::1 This avoids spurious diffs in vppcfg when comparing to the output of the VPP dataplane.
This commit is contained in:
@ -83,6 +83,12 @@ def validate_loopbacks(yaml):
|
|||||||
f"loopback {ifname} IP address {addr} conflicts with another"
|
f"loopback {ifname} IP address {addr} conflicts with another"
|
||||||
)
|
)
|
||||||
result = False
|
result = False
|
||||||
|
if not address.is_canonical(addr):
|
||||||
|
canonical = address.get_canonical(addr)
|
||||||
|
msgs.append(
|
||||||
|
f"loopback {ifname} IP address {addr} is not canonical, use {canonical}"
|
||||||
|
)
|
||||||
|
result = False
|
||||||
if "mac" in iface and mac.is_multicast(iface["mac"]):
|
if "mac" in iface and mac.is_multicast(iface["mac"]):
|
||||||
msgs.append(
|
msgs.append(
|
||||||
f"loopback {ifname} MAC address {iface['mac']} cannot be multicast"
|
f"loopback {ifname} MAC address {iface['mac']} cannot be multicast"
|
||||||
|
Reference in New Issue
Block a user