2 * packet-h248_annex_e.c
5 * (c) 2006, Luis E. Garcia Ontanon <luis@ontanon.org>
7 * Wireshark - Network traffic analyzer
8 * By Gerald Combs <gerald@wireshark.org>
9 * Copyright 1998 Gerald Combs
11 * SPDX-License-Identifier: GPL-2.0-or-later
18 #include <epan/packet.h>
22 #include "packet-h248.h"
24 void proto_register_h248_annex_e(void);
26 #define PNAME "H.248 Annex E"
27 #define PSNAME "H248E"
28 #define PFNAME "h248e"
31 static int proto_h248_annex_E
;
33 static bool h248_e_implicit
;
36 /* H.248.1 E.1 Generic Package */
37 static int hf_h248_pkg_generic
;
38 static int hf_h248_pkg_generic_cause_evt
;
39 static int hf_h248_pkg_generic_cause_gencause
;
40 static int hf_h248_pkg_generic_cause_failurecause
;
41 static int hf_h248_pkg_generic_sc_evt
;
42 static int hf_h248_pkg_generic_sc_sig_id
;
43 static int hf_h248_pkg_generic_sc_meth
;
44 static int hf_h248_pkg_generic_sc_slid
;
45 static int hf_h248_pkg_generic_sc_rid
;
47 static int ett_h248_pkg_generic_cause_evt
;
48 static int ett_h248_pkg_generic
;
49 static int ett_h248_pkg_generic_sc_evt
;
51 static const value_string h248_pkg_generic_props_vals
[] = {
52 { 0,"Generic Package - Annex E (g)" },
56 static const value_string h248_pkg_generic_cause_vals
[] _U_
= {
57 {1, "General Cause (gencause)"},
58 {2, "Failure Cause (failurecause)"},
62 static const value_string h248_pkg_generic_cause_gencause_vals
[] = {
63 { 1, "Normal Release (NR)"},
64 { 2, "Unavailable Resources (UR)"},
65 { 3, "Failure, Temporary (FT)"},
66 { 4, "Failure, Permanent (FP)"},
67 { 5, "Interworking Error (IW)"},
68 { 6, "Unsupported (UN)"},
72 static h248_pkg_param_t h248_pkg_generic_cause_evt_params
[] = {
73 { 0x0001, &hf_h248_pkg_generic_cause_gencause
, h248_param_ber_integer
, &h248_e_implicit
},
74 { 0x0002, &hf_h248_pkg_generic_cause_failurecause
, h248_param_ber_octetstring
, &h248_e_implicit
},
75 { 0, NULL
, NULL
, NULL
}
79 static const value_string h248_pkg_generic_sc_meth_vals
[] _U_
= {
80 {0x0001,"Signal Identity (SigID)"},
81 {0x0002,"Termination Method (Meth)"},
82 {0x0003,"Signal List ID (SLID)"},
83 {0x0004,"Request ID (RID)"},
88 static const value_string h248_pkg_generic_sc_vals
[] = {
89 {0x0001,"TO - Signal timed out or otherwise completed on its own"},
90 {0x0002,"EV - Interrupted by event"},
91 {0x0003,"SD - Halted by new Signals Descriptor"},
92 {0x0004,"NC - Not completed, other cause"},
93 {0x0005,"PI - First to penultimate iteration"},
97 static h248_pkg_param_t h248_pkg_generic_sc_evt_params
[] = {
98 { 0x0001, &hf_h248_pkg_generic_sc_sig_id
, h248_param_PkgdName
, &h248_e_implicit
},
99 { 0x0002, &hf_h248_pkg_generic_sc_meth
, h248_param_ber_integer
, &h248_e_implicit
},
100 { 0x0003, &hf_h248_pkg_generic_sc_slid
, h248_param_ber_integer
, &h248_e_implicit
},
101 { 0x0004, &hf_h248_pkg_generic_sc_rid
, h248_param_ber_integer
, &h248_e_implicit
},
102 { 0, NULL
, NULL
, NULL
}
105 static h248_pkg_evt_t h248_pkg_generic_cause_evts
[] = {
106 { 0x0001, &hf_h248_pkg_generic_cause_evt
, &ett_h248_pkg_generic_cause_evt
, h248_pkg_generic_cause_evt_params
, h248_pkg_generic_cause_gencause_vals
},
107 { 0x0002, &hf_h248_pkg_generic_sc_evt
, &ett_h248_pkg_generic_sc_evt
, h248_pkg_generic_sc_evt_params
, h248_pkg_generic_sc_vals
},
108 { 0, NULL
, NULL
, NULL
, NULL
}
111 static h248_package_t h248_pkg_generic
= {
113 &hf_h248_pkg_generic
,
114 &ett_h248_pkg_generic
,
115 h248_pkg_generic_props_vals
,
117 h248_pkg_generic_cause_vals
,
121 h248_pkg_generic_cause_evts
,
126 /* H.248.1 E.2 Base Root Package */
127 #if 0 /* XXX: All of the following hf_... vars have no hf[] entry; package commented out */
128 static int hf_h248_pkg_root
;
129 static int hf_h248_pkg_root_maxnrofctx
;
130 static int hf_h248_pkg_root_maxtermsperctx
;
131 static int hf_h248_pkg_root_normalmgexectime
;
132 static int hf_h248_pkg_root_normalmgcexecutiontime
;
133 static int hf_h248_pkg_root_mg_provisionalresponsetimervalue
;
134 static int hf_h248_pkg_root_mgc_provisionalresponsetimervalue
;
135 static int hf_h248_pkg_root_mgc_orginalpendinglimit
;
136 static int hf_h248_pkg_root_mg_orginalpendinglimit
;
138 static int ett_h248_pkg_root_params
;
140 static const value_string h248_pkg_root_props_vals
[] = {
141 { 0x0000, "Base Root Package - Annex E (root)" },
142 { 0x0001, "Maximum Number of Contexts" },
143 { 0x0002, "Maximum Terminations Per Context" },
144 { 0x0003, "Normal MG Execution Time" },
145 { 0x0004, "Normal MGC Execution Time" },
146 { 0x0005, "MG Provisional Response Timer Value" },
147 { 0x0006, "MGC Provisional Response Timer Value" },
148 { 0x0007, "MGC Originated Pending Limit" },
149 { 0x0008, "MG Originated Pending Limit" },
153 static h248_pkg_param_t h248_pkg_root_properties
[] = {
154 { 0x0001, &hf_h248_pkg_root_maxnrofctx
, h248_param_ber_integer
, &h248_e_implicit
},
155 { 0x0002, &hf_h248_pkg_root_maxtermsperctx
, h248_param_ber_integer
, &h248_e_implicit
},
156 { 0x0003, &hf_h248_pkg_root_normalmgexectime
, h248_param_ber_integer
, &h248_e_implicit
},
157 { 0x0004, &hf_h248_pkg_root_normalmgcexecutiontime
, h248_param_ber_integer
, &h248_e_implicit
},
158 { 0x0005, &hf_h248_pkg_root_mg_provisionalresponsetimervalue
, h248_param_ber_integer
, &implicit
},
159 { 0x0006, &hf_h248_pkg_root_mgc_provisionalresponsetimervalue
, h248_param_ber_integer
, &implicit
},
160 { 0x0007, &hf_h248_pkg_root_mgc_orginalpendinglimit
, h248_param_ber_integer
, &implicit
},
161 { 0x0008, &hf_h248_pkg_root_mg_orginalpendinglimit
, h248_param_ber_integer
, &implicit
},
162 { 0, NULL
, NULL
, NULL
}
165 static h248_package_t h248_pkg_root
= {
168 &ett_h248_pkg_root_params
,
169 h248_pkg_root_props_vals
,
173 h248_pkg_root_properties
,
180 /* H.248.1 E.3 Tone Generator Package */
181 static int hf_h248_pkg_tonegen
;
182 static int hf_h248_pkg_tonegen_sig_pt
;
183 static int hf_h248_pkg_tonegen_sig_pt_tl
;
184 static int hf_h248_pkg_tonegen_sig_pt_ind
;
185 static int hf_h248_pkg_tonegen_sig_pg_btd
;
187 static int ett_h248_pkg_tonegen_params
;
188 static int ett_h248_pkg_tonegen_sig_pt
;
190 static const value_string h248_pkg_tonegen_props_vals
[] = {
191 { 0x0000, "Tone Generator - Annex E (tonegen)" },
195 static const value_string h248_pkg_tonegen_sigs_vals
[] = {
196 { 0x0001, "Play Tone (pt)" },
200 static const value_string h248_pkg_tonegen_pt_param_vals
[] = {
201 { 0x0001, "Tone ID List (tl)" },
202 { 0x0002, "Inter-signal duration (ind)" },
203 { 0x0003, "Tone Direction (td)" },
207 static const value_string h248_pkg_tonegen_pt_btd_param_vals
[] = {
208 { 0x0001, "External (EXT)" },
209 { 0x0002, "Internal (INT)" },
210 { 0x0003, "Both (BOTH)" },
214 static h248_pkg_param_t h248_pkg_tonegen_sig_params
[] = {
215 { 0x0001, &hf_h248_pkg_tonegen_sig_pt_tl
, h248_param_ber_integer
, &h248_e_implicit
},
216 { 0x0002, &hf_h248_pkg_tonegen_sig_pt_ind
, h248_param_ber_integer
, &h248_e_implicit
},
217 { 0x0003, &hf_h248_pkg_tonegen_sig_pg_btd
, h248_param_ber_integer
, &implicit
},
218 { 0, NULL
, NULL
, NULL
}
221 static const h248_pkg_sig_t h248_pkg_tonegen_signals
[] = {
222 { 0x0001, &hf_h248_pkg_tonegen_sig_pt
, &ett_h248_pkg_tonegen_sig_pt
, h248_pkg_tonegen_sig_params
, h248_pkg_tonegen_pt_param_vals
},
223 { 0, NULL
, NULL
, NULL
, NULL
}
226 static h248_package_t h248_pkg_tonegen
= {
228 &hf_h248_pkg_tonegen
,
229 &ett_h248_pkg_tonegen_params
,
230 h248_pkg_tonegen_props_vals
,
231 h248_pkg_tonegen_sigs_vals
,
233 h248_pkg_tonegen_signals
,
239 /* H.248.1 E.4 Tone Detector Package */
240 static int hf_h248_pkg_tonedet
;
241 static int hf_h248_pkg_tonedet_evt_std
;
242 static int hf_h248_pkg_tonedet_evt_etd
;
243 static int hf_h248_pkg_tonedet_evt_ltd
;
245 static int hf_h248_pkg_tonedet_evt_tl_param
;
246 static int hf_h248_pkg_tonedet_evt_dur_param
;
247 static int hf_h248_pkg_tonedet_evt_tid_param
;
249 static int ett_h248_pkg_tonedet
;
250 static int ett_h248_pkg_tonedet_evt_std
;
251 static int ett_h248_pkg_tonedet_evt_etd
;
252 static int ett_h248_pkg_tonedet_evt_ltd
;
254 static const value_string h248_pkg_tonedet_props_vals
[] = {
255 { 0x0000, "Tone Detection Package - Annex E (tonedet)" },
259 static const value_string h248_pkg_tonedet_events_vals
[] = {
260 { 0x0001, "Start Tone Detected (std)" },
261 { 0x0002, "End Tone Detected (etd)" },
262 { 0x0003, "Long Tone Detected (ltd)" },
266 static const value_string h248_pkg_tonedet_evt_param_vals
[] = {
267 { 0x0001, "Tone ID List (tl)" },
268 { 0x0002, "Duration (dur)" },
269 { 0x0003, "Tone ID (tid)" },
273 static const value_string h248_pkg_tonedet_tl_params_vals
[] = {
274 { 0x0000, "Wildcard (*)" },
278 static const h248_pkg_param_t h248_pkg_tonedet_event_params
[] = {
279 { 0x0001, &hf_h248_pkg_tonedet_evt_tl_param
, h248_param_uint_item
, &implicit
},
280 { 0x0002, &hf_h248_pkg_tonedet_evt_dur_param
, h248_param_ber_integer
, &implicit
},
281 { 0x0003, &hf_h248_pkg_tonedet_evt_tid_param
, h248_param_ber_integer
, &implicit
},
282 { 0, NULL
, NULL
, NULL
}
285 static const h248_pkg_evt_t h248_pkg_tonedet_events
[] = {
286 { 0x0001, &hf_h248_pkg_tonedet_evt_std
, &ett_h248_pkg_tonedet_evt_std
, h248_pkg_tonedet_event_params
, h248_pkg_tonedet_evt_param_vals
},
287 { 0x0002, &hf_h248_pkg_tonedet_evt_etd
, &ett_h248_pkg_tonedet_evt_etd
, h248_pkg_tonedet_event_params
, h248_pkg_tonedet_evt_param_vals
},
288 { 0x0003, &hf_h248_pkg_tonedet_evt_ltd
, &ett_h248_pkg_tonedet_evt_ltd
, h248_pkg_tonedet_event_params
, h248_pkg_tonedet_evt_param_vals
},
289 { 0, NULL
, NULL
, NULL
, NULL
}
292 static h248_package_t h248_pkg_tonedet
= {
294 &hf_h248_pkg_tonedet
,
295 &ett_h248_pkg_tonedet
,
296 h248_pkg_tonedet_props_vals
,
298 h248_pkg_tonedet_events_vals
,
302 h248_pkg_tonedet_events
,
307 /* E.5 Basic DTMF Generator Package */
308 static int hf_h248_pkg_dg
;
309 static int hf_h248_pkg_dg_sig_pt
;
310 static int hf_h248_pkg_dg_sig_d0
;
311 static int hf_h248_pkg_dg_sig_d1
;
312 static int hf_h248_pkg_dg_sig_d2
;
313 static int hf_h248_pkg_dg_sig_d3
;
314 static int hf_h248_pkg_dg_sig_d4
;
315 static int hf_h248_pkg_dg_sig_d5
;
316 static int hf_h248_pkg_dg_sig_d6
;
317 static int hf_h248_pkg_dg_sig_d7
;
318 static int hf_h248_pkg_dg_sig_d8
;
319 static int hf_h248_pkg_dg_sig_d9
;
320 static int hf_h248_pkg_dg_sig_da
;
321 static int hf_h248_pkg_dg_sig_db
;
322 static int hf_h248_pkg_dg_sig_dc
;
323 static int hf_h248_pkg_dg_sig_dd
;
324 static int hf_h248_pkg_dg_sig_ds
;
325 static int hf_h248_pkg_dg_sig_do
;
326 static int hf_h248_pkg_dg_sig_params
;
328 static int ett_h248_pkg_dg
;
329 static int ett_h248_pkg_dg_sig_pt
;
330 static int ett_h248_pkg_dg_sig_d0
;
331 static int ett_h248_pkg_dg_sig_d1
;
332 static int ett_h248_pkg_dg_sig_d2
;
333 static int ett_h248_pkg_dg_sig_d3
;
334 static int ett_h248_pkg_dg_sig_d4
;
335 static int ett_h248_pkg_dg_sig_d5
;
336 static int ett_h248_pkg_dg_sig_d6
;
337 static int ett_h248_pkg_dg_sig_d7
;
338 static int ett_h248_pkg_dg_sig_d8
;
339 static int ett_h248_pkg_dg_sig_d9
;
340 static int ett_h248_pkg_dg_sig_da
;
341 static int ett_h248_pkg_dg_sig_db
;
342 static int ett_h248_pkg_dg_sig_dc
;
343 static int ett_h248_pkg_dg_sig_dd
;
344 static int ett_h248_pkg_dg_sig_ds
;
345 static int ett_h248_pkg_dg_sig_do
;
347 static const value_string h248_pkg_dg_props_vals
[] = {
348 { 0x0000, "Basic DTMF Generator Package - Annex E (dg)" },
352 static const value_string h248_pkg_dg_signals_vals
[] = {
354 { 0x0001, "Tone ID List (tl)" },
355 { 0x0002, "End Tone Detected (etd)" },
356 { 0x0003, "Long Tone Detected (ltd)" },
379 static const value_string h248_pkg_dg_sig_params_vals
[] = {
380 { 0x0001, "Tone Direction (btd)" },
385 static const value_string h248_pkg_dg_sig_btd_vals
[] = {
386 { 0x0001, "External (EXT)" },
387 { 0x0002, "Internal (INT)" },
388 { 0x0003, "Both (BOTH)" },
392 static const h248_pkg_param_t h248_pkg_dg_signal_params
[] = {
393 { 0x0001, &hf_h248_pkg_dg_sig_params
, h248_param_ber_integer
, &implicit
},
394 { 0x0010, &hf_h248_pkg_dg_sig_params
, h248_param_ber_integer
, &implicit
},
395 { 0x0011, &hf_h248_pkg_dg_sig_params
, h248_param_ber_integer
, &implicit
},
396 { 0x0012, &hf_h248_pkg_dg_sig_params
, h248_param_ber_integer
, &implicit
},
397 { 0x0013, &hf_h248_pkg_dg_sig_params
, h248_param_ber_integer
, &implicit
},
398 { 0x0014, &hf_h248_pkg_dg_sig_params
, h248_param_ber_integer
, &implicit
},
399 { 0x0015, &hf_h248_pkg_dg_sig_params
, h248_param_ber_integer
, &implicit
},
400 { 0x0016, &hf_h248_pkg_dg_sig_params
, h248_param_ber_integer
, &implicit
},
401 { 0x0017, &hf_h248_pkg_dg_sig_params
, h248_param_ber_integer
, &implicit
},
402 { 0x0018, &hf_h248_pkg_dg_sig_params
, h248_param_ber_integer
, &implicit
},
403 { 0x0019, &hf_h248_pkg_dg_sig_params
, h248_param_ber_integer
, &implicit
},
404 { 0x001a, &hf_h248_pkg_dg_sig_params
, h248_param_ber_integer
, &implicit
},
405 { 0x001b, &hf_h248_pkg_dg_sig_params
, h248_param_ber_integer
, &implicit
},
406 { 0x001c, &hf_h248_pkg_dg_sig_params
, h248_param_ber_integer
, &implicit
},
407 { 0x001d, &hf_h248_pkg_dg_sig_params
, h248_param_ber_integer
, &implicit
},
408 { 0x0020, &hf_h248_pkg_dg_sig_params
, h248_param_ber_integer
, &implicit
},
409 { 0x0021, &hf_h248_pkg_dg_sig_params
, h248_param_ber_integer
, &implicit
},
410 { 0, NULL
, NULL
, NULL
}
413 /* Signals definitions */
414 static h248_pkg_sig_t h248_pkg_dg_signals
[] = {
415 { 0X0001, &hf_h248_pkg_dg_sig_pt
, &ett_h248_pkg_dg_sig_pt
, h248_pkg_dg_signal_params
,h248_pkg_dg_signals_vals
},
416 { 0x0010, &hf_h248_pkg_dg_sig_d0
, &ett_h248_pkg_dg_sig_d0
, h248_pkg_dg_signal_params
,h248_pkg_dg_signals_vals
},
417 { 0x0011, &hf_h248_pkg_dg_sig_d1
, &ett_h248_pkg_dg_sig_d1
, h248_pkg_dg_signal_params
,h248_pkg_dg_signals_vals
},
418 { 0x0012, &hf_h248_pkg_dg_sig_d2
, &ett_h248_pkg_dg_sig_d2
, h248_pkg_dg_signal_params
,h248_pkg_dg_signals_vals
},
419 { 0x0013, &hf_h248_pkg_dg_sig_d3
, &ett_h248_pkg_dg_sig_d3
, h248_pkg_dg_signal_params
,h248_pkg_dg_signals_vals
},
420 { 0x0014, &hf_h248_pkg_dg_sig_d4
, &ett_h248_pkg_dg_sig_d4
, h248_pkg_dg_signal_params
,h248_pkg_dg_signals_vals
},
421 { 0x0015, &hf_h248_pkg_dg_sig_d5
, &ett_h248_pkg_dg_sig_d5
, h248_pkg_dg_signal_params
,h248_pkg_dg_signals_vals
},
422 { 0x0016, &hf_h248_pkg_dg_sig_d6
, &ett_h248_pkg_dg_sig_d6
, h248_pkg_dg_signal_params
,h248_pkg_dg_signals_vals
},
423 { 0x0017, &hf_h248_pkg_dg_sig_d7
, &ett_h248_pkg_dg_sig_d7
, h248_pkg_dg_signal_params
,h248_pkg_dg_signals_vals
},
424 { 0x0018, &hf_h248_pkg_dg_sig_d8
, &ett_h248_pkg_dg_sig_d8
, h248_pkg_dg_signal_params
,h248_pkg_dg_signals_vals
},
425 { 0x0019, &hf_h248_pkg_dg_sig_d9
, &ett_h248_pkg_dg_sig_d9
, h248_pkg_dg_signal_params
,h248_pkg_dg_signals_vals
},
426 { 0x001a, &hf_h248_pkg_dg_sig_da
, &ett_h248_pkg_dg_sig_da
, h248_pkg_dg_signal_params
,h248_pkg_dg_signals_vals
},
427 { 0x001b, &hf_h248_pkg_dg_sig_db
, &ett_h248_pkg_dg_sig_db
, h248_pkg_dg_signal_params
,h248_pkg_dg_signals_vals
},
428 { 0x001c, &hf_h248_pkg_dg_sig_dc
, &ett_h248_pkg_dg_sig_dc
, h248_pkg_dg_signal_params
,h248_pkg_dg_signals_vals
},
429 { 0x001d, &hf_h248_pkg_dg_sig_dd
, &ett_h248_pkg_dg_sig_dd
, h248_pkg_dg_signal_params
,h248_pkg_dg_signals_vals
},
430 { 0x0020, &hf_h248_pkg_dg_sig_ds
, &ett_h248_pkg_dg_sig_ds
, h248_pkg_dg_signal_params
,h248_pkg_dg_signals_vals
},
431 { 0x0021, &hf_h248_pkg_dg_sig_do
, &ett_h248_pkg_dg_sig_do
, h248_pkg_dg_signal_params
,h248_pkg_dg_signals_vals
},
432 { 0, NULL
, NULL
, NULL
, NULL
}
435 /* Packet definitions */
436 static h248_package_t h248_pkg_dg
= {
440 h248_pkg_dg_props_vals
,
441 h248_pkg_dg_signals_vals
,
443 h248_pkg_dg_signals
, /* signals */
447 /* H248.1 E.6 DTMF Detection Package (dd) */
449 #if 0 /* XXX: The following 5 hf_... vars have no hf[] entry: package commented out */
450 static int hf_h248_pkg_dd
;
451 static int hf_h248_pkg_dd_evt_std
;
452 static int hf_h248_pkg_dd_evt_etd
;
453 static int hf_h248_pkg_dd_evt_ltd
;
454 static int hf_h248_pkg_dd_evt_ce
;
457 static int hf_h248_pkg_dd_evt_d0
;
458 static int hf_h248_pkg_dd_evt_d1
;
459 static int hf_h248_pkg_dd_evt_d2
;
460 static int hf_h248_pkg_dd_evt_d3
;
461 static int hf_h248_pkg_dd_evt_d4
;
462 static int hf_h248_pkg_dd_evt_d5
;
463 static int hf_h248_pkg_dd_evt_d6
;
464 static int hf_h248_pkg_dd_evt_d7
;
465 static int hf_h248_pkg_dd_evt_d8
;
466 static int hf_h248_pkg_dd_evt_d9
;
467 static int hf_h248_pkg_dd_evt_da
;
468 static int hf_h248_pkg_dd_evt_db
;
469 static int hf_h248_pkg_dd_evt_dc
;
470 static int hf_h248_pkg_dd_evt_dd
;
471 static int hf_h248_pkg_dd_evt_ds
;
472 static int hf_h248_pkg_dd_evt_do
;
473 static int hf_h248_pkg_dd_evt_ce_ds
;
474 static int hf_h248_pkg_dd_evt_ce_meth
;
475 static int hf_h248_pkg_dd_evt_tl_param
;
476 static int hf_h248_pkg_dd_evt_dur_param
;
477 static int hf_h248_pkg_dd_evt_tid_param
;
481 static int ett_h248_pkg_dd
;
482 static int ett_h248_pkg_dd_evt_ce
;
483 static int ett_h248_pkg_dd_evt_std
;
484 static int ett_h248_pkg_dd_evt_etd
;
485 static int ett_h248_pkg_dd_evt_ltd
;
487 static const value_string h248_pkg_dd_props_vals
[] = {
488 { 0x0000, "DTMF Detection Package - Annex E (dd)" },
492 static const value_string h248_pkg_dd_event_vals
[] = {
494 { 0x0000, "Wildcard (*)" },
495 { 0x0001, "Start Tone Detected (std)" },
496 { 0x0002, "End Tone Detected (etd)" },
497 { 0x0003, "Long Tone Detected (ltd)" },
498 { 0x0004, "Digit Completion Map (ce)" },
520 static const value_string h248_pkg_dd_event_params_vals
[] = {
521 { 0x0001, "Unambiguous Match (UM)" },
522 { 0x0002, "Partial Match (PM)" },
523 { 0x0003, "Full Match (FM)" },
527 static const value_string h248_pkg_dd_ce_vals
[] = {
528 { 0x0001, "Digit String (ds)" },
529 { 0x0003, "Termination Method (meth)" },
533 static h248_pkg_param_t h248_pkg_dd_ds_events
[] = {
534 { 0x0001, &hf_h248_pkg_dd_evt_ce_ds
, h248_param_ber_octetstring
, &implicit
},
535 { 0x0003, &hf_h248_pkg_dd_evt_ce_meth
, h248_param_ber_integer
, &implicit
},
536 { 0, NULL
, NULL
, NULL
}
539 static const h248_pkg_param_t h248_pkg_dd_event_params
[] = {
540 { 0x0001, &hf_h248_pkg_dd_evt_tl_param
, h248_param_ber_integer
, &implicit
},
541 { 0x0002, &hf_h248_pkg_dd_evt_dur_param
, h248_param_ber_integer
, &implicit
},
542 { 0x0003, &hf_h248_pkg_dd_evt_tid_param
, h248_param_ber_integer
, &implicit
},
543 { 0, NULL
, NULL
, NULL
}
547 static h248_pkg_evt_t h248_pkg_dd_events
[] = {
548 { 0x0001, &hf_h248_pkg_dd_evt_std
, &ett_h248_pkg_dd_evt_std
, h248_pkg_dd_event_params
, h248_pkg_dd_event_vals
},
549 { 0x0002, &hf_h248_pkg_dd_evt_etd
, &ett_h248_pkg_dd_evt_etd
, h248_pkg_dd_event_params
, h248_pkg_dd_event_vals
},
550 { 0x0003, &hf_h248_pkg_dd_evt_ltd
, &ett_h248_pkg_dd_evt_ltd
, h248_pkg_dd_event_params
, h248_pkg_dd_event_vals
},
551 { 0x0004, &hf_h248_pkg_dd_evt_ce
, &ett_h248_pkg_dd_evt_ce
, h248_pkg_dd_ds_events
, h248_pkg_dd_ce_vals
},
552 { 0, NULL
, NULL
, NULL
, NULL
}
555 static h248_package_t h248_pkg_dd
= {
559 h248_pkg_dd_props_vals
,
561 h248_pkg_dd_event_vals
,
569 /* H.248.1.E.7 Call Progress Tones Generator package */
570 static int hf_h248_pkg_cg
;
571 static int hf_h248_pkg_cg_sig_pt
;
572 static int hf_h248_pkg_cg_sig_pt_tl
;
573 static int hf_h248_pkg_cg_sig_pt_ind
;
574 static int hf_h248_pkg_cg_sig_pt_btd
;
575 static int hf_h248_pkg_cg_sig_dt
;
576 static int hf_h248_pkg_cg_sig_rt
;
577 static int hf_h248_pkg_cg_sig_bt
;
578 static int hf_h248_pkg_cg_sig_ct
;
579 static int hf_h248_pkg_cg_sig_sit
;
580 static int hf_h248_pkg_cg_sig_wt
;
581 static int hf_h248_pkg_cg_sig_prt
;
582 static int hf_h248_pkg_cg_sig_cw
;
583 static int hf_h248_pkg_cg_sig_cr
;
585 static int ett_h248_pkg_cg_params
;
586 static int ett_h248_pkg_cg_sig_pt
;
587 static int ett_h248_pkg_cg_sig_dt
;
588 static int ett_h248_pkg_cg_sig_rt
;
589 static int ett_h248_pkg_cg_sig_bt
;
590 static int ett_h248_pkg_cg_sig_ct
;
591 static int ett_h248_pkg_cg_sig_sit
;
592 static int ett_h248_pkg_cg_sig_wt
;
593 static int ett_h248_pkg_cg_sig_prt
;
594 static int ett_h248_pkg_cg_sig_cw
;
595 static int ett_h248_pkg_cg_sig_cr
;
597 static const value_string h248_pkg_cg_props_vals
[] = {
598 { 0x0000, "Call Progress Tones Generator - Annex E (cg)" },
602 static const value_string h248_pkg_cg_sig_cd_evt_vals
[] = {
603 { 0x0001, "Play Tone (pt)" },
604 { 0x0030, "Dial Tone"},
605 { 0x0031, "Ring Tone" },
606 { 0x0032, "Busy Tone" },
607 { 0x0033, "Congestion Tone" },
608 { 0x0034, "Special Information Tone" },
609 { 0x0035, "(Recording) Warning Tone" },
610 { 0x0036, "Payphone Recognition Tone" },
611 { 0x0037, "Call Waiting Tone" },
612 { 0x0038, "Caller Waiting Tone" },
616 static const value_string h248_pkg_cg_sig_pt_param_vals
[] = {
617 { 0x0001, "Tone ID List (tl)"},
618 { 0x0002, "Inter-signal duration (ind)" },
619 { 0x0003, "Tone Direction (td)" },
623 static const value_string h248_pkg_cg_pt_btd_param_vals
[] = {
624 { 0x0001, "External (EXT)" },
625 { 0x0002, "Internal (INT)" },
626 { 0x0003, "Both (BOTH)" },
630 static const h248_pkg_param_t h248_pkg_cg_sig_pt_params
[] = {
631 { 0x0001, &hf_h248_pkg_cg_sig_pt_tl
, h248_param_ber_integer
, &implicit
},
632 { 0x0002, &hf_h248_pkg_cg_sig_pt_ind
, h248_param_ber_integer
, &implicit
},
633 { 0x0003, &hf_h248_pkg_cg_sig_pt_btd
, h248_param_ber_integer
, &implicit
},
634 { 0, NULL
, NULL
, NULL
}
637 static const h248_pkg_sig_t h248_pkg_cg_signals_cd_events
[] = {
638 { 0x0001, &hf_h248_pkg_cg_sig_pt
, &ett_h248_pkg_cg_sig_pt
, h248_pkg_cg_sig_pt_params
, h248_pkg_cg_sig_pt_param_vals
},
639 { 0x0030, &hf_h248_pkg_cg_sig_dt
, &ett_h248_pkg_cg_sig_dt
, h248_pkg_cg_sig_pt_params
, h248_pkg_cg_sig_pt_param_vals
},
640 { 0x0031, &hf_h248_pkg_cg_sig_rt
, &ett_h248_pkg_cg_sig_rt
, h248_pkg_cg_sig_pt_params
, h248_pkg_cg_sig_pt_param_vals
},
641 { 0x0032, &hf_h248_pkg_cg_sig_bt
, &ett_h248_pkg_cg_sig_bt
, h248_pkg_cg_sig_pt_params
, h248_pkg_cg_sig_pt_param_vals
},
642 { 0x0033, &hf_h248_pkg_cg_sig_ct
, &ett_h248_pkg_cg_sig_ct
, h248_pkg_cg_sig_pt_params
, h248_pkg_cg_sig_pt_param_vals
},
643 { 0x0034, &hf_h248_pkg_cg_sig_sit
, &ett_h248_pkg_cg_sig_sit
, h248_pkg_cg_sig_pt_params
, h248_pkg_cg_sig_pt_param_vals
},
644 { 0x0035, &hf_h248_pkg_cg_sig_wt
, &ett_h248_pkg_cg_sig_wt
, h248_pkg_cg_sig_pt_params
, h248_pkg_cg_sig_pt_param_vals
},
645 { 0x0036, &hf_h248_pkg_cg_sig_prt
, &ett_h248_pkg_cg_sig_prt
, h248_pkg_cg_sig_pt_params
, h248_pkg_cg_sig_pt_param_vals
},
646 { 0x0037, &hf_h248_pkg_cg_sig_cw
, &ett_h248_pkg_cg_sig_cw
, h248_pkg_cg_sig_pt_params
, h248_pkg_cg_sig_pt_param_vals
},
647 { 0x0038, &hf_h248_pkg_cg_sig_cr
, &ett_h248_pkg_cg_sig_cr
, h248_pkg_cg_sig_pt_params
, h248_pkg_cg_sig_pt_param_vals
},
648 { 0, NULL
, NULL
, NULL
, NULL
}
651 static h248_package_t h248_pkg_cg
= {
654 &ett_h248_pkg_cg_params
,
655 h248_pkg_cg_props_vals
,
656 h248_pkg_cg_sig_cd_evt_vals
,
657 NULL
,NULL
, /* value_stings: event, stats */
658 NULL
, /* dissectors: prop */
659 h248_pkg_cg_signals_cd_events
,
660 NULL
, /* dissectors: events */
661 NULL
/* dissectors: stats */
664 /* H.248.1 E.8 - Call Tones Detection Package */
665 static int hf_h248_pkg_cd
;
667 static int ett_h248_pkg_cd
;
669 static const value_string h248_pkg_cd_params_vals
[] = {
670 { 0x0000, "Call Progress Tones Detection Package (cd)" },
674 static h248_package_t h248_pkg_cd
= {
678 h248_pkg_cd_params_vals
,
680 h248_pkg_cg_sig_cd_evt_vals
,
683 (const h248_pkg_evt_t
*)(const void*)h248_pkg_cg_signals_cd_events
,
687 /* H.248.1 E.9 Analog Line Supervision Package */
688 static int hf_h248_pkg_al
;
689 static int hf_h248_pkg_al_sig_cadence
;
690 static int hf_h248_pkg_al_sig_cadence_on_off
;
691 /* static int hf_h248_pkg_al_sig_freq; */
692 static int hf_h248_pkg_al_evt_onhook
;
693 static int hf_h248_pkg_al_evt_offhook
;
694 static int hf_h248_pkg_al_evt_flashhook
;
695 static int hf_h248_pkg_al_evt_onhook_par_strict
;
696 static int hf_h248_pkg_al_evt_offhook_par_strict
;
697 static int hf_h248_pkg_al_evt_onhook_par_init
;
698 static int hf_h248_pkg_al_evt_offhook_par_init
;
699 static int hf_h248_pkg_al_evt_flashhook_par_mindur
;
701 static int ett_h248_pkg_al
;
702 static int ett_h248_pkg_al_sig_cadence
;
703 static int ett_h248_pkg_al_sig_freq
;
704 static int ett_h248_pkg_al_evt_onhook
;
705 static int ett_h248_pkg_al_evt_offhook
;
706 static int ett_h248_pkg_al_evt_flashhook
;
708 static const value_string h248_pkg_al_props_vals
[] = {
709 { 0x0000, "Analog Line Supervision Package - Annex E (al)" },
713 static const value_string h248_pkg_al_sig_params_vals
[] = {
716 { 0x0006, "Cadence" },
717 { 0x0007, "Frequency (Hz)" },
721 static const value_string h248_pkg_al_evt_onhook_params_vals
[] = {
727 static const value_string h248_pkg_al_evt_flashhook_params_vals
[] = {
732 /* Packet definitions */
733 static const value_string h248_pkg_al_sig_evts_vals
[] = {
735 { 0x0002, "ri (Ring)" },
737 { 0x0004, "on (On-hook)" },
738 { 0x0005, "off (Off-hook)" },
739 { 0x0006, "fl (Flashhook)" },
743 /* Events definitions */
744 static const value_string h248_pkg_al_evt_onhook_strict_vals
[] = {
751 static const true_false_string h248_pkg_al_evt_onhook_par_init_vals
= {
753 "actual state transition to on-hook"
756 static const true_false_string h248_pkg_al_evt_offhook_par_init_vals
= {
758 "actual state transition to off-hook"
762 static h248_pkg_param_t h248_pkg_al_sig_cadence
[] = {
763 { 0x0006, &hf_h248_pkg_al_sig_cadence_on_off
, h248_param_ber_octetstring
, &h248_e_implicit
},
764 { 0, NULL
, NULL
, NULL
}
767 static h248_pkg_param_t h248_pkg_al_evt_onhook_params
[] = {
768 { 0x0001, &hf_h248_pkg_al_evt_onhook_par_strict
, h248_param_ber_integer
, &h248_e_implicit
},
769 { 0x0002, &hf_h248_pkg_al_evt_onhook_par_init
, h248_param_ber_boolean
, &h248_e_implicit
},
770 { 0, NULL
, NULL
, NULL
}
773 static h248_pkg_param_t h248_pkg_al_evt_offhook_params
[] = {
774 { 0x0001, &hf_h248_pkg_al_evt_offhook_par_strict
, h248_param_ber_integer
, &h248_e_implicit
},
775 { 0x0002, &hf_h248_pkg_al_evt_offhook_par_init
, h248_param_ber_boolean
, &h248_e_implicit
},
776 { 0, NULL
, NULL
, NULL
}
779 static h248_pkg_param_t h248_pkg_al_evt_flashhook_params
[] = {
780 { 0x0001, &hf_h248_pkg_al_evt_flashhook_par_mindur
, h248_param_ber_integer
, &h248_e_implicit
},
781 { 0, NULL
, NULL
, NULL
}
784 static h248_pkg_sig_t h248_pkg_al_sig
[] = {
785 { 0x0002, &hf_h248_pkg_al_sig_cadence
, &ett_h248_pkg_al_sig_cadence
, h248_pkg_al_sig_cadence
, h248_pkg_al_sig_params_vals
},
786 { 0, NULL
, NULL
, NULL
, NULL
}
789 static h248_pkg_evt_t h248_pkg_al_evts
[] = {
790 { 0x0004, &hf_h248_pkg_al_evt_onhook
, &ett_h248_pkg_al_evt_onhook
, h248_pkg_al_evt_onhook_params
, h248_pkg_al_evt_onhook_params_vals
},
791 { 0x0005, &hf_h248_pkg_al_evt_offhook
, &ett_h248_pkg_al_evt_offhook
, h248_pkg_al_evt_offhook_params
, h248_pkg_al_evt_onhook_params_vals
},
792 { 0x0006, &hf_h248_pkg_al_evt_flashhook
, &ett_h248_pkg_al_evt_flashhook
, h248_pkg_al_evt_flashhook_params
, h248_pkg_al_evt_flashhook_params_vals
},
794 { 0, NULL
, NULL
, NULL
, NULL
}
797 static h248_package_t h248_pkg_al
= {
801 h248_pkg_al_props_vals
,
802 h248_pkg_al_sig_evts_vals
,
803 h248_pkg_al_sig_evts_vals
,
805 NULL
, /* Properties */
806 h248_pkg_al_sig
, /* signals */
807 h248_pkg_al_evts
, /* events */
808 NULL
/* statistics */
812 /* H.248.1 E.10 - Basic Continuity Package */
813 static int hf_h248_pkg_ct
;
814 static int ett_h248_pkg_ct
;
816 static const value_string h248_pkg_ct_props_vals
[] = {
817 { 0x0000, "Basic Continuity Package (ct)" },
821 static const value_string h248_pkg_ct_evt_sig_vals
[] = {
822 { 0x0003, "Continuity Test (ct)" },
823 { 0x0004, "Respond (rsp)" },
824 { 0x0005, "Completion (cmp)" },
828 static h248_package_t h248_pkg_ct
= {
832 h248_pkg_ct_props_vals
,
833 h248_pkg_ct_evt_sig_vals
,
834 h248_pkg_ct_evt_sig_vals
,
836 NULL
, NULL
, NULL
, NULL
839 /* H.248.1 E.11 Network Package */
840 static int hf_h248_pkg_nt
;
841 static int ett_h248_pkg_nt
;
843 static const value_string h248_pkg_nt_props_evt_stats_vals
[] = {
844 { 0x0000, "Network Package (nt)" },
845 { 0x0001, "Duration (dur)" },
846 { 0x0002, "Octets Sent (os)" },
847 { 0x0003, "Octets Received (or)" },
848 { 0x0005, "Network Failure (netfail)" },
849 { 0x0006, "Quality Alert (qualert)" },
850 { 0x0007, "Maximum Jitter Buffer (jit)" },
854 static h248_package_t h248_pkg_nt
= {
858 h248_pkg_nt_props_evt_stats_vals
,
859 h248_pkg_nt_props_evt_stats_vals
,
861 h248_pkg_nt_props_evt_stats_vals
,
862 NULL
, NULL
, NULL
, NULL
865 /* H.248.1 E.12 RTP package */
866 static int hf_h248_pkg_rtp
;
867 static int hf_h248_pkg_rtp_stat_ps
;
869 static int ett_h248_pkg_rtp
;
872 static const value_string h248_pkg_rtp_stat_vals
[] _U_
= {
878 static const value_string h248_pkg_rtp_props_vals
[] = {
879 { 0x0000, "RTP Package - Annex E (rtp)" },
880 { 0x0001, "pltrans (Payload Transition)" },
881 { 0x0004, "ps (Packets Sent)" },
882 { 0x0005, "pr (Packets Received)" },
883 { 0x0006, "pl (Packet Loss)" },
884 { 0x0007, "jit (Jitter)" },
885 { 0x0008, "delay (Delay)" },
889 static h248_pkg_stat_t h248_pkg_rtp_stat
[] = {
890 { 0x0004, &hf_h248_pkg_rtp_stat_ps
, &ett_h248_pkg_rtp
, NULL
,NULL
},
893 /* Packet definitions */
894 static h248_package_t h248_pkg_rtp
= {
898 h248_pkg_rtp_props_vals
,
902 NULL
, /* Properties */
905 h248_pkg_rtp_stat
/* statistics */
908 /* H.248.1 E.13 TDM Circuit Package */
909 static int hf_h248_pkg_tdmc
;
910 static int hf_h248_pkg_tdmc_ec
;
911 static int hf_h248_pkg_tdmc_gain
;
913 static int ett_h248_pkg_tdmc
;
915 static const value_string h248_pkg_tdmc_props_vals
[] = {
916 { 0x0000, "TDM Circuit Package - Annex E (tdmc)" },
917 { 0x0008, "Echo Cancellation (ec)"},
918 { 0x000a, "Gain Control (gain)"},
923 static h248_pkg_param_t h248_pkg_tdmc_props
[] = {
924 { 0x0008, &hf_h248_pkg_tdmc_ec
, h248_param_ber_boolean
, &h248_e_implicit
},
925 { 0x000a, &hf_h248_pkg_tdmc_gain
, h248_param_ber_integer
, &h248_e_implicit
},
926 { 0, NULL
, NULL
, NULL
}
929 static h248_package_t h248_pkg_tdmc
= {
933 h248_pkg_tdmc_props_vals
,
937 h248_pkg_tdmc_props
, /* Properties */
940 NULL
/* statistics */
945 void proto_register_h248_annex_e(void) {
946 static hf_register_info hf
[] = {
947 /* H.248.1 E.1 Generic Package */
948 { &hf_h248_pkg_generic
, { "Generic Package", "h248.generic", FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
949 { &hf_h248_pkg_generic_cause_evt
, { "Cause Event", "h248.generic.cause", FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
950 { &hf_h248_pkg_generic_cause_gencause
, { "Generic Cause", "h248.generic.cause.gencause", FT_UINT32
, BASE_HEX
, VALS(h248_pkg_generic_cause_gencause_vals
), 0, NULL
, HFILL
}},
951 { &hf_h248_pkg_generic_cause_failurecause
, { "Generic Cause", "h248.generic.cause.failurecause", FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
952 { &hf_h248_pkg_generic_sc_evt
, {"Signal Completion2","h248.generic.sc",FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
953 { &hf_h248_pkg_generic_sc_sig_id
, { "Signal Identity", "h248.generic.sc.sig_id", FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
954 { &hf_h248_pkg_generic_sc_meth
, { "Termination Method", "h248.generic.sc.meth", FT_UINT32
, BASE_DEC
, VALS(h248_pkg_generic_sc_vals
) , 0, NULL
, HFILL
}},
955 { &hf_h248_pkg_generic_sc_slid
, { "Signal List ID", "h248.generic.sc.slid", FT_UINT32
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
956 { &hf_h248_pkg_generic_sc_rid
, { "Request ID", "h248.generic.sc.rid", FT_UINT32
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
958 /* H.248.1.E 3 Tone Generator (tonegeg) */
959 { &hf_h248_pkg_tonegen
, { "Tone Generator (tonegen)", "h248.tonegen", FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
960 { &hf_h248_pkg_tonegen_sig_pt
, { "Play Tone (pt)", "h248.tonegen.pg", FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
961 { &hf_h248_pkg_tonegen_sig_pt_tl
, { "Tone List ID (tl)", "h248.tonegen.pt.tl", FT_UINT16
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}},
962 { &hf_h248_pkg_tonegen_sig_pt_ind
, { "Inter-signal Duration (ind)", "h248.tonegem.pt.ind", FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
963 { &hf_h248_pkg_tonegen_sig_pg_btd
, { "Tone Direction (btd)", "h248.tonegen.pt.btd", FT_UINT32
, BASE_HEX
, VALS(h248_pkg_tonegen_pt_btd_param_vals
), 0, NULL
, HFILL
}},
965 /* H.248.1 E.4 Tone Detection (tonedet) */
966 { &hf_h248_pkg_tonedet
, { "Tone Detection Package", "h248.tonedet", FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
967 { &hf_h248_pkg_tonedet_evt_std
, { "Start Tone", "h248.tonedet.std", FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
968 { &hf_h248_pkg_tonedet_evt_etd
, { "End Tone", "h248.tonedet.etd", FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
969 { &hf_h248_pkg_tonedet_evt_ltd
, { "Long Tone", "h248.tonedet.ltd", FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
970 { &hf_h248_pkg_tonedet_evt_tl_param
, {"Tone Detail", "h248.tonedet.evt.tl", FT_UINT16
, BASE_DEC
, VALS(h248_pkg_tonedet_tl_params_vals
), 0, NULL
, HFILL
}},
971 { &hf_h248_pkg_tonedet_evt_dur_param
, {"Duration (ms)", "h248.tonedet.evt.dur", FT_UINT16
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
972 { &hf_h248_pkg_tonedet_evt_tid_param
, {"Tone ID", "h248.tonedet.evt.tid", FT_UINT16
, BASE_DEC
, VALS(h248_pkg_tonedet_tl_params_vals
), 0, NULL
, HFILL
}},
975 /* H.248.1 E.5 Basic DTMF Generator Package */
976 { &hf_h248_pkg_dg
, { "Basic DTMF Generator Package (dg)", "h248.dg", FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
977 { &hf_h248_pkg_dg_sig_pt
, { "Play Tone", "h248.dg.pt", FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
978 { &hf_h248_pkg_dg_sig_d0
, { "Digit 0", "h248.dg.d0", FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
979 { &hf_h248_pkg_dg_sig_d1
, { "Digit 1", "h248.dg.d1", FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
980 { &hf_h248_pkg_dg_sig_d2
, { "Digit 2", "h248.dg.d2", FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
981 { &hf_h248_pkg_dg_sig_d3
, { "Digit 3", "h248.dg.d3", FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
982 { &hf_h248_pkg_dg_sig_d4
, { "Digit 4", "h248.dg.d4", FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
983 { &hf_h248_pkg_dg_sig_d5
, { "Digit 5", "h248.dg.d5", FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
984 { &hf_h248_pkg_dg_sig_d6
, { "Digit 6", "h248.dg.d6", FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
985 { &hf_h248_pkg_dg_sig_d7
, { "Digit 7", "h248.dg.d7", FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
986 { &hf_h248_pkg_dg_sig_d8
, { "Digit 8", "h248.dg.d8", FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
987 { &hf_h248_pkg_dg_sig_d9
, { "Digit 9", "h248.dg.d9", FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
988 { &hf_h248_pkg_dg_sig_da
, { "Digit A", "h248.dg.da", FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
989 { &hf_h248_pkg_dg_sig_db
, { "Digit B", "h248.dg.db", FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
990 { &hf_h248_pkg_dg_sig_dc
, { "Digit C", "h248.dg.dc", FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
991 { &hf_h248_pkg_dg_sig_dd
, { "Digit D", "h248.dg.dd", FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
992 { &hf_h248_pkg_dg_sig_ds
, { "Digit *", "h248.dg.ds", FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
993 { &hf_h248_pkg_dg_sig_do
, { "Digit #", "h248.dg.do", FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
994 { &hf_h248_pkg_dg_sig_params
, { "Event Parameters", "h248.dg.signal.direction", FT_UINT16
, BASE_DEC
, VALS(h248_pkg_dg_sig_btd_vals
), 0, NULL
, HFILL
}},
996 /* H.248.1 E.6 DTMF Detection Package */
998 { &hf_h248_pkg_dd_evt_ce_ds
, { "Digit(s) Detected", "h248.dd.ce.ds", FT_STRING
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
999 { &hf_h248_pkg_dd_evt_ce_meth
, { "Method Used", "h248.dd.ce.meth", FT_UINT16
, BASE_DEC
, VALS(h248_pkg_dd_event_params_vals
), 0, NULL
, HFILL
}},
1000 { &hf_h248_pkg_dd_evt_tl_param
, {"Tone Detail", "h248.dd.evt.tl", FT_UINT16
, BASE_DEC
, VALS(h248_pkg_dd_event_vals
), 0, NULL
, HFILL
}},
1001 { &hf_h248_pkg_dd_evt_dur_param
, {"Duration (ms)", "h248.dd.evt.dur", FT_UINT16
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
1002 { &hf_h248_pkg_dd_evt_tid_param
, {"Tone ID", "h248.dd.evt.tid", FT_UINT16
, BASE_DEC
, VALS(h248_pkg_dd_event_vals
), 0, NULL
, HFILL
}},
1005 /* H.248.1.E.7 Call Progress Tones Generator package */
1006 { &hf_h248_pkg_cg
, { "Call Progress Tones Generator", "h248.cg", FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
1007 { &hf_h248_pkg_cg_sig_pt
, { "Play Tone (pt)", "h248.cg.pt", FT_UINT16
, BASE_HEX
, VALS(h248_pkg_cg_sig_cd_evt_vals
), 0, NULL
, HFILL
}},
1008 { &hf_h248_pkg_cg_sig_pt_tl
, {"Tone List", "h248.cg.pt.tl", FT_UINT16
, BASE_DEC_HEX
, VALS(h248_pkg_cg_sig_cd_evt_vals
), 0, NULL
, HFILL
}},
1009 { &hf_h248_pkg_cg_sig_pt_ind
, { "Inter-Signal Duration (ind)", "h248.cg.pt.ind", FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
1010 { &hf_h248_pkg_cg_sig_pt_btd
, { "Tone Direction (btd)", "h248.cg.pt.btd", FT_UINT8
, BASE_DEC
, VALS(h248_pkg_cg_pt_btd_param_vals
), 0, NULL
, HFILL
}},
1012 { &hf_h248_pkg_cg_sig_dt
, { "Dial Tone (dt)", "h248.cg.dt", FT_UINT16
, BASE_HEX
, VALS(h248_pkg_cg_sig_cd_evt_vals
), 0, NULL
, HFILL
}},
1013 { &hf_h248_pkg_cg_sig_rt
, { "Ring Tone (rt)", "h248.cg.rt",FT_UINT16
, BASE_HEX
, VALS(h248_pkg_cg_sig_cd_evt_vals
), 0, NULL
, HFILL
}},
1014 { &hf_h248_pkg_cg_sig_bt
, { "Buzy Tone (bt)", "h248.cg.bt", FT_UINT16
, BASE_HEX
, VALS(h248_pkg_cg_sig_cd_evt_vals
), 0, NULL
, HFILL
}},
1015 { &hf_h248_pkg_cg_sig_ct
, { "Congestion Tone (ct)", "h248.cg.ct", FT_UINT16
, BASE_HEX
, VALS(h248_pkg_cg_sig_cd_evt_vals
), 0, NULL
, HFILL
}},
1016 { &hf_h248_pkg_cg_sig_sit
, { "Special Information Tone (sit)", "h248.cg.sit", FT_UINT16
, BASE_HEX
, VALS(h248_pkg_cg_sig_cd_evt_vals
), 0, NULL
, HFILL
}},
1017 { &hf_h248_pkg_cg_sig_wt
, { "(Recording) Warning Tone (wt)", "h248.cg.wt", FT_UINT16
, BASE_HEX
, VALS(h248_pkg_cg_sig_cd_evt_vals
), 0, NULL
, HFILL
}},
1018 { &hf_h248_pkg_cg_sig_prt
, { "Payphone Recognition Tone (prt)", "h248.cg.prt", FT_UINT16
, BASE_HEX
, VALS(h248_pkg_cg_sig_cd_evt_vals
), 0, NULL
, HFILL
}},
1019 { &hf_h248_pkg_cg_sig_cw
, { "Call Waiting Tone (wt)", "h248.cg.cw", FT_UINT16
, BASE_HEX
, VALS(h248_pkg_cg_sig_cd_evt_vals
), 0, NULL
, HFILL
}},
1020 { &hf_h248_pkg_cg_sig_cr
, { "Caller Waiting Tone (rt)", "h248.cg.cr", FT_UINT16
, BASE_HEX
, VALS(h248_pkg_cg_sig_cd_evt_vals
), 0, NULL
, HFILL
}},
1022 /* H.248.1 E.8 Call Progress Tones Detection Package */
1023 { &hf_h248_pkg_cd
, { "Call Progress Tones Detection Package", "h248.cd", FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
1025 /* H.248.1 E.9 Analog Line Supervision Package */
1026 { &hf_h248_pkg_al
, { "Analog Line Supervision Package", "h248.al", FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
1027 { &hf_h248_pkg_al_sig_cadence
, { "Cadence", "h248.al.sig.cadence", FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
1028 { &hf_h248_pkg_al_sig_cadence_on_off
, { "On/Off Cadence", "h248.al.sig.cadence_on_off", FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
1030 { &hf_h248_pkg_al_sig_freq
, { "Ring Frequency", "h248.al.sig.freq", FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
1032 { &hf_h248_pkg_al_evt_onhook
, { "onhook", "h248.al.onhook", FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
1033 { &hf_h248_pkg_al_evt_offhook
, { "offhook", "h248.al.offhook", FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
1034 { &hf_h248_pkg_al_evt_flashhook
, { "flashhook", "h248.al.flashhook", FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
1035 { &hf_h248_pkg_al_evt_onhook_par_strict
, { "strict", "h248.al.ev.onhook.strict", FT_UINT8
, BASE_DEC
, VALS(h248_pkg_al_evt_onhook_strict_vals
), 0, NULL
, HFILL
}},
1036 { &hf_h248_pkg_al_evt_onhook_par_init
, { "init", "h248.al.ev.onhook.init", FT_BOOLEAN
, BASE_NONE
, TFS(&h248_pkg_al_evt_onhook_par_init_vals
), 0x0, NULL
, HFILL
}},
1037 { &hf_h248_pkg_al_evt_offhook_par_strict
, { "strict", "h248.al.ev.offhook.strict", FT_UINT8
, BASE_DEC
, VALS(h248_pkg_al_evt_onhook_strict_vals
), 0, NULL
, HFILL
}},
1038 { &hf_h248_pkg_al_evt_offhook_par_init
, { "init", "h248.al.ev.onhook.init", FT_BOOLEAN
, BASE_NONE
, TFS(&h248_pkg_al_evt_offhook_par_init_vals
), 0x0, NULL
, HFILL
}},
1039 { &hf_h248_pkg_al_evt_flashhook_par_mindur
, { "Minimum duration in ms", "h248.al.ev.flashhook.mindur", FT_UINT32
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
1041 /* H.248.1 E.10 - Basic Continuity Package */
1042 { &hf_h248_pkg_ct
, { "Basic Continuity package", "h248.ct", FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
1044 /* H.248.1 E.11 Network Package */
1045 { &hf_h248_pkg_nt
, { "Network package", "h248.nt", FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
1047 /* H.248.1 E.12 RTP package */
1048 { &hf_h248_pkg_rtp
, { "RTP package", "h248.rtp", FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
1049 { &hf_h248_pkg_rtp_stat_ps
, { "Packets Sent", "h248.rtp.stat.ps", FT_UINT64
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
1051 /* H.248.1 E.13 TDM Circuit Package */
1052 { &hf_h248_pkg_tdmc
, { "TDM Circuit Package", "h248.tdmc", FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
1053 { &hf_h248_pkg_tdmc_ec
, { "Echo Cancellation", "h248.tdmc.ec", FT_BOOLEAN
, BASE_NONE
, TFS(&tfs_on_off
), 0x0, NULL
, HFILL
}},
1054 { &hf_h248_pkg_tdmc_gain
, { "Gain", "h248.tdmc.gain", FT_UINT32
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}},
1057 static int *ett
[] = {
1058 /* generic 0x0001 */
1059 &ett_h248_pkg_generic_cause_evt
,
1060 &ett_h248_pkg_generic
,
1061 &ett_h248_pkg_generic_sc_evt
,
1064 &ett_h248_pkg_root_params
,
1067 &ett_h248_pkg_tonegen_params
,
1069 /* tonegen 0x0003 */
1070 &ett_h248_pkg_tonedet
,
1071 &ett_h248_pkg_tonedet_evt_std
,
1072 &ett_h248_pkg_tonedet_evt_etd
,
1073 &ett_h248_pkg_tonedet_evt_ltd
,
1077 &ett_h248_pkg_dg_sig_pt
,
1078 &ett_h248_pkg_dg_sig_d0
,
1079 &ett_h248_pkg_dg_sig_d1
,
1080 &ett_h248_pkg_dg_sig_d2
,
1081 &ett_h248_pkg_dg_sig_d3
,
1082 &ett_h248_pkg_dg_sig_d4
,
1083 &ett_h248_pkg_dg_sig_d5
,
1084 &ett_h248_pkg_dg_sig_d6
,
1085 &ett_h248_pkg_dg_sig_d7
,
1086 &ett_h248_pkg_dg_sig_d8
,
1087 &ett_h248_pkg_dg_sig_d9
,
1088 &ett_h248_pkg_dg_sig_da
,
1089 &ett_h248_pkg_dg_sig_db
,
1090 &ett_h248_pkg_dg_sig_dc
,
1091 &ett_h248_pkg_dg_sig_dd
,
1092 &ett_h248_pkg_dg_sig_ds
,
1093 &ett_h248_pkg_dg_sig_do
,
1098 &ett_h248_pkg_dd_evt_std
,
1099 &ett_h248_pkg_dd_evt_ltd
,
1100 &ett_h248_pkg_dd_evt_etd
,
1101 &ett_h248_pkg_dd_evt_ce
,
1104 /* 0x0007 Package cg */
1105 &ett_h248_pkg_cg_params
,
1106 &ett_h248_pkg_cg_sig_pt
,
1107 &ett_h248_pkg_tonegen_sig_pt
,
1108 &ett_h248_pkg_cg_sig_dt
,
1109 &ett_h248_pkg_cg_sig_rt
,
1110 &ett_h248_pkg_cg_sig_bt
,
1111 &ett_h248_pkg_cg_sig_ct
,
1112 &ett_h248_pkg_cg_sig_sit
,
1113 &ett_h248_pkg_cg_sig_wt
,
1114 &ett_h248_pkg_cg_sig_prt
,
1115 &ett_h248_pkg_cg_sig_cw
,
1116 &ett_h248_pkg_cg_sig_cr
,
1123 &ett_h248_pkg_al_sig_cadence
,
1124 &ett_h248_pkg_al_sig_freq
,
1125 &ett_h248_pkg_al_evt_flashhook
,
1126 &ett_h248_pkg_al_evt_offhook
,
1127 &ett_h248_pkg_al_evt_onhook
,
1142 proto_h248_annex_E
= proto_register_protocol(PNAME
, PSNAME
, PFNAME
);
1144 proto_register_field_array(proto_h248_annex_E
, hf
, array_length(hf
));
1146 proto_register_subtree_array(ett
, array_length(ett
));
1148 /* MERGE_PKG_LOW is use to allow other custom version of these
1149 *H248 package to take presidence if already loaded */
1150 h248_register_package(&h248_pkg_generic
,MERGE_PKG_LOW
); /* 0x0001 */
1151 /* h248_register_package(&h248_pkg_root,MERGE_PKG_LOW); */ /* 0x0002 */
1152 h248_register_package(&h248_pkg_tonegen
,MERGE_PKG_LOW
); /* 0x0003 */
1153 h248_register_package(&h248_pkg_tonedet
,MERGE_PKG_LOW
); /* 0x0004 */
1154 h248_register_package(&h248_pkg_dg
,MERGE_PKG_LOW
); /* 0X0005 */
1155 /* h248_register_package(&h248_pkg_dd,MERGE_PKG_LOW); */ /* 0x0006 */
1156 h248_register_package(&h248_pkg_cg
,MERGE_PKG_LOW
); /* 0x0007 */
1157 h248_register_package(&h248_pkg_cd
, MERGE_PKG_LOW
); /* 0x0008 */
1158 h248_register_package(&h248_pkg_al
,MERGE_PKG_LOW
); /* 0x0009 */
1159 h248_register_package(&h248_pkg_ct
, MERGE_PKG_LOW
); /* 0x000a */
1160 h248_register_package(&h248_pkg_nt
, MERGE_PKG_LOW
); /* 0x000b */
1161 h248_register_package(&h248_pkg_rtp
,MERGE_PKG_LOW
); /* 0x000c */
1162 h248_register_package(&h248_pkg_tdmc
,MERGE_PKG_LOW
); /* 0x000d */
1166 * Editor modelines - https://www.wireshark.org/tools/modelines.html
1171 * indent-tabs-mode: t
1174 * vi: set shiftwidth=8 tabstop=8 noexpandtab:
1175 * :indentSize=8:tabSize=8:noTabs=false: