summaryrefslogtreecommitdiffstats
path: root/net/ipv6/sit.c
diff options
context:
space:
mode:
authorYOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>2008-03-15 22:54:23 -0400
committerYOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>2008-04-03 10:06:00 +0900
commit52eeeb8481d705e61e2e9aae974e7799a93783e9 (patch)
tree6ced371b81334f07926e7bdc190fc2efa396659f /net/ipv6/sit.c
parent6294e000736401d4415ad41f408e56e14aaaf7b4 (diff)
[IPV6]: Unify ip6_onlink() and ipip6_onlink().
Both are identical, let's create ipv6_chk_prefix() and use it in both places.
Diffstat (limited to 'net/ipv6/sit.c')
-rw-r--r--net/ipv6/sit.c27
1 files changed, 1 insertions, 26 deletions
diff --git a/net/ipv6/sit.c b/net/ipv6/sit.c
index 08a483a8de5..cc16fe07bbf 100644
--- a/net/ipv6/sit.c
+++ b/net/ipv6/sit.c
@@ -344,31 +344,6 @@ out:
return 0;
}
-/* copied directly from anycast.c */
-static int
-ipip6_onlink(struct in6_addr *addr, struct net_device *dev)
-{
- struct inet6_dev *idev;
- struct inet6_ifaddr *ifa;
- int onlink;
-
- onlink = 0;
- rcu_read_lock();
- idev = __in6_dev_get(dev);
- if (idev) {
- read_lock_bh(&idev->lock);
- for (ifa=idev->addr_list; ifa; ifa=ifa->if_next) {
- onlink = ipv6_prefix_equal(addr, &ifa->addr,
- ifa->prefix_len);
- if (onlink)
- break;
- }
- read_unlock_bh(&idev->lock);
- }
- rcu_read_unlock();
- return onlink;
-}
-
static int
isatap_chksrc(struct sk_buff *skb, struct iphdr *iph, struct ip_tunnel *t)
{
@@ -386,7 +361,7 @@ isatap_chksrc(struct sk_buff *skb, struct iphdr *iph, struct ip_tunnel *t)
struct in6_addr *addr6 = &ipv6_hdr(skb)->saddr;
if (ipv6_addr_is_isatap(addr6) &&
(addr6->s6_addr32[3] == iph->saddr) &&
- ipip6_onlink(addr6, t->dev))
+ ipv6_chk_prefix(addr6, t->dev))
skb->ndisc_nodetype = NDISC_NODETYPE_HOST;
else
ok = 0;