Line data Source code
1 : /* $OpenBSD: icmp_var.h,v 1.15 2017/02/07 22:30:16 jmatthew Exp $ */
2 : /* $NetBSD: icmp_var.h,v 1.8 1995/03/26 20:32:19 jtc Exp $ */
3 :
4 : /*
5 : * Copyright (c) 1982, 1986, 1993
6 : * The Regents of the University of California. All rights reserved.
7 : *
8 : * Redistribution and use in source and binary forms, with or without
9 : * modification, are permitted provided that the following conditions
10 : * are met:
11 : * 1. Redistributions of source code must retain the above copyright
12 : * notice, this list of conditions and the following disclaimer.
13 : * 2. Redistributions in binary form must reproduce the above copyright
14 : * notice, this list of conditions and the following disclaimer in the
15 : * documentation and/or other materials provided with the distribution.
16 : * 3. Neither the name of the University nor the names of its contributors
17 : * may be used to endorse or promote products derived from this software
18 : * without specific prior written permission.
19 : *
20 : * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
21 : * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22 : * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23 : * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
24 : * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25 : * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
26 : * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
27 : * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28 : * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
29 : * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
30 : * SUCH DAMAGE.
31 : *
32 : * @(#)icmp_var.h 8.1 (Berkeley) 6/10/93
33 : */
34 :
35 : #ifndef _NETINET_ICMP_VAR_H_
36 : #define _NETINET_ICMP_VAR_H_
37 :
38 : /*
39 : * Variables related to this implementation
40 : * of the internet control message protocol.
41 : */
42 : struct icmpstat {
43 : /* statistics related to icmp packets generated */
44 : u_long icps_error; /* # of calls to icmp_error */
45 : u_long icps_toofreq; /* no error because rate limiter */
46 : u_long icps_oldshort; /* no error because old ip too short */
47 : u_long icps_oldicmp; /* no error because old was icmp */
48 : u_long icps_outhist[ICMP_MAXTYPE + 1];
49 : /* statistics related to input messages processed */
50 : u_long icps_badcode; /* icmp_code out of range */
51 : u_long icps_tooshort; /* packet < ICMP_MINLEN */
52 : u_long icps_checksum; /* bad checksum */
53 : u_long icps_badlen; /* calculated bound mismatch */
54 : u_long icps_reflect; /* number of responses */
55 : u_long icps_bmcastecho; /* rejected broadcast icmps */
56 : u_long icps_inhist[ICMP_MAXTYPE + 1];
57 : };
58 :
59 : /*
60 : * Names for ICMP sysctl objects
61 : */
62 : #define ICMPCTL_MASKREPL 1 /* allow replies to netmask requests */
63 : #define ICMPCTL_BMCASTECHO 2 /* reply to icmps to broadcast/mcast */
64 : #define ICMPCTL_ERRPPSLIMIT 3 /* ICMP error pps limitation */
65 : #define ICMPCTL_REDIRACCEPT 4 /* Accept redirects from routers */
66 : #define ICMPCTL_REDIRTIMEOUT 5 /* Remove routes added via redirects */
67 : #define ICMPCTL_TSTAMPREPL 6 /* allow replies to timestamp requests */
68 : #define ICMPCTL_STATS 7 /* ICMP statistics */
69 : #define ICMPCTL_MAXID 8
70 :
71 : #define ICMPCTL_NAMES { \
72 : { 0, 0 }, \
73 : { "maskrepl", CTLTYPE_INT }, \
74 : { "bmcastecho", CTLTYPE_INT }, \
75 : { "errppslimit", CTLTYPE_INT }, \
76 : { "rediraccept", CTLTYPE_INT }, \
77 : { "redirtimeout", CTLTYPE_INT }, \
78 : { "tstamprepl", CTLTYPE_INT }, \
79 : { "stats", CTLTYPE_STRUCT } \
80 : }
81 :
82 : #define ICMPCTL_VARS { \
83 : NULL, \
84 : &icmpmaskrepl, \
85 : &icmpbmcastecho, \
86 : &icmperrppslim, \
87 : &icmp_rediraccept, \
88 : NULL, \
89 : &icmptstamprepl, \
90 : NULL \
91 : }
92 :
93 : #ifdef _KERNEL
94 :
95 : #include <sys/percpu.h>
96 :
97 : enum icmpstat_counters {
98 : icps_error,
99 : icps_toofreq,
100 : icps_oldshort,
101 : icps_oldicmp,
102 : icps_outhist,
103 : icps_badcode = icps_outhist + ICMP_MAXTYPE + 1,
104 : icps_tooshort,
105 : icps_checksum,
106 : icps_badlen,
107 : icps_reflect,
108 : icps_bmcastecho,
109 : icps_inhist,
110 : icps_ncounters = icps_inhist + ICMP_MAXTYPE + 1
111 : };
112 :
113 : extern struct cpumem *icmpcounters;
114 :
115 : static inline void
116 0 : icmpstat_inc(enum icmpstat_counters c)
117 : {
118 0 : counters_inc(icmpcounters, c);
119 0 : }
120 :
121 : #endif /* _KERNEL */
122 : #endif /* _NETINET_ICMP_VAR_H_ */
|