aboutsummaryrefslogtreecommitdiff
path: root/package/base-files
diff options
context:
space:
mode:
authorLeon M. Busch-George <leon@georgemail.eu>2023-06-16 14:56:39 +0200
committerLeon M. Busch-George <leon@georgemail.eu>2023-09-25 15:02:49 +0200
commit9b2f8a33b6b247d4232d48a1d18aea3769590083 (patch)
tree1d3a3ded1de21f5f934ef1f7962c5d5e8ba8fccd /package/base-files
parent9e8bbd4265271612732c0804065ce8bf4939e8c0 (diff)
base-files: ipcalc.sh: correctly set limit for prefix > 30
For /31 and /32 prefixes, there are only host addresses - no network and broadcast address with all-zero and all-one bits. Reflect this when setting the limit. Signed-off-by: Leon M. Busch-George <leon@georgemail.eu>
Diffstat (limited to 'package/base-files')
1 files changed, 10 insertions, 2 deletions
diff --git a/package/base-files/files/bin/ipcalc.sh b/package/base-files/files/bin/ipcalc.sh
index 21f84bcaf2..c852b5163f 100755
--- a/package/base-files/files/bin/ipcalc.sh
+++ b/package/base-files/files/bin/ipcalc.sh
@@ -64,13 +64,21 @@ BEGIN {
if (ARGC <= 3)
exit(0)
+ if (prefix<=30)
+ limit=network+1
+ else
+ limit=network
+
start=or(network,and(ip2int(ARGV[3]),compl32(netmask)))
- limit=network+1
if (start<limit) start=limit
if (start==ipaddr) start=ipaddr+1
+ if (prefix<=30)
+ limit=or(network,compl32(netmask))-1
+ else
+ limit=or(network,compl32(netmask))
+
end=start+ARGV[4]-1
- limit=or(network,compl32(netmask))-1
if (end>limit) end=limit
if (end==ipaddr) end=ipaddr-1