From c46402e106ee924e3861f9685d6187552e7f8f2b Mon Sep 17 00:00:00 2001
From: cyrus <cyrus@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Date: Wed, 10 Jun 2015 15:54:24 +0000
Subject: [PATCH] odhcp6c: work around RIOs matching PIOs as sent by some apple
 routers

Thanks to Mikael Abrahamsson for reporting.

Signed-off-by: Steven Barth <steven@midlink.org>

git-svn-id: svn://svn.openwrt.org/openwrt/trunk@45941 3c298f89-4303-0410-b956-a3cf2f4a3e73
---
 package/network/ipv6/odhcp6c/Makefile            | 2 +-
 package/network/ipv6/odhcp6c/files/dhcpv6.script | 4 ++++
 2 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/package/network/ipv6/odhcp6c/Makefile b/package/network/ipv6/odhcp6c/Makefile
index a90f5ce162..d0935eb8b6 100644
--- a/package/network/ipv6/odhcp6c/Makefile
+++ b/package/network/ipv6/odhcp6c/Makefile
@@ -8,7 +8,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=odhcp6c
-PKG_VERSION:=2015-06-09
+PKG_VERSION:=2015-06-10
 PKG_RELEASE=$(PKG_SOURCE_VERSION)
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
diff --git a/package/network/ipv6/odhcp6c/files/dhcpv6.script b/package/network/ipv6/odhcp6c/files/dhcpv6.script
index 650c9b2e8f..84eb706ebc 100755
--- a/package/network/ipv6/odhcp6c/files/dhcpv6.script
+++ b/package/network/ipv6/odhcp6c/files/dhcpv6.script
@@ -88,6 +88,10 @@ setup_interface () {
 
 		if [ -z "$gw" ]; then
 			proto_add_ipv6_route "$addr" "$mask" "$gw" "$metric" "$valid"
+
+			# 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"
 		else
 			for prefix in $PREFIXES $ADDRESSES; do
 				local paddr="${prefix%%,*}"
-- 
GitLab