aboutsummaryrefslogtreecommitdiffstats
path: root/package/ipv6-support/files
diff options
context:
space:
mode:
Diffstat (limited to 'package/ipv6-support/files')
-rwxr-xr-xpackage/ipv6-support/files/ipv6-boot15
-rwxr-xr-xpackage/ipv6-support/files/network-enable-ipv6.defaults27
2 files changed, 42 insertions, 0 deletions
diff --git a/package/ipv6-support/files/ipv6-boot b/package/ipv6-support/files/ipv6-boot
new file mode 100755
index 0000000000..a0d3856c03
--- /dev/null
+++ b/package/ipv6-support/files/ipv6-boot
@@ -0,0 +1,15 @@
+#!/bin/sh /etc/rc.common
+START=11
+STOP=97
+
+start() {
+ # early sysctl to avoid networking races
+ if [ -d /proc/sys/net/ipv6/conf ]; then
+ for i in /proc/sys/net/ipv6/conf/*/accept_ra; do
+ echo 0 > $i
+ done
+
+ echo 1 > /proc/sys/net/ipv6/conf/default/forwarding
+ echo 1 > /proc/sys/net/ipv6/conf/all/forwarding
+ fi
+}
diff --git a/package/ipv6-support/files/network-enable-ipv6.defaults b/package/ipv6-support/files/network-enable-ipv6.defaults
new file mode 100755
index 0000000000..7bde74267f
--- /dev/null
+++ b/package/ipv6-support/files/network-enable-ipv6.defaults
@@ -0,0 +1,27 @@
+#!/bin/sh
+
+# Remove conflicting sysctl-handler
+rm -f /etc/hotplug.d/iface/10-sysctl
+
+# Don't override existing settings
+uci get network.globals && 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=globals
+ set network.globals.ula_prefix=fd$r1:$r2:$r3::/48
+ set network.wan6=interface
+ set network.wan6.proto=dhcpv6
+ set network.wan6.ifname=@wan
+ set network.lan.ip6assign=64
+ set network.wan.ipv6=1
+ commit network
+EOF