aboutsummaryrefslogtreecommitdiffstats
path: root/package
diff options
context:
space:
mode:
authorJo-Philipp Wich <jow@openwrt.org>2012-05-28 03:15:02 +0000
committerJo-Philipp Wich <jow@openwrt.org>2012-05-28 03:15:02 +0000
commitf1d04190c5f691a07786fa79e912b62f8777080f (patch)
treefd84444f856c9ca2ce1289e203bfc3beedc7fac4 /package
parent367e4b3994543e40437e4e73305af197c21c1055 (diff)
downloadupstream-f1d04190c5f691a07786fa79e912b62f8777080f.tar.gz
upstream-f1d04190c5f691a07786fa79e912b62f8777080f.tar.bz2
upstream-f1d04190c5f691a07786fa79e912b62f8777080f.zip
base-files: introduce /lib/functions/network.sh This file will contain common procedures to deal with network interfaces. Initially provides network_get_ipaddr(), network_get_ipaddr6(), network_get_subnet() and network_get_subnet6() to determine the primary IP addresses or subnets of a given logical interface.
SVN-Revision: 31935
Diffstat (limited to 'package')
-rw-r--r--package/base-files/Makefile2
-rw-r--r--package/base-files/files/lib/functions/network.sh41
2 files changed, 42 insertions, 1 deletions
diff --git a/package/base-files/Makefile b/package/base-files/Makefile
index ae96ab54b8..4e9b41f0e6 100644
--- a/package/base-files/Makefile
+++ b/package/base-files/Makefile
@@ -11,7 +11,7 @@ include $(INCLUDE_DIR)/kernel.mk
include $(INCLUDE_DIR)/version.mk
PKG_NAME:=base-files
-PKG_RELEASE:=107
+PKG_RELEASE:=108
PKG_FILE_DEPENDS:=$(PLATFORM_DIR)/ $(GENERIC_PLATFORM_DIR)/base-files/
PKG_BUILD_DEPENDS:=opkg/host
diff --git a/package/base-files/files/lib/functions/network.sh b/package/base-files/files/lib/functions/network.sh
new file mode 100644
index 0000000000..1b42133ba2
--- /dev/null
+++ b/package/base-files/files/lib/functions/network.sh
@@ -0,0 +1,41 @@
+. /usr/share/libubox/jshn.sh
+
+__network_ipaddr()
+{
+ local __var="$1"
+ local __iface="$2"
+ local __family="$3"
+ local __prefix="${4:-0}"
+
+ local __tmp="$(ubus call network.interface."$__iface" status 2>/dev/null)"
+
+ json_load "${__tmp:-{}}"
+ json_get_type __tmp "ipv${__family}_address"
+
+ if [ "$__tmp" = array ]; then
+
+ json_select "ipv${__family}_address"
+ json_get_type __tmp 1
+
+ if [ "$__tmp" = object ]; then
+
+ json_select 1
+ json_get_var $__var address
+
+ [ $__prefix -gt 0 ] && {
+ json_get_var __tmp mask
+ eval "export -- \"$__var=\${$__var}/$__tmp\""
+ }
+
+ return 0
+ fi
+ fi
+
+ return 1
+}
+
+network_get_ipaddr() { __network_ipaddr "$1" "$2" 4 0; }
+network_get_ipaddr6() { __network_ipaddr "$1" "$2" 6 0; }
+
+network_get_subnet() { __network_ipaddr "$1" "$2" 4 1; }
+network_get_subnet6() { __network_ipaddr "$1" "$2" 6 1; }