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
|
||||
else:
|
||||
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']:
|
||||
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():
|
||||
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']
|
||||
if not vni_unique(yaml, 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