Commit Graph

310 Commits

Author SHA1 Message Date
Pim van Pelt
8a1da516f3 Fix tests for upcoming LCP assertion that intermediate interfaces 'xe0.1000' must exist as an LCP in order for Qin* sub-interfaces 'xe0.1000.1234' to be allowed 2022-03-16 22:43:13 +00:00
Pim van Pelt
ccfb51189a A few small refactors, using get_by_name() more, casting boolean return values, etc 2022-03-16 22:20:51 +00:00
Pim van Pelt
252fa989b2 Assert VXLAN local/remote is the same address family. Assert VXLAN VNI is unique. 2022-03-15 22:57:09 +00:00
Pim van Pelt
1e5b1e49ad Assert that an interface cannot l2 cross connect to itself 2022-03-15 22:36:48 +00:00
Pim van Pelt
e7e3958ceb Assert source/target L2XC are the same MTU 2022-03-15 22:32:55 +00:00
Pim van Pelt
686cd45158 Add first approximation of vxlan_tunnels 2022-03-15 22:21:36 +00:00
Pim van Pelt
05b3c5c157 Small refactor, to allow for more interface types to be added as l2xc targets later 2022-03-15 21:56:29 +00:00
Pim van Pelt
af90b37a33 bugfix: Use sub-interface name 2022-03-15 21:52:44 +00:00
Pim van Pelt
2947bbfd25 Get rid of ' characters in errors 2022-03-15 21:13:42 +00:00
Pim van Pelt
2bbcff2ca0 Also assert that targets of an L2XC do not have an address or LCP 2022-03-15 21:07:47 +00:00
Pim van Pelt
5876465327 A few cosmetic changes in logging 2022-03-15 20:57:11 +00:00
Pim van Pelt
6d3de72c00 A completely empty config is a valid config 2022-03-15 20:52:09 +00:00
Pim van Pelt
c5872880fe Add l2xc support, including extensive tests to validate correct usage of the feature 2022-03-15 20:45:27 +00:00
Pim van Pelt
b9a7bb697e Add validator to ensure that bridgedomain interfaces occur in at most one bridgedomain. Ironically, this caught a bug in the bridgedomain5 test, where Gi1/0/0 was added twice. 2022-03-15 19:48:32 +00:00
Pim van Pelt
9d8c201a06 Merge branch 'main' of github.com:pimvanpelt/vppcfg into main 2022-03-14 00:19:32 +00:00
Pim van Pelt
f43d5a5e87 Merge branch 'main' of github.com:pimvanpelt/vppcfg into main 2022-03-14 00:19:23 +00:00
Pim van Pelt
0e293217fd Merge branch 'main' of github.com:pimvanpelt/vppcfg into main 2022-03-14 00:18:51 +00:00
Pim van Pelt
13f211f27a Make clearer that 'is not allowed' actually means that the address conflicts with another 2022-03-14 00:18:46 +00:00
Pim van Pelt
a5a58c1261 Make clearer that 'is not allowed' actually means that the address conflicts with another 2022-03-14 00:17:33 +00:00
Pim van Pelt
b6ab172986 Merge branch 'main' of github.com:pimvanpelt/vppcfg into main 2022-03-13 23:50:22 +00:00
Pim van Pelt
bb57ed8e52 IP Address validator
Returns True if there is at most one occurence of the ip_interface (an IPv4/IPv6 prefix+len)
in the entire config. That said, we need the 'iface_addresses' because VPP is a bit fickle in
this regard.

IP addresses from the same prefix/len can be added to a given interface (ie 192.0.2.1/24 and
192.0.2.2/24), but other than that, any prefix can not occur as a more-specific or less-specific
of any other interface.

So, we will allow:
- any ip_interface that is of equal network/len of existing one(s) _on the same interface_

And, we will reject
- any ip_interface that is a more specific of any existing one
- any ip_interface that is a less specific of any existing one

Update unit tests to ensure ip_interfaces are allowed in all cases.
2022-03-13 23:50:10 +00:00
Pim van Pelt
19bbd0e8a3 IP Address validator
Returns True if there is at most one occurence of the ip_interface (an IPv4/IPv6 prefix+len)
in the entire config. That said, we need the 'iface_addresses' because VPP is a bit fickle in
this regard.

IP addresses from the same prefix/len can be added to a given interface (ie 192.0.2.1/24 and
192.0.2.2/24), but other than that, any prefix can not occur as a more-specific or less-specific
of any other interface.

