diff --git a/config/interface.py b/config/interface.py index 86c3b1e..825d94d 100644 --- a/config/interface.py +++ b/config/interface.py @@ -480,8 +480,14 @@ def validate_interfaces(yaml): sub_mtu = get_mtu(yaml, sub_ifname) if sub_mtu > iface_mtu: - msgs.append("sub-interface %s has MTU %d higher than parent MTU %d" % (sub_ifname, sub_iface['mtu'], iface_mtu)) + msgs.append("sub-interface %s has MTU %d higher than parent %s MTU %d" % (sub_ifname, sub_iface['mtu'], ifname, iface_mtu)) result = False + if is_qinx(yaml, sub_ifname): + mid_ifname, mid_iface = get_qinx_parent_by_name(yaml, sub_ifname) + mid_mtu = get_mtu(yaml, mid_ifname) + if sub_mtu > mid_mtu: + msgs.append("sub-interface %s has MTU %d higher than parent %s MTU %d" % (sub_ifname, sub_iface['mtu'], mid_ifname, mid_mtu)) + result = False sub_lcp = get_lcp(yaml, sub_ifname) if is_l2(yaml, sub_ifname) and sub_lcp: diff --git a/unittest/yaml/error-interface-mtu2.yaml b/unittest/yaml/error-interface-mtu2.yaml index 3c14020..e3825bf 100644 --- a/unittest/yaml/error-interface-mtu2.yaml +++ b/unittest/yaml/error-interface-mtu2.yaml @@ -2,8 +2,10 @@ test: description: "MTU of sub-interfaces cannot be higher than their parent" errors: expected: - - "sub-interface .* has MTU 9001 higher than parent MTU 9000" - count: 1 + - "sub-interface .* has MTU 9001 higher than parent .* MTU 9000" + - "sub-interface .* has MTU 9002 higher than parent .* MTU 9001" + - "sub-interface .* has MTU 9002 higher than parent .* MTU 9000" + count: 3 --- interfaces: GigabitEthernet1/0/0: @@ -11,3 +13,9 @@ interfaces: sub-interfaces: 100: mtu: 9001 + 200: + encapsulation: + exact-match: True + inner-dot1q: 1234 + dot1q: 100 + mtu: 9002 diff --git a/vpp/reconciler.py b/vpp/reconciler.py index ddd0012..61e8f23 100644 --- a/vpp/reconciler.py +++ b/vpp/reconciler.py @@ -824,9 +824,9 @@ class Reconciler(): config_mtu = config_iface['mtu'] if shrink and config_mtu < vpp_iface.mtu[0]: - self.logger.info("shrink 1> set interface mtu packet %d %s" % (config_mtu, vpp_iface.interface_name)) + self.logger.info("1> set interface mtu packet %d %s" % (config_mtu, vpp_iface.interface_name)) elif not shrink and config_mtu > vpp_iface.mtu[0]: - self.logger.info("grow 2> set interface mtu packet %d %s" % (config_mtu, vpp_iface.interface_name)) + self.logger.info("2> set interface mtu packet %d %s" % (config_mtu, vpp_iface.interface_name)) return True