Kaynağa Gözat

odhcp6c: fix some more compatibility issues

Signed-off-by: Steven Barth <[email protected]>

SVN-Revision: 46335
Steven Barth 10 yıl önce
ebeveyn
işleme
a06c1c810e
1 değiştirilmiş dosya ile 10 ekleme ve 5 silme
  1. 10 5
      package/network/ipv6/odhcp6c/files/dhcpv6.script

+ 10 - 5
package/network/ipv6/odhcp6c/files/dhcpv6.script

@@ -76,6 +76,7 @@ setup_interface () {
 	done
 
 	for entry in $RA_ROUTES; do
+		local duplicate=0
 		local addr="${entry%%/*}"
 		entry="${entry#*/}"
 		local mask="${entry%%,*}"
@@ -86,12 +87,16 @@ setup_interface () {
 		entry="${entry#*,}"
 		local metric="${entry%%,*}"
 
-		if [ -z "$gw" ]; then
-			proto_add_ipv6_route "$addr" "$mask" "$gw" "$metric" "$valid"
+		for xentry in $RA_ROUTES; do
+			local xprefix="${xentry%%,*}"
+			xentry="${xentry#*,}"
+			local xgw="${xentry%%,*}"
 
-			# work around if there is a PIO matching a RIO
-			# Linux seems to prefer source-dest over dest-only even if metric is higher
-			proto_add_ipv6_route "$addr" "$mask" "$gw" "$metric" "$valid" "$addr/$mask"
+			[ -n "$gw" -a -z "$xgw" -a "$addr/$mask" = "$xprefix" ] && duplicate=1
+		done
+
+		if [ -z "$gw" -o "$duplicate" = 1 ]; then
+			proto_add_ipv6_route "$addr" "$mask" "$gw" "$metric" "$valid"
 		else
 			for prefix in $PREFIXES $ADDRESSES; do
 				local paddr="${prefix%%,*}"