]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - net/ipv6/addrconf.c
[IPV6]: Fix source address selection for ORCHID addresses
[linux-2.6-omap-h63xx.git] / net / ipv6 / addrconf.c
index 101e0e70ba276966a281b99601c17cfaf648f0c5..18e3a9825d8124347d26957e100e5d527a13075e 100644 (file)
@@ -1125,6 +1125,11 @@ int ipv6_dev_get_saddr(struct net_device *daddr_dev,
                        if (hiscore.rule < 7)
                                hiscore.rule++;
 #endif
+
+                       /* Skip rule 8 for orchid -> non-orchid address pairs. */
+                       if (ipv6_addr_orchid(&ifa->addr) && !ipv6_addr_orchid(daddr))
+                               continue;
+
                        /* Rule 8: Use longest matching prefix */
                        if (hiscore.rule < 8) {
                                hiscore.matchlen = ipv6_addr_diff(&ifa_result->addr, daddr);