From 6db4ee78fcb15715e8e3f5105f816d34af65246b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?YOSHIFUJI=20Hideaki=20/=20=E5=90=89=E8=97=A4=E8=8B=B1?= =?UTF-8?q?=E6=98=8E?= Date: Mon, 10 Sep 2012 18:41:07 +0000 Subject: [PATCH] --- yaml --- r: 327863 b: refs/heads/master c: 91b4b04ff85de9086c959138d747d2808cc83a46 h: refs/heads/master i: 327861: 6f97930bd20d56b68687d570bf7bf458c4dec3e0 327859: 915e4f4349b042135376bd832780a8589dba3c37 327855: f5541b3282ddc9d7d6be0205157f55f77189d97b v: v3 --- [refs] | 2 +- trunk/net/ipv6/addrconf.c | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 629ee93b6928..4e82a2e2c2f8 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 417962a02ba283c8532d61474dc08e0a966cd269 +refs/heads/master: 91b4b04ff85de9086c959138d747d2808cc83a46 diff --git a/trunk/net/ipv6/addrconf.c b/trunk/net/ipv6/addrconf.c index 1237d5d037d8..5fd8ec895c8b 100644 --- a/trunk/net/ipv6/addrconf.c +++ b/trunk/net/ipv6/addrconf.c @@ -1070,8 +1070,10 @@ static int ipv6_get_saddr_eval(struct net *net, break; case IPV6_SADDR_RULE_PREFIX: /* Rule 8: Use longest matching prefix */ - score->matchlen = ret = ipv6_addr_diff(&score->ifa->addr, - dst->addr); + ret = ipv6_addr_diff(&score->ifa->addr, dst->addr); + if (ret > score->ifa->prefix_len) + ret = score->ifa->prefix_len; + score->matchlen = ret; break; default: ret = 0;