diff --git a/config/bridgedomain.py b/config/bridgedomain.py index deada3b..293f6c7 100644 --- a/config/bridgedomain.py +++ b/config/bridgedomain.py @@ -137,11 +137,20 @@ def validate_bridgedomains(yaml): if 'bvi' in iface: bviname = iface['bvi'] - if (None,None) == loopback.get_by_name(yaml, bviname): - msgs.append("bridgedomain %s BVI %s does not exist" % (ifname, bviname)) + bvi_ifname, bvi_iface = loopback.get_by_name(yaml,iface['bvi']) + if not bvi_unique(yaml, bvi_ifname): + msgs.append("bridgedomain %s BVI %s is not unique" % (ifname, bvi_ifname)) result = False - if not bvi_unique(yaml, bviname): - msgs.append("bridgedomain %s BVI %s is not unique" % (ifname, bviname)) + if not bvi_iface: + msgs.append("bridgedomain %s BVI %s does not exist" % (ifname, bvi_ifname)) + result = False + continue + + bvi_mtu = 1500 + if 'mtu' in bvi_iface: + bvi_mtu = bvi_iface['mtu'] + if bvi_mtu != bd_mtu: + msgs.append("bridgedomain %s BVI %s has MTU %d, while bridge has %d" % (ifname, bvi_ifname, bvi_mtu, bd_mtu)) result = False if 'interfaces' in iface: diff --git a/example.yaml b/example.yaml index b194243..cfa6137 100644 --- a/example.yaml +++ b/example.yaml @@ -73,6 +73,7 @@ loopbacks: addresses: [ 10.0.0.1/32, 2001:db8::1/128 ] loop1: lcp: "bvi1" + mtu: 2000 addresses: [ 10.0.1.1/24, 2001:db8:1::1/64 ] bridgedomains: diff --git a/unittest/yaml/correct-bridgedomain.yaml b/unittest/yaml/correct-bridgedomain.yaml index 335ada5..9d4c8fe 100644 --- a/unittest/yaml/correct-bridgedomain.yaml +++ b/unittest/yaml/correct-bridgedomain.yaml @@ -43,6 +43,7 @@ interfaces: loopbacks: loop0: lcp: "bvi0" + mtu: 3000 addresses: [ 192.0.2.1/29, 2001:db8:1::1/64 ] bridgedomains: diff --git a/unittest/yaml/error-bridgedomain4.yaml b/unittest/yaml/error-bridgedomain4.yaml index 30b37ed..dddd644 100644 --- a/unittest/yaml/error-bridgedomain4.yaml +++ b/unittest/yaml/error-bridgedomain4.yaml @@ -3,7 +3,8 @@ test: errors: expected: - "bridgedomain .* member .* has MTU (2000|3000|500), while bridge has 1500" - count: 3 + - "bridgedomain .* BVI .* has MTU 9000, while bridge has 1500" + count: 4 --- interfaces: GigabitEthernet1/0/0: @@ -14,8 +15,13 @@ interfaces: 101: mtu: 500 +loopbacks: + loop1: + mtu: 9000 + bridgedomains: bd10: description: "Bridge Domain 10" mtu: 1500 + bvi: loop1 interfaces: [ GigabitEthernet1/0/0, GigabitEthernet2/0/0, GigabitEthernet2/0/0.101 ]