Do bounds checking on the BondEthernet and VXLAN Tunnel instances
This commit is contained in:
@ -70,6 +70,10 @@ def validate_bondethernets(yaml):
|
|||||||
result = False
|
result = False
|
||||||
else:
|
else:
|
||||||
bond_mtu = interface.get_mtu(yaml, bond_ifname)
|
bond_mtu = interface.get_mtu(yaml, bond_ifname)
|
||||||
|
instance = int(ifname[12:])
|
||||||
|
if instance > 4294967294:
|
||||||
|
msgs.append("bondethernet %s has instance %d which is too large" % (ifname, instance))
|
||||||
|
result = False
|
||||||
|
|
||||||
for member in iface['interfaces']:
|
for member in iface['interfaces']:
|
||||||
if (None, None) == interface.get_by_name(yaml, member):
|
if (None, None) == interface.get_by_name(yaml, member):
|
||||||
|
@ -66,6 +66,11 @@ def validate_vxlan_tunnels(yaml):
|
|||||||
|
|
||||||
for ifname, iface in yaml['vxlan_tunnels'].items():
|
for ifname, iface in yaml['vxlan_tunnels'].items():
|
||||||
logger.debug("vxlan_tunnel %s: %s" % (ifname, iface))
|
logger.debug("vxlan_tunnel %s: %s" % (ifname, iface))
|
||||||
|
instance = int(ifname[12:])
|
||||||
|
if instance > 2147483647:
|
||||||
|
msgs.append("vxlan_tunnel %s has instance %d which is too large" % (ifname, instance))
|
||||||
|
result = False
|
||||||
|
|
||||||
vni = iface['vni']
|
vni = iface['vni']
|
||||||
if not vni_unique(yaml, vni):
|
if not vni_unique(yaml, vni):
|
||||||
msgs.append("vxlan_tunnel %s VNI %d is not unique" % (ifname, vni))
|
msgs.append("vxlan_tunnel %s VNI %d is not unique" % (ifname, vni))
|
||||||
|
29
unittest/yaml/error-bondethernet7.yaml
Normal file
29
unittest/yaml/error-bondethernet7.yaml
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
test:
|
||||||
|
description: "BondEthernets must be between 0 and 4294967294"
|
||||||
|
errors:
|
||||||
|
expected:
|
||||||
|
- "bondethernet .* has instance .* which is too large"
|
||||||
|
count: 1
|
||||||
|
---
|
||||||
|
bondethernets:
|
||||||
|
BondEthernet4294967294:
|
||||||
|
interfaces: [ GigabitEthernet1/0/0, GigabitEthernet1/0/1 ]
|
||||||
|
BondEthernet4294967295:
|
||||||
|
interfaces: [ GigabitEthernet2/0/0, GigabitEthernet2/0/1 ]
|
||||||
|
|
||||||
|
interfaces:
|
||||||
|
GigabitEthernet1/0/0:
|
||||||
|
mtu: 1500
|
||||||
|
GigabitEthernet1/0/1:
|
||||||
|
mtu: 1500
|
||||||
|
|
||||||
|
GigabitEthernet2/0/0:
|
||||||
|
mtu: 1500
|
||||||
|
GigabitEthernet2/0/1:
|
||||||
|
mtu: 1500
|
||||||
|
|
||||||
|
BondEthernet4294967294:
|
||||||
|
description: "Cool"
|
||||||
|
|
||||||
|
BondEthernet4294967295:
|
||||||
|
description: "Not cool"
|
22
unittest/yaml/error-vxlan3.yaml
Normal file
22
unittest/yaml/error-vxlan3.yaml
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
test:
|
||||||
|
description: "A VXLAN tunnel instance must be within [0,2G)"
|
||||||
|
errors:
|
||||||
|
expected:
|
||||||
|
- "vxlan_tunnel .* has instance .* which is too large"
|
||||||
|
count: 1
|
||||||
|
---
|
||||||
|
vxlan_tunnels:
|
||||||
|
vxlan_tunnel2147483647:
|
||||||
|
local: 192.0.2.1
|
||||||
|
remote: 192.0.2.2
|
||||||
|
vni: 100
|
||||||
|
vxlan_tunnel2147483648:
|
||||||
|
local: 2001:db8::1
|
||||||
|
remote: 2001:db8::2
|
||||||
|
vni: 101
|
||||||
|
|
||||||
|
interfaces:
|
||||||
|
vxlan_tunnel2147483647:
|
||||||
|
description: "Cool."
|
||||||
|
vxlan_tunnel2147483648:
|
||||||
|
description: "Not cool."
|
Reference in New Issue
Block a user