ipv6-support:
authorcyrus <cyrus@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Thu, 27 Dec 2012 14:10:17 +0000 (14:10 +0000)
committercyrus <cyrus@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Thu, 27 Dec 2012 14:10:17 +0000 (14:10 +0000)
* Automatically detect and propagate MTU from upstream interfaces
* Add site-border feature (RFC 6204, ULA-4)
* Fix a typo

git-svn-id: svn://svn.openwrt.org/openwrt/trunk@34896 3c298f89-4303-0410-b956-a3cf2f4a3e73

package/network/ipv6/ipv6-support/Makefile
package/network/ipv6/ipv6-support/files/dhcpv6.sh
package/network/ipv6/ipv6-support/files/network6.config
package/network/ipv6/ipv6-support/files/support.sh

index 76c97c2..a8df354 100644 (file)
@@ -8,7 +8,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=ipv6-support
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=ipv6-support
-PKG_VERSION:=2012-12-23
+PKG_VERSION:=2012-12-27
 PKG_RELEASE:=1
 
 include $(INCLUDE_DIR)/package.mk
 PKG_RELEASE:=1
 
 include $(INCLUDE_DIR)/package.mk
index 7e69b3f..e9e88cf 100755 (executable)
@@ -15,11 +15,11 @@ resolve_network network "$device"
 
 # Announce prefixes
 for prefix in $PREFIXES; do
 
 # Announce prefixes
 for prefix in $PREFIXES; do
-       announce_prefix "$prefix" "$network"
+       announce_prefix "$prefix" "$network" "$device"
 done
 
 for prefix in $PREFIXES_LOST; do
 done
 
 for prefix in $PREFIXES_LOST; do
-       announce_prefix "$prefix" "$network" delprefix
+       announce_prefix "$prefix" "$network" "$device" delprefix
 done
 
 
 done
 
 
index ce85dbe..7385eeb 100644 (file)
@@ -1,5 +1,6 @@
 config global global
        option ula_prefix       auto
 config global global
        option ula_prefix       auto
+       option site_border      1
 
 config interface wan
        option mode             dhcpv6
 
 config interface wan
        option mode             dhcpv6
index 261ff1e..405cc32 100644 (file)
@@ -11,7 +11,7 @@ conf_get() {
        local __return="$1"
        local __device="$2"
        local __option="$3"
        local __return="$1"
        local __device="$2"
        local __option="$3"
-       local __value=$(cat "/proc/sys/net/ipv6/conf/$device/$option")
+       local __value=$(cat "/proc/sys/net/ipv6/conf/$__device/$__option")
        eval "$__return=$__value"
 }
 
        eval "$__return=$__value"
 }
 
@@ -110,8 +110,9 @@ setup_npt_chain() {
 announce_prefix() {
        local prefix="$1"
        local network="$2"
 announce_prefix() {
        local prefix="$1"
        local network="$2"
-       local cmd="$3"
-       local type="$4"
+       local device="$3"
+       local cmd="$4"
+       local type="$5"
 
        local addr=$(echo "$prefix" | cut -d/ -f1)
        local rem=$(echo "$prefix" | cut -d/ -f2)
 
        local addr=$(echo "$prefix" | cut -d/ -f1)
        local rem=$(echo "$prefix" | cut -d/ -f2)
@@ -142,6 +143,12 @@ announce_prefix() {
 
                [ "$prefix_action" == "npt" ] && msg="$msg"', "npt": 1'
                [ "$type" == "secondary" ] && msg="$msg"', "secondary": 1'
 
                [ "$prefix_action" == "npt" ] && msg="$msg"', "npt": 1'
                [ "$type" == "secondary" ] && msg="$msg"', "secondary": 1'
+
+               # Detect MTU
+               local mtu
+               conf_get mtu "$device" mtu
+               msg="$msg"', "mtu": '"$mtu"
+
                ubus call 6distributed "$cmd" "$msg}"
        }
 
                ubus call 6distributed "$cmd" "$msg}"
        }
 
@@ -364,6 +371,7 @@ disable_interface() {
 enable_ula_prefix() {
        local network="$1"
        local ula="$2"
 enable_ula_prefix() {
        local network="$1"
        local ula="$2"
+       local device="$3"
        [ -z "$ula" ] && ula="global"
 
        # ULA-integration
        [ -z "$ula" ] && ula="global"
 
        # ULA-integration
@@ -392,7 +400,7 @@ enable_ula_prefix() {
        }
 
        # Announce ULA
        }
 
        # Announce ULA
-       [ -n "$ula_prefix" ] && announce_prefix "$ula_prefix" "$network" newprefix secondary
+       [ -n "$ula_prefix" ] && announce_prefix "$ula_prefix" "$network" "$device" newprefix secondary
 }
 
 
 }
 
 
@@ -410,12 +418,12 @@ enable_static() {
        conf_set "$device" forwarding 1
 
        # Enable ULA
        conf_set "$device" forwarding 1
 
        # Enable ULA
-       enable_ula_prefix "$network"
+       enable_ula_prefix "$network" global "$device"
        # Compatibility (deprecated)
        # Compatibility (deprecated)
-       enable_ula_prefix "$network" "$network"
+       enable_ula_prefix "$network" "$network" "$device"
 
        # Announce all static prefixes
 
        # Announce all static prefixes
-       config_list_foreach "$network" static_prefix announce_prefix $network
+       config_list_foreach "$network" static_prefix announce_prefix "$network" "$device"
 
        # start relay if there are forced relay members
        restart_relay "$network"
 
        # start relay if there are forced relay members
        restart_relay "$network"
@@ -506,7 +514,7 @@ enable_6to4() {
        local prefix=""
        network_get_ipaddr6 prefix "$network"
 
        local prefix=""
        network_get_ipaddr6 prefix "$network"
 
-       announce_prefix "$prefix/$prefixlen" "$network"
+       announce_prefix "$prefix/$prefixlen" "$network" "$device"
 }
 
 
 }
 
 
@@ -529,4 +537,11 @@ enable_interface()
        [ "$mode" == "router" ] && enable_router "$network" "$device"
        [ "$mode" == "6to4" -o "$mode" == "6rd" ] && enable_6to4 "$network" "$device" "$mode"
        [ "$mode" == "relay" ] && restart_master_relay "$network" forced
        [ "$mode" == "router" ] && enable_router "$network" "$device"
        [ "$mode" == "6to4" -o "$mode" == "6rd" ] && enable_6to4 "$network" "$device" "$mode"
        [ "$mode" == "relay" ] && restart_master_relay "$network" forced
+
+       # Create / Delete site border
+       local site_border
+       local cmd="delulaborder"
+       config_get_bool site_border global site_border 0
+       [ "$site_border" == "1" ] && cmd="newulaborder"
+       ubus call 6distributed "$cmd"
 }
 }