So, we will allow:
- any ip_interface that is of equal network/len of existing one(s) _on the same interface_

And, we will reject
- any ip_interface that is a more specific of any existing one
- any ip_interface that is a less specific of any existing one

Update unit tests to ensure ip_interfaces are allowed in all cases.
2022-03-13 23:45:40 +00:00
Pim van Pelt
3f2b80172c Add another schema validation test 2022-03-13 21:18:08 +00:00
Pim van Pelt
5c61259edd Add copyright and license 2022-03-13 21:08:32 +00:00
Pim van Pelt
412ecfdbf7 Add important note :) 2022-03-13 21:06:02 +00:00
Pim van Pelt
9c88e2a0cc Add a --quiet/-q flag, which only logs warnings and errors 2022-03-13 21:01:59 +00:00
Pim van Pelt
974ff054d3 Add BUILD instructions. Add LICENSE 2022-03-13 20:59:20 +00:00
Pim van Pelt
660e240eb7 Add some more garbage fields and tpyoes 2022-03-13 20:38:12 +00:00
Pim van Pelt
2ca7cc3f11 Check for fields that are of the wrong type. Fix bug in ip_interface() validator thanks to this unittest 2022-03-13 20:20:14 +00:00
Pim van Pelt
0f03d6cbaa Add unit test that ensures exact-match=False can't be on a sub-int with an LCP or address 2022-03-13 20:10:06 +00:00
Pim van Pelt
ec93195832 Print unittest description in case it's available 2022-03-13 19:58:17 +00:00
Pim van Pelt
763c1ca74c Ensure that LCP names are globally unique (between interface/sub-interface/loopback/bridgedomain) 2022-03-13 19:53:13 +00:00
Pim van Pelt
0d8a28cadd Enforce that when a bridgedomain has an address (ie a BVI), that it must also have an LCP 2022-03-13 19:32:30 +00:00
Pim van Pelt
8825984d49 Force loopbacks with an address to have an LCP 2022-03-13 19:27:27 +00:00
Pim van Pelt
d693c41c72 Add four simple loopback examples (with and without LCP or address) 2022-03-13 19:19:39 +00:00
Pim van Pelt
1adb91d227 Add LCP/Address example bridgedomains 2022-03-13 19:19:18 +00:00
Pim van Pelt
1340e5db42 Remove the attempted plural 'address(es)', and keep it singular. Fix a typo (addd-ress); update unit tests 2022-03-13 19:08:45 +00:00
Pim van Pelt
878f94b2bd Add unit tests for bondethernet, including a set of correctly form ones 2022-03-13 19:04:31 +00:00
Pim van Pelt
527b1ca95b Add a set of bridgedomain unit tests, including a fully formed correct one. Fix one bug found along the way! 2022-03-13 18:55:00 +00:00
Pim van Pelt
6ce6718b34 Typofix 2022-03-13 18:35:44 +00:00
Pim van Pelt
5207b920d7 Rename unittest 2022-03-13 18:35:28 +00:00
Pim van Pelt
9aec425bc0 Add unit tests for all interface/sub-interface failure modes 2022-03-13 18:35:11 +00:00
Pim van Pelt
cc0ec92638 Bugfix - get correct parent MTU 2022-03-13 17:42:16 +00:00
Pim van Pelt
95c8be553f Simple unit tester, with a few example tests 2022-03-13 17:20:10 +00:00
Pim van Pelt
eda78b30d0 Downgrade logging to debug 2022-03-13 17:19:54 +00:00
Pim van Pelt
881c0faaab Only pass 'schema' to the validator creation. 2022-03-13 16:48:52 +00:00
Pim van Pelt
0313666f69 Force LCP names to be unique 2022-03-13 13:17:14 +00:00
Pim van Pelt
2ced42e97a Add constraint for unique encapsulation
if any sub-int exists with a certain [dot1q,dot1ad,inner-dot1q], no
other sub-int in the same parent may exist with the same encapsulation.

- refactor sub-int mtu check to use get_mtu()
- if a sub-int has no config, raise a validation error
2022-03-13 13:06:44 +00:00
Pim van Pelt
29fcdaefe9 Add check to ensure combined length of sub-int LCP name is not larger than 15 chars. For the main int, this is ensured already by schema validation 2022-03-13 12:38:54 +00:00
Pim van Pelt
e7e957ed5f Ensure that when the sub-int is L3, exact-match must be true 2022-03-13 12:19:38 +00:00