[TCP]: Convert highest_sack to sk_buff to allow direct access
[pandora-kernel.git] / include / net / ipv6.h
index 31b3f1b..e90f962 100644 (file)
@@ -120,12 +120,21 @@ extern int sysctl_mld_max_msf;
        SNMP_INC_STATS##modifier(statname##_statistics, (field));       \
 })
 
+#define _DEVADD(statname, modifier, idev, field, val)                  \
+({                                                                     \
+       struct inet6_dev *_idev = (idev);                               \
+       if (likely(_idev != NULL))                                      \
+               SNMP_ADD_STATS##modifier((_idev)->stats.statname, (field), (val)); \
+       SNMP_ADD_STATS##modifier(statname##_statistics, (field), (val));\
+})
+
 /* MIBs */
 DECLARE_SNMP_STAT(struct ipstats_mib, ipv6_statistics);
 
 #define IP6_INC_STATS(idev,field)      _DEVINC(ipv6, , idev, field)
 #define IP6_INC_STATS_BH(idev,field)   _DEVINC(ipv6, _BH, idev, field)
 #define IP6_INC_STATS_USER(idev,field) _DEVINC(ipv6, _USER, idev, field)
+#define IP6_ADD_STATS_BH(idev,field,val) _DEVADD(ipv6, _BH, idev, field, val)
 
 DECLARE_SNMP_STAT(struct icmpv6_mib, icmpv6_statistics);
 DECLARE_SNMP_STAT(struct icmpv6msg_mib, icmpv6msg_statistics);
@@ -240,7 +249,7 @@ extern int                  ip6_ra_control(struct sock *sk, int sel,
                                               void (*destructor)(struct sock *));
 
 
-extern int                     ipv6_parse_hopopts(struct sk_buff **skbp);
+extern int                     ipv6_parse_hopopts(struct sk_buff *skb);
 
 extern struct ipv6_txoptions *  ipv6_dup_options(struct sock *sk, struct ipv6_txoptions *opt);
 extern struct ipv6_txoptions * ipv6_renew_options(struct sock *sk, struct ipv6_txoptions *opt,
@@ -252,8 +261,8 @@ struct ipv6_txoptions *ipv6_fixup_options(struct ipv6_txoptions *opt_space,
 
 extern int ipv6_opt_accepted(struct sock *sk, struct sk_buff *skb);
 
-extern int ip6_frag_nqueues;
-extern atomic_t ip6_frag_mem;
+int ip6_frag_nqueues(void);
+int ip6_frag_mem(void);
 
 #define IPV6_FRAG_TIMEOUT      (60*HZ)         /* 60 seconds */
 
@@ -368,6 +377,17 @@ static inline int ipv6_prefix_equal(const struct in6_addr *a1,
                                   prefixlen);
 }
 
+struct inet_frag_queue;
+
+struct ip6_create_arg {
+       __be32 id;
+       struct in6_addr *src;
+       struct in6_addr *dst;
+};
+
+void ip6_frag_init(struct inet_frag_queue *q, void *a);
+int ip6_frag_match(struct inet_frag_queue *q, void *a);
+
 static inline int ipv6_addr_any(const struct in6_addr *a)
 {
        return ((a->s6_addr32[0] | a->s6_addr32[1] | 
@@ -489,6 +509,9 @@ 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);
 
+extern int                     __ip6_local_out(struct sk_buff *skb);
+extern int                     ip6_local_out(struct sk_buff *skb);
+
 /*
  *     Extension header (options) processing
  */
@@ -565,10 +588,8 @@ extern int inet6_hash_connect(struct inet_timewait_death_row *death_row,
 /*
  * reassembly.c
  */
-extern int sysctl_ip6frag_high_thresh;
-extern int sysctl_ip6frag_low_thresh;
-extern int sysctl_ip6frag_time;
-extern int sysctl_ip6frag_secret_interval;
+struct inet_frags_ctl;
+extern struct inet_frags_ctl ip6_frags_ctl;
 
 extern const struct proto_ops inet6_stream_ops;
 extern const struct proto_ops inet6_dgram_ops;