From f9101da96f814c8d0d2f9cd8e562a2f7408b3132 Mon Sep 17 00:00:00 2001 From: Steven Barth Date: Fri, 24 May 2013 13:03:59 +0000 Subject: [PATCH] AA: add ipv6-support for transitioning between IPv6-stacks SVN-Revision: 36712 --- package/ipv6-support/Makefile | 50 +++++++++++++++++++ package/ipv6-support/files/ipv6-boot | 15 ++++++ .../files/network-enable-ipv6.defaults | 27 ++++++++++ 3 files changed, 92 insertions(+) create mode 100644 package/ipv6-support/Makefile create mode 100755 package/ipv6-support/files/ipv6-boot create mode 100755 package/ipv6-support/files/network-enable-ipv6.defaults 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 + 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/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 -- 2.30.2