source: lib/erftypes.h @ ccabd47

cachetimestampsdevelopetsiliverc-4.0.3rc-4.0.4ringdecrementfixringperformance
Last change on this file since ccabd47 was a857389, checked in by Shane Alcock <salcock@…>, 3 years ago

Initial support for ERF provenance records

Update erftypes.h with TYPE_META (27).
Check for ERF_TYPE_MAX rather than some arbitrary type in ERF sanity checks. In Wireshark we recently completely removed these checks as there are only a few types before TYPE_PAD/ERF_TYPE_MAX, but leave them in for now.
Add TRACE_TYPE_ERF_META for provenance record payload.
Continue to use TRACE_RT_DATA_ERF as provenance is a valid ERF record. Note: this means that LIBTRACE_IS_META_PACKET() will currently return FALSE which may confuse some tools. Other places in the code also tend to check for TRACE_TYPE_NONDATA which isn't true here either.
Return zero for wire length of provenance records.
Don't allow snapping them (just return the same value).
Skip provenance records in l2 parsers and trace_get_payload_from_meta().
Return provenance payload for trace_get_packet_meta().

Also add support for a couple of missing ERF_TYPE_ETH_COLOR variants.

  • Property mode set to 100644
File size: 4.4 KB
Line 
1/*
2 *
3 * Copyright (c) 2007-2016 The University of Waikato, Hamilton, New Zealand.
4 * All rights reserved.
5 *
6 * This file is part of libtrace.
7 *
8 * This code has been developed by the University of Waikato WAND
9 * research group. For further information please see http://www.wand.net.nz/
10 *
11 * libtrace is free software; you can redistribute it and/or modify
12 * it under the terms of the GNU Lesser General Public License as published by
13 * the Free Software Foundation; either version 3 of the License, or
14 * (at your option) any later version.
15 *
16 * libtrace is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19 * GNU Lesser General Public License for more details.
20 *
21 * You should have received a copy of the GNU Lesser General Public License
22 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
23 *
24 *
25 */
26#ifndef _ERFTYPES_H_
27#define _ERFTYPES_H_
28
29/** @file
30 *
31 * @brief Header file containing all the possible GPP record types
32 *
33 * @author Daniel Lawson
34 * @author Perry Lorier
35 * @author Shane Alcock
36 *
37 * @version $Id$
38 */
39
40/* GPP record type defines - these can indicate the header that immediately
41 * follows the ERF header and/or an adjustment to the layout of the ERF header
42 * itself, e.g. due to the use of Coloring.
43 *
44 * NOTE: "Color" refers to the concept of marking packets based on matching
45 * a particular filter or classification */
46
47#ifndef TYPE_LEGACY
48#define TYPE_LEGACY             0       /**< Legacy */
49#endif
50
51#ifndef TYPE_HDLC_POS
52#define TYPE_HDLC_POS           1       /**< PoS with HDLC framing */
53#endif
54
55#ifndef TYPE_ETH
56#define TYPE_ETH                2       /**< Ethernet */
57#endif
58
59#ifndef TYPE_ATM
60#define TYPE_ATM                3       /**< ATM Cell */
61#endif
62
63#ifndef TYPE_AAL5
64#define TYPE_AAL5               4       /**< AAL5 Frame */
65#endif
66
67#ifndef TYPE_MC_HDLC
68#define TYPE_MC_HDLC            5       /**< Multi-channel HDLC */
69#endif
70
71#ifndef TYPE_MC_RAW
72#define TYPE_MC_RAW             6       /**< Multi-channel Raw link record */
73#endif
74
75#ifndef TYPE_MC_ATM
76#define TYPE_MC_ATM             7       /**< Multi-channel ATM Cell */
77#endif
78
79#ifndef TYPE_MC_RAW_CHANNEL
80#define TYPE_MC_RAW_CHANNEL     8       /**< Multi-channel Raw link data */
81#endif
82
83#ifndef TYPE_MC_AAL5
84#define TYPE_MC_AAL5            9       /**< Multi-channel AAL5 */
85#endif
86
87/** PoS with HDLC framing and classification information in the loss counter
88 *  field */
89#ifndef TYPE_COLOR_HDLC_POS
90#define TYPE_COLOR_HDLC_POS     10     
91#endif
92
93/** Ethernet with classification information in the loss counter field */
94#ifndef TYPE_COLOR_ETH
95#define TYPE_COLOR_ETH          11
96#endif
97
98/** Multi-channel AAL2 */
99#ifndef TYPE_MC_AAL2
100#define TYPE_MC_AAL2            12
101#endif
102
103/** IP counter ERF record */
104#ifndef TYPE_IP_COUNTER
105#define TYPE_IP_COUNTER         13
106#endif
107
108/** TCP flow counter ERF record */
109#ifndef TYPE_TCP_FLOW_COUNTER
110#define TYPE_TCP_FLOW_COUNTER   14
111#endif
112
113/** PoS with HDLC framing with DSM color information in the loss counter field*/
114#ifndef TYPE_DSM_COLOR_HDLC_POS
115#define TYPE_DSM_COLOR_HDLC_POS 15
116#endif
117
118/** Ethernet with DSM color information in the loss counter field */
119#ifndef TYPE_DSM_COLOR_ETH
120#define TYPE_DSM_COLOR_ETH      16
121#endif
122
123/** Multi-channel HDLC with classification information in the loss counter
124 *  field */
125#ifndef TYPE_COLOR_MC_HDLC_POS
126#define TYPE_COLOR_MC_HDLC_POS  17
127#endif
128
129/** AAL2 Frame */
130#ifndef TYPE_AAL2
131#define TYPE_AAL2               18
132#endif
133
134/** Colored PoS HDLC record with Hash load balancing */
135#ifndef TYPE_COLOR_HASH_POS
136#define TYPE_COLOR_HASH_POS     19
137#endif
138
139/** Colored Ethernet with Hash load balancing */
140#ifndef TYPE_COLOR_HASH_ETH
141#define TYPE_COLOR_HASH_ETH     20
142#endif
143
144/** Infiniband */
145#ifndef TYPE_INFINIBAND
146#define TYPE_INFINIBAND         21
147#endif
148
149/** IPv4 */
150#ifndef TYPE_IPV4
151#define TYPE_IPV4               22
152#endif
153
154/** IPv6 */
155#ifndef TYPE_IPV6
156#define TYPE_IPV6               23
157#endif
158
159/** Raw link data, usually SONET or SDH */
160#ifndef TYPE_RAW_LINK
161#define TYPE_RAW_LINK           24
162#endif
163
164/** Provenance Metadata Record */
165#ifndef ERF_TYPE_META
166#define ERF_TYPE_META   27
167#endif
168/* TODO: Endace has deprecated TYPE_* in favour of ERF_TYPE_*. New types do not have TYPE_* aliases. */
169#ifndef TYPE_META
170#define TYPE_META       ERF_TYPE_META
171#endif
172
173/** Padding record */
174#ifndef TYPE_PAD
175#define TYPE_PAD                48
176#endif
177
178#ifndef ERF_TYPE_MAX
179#define ERF_TYPE_MAX    TYPE_PAD
180#endif
181
182#endif /* _ERFTYPES_H_ */
Note: See TracBrowser for help on using the repository browser.