diff options
author | Phil Sutter <phil@nwl.cc> | 2024-12-12 13:47:32 +0100 |
---|---|---|
committer | Jozsef Kadlecsik <kadlec@netfilter.org> | 2024-12-15 17:08:39 +0100 |
commit | 37f77108fd6cd314690e2c59d7f04825441d9c20 (patch) | |
tree | 9196b1cb2edfd59ad2991d3222a5282aa9365438 | |
parent | 61d78c20377e602de2759b58c3abb0d14ca50f7b (diff) |
tests: cidr.sh: Fix for quirks in RHEL's ipcalc
RHEL ships a special ipset[1] tool with different output in corner-cases
than the common one[2]:
* Reduced output with /32 netmasks:
| # ipcalc 255.255.255.254/32
| Address: 255.255.255.254
| Address space: Reserved
To cover for this, make net_last_addr() fall back to the 'Address:'
line. Simply adding this keyword is fine as in normal output it appears
first and thus the other recognized keywords' values take precedence.
* No "Address:" line with all-zero addresses:
| # ipcalc 0.0.0.0/1
| Network: 0.0.0.0/1
| Netmask: 128.0.0.0 = 1
| Broadcast: 127.255.255.255
|
| Address space: This host on this network
| HostMin: 0.0.0.1
| HostMax: 127.255.255.254
| Hosts/Net: 2147483646
Have net_first_addr() fall back to the 'HostMin:' line in this case.
[1] https://gitlab.com/ipcalc/ipcalc
[2] http://jodies.de/ipcalc
Fixes: e24e7656b3dd9 ("tests: cidr.sh: Add ipcalc fallback")
Signed-off-by: Phil Sutter <phil@nwl.cc>
Signed-off-by: Jozsef Kadlecsik <kadlec@netfilter.org>
-rwxr-xr-x | tests/cidr.sh | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/tests/cidr.sh b/tests/cidr.sh index ca01f06..abb69b8 100755 --- a/tests/cidr.sh +++ b/tests/cidr.sh @@ -46,7 +46,7 @@ if which netmask >/dev/null 2>&1; then } elif which ipcalc >/dev/null 2>&1; then net_first_addr() { - ipcalc $1 | awk '/^Address:/{print $2}' + ipcalc $1 | awk '/^(Address|HostMin):/{print $2; exit}' } net_last_addr() { # Netmask tool prints broadcast address as last one, so @@ -54,6 +54,7 @@ elif which ipcalc >/dev/null 2>&1; then # being recognized as special by ipcalc. ipcalc $1 | awk '/^(Hostroute|HostMax):/{out=$2} /^Broadcast:/{out=$2} + /^Address:/{out=$2} END{print out}' } else |