Convert DHCP->6rd and DHCPv6->DS-Lite autoconfig to dynamic interface
authorcyrus <cyrus@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Sun, 15 Dec 2013 19:38:53 +0000 (19:38 +0000)
committercyrus <cyrus@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Sun, 15 Dec 2013 19:38:53 +0000 (19:38 +0000)
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@39061 3c298f89-4303-0410-b956-a3cf2f4a3e73

package/network/config/netifd/Makefile
package/network/config/netifd/files/lib/netifd/dhcp.script
package/network/ipv6/6rd/Makefile
package/network/ipv6/6rd/files/6rd.sh
package/network/ipv6/odhcp6c/files/dhcpv6.script

index 5a110e9..1650b58 100644 (file)
@@ -1,7 +1,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=netifd
-PKG_VERSION:=2013-12-14
+PKG_VERSION:=2013-12-14.1
 PKG_RELEASE=$(PKG_SOURCE_VERSION)
 
 PKG_SOURCE_PROTO:=git
index 50163da..77b77f5 100755 (executable)
@@ -44,19 +44,18 @@ setup_interface () {
                ip6rd="${ip6rd#* }"
                local ip6rdbr="${ip6rd%% *}"
 
-uci -q batch <<-EOF >/dev/null
-set network.$IFACE6RD.proto=6rd
-set network.$IFACE6RD.auto=0
-set network.$IFACE6RD.peeraddr=$ip6rdbr
-set network.$IFACE6RD.ip4prefixlen=$v4mask
-set network.$IFACE6RD.ip6prefix=$ip6rdprefix
-set network.$IFACE6RD.ip6prefixlen=$ip6rdprefixlen
-commit network
-EOF
+               json_init
+               json_add_string name "$IFACE6RD"
+               json_add_string ifname "@$INTERFACE"
+               json_add_string proto "6rd"
+               json_add_string peeraddr "$ip6rdbr"
+               json_add_int ip4prefixlen "$v4mask"
+               json_add_string ip6prefix "$ip6rdprefix"
+               json_add_int ip6prefixlen "$ip6rdprefixlen"
+               json_add_string tunlink "$INTERFACE"
+               json_close_object
 
-               ifdown "$IFACE6RD"
-               /etc/init.d/network reload
-               ifup "$IFACE6RD"
+               ubus call network add_dynamic "$(json_dump)"
        fi
 
        # TODO
index c701596..5a48078 100644 (file)
@@ -8,7 +8,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=6rd
-PKG_VERSION:=4
+PKG_VERSION:=5
 PKG_RELEASE:=1
 
 include $(INCLUDE_DIR)/package.mk
index 7d6cc3e..a3935e1 100644 (file)
@@ -14,8 +14,8 @@ proto_6rd_setup() {
        local iface="$2"
        local link="6rd-$cfg"
 
-       local mtu ttl ipaddr peeraddr ip6prefix ip6prefixlen ip4prefixlen
-       json_get_vars mtu ttl ipaddr peeraddr ip6prefix ip6prefixlen ip4prefixlen
+       local mtu ttl ipaddr peeraddr ip6prefix ip6prefixlen ip4prefixlen tunlink
+       json_get_vars mtu ttl ipaddr peeraddr ip6prefix ip6prefixlen ip4prefixlen tunlink
 
        [ -z "$ip6prefix" -o -z "$peeraddr" ] && {
                proto_notify_error "$cfg" "MISSING_ADDRESS"
@@ -57,6 +57,7 @@ proto_6rd_setup() {
        json_add_string local "$ipaddr"
        json_add_string 6rd-prefix "$ip6prefix/$ip6prefixlen"
        json_add_string 6rd-relay-prefix "$ip4prefix/$ip4prefixlen"
+       [ -n "$tunlink" ] && json_add_string link "$tunlink"
        proto_close_tunnel
 
        proto_send_update "$cfg"
@@ -77,6 +78,7 @@ proto_6rd_init_config() {
        proto_config_add_string "ip6prefix"
        proto_config_add_string "ip6prefixlen"
        proto_config_add_string "ip4prefixlen"
+       proto_config_add_string "tunlink"
 }
 
 [ -n "$INCLUDE_ONLY" ] || {
index 1d5f521..8bcf766 100755 (executable)
@@ -78,17 +78,14 @@ setup_interface () {
        proto_send_update "$INTERFACE"
 
        if [ -n "$AFTR_IP " -a -n "$IFACE_DSLITE" ]; then
-uci -q batch <<-EOF >/dev/null
-set network.$IFACE_DSLITE.proto=dslite
-set network.$IFACE_DSLITE.auto=0
-set network.$IFACE_DSLITE.peeraddr=$AFTR_IP
-set network.$IFACE_DSLITE.tunlink=$INTERFACE
-commit network
-EOF
-
-               ifdown "$IFACE_DSLITE"
-               /etc/init.d/network reload
-               ifup "$IFACE_DSLITE"
+               json_init
+               json_add_string name "$IFACE_DSLITE"
+               json_add_string ifname "@$INTERFACE"
+               json_add_string proto "dslite"
+               json_add_string peeraddr "$AFTR_IP"
+               json_add_string tunlink "$INTERFACE"
+               json_close_object
+               ubus call network add_dynamic "$(json_dump)"
        fi
 
        # TODO: $SNTP_IP $SIP_IP $SNTP_FQDN $SIP_DOMAIN