X-Git-Url: https://git.archive.openwrt.org/?p=openwrt.git;a=blobdiff_plain;f=package%2Fnetwork%2Fipv6%2Fodhcp6c%2Ffiles%2Fdhcpv6.script;h=46980cb57dfec46f2d0babe14f7a6aab89fea0c6;hp=33f6d9b4cb9f391b2d16fd2cc83291e8d6e18662;hb=54eb6ade49863de101866981e917e732fc75d4e3;hpb=fbcdec9c92e669bac1f95bc78b1ebff97eee7f00 diff --git a/package/network/ipv6/odhcp6c/files/dhcpv6.script b/package/network/ipv6/odhcp6c/files/dhcpv6.script index 33f6d9b4cb..46980cb57d 100755 --- a/package/network/ipv6/odhcp6c/files/dhcpv6.script +++ b/package/network/ipv6/odhcp6c/files/dhcpv6.script @@ -5,6 +5,8 @@ setup_interface () { local device="$1" + local prefsig="" + local addrsig="" proto_init_update "*" 1 # Merge RA-DNS @@ -34,6 +36,7 @@ setup_interface () { for prefix in $PREFIXES; do proto_add_ipv6_prefix "$prefix" + prefsig="$prefsig ${prefix%%,*}" local entry="${prefix#*/}" entry="${entry#*,}" entry="${entry#*,}" @@ -68,11 +71,17 @@ setup_interface () { local valid="${entry%%,*}" proto_add_ipv6_address "$addr" "$mask" "$preferred" "$valid" 1 + addrsig="$addrsig $addr/$mask" if [ -z "$RA_ADDRESSES" -a -z "$RA_ROUTES" -a \ -z "$RA_DNS" -a "$FAKE_ROUTES" = 1 ]; then RA_ROUTES="::/0,$SERVER,$valid,4096" fi + + # RFC 7278 + if [ "$mask" -eq 64 -a -z "$PREFIXES" -a -n "$EXTENDPREFIX" ]; then + proto_add_ipv6_prefix "$addr/$mask,$preferred,$valid" + fi done for entry in $RA_ROUTES; do @@ -136,6 +145,8 @@ setup_interface () { json_add_string ifname "@$INTERFACE" json_add_string proto map json_add_string type "$MAPTYPE" + json_add_string _prefsig "$prefsig" + [ "$MAPTYPE" = lw4o6 ] && json_add_string _addrsig "$addrsig" json_add_string rule "$MAPRULE" json_add_string tunlink "$INTERFACE" [ -n "$ZONE_MAP" ] || ZONE_MAP=$ZONE @@ -163,6 +174,7 @@ setup_interface () { json_add_string ifname "@$INTERFACE" json_add_string proto "464xlat" json_add_string tunlink "$INTERFACE" + json_add_string _addrsig "$addrsig" [ -n "$ZONE_464XLAT" ] || ZONE_464XLAT=$ZONE [ -n "$ZONE_464XLAT" ] && json_add_string zone "$ZONE_464XLAT" [ -n "$IFACE_464XLAT_DELEGATE" ] && json_add_boolean delegate "$IFACE_464XLAT_DELEGATE" @@ -173,7 +185,7 @@ setup_interface () { # Apply IPv6 / ND configuration HOPLIMIT=$(cat /proc/sys/net/ipv6/conf/$device/hop_limit) [ -n "$RA_HOPLIMIT" -a -n "$HOPLIMIT" ] && [ "$RA_HOPLIMIT" -gt "$HOPLIMIT" ] && echo "$RA_HOPLIMIT" > /proc/sys/net/ipv6/conf/$device/hop_limit - [ -n "$RA_MTU" ] && [ "$RA_MTU" -gt 0 ] && echo "$RA_MTU" > /proc/sys/net/ipv6/conf/$device/mtu + [ -n "$RA_MTU" ] && [ "$RA_MTU" -ge 1280 ] && echo "$RA_MTU" > /proc/sys/net/ipv6/conf/$device/mtu 2>/dev/null [ -n "$RA_REACHABLE" ] && [ "$RA_REACHABLE" -gt 0 ] && echo "$RA_REACHABLE" > /proc/sys/net/ipv6/neigh/$device/base_reachable_time_ms [ -n "$RA_RETRANSMIT" ] && [ "$RA_RETRANSMIT" -gt 0 ] && echo "$RA_RETRANSMIT" > /proc/sys/net/ipv6/neigh/$device/retrans_time_ms