diff options
author | Christian Poessinger <christian@poessinger.com> | 2021-03-17 20:09:11 +0100 |
---|---|---|
committer | Christian Poessinger <christian@poessinger.com> | 2021-03-17 20:10:24 +0100 |
commit | c59fdc6b92c996762bc2cdcdfb501b009b83b452 (patch) | |
tree | 7e7f1b582c7ef4dae994195f09aa5ceca92a46be | |
parent | b96c324344a7b11223ae42836216dbff9bbbbfcf (diff) | |
download | vyos-1x-c59fdc6b92c996762bc2cdcdfb501b009b83b452.tar.gz vyos-1x-c59fdc6b92c996762bc2cdcdfb501b009b83b452.zip |
ipv6: eui64: T3413: add custom validator
VyOS 1.2 (crux) rejected prefixes other then of site /64.
[ interfaces ethernet eth0 ipv6 address eui64 2006:ab00:abe1::2/127 ]
Error: Prefix lenght is 127. It must be 64.
Same should be done on VyOS 1.3 and newer
(cherry picked from commit 6f6cd6552384704700f08e9367e167796b1f7fde)
-rw-r--r-- | interface-definitions/include/interface/ipv6-address-eui64.xml.i | 3 | ||||
-rwxr-xr-x | src/validators/ipv6-eui64-prefix | 16 |
2 files changed, 18 insertions, 1 deletions
diff --git a/interface-definitions/include/interface/ipv6-address-eui64.xml.i b/interface-definitions/include/interface/ipv6-address-eui64.xml.i index 47f60c439..fe1f43df4 100644 --- a/interface-definitions/include/interface/ipv6-address-eui64.xml.i +++ b/interface-definitions/include/interface/ipv6-address-eui64.xml.i @@ -7,8 +7,9 @@ <description>IPv6 /64 network</description> </valueHelp> <constraint> - <validator name="ipv6-prefix"/> + <validator name="ipv6-eui64-prefix"/> </constraint> + <constraintErrorMessage>EUI64 prefix length must be 64</constraintErrorMessage> <multi/> </properties> </leafNode> diff --git a/src/validators/ipv6-eui64-prefix b/src/validators/ipv6-eui64-prefix new file mode 100755 index 000000000..d7f262633 --- /dev/null +++ b/src/validators/ipv6-eui64-prefix @@ -0,0 +1,16 @@ +#!/usr/bin/env python3 + +# Validator used to check if given IPv6 prefix is of size /64 required by EUI64 + +from sys import argv +from sys import exit + +if __name__ == '__main__': + if len(argv) != 2: + exit(1) + + prefix = argv[1] + if prefix.split('/')[1] == '64': + exit(0) + + exit(1) |