Hello.
Here're changeset at:
bk://bk.skbuff.net:20610/linux-2.6-inet6-misc/
Note:
1. Bug#3717 will be closed next week, after my returning to Japan.
2. Since there're some points to retain ipv6_addr_cmp(),
let's introduce fast ipv6_addr_equal() and use it
where appropriate. (please double check.)
3. I'm not so worring about alignment because
we already have ipv6_addr_any() etc.
If you're unhappy with this, let me re-create changesets.
Thank you.
HEADLINES
---------
ChangeSet@xxxxxx, 2004-11-09 14:07:14+09:00, yoshfuji@xxxxxxxxxxxxxx
[IPV6] Fix unresolved symbol timer_bug_msg.
ChangeSet@xxxxxx, 2004-11-10 15:50:50+09:00, yoshfuji@xxxxxxxxxxxxxx
[IPV6] introduce lightweight IPv6 address comparison function.
ChangeSet@xxxxxx, 2004-11-10 15:57:15+09:00, yoshfuji@xxxxxxxxxxxxxx
[IPV6] Use ipv6_addr_equal() where appropriate.
DIFFSTATS
---------
include/net/ipv6.h | 9 +++++++++
include/net/tcp.h | 16 +++++++++++-----
net/ipv4/tcp_timer.c | 7 ++++++-
net/ipv6/addrconf.c | 10 +++++-----
net/ipv6/anycast.c | 10 +++++-----
net/ipv6/datagram.c | 2 +-
net/ipv6/ip6_fib.c | 4 ++--
net/ipv6/ip6_flowlabel.c | 2 +-
net/ipv6/ip6_output.c | 4 ++--
net/ipv6/ip6_tunnel.c | 10 +++++-----
net/ipv6/mcast.c | 37 ++++++++++++++++++-------------------
net/ipv6/ndisc.c | 2 +-
net/ipv6/netfilter/ip6_queue.c | 4 ++--
net/ipv6/netfilter/ip6t_rt.c | 4 ++--
net/ipv6/raw.c | 8 ++++----
net/ipv6/reassembly.c | 8 ++++----
net/ipv6/route.c | 8 ++++----
net/ipv6/tcp_ipv6.c | 16 ++++++++--------
net/ipv6/udp.c | 12 ++++++------
net/ipv6/xfrm6_policy.c | 6 +++---
net/ipv6/xfrm6_state.c | 6 +++---
net/sctp/ipv6.c | 2 +-
22 files changed, 103 insertions(+), 84 deletions(-)
CHANGESETS
----------
ChangeSet@xxxxxx, 2004-11-09 14:07:14+09:00, yoshfuji@xxxxxxxxxxxxxx
[IPV6] Fix unresolved symbol timer_bug_msg.
Closed: Bug#3717 (by John Goerzen <goerzen@xxxxxxxxxxxx>)
Signed-off-by: Hideaki YOSHIFUJI <yoshfuji@xxxxxxxxxxxxxx>
diff -Nru a/include/net/tcp.h b/include/net/tcp.h
--- a/include/net/tcp.h 2004-11-10 16:44:58 +09:00
+++ b/include/net/tcp.h 2004-11-10 16:44:58 +09:00
@@ -965,7 +965,9 @@
extern unsigned int tcp_sync_mss(struct sock *sk, u32 pmtu);
extern unsigned int tcp_current_mss(struct sock *sk, int large);
-extern const char timer_bug_msg[];
+#ifdef TCP_DEBUG
+extern const char tcp_timer_bug_msg[];
+#endif
/* tcp_diag.c */
extern void tcp_get_info(struct sock *, struct tcp_info *);
@@ -998,7 +1000,9 @@
#endif
break;
default:
- printk(timer_bug_msg);
+#ifdef TCP_DEBUG
+ printk(tcp_timer_bug_msg);
+#endif
return;
};
@@ -1033,7 +1037,9 @@
break;
default:
- printk(timer_bug_msg);
+#ifdef TCP_DEBUG
+ printk(tcp_timer_bug_msg);
+#endif
};
}
diff -Nru a/net/ipv4/tcp_timer.c b/net/ipv4/tcp_timer.c
--- a/net/ipv4/tcp_timer.c 2004-11-10 16:44:58 +09:00
+++ b/net/ipv4/tcp_timer.c 2004-11-10 16:44:58 +09:00
@@ -36,7 +36,9 @@
static void tcp_delack_timer(unsigned long);
static void tcp_keepalive_timer (unsigned long data);
-const char timer_bug_msg[] = KERN_DEBUG "tcpbug: unknown timer value\n";
+#ifdef TCP_DEBUG
+const char tcp_timer_bug_msg[] = KERN_DEBUG "tcpbug: unknown timer value\n";
+#endif
/*
* Using different timers for retransmit, delayed acks and probes
@@ -651,3 +653,6 @@
EXPORT_SYMBOL(tcp_delete_keepalive_timer);
EXPORT_SYMBOL(tcp_init_xmit_timers);
EXPORT_SYMBOL(tcp_reset_keepalive_timer);
+#ifdef TCP_DEBUG
+EXPORT_SYMBOL(tcp_timer_bug_msg);
+#endif
ChangeSet@xxxxxx, 2004-11-10 15:50:50+09:00, yoshfuji@xxxxxxxxxxxxxx
[IPV6] introduce lightweight IPv6 address comparison function.
It is not optimal to use ipv6_addr_cmp() for simple address
comparison, which checks if two addresses are equal.
Based on idea from Dave Craig <dwcraig@xxxxxxxxxxxx>.
Signed-off-by: Hideaki YOSHIFUJI <yoshfuji@xxxxxxxxxxxxxx>
diff -Nru a/include/net/ipv6.h b/include/net/ipv6.h
--- a/include/net/ipv6.h 2004-11-10 16:45:02 +09:00
+++ b/include/net/ipv6.h 2004-11-10 16:45:02 +09:00
@@ -296,6 +296,15 @@
}
#endif
+static inline int ipv6_addr_equal(const struct in6_addr *a1,
+ const struct in6_addr *a2)
+{
+ return (a1->s6_addr32[0] == a2->s6_addr32[0] &&
+ a1->s6_addr32[1] == a2->s6_addr32[1] &&
+ a1->s6_addr32[2] == a2->s6_addr32[2] &&
+ a1->s6_addr32[3] == a2->s6_addr32[3]);
+}
+
static inline int ipv6_addr_any(const struct in6_addr *a)
{
return ((a->s6_addr32[0] | a->s6_addr32[1] |
ChangeSet@xxxxxx, 2004-11-10 15:57:15+09:00, yoshfuji@xxxxxxxxxxxxxx
[IPV6] Use ipv6_addr_equal() where appropriate.
Signed-off-by: Hideaki YOSHIFUJI <yoshfuji@xxxxxxxxxxxxxx>
diff -Nru a/include/net/tcp.h b/include/net/tcp.h
--- a/include/net/tcp.h 2004-11-10 16:45:07 +09:00
+++ b/include/net/tcp.h 2004-11-10 16:45:07 +09:00
@@ -361,8 +361,8 @@
#define TCP_IPV6_MATCH(__sk, __saddr, __daddr, __ports, __dif) \
(((*((__u32 *)&(inet_sk(__sk)->dport)))== (__ports)) && \
((__sk)->sk_family == AF_INET6) && \
- !ipv6_addr_cmp(&inet6_sk(__sk)->daddr, (__saddr)) && \
- !ipv6_addr_cmp(&inet6_sk(__sk)->rcv_saddr, (__daddr)) && \
+ ipv6_addr_equal(&inet6_sk(__sk)->daddr, (__saddr)) && \
+ ipv6_addr_equal(&inet6_sk(__sk)->rcv_saddr, (__daddr)) && \
(!((__sk)->sk_bound_dev_if) || ((__sk)->sk_bound_dev_if == (__dif))))
/* These can have wildcards, don't try too hard. */
diff -Nru a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c
--- a/net/ipv6/addrconf.c 2004-11-10 16:45:07 +09:00
+++ b/net/ipv6/addrconf.c 2004-11-10 16:45:07 +09:00
@@ -921,7 +921,7 @@
read_lock_bh(&addrconf_hash_lock);
for(ifp = inet6_addr_lst[hash]; ifp; ifp=ifp->lst_next) {
- if (ipv6_addr_cmp(&ifp->addr, addr) == 0 &&
+ if (ipv6_addr_equal(&ifp->addr, addr) &&
!(ifp->flags&IFA_F_TENTATIVE)) {
if (dev == NULL || ifp->idev->dev == dev ||
!(ifp->scope&(IFA_LINK|IFA_HOST) || strict))
@@ -940,7 +940,7 @@
read_lock_bh(&addrconf_hash_lock);
for(ifp = inet6_addr_lst[hash]; ifp; ifp=ifp->lst_next) {
- if (ipv6_addr_cmp(&ifp->addr, addr) == 0) {
+ if (ipv6_addr_equal(&ifp->addr, addr)) {
if (dev == NULL || ifp->idev->dev == dev)
break;
}
@@ -956,7 +956,7 @@
read_lock_bh(&addrconf_hash_lock);
for(ifp = inet6_addr_lst[hash]; ifp; ifp=ifp->lst_next) {
- if (ipv6_addr_cmp(&ifp->addr, addr) == 0) {
+ if (ipv6_addr_equal(&ifp->addr, addr)) {
if (dev == NULL || ifp->idev->dev == dev ||
!(ifp->scope&(IFA_LINK|IFA_HOST) || strict)) {
in6_ifa_hold(ifp);
@@ -992,7 +992,7 @@
return 1;
if (sk2_rcv_saddr6 &&
- !ipv6_addr_cmp(sk_rcv_saddr6, sk2_rcv_saddr6))
+ ipv6_addr_equal(sk_rcv_saddr6, sk2_rcv_saddr6))
return 1;
if (addr_type == IPV6_ADDR_MAPPED &&
@@ -1630,7 +1630,7 @@
read_lock_bh(&idev->lock);
for (ifp = idev->addr_list; ifp; ifp=ifp->if_next) {
if (ifp->prefix_len == plen &&
- (!memcmp(pfx, &ifp->addr, sizeof(struct in6_addr)))) {
+ ipv6_addr_equal(pfx, &ifp->addr)) {
in6_ifa_hold(ifp);
read_unlock_bh(&idev->lock);
diff -Nru a/net/ipv6/anycast.c b/net/ipv6/anycast.c
--- a/net/ipv6/anycast.c 2004-11-10 16:45:07 +09:00
+++ b/net/ipv6/anycast.c 2004-11-10 16:45:07 +09:00
@@ -205,7 +205,7 @@
prev_pac = NULL;
for (pac = np->ipv6_ac_list; pac; pac = pac->acl_next) {
if ((ifindex == 0 || pac->acl_ifindex == ifindex) &&
- ipv6_addr_cmp(&pac->acl_addr, addr) == 0)
+ ipv6_addr_equal(&pac->acl_addr, addr))
break;
prev_pac = pac;
}
@@ -278,7 +278,7 @@
for (pac=np->ipv6_ac_list; pac; pac=pac->acl_next) {
if (ifindex && pac->acl_ifindex != ifindex)
continue;
- found = ipv6_addr_cmp(&pac->acl_addr, addr) == 0;
+ found = ipv6_addr_equal(&pac->acl_addr, addr);
if (found)
break;
}
@@ -320,7 +320,7 @@
}
for (aca = idev->ac_list; aca; aca = aca->aca_next) {
- if (ipv6_addr_cmp(&aca->aca_addr, addr) == 0) {
+ if (ipv6_addr_equal(&aca->aca_addr, addr)) {
aca->aca_users++;
err = 0;
goto out;
@@ -384,7 +384,7 @@
write_lock_bh(&idev->lock);
prev_aca = NULL;
for (aca = idev->ac_list; aca; aca = aca->aca_next) {
- if (ipv6_addr_cmp(&aca->aca_addr, addr) == 0)
+ if (ipv6_addr_equal(&aca->aca_addr, addr))
break;
prev_aca = aca;
}
@@ -436,7 +436,7 @@
if (idev) {
read_lock_bh(&idev->lock);
for (aca = idev->ac_list; aca; aca = aca->aca_next)
- if (ipv6_addr_cmp(&aca->aca_addr, addr) == 0)
+ if (ipv6_addr_equal(&aca->aca_addr, addr))
break;
read_unlock_bh(&idev->lock);
in6_dev_put(idev);
diff -Nru a/net/ipv6/datagram.c b/net/ipv6/datagram.c
--- a/net/ipv6/datagram.c 2004-11-10 16:45:07 +09:00
+++ b/net/ipv6/datagram.c 2004-11-10 16:45:07 +09:00
@@ -190,7 +190,7 @@
}
ip6_dst_store(sk, dst,
- !ipv6_addr_cmp(&fl.fl6_dst, &np->daddr) ?
+ ipv6_addr_equal(&fl.fl6_dst, &np->daddr) ?
&np->daddr : NULL);
sk->sk_state = TCP_ESTABLISHED;
diff -Nru a/net/ipv6/ip6_fib.c b/net/ipv6/ip6_fib.c
--- a/net/ipv6/ip6_fib.c 2004-11-10 16:45:07 +09:00
+++ b/net/ipv6/ip6_fib.c 2004-11-10 16:45:07 +09:00
@@ -451,8 +451,8 @@
if (iter->rt6i_dev == rt->rt6i_dev &&
iter->rt6i_idev == rt->rt6i_idev &&
- ipv6_addr_cmp(&iter->rt6i_gateway,
- &rt->rt6i_gateway) == 0) {
+ ipv6_addr_equal(&iter->rt6i_gateway,
+ &rt->rt6i_gateway)) {
if (!(iter->rt6i_flags&RTF_EXPIRES))
return -EEXIST;
iter->rt6i_expires = rt->rt6i_expires;
diff -Nru a/net/ipv6/ip6_flowlabel.c b/net/ipv6/ip6_flowlabel.c
--- a/net/ipv6/ip6_flowlabel.c 2004-11-10 16:45:07 +09:00
+++ b/net/ipv6/ip6_flowlabel.c 2004-11-10 16:45:07 +09:00
@@ -500,7 +500,7 @@
goto release;
err = -EINVAL;
- if (ipv6_addr_cmp(&fl1->dst, &fl->dst) ||
+ if (!ipv6_addr_equal(&fl1->dst, &fl->dst) ||
ipv6_opt_cmp(fl1->opt, fl->opt))
goto release;
diff -Nru a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c
--- a/net/ipv6/ip6_output.c 2004-11-10 16:45:07 +09:00
+++ b/net/ipv6/ip6_output.c 2004-11-10 16:45:07 +09:00
@@ -768,9 +768,9 @@
*/
if (((rt->rt6i_dst.plen != 128 ||
- ipv6_addr_cmp(&fl->fl6_dst, &rt->rt6i_dst.addr))
+ !ipv6_addr_equal(&fl->fl6_dst,
&rt->rt6i_dst.addr))
&& (np->daddr_cache == NULL ||
- ipv6_addr_cmp(&fl->fl6_dst, np->daddr_cache)))
+ !ipv6_addr_equal(&fl->fl6_dst,
np->daddr_cache)))
|| (fl->oif && fl->oif != (*dst)->dev->ifindex)) {
*dst = NULL;
} else
diff -Nru a/net/ipv6/ip6_tunnel.c b/net/ipv6/ip6_tunnel.c
--- a/net/ipv6/ip6_tunnel.c 2004-11-10 16:45:07 +09:00
+++ b/net/ipv6/ip6_tunnel.c 2004-11-10 16:45:07 +09:00
@@ -133,8 +133,8 @@
struct ip6_tnl *t;
for (t = tnls_r_l[h0 ^ h1]; t; t = t->next) {
- if (!ipv6_addr_cmp(local, &t->parms.laddr) &&
- !ipv6_addr_cmp(remote, &t->parms.raddr) &&
+ if (ipv6_addr_equal(local, &t->parms.laddr) &&
+ ipv6_addr_equal(remote, &t->parms.raddr) &&
(t->dev->flags & IFF_UP))
return t;
}
@@ -284,8 +284,8 @@
return -EINVAL;
for (t = *ip6ip6_bucket(p); t; t = t->next) {
- if (!ipv6_addr_cmp(local, &t->parms.laddr) &&
- !ipv6_addr_cmp(remote, &t->parms.raddr)) {
+ if (ipv6_addr_equal(local, &t->parms.laddr) &&
+ ipv6_addr_equal(remote, &t->parms.raddr)) {
*pt = t;
return (create ? -EEXIST : 0);
}
@@ -602,7 +602,7 @@
static inline int
ip6ip6_tnl_addr_conflict(struct ip6_tnl *t, struct ipv6hdr *hdr)
{
- return !ipv6_addr_cmp(&t->parms.raddr, &hdr->saddr);
+ return ipv6_addr_equal(&t->parms.raddr, &hdr->saddr);
}
/**
diff -Nru a/net/ipv6/mcast.c b/net/ipv6/mcast.c
--- a/net/ipv6/mcast.c 2004-11-10 16:45:07 +09:00
+++ b/net/ipv6/mcast.c 2004-11-10 16:45:07 +09:00
@@ -247,7 +247,7 @@
write_lock_bh(&ipv6_sk_mc_lock);
for (lnk = &np->ipv6_mc_list; (mc_lst = *lnk) !=NULL ; lnk =
&mc_lst->next) {
if ((ifindex == 0 || mc_lst->ifindex == ifindex) &&
- ipv6_addr_cmp(&mc_lst->addr, addr) == 0) {
+ ipv6_addr_equal(&mc_lst->addr, addr)) {
struct net_device *dev;
*lnk = mc_lst->next;
@@ -369,7 +369,7 @@
for (pmc=inet6->ipv6_mc_list; pmc; pmc=pmc->next) {
if (pgsr->gsr_interface && pmc->ifindex != pgsr->gsr_interface)
continue;
- if (ipv6_addr_cmp(&pmc->addr, group) == 0)
+ if (ipv6_addr_equal(&pmc->addr, group))
break;
}
if (!pmc) /* must have a prior join */
@@ -485,7 +485,7 @@
for (pmc=inet6->ipv6_mc_list; pmc; pmc=pmc->next) {
if (pmc->ifindex != gsf->gf_interface)
continue;
- if (ipv6_addr_cmp(&pmc->addr, group) == 0)
+ if (ipv6_addr_equal(&pmc->addr, group))
break;
}
if (!pmc) /* must have a prior join */
@@ -556,7 +556,7 @@
for (pmc=inet6->ipv6_mc_list; pmc; pmc=pmc->next) {
if (pmc->ifindex != gsf->gf_interface)
continue;
- if (ipv6_addr_cmp(group, &pmc->addr) == 0)
+ if (ipv6_addr_equal(group, &pmc->addr))
break;
}
if (!pmc) /* must have a prior join */
@@ -603,7 +603,7 @@
read_lock(&ipv6_sk_mc_lock);
for (mc = np->ipv6_mc_list; mc; mc = mc->next) {
- if (ipv6_addr_cmp(&mc->addr, mc_addr) == 0)
+ if (ipv6_addr_equal(&mc->addr, mc_addr))
break;
}
if (!mc) {
@@ -617,7 +617,7 @@
int i;
for (i=0; i<psl->sl_count; i++) {
- if (ipv6_addr_cmp(&psl->sl_addr[i], src_addr) == 0)
+ if (ipv6_addr_equal(&psl->sl_addr[i], src_addr))
break;
}
if (mc->sfmode == MCAST_INCLUDE && i >= psl->sl_count)
@@ -740,7 +740,7 @@
write_lock_bh(&idev->mc_lock);
pmc_prev = NULL;
for (pmc=idev->mc_tomb; pmc; pmc=pmc->next) {
- if (ipv6_addr_cmp(&pmc->mca_addr, pmca) == 0)
+ if (ipv6_addr_equal(&pmc->mca_addr, pmca))
break;
pmc_prev = pmc;
}
@@ -816,7 +816,7 @@
}
for (mc = idev->mc_list; mc; mc = mc->next) {
- if (ipv6_addr_cmp(&mc->mca_addr, addr) == 0) {
+ if (ipv6_addr_equal(&mc->mca_addr, addr)) {
mc->mca_users++;
write_unlock_bh(&idev->lock);
ip6_mc_add_src(idev, &mc->mca_addr, MCAST_EXCLUDE, 0,
@@ -878,7 +878,7 @@
write_lock_bh(&idev->lock);
for (map = &idev->mc_list; (ma=*map) != NULL; map = &ma->next) {
- if (ipv6_addr_cmp(&ma->mca_addr, addr) == 0) {
+ if (ipv6_addr_equal(&ma->mca_addr, addr)) {
if (--ma->mca_users == 0) {
*map = ma->next;
write_unlock_bh(&idev->lock);
@@ -953,7 +953,7 @@
if (idev) {
read_lock_bh(&idev->lock);
for (mc = idev->mc_list; mc; mc=mc->next) {
- if (ipv6_addr_cmp(&mc->mca_addr, group) == 0)
+ if (ipv6_addr_equal(&mc->mca_addr, group))
break;
}
if (mc) {
@@ -962,8 +962,7 @@
spin_lock_bh(&mc->mca_lock);
for (psf=mc->mca_sources;psf;psf=psf->sf_next) {
- if (ipv6_addr_cmp(&psf->sf_addr,
- src_addr) == 0)
+ if (ipv6_addr_equal(&psf->sf_addr,
src_addr))
break;
}
if (psf)
@@ -1040,7 +1039,7 @@
if (scount == nsrcs)
break;
for (i=0; i<nsrcs; i++)
- if (ipv6_addr_cmp(&srcs[i], &psf->sf_addr) == 0) {
+ if (ipv6_addr_equal(&srcs[i], &psf->sf_addr)) {
psf->sf_gsresp = 1;
scount++;
break;
@@ -1135,7 +1134,7 @@
} else {
for (ma = idev->mc_list; ma; ma=ma->next) {
if (group_type != IPV6_ADDR_ANY &&
- ipv6_addr_cmp(group, &ma->mca_addr) != 0)
+ !ipv6_addr_equal(group, &ma->mca_addr))
continue;
spin_lock_bh(&ma->mca_lock);
if (ma->mca_flags & MAF_TIMER_RUNNING) {
@@ -1200,7 +1199,7 @@
read_lock_bh(&idev->lock);
for (ma = idev->mc_list; ma; ma=ma->next) {
- if (ipv6_addr_cmp(&ma->mca_addr, addrp) == 0) {
+ if (ipv6_addr_equal(&ma->mca_addr, addrp)) {
spin_lock(&ma->mca_lock);
if (del_timer(&ma->mca_timer))
atomic_dec(&ma->mca_refcnt);
@@ -1695,7 +1694,7 @@
psf_prev = NULL;
for (psf=pmc->mca_sources; psf; psf=psf->sf_next) {
- if (ipv6_addr_cmp(&psf->sf_addr, psfsrc) == 0)
+ if (ipv6_addr_equal(&psf->sf_addr, psfsrc))
break;
psf_prev = psf;
}
@@ -1735,7 +1734,7 @@
return -ENODEV;
read_lock_bh(&idev->lock);
for (pmc=idev->mc_list; pmc; pmc=pmc->next) {
- if (ipv6_addr_cmp(pmca, &pmc->mca_addr) == 0)
+ if (ipv6_addr_equal(pmca, &pmc->mca_addr))
break;
}
if (!pmc) {
@@ -1790,7 +1789,7 @@
psf_prev = NULL;
for (psf=pmc->mca_sources; psf; psf=psf->sf_next) {
- if (ipv6_addr_cmp(&psf->sf_addr, psfsrc) == 0)
+ if (ipv6_addr_equal(&psf->sf_addr, psfsrc))
break;
psf_prev = psf;
}
@@ -1859,7 +1858,7 @@
return -ENODEV;
read_lock_bh(&idev->lock);
for (pmc=idev->mc_list; pmc; pmc=pmc->next) {
- if (ipv6_addr_cmp(pmca, &pmc->mca_addr) == 0)
+ if (ipv6_addr_equal(pmca, &pmc->mca_addr))
break;
}
if (!pmc) {
diff -Nru a/net/ipv6/ndisc.c b/net/ipv6/ndisc.c
--- a/net/ipv6/ndisc.c 2004-11-10 16:45:07 +09:00
+++ b/net/ipv6/ndisc.c 2004-11-10 16:45:07 +09:00
@@ -1219,7 +1219,7 @@
return;
}
- if (ipv6_addr_cmp(dest, target) == 0) {
+ if (ipv6_addr_equal(dest, target)) {
on_link = 1;
} else if (!(ipv6_addr_type(target) & IPV6_ADDR_LINKLOCAL)) {
ND_PRINTK2(KERN_WARNING
diff -Nru a/net/ipv6/netfilter/ip6_queue.c b/net/ipv6/netfilter/ip6_queue.c
--- a/net/ipv6/netfilter/ip6_queue.c 2004-11-10 16:45:07 +09:00
+++ b/net/ipv6/netfilter/ip6_queue.c 2004-11-10 16:45:07 +09:00
@@ -376,8 +376,8 @@
*/
if (e->info->hook == NF_IP_LOCAL_OUT) {
struct ipv6hdr *iph = e->skb->nh.ipv6h;
- if (ipv6_addr_cmp(&iph->daddr, &e->rt_info.daddr) ||
- ipv6_addr_cmp(&iph->saddr, &e->rt_info.saddr))
+ if (!ipv6_addr_equal(&iph->daddr, &e->rt_info.daddr) ||
+ !ipv6_addr_equal(&iph->saddr, &e->rt_info.saddr))
return ip6_route_me_harder(e->skb);
}
return 0;
diff -Nru a/net/ipv6/netfilter/ip6t_rt.c b/net/ipv6/netfilter/ip6t_rt.c
--- a/net/ipv6/netfilter/ip6t_rt.c 2004-11-10 16:45:07 +09:00
+++ b/net/ipv6/netfilter/ip6t_rt.c 2004-11-10 16:45:07 +09:00
@@ -209,7 +209,7 @@
BUG_ON(ap == NULL);
- if (!ipv6_addr_cmp(ap, &rtinfo->addrs[i])) {
+ if (ipv6_addr_equal(ap, &rtinfo->addrs[i])) {
DEBUGP("i=%d temp=%d;\n",i,temp);
i++;
}
@@ -236,7 +236,7 @@
&_addr);
BUG_ON(ap == NULL);
- if (ipv6_addr_cmp(ap, &rtinfo->addrs[temp]))
+ if (!ipv6_addr_equal(ap, &rtinfo->addrs[temp]))
break;
}
DEBUGP("temp=%d #%d\n", temp, rtinfo->addrnr);
diff -Nru a/net/ipv6/raw.c b/net/ipv6/raw.c
--- a/net/ipv6/raw.c 2004-11-10 16:45:07 +09:00
+++ b/net/ipv6/raw.c 2004-11-10 16:45:07 +09:00
@@ -90,11 +90,11 @@
struct ipv6_pinfo *np = inet6_sk(sk);
if (!ipv6_addr_any(&np->daddr) &&
- ipv6_addr_cmp(&np->daddr, rmt_addr))
+ !ipv6_addr_equal(&np->daddr, rmt_addr))
continue;
if (!ipv6_addr_any(&np->rcv_saddr)) {
- if (!ipv6_addr_cmp(&np->rcv_saddr, loc_addr))
+ if (ipv6_addr_equal(&np->rcv_saddr, loc_addr))
goto found;
if (is_multicast &&
inet6_mc_check(sk, loc_addr, rmt_addr))
@@ -668,7 +668,7 @@
* sk->sk_dst_cache.
*/
if (sk->sk_state == TCP_ESTABLISHED &&
- !ipv6_addr_cmp(daddr, &np->daddr))
+ ipv6_addr_equal(daddr, &np->daddr))
daddr = &np->daddr;
if (addr_len >= sizeof(struct sockaddr_in6) &&
@@ -775,7 +775,7 @@
}
done:
ip6_dst_store(sk, dst,
- !ipv6_addr_cmp(&fl.fl6_dst, &np->daddr) ?
+ ipv6_addr_equal(&fl.fl6_dst, &np->daddr) ?
&np->daddr : NULL);
if (err > 0)
err = np->recverr ? net_xmit_errno(err) : 0;
diff -Nru a/net/ipv6/reassembly.c b/net/ipv6/reassembly.c
--- a/net/ipv6/reassembly.c 2004-11-10 16:45:07 +09:00
+++ b/net/ipv6/reassembly.c 2004-11-10 16:45:07 +09:00
@@ -342,8 +342,8 @@
#ifdef CONFIG_SMP
for (fq = ip6_frag_hash[hash]; fq; fq = fq->next) {
if (fq->id == fq_in->id &&
- !ipv6_addr_cmp(&fq_in->saddr, &fq->saddr) &&
- !ipv6_addr_cmp(&fq_in->daddr, &fq->daddr)) {
+ ipv6_addr_equal(&fq_in->saddr, &fq->saddr) &&
+ ipv6_addr_equal(&fq_in->daddr, &fq->daddr)) {
atomic_inc(&fq->refcnt);
write_unlock(&ip6_frag_lock);
fq_in->last_in |= COMPLETE;
@@ -406,8 +406,8 @@
read_lock(&ip6_frag_lock);
for(fq = ip6_frag_hash[hash]; fq; fq = fq->next) {
if (fq->id == id &&
- !ipv6_addr_cmp(src, &fq->saddr) &&
- !ipv6_addr_cmp(dst, &fq->daddr)) {
+ ipv6_addr_equal(src, &fq->saddr) &&
+ ipv6_addr_equal(dst, &fq->daddr)) {
atomic_inc(&fq->refcnt);
read_unlock(&ip6_frag_lock);
return fq;
diff -Nru a/net/ipv6/route.c b/net/ipv6/route.c
--- a/net/ipv6/route.c 2004-11-10 16:45:07 +09:00
+++ b/net/ipv6/route.c 2004-11-10 16:45:07 +09:00
@@ -1006,7 +1006,7 @@
rt->rt6i_dev->ifindex != rtmsg->rtmsg_ifindex))
continue;
if (rtmsg->rtmsg_flags&RTF_GATEWAY &&
- ipv6_addr_cmp(&rtmsg->rtmsg_gateway,
&rt->rt6i_gateway))
+ !ipv6_addr_equal(&rtmsg->rtmsg_gateway,
&rt->rt6i_gateway))
continue;
if (rtmsg->rtmsg_metric &&
rtmsg->rtmsg_metric != rt->rt6i_metric)
@@ -1057,13 +1057,13 @@
* is a bit fuzzy and one might need to check all default
* routers.
*/
- if (ipv6_addr_cmp(saddr, &rt->rt6i_gateway)) {
+ if (!ipv6_addr_equal(saddr, &rt->rt6i_gateway)) {
if (rt->rt6i_flags & RTF_DEFAULT) {
struct rt6_info *rt1;
read_lock(&rt6_lock);
for (rt1 = ip6_routing_table.leaf; rt1; rt1 =
rt1->u.next) {
- if (!ipv6_addr_cmp(saddr, &rt1->rt6i_gateway)) {
+ if (ipv6_addr_equal(saddr, &rt1->rt6i_gateway))
{
dst_hold(&rt1->u.dst);
dst_release(&rt->u.dst);
read_unlock(&rt6_lock);
@@ -1262,7 +1262,7 @@
write_lock_bh(&rt6_lock);
for (rt = fn->leaf; rt; rt=rt->u.next) {
if (dev == rt->rt6i_dev &&
- ipv6_addr_cmp(&rt->rt6i_gateway, addr) == 0)
+ ipv6_addr_equal(&rt->rt6i_gateway, addr))
break;
}
if (rt)
diff -Nru a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c
--- a/net/ipv6/tcp_ipv6.c 2004-11-10 16:45:07 +09:00
+++ b/net/ipv6/tcp_ipv6.c 2004-11-10 16:45:07 +09:00
@@ -262,7 +262,7 @@
score = 1;
if (!ipv6_addr_any(&np->rcv_saddr)) {
- if (ipv6_addr_cmp(&np->rcv_saddr, daddr))
+ if (!ipv6_addr_equal(&np->rcv_saddr, daddr))
continue;
score++;
}
@@ -321,8 +321,8 @@
if(*((__u32 *)&(tw->tw_dport)) == ports &&
sk->sk_family == PF_INET6) {
- if(!ipv6_addr_cmp(&tw->tw_v6_daddr, saddr) &&
- !ipv6_addr_cmp(&tw->tw_v6_rcv_saddr, daddr) &&
+ if(ipv6_addr_equal(&tw->tw_v6_daddr, saddr) &&
+ ipv6_addr_equal(&tw->tw_v6_rcv_saddr, daddr) &&
(!sk->sk_bound_dev_if || sk->sk_bound_dev_if == dif))
goto hit;
}
@@ -406,8 +406,8 @@
prev = &req->dl_next) {
if (req->rmt_port == rport &&
req->class->family == AF_INET6 &&
- !ipv6_addr_cmp(&req->af.v6_req.rmt_addr, raddr) &&
- !ipv6_addr_cmp(&req->af.v6_req.loc_addr, laddr) &&
+ ipv6_addr_equal(&req->af.v6_req.rmt_addr, raddr) &&
+ ipv6_addr_equal(&req->af.v6_req.loc_addr, laddr) &&
(!req->af.v6_req.iif || req->af.v6_req.iif == iif)) {
BUG_TRAP(req->sk == NULL);
*prevp = prev;
@@ -463,8 +463,8 @@
if(*((__u32 *)&(tw->tw_dport)) == ports &&
sk2->sk_family == PF_INET6 &&
- !ipv6_addr_cmp(&tw->tw_v6_daddr, saddr) &&
- !ipv6_addr_cmp(&tw->tw_v6_rcv_saddr, daddr) &&
+ ipv6_addr_equal(&tw->tw_v6_daddr, saddr) &&
+ ipv6_addr_equal(&tw->tw_v6_rcv_saddr, daddr) &&
sk2->sk_bound_dev_if == sk->sk_bound_dev_if) {
struct tcp_opt *tp = tcp_sk(sk);
@@ -610,7 +610,7 @@
}
if (tp->ts_recent_stamp &&
- ipv6_addr_cmp(&np->daddr, &usin->sin6_addr)) {
+ !ipv6_addr_equal(&np->daddr, &usin->sin6_addr)) {
tp->ts_recent = 0;
tp->ts_recent_stamp = 0;
tp->write_seq = 0;
diff -Nru a/net/ipv6/udp.c b/net/ipv6/udp.c
--- a/net/ipv6/udp.c 2004-11-10 16:45:07 +09:00
+++ b/net/ipv6/udp.c 2004-11-10 16:45:07 +09:00
@@ -171,12 +171,12 @@
score++;
}
if (!ipv6_addr_any(&np->rcv_saddr)) {
- if (ipv6_addr_cmp(&np->rcv_saddr, daddr))
+ if (!ipv6_addr_equal(&np->rcv_saddr, daddr))
continue;
score++;
}
if (!ipv6_addr_any(&np->daddr)) {
- if (ipv6_addr_cmp(&np->daddr, saddr))
+ if (!ipv6_addr_equal(&np->daddr, saddr))
continue;
score++;
}
@@ -395,14 +395,14 @@
continue;
}
if (!ipv6_addr_any(&np->daddr) &&
- ipv6_addr_cmp(&np->daddr, rmt_addr))
+ !ipv6_addr_equal(&np->daddr, rmt_addr))
continue;
if (s->sk_bound_dev_if && s->sk_bound_dev_if != dif)
continue;
if (!ipv6_addr_any(&np->rcv_saddr)) {
- if (!ipv6_addr_cmp(&np->rcv_saddr, loc_addr))
+ if (ipv6_addr_equal(&np->rcv_saddr, loc_addr))
return s;
continue;
}
@@ -732,7 +732,7 @@
* sk->sk_dst_cache.
*/
if (sk->sk_state == TCP_ESTABLISHED &&
- !ipv6_addr_cmp(daddr, &np->daddr))
+ ipv6_addr_equal(daddr, &np->daddr))
daddr = &np->daddr;
if (addr_len >= sizeof(struct sockaddr_in6) &&
@@ -840,7 +840,7 @@
if (dst)
ip6_dst_store(sk, dst,
- !ipv6_addr_cmp(&fl->fl6_dst, &np->daddr) ?
+ ipv6_addr_equal(&fl->fl6_dst, &np->daddr) ?
&np->daddr : NULL);
if (err > 0)
err = np->recverr ? net_xmit_errno(err) : 0;
diff -Nru a/net/ipv6/xfrm6_policy.c b/net/ipv6/xfrm6_policy.c
--- a/net/ipv6/xfrm6_policy.c 2004-11-10 16:45:07 +09:00
+++ b/net/ipv6/xfrm6_policy.c 2004-11-10 16:45:07 +09:00
@@ -68,8 +68,8 @@
ipv6_addr_prefix(&fl_src_prefix,
&fl->fl6_src,
xdst->u.rt6.rt6i_src.plen);
- if (!ipv6_addr_cmp(&xdst->u.rt6.rt6i_dst.addr, &fl_dst_prefix)
&&
- !ipv6_addr_cmp(&xdst->u.rt6.rt6i_src.addr, &fl_src_prefix)
&&
+ if (ipv6_addr_equal(&xdst->u.rt6.rt6i_dst.addr, &fl_dst_prefix)
&&
+ ipv6_addr_equal(&xdst->u.rt6.rt6i_src.addr, &fl_src_prefix)
&&
__xfrm6_bundle_ok(xdst, fl)) {
dst_clone(dst);
break;
@@ -123,7 +123,7 @@
trailer_len += xfrm[i]->props.trailer_len;
}
- if (ipv6_addr_cmp(remote, &fl->fl6_dst)) {
+ if (!ipv6_addr_equal(remote, &fl->fl6_dst)) {
struct flowi fl_tunnel;
memset(&fl_tunnel, 0, sizeof(fl_tunnel));
diff -Nru a/net/ipv6/xfrm6_state.c b/net/ipv6/xfrm6_state.c
--- a/net/ipv6/xfrm6_state.c 2004-11-10 16:45:07 +09:00
+++ b/net/ipv6/xfrm6_state.c 2004-11-10 16:45:07 +09:00
@@ -55,7 +55,7 @@
list_for_each_entry(x, xfrm6_state_afinfo.state_byspi+h, byspi) {
if (x->props.family == AF_INET6 &&
spi == x->id.spi &&
- !ipv6_addr_cmp((struct in6_addr *)daddr, (struct in6_addr
*)x->id.daddr.a6) &&
+ ipv6_addr_equal((struct in6_addr *)daddr, (struct in6_addr
*)x->id.daddr.a6) &&
proto == x->id.proto) {
xfrm_state_hold(x);
return x;
@@ -76,10 +76,10 @@
list_for_each_entry(x, xfrm6_state_afinfo.state_bydst+h, bydst) {
if (x->props.family == AF_INET6 &&
- !ipv6_addr_cmp((struct in6_addr *)daddr, (struct in6_addr
*)x->id.daddr.a6) &&
+ ipv6_addr_equal((struct in6_addr *)daddr, (struct in6_addr
*)x->id.daddr.a6) &&
mode == x->props.mode &&
proto == x->id.proto &&
- !ipv6_addr_cmp((struct in6_addr *)saddr, (struct in6_addr
*)x->props.saddr.a6) &&
+ ipv6_addr_equal((struct in6_addr *)saddr, (struct in6_addr
*)x->props.saddr.a6) &&
reqid == x->props.reqid &&
x->km.state == XFRM_STATE_ACQ &&
!x->id.spi) {
diff -Nru a/net/sctp/ipv6.c b/net/sctp/ipv6.c
--- a/net/sctp/ipv6.c 2004-11-10 16:45:07 +09:00
+++ b/net/sctp/ipv6.c 2004-11-10 16:45:07 +09:00
@@ -461,7 +461,7 @@
}
return 0;
}
- if (ipv6_addr_cmp(&addr1->v6.sin6_addr, &addr2->v6.sin6_addr))
+ if (!ipv6_addr_equal(&addr1->v6.sin6_addr, &addr2->v6.sin6_addr))
return 0;
/* If this is a linklocal address, compare the scope_id. */
if (ipv6_addr_type(&addr1->v6.sin6_addr) & IPV6_ADDR_LINKLOCAL) {
--
Hideaki YOSHIFUJI @ USAGI Project <yoshfuji@xxxxxxxxxxxxxx>
GPG FP: 9022 65EB 1ECF 3AD1 0BDF 80D8 4807 F894 E062 0EEA
|