vserver 1.9.5.x5
[linux-2.6.git] / include / net / ipv6.h
index b647b04..147d47a 100644 (file)
@@ -16,7 +16,7 @@
 #define _NET_IPV6_H
 
 #include <linux/ipv6.h>
-#include <asm/hardirq.h>
+#include <linux/hardirq.h>
 #include <net/ndisc.h>
 #include <net/flow.h>
 #include <net/snmp.h>
@@ -111,7 +111,7 @@ extern int sysctl_ipv6_bindv6only;
 extern int sysctl_mld_max_msf;
 
 /* MIBs */
-DECLARE_SNMP_STAT(struct ipv6_mib, ipv6_statistics);
+DECLARE_SNMP_STAT(struct ipstats_mib, ipv6_statistics);
 #define IP6_INC_STATS(field)           SNMP_INC_STATS(ipv6_statistics, field)
 #define IP6_INC_STATS_BH(field)                SNMP_INC_STATS_BH(ipv6_statistics, field)
 #define IP6_INC_STATS_USER(field)      SNMP_INC_STATS_USER(ipv6_statistics, field)
@@ -149,6 +149,8 @@ extern atomic_t                     inet6_sock_nr;
 
 int snmp6_register_dev(struct inet6_dev *idev);
 int snmp6_unregister_dev(struct inet6_dev *idev);
+int snmp6_alloc_dev(struct inet6_dev *idev);
+int snmp6_free_dev(struct inet6_dev *idev);
 int snmp6_mib_init(void *ptr[2], size_t mibsize, size_t mibalign);
 void snmp6_mib_free(void *ptr[2]);
 
@@ -215,7 +217,7 @@ extern struct ipv6_txoptions        *fl6_merge_options(struct ipv6_txoptions * opt_spac
                                                   struct ip6_flowlabel * fl,
                                                   struct ipv6_txoptions * fopt);
 extern void                    fl6_free_socklist(struct sock *sk);
-extern int                     ipv6_flowlabel_opt(struct sock *sk, char *optval, int optlen);
+extern int                     ipv6_flowlabel_opt(struct sock *sk, char __user *optval, int optlen);
 extern void                    ip6_flowlabel_init(void);
 extern void                    ip6_flowlabel_cleanup(void);
 
@@ -229,8 +231,6 @@ extern int                  ip6_ra_control(struct sock *sk, int sel,
                                               void (*destructor)(struct sock *));
 
 
-extern int                     ip6_call_ra_chain(struct sk_buff *skb, int sel);
-
 extern int                     ipv6_parse_hopopts(struct sk_buff *skb, int);
 
 extern struct ipv6_txoptions *  ipv6_dup_options(struct sock *sk, struct ipv6_txoptions *opt);
@@ -296,6 +296,15 @@ static inline void ipv6_addr_set(struct in6_addr *addr,
 }
 #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] | 
@@ -356,7 +365,6 @@ extern int                  ip6_dst_lookup(struct sock *sk,
  */
 
 extern int                     ip6_output(struct sk_buff *skb);
-extern int                     ip6_output2(struct sk_buff *skb);
 extern int                     ip6_forward(struct sk_buff *skb);
 extern int                     ip6_input(struct sk_buff *skb);
 extern int                     ip6_mc_input(struct sk_buff *skb);
@@ -395,16 +403,21 @@ extern struct ipv6_txoptions *    ipv6_invert_rthdr(struct sock *sk,
  */
 
 extern int                     ipv6_setsockopt(struct sock *sk, int level, 
-                                               int optname, char *optval, 
+                                               int optname,
+                                               char __user *optval, 
                                                int optlen);
 extern int                     ipv6_getsockopt(struct sock *sk, int level, 
-                                               int optname, char *optval, 
-                                               int *optlen);
+                                               int optname,
+                                               char __user *optval, 
+                                               int __user *optlen);
 
 extern void                    ipv6_packet_init(void);
 
 extern void                    ipv6_packet_cleanup(void);
 
+extern int                     ip6_datagram_connect(struct sock *sk, 
+                                                    struct sockaddr *addr, int addr_len);
+
 extern int                     ipv6_recv_error(struct sock *sk, struct msghdr *msg, int len);
 extern void                    ipv6_icmp_error(struct sock *sk, struct sk_buff *skb, int err, u16 port,
                                                u32 info, u8 *payload);