summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPhil Sutter <phil@nwl.cc>2024-12-12 13:47:32 +0100
committerJozsef Kadlecsik <kadlec@netfilter.org>2024-12-15 17:08:39 +0100
commit37f77108fd6cd314690e2c59d7f04825441d9c20 (patch)
tree9196b1cb2edfd59ad2991d3222a5282aa9365438
parent61d78c20377e602de2759b58c3abb0d14ca50f7b (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-xtests/cidr.sh3
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