1
0
mirror of https://git.openwrt.org/openwrt/openwrt.git synced 2024-10-18 13:29:16 +02:00

base-files: ipcalc.sh: fail when network is too small

It's possible to move range boundaries in a way that the start address
lies behind the end address.
Detect this condition and exit with an error message.

Signed-off-by: Leon M. George <leon@georgemail.eu>
This commit is contained in:
Leon M. George 2022-05-06 00:02:52 +02:00 committed by Christian Marangi
parent 4fe106afd1
commit a40a96e54b
No known key found for this signature in database
GPG Key ID: AC001D09ADBFEAD7

@ -44,13 +44,14 @@ BEGIN {
}
network=and(ipaddr,netmask)
prefix=32-bitcount(compl32(netmask))
broadcast=or(network,compl32(netmask))
print "IP="int2ip(ipaddr)
print "NETMASK="int2ip(netmask)
print "BROADCAST="int2ip(broadcast)
print "NETWORK="int2ip(network)
print "PREFIX="32-bitcount(compl32(netmask))
print "PREFIX="prefix
# range calculations:
# ipcalc <ip> <netmask> <start> <num>
@ -68,6 +69,11 @@ BEGIN {
if (end>limit) end=limit
if (end==ipaddr) end=ipaddr-1
if (start>end) {
print "network ("int2ip(network)"/"prefix") too small" > "/dev/stderr"
exit(1)
}
if (ipaddr > start && ipaddr < end) {
print "ipaddr inside range" > "/dev/stderr"
exit(1)