odhcp6c: add preliminary support for MAP provisioning
[openwrt.git] / package / network / ipv6 / odhcp6c / files / dhcpv6.script
index 13732df..3599284 100755 (executable)
@@ -75,6 +75,10 @@ setup_interface () {
                fi
        done
 
+       proto_add_data
+       [ -n "$CER" ] && json_add_string cer "$CER"
+       proto_close_data
+
        proto_send_update "$INTERFACE"
 
        if [ -n "$AFTR_IP " -a -n "$IFACE_DSLITE" ]; then
@@ -84,6 +88,35 @@ setup_interface () {
                json_add_string proto "dslite"
                json_add_string peeraddr "$AFTR_IP"
                json_add_string tunlink "$INTERFACE"
+               [ -n "$ZONE_DSLITE" ] && json_add_string zone "$ZONE_DSLITE"
+               [ -n "$IFACE_DSLITE_DELEGATE" ] && json_add_boolean delegate "$IFACE_DSLITE_DELEGATE"
+               json_close_object
+               ubus call network add_dynamic "$(json_dump)"
+       fi
+
+       MAPTYPE=""
+       MAPRULE=""
+
+       if [ -n "$MAPE" ]; then
+               MAPTYPE="map-e"
+               MAPRULE="$MAPE"
+       elif [ -n "$MAPT" ]; then
+               MAPTYPE="map-t"
+               MAPRULE="$MAPT"
+       elif [ -n "$LW4O6" ]; then
+               MAPTYPE="lw4o6"
+               MAPRULE="$LW4O6"
+       fi
+
+       if [ -n "$IFACE_MAP" -a -n "$MAPTYPE" -a -n "$MAPRULE" ]; then
+               json_init
+               json_add_string name "$IFACE_MAP"
+               json_add_string ifname "@$INTERFACE"
+               json_add_string proto map
+               json_add_string type "$MAPTYPE"
+               json_add_string rule "$MAPRULE"
+               [ -n "$ZONE_MAP" ] && json_add_string zone "$ZONE_MAP"
+               [ -n "$IFACE_MAP_DELEGATE" ] && json_add_boolean delegate "$IFACE_MAP_DELEGATE"
                json_close_object
                ubus call network add_dynamic "$(json_dump)"
        fi