aboutsummaryrefslogtreecommitdiffstats
path: root/package/network/ipv6
diff options
context:
space:
mode:
authorSteven Barth <cyrus@openwrt.org>2015-07-13 21:51:38 +0000
committerSteven Barth <cyrus@openwrt.org>2015-07-13 21:51:38 +0000
commita06c1c810ebd6a89ae04ca4cd4c2229e0ec335a0 (patch)
tree58831fee53fd225a1ae4ecbf6e562a8c29c717a6 /package/network/ipv6
parentfab6209f71c6b1a9fd920aa39fc57cfe96fc6afa (diff)
downloadupstream-a06c1c810ebd6a89ae04ca4cd4c2229e0ec335a0.tar.gz
upstream-a06c1c810ebd6a89ae04ca4cd4c2229e0ec335a0.tar.bz2
upstream-a06c1c810ebd6a89ae04ca4cd4c2229e0ec335a0.zip
odhcp6c: fix some more compatibility issues
Signed-off-by: Steven Barth <steven@midlink.org> SVN-Revision: 46335
Diffstat (limited to 'package/network/ipv6')
-rwxr-xr-xpackage/network/ipv6/odhcp6c/files/dhcpv6.script15
1 files changed, 10 insertions, 5 deletions
diff --git a/package/network/ipv6/odhcp6c/files/dhcpv6.script b/package/network/ipv6/odhcp6c/files/dhcpv6.script
index 84eb706ebc..b8cbddb942 100755
--- a/package/network/ipv6/odhcp6c/files/dhcpv6.script
+++ b/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%%,*}"