diff options
author | Christian Poessinger <christian@poessinger.com> | 2019-08-04 23:44:03 +0200 |
---|---|---|
committer | Christian Poessinger <christian@poessinger.com> | 2019-08-04 23:44:07 +0200 |
commit | 752229cf7ef080d7a5dd723e7d9b1aa13e44ecd0 (patch) | |
tree | 8b365a675eb662ecfdf584c1740b1521333d7f71 | |
parent | 2a2e3e8cded406ce209b94f565b16e5a766ec97e (diff) | |
download | vyos-1x-752229cf7ef080d7a5dd723e7d9b1aa13e44ecd0.tar.gz vyos-1x-752229cf7ef080d7a5dd723e7d9b1aa13e44ecd0.zip |
Python/VyOS validate: improve logic on is_ipv4() and is_ipv6()
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.
-rw-r--r-- | python/vyos/validate.py | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/python/vyos/validate.py b/python/vyos/validate.py index 8def0a510..8f453f85d 100644 --- a/python/vyos/validate.py +++ b/python/vyos/validate.py @@ -18,22 +18,24 @@ import ipaddress def is_ipv4(addr): """ - Check addr if it is an IPv4 address/network. - - Return True/False + Check addr if it is an IPv4 address/network. Returns True/False """ - if ipaddress.ip_network(addr).version == 4: + + # With the below statement we can check for IPv4 networks and host + # addresses at the same time + if ipaddress.ip_address(addr.split(r'/')[0]).version == 4: return True else: return False def is_ipv6(addr): """ - Check addr if it is an IPv6 address/network. - - Return True/False + Check addr if it is an IPv6 address/network. Returns True/False """ - if ipaddress.ip_network(addr).version == 6: + + # With the below statement we can check for IPv4 networks and host + # addresses at the same time + if ipaddress.ip_network(addr.split(r'/')[0]).version == 6: return True else: return False |