base-files: add support for ipv6-prefixes in connection with netifd
SVN-Revision: 35168
This commit is contained in:
parent
06890959d1
commit
847cd984b9
4 changed files with 51 additions and 1 deletions
|
@ -11,7 +11,7 @@ include $(INCLUDE_DIR)/kernel.mk
|
|||
include $(INCLUDE_DIR)/version.mk
|
||||
|
||||
PKG_NAME:=base-files
|
||||
PKG_RELEASE:=124
|
||||
PKG_RELEASE:=125
|
||||
|
||||
PKG_FILE_DEPENDS:=$(PLATFORM_DIR)/ $(GENERIC_PLATFORM_DIR)/base-files/
|
||||
PKG_BUILD_DEPENDS:=opkg/host
|
||||
|
|
|
@ -12,6 +12,8 @@ net.ipv4.tcp_timestamps=1
|
|||
net.ipv4.tcp_sack=1
|
||||
net.ipv4.tcp_dsack=1
|
||||
|
||||
net.ipv6.conf.all.forwarding=1
|
||||
|
||||
net.netfilter.nf_conntrack_acct=1
|
||||
net.netfilter.nf_conntrack_checksum=0
|
||||
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
|
||||
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
|
||||
if json_is_a route array; then
|
||||
|
||||
|
@ -170,6 +184,22 @@ network_get_subnet() { __network_ipaddr "$1" "$2" 4 1; }
|
|||
# 2: interface
|
||||
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()
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue