Merge to Fedora kernel-2.6.18-1.2224_FC5 patched with stable patch-2.6.18.1-vs2.0...
[linux-2.6.git] / include / net / icmp.h
index edefb13..05f8ff7 100644 (file)
@@ -7,7 +7,7 @@
  *
  * Version:    @(#)icmp.h      1.0.4   05/13/93
  *
- * Authors:    Ross Biro, <bir7@leland.Stanford.Edu>
+ * Authors:    Ross Biro
  *             Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
  *
  *             This program is free software; you can redistribute it and/or
 #ifndef _ICMP_H
 #define        _ICMP_H
 
-#include <linux/config.h>
 #include <linux/icmp.h>
-#include <linux/skbuff.h>
 
-#include <net/sock.h>
-#include <net/protocol.h>
+#include <net/inet_sock.h>
 #include <net/snmp.h>
-#include <linux/ip.h>
 
 struct icmp_err {
   int          errno;
@@ -37,18 +33,10 @@ DECLARE_SNMP_STAT(struct icmp_mib, icmp_statistics);
 #define ICMP_INC_STATS(field)          SNMP_INC_STATS(icmp_statistics, field)
 #define ICMP_INC_STATS_BH(field)       SNMP_INC_STATS_BH(icmp_statistics, field)
 #define ICMP_INC_STATS_USER(field)     SNMP_INC_STATS_USER(icmp_statistics, field)
-#define ICMP_INC_STATS_FIELD(offt)                                     \
-       (*((unsigned long *) ((void *)                                  \
-                            per_cpu_ptr(icmp_statistics[!in_softirq()],\
-                                        smp_processor_id()) + offt)))++
-#define ICMP_INC_STATS_BH_FIELD(offt)                                  \
-       (*((unsigned long *) ((void *)                                  \
-                            per_cpu_ptr(icmp_statistics[0],            \
-                                        smp_processor_id()) + offt)))++
-#define ICMP_INC_STATS_USER_FIELD(offt)                                        \
-       (*((unsigned long *) ((void *)                                  \
-                            per_cpu_ptr(icmp_statistics[1],            \
-                                        smp_processor_id()) + offt)))++
+
+struct dst_entry;
+struct net_proto_family;
+struct sk_buff;
 
 extern void    icmp_send(struct sk_buff *skb_in,  int type, int code, u32 info);
 extern int     icmp_rcv(struct sk_buff *skb);
@@ -58,22 +46,22 @@ extern void icmp_init(struct net_proto_family *ops);
 /* Move into dst.h ? */
 extern int     xrlim_allow(struct dst_entry *dst, int timeout);
 
-struct raw_opt {
+struct raw_sock {
+       /* inet_sock has to be the first member */
+       struct inet_sock   inet;
        struct icmp_filter filter;
 };
 
-struct ipv6_pinfo;
-
-/* WARNING: don't change the layout of the members in raw_sock! */
-struct raw_sock {
-       struct sock       sk;
-#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
-       struct ipv6_pinfo *pinet6;
-#endif
-       struct inet_opt   inet;
-       struct raw_opt    raw4;
-};
+static inline struct raw_sock *raw_sk(const struct sock *sk)
+{
+       return (struct raw_sock *)sk;
+}
 
-#define raw4_sk(__sk) (&((struct raw_sock *)__sk)->raw4)
+extern int sysctl_icmp_echo_ignore_all;
+extern int sysctl_icmp_echo_ignore_broadcasts;
+extern int sysctl_icmp_ignore_bogus_error_responses;
+extern int sysctl_icmp_errors_use_inbound_ifaddr;
+extern int sysctl_icmp_ratelimit;
+extern int sysctl_icmp_ratemask;
 
 #endif /* _ICMP_H */