/src/wireshark/epan/dissectors/packet-h248_annex_e.c
Line | Count | Source |
1 | | /* |
2 | | * packet-h248_annex_e.c |
3 | | * H.248 Annex E |
4 | | * |
5 | | * (c) 2006, Luis E. Garcia Ontanon <luis@ontanon.org> |
6 | | * |
7 | | * Wireshark - Network traffic analyzer |
8 | | * By Gerald Combs <gerald@wireshark.org> |
9 | | * Copyright 1998 Gerald Combs |
10 | | * |
11 | | * SPDX-License-Identifier: GPL-2.0-or-later |
12 | | */ |
13 | | |
14 | | #include "config.h" |
15 | | |
16 | | |
17 | | /*****/ |
18 | | #include <epan/packet.h> |
19 | | #include <epan/tfs.h> |
20 | | /*****/ |
21 | | |
22 | | #include "packet-h248.h" |
23 | | |
24 | | void proto_register_h248_annex_e(void); |
25 | | |
26 | 14 | #define PNAME "H.248 Annex E" |
27 | 14 | #define PSNAME "H248E" |
28 | 14 | #define PFNAME "h248e" |
29 | | /* |
30 | | */ |
31 | | static int proto_h248_annex_E; |
32 | | |
33 | | static bool h248_e_implicit; |
34 | | static bool implicit; |
35 | | |
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; |
46 | | |
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; |
50 | | |
51 | | static const value_string h248_pkg_generic_props_vals[] = { |
52 | | { 0,"Generic Package - Annex E (g)" }, |
53 | | { 0, NULL } |
54 | | }; |
55 | | |
56 | | static const value_string h248_pkg_generic_cause_vals[] _U_ = { |
57 | | {1, "General Cause (gencause)"}, |
58 | | {2, "Failure Cause (failurecause)"}, |
59 | | { 0, NULL } |
60 | | }; |
61 | | |
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)"}, |
69 | | { 0, NULL } |
70 | | }; |
71 | | |
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} |
76 | | }; |
77 | | |
78 | | #if 0 |
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)"}, |
84 | | {0,NULL} |
85 | | }; |
86 | | #endif |
87 | | |
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"}, |
94 | | {0,NULL} |
95 | | }; |
96 | | |
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} |
103 | | }; |
104 | | |
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} |
109 | | }; |
110 | | |
111 | | static h248_package_t h248_pkg_generic = { |
112 | | 0x0001, |
113 | | &hf_h248_pkg_generic, |
114 | | &ett_h248_pkg_generic, |
115 | | h248_pkg_generic_props_vals, |
116 | | NULL, |
117 | | h248_pkg_generic_cause_vals, |
118 | | NULL, |
119 | | NULL, |
120 | | NULL, |
121 | | h248_pkg_generic_cause_evts, |
122 | | NULL |
123 | | }; |
124 | | |
125 | | |
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; |
137 | | |
138 | | static int ett_h248_pkg_root_params; |
139 | | |
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" }, |
150 | | { 0, NULL } |
151 | | }; |
152 | | |
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} |
163 | | }; |
164 | | |
165 | | static h248_package_t h248_pkg_root = { |
166 | | 0x0002, |
167 | | &hf_h248_pkg_root, |
168 | | &ett_h248_pkg_root_params, |
169 | | h248_pkg_root_props_vals, |
170 | | NULL, |
171 | | NULL, |
172 | | NULL, |
173 | | h248_pkg_root_properties, |
174 | | NULL, |
175 | | NULL, |
176 | | NULL |
177 | | }; |
178 | | #endif |
179 | | |
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; |
186 | | |
187 | | static int ett_h248_pkg_tonegen_params; |
188 | | static int ett_h248_pkg_tonegen_sig_pt; |
189 | | |
190 | | static const value_string h248_pkg_tonegen_props_vals[] = { |
191 | | { 0x0000, "Tone Generator - Annex E (tonegen)" }, |
192 | | { 0, NULL } |
193 | | }; |
194 | | |
195 | | static const value_string h248_pkg_tonegen_sigs_vals[] = { |
196 | | { 0x0001, "Play Tone (pt)" }, |
197 | | { 0, NULL } |
198 | | }; |
199 | | |
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)" }, |
204 | | { 0, NULL } |
205 | | }; |
206 | | |
207 | | static const value_string h248_pkg_tonegen_pt_btd_param_vals[] = { |
208 | | { 0x0001, "External (EXT)" }, |
209 | | { 0x0002, "Internal (INT)" }, |
210 | | { 0x0003, "Both (BOTH)" }, |
211 | | { 0, NULL } |
212 | | }; |
213 | | |
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} |
219 | | }; |
220 | | |
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 } |
224 | | }; |
225 | | |
226 | | static h248_package_t h248_pkg_tonegen = { |
227 | | 0x0003, |
228 | | &hf_h248_pkg_tonegen, |
229 | | &ett_h248_pkg_tonegen_params, |
230 | | h248_pkg_tonegen_props_vals, |
231 | | h248_pkg_tonegen_sigs_vals, |
232 | | NULL,NULL,NULL, |
233 | | h248_pkg_tonegen_signals, |
234 | | NULL, |
235 | | NULL |
236 | | }; |
237 | | |
238 | | |
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; |
244 | | |
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; |
248 | | |
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; |
253 | | |
254 | | static const value_string h248_pkg_tonedet_props_vals[] = { |
255 | | { 0x0000, "Tone Detection Package - Annex E (tonedet)" }, |
256 | | { 0, NULL } |
257 | | }; |
258 | | |
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)" }, |
263 | | { 0, NULL } |
264 | | }; |
265 | | |
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)" }, |
270 | | { 0, NULL } |
271 | | }; |
272 | | |
273 | | static const value_string h248_pkg_tonedet_tl_params_vals[] = { |
274 | | { 0x0000, "Wildcard (*)" }, |
275 | | { 0, NULL } |
276 | | }; |
277 | | |
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 } |
283 | | }; |
284 | | |
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 } |
290 | | }; |
291 | | |
292 | | static h248_package_t h248_pkg_tonedet = { |
293 | | 0x0004, |
294 | | &hf_h248_pkg_tonedet, |
295 | | &ett_h248_pkg_tonedet, |
296 | | h248_pkg_tonedet_props_vals, |
297 | | NULL, |
298 | | h248_pkg_tonedet_events_vals, |
299 | | NULL, |
300 | | NULL, |
301 | | NULL, |
302 | | h248_pkg_tonedet_events, |
303 | | NULL |
304 | | }; |
305 | | |
306 | | |
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; |
327 | | |
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; |
346 | | |
347 | | static const value_string h248_pkg_dg_props_vals[] = { |
348 | | { 0x0000, "Basic DTMF Generator Package - Annex E (dg)" }, |
349 | | { 0, NULL } |
350 | | }; |
351 | | |
352 | | static const value_string h248_pkg_dg_signals_vals[] = { |
353 | | /* from tonegeg */ |
354 | | { 0x0001, "Tone ID List (tl)" }, |
355 | | { 0x0002, "End Tone Detected (etd)" }, |
356 | | { 0x0003, "Long Tone Detected (ltd)" }, |
357 | | |
358 | | /* from dd */ |
359 | | { 0x0010, "0 (d0)"}, |
360 | | { 0x0011, "1 (d1)"}, |
361 | | { 0x0012, "2 (d2)"}, |
362 | | { 0x0013, "3 (d3)"}, |
363 | | { 0x0014, "4 (d4)"}, |
364 | | { 0x0015, "5 (d5)"}, |
365 | | { 0x0016, "6 (d6)"}, |
366 | | { 0x0017, "7 (d7)"}, |
367 | | { 0x0018, "8 (d8)"}, |
368 | | { 0x0019, "9 (d9)"}, |
369 | | { 0x001a, "A (dA)"}, |
370 | | { 0x001b, "B (dB)"}, |
371 | | { 0x001c, "C (dC)"}, |
372 | | { 0x001d, "D (dD)"}, |
373 | | { 0x0020, "* (ds)"}, |
374 | | { 0x0021, "# (do)"}, |
375 | | {0,NULL} |
376 | | }; |
377 | | |
378 | | #if 0 |
379 | | static const value_string h248_pkg_dg_sig_params_vals[] = { |
380 | | { 0x0001, "Tone Direction (btd)" }, |
381 | | { 0, NULL } |
382 | | }; |
383 | | #endif |
384 | | |
385 | | static const value_string h248_pkg_dg_sig_btd_vals[] = { |
386 | | { 0x0001, "External (EXT)" }, |
387 | | { 0x0002, "Internal (INT)" }, |
388 | | { 0x0003, "Both (BOTH)" }, |
389 | | { 0, NULL } |
390 | | }; |
391 | | |
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 } |
411 | | }; |
412 | | |
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} |
433 | | }; |
434 | | |
435 | | /* Packet definitions */ |
436 | | static h248_package_t h248_pkg_dg = { |
437 | | 0x0005, |
438 | | &hf_h248_pkg_dg, |
439 | | &ett_h248_pkg_dg, |
440 | | h248_pkg_dg_props_vals, |
441 | | h248_pkg_dg_signals_vals, |
442 | | NULL, NULL, NULL, |
443 | | h248_pkg_dg_signals, /* signals */ |
444 | | NULL, NULL |
445 | | }; |
446 | | |
447 | | /* H248.1 E.6 DTMF Detection Package (dd) */ |
448 | | |
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; |
455 | | #endif |
456 | | #if 0 |
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; |
478 | | #endif |
479 | | |
480 | | #if 0 |
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; |
486 | | |
487 | | static const value_string h248_pkg_dd_props_vals[] = { |
488 | | { 0x0000, "DTMF Detection Package - Annex E (dd)" }, |
489 | | { 0, NULL } |
490 | | }; |
491 | | |
492 | | static const value_string h248_pkg_dd_event_vals[] = { |
493 | | /* from tonedet */ |
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)" }, |
499 | | |
500 | | /* from dd */ |
501 | | { 0x0010, "0 (d0)"}, |
502 | | { 0x0011, "1 (d1)"}, |
503 | | { 0x0012, "2 (d2)"}, |
504 | | { 0x0013, "3 (d3)"}, |
505 | | { 0x0014, "4 (d4)"}, |
506 | | { 0x0015, "5 (d5)"}, |
507 | | { 0x0016, "6 (d6)"}, |
508 | | { 0x0017, "7 (d7)"}, |
509 | | { 0x0018, "8 (d8)"}, |
510 | | { 0x0019, "9 (d9)"}, |
511 | | { 0x001a, "A (dA)"}, |
512 | | { 0x001b, "B (dB)"}, |
513 | | { 0x001c, "C (dC)"}, |
514 | | { 0x001d, "D (dD)"}, |
515 | | { 0x0020, "* (ds)"}, |
516 | | { 0x0021, "# (do)"}, |
517 | | {0,NULL} |
518 | | }; |
519 | | |
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)" }, |
524 | | { 0, NULL } |
525 | | }; |
526 | | |
527 | | static const value_string h248_pkg_dd_ce_vals[] = { |
528 | | { 0x0001, "Digit String (ds)" }, |
529 | | { 0x0003, "Termination Method (meth)" }, |
530 | | { 0, NULL } |
531 | | }; |
532 | | |
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 } |
537 | | }; |
538 | | |
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 } |
544 | | }; |
545 | | |
546 | | |
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 } |
553 | | }; |
554 | | |
555 | | static h248_package_t h248_pkg_dd = { |
556 | | 0x0006, |
557 | | &hf_h248_pkg_dd, |
558 | | &ett_h248_pkg_dd, |
559 | | h248_pkg_dd_props_vals, |
560 | | NULL, |
561 | | h248_pkg_dd_event_vals, |
562 | | NULL, |
563 | | NULL, NULL, |
564 | | h248_pkg_dd_events, |
565 | | NULL |
566 | | }; |
567 | | #endif |
568 | | |
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; |
584 | | |
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; |
596 | | |
597 | | static const value_string h248_pkg_cg_props_vals[] = { |
598 | | { 0x0000, "Call Progress Tones Generator - Annex E (cg)" }, |
599 | | { 0, NULL } |
600 | | }; |
601 | | |
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" }, |
613 | | { 0, NULL } |
614 | | }; |
615 | | |
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)" }, |
620 | | { 0, NULL } |
621 | | }; |
622 | | |
623 | | static const value_string h248_pkg_cg_pt_btd_param_vals[] = { |
624 | | { 0x0001, "External (EXT)" }, |
625 | | { 0x0002, "Internal (INT)" }, |
626 | | { 0x0003, "Both (BOTH)" }, |
627 | | { 0, NULL } |
628 | | }; |
629 | | |
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} |
635 | | }; |
636 | | |
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 } |
649 | | }; |
650 | | |
651 | | static h248_package_t h248_pkg_cg = { |
652 | | 0x0007, |
653 | | &hf_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 */ |
662 | | }; |
663 | | |
664 | | /* H.248.1 E.8 - Call Tones Detection Package */ |
665 | | static int hf_h248_pkg_cd; |
666 | | |
667 | | static int ett_h248_pkg_cd; |
668 | | |
669 | | static const value_string h248_pkg_cd_params_vals[] = { |
670 | | { 0x0000, "Call Progress Tones Detection Package (cd)" }, |
671 | | { 0, NULL } |
672 | | }; |
673 | | |
674 | | static h248_package_t h248_pkg_cd = { |
675 | | 0x0008, |
676 | | &hf_h248_pkg_cd, |
677 | | &ett_h248_pkg_cd, |
678 | | h248_pkg_cd_params_vals, |
679 | | NULL, |
680 | | h248_pkg_cg_sig_cd_evt_vals, |
681 | | NULL, |
682 | | NULL,NULL, |
683 | | (const h248_pkg_evt_t *)(const void*)h248_pkg_cg_signals_cd_events, |
684 | | NULL |
685 | | }; |
686 | | |
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; |
700 | | |
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; |
707 | | |
708 | | static const value_string h248_pkg_al_props_vals[] = { |
709 | | { 0x0000, "Analog Line Supervision Package - Annex E (al)" }, |
710 | | { 0, NULL } |
711 | | }; |
712 | | |
713 | | static const value_string h248_pkg_al_sig_params_vals[] = { |
714 | | { 1, "One" }, |
715 | | { 2, "Two" }, |
716 | | { 0x0006, "Cadence" }, |
717 | | { 0x0007, "Frequency (Hz)" }, |
718 | | { 0, NULL } |
719 | | }; |
720 | | |
721 | | static const value_string h248_pkg_al_evt_onhook_params_vals[] = { |
722 | | { 0x0001, "strict"}, |
723 | | { 0x0002, "init"}, |
724 | | { 0, NULL} |
725 | | }; |
726 | | |
727 | | static const value_string h248_pkg_al_evt_flashhook_params_vals[] = { |
728 | | { 0x0001, "mindur"}, |
729 | | { 0, NULL} |
730 | | }; |
731 | | |
732 | | /* Packet definitions */ |
733 | | static const value_string h248_pkg_al_sig_evts_vals[] = { |
734 | | /* Signals */ |
735 | | { 0x0002, "ri (Ring)" }, |
736 | | /* Events */ |
737 | | { 0x0004, "on (On-hook)" }, |
738 | | { 0x0005, "off (Off-hook)" }, |
739 | | { 0x0006, "fl (Flashhook)" }, |
740 | | {0, NULL}, |
741 | | }; |
742 | | |
743 | | /* Events definitions */ |
744 | | static const value_string h248_pkg_al_evt_onhook_strict_vals[] = { |
745 | | { 0, "exact"}, |
746 | | { 1, "state"}, |
747 | | { 2, "failWrong"}, |
748 | | { 0, NULL } |
749 | | }; |
750 | | |
751 | | static const true_false_string h248_pkg_al_evt_onhook_par_init_vals = { |
752 | | "already on-hook", |
753 | | "actual state transition to on-hook" |
754 | | }; |
755 | | |
756 | | static const true_false_string h248_pkg_al_evt_offhook_par_init_vals = { |
757 | | "already off-hook", |
758 | | "actual state transition to off-hook" |
759 | | }; |
760 | | |
761 | | |
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 } |
765 | | }; |
766 | | |
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} |
771 | | }; |
772 | | |
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} |
777 | | }; |
778 | | |
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} |
782 | | }; |
783 | | |
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 } |
787 | | }; |
788 | | |
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 }, |
793 | | |
794 | | { 0, NULL, NULL, NULL, NULL} |
795 | | }; |
796 | | |
797 | | static h248_package_t h248_pkg_al = { |
798 | | 0x0009, |
799 | | &hf_h248_pkg_al, |
800 | | &ett_h248_pkg_al, |
801 | | h248_pkg_al_props_vals, |
802 | | h248_pkg_al_sig_evts_vals, |
803 | | h248_pkg_al_sig_evts_vals, |
804 | | NULL, |
805 | | NULL, /* Properties */ |
806 | | h248_pkg_al_sig, /* signals */ |
807 | | h248_pkg_al_evts, /* events */ |
808 | | NULL /* statistics */ |
809 | | }; |
810 | | |
811 | | |
812 | | /* H.248.1 E.10 - Basic Continuity Package */ |
813 | | static int hf_h248_pkg_ct; |
814 | | static int ett_h248_pkg_ct; |
815 | | |
816 | | static const value_string h248_pkg_ct_props_vals[] = { |
817 | | { 0x0000, "Basic Continuity Package (ct)" }, |
818 | | { 0, NULL } |
819 | | }; |
820 | | |
821 | | static const value_string h248_pkg_ct_evt_sig_vals[] = { |
822 | | { 0x0003, "Continuity Test (ct)" }, |
823 | | { 0x0004, "Respond (rsp)" }, |
824 | | { 0x0005, "Completion (cmp)" }, |
825 | | { 0, NULL } |
826 | | }; |
827 | | |
828 | | static h248_package_t h248_pkg_ct = { |
829 | | 0x000a, |
830 | | &hf_h248_pkg_ct, |
831 | | &ett_h248_pkg_ct, |
832 | | h248_pkg_ct_props_vals, |
833 | | h248_pkg_ct_evt_sig_vals, |
834 | | h248_pkg_ct_evt_sig_vals, |
835 | | NULL, |
836 | | NULL, NULL, NULL, NULL |
837 | | }; |
838 | | |
839 | | /* H.248.1 E.11 Network Package */ |
840 | | static int hf_h248_pkg_nt; |
841 | | static int ett_h248_pkg_nt; |
842 | | |
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)" }, |
851 | | { 0, NULL } |
852 | | }; |
853 | | |
854 | | static h248_package_t h248_pkg_nt = { |
855 | | 0x000b, |
856 | | &hf_h248_pkg_nt, |
857 | | &ett_h248_pkg_nt, |
858 | | h248_pkg_nt_props_evt_stats_vals, |
859 | | h248_pkg_nt_props_evt_stats_vals, |
860 | | NULL, |
861 | | h248_pkg_nt_props_evt_stats_vals, |
862 | | NULL, NULL, NULL, NULL |
863 | | }; |
864 | | |
865 | | /* H.248.1 E.12 RTP package */ |
866 | | static int hf_h248_pkg_rtp; |
867 | | static int hf_h248_pkg_rtp_stat_ps; |
868 | | |
869 | | static int ett_h248_pkg_rtp; |
870 | | |
871 | | #if 0 |
872 | | static const value_string h248_pkg_rtp_stat_vals[] _U_ = { |
873 | | { 0x0004, "ps"}, |
874 | | { 0, NULL} |
875 | | }; |
876 | | #endif |
877 | | |
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)" }, |
886 | | {0, NULL}, |
887 | | }; |
888 | | |
889 | | static h248_pkg_stat_t h248_pkg_rtp_stat[] = { |
890 | | { 0x0004, &hf_h248_pkg_rtp_stat_ps, &ett_h248_pkg_rtp, NULL,NULL}, |
891 | | }; |
892 | | |
893 | | /* Packet definitions */ |
894 | | static h248_package_t h248_pkg_rtp = { |
895 | | 0x000c, |
896 | | &hf_h248_pkg_rtp, |
897 | | &ett_h248_pkg_rtp, |
898 | | h248_pkg_rtp_props_vals, |
899 | | NULL, |
900 | | NULL, |
901 | | NULL, |
902 | | NULL, /* Properties */ |
903 | | NULL, /* signals */ |
904 | | NULL, /* events */ |
905 | | h248_pkg_rtp_stat /* statistics */ |
906 | | }; |
907 | | |
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; |
912 | | |
913 | | static int ett_h248_pkg_tdmc; |
914 | | |
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)"}, |
919 | | { 0, NULL} |
920 | | }; |
921 | | |
922 | | |
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} |
927 | | }; |
928 | | |
929 | | static h248_package_t h248_pkg_tdmc = { |
930 | | 0x000d, |
931 | | &hf_h248_pkg_tdmc, |
932 | | &ett_h248_pkg_tdmc, |
933 | | h248_pkg_tdmc_props_vals, |
934 | | NULL, |
935 | | NULL, |
936 | | NULL, |
937 | | h248_pkg_tdmc_props, /* Properties */ |
938 | | NULL, /* signals */ |
939 | | NULL, /* events */ |
940 | | NULL /* statistics */ |
941 | | }; |
942 | | |
943 | | |
944 | | |
945 | 14 | void proto_register_h248_annex_e(void) { |
946 | 14 | static hf_register_info hf[] = { |
947 | | /* H.248.1 E.1 Generic Package */ |
948 | 14 | { &hf_h248_pkg_generic, { "Generic Package", "h248.generic", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, |
949 | 14 | { &hf_h248_pkg_generic_cause_evt, { "Cause Event", "h248.generic.cause", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, |
950 | 14 | { &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 | 14 | { &hf_h248_pkg_generic_cause_failurecause, { "Generic Cause", "h248.generic.cause.failurecause", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, |
952 | 14 | { &hf_h248_pkg_generic_sc_evt, {"Signal Completion2","h248.generic.sc",FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL}}, |
953 | 14 | { &hf_h248_pkg_generic_sc_sig_id, { "Signal Identity", "h248.generic.sc.sig_id", FT_BYTES, BASE_NONE, NULL , 0, NULL, HFILL }}, |
954 | 14 | { &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 | 14 | { &hf_h248_pkg_generic_sc_slid, { "Signal List ID", "h248.generic.sc.slid", FT_UINT32, BASE_DEC, NULL , 0, NULL, HFILL }}, |
956 | 14 | { &hf_h248_pkg_generic_sc_rid, { "Request ID", "h248.generic.sc.rid", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, |
957 | | |
958 | | /* H.248.1.E 3 Tone Generator (tonegeg) */ |
959 | 14 | { &hf_h248_pkg_tonegen, { "Tone Generator (tonegen)", "h248.tonegen", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, |
960 | 14 | { &hf_h248_pkg_tonegen_sig_pt, { "Play Tone (pt)", "h248.tonegen.pg", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, |
961 | 14 | { &hf_h248_pkg_tonegen_sig_pt_tl, { "Tone List ID (tl)", "h248.tonegen.pt.tl", FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL }}, |
962 | 14 | { &hf_h248_pkg_tonegen_sig_pt_ind, { "Inter-signal Duration (ind)", "h248.tonegem.pt.ind", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, |
963 | 14 | { &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 }}, |
964 | | |
965 | | /* H.248.1 E.4 Tone Detection (tonedet) */ |
966 | 14 | { &hf_h248_pkg_tonedet, { "Tone Detection Package", "h248.tonedet", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, |
967 | 14 | { &hf_h248_pkg_tonedet_evt_std, { "Start Tone", "h248.tonedet.std", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, |
968 | 14 | { &hf_h248_pkg_tonedet_evt_etd, { "End Tone", "h248.tonedet.etd", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, |
969 | 14 | { &hf_h248_pkg_tonedet_evt_ltd, { "Long Tone", "h248.tonedet.ltd", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, |
970 | 14 | { &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 | 14 | { &hf_h248_pkg_tonedet_evt_dur_param, {"Duration (ms)", "h248.tonedet.evt.dur", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, |
972 | 14 | { &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 }}, |
973 | | |
974 | | |
975 | | /* H.248.1 E.5 Basic DTMF Generator Package */ |
976 | 14 | { &hf_h248_pkg_dg, { "Basic DTMF Generator Package (dg)", "h248.dg", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, |
977 | 14 | { &hf_h248_pkg_dg_sig_pt, { "Play Tone", "h248.dg.pt", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, |
978 | 14 | { &hf_h248_pkg_dg_sig_d0, { "Digit 0", "h248.dg.d0", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, |
979 | 14 | { &hf_h248_pkg_dg_sig_d1, { "Digit 1", "h248.dg.d1", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, |
980 | 14 | { &hf_h248_pkg_dg_sig_d2, { "Digit 2", "h248.dg.d2", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, |
981 | 14 | { &hf_h248_pkg_dg_sig_d3, { "Digit 3", "h248.dg.d3", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, |
982 | 14 | { &hf_h248_pkg_dg_sig_d4, { "Digit 4", "h248.dg.d4", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, |
983 | 14 | { &hf_h248_pkg_dg_sig_d5, { "Digit 5", "h248.dg.d5", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, |
984 | 14 | { &hf_h248_pkg_dg_sig_d6, { "Digit 6", "h248.dg.d6", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, |
985 | 14 | { &hf_h248_pkg_dg_sig_d7, { "Digit 7", "h248.dg.d7", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, |
986 | 14 | { &hf_h248_pkg_dg_sig_d8, { "Digit 8", "h248.dg.d8", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, |
987 | 14 | { &hf_h248_pkg_dg_sig_d9, { "Digit 9", "h248.dg.d9", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, |
988 | 14 | { &hf_h248_pkg_dg_sig_da, { "Digit A", "h248.dg.da", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, |
989 | 14 | { &hf_h248_pkg_dg_sig_db, { "Digit B", "h248.dg.db", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, |
990 | 14 | { &hf_h248_pkg_dg_sig_dc, { "Digit C", "h248.dg.dc", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, |
991 | 14 | { &hf_h248_pkg_dg_sig_dd, { "Digit D", "h248.dg.dd", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, |
992 | 14 | { &hf_h248_pkg_dg_sig_ds, { "Digit *", "h248.dg.ds", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, |
993 | 14 | { &hf_h248_pkg_dg_sig_do, { "Digit #", "h248.dg.do", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, |
994 | 14 | { &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 }}, |
995 | | |
996 | | /* H.248.1 E.6 DTMF Detection Package */ |
997 | | #if 0 |
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 }}, |
1003 | | #endif |
1004 | | |
1005 | | /* H.248.1.E.7 Call Progress Tones Generator package */ |
1006 | 14 | { &hf_h248_pkg_cg, { "Call Progress Tones Generator", "h248.cg", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, |
1007 | 14 | { &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 | 14 | { &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 | 14 | { &hf_h248_pkg_cg_sig_pt_ind, { "Inter-Signal Duration (ind)", "h248.cg.pt.ind", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, |
1010 | 14 | { &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 }}, |
1011 | | |
1012 | 14 | { &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 | 14 | { &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 | 14 | { &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 | 14 | { &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 | 14 | { &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 | 14 | { &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 | 14 | { &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 | 14 | { &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 | 14 | { &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 }}, |
1021 | | |
1022 | | /* H.248.1 E.8 Call Progress Tones Detection Package */ |
1023 | 14 | { &hf_h248_pkg_cd, { "Call Progress Tones Detection Package", "h248.cd", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, |
1024 | | |
1025 | | /* H.248.1 E.9 Analog Line Supervision Package */ |
1026 | 14 | { &hf_h248_pkg_al, { "Analog Line Supervision Package", "h248.al", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, |
1027 | 14 | { &hf_h248_pkg_al_sig_cadence, { "Cadence", "h248.al.sig.cadence", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, |
1028 | 14 | { &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 }}, |
1029 | | #if 0 |
1030 | | { &hf_h248_pkg_al_sig_freq, { "Ring Frequency", "h248.al.sig.freq", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, |
1031 | | #endif |
1032 | 14 | { &hf_h248_pkg_al_evt_onhook, { "onhook", "h248.al.onhook", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, |
1033 | 14 | { &hf_h248_pkg_al_evt_offhook, { "offhook", "h248.al.offhook", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, |
1034 | 14 | { &hf_h248_pkg_al_evt_flashhook, { "flashhook", "h248.al.flashhook", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, |
1035 | 14 | { &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 | 14 | { &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 | 14 | { &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 | 14 | { &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 | 14 | { &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 }}, |
1040 | | |
1041 | | /* H.248.1 E.10 - Basic Continuity Package */ |
1042 | 14 | { &hf_h248_pkg_ct, { "Basic Continuity package", "h248.ct", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, |
1043 | | |
1044 | | /* H.248.1 E.11 Network Package */ |
1045 | 14 | { &hf_h248_pkg_nt, { "Network package", "h248.nt", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, |
1046 | | |
1047 | | /* H.248.1 E.12 RTP package */ |
1048 | 14 | { &hf_h248_pkg_rtp, { "RTP package", "h248.rtp", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, |
1049 | 14 | { &hf_h248_pkg_rtp_stat_ps, { "Packets Sent", "h248.rtp.stat.ps", FT_UINT64, BASE_DEC, NULL, 0, NULL, HFILL }}, |
1050 | | |
1051 | | /* H.248.1 E.13 TDM Circuit Package */ |
1052 | 14 | { &hf_h248_pkg_tdmc, { "TDM Circuit Package", "h248.tdmc", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, |
1053 | 14 | { &hf_h248_pkg_tdmc_ec, { "Echo Cancellation", "h248.tdmc.ec", FT_BOOLEAN, BASE_NONE, TFS(&tfs_on_off), 0x0, NULL, HFILL }}, |
1054 | 14 | { &hf_h248_pkg_tdmc_gain, { "Gain", "h248.tdmc.gain", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }}, |
1055 | 14 | }; |
1056 | | |
1057 | 14 | static int *ett[] = { |
1058 | | /* generic 0x0001 */ |
1059 | 14 | &ett_h248_pkg_generic_cause_evt, |
1060 | 14 | &ett_h248_pkg_generic, |
1061 | 14 | &ett_h248_pkg_generic_sc_evt, |
1062 | | |
1063 | | #if 0 |
1064 | | &ett_h248_pkg_root_params, |
1065 | | #endif |
1066 | | |
1067 | 14 | &ett_h248_pkg_tonegen_params, |
1068 | | |
1069 | | /* tonegen 0x0003 */ |
1070 | 14 | &ett_h248_pkg_tonedet, |
1071 | 14 | &ett_h248_pkg_tonedet_evt_std, |
1072 | 14 | &ett_h248_pkg_tonedet_evt_etd, |
1073 | 14 | &ett_h248_pkg_tonedet_evt_ltd, |
1074 | | |
1075 | | /* dg 0x0005 */ |
1076 | 14 | &ett_h248_pkg_dg, |
1077 | 14 | &ett_h248_pkg_dg_sig_pt, |
1078 | 14 | &ett_h248_pkg_dg_sig_d0, |
1079 | 14 | &ett_h248_pkg_dg_sig_d1, |
1080 | 14 | &ett_h248_pkg_dg_sig_d2, |
1081 | 14 | &ett_h248_pkg_dg_sig_d3, |
1082 | 14 | &ett_h248_pkg_dg_sig_d4, |
1083 | 14 | &ett_h248_pkg_dg_sig_d5, |
1084 | 14 | &ett_h248_pkg_dg_sig_d6, |
1085 | 14 | &ett_h248_pkg_dg_sig_d7, |
1086 | 14 | &ett_h248_pkg_dg_sig_d8, |
1087 | 14 | &ett_h248_pkg_dg_sig_d9, |
1088 | 14 | &ett_h248_pkg_dg_sig_da, |
1089 | 14 | &ett_h248_pkg_dg_sig_db, |
1090 | 14 | &ett_h248_pkg_dg_sig_dc, |
1091 | 14 | &ett_h248_pkg_dg_sig_dd, |
1092 | 14 | &ett_h248_pkg_dg_sig_ds, |
1093 | 14 | &ett_h248_pkg_dg_sig_do, |
1094 | | |
1095 | | /* dd 0x0006 */ |
1096 | | #if 0 |
1097 | | &ett_h248_pkg_dd, |
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, |
1102 | | #endif |
1103 | | |
1104 | | /* 0x0007 Package cg */ |
1105 | 14 | &ett_h248_pkg_cg_params, |
1106 | 14 | &ett_h248_pkg_cg_sig_pt, |
1107 | 14 | &ett_h248_pkg_tonegen_sig_pt, |
1108 | 14 | &ett_h248_pkg_cg_sig_dt, |
1109 | 14 | &ett_h248_pkg_cg_sig_rt, |
1110 | 14 | &ett_h248_pkg_cg_sig_bt, |
1111 | 14 | &ett_h248_pkg_cg_sig_ct, |
1112 | 14 | &ett_h248_pkg_cg_sig_sit, |
1113 | 14 | &ett_h248_pkg_cg_sig_wt, |
1114 | 14 | &ett_h248_pkg_cg_sig_prt, |
1115 | 14 | &ett_h248_pkg_cg_sig_cw, |
1116 | 14 | &ett_h248_pkg_cg_sig_cr, |
1117 | | |
1118 | | /* cd 0x0008 */ |
1119 | 14 | &ett_h248_pkg_cd, |
1120 | | |
1121 | | /* al 0x0009 */ |
1122 | 14 | &ett_h248_pkg_al, |
1123 | 14 | &ett_h248_pkg_al_sig_cadence, |
1124 | 14 | &ett_h248_pkg_al_sig_freq, |
1125 | 14 | &ett_h248_pkg_al_evt_flashhook, |
1126 | 14 | &ett_h248_pkg_al_evt_offhook, |
1127 | 14 | &ett_h248_pkg_al_evt_onhook, |
1128 | | |
1129 | | /* ct 0x000a */ |
1130 | 14 | &ett_h248_pkg_ct, |
1131 | | |
1132 | | /* nt 0x000b */ |
1133 | 14 | &ett_h248_pkg_nt, |
1134 | | |
1135 | | /* rtp 0x000c */ |
1136 | 14 | &ett_h248_pkg_rtp, |
1137 | | |
1138 | | /* tdmc 0x000d */ |
1139 | 14 | &ett_h248_pkg_tdmc |
1140 | 14 | }; |
1141 | | |
1142 | 14 | proto_h248_annex_E = proto_register_protocol(PNAME, PSNAME, PFNAME); |
1143 | | |
1144 | 14 | proto_register_field_array(proto_h248_annex_E, hf, array_length(hf)); |
1145 | | |
1146 | 14 | proto_register_subtree_array(ett, array_length(ett)); |
1147 | | |
1148 | | /* MERGE_PKG_LOW is use to allow other custom version of these |
1149 | | *H248 package to take presidence if already loaded */ |
1150 | 14 | h248_register_package(&h248_pkg_generic,MERGE_PKG_LOW); /* 0x0001 */ |
1151 | | /* h248_register_package(&h248_pkg_root,MERGE_PKG_LOW); */ /* 0x0002 */ |
1152 | 14 | h248_register_package(&h248_pkg_tonegen,MERGE_PKG_LOW); /* 0x0003 */ |
1153 | 14 | h248_register_package(&h248_pkg_tonedet,MERGE_PKG_LOW); /* 0x0004 */ |
1154 | 14 | h248_register_package(&h248_pkg_dg,MERGE_PKG_LOW); /* 0X0005 */ |
1155 | | /* h248_register_package(&h248_pkg_dd,MERGE_PKG_LOW); */ /* 0x0006 */ |
1156 | 14 | h248_register_package(&h248_pkg_cg,MERGE_PKG_LOW); /* 0x0007 */ |
1157 | 14 | h248_register_package(&h248_pkg_cd, MERGE_PKG_LOW); /* 0x0008 */ |
1158 | 14 | h248_register_package(&h248_pkg_al,MERGE_PKG_LOW); /* 0x0009 */ |
1159 | 14 | h248_register_package(&h248_pkg_ct, MERGE_PKG_LOW); /* 0x000a */ |
1160 | 14 | h248_register_package(&h248_pkg_nt, MERGE_PKG_LOW); /* 0x000b */ |
1161 | 14 | h248_register_package(&h248_pkg_rtp,MERGE_PKG_LOW); /* 0x000c */ |
1162 | 14 | h248_register_package(&h248_pkg_tdmc,MERGE_PKG_LOW); /* 0x000d */ |
1163 | 14 | } |
1164 | | |
1165 | | /* |
1166 | | * Editor modelines - https://www.wireshark.org/tools/modelines.html |
1167 | | * |
1168 | | * Local variables: |
1169 | | * c-basic-offset: 8 |
1170 | | * tab-width: 8 |
1171 | | * indent-tabs-mode: t |
1172 | | * End: |
1173 | | * |
1174 | | * vi: set shiftwidth=8 tabstop=8 noexpandtab: |
1175 | | * :indentSize=8:tabSize=8:noTabs=false: |
1176 | | */ |