diff --git a/unittest/yaml/error-bridgedomain2.yaml b/unittest/yaml/error-bridgedomain2.yaml index 7e70536..62ed274 100644 --- a/unittest/yaml/error-bridgedomain2.yaml +++ b/unittest/yaml/error-bridgedomain2.yaml @@ -4,7 +4,8 @@ test: expected: - "bridgedomain .* member .* has an LCP" - "interface .* is in L2 mode but has LCP name .*" - count: 5 + - "sub-interface .* is in L2 mode but has LCP name .*" + count: 6 --- interfaces: GigabitEthernet1/0/0: diff --git a/unittest/yaml/error-bridgedomain3.yaml b/unittest/yaml/error-bridgedomain3.yaml index 5dc9e7e..1da53b4 100644 --- a/unittest/yaml/error-bridgedomain3.yaml +++ b/unittest/yaml/error-bridgedomain3.yaml @@ -6,7 +6,8 @@ test: - "sub-interface .* has an address but .* does not have LCP" - "bridgedomain .* member .* has an address" - "interface .* is in L2 mode but has an address" - count: 8 + - "sub-interface .* is in L2 mode but has an address" + count: 9 --- interfaces: GigabitEthernet1/0/0: diff --git a/unittest/yaml/error-l2xc6.yaml b/unittest/yaml/error-l2xc6.yaml index c1b057c..0399986 100644 --- a/unittest/yaml/error-l2xc6.yaml +++ b/unittest/yaml/error-l2xc6.yaml @@ -4,7 +4,9 @@ test: expected: - "sub-interface .* l2xc target .* cannot have an address" - "sub-interface .* l2xc target .* cannot have an LCP" - count: 2 + - "sub-interface .* is in L2 mode but has an address" + - "sub-interface .* is in L2 mode but has LCP name .*" + count: 4 --- interfaces: GigabitEthernet1/0/0: diff --git a/validator/interface.py b/validator/interface.py index 08aefdd..749e3df 100644 --- a/validator/interface.py +++ b/validator/interface.py @@ -435,6 +435,9 @@ def validate_interfaces(yaml): result = False sub_lcp = get_lcp(yaml, sub_ifname) + if is_l2(yaml, sub_ifname) and sub_lcp: + msgs.append("sub-interface %s is in L2 mode but has LCP name %s" % (sub_ifname, sub_lcp)) + result = False if sub_lcp and not lcp.is_unique(yaml, sub_lcp): msgs.append("sub-interface %s does not have a unique LCP name %s" % (sub_ifname, sub_lcp)) result = False @@ -459,6 +462,9 @@ def validate_interfaces(yaml): if not iface_lcp: msgs.append("sub-interface %s has an address but %s does not have LCP" % (sub_ifname, ifname)) result = False + if is_l2(yaml, sub_ifname): + msgs.append("sub-interface %s is in L2 mode but has an address" % sub_ifname) + result = False for a in sub_iface['addresses']: if not address.is_allowed(yaml, sub_ifname, sub_iface['addresses'], a): msgs.append("sub-interface %s IP address %s conflicts with another" % (sub_ifname, a))