diff options
Diffstat (limited to 'package')
| -rw-r--r-- | package/base-files/Makefile | 2 | ||||
| -rwxr-xr-x | package/base-files/files/bin/ipcalc.sh | 21 | 
2 files changed, 16 insertions, 7 deletions
diff --git a/package/base-files/Makefile b/package/base-files/Makefile index c10f48327..3d179aed0 100644 --- a/package/base-files/Makefile +++ b/package/base-files/Makefile @@ -10,7 +10,7 @@ include $(TOPDIR)/rules.mk  include $(INCLUDE_DIR)/kernel.mk  PKG_NAME:=base-files -PKG_RELEASE:=69 +PKG_RELEASE:=70  PKG_FILE_DEPENDS:=$(PLATFORM_DIR)/ $(GENERIC_PLATFORM_DIR)/base-files/  PKG_BUILD_DEPENDS:=opkg/host diff --git a/package/base-files/files/bin/ipcalc.sh b/package/base-files/files/bin/ipcalc.sh index 9057e8592..d6ef16870 100755 --- a/package/base-files/files/bin/ipcalc.sh +++ b/package/base-files/files/bin/ipcalc.sh @@ -23,15 +23,24 @@ function int2ip(ip,ret,x) {  }  BEGIN { -	ipaddr=ip2int(ARGV[1]) -	netmask=ip2int(ARGV[2]) +	slpos=index(ARGV[1],"/") +	if (slpos == 0) { +		ipaddr=ip2int(ARGV[1]) +		netmask=ip2int(ARGV[2]) +	} else { +		ipaddr=ip2int(substr(ARGV[1],0,slpos-1)) +		netmask=compl(2**(32-int(substr(ARGV[1],slpos+1)))-1) +		ARGV[4]=ARGV[3] +		ARGV[3]=ARGV[2] +	} +  	network=and(ipaddr,netmask)  	broadcast=or(network,compl(netmask)) -	 +  	start=or(network,and(ip2int(ARGV[3]),compl(netmask)))  	limit=network+1  	if (start<limit) start=limit -	 +  	end=start+ARGV[4]  	limit=or(network,compl(netmask))-1  	if (end>limit) end=limit @@ -41,10 +50,10 @@ BEGIN {  	print "BROADCAST="int2ip(broadcast)  	print "NETWORK="int2ip(network)  	print "PREFIX="32-bitcount(compl(netmask)) -	 +  	# range calculations:  	# ipcalc <ip> <netmask> <start> <num> -	 +  	if (ARGC > 3) {  		print "START="int2ip(start)  		print "END="int2ip(end)  | 
