X-Git-Url: https://git.enpas.org/?a=blobdiff_plain;f=package%2Fnetwork%2Fipv6%2Fodhcp6c%2Ffiles%2Fdhcpv6.script;h=563c9ada0d03756727f2172804ee60eb6d4d6dd3;hb=bd86ef7310d395680673763df89cb4d8b4e7f020;hp=1f019353d5011c6dfa99cc019c82b86d73503707;hpb=992bb055a66b9de1597af6f0af26ae2bdda02518;p=openwrt.git diff --git a/package/network/ipv6/odhcp6c/files/dhcpv6.script b/package/network/ipv6/odhcp6c/files/dhcpv6.script index 1f019353d5..563c9ada0d 100755 --- a/package/network/ipv6/odhcp6c/files/dhcpv6.script +++ b/package/network/ipv6/odhcp6c/files/dhcpv6.script @@ -28,6 +28,8 @@ setup_interface () { proto_add_ipv6_prefix "$prefix" done + [ -n "$USERPREFIX" ] && proto_add_ipv6_prefix "$USERPREFIX" + # Merge addresses for entry in $RA_ADDRESSES; do local duplicate=0 @@ -62,11 +64,31 @@ setup_interface () { entry="${entry#*,}" local metric="${entry%%,*}" - proto_add_ipv6_route "$addr" "$mask" "$gw" "$metric" "$valid" + if [ -z "$SOURCE_ROUTING" -o -z "$gw" ]; then + proto_add_ipv6_route "$addr" "$mask" "$gw" "$metric" "$valid" + else + proto_add_ipv6_route "$addr" "$mask" "$gw" "$metric" "$valid" "::/128" + for prefix in $PREFIXES $ADDRESSES; do + local paddr="${prefix%%,*}" + proto_add_ipv6_route "$addr" "$mask" "$gw" "$metric" "$valid" "$paddr" + done + fi done proto_send_update "$INTERFACE" + if [ -n "$AFTR_IP " -a -n "$IFACE_DSLITE" ]; then + 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" + [ -n "$IFACE_DSLITE_DELEGATE" ] && json_add_boolean delegate "$IFACE_DSLITE_DELEGATE" + json_close_object + ubus call network add_dynamic "$(json_dump)" + fi + # TODO: $SNTP_IP $SIP_IP $SNTP_FQDN $SIP_DOMAIN } @@ -76,7 +98,11 @@ teardown_interface() { } case "$2" in - informed|bound|updated|rebound|ra-updated) + bound) + teardown_interface "$1" + setup_interface "$1" + ;; + informed|updated|rebound|ra-updated) setup_interface "$1" ;; started|stopped|unbound)