--- /dev/null
+#
+# 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))
--- /dev/null
+#!/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
+}
--- /dev/null
+#!/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