diff options
Diffstat (limited to 'net')
-rw-r--r-- | net/ipv6/addrconf.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c index 101e0e70ba27..18e3a9825d81 100644 --- a/net/ipv6/addrconf.c +++ b/net/ipv6/addrconf.c | |||
@@ -1125,6 +1125,11 @@ int ipv6_dev_get_saddr(struct net_device *daddr_dev, | |||
1125 | if (hiscore.rule < 7) | 1125 | if (hiscore.rule < 7) |
1126 | hiscore.rule++; | 1126 | hiscore.rule++; |
1127 | #endif | 1127 | #endif |
1128 | |||
1129 | /* Skip rule 8 for orchid -> non-orchid address pairs. */ | ||
1130 | if (ipv6_addr_orchid(&ifa->addr) && !ipv6_addr_orchid(daddr)) | ||
1131 | continue; | ||
1132 | |||
1128 | /* Rule 8: Use longest matching prefix */ | 1133 | /* Rule 8: Use longest matching prefix */ |
1129 | if (hiscore.rule < 8) { | 1134 | if (hiscore.rule < 8) { |
1130 | hiscore.matchlen = ipv6_addr_diff(&ifa_result->addr, daddr); | 1135 | hiscore.matchlen = ipv6_addr_diff(&ifa_result->addr, daddr); |