This patch depends on "Pass source address to proto_add_ipv4_route".
[openwrt/staging/chunkeey.git] / package / network / config / netifd / files / lib / netifd / dhcp.script
index 0097a96f88613723abd4a00c561a367bede22157..17e22af7959b2b80d5d66c94858424270e477c57 100755 (executable)
@@ -20,7 +20,7 @@ setup_interface () {
        # TODO: apply $broadcast
 
        for i in $router; do
-               proto_add_ipv4_route 0.0.0.0 0 "$i"
+               proto_add_ipv4_route 0.0.0.0 0 "$i" "$ip"
        done
 
        # CIDR STATIC ROUTES (rfc3442)
@@ -33,8 +33,44 @@ setup_interface () {
        for domain in $domain; do
                proto_add_dns_search "$domain"
        done
+
+       proto_add_data
+       [ -n "$ZONE" ] && json_add_string zone "$ZONE"
+       proto_close_data
+
        proto_send_update "$INTERFACE"
 
+
+       if [ "$IFACE6RD" != 0 -a -n "$ip6rd" ]; then
+               local v4mask="${ip6rd%% *}"
+               ip6rd="${ip6rd#* }"
+               local ip6rdprefixlen="${ip6rd%% *}"
+               ip6rd="${ip6rd#* }"
+               local ip6rdprefix="${ip6rd%% *}"
+               ip6rd="${ip6rd#* }"
+               local ip6rdbr="${ip6rd%% *}"
+
+               [ -n "$ZONE" ] || ZONE=$(fw3 -q network $INTERFACE)
+               [ -z "$IFACE6RD" -o "$IFACE6RD" = 1 ] && IFACE6RD=${INTERFACE}_6rd
+
+               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"
+               [ -n "$IFACE6RD_DELEGATE" ] && json_add_boolean delegate "$IFACE6RD_DELEGATE"
+               [ -n "$ZONE6RD" ] || ZONE6RD=$ZONE
+               [ -n "$ZONE6RD" ] && json_add_string zone "$ZONE6RD"
+               [ -n "$MTU6RD" ] && json_add_string mtu "$MTU6RD"
+               json_close_object
+
+               ubus call network add_dynamic "$(json_dump)"
+       fi
+
        # TODO
        # [ -n "$ntpsrv" ] &&   change_state network "$ifc" lease_ntpsrv "$ntpsrv"
        # [ -n "$timesvr" ] &&  change_state network "$ifc" lease_timesrv "$timesvr"
@@ -56,4 +92,7 @@ case "$1" in
        ;;
 esac
 
+# user rules
+[ -f /etc/udhcpc.user ] && . /etc/udhcpc.user
+
 exit 0