diff options
author | YOSHIFUJI Hideaki / 吉藤英明 <yoshfuji@linux-ipv6.org> | 2010-03-26 04:34:30 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-03-31 02:28:47 -0400 |
commit | de7737e056d65ad6b0f135f7bb24d86458af0d47 (patch) | |
tree | 97eb9cb157c92359a09fe54e30f635b113a1e5d8 /net/sctp/ipv6.c | |
parent | d57b8fb8a8f94bdf467a4435be7d8bbebf87fe2a (diff) |
sctp: Use ipv6_addr_diff() in sctp_v6_addr_match_len().
Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/sctp/ipv6.c')
-rw-r--r-- | net/sctp/ipv6.c | 15 |
1 files changed, 1 insertions, 14 deletions
diff --git a/net/sctp/ipv6.c b/net/sctp/ipv6.c index 240dceba06e5..216d88f27236 100644 --- a/net/sctp/ipv6.c +++ b/net/sctp/ipv6.c | |||
@@ -276,20 +276,7 @@ static struct dst_entry *sctp_v6_get_dst(struct sctp_association *asoc, | |||
276 | static inline int sctp_v6_addr_match_len(union sctp_addr *s1, | 276 | static inline int sctp_v6_addr_match_len(union sctp_addr *s1, |
277 | union sctp_addr *s2) | 277 | union sctp_addr *s2) |
278 | { | 278 | { |
279 | struct in6_addr *a1 = &s1->v6.sin6_addr; | 279 | return ipv6_addr_diff(&s1->v6.sin6_addr, &s2->v6.sin6_addr); |
280 | struct in6_addr *a2 = &s2->v6.sin6_addr; | ||
281 | int i, j; | ||
282 | |||
283 | for (i = 0; i < 4 ; i++) { | ||
284 | __be32 a1xora2; | ||
285 | |||
286 | a1xora2 = a1->s6_addr32[i] ^ a2->s6_addr32[i]; | ||
287 | |||
288 | if ((j = fls(ntohl(a1xora2)))) | ||
289 | return (i * 32 + 32 - j); | ||
290 | } | ||
291 | |||
292 | return (i*32); | ||
293 | } | 280 | } |
294 | 281 | ||
295 | /* Fills in the source address(saddr) based on the destination address(daddr) | 282 | /* Fills in the source address(saddr) based on the destination address(daddr) |