#include <net/checksum.h>
+static int ipv6_dev_ac_dec(struct net_device *dev, struct in6_addr *addr);
+
/* Big ac list lock for all the sockets */
-static rwlock_t ipv6_sk_ac_lock = RW_LOCK_UNLOCKED;
+static DEFINE_RWLOCK(ipv6_sk_ac_lock);
/* XXX ip6_addr_match() and ip6_onlink() really belong in net/core.c */
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;
}
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;
}
}
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;
/* aca_tstamp should be updated upon changes */
aca->aca_cstamp = aca->aca_tstamp = jiffies;
atomic_set(&aca->aca_refcnt, 2);
- aca->aca_lock = SPIN_LOCK_UNLOCKED;
+ spin_lock_init(&aca->aca_lock);
aca->aca_next = idev->ac_list;
idev->ac_list = aca;
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;
}
return 0;
}
-int ipv6_dev_ac_dec(struct net_device *dev, struct in6_addr *addr)
+static int ipv6_dev_ac_dec(struct net_device *dev, struct in6_addr *addr)
{
int ret;
struct inet6_dev *idev = in6_dev_get(dev);
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);