base-files: add support for ipv6-prefixes in connection with netifd
SVN-Revision: 35168
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:=124
 | 
					PKG_RELEASE:=125
 | 
				
			||||||
 | 
					
 | 
				
			||||||
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
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -12,6 +12,8 @@ net.ipv4.tcp_timestamps=1
 | 
				
			|||||||
net.ipv4.tcp_sack=1
 | 
					net.ipv4.tcp_sack=1
 | 
				
			||||||
net.ipv4.tcp_dsack=1
 | 
					net.ipv4.tcp_dsack=1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					net.ipv6.conf.all.forwarding=1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
net.netfilter.nf_conntrack_acct=1
 | 
					net.netfilter.nf_conntrack_acct=1
 | 
				
			||||||
net.netfilter.nf_conntrack_checksum=0
 | 
					net.netfilter.nf_conntrack_checksum=0
 | 
				
			||||||
net.netfilter.nf_conntrack_max=16384
 | 
					net.netfilter.nf_conntrack_max=16384
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										18
									
								
								package/base-files/files/etc/uci-defaults/generate-ula
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								package/base-files/files/etc/uci-defaults/generate-ula
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,18 @@
 | 
				
			|||||||
 | 
					#!/bin/sh
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[ "$(uci get network.globals.ula_prefix)" != "auto" ] && exit 0
 | 
				
			||||||
 | 
					# Sometimes results are empty, therefore try until it works...          
 | 
				
			||||||
 | 
					local r1 r2 r3
 | 
				
			||||||
 | 
					while [ -z "$r1" -o -z "$r2" -o -z "$r3" ]; do
 | 
				
			||||||
 | 
						r1=$(printf "%02x" $(($(</dev/urandom tr -dc 0-9 | dd bs=9 count=1) % 256)))
 | 
				
			||||||
 | 
						r2=$(printf "%01x" $(($(</dev/urandom tr -dc 0-9 | dd bs=9 count=1) % 65536)))
 | 
				
			||||||
 | 
						r3=$(printf "%01x" $(($(</dev/urandom tr -dc 0-9 | dd bs=9 count=1) % 65536)))
 | 
				
			||||||
 | 
					done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					uci -q batch <<-EOF >/dev/null
 | 
				
			||||||
 | 
						set network.globals.ula_prefix=fd$r1:$r2:$r3::/48
 | 
				
			||||||
 | 
						commit network
 | 
				
			||||||
 | 
					EOF
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					exit 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -57,6 +57,20 @@ __network_parse_ifstatus()
 | 
				
			|||||||
			fi
 | 
								fi
 | 
				
			||||||
		done
 | 
							done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							# parse prefixes
 | 
				
			||||||
 | 
							if json_is_a "ipv6_prefix" array; then
 | 
				
			||||||
 | 
								json_select "ipv6_prefix"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if json_is_a 1 object; then
 | 
				
			||||||
 | 
									json_select 1
 | 
				
			||||||
 | 
									__network_set_cache "${__key}_prefix6_address"	address
 | 
				
			||||||
 | 
									__network_set_cache "${__key}_prefix6_mask"	mask
 | 
				
			||||||
 | 
									json_select ".."
 | 
				
			||||||
 | 
								fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								json_select ".."
 | 
				
			||||||
 | 
							fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		# parse routes
 | 
							# parse routes
 | 
				
			||||||
		if json_is_a route array; then
 | 
							if json_is_a route array; then
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -170,6 +184,22 @@ network_get_subnet()  { __network_ipaddr "$1" "$2" 4 1; }
 | 
				
			|||||||
# 2: interface
 | 
					# 2: interface
 | 
				
			||||||
network_get_subnet6() { __network_ipaddr "$1" "$2" 6 1; }
 | 
					network_get_subnet6() { __network_ipaddr "$1" "$2" 6 1; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# determine IPv6 prefix
 | 
				
			||||||
 | 
					network_get_prefix6() {
 | 
				
			||||||
 | 
						local __prefix="$1"
 | 
				
			||||||
 | 
						local __iface="$2"
 | 
				
			||||||
 | 
						local __address
 | 
				
			||||||
 | 
						local __mask
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						__network_parse_ifstatus "$__iface" || return 1
 | 
				
			||||||
 | 
						__network_export __address "${__iface}_prefix6_address"
 | 
				
			||||||
 | 
						local return="$?"
 | 
				
			||||||
 | 
						[ "$return" -eq 0 ] || return $?
 | 
				
			||||||
 | 
						__network_export __mask "${__iface}_prefix6_mask"
 | 
				
			||||||
 | 
						eval "$__prefix=$__address/$__mask"
 | 
				
			||||||
 | 
						return 0
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
__network_gateway()
 | 
					__network_gateway()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user