2005-04-16 15:20:36 -07:00
/*
* INET An implementation of the TCP / IP protocol suite for the LINUX
* operating system . INET is implemented using the BSD Socket
* interface as the means of communication with the user level .
*
* Definitions for the ICMP module .
*
* Version : @ ( # ) icmp . h 1.0 .4 05 / 13 / 93
*
2005-05-05 16:16:16 -07:00
* Authors : Ross Biro
2005-04-16 15:20:36 -07:00
* Fred N . van Kempen , < waltje @ uWalt . NL . Mugnet . ORG >
*
* This program is free software ; you can redistribute it and / or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation ; either version
* 2 of the License , or ( at your option ) any later version .
*/
# ifndef _ICMP_H
# define _ICMP_H
# include <linux/icmp.h>
2005-12-27 02:43:12 -02:00
# include <net/inet_sock.h>
2005-04-16 15:20:36 -07:00
# include <net/snmp.h>
struct icmp_err {
int errno ;
unsigned fatal : 1 ;
} ;
extern struct icmp_err icmp_err_convert [ ] ;
DECLARE_SNMP_STAT ( struct icmp_mib , icmp_statistics ) ;
2007-09-17 09:57:33 -07:00
DECLARE_SNMP_STAT ( struct icmpmsg_mib , icmpmsg_statistics ) ;
2005-04-16 15:20:36 -07:00
# 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)
2007-09-17 09:57:33 -07:00
# define ICMPMSGOUT_INC_STATS(field) SNMP_INC_STATS(icmpmsg_statistics, field+256)
# define ICMPMSGOUT_INC_STATS_BH(field) SNMP_INC_STATS_BH(icmpmsg_statistics, field+256)
# define ICMPMSGOUT_INC_STATS_USER(field) SNMP_INC_STATS_USER(icmpmsg_statistics, field+256)
# define ICMPMSGIN_INC_STATS(field) SNMP_INC_STATS(icmpmsg_statistics, field)
# define ICMPMSGIN_INC_STATS_BH(field) SNMP_INC_STATS_BH(icmpmsg_statistics, field)
# define ICMPMSGIN_INC_STATS_USER(field) SNMP_INC_STATS_USER(icmpmsg_statistics, field)
2005-04-16 15:20:36 -07:00
2005-12-27 02:43:12 -02:00
struct dst_entry ;
struct net_proto_family ;
struct sk_buff ;
2006-09-26 22:17:28 -07:00
extern void icmp_send ( struct sk_buff * skb_in , int type , int code , __be32 info ) ;
2005-04-16 15:20:36 -07:00
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 ) ;
2007-09-17 09:57:33 -07:00
extern void icmp_out_count ( unsigned char type ) ;
2005-04-16 15:20:36 -07:00
/* Move into dst.h ? */
extern int xrlim_allow ( struct dst_entry * dst , int timeout ) ;
struct raw_sock {
/* inet_sock has to be the first member */
struct inet_sock inet ;
struct icmp_filter filter ;
} ;
static inline struct raw_sock * raw_sk ( const struct sock * sk )
{
return ( struct raw_sock * ) sk ;
}
2005-08-16 02:18:02 -03:00
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 ;
2005-04-16 15:20:36 -07:00
# endif /* _ICMP_H */