aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteven Barth <steven@midlink.org>2013-05-24 13:03:59 +0000
committerSteven Barth <steven@midlink.org>2013-05-24 13:03:59 +0000
commit55dc64c2edcae76638ba2726984d5d3007e08179 (patch)
tree7de45d6b464055577b9b94c3bd31dd8de9d5cab5
parent668817dcbe7dec1e3eac8c7742cab81901b1c3e7 (diff)
downloadupstream-55dc64c2edcae76638ba2726984d5d3007e08179.tar.gz
upstream-55dc64c2edcae76638ba2726984d5d3007e08179.tar.bz2
upstream-55dc64c2edcae76638ba2726984d5d3007e08179.zip
AA: add ipv6-support for transitioning between IPv6-stacks
git-svn-id: svn://svn.openwrt.org/openwrt/branches/attitude_adjustment@36712 3c298f89-4303-0410-b956-a3cf2f4a3e73
-rw-r--r--package/ipv6-support/Makefile50
-rwxr-xr-xpackage/ipv6-support/files/ipv6-boot15
-rwxr-xr-xpackage/ipv6-support/files/network-enable-ipv6.defaults27
3 files changed, 92 insertions, 0 deletions
diff --git a/package/ipv6-support/Makefile b/package/ipv6-support/Makefile
new file mode 100644
index 0000000000..efa2fb0fcf
--- /dev/null
+++ b/package/ipv6-support/Makefile
@@ -0,0 +1,50 @@
+#
+# Copyright (C) 2010-2012 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=ipv6-support
+PKG_VERSION:=2013-05-23
+PKG_RELEASE:=1
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/ipv6-support
+ SECTION:=ipv6
+ CATEGORY:=IPv6
+ DEPENDS:=+kmod-ipv6 +6relayd +odhcp6c +ip6tables
+ TITLE:=Basic IPv6-support for Customer Edge Routers
+ MAINTAINER:=Steven Barth <steven@midlink.org>
+ PKGARCH:=all
+endef
+
+define Package/ipv6-support/description
+This package provides basic IPv6 support including Router Discovery,
+DHCPv6 (client & server), prefix delegation and distribution.
+endef
+
+define Build/Compile
+endef
+
+define Build/Configure
+endef
+
+define Package/ipv6-support/postinst
+#!/bin/sh
+[ -n "$${IPKG_INSTROOT}" ] || /etc/init.d/ipv6-boot start || true
+[ -n "$${IPKG_INSTROOT}" ] || /etc/uci-defaults/10_network-enable-ipv6 || true
+[ -n "$${IPKG_INSTROOT}" ] || rm -f /etc/uci-defaults/10_network-enable-ipv6 || true
+endef
+
+define Package/ipv6-support/install
+ $(INSTALL_DIR) $(1)/etc/uci-defaults
+ $(INSTALL_DIR) $(1)/etc/init.d
+ $(INSTALL_BIN) ./files/network-enable-ipv6.defaults $(1)/etc/uci-defaults/10_network-enable-ipv6
+ $(INSTALL_BIN) ./files/ipv6-boot $(1)/etc/init.d/ipv6-boot
+endef
+
+$(eval $(call BuildPackage,ipv6-support))
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