From 8527c75281c533bdabe4a0cea442ef784aeafe46 Mon Sep 17 00:00:00 2001 From: coolsnowwolf Date: Thu, 17 Oct 2024 16:51:29 +0800 Subject: [PATCH] base-files: ipcalc.sh: check for params before calculating start/end --- package/base-files/files/bin/ipcalc.sh | 51 +++++++++++++++++--------- 1 file changed, 34 insertions(+), 17 deletions(-) diff --git a/package/base-files/files/bin/ipcalc.sh b/package/base-files/files/bin/ipcalc.sh index 5d5eac3ea..6e72617e1 100755 --- a/package/base-files/files/bin/ipcalc.sh +++ b/package/base-files/files/bin/ipcalc.sh @@ -1,6 +1,5 @@ -#!/bin/sh +#!/usr/bin/awk -f -awk -f - $* <limit) end=limit - 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 - if (ARGC > 3) { - print "START="int2ip(start) - print "END="int2ip(end) + if (ARGC <= 3) + exit(0) + + start=or(network,and(ip2int(ARGV[3]),compl32(netmask))) + limit=network+1 + if (startlimit) 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 "warning: ipaddr inside range - this might not be supported in future releases of Openwrt" > "/dev/stderr" + } + + print "START="int2ip(start) + print "END="int2ip(end) } -EOF