vserver 1.9.5.x5
[linux-2.6.git] / include / net / addrconf.h
index 4928cfd..bfcc024 100644 (file)
@@ -67,14 +67,13 @@ extern int                  ipv6_get_saddr(struct dst_entry *dst,
                                               struct in6_addr *saddr);
 extern int                     ipv6_dev_get_saddr(struct net_device *dev, 
                                               struct in6_addr *daddr,
-                                              struct in6_addr *saddr,
-                                              int onlink);
+                                              struct in6_addr *saddr);
 extern int                     ipv6_get_lladdr(struct net_device *dev, struct in6_addr *);
 extern int                     ipv6_rcv_saddr_equal(const struct sock *sk, 
                                                      const struct sock *sk2);
 extern void                    addrconf_join_solict(struct net_device *dev,
                                        struct in6_addr *addr);
-extern void                    addrconf_leave_solict(struct net_device *dev,
+extern void                    addrconf_leave_solict(struct inet6_dev *idev,
                                        struct in6_addr *addr);
 
 /*
@@ -89,6 +88,7 @@ extern int inet6_mc_check(struct sock *sk, struct in6_addr *mc_addr,
                struct in6_addr *src_addr);
 
 extern int ipv6_dev_mc_inc(struct net_device *dev, struct in6_addr *addr);
+extern int __ipv6_dev_mc_dec(struct inet6_dev *idev, struct in6_addr *addr);
 extern int ipv6_dev_mc_dec(struct net_device *dev, struct in6_addr *addr);
 extern void ipv6_mc_up(struct inet6_dev *idev);
 extern void ipv6_mc_down(struct inet6_dev *idev);
@@ -111,7 +111,7 @@ extern void ipv6_sock_ac_close(struct sock *sk);
 extern int inet6_ac_check(struct sock *sk, struct in6_addr *addr, int ifindex);
 
 extern int ipv6_dev_ac_inc(struct net_device *dev, struct in6_addr *addr);
-extern int ipv6_dev_ac_dec(struct net_device *dev, struct in6_addr *addr);
+extern int __ipv6_dev_ac_dec(struct inet6_dev *idev, struct in6_addr *addr);
 extern int ipv6_chk_acast_addr(struct net_device *dev, struct in6_addr *addr);
 
 
@@ -160,8 +160,8 @@ static inline void in6_ifa_put(struct inet6_ifaddr *ifp)
                inet6_ifa_finish_destroy(ifp);
 }
 
-#define __in6_ifa_put(idev)  atomic_dec(&(idev)->refcnt)
-#define in6_ifa_hold(idev)   atomic_inc(&(idev)->refcnt)
+#define __in6_ifa_put(ifp)     atomic_dec(&(ifp)->refcnt)
+#define in6_ifa_hold(ifp)      atomic_inc(&(ifp)->refcnt)
 
 
 extern void                    addrconf_forwarding_on(void);
@@ -178,8 +178,8 @@ static __inline__ u8 ipv6_addr_hash(const struct in6_addr *addr)
         * This will include the IEEE address token on links that support it.
         */
 
-       word = addr->s6_addr[2] ^ addr->s6_addr32[3];
-       word  ^= (word>>16);
+       word = addr->s6_addr32[2] ^ addr->s6_addr32[3];
+       word ^= (word >> 16);
        word ^= (word >> 8);
 
        return ((word ^ (word >> 4)) & 0x0f);