xref: /linux/include/net/icmp.h (revision 14c85021)
11da177e4SLinus Torvalds /*
21da177e4SLinus Torvalds  * INET		An implementation of the TCP/IP protocol suite for the LINUX
31da177e4SLinus Torvalds  *		operating system.  INET is implemented using the  BSD Socket
41da177e4SLinus Torvalds  *		interface as the means of communication with the user level.
51da177e4SLinus Torvalds  *
61da177e4SLinus Torvalds  *		Definitions for the ICMP module.
71da177e4SLinus Torvalds  *
81da177e4SLinus Torvalds  * Version:	@(#)icmp.h	1.0.4	05/13/93
91da177e4SLinus Torvalds  *
1002c30a84SJesper Juhl  * Authors:	Ross Biro
111da177e4SLinus Torvalds  *		Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
121da177e4SLinus Torvalds  *
131da177e4SLinus Torvalds  *		This program is free software; you can redistribute it and/or
141da177e4SLinus Torvalds  *		modify it under the terms of the GNU General Public License
151da177e4SLinus Torvalds  *		as published by the Free Software Foundation; either version
161da177e4SLinus Torvalds  *		2 of the License, or (at your option) any later version.
171da177e4SLinus Torvalds  */
181da177e4SLinus Torvalds #ifndef _ICMP_H
191da177e4SLinus Torvalds #define	_ICMP_H
201da177e4SLinus Torvalds 
211da177e4SLinus Torvalds #include <linux/config.h>
221da177e4SLinus Torvalds #include <linux/icmp.h>
231da177e4SLinus Torvalds 
24*14c85021SArnaldo Carvalho de Melo #include <net/inet_sock.h>
251da177e4SLinus Torvalds #include <net/snmp.h>
261da177e4SLinus Torvalds 
271da177e4SLinus Torvalds struct icmp_err {
281da177e4SLinus Torvalds   int		errno;
291da177e4SLinus Torvalds   unsigned	fatal:1;
301da177e4SLinus Torvalds };
311da177e4SLinus Torvalds 
321da177e4SLinus Torvalds extern struct icmp_err icmp_err_convert[];
331da177e4SLinus Torvalds DECLARE_SNMP_STAT(struct icmp_mib, icmp_statistics);
341da177e4SLinus Torvalds #define ICMP_INC_STATS(field)		SNMP_INC_STATS(icmp_statistics, field)
351da177e4SLinus Torvalds #define ICMP_INC_STATS_BH(field)	SNMP_INC_STATS_BH(icmp_statistics, field)
361da177e4SLinus Torvalds #define ICMP_INC_STATS_USER(field) 	SNMP_INC_STATS_USER(icmp_statistics, field)
371da177e4SLinus Torvalds 
38*14c85021SArnaldo Carvalho de Melo struct dst_entry;
39*14c85021SArnaldo Carvalho de Melo struct net_proto_family;
40*14c85021SArnaldo Carvalho de Melo struct sk_buff;
41*14c85021SArnaldo Carvalho de Melo 
421da177e4SLinus Torvalds extern void	icmp_send(struct sk_buff *skb_in,  int type, int code, u32 info);
431da177e4SLinus Torvalds extern int	icmp_rcv(struct sk_buff *skb);
441da177e4SLinus Torvalds extern int	icmp_ioctl(struct sock *sk, int cmd, unsigned long arg);
451da177e4SLinus Torvalds extern void	icmp_init(struct net_proto_family *ops);
461da177e4SLinus Torvalds 
471da177e4SLinus Torvalds /* Move into dst.h ? */
481da177e4SLinus Torvalds extern int 	xrlim_allow(struct dst_entry *dst, int timeout);
491da177e4SLinus Torvalds 
501da177e4SLinus Torvalds struct raw_sock {
511da177e4SLinus Torvalds 	/* inet_sock has to be the first member */
521da177e4SLinus Torvalds 	struct inet_sock   inet;
531da177e4SLinus Torvalds 	struct icmp_filter filter;
541da177e4SLinus Torvalds };
551da177e4SLinus Torvalds 
561da177e4SLinus Torvalds static inline struct raw_sock *raw_sk(const struct sock *sk)
571da177e4SLinus Torvalds {
581da177e4SLinus Torvalds 	return (struct raw_sock *)sk;
591da177e4SLinus Torvalds }
601da177e4SLinus Torvalds 
6120380731SArnaldo Carvalho de Melo extern int sysctl_icmp_echo_ignore_all;
6220380731SArnaldo Carvalho de Melo extern int sysctl_icmp_echo_ignore_broadcasts;
6320380731SArnaldo Carvalho de Melo extern int sysctl_icmp_ignore_bogus_error_responses;
6420380731SArnaldo Carvalho de Melo extern int sysctl_icmp_errors_use_inbound_ifaddr;
6520380731SArnaldo Carvalho de Melo extern int sysctl_icmp_ratelimit;
6620380731SArnaldo Carvalho de Melo extern int sysctl_icmp_ratemask;
6720380731SArnaldo Carvalho de Melo 
681da177e4SLinus Torvalds #endif	/* _ICMP_H */
69