suricata
decode-events.h
Go to the documentation of this file.
1/* Copyright (C) 2007-2022 Open Information Security Foundation
2 *
3 * You can copy, redistribute or modify this Program under the terms of
4 * the GNU General Public License version 2 as published by the Free
5 * Software Foundation.
6 *
7 * This program is distributed in the hope that it will be useful,
8 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 * GNU General Public License for more details.
11 *
12 * You should have received a copy of the GNU General Public License
13 * version 2 along with this program; if not, write to the Free Software
14 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
15 * 02110-1301, USA.
16 */
17
18/**
19 * \file
20 *
21 * \author Victor Julien <victor@inliniac.net>
22 * \author Anoop Saldanha <anoopsaldanha@gmail.com>
23 */
24
25#ifndef SURICATA_DECODE_EVENTS_H
26#define SURICATA_DECODE_EVENTS_H
27
28/* packet decoder events */
29enum {
30 /* AF_PACKET EVENTS */
31 AFP_TRUNC_PKT = 0, /**< packet truncated by af-packet */
32
33 /* IPV4 EVENTS */
34 IPV4_PKT_TOO_SMALL, /**< ipv4 pkt smaller than minimum header size */
35 IPV4_HLEN_TOO_SMALL, /**< ipv4 header smaller than minimum size */
36 IPV4_IPLEN_SMALLER_THAN_HLEN, /**< ipv4 pkt len smaller than ip header size */
37 IPV4_TRUNC_PKT, /**< truncated ipv4 packet */
38
39 /* IPV4 OPTIONS */
40 IPV4_OPT_INVALID, /**< invalid ip options */
41 IPV4_OPT_INVALID_LEN, /**< ip options with invalid len */
42 IPV4_OPT_MALFORMED, /**< malformed ip options */
43 IPV4_OPT_PAD_REQUIRED, /**< pad bytes are needed in ip options */
44 IPV4_OPT_EOL_REQUIRED, /**< "end of list" needed in ip options */
45 IPV4_OPT_DUPLICATE, /**< duplicated ip option */
46 IPV4_OPT_UNKNOWN, /**< unknown ip option */
47 IPV4_WRONG_IP_VER, /**< wrong ip version in ip options */
48 IPV4_WITH_ICMPV6, /**< IPv4 packet with ICMPv6 header */
49
50 /* ICMP EVENTS */
51 ICMPV4_PKT_TOO_SMALL, /**< icmpv4 packet smaller than minimum size */
52 ICMPV4_UNKNOWN_TYPE, /**< icmpv4 unknown type */
53 ICMPV4_UNKNOWN_CODE, /**< icmpv4 unknown code */
54 ICMPV4_IPV4_TRUNC_PKT, /**< truncated icmpv4 packet */
55 ICMPV4_IPV4_UNKNOWN_VER, /**< unknown version in icmpv4 packet*/
56
57 /* ICMPv6 EVENTS */
58 ICMPV6_UNKNOWN_TYPE, /**< icmpv6 unknown type */
59 ICMPV6_UNKNOWN_CODE, /**< icmpv6 unknown code */
60 ICMPV6_PKT_TOO_SMALL, /**< icmpv6 smaller than minimum size */
61 ICMPV6_IPV6_UNKNOWN_VER, /**< unknown version in icmpv6 packet */
62 ICMPV6_IPV6_TRUNC_PKT, /**< truncated icmpv6 packet */
63 ICMPV6_MLD_MESSAGE_WITH_INVALID_HL, /**< invalid MLD that doesn't have HL 1 */
64 ICMPV6_UNASSIGNED_TYPE, /**< unassigned ICMPv6 type */
65 ICMPV6_EXPERIMENTATION_TYPE, /**< private experimentation ICMPv6 type */
66
67 /* IPV6 EVENTS */
68 IPV6_PKT_TOO_SMALL, /**< ipv6 packet smaller than minimum size */
69 IPV6_TRUNC_PKT, /**< truncated ipv6 packet */
70 IPV6_TRUNC_EXTHDR, /**< truncated ipv6 extension header */
71 IPV6_EXTHDR_DUPL_FH, /**< duplicated "fragment" header in ipv6 extension headers */
72 IPV6_EXTHDR_USELESS_FH, /**< useless FH: offset 0 + no more fragments */
73 IPV6_EXTHDR_DUPL_RH, /**< duplicated "routing" header in ipv6 extension headers */
74 IPV6_EXTHDR_DUPL_HH, /**< duplicated "hop-by-hop" header in ipv6 extension headers */
75 IPV6_EXTHDR_DUPL_DH, /**< duplicated "destination" header in ipv6 extension headers */
76 IPV6_EXTHDR_DUPL_AH, /**< duplicated "authentication" header in ipv6 extension headers */
77 IPV6_EXTHDR_DUPL_EH, /**< duplicated "ESP" header in ipv6 extension headers */
78
79 IPV6_EXTHDR_INVALID_OPTLEN, /**< the opt len in an hop or dst hdr is invalid. */
80 IPV6_WRONG_IP_VER, /**< wrong version in ipv6 */
81 IPV6_EXTHDR_AH_RES_NOT_NULL, /**< AH hdr reserved fields not null (rfc 4302) */
82
83 IPV6_HOPOPTS_UNKNOWN_OPT, /**< unknown HOP opt */
84 IPV6_HOPOPTS_ONLY_PADDING, /**< all options in HOP opts are padding */
85 IPV6_DSTOPTS_UNKNOWN_OPT, /**< unknown DST opt */
86 IPV6_DSTOPTS_ONLY_PADDING, /**< all options in DST opts are padding */
87
88 IPV6_EXTHDR_RH_TYPE_0, /**< RH 0 is deprecated as per rfc5095 */
89 IPV6_EXTHDR_ZERO_LEN_PADN, /**< padN w/o data (0 len) */
90 IPV6_FH_NON_ZERO_RES_FIELD, /**< reserved field not zero */
91 IPV6_DATA_AFTER_NONE_HEADER, /**< data after 'none' (59) header */
92
93 IPV6_UNKNOWN_NEXT_HEADER, /**< unknown/unsupported next header */
94 IPV6_WITH_ICMPV4, /**< IPv6 packet with ICMPv4 header */
95
96 /* TCP EVENTS */
97 TCP_PKT_TOO_SMALL, /**< tcp packet smaller than minimum size */
98 TCP_HLEN_TOO_SMALL, /**< tcp header smaller than minimum size */
99 TCP_INVALID_OPTLEN, /**< invalid len in tcp options */
100
101 /* TCP OPTIONS */
102 TCP_OPT_INVALID_LEN, /**< tcp option with invalid len */
103 TCP_OPT_DUPLICATE, /**< duplicated tcp option */
104
105 /* UDP EVENTS */
106 UDP_PKT_TOO_SMALL, /**< udp packet smaller than minimum size */
107 UDP_HLEN_TOO_SMALL, /**< udp header smaller than minimum size */
108 UDP_HLEN_INVALID, /**< invalid len of upd header */
109 UDP_LEN_INVALID, /**< packet len in header is invalid */
110
111 /* SLL EVENTS */
112 SLL_PKT_TOO_SMALL, /**< sll packet smaller than minimum size */
113
114 /* SLL2 EVENTS */
115 SLL2_PKT_TOO_SMALL, /**< sll2 packet smaller than minimum size */
116
117 /* ETHERNET EVENTS */
118 ETHERNET_PKT_TOO_SMALL, /**< ethernet packet smaller than minimum size */
119 ETHERNET_UNKNOWN_ETHERTYPE, /**< ethertype unknown/unhandled*/
120
121 /* PPP EVENTS */
122 PPP_PKT_TOO_SMALL, /**< ppp packet smaller than minimum size */
123 PPPVJU_PKT_TOO_SMALL, /**< ppp vj uncompressed packet smaller than minimum size */
124 PPPIPV4_PKT_TOO_SMALL, /**< ppp ipv4 packet smaller than minimum size */
125 PPPIPV6_PKT_TOO_SMALL, /**< ppp ipv6 packet smaller than minimum size */
126 PPP_WRONG_TYPE, /**< wrong type in ppp frame */
127 PPP_UNSUP_PROTO, /**< protocol not supported for ppp */
128
129 /* PPPOE EVENTS */
130 PPPOE_PKT_TOO_SMALL, /**< pppoe packet smaller than minimum size */
131 PPPOE_WRONG_CODE, /**< wrong code for pppoe */
132 PPPOE_MALFORMED_TAGS, /**< malformed tags in pppoe */
133
134 /* GRE EVENTS */
135 GRE_PKT_TOO_SMALL, /**< gre packet smaller than minimum size */
136 GRE_WRONG_VERSION, /**< wrong version in gre header */
137 GRE_VERSION0_RECUR, /**< gre v0 recursion control */
138 GRE_VERSION0_FLAGS, /**< gre v0 flags */
139 GRE_VERSION0_HDR_TOO_BIG, /**< gre v0 header bigger than maximum size */
140 GRE_VERSION0_MALFORMED_SRE_HDR, /**< gre v0 malformed source route entry header */
141 GRE_VERSION1_CHKSUM, /**< gre v1 checksum */
142 GRE_VERSION1_ROUTE, /**< gre v1 routing */
143 GRE_VERSION1_SSR, /**< gre v1 strict source route */
144 GRE_VERSION1_RECUR, /**< gre v1 recursion control */
145 GRE_VERSION1_FLAGS, /**< gre v1 flags */
146 GRE_VERSION1_NO_KEY, /**< gre v1 no key present in header */
147 GRE_VERSION1_WRONG_PROTOCOL, /**< gre v1 wrong protocol */
148 GRE_VERSION1_MALFORMED_SRE_HDR, /**< gre v1 malformed source route entry header */
149 GRE_VERSION1_HDR_TOO_BIG, /**< gre v1 header too big */
150
151 /* VLAN EVENTS */
152 VLAN_HEADER_TOO_SMALL, /**< vlan header smaller than minimum size */
153 VLAN_UNKNOWN_TYPE, /**< vlan unknown type */
155
157
158 /* VNTAG EVENTS */
159 VNTAG_HEADER_TOO_SMALL, /**< vntag header smaller than minimum size */
160 VNTAG_UNKNOWN_TYPE, /**< vntag unknown type */
161
162 /* RAW EVENTS */
163 IPRAW_INVALID_IPV, /**< invalid ip version in ip raw */
164
165 /* LINKTYPE NULL EVENTS */
166 LTNULL_PKT_TOO_SMALL, /**< pkt too small for lt:null */
167 LTNULL_UNSUPPORTED_TYPE, /**< pkt has a type that the decoder doesn't support */
168
169 /* SCTP EVENTS */
170 SCTP_PKT_TOO_SMALL, /**< sctp packet smaller than minimum size */
171
172 /* ESP EVENTS */
173 ESP_PKT_TOO_SMALL, /**< esp packet smaller than minimum size */
174
175 /* Fragmentation reassembly events. */
181
182 /* Fragment ignored due to internal error */
185
186 /* IPv4 in IPv6 events */
189
190 /* IPv6 in IPv6 events */
193
194 /* MPLS decode events. */
201
202 /* VXLAN events */
204
205 /* Geneve events */
207
208 /* ERSPAN events */
212
213 /* Cisco Fabric Path/DCE events. */
215
216 /* Cisco HDLC events. */
218
219 /* NSH events */
226
227 /* generic events */
229
230 /* END OF DECODE EVENTS ON SINGLE PACKET */
232
233 /* STREAM EVENTS */
294
297
307
308 /* ARP EVENTS */
309 ARP_PKT_TOO_SMALL, /**< arp packet smaller than minimum size */
310 ARP_UNSUPPORTED_HARDWARE, /**< arp hw_type is not ethernet */
311 ARP_UNSUPPORTED_PROTOCOL, /**< arp proto_type is not ipv4 */
312 ARP_INVALID_PKT, /**< arp pkt len is not 28 */
313 ARP_INVALID_HARDWARE_SIZE, /**< arp hw size is 6 */
314 ARP_INVALID_PROTOCOL_SIZE, /**< arp proto size is not 4 */
315 ARP_UNSUPPORTED_OPCODE, /**< arp opcode is not listed */
316
317 /* should always be last! */
319};
320
321#define EVENT_IS_DECODER_PACKET_ERROR(e) \
322 ((e) < (DECODE_EVENT_PACKET_MAX))
323
324/* supported decoder events */
325
327 const char *event_name;
328 uint8_t code;
329};
330/* +1 for the end of table marker */
331extern const struct DecodeEvents_ DEvents[DECODE_EVENT_MAX + 1];
332
333#endif /* SURICATA_DECODE_EVENTS_H */
@ DECODE_EVENT_PACKET_MAX
@ GENERIC_TOO_MANY_LAYERS
@ IPV6_EXTHDR_AH_RES_NOT_NULL
@ IPV6_PKT_TOO_SMALL
@ PPPOE_PKT_TOO_SMALL
@ STREAM_EST_INVALID_ACK
@ STREAM_EST_PKT_BEFORE_LAST_ACK
@ GRE_WRONG_VERSION
@ MPLS_BAD_LABEL_IMPLICIT_NULL
@ SLL_PKT_TOO_SMALL
@ STREAM_WRONG_THREAD
@ STREAM_LASTACK_ACK_WRONG_SEQ
@ GRE_VERSION1_ROUTE
@ STREAM_EST_SYNACK_RESEND
@ IPV4_OPT_EOL_REQUIRED
@ IPV6_FRAG_PKT_TOO_LARGE
@ ARP_UNSUPPORTED_PROTOCOL
@ VLAN_HEADER_TOO_SMALL
@ STREAM_RST_BUT_NO_SESSION
@ VXLAN_UNKNOWN_PAYLOAD_TYPE
@ STREAM_REASSEMBLY_NO_SEGMENT
@ VNTAG_HEADER_TOO_SMALL
@ ARP_INVALID_HARDWARE_SIZE
@ IPV6_HOPOPTS_ONLY_PADDING
@ STREAM_4WHS_WRONG_SEQ
@ STREAM_REASSEMBLY_URGENT_OOB_LIMIT_REACHED
@ GRE_PKT_TOO_SMALL
@ ICMPV6_EXPERIMENTATION_TYPE
@ STREAM_REASSEMBLY_SEGMENT_BEFORE_BASE_SEQ
@ STREAM_REASSEMBLY_INSERT_INVALID
@ IPV6_DATA_AFTER_NONE_HEADER
@ STREAM_LASTACK_INVALID_ACK
@ STREAM_REASSEMBLY_INSERT_LIMIT
@ IPV6_EXTHDR_ZERO_LEN_PADN
@ STREAM_3WHS_SYNACK_TOSERVER_ON_SYN_RECV
@ GRE_VERSION1_CHKSUM
@ STREAM_3WHS_ACK_IN_WRONG_DIR
@ ESP_PKT_TOO_SMALL
@ STREAM_REASSEMBLY_SEQ_GAP
@ ICMPV6_IPV6_TRUNC_PKT
@ IPV6_FRAG_IGNORED
@ STREAM_PKT_RETRANSMISSION
@ ETHERNET_PKT_TOO_SMALL
@ STREAM_3WHS_SYNACK_TFO_DATA_IGNORED
@ TCP_OPT_INVALID_LEN
@ STREAM_3WHS_WRONG_SEQ_WRONG_ACK
@ IPV4_HLEN_TOO_SMALL
@ IPV4_WITH_ICMPV6
@ STREAM_PKT_INVALID_ACK
@ IPV6_EXTHDR_DUPL_DH
@ ERSPAN_UNSUPPORTED_VERSION
@ STREAM_RST_INVALID_ACK
@ IPV4_OPT_PAD_REQUIRED
@ STREAM_3WHS_SYNACK_FLOOD
@ IPV4_OPT_INVALID
@ ETHERNET_UNKNOWN_ETHERTYPE
@ CHDLC_PKT_TOO_SMALL
@ MPLS_BAD_LABEL_ROUTER_ALERT
@ STREAM_EST_PACKET_OUT_OF_WINDOW
@ STREAM_PKT_BAD_WINDOW_UPDATE
@ STREAM_FIN2_INVALID_ACK
@ IPV6_EXTHDR_DUPL_HH
@ STREAM_4WHS_SYNACK_WITH_WRONG_SYN
@ PPPOE_WRONG_CODE
@ STREAM_4WHS_INVALID_ACK
@ ICMPV6_PKT_TOO_SMALL
@ GRE_VERSION0_HDR_TOO_BIG
@ IPV4_OPT_MALFORMED
@ IPV6_DSTOPTS_ONLY_PADDING
@ STREAM_REASSEMBLY_INSERT_MEMCAP
@ STREAM_EST_ACK_ZWP_DATA
@ IPV4_WRONG_IP_VER
@ ERSPAN_HEADER_TOO_SMALL
@ PPPIPV4_PKT_TOO_SMALL
@ GRE_VERSION0_FLAGS
@ IPRAW_INVALID_IPV
@ IPV6_FRAG_OVERLAP
@ IPV6_EXTHDR_RH_TYPE_0
@ ICMPV6_UNASSIGNED_TYPE
@ GRE_VERSION1_NO_KEY
@ IPV6_FRAG_INVALID_LENGTH
@ STREAM_3WHS_SYN_FLOOD
@ VLAN_UNKNOWN_TYPE
@ NSH_BAD_HEADER_LENGTH
@ STREAM_3WHS_SYN_RESEND_DIFF_SEQ_ON_SYN_RECV
@ STREAM_FIN_SYN
@ ARP_UNSUPPORTED_HARDWARE
@ IPV4_IN_IPV6_PKT_TOO_SMALL
@ ICMPV6_UNKNOWN_CODE
@ STREAM_REASSEMBLY_DEPTH_REACHED
@ ARP_UNSUPPORTED_OPCODE
@ ERSPAN_TOO_MANY_VLAN_LAYERS
@ STREAM_3WHS_SYNACK_RESEND_WITH_DIFF_SEQ
@ IPV6_EXTHDR_DUPL_AH
@ STREAM_CLOSING_ACK_WRONG_SEQ
@ IPV6_TRUNC_EXTHDR
@ STREAM_FIN1_ACK_WRONG_SEQ
@ IPV4_OPT_DUPLICATE
@ STREAM_CLOSING_INVALID_ACK
@ IPV4_FRAG_IGNORED
@ VNTAG_UNKNOWN_TYPE
@ STREAM_EST_SYN_RESEND
@ TCP_PKT_TOO_SMALL
@ TCP_OPT_DUPLICATE
@ STREAM_RST_WITH_DATA
@ IPV4_OPT_INVALID_LEN
@ SLL2_PKT_TOO_SMALL
@ TCP_INVALID_OPTLEN
@ ICMPV6_MLD_MESSAGE_WITH_INVALID_HL
@ STREAM_FIN_BUT_NO_SESSION
@ STREAM_EST_SYNACK_RESEND_WITH_DIFF_SEQ
@ IPV6_EXTHDR_DUPL_RH
@ STREAM_REASSEMBLY_OVERLAP_DIFFERENT_DATA
@ MPLS_UNKNOWN_PAYLOAD_TYPE
@ TCP_HLEN_TOO_SMALL
@ GRE_VERSION1_HDR_TOO_BIG
@ STREAM_CLOSEWAIT_INVALID_ACK
@ IPV6_WRONG_IP_VER
@ PPPOE_MALFORMED_TAGS
@ NSH_RESERVED_TYPE
@ STREAM_CLOSEWAIT_FIN_OUT_OF_WINDOW
@ IPV6_EXTHDR_DUPL_FH
@ MPLS_BAD_LABEL_RESERVED
@ STREAM_FIN_OUT_OF_WINDOW
@ IPV6_TRUNC_PKT
@ ICMPV6_IPV6_UNKNOWN_VER
@ NSH_HEADER_TOO_SMALL
@ PPPVJU_PKT_TOO_SMALL
@ IPV6_EXTHDR_DUPL_EH
@ STREAM_SUSPECTED_RST_INJECT
@ SCTP_PKT_TOO_SMALL
@ IPV6_UNKNOWN_NEXT_HEADER
@ STREAM_PKT_SPURIOUS_RETRANSMISSION
@ IPV4_IN_IPV6_WRONG_IP_VER
@ UDP_HLEN_TOO_SMALL
@ STREAM_3WHS_ACK_DATA_INJECT
@ ICMPV4_IPV4_UNKNOWN_VER
@ NSH_UNSUPPORTED_VERSION
@ IEEE8021AH_HEADER_TOO_SMALL
@ LTNULL_PKT_TOO_SMALL
@ IPV6_WITH_ICMPV4
@ IPV4_TRUNC_PKT
@ IPV4_IPLEN_SMALLER_THAN_HLEN
@ ICMPV4_UNKNOWN_TYPE
@ STREAM_3WHS_RIGHT_SEQ_WRONG_ACK_EVASION
@ STREAM_TIMEWAIT_INVALID_ACK
@ ICMPV4_PKT_TOO_SMALL
@ IPV6_EXTHDR_USELESS_FH
@ STREAM_3WHS_SYNACK_IN_WRONG_DIRECTION
@ GRE_VERSION1_RECUR
@ GRE_VERSION1_FLAGS
@ STREAM_TIMEWAIT_ACK_WRONG_SEQ
@ AFP_TRUNC_PKT
@ STREAM_CLOSEWAIT_PKT_BEFORE_LAST_ACK
@ PPP_PKT_TOO_SMALL
@ LTNULL_UNSUPPORTED_TYPE
@ GRE_VERSION1_WRONG_PROTOCOL
@ STREAM_3WHS_ASYNC_WRONG_SEQ
@ UDP_LEN_INVALID
@ UDP_PKT_TOO_SMALL
@ GRE_VERSION1_MALFORMED_SRE_HDR
@ STREAM_SHUTDOWN_SYN_RESEND
@ VLAN_HEADER_TOO_MANY_LAYERS
@ DCE_PKT_TOO_SMALL
@ IPV6_IN_IPV6_WRONG_IP_VER
@ IPV6_DSTOPTS_UNKNOWN_OPT
@ STREAM_3WHS_SYNACK_RESEND_WITH_DIFFERENT_ACK
@ ICMPV4_UNKNOWN_CODE
@ STREAM_FIN2_FIN_WRONG_SEQ
@ IPV6_FH_NON_ZERO_RES_FIELD
@ UDP_HLEN_INVALID
@ ICMPV4_IPV4_TRUNC_PKT
@ ARP_INVALID_PKT
@ IPV4_FRAG_OVERLAP
@ STREAM_CLOSEWAIT_ACK_OUT_OF_WINDOW
@ IPV6_HOPOPTS_UNKNOWN_OPT
@ STREAM_FIN2_ACK_WRONG_SEQ
@ PPPIPV6_PKT_TOO_SMALL
@ GRE_VERSION1_SSR
@ GENEVE_UNKNOWN_PAYLOAD_TYPE
@ ARP_PKT_TOO_SMALL
@ STREAM_EST_SYN_RESEND_DIFF_SEQ
@ STREAM_FIN1_FIN_WRONG_SEQ
@ STREAM_EST_SYNACK_TOSERVER
@ IPV6_IN_IPV6_PKT_TOO_SMALL
@ IPV6_EXTHDR_INVALID_OPTLEN
@ NSH_UNKNOWN_PAYLOAD
@ PPP_WRONG_TYPE
@ MPLS_PKT_TOO_SMALL
@ STREAM_PKT_BROKEN_ACK
@ DECODE_EVENT_MAX
@ STREAM_EST_SYNACK_RESEND_WITH_DIFFERENT_ACK
@ STREAM_3WHS_SYN_TOCLIENT_ON_SYN_RECV
@ STREAM_3WHS_SYNACK_WITH_WRONG_ACK
@ PPP_UNSUP_PROTO
@ STREAM_4WHS_SYNACK_WITH_WRONG_ACK
@ ICMPV6_UNKNOWN_TYPE
@ MPLS_HEADER_TOO_SMALL
@ IPV4_FRAG_PKT_TOO_LARGE
@ NSH_UNSUPPORTED_TYPE
@ ARP_INVALID_PROTOCOL_SIZE
@ STREAM_PKT_INVALID_TIMESTAMP
@ GRE_VERSION0_MALFORMED_SRE_HDR
@ IPV4_PKT_TOO_SMALL
@ STREAM_FIN_INVALID_ACK
@ IPV4_OPT_UNKNOWN
@ STREAM_EST_SYN_TOCLIENT
@ STREAM_FIN1_INVALID_ACK
@ GRE_VERSION0_RECUR
const struct DecodeEvents_ DEvents[DECODE_EVENT_MAX+1]
const char * event_name