odhcp6c: add workaround for broken extendprefix scenario
[openwrt/openwrt.git] / package / network / ipv6 / odhcp6c / files / dhcpv6.script
index ab0b55675515425a0bdff04e2efc3faf0e5f445c..03efaf7211bf07bd9e44a020b790dcbd83aec7fd 100755 (executable)
@@ -81,6 +81,23 @@ setup_interface () {
                # RFC 7278
                if [ "$mask" -eq 64 -a -z "$PREFIXES" -a -n "$EXTENDPREFIX" ]; then
                        proto_add_ipv6_prefix "$addr/$mask,$preferred,$valid"
+
+                       local raroutes=""
+                       for route in $RA_ROUTES; do
+                               local prefix="${route%%/*}"
+                               local entry="${route#*/}"
+                               local pmask="${entry%%,*}"
+                               entry="${entry#*,}"
+                               local gw="${entry%%,*}"
+
+                               [ -z "$gw" -a "$mask" = "$pmask" ] && {
+                                       case "$addr" in
+                                               "${prefix%*::}"*) continue;;
+                                       esac
+                               }
+                               raroutes="$raroutes $route"
+                       done
+                       RA_ROUTES="$raroutes"
                fi
        done