summaryrefslogtreecommitdiff
path: root/python/vyos/validate.py
AgeCommit message (Collapse)Author
2023-06-25bcast-relay: T5313: verify() relay interfaces have IPv4 address configuredChristian Breunig
(cherry picked from commit ca7c063666c038d104082542f04ead6062e79246)
2022-07-18bond: bridge: T4534: error out if member interface is assigned to a VRF instanceChristian Poessinger
It makes no sense to enslave an interface to a bond or a bridge device if it is bound to a given VRF. If VRFs should be used - the encapuslating/master interface should be part of the VRF. Error out if the member interface is part of a VRF. (cherry picked from commit 87d2dff241d9ab4de9f3a2c7fbf9852934557aef)
2021-01-05vyos.validate: import cleanupChristian Poessinger
2021-01-01ethernet: T3171: add CLI option to enable RPS (Receive Packet Steering)Christian Poessinger
set interfaces ethernet <interface> offload rps
2020-12-06vyos.validate: T1579: support prefix length in is_ipv6_link_local()Christian Poessinger
Function can now be called with a prefix length like 2001:db8::1/64
2020-12-06Revert "vyos.ifconfig: T1579: do not remove IPv6 link-local address on ↵Christian Poessinger
reconfiguration" This reverts commit d247736f67cc056062b75a4215a031bebcfee2ee. We need to clean link-local IPv6 addresses on link reconfiguration to also drop no longer existing link-local addresse son MAC address change.
2020-12-06vyos.ifconfig: T1579: do not remove IPv6 link-local address on reconfigurationChristian Poessinger
2020-11-13vyos.template: provide general is_ip(v4|v6) helpersChristian Poessinger
We had two places were the is_ip, is_ipv4 and is_ipv6 helpers had been defined. All places now have been converged into vyos.template as they are used both in the Jinja2 templates and also in our scripts.
2020-11-10bridge: T3042: Support VLAN filter and VLAN sub-interface on the bridgejack9603301
2020-11-01vyos.template: consolidate is_ipv(4|6) functionalityChristian Poessinger
2020-09-22ifconfig: T2653: move is_member() from vyos.vylidate to vyos.configdictChristian Poessinger
2020-07-25bonding: ifconfig: T2653: move to get_config_dict()Christian Poessinger
The current VyOS CLI parser code written in Python contains a ton of duplicates which I can also hold myself accountable for - or maybe mainly me - depends on the angle of judge.
2020-07-22xml: T2582: use xml for is_tag and is_leafThomas Mangin
2020-06-23validation: T2630: bound to interface mtu if availableThomas Mangin
2020-05-18flake8: T2475: fix a number of issue reported by flake8Thomas Mangin
2020-05-04validate: T2241: add func that checks if an interface has a configured addressJernej Jakob
2020-05-04validate: T2241: rewrite is_bridge_member to generic is_memberJernej Jakob
- rewrite the function to support both bridge and bonding interface types, if the type is passed it searches only that type, otherwise it searches both - move is_member check out of the deleted condition - move is_member check to intf_from_dict for interfaces that use it
2020-04-19vyos.validate: remove extra print() in is_bridge_member()Christian Poessinger
2020-04-19bridge: T2232: move helper to vyos.validateChristian Poessinger
2020-04-01validate: T2182: IPv6 normalisation and % in interface nameThomas Mangin
The IPv6 address can be expressed in different ways: (for example all these are valid loopback ::1, 0::1, 0:0::0:001) The IPv6 need to be normalised when tested, and the best way to do this is to test it on-wire representation, the same can be done for IPv4. Also The interface name which returned by netifaces.ifaddresses can have a % in the 'addr' field, for example '::1%eth0', which would also break the test in is_intf_addr_assigned.
2020-03-31Revert "validate: T2182: IPv6 are not normalised when compared"Christian Poessinger
This reverts commit e2f80e57d9895d207edf0ad92c299dc7862087d6. Due to failing smoketests this commit is reverted.
2020-03-30validate: T2182: IPv6 are not normalised when comparedThomas Mangin
Adding an already existing IP address on an interface would cause the 'ip addr add' command to fail. To prevent this, the code checks if the IP already exists on the interface. The code was not normalising the different ways of representing the IPv6 address (trailing 0, ::, etc.).
2020-03-28ifconfig: T2057: correctly provide the reason why a MAC could not be setThomas Mangin
2020-03-04ifconfig: T2057: bugfix ValueErrorChristian Poessinger
Fixes error when creating bridge interfaces: ValueError: <module 'time' (built-in)> must be a number
2020-03-03ifconfig: T2057: generic interface option settingThomas Mangin
this patch allows to get or change many interface options (mtu, arp settings, ...) using get_interface / set_interface functions
2020-01-25vyos.validate: improve is_ipv6_link_local() logicChristian Poessinger
2020-01-25vyos.validate: remove interface suffix when running is_ipv6_link_local()Christian Poessinger
Commit 17dd50751d ("bfd: T1949: fix verification logic for IPv6 BFD peers") added a mechanism to probe if an IPv6 address is link-local or not. Sometimes an interface suffix is appended by %interface to a link-local address, as we need to know an interface for which this address is (hence the name) link-local. Remove any interface identifier before checking if the address is local or not.
2020-01-09bfd: T1949: fix verification logic for IPv6 BFD peersBenjamin M. Hughes
IPv6 BFD peers only require a source address unless link-local addresses are used.
2019-12-23lldp: T1898: support multiple management addressesChristian Poessinger
- management-address is not a <multi/> node - added new vyos.validate.is_loopback_addr() function - returns true is address passed is a looback address
2019-12-06Python/VyOS validate: T1849: handle is_ipv6()/is_ipv6() exceptionsChristian Poessinger
2019-08-27Python/VyOS validate: add is_ip() to check for IPv4 or IPv4 addressChristian Poessinger
2019-08-05Python/VyOS validate: extend is_intf_addr_assigned()Christian Poessinger
Verify if the given IPv4/IPv6 address is assigned to specific interface. It can check both a single IP address (e.g. 192.0.2.1 or a assigned CIDR address 192.0.2.1/24. Used testbench: =============== 20: br0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000 inet 192.0.2.1/24 brd 192.0.2.255 scope global br0 inet 192.0.3.1/24 brd 192.0.3.255 scope global br0 inet6 2001:db8:2::ffff/64 scope global tentative inet6 2001:db8:1::ffff/64 scope global tentative is_intf_addr_assigned('br0', '192.0.2.1/24') -> True is_intf_addr_assigned('br0', '192.0.2.1') -> True is_intf_addr_assigned('br0', '2001:db8:2::ffff/64') -> True is_intf_addr_assigned('br0', '2001:db8:2::ffff') -> True is_intf_addr_assigned('br0', '192.0.100.1/24') -> False is_intf_addr_assigned('br0', '192.0.100.1') -> False is_intf_addr_assigned('br0', '2001:db8:100::ffff/64') -> False is_intf_addr_assigned('br0', '2001:db8:100::ffff') -> False
2019-08-05Python/VyOS validate: add helper to check if an address belongs to a given ↵Christian Poessinger
interface
2019-08-04Python/VyOS validate: improve logic on is_ipv4() and is_ipv6()Christian Poessinger
Previosly the check failed when a network statement was passed which contained host bits set e.g. 192.0.2.1/24. This no longer is an issue b/c this is a valid v4 address. Address is now split on / and validated.
2018-10-25T937: proper handle IPv6 link-local addresses in vyos.validate moduleChristian Poessinger
The problem is that some IPv6 addresses reported by the system (mainly link-local addresses) contain an interface suffix like %eth0, this was not properly handeled in the validator script. Remove any given interface attribute on passed IPv6 addresses. If no interface suffix is added - there is no problem.
2018-08-31vyos: package: bugfix in validate.py for is_subnet_connected()Christian Poessinger
2018-08-30vyos: package: extend validator by is_subnet_connected()Christian Poessinger
Verify given IPv4/IPv6 subnet is connected to any interface on this system. Required by e.g. DHCP server that we have for IPv4 and IPv6.
2018-08-29vyos package: add IP address validatorsChristian Poessinger
* is_addr_assigned(addr) - Test if address is assigned to ANY interface on the system * is_ipv4(addr) - Test if it is an IPv4 address, both network and host * is_ipv6(addr) - Test if it is an IPv6 address, both network and host