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
This commit is contained in:
		@@ -11,7 +11,7 @@ include $(INCLUDE_DIR)/kernel.mk
 | 
				
			|||||||
include $(INCLUDE_DIR)/version.mk
 | 
					include $(INCLUDE_DIR)/version.mk
 | 
				
			||||||
 | 
					
 | 
				
			||||||
PKG_NAME:=base-files
 | 
					PKG_NAME:=base-files
 | 
				
			||||||
PKG_RELEASE:=107
 | 
					PKG_RELEASE:=108
 | 
				
			||||||
 | 
					
 | 
				
			||||||
PKG_FILE_DEPENDS:=$(PLATFORM_DIR)/ $(GENERIC_PLATFORM_DIR)/base-files/
 | 
					PKG_FILE_DEPENDS:=$(PLATFORM_DIR)/ $(GENERIC_PLATFORM_DIR)/base-files/
 | 
				
			||||||
PKG_BUILD_DEPENDS:=opkg/host
 | 
					PKG_BUILD_DEPENDS:=opkg/host
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										41
									
								
								package/base-files/files/lib/functions/network.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								package/base-files/files/lib/functions/network.sh
									
									
									
									
									
										Normal file
									
								
							@@ -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; }
 | 
				
			||||||
		Reference in New Issue
	
	Block a user