From 02bb700c13788d427836b23f99e94d402dd902a3 Mon Sep 17 00:00:00 2001 From: Florian Fainelli Date: Fri, 18 Jul 2008 14:04:47 +0000 Subject: [PATCH] Move the helper scripts to setup IPv6 connectivity fo the 6scripts package SVN-Revision: 11859 --- ipv6/6scripts/Makefile | 48 ++++++++++++++++++++++++ ipv6/6scripts/files/6bridge.conf | 2 + ipv6/6scripts/files/6bridge.init | 53 ++++++++++++++++++++++++++ ipv6/6scripts/files/6tunnel.conf | 6 +++ ipv6/6scripts/files/6tunnel.init | 64 ++++++++++++++++++++++++++++++++ 5 files changed, 173 insertions(+) create mode 100644 ipv6/6scripts/Makefile create mode 100644 ipv6/6scripts/files/6bridge.conf create mode 100644 ipv6/6scripts/files/6bridge.init create mode 100644 ipv6/6scripts/files/6tunnel.conf create mode 100644 ipv6/6scripts/files/6tunnel.init diff --git a/ipv6/6scripts/Makefile b/ipv6/6scripts/Makefile new file mode 100644 index 0000000000..5600ff0be0 --- /dev/null +++ b/ipv6/6scripts/Makefile @@ -0,0 +1,48 @@ +# +# Copyright (C) 2007 OpenWrt.org +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# +# $Id: Makefile 9802 2007-12-19 08:30:28Z florian $ + +include $(TOPDIR)/rules.mk + +PKG_NAME:=6scripts +PKG_VERSION:=0.1 +PKG_RELEASE:=1 + +include $(INCLUDE_DIR)/package.mk + +define Package/6scripts + SECTION:=ipv6 + CATEGORY:=IPv6 + TITLE:=IPv6 scripts +endef + +define Package/6tunnel/description +IPv6 scripts to setup ipv6 connectivy using 6to4 tunnels +or bridged ipv6 connectivity. +endef + +define Package/6scripts/conffiles +/etc/config/6tunnel +/etc/config/6bridge +endef + +define Build/Compile +endef + +define Build/Configure +endef + +define Package/6scripts/install + $(INSTALL_DIR) $(1)/etc/config + $(INSTALL_DATA) ./files/6tunnel.conf $(1)/etc/config/6tunnel + $(INSTALL_DATA) ./files/6bridge.conf $(1)/etc/config/6bridge + $(INSTALL_DIR) $(1)/etc/init.d + $(INSTALL_BIN) ./files/6tunnel.init $(1)/etc/init.d/6tunnel + $(INSTALL_BIN) ./files/6bridge.init $(1)/etc/init.d/6bridge +endef + +$(eval $(call BuildPackage,6scripts)) diff --git a/ipv6/6scripts/files/6bridge.conf b/ipv6/6scripts/files/6bridge.conf new file mode 100644 index 0000000000..e2980ad650 --- /dev/null +++ b/ipv6/6scripts/files/6bridge.conf @@ -0,0 +1,2 @@ +config 6bridge + option bridge 'bripv6' diff --git a/ipv6/6scripts/files/6bridge.init b/ipv6/6scripts/files/6bridge.init new file mode 100644 index 0000000000..ba98d66beb --- /dev/null +++ b/ipv6/6scripts/files/6bridge.init @@ -0,0 +1,53 @@ +#!/bin/sh /etc/rc.common +START=46 +STOP=46 + +start_service() { + local section="$1" + + include /lib/network + scan_interfaces + config_load /var/state/network + + config_get LAN lan ifname + config_get WAN wan ifname + config_get bridge "$section" bridge + + brctl addbr $bridge + brctl addif $bridge $LAN + brctl addif $bridge $WAN + brctl setfd $bridge 0 + ebtables -t broute -A BROUTING -i $WAN -p ! ipv6 -j DROP + ifconfig $bridge up +} + +stop_service() { + local section="$1" + + include /lib/network + scan_interfaces + config_load /var/state/network + + config_get LAN lan ifname + config_get WAN wan ifname + config_get bridge "$section" bridge + + ifconfig $bridge down + ebtables -t broute -F + brctl delif $bridge $WAN + brctl delif $bridge $LAN + brctl delbr $bridge +} +start() { + if ! [ -f /proc/net/if_inet6 ]; then + echo "IPv6 not enabled, install kmod-ipv6"; + exit 1; + fi + config_load "6bridge" + config_foreach start_service 6bridge +} + +stop () { + config_load "6bridge" + config_foreach stop_service 6bridge +} diff --git a/ipv6/6scripts/files/6tunnel.conf b/ipv6/6scripts/files/6tunnel.conf new file mode 100644 index 0000000000..efd8f817c7 --- /dev/null +++ b/ipv6/6scripts/files/6tunnel.conf @@ -0,0 +1,6 @@ +config 6tunnel + option tnlifname 'sixbone' + option remoteip4 '' + option localip4 '' + option localip6 '' + option prefix '/64' diff --git a/ipv6/6scripts/files/6tunnel.init b/ipv6/6scripts/files/6tunnel.init new file mode 100644 index 0000000000..cd4e1fc027 --- /dev/null +++ b/ipv6/6scripts/files/6tunnel.init @@ -0,0 +1,64 @@ +#!/bin/sh /etc/rc.common +START=46 +STOP=46 + +start_service() { + local section="$1" + + include /lib/network + scan_interfaces + config_load /var/state/network + + config_get LAN lan ifname + config_get tnlifname "$section" tnlifname + config_get remoteip4 "$section" remoteip4 + config_get localip4 "$section" localip4 + config_get localip6 "$section" localip6 + config_get prefix "$section" prefix + + ip tunnel add $tnlifname mode sit remote $remoteip4 local $localip4 ttl 255 + ifconfig $tnlifname up + ip addr add $localip6 dev $tnlifname + ip route add ::/0 dev $tnlifname + ip route add 2000::/3 dev $tnlifname + ip -6 addr add $prefix dev $LAN +} + +stop_service() { + local section="$1" + + include /lib/network + scan_interfaces + config_load /var/state/network + + config_get LAN lan ifname + config_get tnlifname "$section" tnlifname + config_get remoteip4 "$section" remoteip4 + config_get localip4 "$section" localip4 + config_get localip6 "$section" localip6 + config_get prefix "$section" prefix + + ip -6 addr del $prefix dev $LAN + ip -6 ro del 2000::/3 dev $tnlifname + ip -6 ro del ::/0 dev $tnlifname + ip addr del $localip6 dev $tnlifname + ifconfig $tnlifname down + ip tunnel del $tnlifname +} +start() { + if ! [ -f /proc/net/if_inet6 ]; then + echo "IPv6 not enabled, install kmod-ipv6"; + exit 1; + fi + if ! [ -x /sbin/ip ]; then + echo "ip is required to setup the tunnel"; + exit 1; + fi + config_load "6tunnel" + config_foreach start_service 6tunnel +} + +stop () { + config_load "6tunnel" + config_foreach stop_service 6tunnel +} -- 2.30.2