X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=include%2Fnet%2Ficmp.h;h=dc09474efcf38e2cb02329a4ef0bf2fd8633bf7f;hb=97bf2856c6014879bd04983a3e9dfcdac1e7fe85;hp=edefb1387c95c71b69fa3ba9367fef297488c688;hpb=5273a3df6485dc2ad6aa7ddd441b9a21970f003b;p=linux-2.6.git diff --git a/include/net/icmp.h b/include/net/icmp.h index edefb1387..dc09474ef 100644 --- a/include/net/icmp.h +++ b/include/net/icmp.h @@ -7,7 +7,7 @@ * * Version: @(#)icmp.h 1.0.4 05/13/93 * - * Authors: Ross Biro, + * Authors: Ross Biro * Fred N. van Kempen, * * This program is free software; you can redistribute it and/or @@ -18,14 +18,10 @@ #ifndef _ICMP_H #define _ICMP_H -#include #include -#include -#include -#include +#include #include -#include struct icmp_err { int errno; @@ -37,20 +33,12 @@ 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)))++ -extern void icmp_send(struct sk_buff *skb_in, int type, int code, u32 info); +struct dst_entry; +struct net_proto_family; +struct sk_buff; + +extern void icmp_send(struct sk_buff *skb_in, int type, int code, __be32 info); extern int icmp_rcv(struct sk_buff *skb); extern int icmp_ioctl(struct sock *sk, int cmd, unsigned long arg); extern void icmp_init(struct net_proto_family *ops); @@ -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 */