2 * Declarations for DIS field parsing.
3 * Copyright 2005, Scientific Research Corporation
4 * Initial implementation by Jeremy Ouellette <jouellet@scires.com>
8 * Wireshark - Network traffic analyzer
9 * By Gerald Combs <gerald@wireshark.org>
10 * Copyright 1998 Gerald Combs
12 * This program is free software; you can redistribute it and/or
13 * modify it under the terms of the GNU General Public License
14 * as published by the Free Software Foundation; either version 2
15 * of the License, or (at your option) any later version.
17 * This program is distributed in the hope that it will be useful,
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20 * GNU General Public License for more details.
22 * You should have received a copy of the GNU General Public License
23 * along with this program; if not, write to the Free Software
24 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
27 #ifndef __PACKET_DIS_FIELDPARSERS_H__
28 #define __PACKET_DIS_FIELDPARSERS_H__
30 #include <epan/packet.h>
32 extern int hf_dis_proto_ver
;
33 extern int hf_dis_exercise_id
;
34 extern int hf_dis_pdu_type
;
35 extern int hf_dis_proto_fam
;
36 extern int hf_dis_pdu_length
;
37 extern int hf_dis_entity_id_site
;
38 extern int hf_dis_entity_id_application
;
39 extern int hf_dis_entity_id_entity
;
40 extern int hf_dis_num_art_params
;
41 extern int hf_dis_entityKind
;
42 extern int hf_dis_entityDomain
;
43 extern int hf_dis_category_land
;
44 extern int hf_dis_category_air
;
45 extern int hf_dis_category_surface
;
46 extern int hf_dis_category_subsurface
;
47 extern int hf_dis_category_space
;
48 extern int hf_dis_category_radio
;
49 extern int hf_dis_num_electromagnetic_emission_systems
;
50 extern int hf_dis_emitter_name
;
51 extern int hf_dis_emission_function
;
52 extern int hf_dis_beam_function
;
53 extern int hf_dis_radio_id
;
54 extern int hf_dis_ens
;
55 extern int hf_dis_ens_class
;
56 extern int hf_dis_ens_type
;
57 extern int hf_dis_tdl_type
;
58 extern int hf_dis_sample_rate
;
59 extern int hf_dis_data_length
;
60 extern int hf_dis_num_of_samples
;
61 extern int hf_dis_signal_data
;
62 extern int hf_dis_radio_category
;
63 extern int hf_dis_nomenclature_version
;
64 extern int hf_dis_nomenclature
;
65 extern int hf_dis_radio_transmit_state
;
66 extern int hf_dis_radio_input_source
;
67 extern int hf_dis_antenna_pattern_type
;
68 extern int hf_dis_antenna_pattern_length
;
69 extern int hf_dis_transmit_frequency
;
70 extern int hf_dis_spread_spectrum_usage
;
71 extern int hf_dis_frequency_hopping
;
72 extern int hf_dis_pseudo_noise_modulation
;
73 extern int hf_dis_time_hopping
;
74 extern int hf_dis_modulation_major
;
75 extern int hf_dis_modulation_system
;
76 extern int hf_dis_crypto_system
;
77 extern int hf_dis_crypto_key
;
78 extern int hf_dis_encryption_mode
;
79 extern int hf_dis_key_identifier
;
80 extern int hf_dis_modulation_parameter_length
;
81 extern int hf_dis_mod_param_fh_net_id
;
82 extern int hf_dis_mod_param_fh_set_id
;
83 extern int hf_dis_mod_param_fh_lo_set_id
;
84 extern int hf_dis_mod_param_fh_msg_start
;
85 extern int hf_dis_mod_param_fh_reserved
;
86 extern int hf_dis_mod_param_fh_sync_time_offset
;
87 extern int hf_dis_mod_param_fh_security_key
;
88 extern int hf_dis_mod_param_fh_clear_channel
;
89 extern int hf_dis_mod_param_dump
;
90 extern int hf_dis_mod_param_ts_allocation_mode
;
91 extern int hf_dis_mod_param_transmitter_prim_mode
;
92 extern int hf_dis_mod_param_transmitter_second_mode
;
93 extern int hf_dis_mod_param_sync_state
;
94 extern int hf_dis_mod_param_network_sync_id
;
95 extern int hf_dis_antenna_pattern_parameter_dump
;
96 extern int hf_dis_num_shafts
;
97 extern int hf_dis_num_apas
;
98 extern int hf_dis_num_ua_emitter_systems
;
100 extern int ett_dis_ens
;
101 extern int ett_dis_crypto_key
;
105 /* enumeration of all field types used for DIS parsing. */
108 /* end marker to indicate the end of a parser sequence */
109 DIS_FIELDTYPE_END
= 0,
111 /* basic numeric types */
117 DIS_FIELDTYPE_UINT16
,
118 DIS_FIELDTYPE_UINT32
,
119 DIS_FIELDTYPE_UINT64
,
120 DIS_FIELDTYPE_FLOAT32
,
121 DIS_FIELDTYPE_FLOAT64
,
130 DIS_FIELDTYPE_ACKNOWLEDGE_FLAG
,
131 DIS_FIELDTYPE_ACTION_ID
,
132 DIS_FIELDTYPE_APPLICATION_GENERAL_STATUS
,
133 DIS_FIELDTYPE_APPLICATION_STATUS_TYPE
,
134 DIS_FIELDTYPE_APPLICATION_TYPE
,
135 DIS_FIELDTYPE_CATEGORY
,
136 DIS_FIELDTYPE_CONTROL_ID
,
137 DIS_FIELDTYPE_DETONATION_RESULT
,
138 DIS_FIELDTYPE_DOMAIN
,
139 DIS_FIELDTYPE_ENTITY_KIND
,
140 DIS_FIELDTYPE_FROZEN_BEHAVIOR
,
141 DIS_FIELDTYPE_PARAMETER_TYPE_DESIGNATOR
,
142 DIS_FIELDTYPE_PDU_TYPE
,
143 DIS_FIELDTYPE_PERSISTENT_OBJECT_TYPE
,
144 DIS_FIELDTYPE_PERSISTENT_OBJECT_CLASS
,
145 DIS_FIELDTYPE_PROTOCOL_FAMILY
,
146 DIS_FIELDTYPE_PROTOCOL_VERSION
,
147 DIS_FIELDTYPE_REASON
,
148 DIS_FIELDTYPE_REQUEST_STATUS
,
149 DIS_FIELDTYPE_REQUIRED_RELIABILITY_SERVICE
,
150 DIS_FIELDTYPE_RESPONSE_FLAG
,
151 DIS_FIELDTYPE_TDL_TYPE
,
152 DIS_FIELDTYPE_RADIO_CATEGORY
,
153 DIS_FIELDTYPE_NOMENCLATURE_VERSION
,
154 DIS_FIELDTYPE_NOMENCLATURE
,
155 DIS_FIELDTYPE_RADIO_TRANSMIT_STATE
,
156 DIS_FIELDTYPE_RADIO_INPUT_SOURCE
,
157 DIS_FIELDTYPE_ANTENNA_PATTERN_TYPE
,
158 DIS_FIELDTYPE_SPREAD_SPECTRUM
,
159 DIS_FIELDTYPE_MODULATION_MAJOR
,
160 DIS_FIELDTYPE_MODULATION_DETAIL
,
161 DIS_FIELDTYPE_MODULATION_SYSTEM
,
162 DIS_FIELDTYPE_CRYPTO_SYSTEM
,
163 DIS_FIELDTYPE_EMITTER_NAME
,
164 DIS_FIELDTYPE_EMISSION_FUNCTION
,
165 DIS_FIELDTYPE_BEAM_FUNCTION
,
167 /* other atomic types */
168 DIS_FIELDTYPE_PDU_LENGTH
,
169 DIS_FIELDTYPE_EXERCISE_ID
,
171 DIS_FIELDTYPE_APPLICATION
,
172 DIS_FIELDTYPE_ENTITY
,
173 DIS_FIELDTYPE_APPEARANCE
,
174 DIS_FIELDTYPE_ARTIC_PARAM_TYPE
,
175 DIS_FIELDTYPE_CAPABILITIES
,
176 DIS_FIELDTYPE_COUNTRY
,
177 DIS_FIELDTYPE_DATUM_ID
,
178 DIS_FIELDTYPE_DATUM_LENGTH
,
179 DIS_FIELDTYPE_DEAD_RECKONING_PARAMS
,
180 DIS_FIELDTYPE_DEAD_RECKONING_ALGORITHM
,
181 DIS_FIELDTYPE_DEAD_RECKONING_OTHER_PARAMS
,
182 DIS_FIELDTYPE_ENTITY_MARKING
,
184 DIS_FIELDTYPE_FIXED_DATUM_VALUE
,
185 DIS_FIELDTYPE_FIXED_LEN_STR
,
186 DIS_FIELDTYPE_FORCE_ID
,
188 DIS_FIELDTYPE_NUM_FIXED_DATA
,
189 DIS_FIELDTYPE_NUM_VARIABLE_DATA
,
190 DIS_FIELDTYPE_REQUEST_ID
,
191 DIS_FIELDTYPE_SPECIFIC
,
192 DIS_FIELDTYPE_SUBCATEGORY
,
193 DIS_FIELDTYPE_TIME_INTERVAL
,
194 DIS_FIELDTYPE_TIMESTAMP
,
195 DIS_FIELDTYPE_WARHEAD
,
196 DIS_FIELDTYPE_RADIO_ID
,
197 DIS_FIELDTYPE_SAMPLE_RATE
,
198 DIS_FIELDTYPE_DATA_LENGTH
,
199 DIS_FIELDTYPE_NUMBER_OF_SAMPLES
,
200 DIS_FIELDTYPE_NUM_ARTICULATION_PARAMS
,
201 DIS_FIELDTYPE_ANTENNA_PATTERN_LENGTH
,
202 DIS_FIELDTYPE_TRANSMIT_FREQUENCY
,
203 DIS_FIELDTYPE_MODULATION_PARAMETER_LENGTH
,
204 DIS_FIELDTYPE_FH_NETWORK_ID
,
205 DIS_FIELDTYPE_FH_SET_ID
,
206 DIS_FIELDTYPE_LO_SET_ID
,
207 DIS_FIELDTYPE_FH_MSG_START
,
208 DIS_FIELDTYPE_RESERVED
,
209 DIS_FIELDTYPE_FH_SYNC_TIME_OFFSET
,
210 DIS_FIELDTYPE_FH_SECURITY_KEY
,
211 DIS_FIELDTYPE_FH_CLEAR_CHANNEL
,
212 DIS_FIELDTYPE_TS_ALLOCATION_MODE
,
213 DIS_FIELDTYPE_TRANSMITTER_PRIMARY_MODE
,
214 DIS_FIELDTYPE_TRANSMITTER_SECONDARY_MODE
,
215 DIS_FIELDTYPE_JTIDS_SYNC_STATE
,
216 DIS_FIELDTYPE_NETWORK_SYNC_ID
,
217 DIS_FIELDTYPE_NUM_ELECTROMAGNETIC_EMISSION_SYSTEMS
,
218 DIS_FIELDTYPE_NUM_OF_SHAFTS
,
219 DIS_FIELDTYPE_NUM_OF_APAS
,
220 DIS_FIELDTYPE_NUM_OF_UA_EMITTER_SYSTEMS
,
221 DIS_FIELDTYPE_NUM_OF_UA_EMITTER_SYSTEM_BEAMS
,
223 /* composite types */
224 DIS_FIELDTYPE_BURST_DESCRIPTOR
,
225 DIS_FIELDTYPE_CLOCK_TIME
,
226 DIS_FIELDTYPE_ENTITY_ID
,
227 DIS_FIELDTYPE_ENTITY_TYPE
,
228 DIS_FIELDTYPE_RADIO_ENTITY_TYPE
,
229 DIS_FIELDTYPE_EVENT_ID
,
230 DIS_FIELDTYPE_LINEAR_VELOCITY
,
231 DIS_FIELDTYPE_LOCATION_ENTITY
,
232 DIS_FIELDTYPE_LOCATION_WORLD
,
233 DIS_FIELDTYPE_ORIENTATION
,
234 DIS_FIELDTYPE_SIMULATION_ADDRESS
,
235 DIS_FIELDTYPE_VARIABLE_DATUM_VALUE
,
236 DIS_FIELDTYPE_VECTOR_32
,
237 DIS_FIELDTYPE_VECTOR_64
,
238 DIS_FIELDTYPE_ENCODING_SCHEME
,
239 DIS_FIELDTYPE_ANTENNA_LOCATION
,
240 DIS_FIELDTYPE_REL_ANTENNA_LOCATON
,
241 DIS_FIELDTYPE_MODULATION_TYPE
,
242 DIS_FIELDTYPE_CRYPTO_KEY_ID
,
243 DIS_FIELDTYPE_MODULATION_PARAMETERS
,
244 DIS_FIELDTYPE_ANTENNA_PATTERN_PARAMETERS
,
245 DIS_FIELDTYPE_MOD_PARAMS_CCTT_SINCGARS
,
246 DIS_FIELDTYPE_MOD_PARAMS_JTIDS_MIDS
,
247 DIS_FIELDTYPE_ELECTROMAGNETIC_EMISSION_SYSTEM_BEAM
,
248 DIS_FIELDTYPE_ELECTROMAGNETIC_EMISSION_SYSTEM
,
249 DIS_FIELDTYPE_EMITTER_SYSTEM
,
250 DIS_FIELDTYPE_FUNDAMENTAL_PARAMETER_DATA
,
251 DIS_FIELDTYPE_TRACK_JAM
,
252 DIS_FIELDTYPE_SHAFTS
,
254 DIS_FIELDTYPE_UA_EMITTER_SYSTEMS
,
255 DIS_FIELDTYPE_UA_BEAMS
,
256 DIS_FIELDTYPE_UA_EMITTER_SYSTEM
,
257 DIS_FIELDTYPE_UA_BEAM_FUNDAMENTAL_PARAMETER_DATA
,
260 DIS_FIELDTYPE_FIXED_DATUMS
,
261 DIS_FIELDTYPE_FIXED_DATUM_IDS
,
262 DIS_FIELDTYPE_VARIABLE_DATUMS
,
263 DIS_FIELDTYPE_VARIABLE_DATUM_IDS
,
264 DIS_FIELDTYPE_VARIABLE_PARAMETERS
,
265 DIS_FIELDTYPE_VARIABLE_RECORDS
,
266 DIS_FIELDTYPE_RADIO_DATA
270 /* Struct which contains the data needed to parse a single DIS field.
272 typedef struct DIS_ParserNode_T
274 DIS_FieldType fieldType
;
275 const char *fieldLabel
;
278 struct DIS_ParserNode_T
*children
;
282 /* Struct which associates a name with a particular bit combination.
288 } DIS_BitMaskMapping
;
290 /* Struct which specifies all possible bit mappings associated with
291 * a particular bit mask.
298 DIS_BitMaskMapping bitMappings
[33];
302 extern DIS_ParserNode DIS_FIELDS_PDU_HEADER
[];
303 extern DIS_ParserNode DIS_FIELDS_PERSISTENT_OBJECT_HEADER
[];
305 /* Composite types */
306 extern DIS_ParserNode DIS_FIELDS_BURST_DESCRIPTOR
[];
307 extern DIS_ParserNode DIS_FIELDS_CLOCK_TIME
[];
308 extern DIS_ParserNode DIS_FIELDS_ENTITY_ID
[];
309 extern DIS_ParserNode DIS_FIELDS_ENTITY_TYPE
[];
310 extern DIS_ParserNode DIS_FIELDS_RADIO_ENTITY_TYPE
[];
311 extern DIS_ParserNode DIS_FIELDS_MODULATION_TYPE
[];
312 extern DIS_ParserNode DIS_FIELDS_EVENT_ID
[];
313 extern DIS_ParserNode DIS_FIELDS_ORIENTATION
[];
314 extern DIS_ParserNode DIS_FIELDS_SIMULATION_ADDRESS
[];
315 extern DIS_ParserNode DIS_FIELDS_VECTOR_FLOAT_32
[];
316 extern DIS_ParserNode DIS_FIELDS_VECTOR_FLOAT_64
[];
317 extern DIS_ParserNode DIS_FIELDS_MOD_PARAMS_CCTT_SINCGARS
[];
318 extern DIS_ParserNode DIS_FIELDS_MOD_PARAMS_JTIDS_MIDS
[];
319 extern DIS_ParserNode DIS_FIELDS_EMITTER_SYSTEM
[];
320 extern DIS_ParserNode DIS_FIELDS_FUNDAMENTAL_PARAMETER_DATA
[];
321 extern DIS_ParserNode DIS_FIELDS_TRACK_JAM
[];
322 extern DIS_ParserNode DIS_FIELDS_UA_EMITTER_SYSTEM
[];
323 extern DIS_ParserNode DIS_FIELDS_UA_BEAM_FUNDAMENTAL_PARAMETER_DATA
[];
326 extern DIS_ParserNode DIS_FIELDS_FIXED_DATUM
[];
327 extern DIS_ParserNode DIS_FIELDS_VARIABLE_DATUM
[];
328 extern DIS_ParserNode DIS_FIELDS_DATUM_IDS
[];
329 extern DIS_ParserNode DIS_FIELDS_VP_TYPE
[];
330 extern DIS_ParserNode DIS_FIELDS_VR_TYPE
[];
331 extern DIS_ParserNode DIS_FIELDS_VR_ELECTROMAGNETIC_EMISSION_SYSTEM_BEAM
[];
332 extern DIS_ParserNode DIS_FIELDS_VR_ELECTROMAGNETIC_EMISSION_SYSTEM
[];
333 extern DIS_ParserNode DIS_FIELDS_VR_UA_SHAFT
[];
334 extern DIS_ParserNode DIS_FIELDS_VR_APA
[];
335 extern DIS_ParserNode DIS_FIELDS_VR_UA_EMITTER_SYSTEM
[];
336 extern DIS_ParserNode DIS_FIELDS_VR_UA_BEAM
[];
339 extern DIS_ParserNode DIS_FIELDS_NONE
[];
340 extern DIS_BitMask DIS_APPEARANCE_LANDPLATFORM
[];
341 extern DIS_BitMask DIS_APPEARANCE_LIFEFORM
[];
343 extern void initializeFieldParsers(void);
345 extern gint
parseField_Bytes(tvbuff_t
*tvb
, proto_tree
*tree
, gint offset
, DIS_ParserNode parserNode
, guint numBytes
);
347 extern gint
parseField_Bitmask(tvbuff_t
*tvb
, proto_tree
*tree
, gint offset
, DIS_ParserNode parserNode
, guint numBytes
);
349 extern gint
parseField_UInt(tvbuff_t
*tvb
, proto_tree
*tree
, gint offset
, DIS_ParserNode parserNode
, guint numBytes
);
351 extern gint
parseField_Int(tvbuff_t
*tvb
, proto_tree
*tree
, gint offset
, DIS_ParserNode parserNode
, guint numBytes
);
353 extern gint
parseField_Enum(tvbuff_t
*tvb
, proto_tree
*tree
, gint offset
, DIS_ParserNode parserNode
, guint numBytes
);
355 extern gint
parseField_Pad(tvbuff_t
*tvb
, proto_tree
*tree
, gint offset
, DIS_ParserNode parserNode
, guint numBytes
);
357 extern gint
parseField_Float(tvbuff_t
*tvb
, proto_tree
*tree
, gint offset
, DIS_ParserNode parserNode
);
359 extern gint
parseField_Double(tvbuff_t
*tvb
, proto_tree
*tree
, gint offset
, DIS_ParserNode parserNode
);
361 extern gint
parseField_Timestamp(tvbuff_t
*tvb
, proto_tree
*tree
, gint offset
, DIS_ParserNode parserNode
);
363 extern gint
parseField_VariableParameter(tvbuff_t
*tvb
, proto_tree
*tree
, gint offset
);
365 extern gint
parseField_VariableRecord(tvbuff_t
*tvb
, proto_tree
*tree
, gint offset
);
367 extern gint
parseField_ElectromagneticEmissionSystemBeam(tvbuff_t
*tvb
, proto_tree
*tree
, gint offset
);
369 extern guint32 disProtocolVersion
;
370 extern guint32 pduType
;
371 extern guint32 protocolFamily
;
372 extern guint32 persistentObjectPduType
;
373 extern guint32 entityKind
;
374 extern guint32 entityDomain
;
375 extern guint32 radioID
;
376 extern guint32 disRadioTransmitState
;
377 extern guint32 encodingScheme
;
378 extern guint32 numSamples
;
379 extern guint32 numFixed
;
380 extern guint32 numVariable
;
381 extern guint32 numBeams
;
382 extern guint32 numTrackJamTargets
;
383 extern guint32 numShafts
;
384 extern guint32 numApas
;
385 extern guint32 numUAEmitter
;
386 extern guint32 numUABeams
;
387 extern guint32 variableDatumLength
;
388 extern guint32 variableRecordLength
;
389 extern guint32 majorModulation
;
390 extern guint32 systemModulation
;
391 extern guint32 modulationParamLength
;
392 extern guint32 disAntennaPattern
;
395 #endif /* packet-dis-fieldparsers.h */