Revert "TODO epan/dissectors/asn1/kerberos/packet-kerberos-template.c new GSS flags"
[wireshark-sm.git] / epan / dissectors / packet-dvb-s2-table.c
blobd08863b081bf117926f365a8315e94b219818f36
1 /* packet-dvb-s2-table.c
2 * Routines for DVB-RCS2 Table dissection
3 * Copyright 2015-2020, Thales Alenia Space
4 * Copyright 2015-2020, Viveris Technologies <adrien.destugues@opensource.viveris.fr>
6 * Wireshark - Network traffic analyzer
7 * By Gerald Combs <gerald@wireshark.org>
8 * Copyright 1998 Gerald Combs
10 * This program is free software; you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License as published by
12 * the Free Software Foundation; either version 2 of the License, or
13 * (at your option) any later version.
15 * This program is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU General Public License for more details.
20 * You should have received a copy of the GNU General Public License along
21 * with this program; if not, write to the Free Software Foundation, Inc.,
22 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
25 #include "config.h"
27 #include <glib.h>
28 #include <epan/packet.h>
29 #include <epan/prefs.h>
30 #include <epan/etypes.h>
31 #include "packet-snmp.h"
33 void proto_register_dvb_s2_table(void);
34 void proto_reg_handoff_dvb_s2_table(void);
37 /* preferences */
38 #define DVB_S2_RCS_TABLE_DECODING 0
39 #define DVB_S2_RCS2_TABLE_DECODING 1
41 static int dvb_s2_rcs_version = DVB_S2_RCS2_TABLE_DECODING;
43 /* Initialize the protocol and registered fields */
44 static int proto_dvb_s2_table;
45 static int hf_dvb_s2_table_id;
46 static int hf_dvb_s2_table_section;
47 static int hf_dvb_s2_table_private;
48 static int hf_dvb_s2_table_reserved;
49 static int hf_dvb_s2_table_msb_len;
50 static int hf_dvb_s2_table_lsb_len;
51 static int hf_dvb_s2_table_network_interactive_id;
52 static int hf_dvb_s2_table_reserved2;
53 static int hf_dvb_s2_table_version_number;
54 static int hf_dvb_s2_table_current_next_indicator;
55 static int hf_dvb_s2_table_section_number;
56 static int hf_dvb_s2_table_last_section_number;
58 static int hf_dvb_s2_table_smt_id;
59 static int hf_dvb_s2_table_smt_section_syntax_indicator;
60 static int hf_dvb_s2_table_smt_futur_use;
61 static int hf_dvb_s2_table_smt_reserved;
62 static int hf_dvb_s2_table_smt_section_length;
63 static int hf_dvb_s2_table_smt_esn0;
64 static int hf_dvb_s2_table_smt_modcod;
66 /* DSM-CC header */
67 static int hf_dvb_s2_section_syntax_indic;
68 static int hf_dvb_s2_private_indicator;
69 static int hf_dvb_s2_reserved_1;
70 static int hf_dvb_s2_section_length;
71 static int hf_dvb_s2_mac_addres_6;
72 static int hf_dvb_s2_mac_addres_5;
73 static int hf_dvb_s2_mac_addres_4;
74 static int hf_dvb_s2_mac_addres_3;
75 static int hf_dvb_s2_mac_addres_2;
76 static int hf_dvb_s2_mac_addres_1;
77 static int hf_dvb_s2_reserved_2;
78 static int hf_dvb_s2_payload_scrambling_control;
79 static int hf_dvb_s2_address_scrambling_control;
80 static int hf_dvb_s2_LLC_SNAP_flag;
81 static int hf_dvb_s2_current_next_indicator;
82 static int hf_dvb_s2_section_number;
83 static int hf_dvb_s2_last_section_number;
85 /* SCT */
86 static int hf_dvb_s2_table_superframe_loop_count;
87 static int hf_dvb_s2_table_superframe;
88 static int hf_dvb_s2_table_sf_sequence;
89 static int hf_dvb_s2_table_sf_id;
90 static int hf_dvb_s2_table_sf_large_timing_uncertainty_flag;
91 static int hf_dvb_s2_table_sf_uplink_polarization;
92 static int hf_dvb_s2_table_sf_absolute_time;
93 static int hf_dvb_s2_table_sf_duration;
94 static int hf_dvb_s2_table_sf_centre_frequency;
95 static int hf_dvb_s2_table_sf_count;
96 static int hf_dvb_s2_table_sf_frame_loop_count;
97 static int hf_dvb_s2_table_sf_frame;
98 static int hf_dvb_s2_table_sf_frame_type;
99 static int hf_dvb_s2_table_sf_frame_id;
100 static int hf_dvb_s2_table_sf_frame_start_time;
101 static int hf_dvb_s2_table_sf_frame_centre_frequency_offset;
102 /* TIM */
103 static int hf_dvb_s2_table_rcst_status;
104 static int hf_dvb_s2_table_network_status;
105 static int hf_dvb_s2_table_desc_loop_count;
106 /* TBTP */
107 static int hf_dvb_s2_tbtp_group_id;
108 static int hf_dvb_s2_tbtp_superframe_count;
109 static int hf_dvb_s2_tbtp_frame_loop_count;
110 static int hf_dvb_s2_tbtp_sf_frame;
111 static int hf_dvb_s2_tbtp_frame_number;
112 static int hf_dvb_s2_tbtp_btb_loop_count;
113 static int hf_dvb_s2_tbtp_btp;
114 static int hf_dvb_s2_tbtp_multiple_channel_flag;
115 static int hf_dvb_s2_tbtp_assignment_type;
116 static int hf_dvb_s2_tbtp_frame_vbdc_queue_empty_flag;
117 static int hf_dvb_s2_tbtp_start_slot;
118 static int hf_dvb_s2_tbtp_channel_id;
119 static int hf_dvb_s2_tbtp_logon_id;
120 static int hf_dvb_s2_tbtp_assignment_count;
121 /* TBTP2 */
122 static int hf_dvb_s2_table_group_id;
123 static int hf_dvb_s2_table_assign_context;
124 static int hf_dvb_s2_table_superframe_count;
125 static int hf_dvb_s2_table_assign_format;
126 static int hf_dvb_s2_table_frame_loop_count;
127 static int hf_dvb_s2_table_frame_number;
128 static int hf_dvb_s2_table_frame_assign_offset;
129 static int hf_dvb_s2_table_frame_assign_loop_count;
130 static int hf_dvb_s2_table_frame_assignment;
131 static int hf_dvb_s2_table_frame_assign_id48;
132 static int hf_dvb_s2_table_frame_assign_id8;
133 static int hf_dvb_s2_table_frame_assign_id16;
134 static int hf_dvb_s2_table_frame_assign_id24;
135 static int hf_dvb_s2_table_frame_dynamic_tx_type;
136 /* CMT */
137 static int hf_dvb_s2_table_entry_loop_count;
138 static int hf_dvb_s2_table_entry;
139 static int hf_dvb_s2_table_entry_login_id;
140 /* TMST2 */
141 static int hf_dvb_s2_table_common_sytem_margin;
142 static int hf_dvb_s2_table_tx_mode_count;
143 static int hf_dvb_s2_table_tx_mode;
144 static int hf_dvb_s2_table_tx_mode_frame_length;
145 static int hf_dvb_s2_table_tx_mode_pilot_symbols;
146 static int hf_dvb_s2_table_tx_mode_modcod;
147 static int hf_dvb_s2_table_tx_mode_modcod_system_margin;
148 static int hf_dvb_s2_table_tx_mode_isi;
149 /* FCT2 */
150 static int hf_dvb_s2_table_frame_type_loop_count;
151 static int hf_dvb_s2_table_frame_type_branch;
152 static int hf_dvb_s2_table_frame_type;
153 static int hf_dvb_s2_table_frame_type_frame_duration;
154 static int hf_dvb_s2_table_frame_type_tx_format_class;
155 static int hf_dvb_s2_table_frame_type_btu_duration;
156 static int hf_dvb_s2_table_frame_type_btu_carrier_bw;
157 static int hf_dvb_s2_table_frame_type_btu_symbol_rate;
158 static int hf_dvb_s2_table_frame_type_time_unit_count;
159 static int hf_dvb_s2_table_frame_type_grid_repeat_count;
160 static int hf_dvb_s2_table_frame_type_grid_frequency_offset;
161 static int hf_dvb_s2_table_frame_type_section_loop_count;
162 static int hf_dvb_s2_table_frame_type_section;
163 static int hf_dvb_s2_table_frame_type_section_default_tx_type;
164 static int hf_dvb_s2_table_frame_type_section_fix_acc_method;
165 static int hf_dvb_s2_table_frame_type_section_repeat_count;
166 /* FCT */
167 static int hf_dvb_s2_table_frame_ID_loop_count;
168 static int hf_dvb_s2_table_frame_ID_branch;
169 static int hf_dvb_s2_table_frame_ID;
170 static int hf_dvb_s2_table_frame_ID_frame_duration;
171 static int hf_dvb_s2_table_frame_ID_total_timeslot_count;
172 static int hf_dvb_s2_table_frame_ID_start_timeslot_number;
173 static int hf_dvb_s2_table_frame_ID_timeslot_loop_count;
174 static int hf_dvb_s2_table_frame_ID_timeslot;
175 static int hf_dvb_s2_table_frame_ID_timeslot_timeslot_frequency_offset;
176 static int hf_dvb_s2_table_frame_ID_timeslot_timeslot_time_offset;
177 static int hf_dvb_s2_table_frame_ID_timeslot_timeslot_id;
178 static int hf_dvb_s2_table_frame_ID_timeslot_repeat_count;
179 /* BCT */
180 static int hf_dvb_s2_table_tx_type_loop_count;
181 static int hf_dvb_s2_table_tx_type_branch;
182 static int hf_dvb_s2_table_tx_type;
183 static int hf_dvb_s2_table_tx_type_tx_content_type;
184 static int hf_dvb_s2_table_tx_type_tx_format_class;
185 static int hf_dvb_s2_table_tx_type_tx_format_data_length;
186 static int hf_dvb_s2_table_tx_type_tx_format_data;
187 /* BCT Common Tx */
188 static int hf_dvb_s2_table_tx_type_tx_block_size;
189 static int hf_dvb_s2_table_tx_type_threshold_es_n0;
190 static int hf_dvb_s2_table_tx_type_payload_size;
191 static int hf_dvb_s2_table_tx_type_modulation_scheme;
192 static int hf_dvb_s2_table_tx_type_p;
193 static int hf_dvb_s2_table_tx_type_q0;
194 static int hf_dvb_s2_table_tx_type_q1;
195 static int hf_dvb_s2_table_tx_type_q2;
196 static int hf_dvb_s2_table_tx_type_q3;
197 static int hf_dvb_s2_table_tx_type_y_period;
198 static int hf_dvb_s2_table_tx_type_w_period;
199 static int hf_dvb_s2_table_tx_type_y_pattern;
200 static int hf_dvb_s2_table_tx_type_y_pattern_bit;
201 static int hf_dvb_s2_table_tx_type_w_pattern;
202 static int hf_dvb_s2_table_tx_type_w_pattern_bit;
203 static int hf_dvb_s2_table_tx_type_preamble_len;
204 static int hf_dvb_s2_table_tx_type_postamble_len;
205 static int hf_dvb_s2_table_tx_type_pilot_period;
206 static int hf_dvb_s2_table_tx_type_pilot_block_len;
207 static int hf_dvb_s2_table_tx_type_pilot_sum;
208 static int hf_dvb_s2_table_tx_type_uw_symbol;
209 static int hf_dvb_s2_table_tx_type_uw_symbol_unit;
210 static int hf_dvb_s2_table_tx_type_uw_symbol_qpsk;
211 static int hf_dvb_s2_table_tx_type_uw_symbol_8psk;
212 static int hf_dvb_s2_table_tx_type_uw_symbol_16qam;
213 static int hf_dvb_s2_table_tx_type_waveform_id;
214 static int hf_dvb_s2_table_tx_type_tx_start_offset;
215 /* BCT LM Tx */
216 static int hf_dvb_s2_table_tx_type_tx_start_offset_1;
217 static int hf_dvb_s2_table_tx_type_tx_start_offset_2;
218 /* BCT CPM Tx */
219 static int hf_dvb_s2_table_tx_type_modulation_mh;
220 static int hf_dvb_s2_table_tx_type_modulation_ph;
221 static int hf_dvb_s2_table_tx_type_modulation_type;
222 static int hf_dvb_s2_table_tx_type_alpha_rc;
223 static int hf_dvb_s2_table_tx_type_code_rate;
224 static int hf_dvb_s2_table_tx_type_constraint_length_k;
225 static int hf_dvb_s2_table_tx_type_uw_length;
226 static int hf_dvb_s2_table_tx_type_nbr_uw_segments;
227 static int hf_dvb_s2_table_tx_type_uw_segment;
228 static int hf_dvb_s2_table_tx_type_uw_segment_start;
229 static int hf_dvb_s2_table_tx_type_uw_segment_length;
230 static int hf_dvb_s2_table_tx_type_param_interleaver;
231 static int hf_dvb_s2_table_tx_type_n;
232 static int hf_dvb_s2_table_tx_type_s;
233 static int hf_dvb_s2_table_tx_type_p_interleaver;
234 static int hf_dvb_s2_table_tx_type_n1_12;
235 static int hf_dvb_s2_table_tx_type_k1_12;
236 static int hf_dvb_s2_table_tx_type_K2_12;
237 static int hf_dvb_s2_table_tx_type_K3_12;
238 static int hf_dvb_s2_table_tx_type_pi_i;
239 /* SPT */
240 static int hf_dvb_s2_table_satellite_loop_count;
241 static int hf_dvb_s2_table_satellite;
242 static int hf_dvb_s2_table_satellite_id;
243 static int hf_dvb_s2_table_satellite_x_coordinate;
244 static int hf_dvb_s2_table_satellite_y_coordinate;
245 static int hf_dvb_s2_table_satellite_z_coordinate;
246 /* NIT - RMT */
247 static int hf_dvb_s2_table_network_descriptors_length;
248 static int hf_dvb_s2_table_multiplex_streams_spec_length;
249 static int hf_dvb_s2_table_multiplex;
250 static int hf_dvb_s2_table_multiplex_forward_multiplex;
251 static int hf_dvb_s2_table_multiplex_reward_multiplex;
252 static int hf_dvb_s2_table_multiplex_original_network_id;
253 static int hf_dvb_s2_table_multiplex_transport_descriptors_length;
254 /* TDT */
255 static int hf_dvb_s2_reserved_future_use;
256 static int hf_dvb_s2_reserved_tdt;
257 static int hf_dvb_s2_tdt_date;
258 static int hf_dvb_s2_tdt_hour;
259 static int hf_dvb_s2_tdt_minute;
260 static int hf_dvb_s2_tdt_second;
261 /* MMT2 */
262 static int hf_dvb_s2_table_svn_number;
263 static int hf_dvb_s2_table_svn_prefix_size;
264 static int hf_dvb_s2_table_pt_count;
265 static int hf_dvb_s2_table_protocol;
266 static int hf_dvb_s2_table_pt_protocol_type;
267 static int hf_dvb_s2_table_pt_address_size;
268 static int hf_dvb_s2_table_pt_mapping_sections;
269 static int hf_dvb_s2_table_pt_mapping_section;
270 static int hf_dvb_s2_table_pt_ms_inclusion_start;
271 static int hf_dvb_s2_table_pt_ms_inclusion_end;
272 static int hf_dvb_s2_table_pt_ms_exclusions;
273 static int hf_dvb_s2_table_pt_ms_exclusion;
274 static int hf_dvb_s2_table_pt_ms_exclusion_start;
275 static int hf_dvb_s2_table_pt_ms_exclusion_end;
276 static int hf_dvb_s2_table_pt_ms_mac24_base;
277 static int hf_dvb_s2_table_pt_ms_mcast_prefix_size;
279 /* Descriptors */
280 static int hf_dvb_s2_table_descriptor;
281 static int hf_dvb_s2_table_desc_tag;
282 static int hf_dvb_s2_table_desc_length;
283 static int hf_dvb_s2_table_nnd_char;
284 /* Linkage Descriptor */
285 static int hf_dvb_s2_table_ld_fm_id;
286 static int hf_dvb_s2_table_ld_on_id;
287 static int hf_dvb_s2_table_ld_rm_id;
288 static int hf_dvb_s2_table_ld_service_id;
289 static int hf_dvb_s2_table_ld_linkage_type;
290 static int hf_dvb_s2_table_ld_ho_type;
291 static int hf_dvb_s2_table_ld_reserved_future_use;
292 static int hf_dvb_s2_table_ld_origin_type;
293 static int hf_dvb_s2_table_ld_network_id;
294 static int hf_dvb_s2_table_ld_initial_service_id;
295 static int hf_dvb_s2_table_ld_target_event_id;
296 static int hf_dvb_s2_table_ld_target_listed;
297 static int hf_dvb_s2_table_ld_event_simulcast;
298 static int hf_dvb_s2_table_ld_reserved;
299 static int hf_dvb_s2_table_ld_private_data;
300 static int hf_dvb_s2_table_ld_population_id_loop_count;
301 static int hf_dvb_s2_table_ld_population_id_base;
302 static int hf_dvb_s2_table_ld_population_id_mask;
304 /* Satellite Return Link Descriptor */
305 static int hf_dvb_s2_table_srld_satellite_id;
306 static int hf_dvb_s2_table_srld_beam_id;
307 static int hf_dvb_s2_table_srld_gateway_id;
308 static int hf_dvb_s2_table_srld_reserved;
309 static int hf_dvb_s2_table_srld_orbital_position;
310 static int hf_dvb_s2_table_srld_west_east_flag;
311 static int hf_dvb_s2_table_srld_superframe_sequence;
312 static int hf_dvb_s2_table_srld_tx_frequency_offset;
313 static int hf_dvb_s2_table_srld_zero_frequency_offset;
314 static int hf_dvb_s2_table_srld_private_data;
315 /* Logon Initialize Descriptor */
316 static int hf_dvb_s2_table_lid_group_id;
317 static int hf_dvb_s2_table_lid_logon_id;
318 static int hf_dvb_s2_table_lid_continuous_carrier;
319 static int hf_dvb_s2_table_lid_security_handshake;
320 static int hf_dvb_s2_table_lid_prefix_flag;
321 static int hf_dvb_s2_table_lid_data_unit_label_flag;
322 static int hf_dvb_s2_table_lid_mini_slot_flag;
323 static int hf_dvb_s2_table_lid_contention_based_mini_slot_flag;
324 static int hf_dvb_s2_table_lid_capacity_type_flag;
325 static int hf_dvb_s2_table_lid_traffic_burst_type;
326 static int hf_dvb_s2_table_lid_connectivity;
327 static int hf_dvb_s2_table_lid_return_vpi;
328 static int hf_dvb_s2_table_lid_return_vci;
329 static int hf_dvb_s2_table_lid_return_signalling_vpi;
330 static int hf_dvb_s2_table_lid_return_signalling_vci;
331 static int hf_dvb_s2_table_lid_forward_signalling_vpi;
332 static int hf_dvb_s2_table_lid_forward_signalling_vci;
333 static int hf_dvb_s2_table_lid_return_trf_pid;
334 static int hf_dvb_s2_table_lid_return_ctrl_mngm_pid;
335 static int hf_dvb_s2_table_lid_cra_level;
336 static int hf_dvb_s2_table_lid_vbdc_max;
337 static int hf_dvb_s2_table_lid_rbdc_max;
338 static int hf_dvb_s2_table_lid_rbdc_timeout;
339 /* Forward Interaction Path Descriptor */
340 static int hf_dvb_s2_table_fipd_original_network_id;
341 static int hf_dvb_s2_table_fipd_transport_stream_id;
342 static int hf_dvb_s2_table_fipd_pid_loop_count;
343 static int hf_dvb_s2_table_fipd_pid;
344 /* Return Interaction Path Descriptor */
345 static int hf_dvb_s2_table_ripd_continuous_carrier;
346 static int hf_dvb_s2_table_ripd_network_routing_label_loop_count;
347 static int hf_dvb_s2_table_ripd_allocation_desallocation_flag;
348 static int hf_dvb_s2_table_ripd_pid_flag;
349 static int hf_dvb_s2_table_ripd_pid_loop_count;
350 static int hf_dvb_s2_table_ripd_pid;
351 static int hf_dvb_s2_table_ripd_vpi_vci_flag;
352 static int hf_dvb_s2_table_ripd_vpi_vci_loop_count;
353 static int hf_dvb_s2_table_ripd_vpi;
354 static int hf_dvb_s2_table_ripd_vci;
355 static int hf_dvb_s2_table_ripd_route_id_flag;
356 static int hf_dvb_s2_table_ripd_route_id_loop_count;
357 static int hf_dvb_s2_table_ripd_route_id;
358 static int hf_dvb_s2_table_ripd_channel_id;
359 static int hf_dvb_s2_desc_network_routing;
360 /* Correction Control Descriptor */
361 static int hf_dvb_s2_table_corcd_acq_response_timeout;
362 static int hf_dvb_s2_table_corcd_sync_response_timeout;
363 static int hf_dvb_s2_table_corcd_acq_max_losses;
364 static int hf_dvb_s2_table_corcd_sync_max_losses;
365 /* Contention Control Descriptor */
366 static int hf_dvb_s2_table_concd_superframe_id;
367 static int hf_dvb_s2_table_concd_csc_response_timeout;
368 static int hf_dvb_s2_table_concd_csc_max_losses;
369 static int hf_dvb_s2_table_concd_max_time_before_retry;
371 /* Control assign descriptor */
372 static int hf_dvb_s2_table_desc_sync_achieved_time_threshold;
373 static int hf_dvb_s2_table_desc_max_sync_tries;
374 static int hf_dvb_s2_table_desc_sync_achieved_freq_threshold;
375 static int hf_dvb_s2_table_desc_ctrl_start_superframe_count;
376 static int hf_dvb_s2_table_desc_ctrl_frame_nbr;
377 static int hf_dvb_s2_table_desc_ctrl_repeat_period;
378 static int hf_dvb_s2_table_desc_ctrl_timeslot_nbr;
379 static int hf_dvb_s2_table_desc_sync_start_superframe;
380 static int hf_dvb_s2_table_desc_sync_frame_nbr;
381 static int hf_dvb_s2_table_desc_sync_repeat_period;
382 static int hf_dvb_s2_table_desc_sync_slot_nbr;
383 /* Correction message descriptor */
384 static int hf_dvb_s2_table_desc_time_correct_flag;
385 static int hf_dvb_s2_table_desc_power_correct_flag;
386 static int hf_dvb_s2_table_desc_freq_correct_flag;
387 static int hf_dvb_s2_table_desc_slot_type;
388 static int hf_dvb_s2_table_desc_burst_time_scaling;
389 static int hf_dvb_s2_table_desc_burst_time_correct;
390 static int hf_dvb_s2_table_desc_power_ctrl_flag;
391 static int hf_dvb_s2_table_desc_power_correction;
392 static int hf_dvb_s2_table_desc_power_esn0;
393 static int hf_dvb_s2_table_desc_freq_correction;
394 /* Correction message extension descriptor */
395 static int hf_dvb_s2_table_desc_slot_nbr;
396 static int hf_dvb_s2_table_desc_sf_sequence;
397 static int hf_dvb_s2_table_desc_frame_number;
398 /* Logon response descriptor */
399 static int hf_dvb_s2_table_desc_keep_id_after_logoff;
400 static int hf_dvb_s2_table_desc_power_ctrl_mode;
401 static int hf_dvb_s2_table_desc_rcst_access_status;
402 static int hf_dvb_s2_table_desc_logon_id;
403 static int hf_dvb_s2_table_desc_lowest_assign_id;
404 static int hf_dvb_s2_table_desc_assign_id_count;
405 static int hf_dvb_s2_table_desc_unicast_mac24_count;
406 /* Satellite Forward Link Descriptor */
407 static int hf_dvb_s2_table_sfld_satellite_id;
408 static int hf_dvb_s2_table_sfld_beam_id;
409 static int hf_dvb_s2_table_sfld_ncc_id;
410 static int hf_dvb_s2_table_sfld_multiplex_usage;
411 static int hf_dvb_s2_table_sfld_local_multiplex_id;
412 static int hf_dvb_s2_table_sfld_frequency;
413 static int hf_dvb_s2_table_sfld_orbital_position;
414 static int hf_dvb_s2_table_sfld_west_east_flag;
415 static int hf_dvb_s2_table_sfld_polarization;
416 static int hf_dvb_s2_table_sfld_transmission_standard;
417 static int hf_dvb_s2_table_sfld_scrambling_sequence_selector;
418 static int hf_dvb_s2_table_sfld_roll_off;
419 static int hf_dvb_s2_table_sfld_symbol_rate;
420 static int hf_dvb_s2_table_sfld_fec_inner;
421 static int hf_dvb_s2_table_sfld_input_stream_identifier;
422 static int hf_dvb_s2_table_sfld_reserved_for_forward_spreading;
423 static int hf_dvb_s2_table_sfld_scrambling_sequence_index;
424 static int hf_dvb_s2_table_sfld_private_data;
425 static int hf_dvb_s2_table_sfld_ncr_private_data;
426 static int hf_dvb_s2_table_sfld_ncr_base_private_data;
427 static int hf_dvb_s2_table_sfld_ncr_ext_private_data;
429 static int hf_dvb_s2_table_mac24;
430 static int hf_dvb_s2_table_mac24_prefix_size;
431 static int hf_dvb_s2_table_mac24_unicast;
432 static int hf_dvb_s2_table_mac24_mcast_mapping_method;
433 static int hf_dvb_s2_table_mac24_mcast_ip_version_ind_pres;
434 static int hf_dvb_s2_table_mac24_mcast_synthesis_field_size;
435 static int hf_dvb_s2_table_desc_default_svn_number;
436 static int hf_dvb_s2_table_desc_reserved;
437 /* Lower layer service descriptor */
438 static int hf_dvb_s2_table_desc_default_ctrl_random_interval;
439 static int hf_dvb_s2_table_desc_dynamic_rate_persistence;
440 static int hf_dvb_s2_table_desc_volume_backlog_persistence;
441 static int hf_dvb_s2_table_desc_lls_count;
442 static int hf_dvb_s2_table_desc_rc_count;
443 static int hf_dvb_s2_table_desc_ra_ac_count;
445 static int hf_dvb_s2_table_lls;
446 static int hf_dvb_s2_table_lls_index;
447 static int hf_dvb_s2_table_lls_random_access;
448 static int hf_dvb_s2_table_lls_dedicated_access;
449 static int hf_dvb_s2_table_lls_nominal_rc_index;
450 static int hf_dvb_s2_table_lls_nominal_da_ac_index;
451 static int hf_dvb_s2_table_lls_conditional_demand_rc_map;
452 static int hf_dvb_s2_table_lls_conditional_scheduler_da_ac_map;
453 static int hf_dvb_s2_table_lls_nominal_ra_ac_index;
454 static int hf_dvb_s2_table_lls_conditional_scheduler_ra_ac_map;
456 /* Mobility Control descriptor */
457 static int hf_dvb_s2_table_mc_command_value;
458 static int hf_dvb_s2_table_mc_command_parameter;
460 static int hf_dvb_s2_table_lsvd_group_count;
461 static int hf_dvb_s2_table_lsvd_oui;
462 static int hf_dvb_s2_table_lsvd_mcast_address;
463 static int hf_dvb_s2_table_lsvd_mcast_port;
464 static int hf_dvb_s2_table_lsvd_version_field_length;
465 static int hf_dvb_s2_table_lsvd_version_bytes;
467 static int hf_dvb_s2_table_rc;
468 static int hf_dvb_s2_table_rc_index;
469 static int hf_dvb_s2_table_rc_constant_assignment_provided;
470 static int hf_dvb_s2_table_rc_volume_allowed;
471 static int hf_dvb_s2_table_rc_rbdc_allowed;
472 static int hf_dvb_s2_table_rc_maximum_service_rate;
473 static int hf_dvb_s2_table_rc_minimum_service_rate;
474 static int hf_dvb_s2_table_rc_constant_service_rate;
475 static int hf_dvb_s2_table_rc_maximum_backlog;
477 static int hf_dvb_s2_table_ra_ac;
478 static int hf_dvb_s2_table_ra_ac_index;
479 static int hf_dvb_s2_table_ra_ac_max_unique_payload_per_block;
480 static int hf_dvb_s2_table_ra_ac_max_consecutive_block_accessed;
481 static int hf_dvb_s2_table_ra_ac_min_idle_block;
482 static int hf_dvb_s2_table_ra_ac_defaults_field_size;
483 static int hf_dvb_s2_table_ra_ac_defaults_for_ra_load_control;
485 static int hf_dvb_s2_table_crc32;
487 /* Initialize the subtree pointers */
488 static int ett_dvb_s2_hdr_table_network_routing;
489 static int ett_dvb_s2_hdr_table;
490 static int ett_dvb_s2_hdr_table_sf;
491 static int ett_dvb_s2_hdr_table_sf_frame;
492 static int ett_dvb_s2_hdr_table_desc;
493 static int ett_dvb_s2_hdr_table_frame;
494 static int ett_dvb_s2_hdr_table_frame_assign;
495 static int ett_dvb_s2_hdr_table_entry;
496 static int ett_dvb_s2_hdr_table_mac24;
497 static int ett_dvb_s2_hdr_table_frametype;
498 static int ett_dvb_s2_hdr_table_frame_ID;
499 static int ett_dvb_s2_hdr_table_frame_ID_timeslot;
500 static int ett_dvb_s2_hdr_table_frametype_section;
501 static int ett_dvb_s2_hdr_table_lls;
502 static int ett_dvb_s2_hdr_table_rc;
503 static int ett_dvb_s2_hdr_table_raac;
504 static int ett_dvb_s2_hdr_table_txmode;
505 static int ett_dvb_s2_hdr_table_txtype;
506 static int ett_dvb_s2_hdr_table_txtype_ypattern;
507 static int ett_dvb_s2_hdr_table_txtype_wpattern;
508 static int ett_dvb_s2_hdr_table_txtype_uwsymbol;
509 static int ett_dvb_s2_hdr_table_txtype_uwsegment;
510 static int ett_dvb_s2_hdr_table_satellite;
511 static int ett_dvb_s2_hdr_table_multiplex;
512 static int ett_dvb_s2_hdr_table_pt;
513 static int ett_dvb_s2_hdr_table_pt_ms;
514 static int ett_dvb_s2_hdr_table_pt_ms_exclusion;
515 static int ett_dvb_s2_hdr_tbtp_frame;
516 static int ett_dvb_s2_hdr_tbtp_frame_btp;
518 static const value_string table_modcods[] = {
519 { 0, "DUMMY PLFRAME"},
520 { 1, "QPSK 1/4"},
521 { 2, "QPSK 1/3"},
522 { 3, "QPSK 2/5"},
523 { 4, "QPSK 1/2"},
524 { 5, "QPSK 3/5"},
525 { 6, "QPSK 2/3"},
526 { 7, "QPSK 3/4"},
527 { 8, "QPSK 4/5"},
528 { 9, "QPSK 5/6"},
529 {10, "QPSK 8/9"},
530 {11, "QPSK 9/10"},
531 {12, "8PSK 3/5"},
532 {13, "8PSK 2/3"},
533 {14, "8PSK 3/4"},
534 {15, "8PSK 5/6"},
535 {16, "8PSK 8/9"},
536 {17, "8PSK 9/10"},
537 {18, "16APSK 2/3"},
538 {19, "16APSK 3/4"},
539 {20, "16APSK 4/5"},
540 {21, "16APSK 5/6"},
541 {22, "16APSK 8/9"},
542 {23, "16APSK 9/10"},
543 {24, "32APSK 3/4"},
544 {25, "32APSK 4/5"},
545 {26, "32APSK 5/6"},
546 {27, "32APSK 8/9"},
547 {28, "32APSK 9/10"},
548 {29, "reserved"},
549 {30, "reserved"},
550 {31, "reserved"},
551 { 0, NULL}
554 #define DVB_S2_TABLE_SECTION_MASK 0x80
555 #define DVB_S2_TABLE_PRIVATE_MASK 0x40
556 #define DVB_S2_TABLE_RESERVED_MASK 0x30
557 #define DVB_S2_TABLE_MSB_LEN_MASK 0x0F
558 #define DVB_S2_TABLE_RESERVED2_MASK 0xC0
559 #define DVB_S2_TABLE_VERSION_NUMBER_MASK 0x3E
560 #define DVB_S2_TABLE_CURRENT_NEXT_INDICATOR_MASK 0x01
562 #define DVB_S2_TABLE_SECTION_SYNTAX_INDIC_MASK 0x80
563 #define DVB_S2_TABLE_PRIVATE_INDICATOR_MASK 0x40
564 #define DVB_S2_TABLE_RESERVED_ONE_MASK 0x30
565 #define DVB_S2_TABLE_SECTION_LENGTH_MASK 0x0FFF
566 #define DVB_S2_TABLE_RESERVED_TWO_MASK 0xC0
567 #define DVB_S2_TABLE_PAYLOAD_SCRAMBLING_MASK 0x30
568 #define DVB_S2_TABLE_ADDRESS_SCRAMBLING_MASK 0x0C
569 #define DVB_S2_TABLE_LLC_SNAP_MASK 0x02
571 #define DVB_S2_TABLE_SMT_SECTION_INDICATOR_MASK 0x8000
572 #define DVB_S2_TABLE_SMT_FUTUR_USE_MASK 0x4000
573 #define DVB_S2_TABLE_SMT_RESERVED_MASK 0x3000
574 #define DVB_S2_TABLE_SMT_SECTION_LENGTH_MASK 0x0FFF
576 #define DVB_S2_TABLE_SCT_LARGE_TIMING_FLAG_MASK 0x80
577 #define DVB_S2_TABLE_SCT_UPLINK_POLARIZATION_MASK 0x03
578 #define DVB_S2_TABLE_SCT_START_TIME_BASE_MASK 0x8000
579 #define DVB_S2_TABLE_SCT_START_TIME_EXT_MASK 0x01FF
580 #define DVB_S2_TABLE_SCT_FRAME_LOOP_COUNT_MASK 0x1F
581 #define DVB_S2_TABLE_TBTP_BTP_LOOP_COUNT_MASK 0x07FF
582 #define DVB_S2_TABLE_TBTP_FRAME_NUMBER_MASK 0x1F
583 #define DVB_S2_TABLE_TBTP_MULTIPLE_CHANNEL_FLAG_MASK 0x80
584 #define DVB_S2_TABLE_TBTP_ASSIGNMENT_TYPE_MASK 0x60
585 #define DVB_S2_TABLE_TBTP_VBDC_FLAG_MASK 0x10
586 #define DVB_S2_TABLE_TBTP_START_SLOT_MASK 0x07FF
588 #define DVB_S2_TABLE_FRAME_TYPE_SECTION_FAM_MASK 0xC
589 #define DVB_S2_TABLE_FRAME_ID_TOT_TIME_COUNT_MASK 0x07FF
590 #define DVB_S2_TABLE_NETWORK_DESC_LENGTH_MASK 0x0FFF
591 #define DVB_S2_TABLE_MULTIPLEX_STREAMS_LENGTH_MASK 0x0FFF
592 #define DVB_S2_TABLE_MULTIPLEX_TRANSPORT_DESC_LENGTH_MASK 0x0FFF
593 #define DVB_S2_TABLE_SVN_PREFIX_SIZE_MASK 0x1F
594 #define DVB_S2_TABLE_PT_MS_MCAST_PREFIX_SIZE_MASK 0x1F
595 #define DVB_S2_TABLE_TX_TYPE_TX_START_OFFSET_MASK 0x0FFFFF
596 #define DVB_S2_TABLE_TX_TYPE_QX_MASK 0x0F
597 #define DVB_S2_TABLE_TX_TYPE_W_Y_PERIOD_MASK 0x1F
598 #define DVB_S2_TABLE_TX_TYPE_PILOT_PERIOD_MASK 0x0FFF
599 #define DVB_S2_TABLE_TX_TYPE_W_Y_PATTERN_BIT_MASK 0x80
600 #define DVB_S2_TABLE_TX_TYPE_MODULATION_MH_MASK 0xE0
601 #define DVB_S2_TABLE_TX_TYPE_MODULATION_PH_MASK 0x1C
602 #define DVB_S2_TABLE_TX_TYPE_MODULATION_TYPE_MASK 0x01
603 #define DVB_S2_TABLE_TX_TYPE_CODE_RATE_MASK 0x1C
604 #define DVB_S2_TABLE_TX_TYPE_CONSTRAINT_LENGTH_K_MASK 0x01
605 #define DVB_S2_TABLE_TX_TYPE_PARAM_INTERLEAVER_MASK 0x01
606 #define DVB_S2_TABLE_TX_TYPE_N_MASK 0xFFF0
607 #define DVB_S2_TABLE_TX_TYPE_S_MASK 0x0FC0
608 #define DVB_S2_TABLE_TX_TYPE_P_MASK 0x3FF0
609 #define DVB_S2_TABLE_TX_TYPE_N1_12_MASK 0x0FF8
610 #define DVB_S2_TABLE_TX_TYPE_K1_12_MASK 0x07FC
611 #define DVB_S2_TABLE_TX_TYPE_K2_12_MASK 0x03FE
612 #define DVB_S2_TABLE_TX_TYPE_K3_12_MASK 0x01FF
613 #define DVB_S2_TABLE_TX_TYPE_UW_SYMBOL_QPSK_MASK 0xC0
614 #define DVB_S2_TABLE_TX_TYPE_UW_SYMBOL_8PSK_MASK 0xE0
615 #define DVB_S2_TABLE_TX_TYPE_UW_SYMBOL_16QAM_MASK 0xF0
617 #define DVB_S2_TABLE_DESC_TIME_CORRECT_FLAG_MASK 0x80
618 #define DVB_S2_TABLE_DESC_POWER_CORRECT_FLAG_MASK 0x40
619 #define DVB_S2_TABLE_DESC_FREQ_CORRECT_FLAG_MASK 0x20
620 #define DVB_S2_TABLE_DESC_SLOT_TYPE_MASK 0x18
621 #define DVB_S2_TABLE_DESC_BURST_TIME_SCALING_MASK 0x7
622 #define DVB_S2_TABLE_DESC_POWER_CTRL_FLAG_MASK 0x80
623 #define DVB_S2_TABLE_DESC_POWER_CORRECTION_MASK 0x7F
624 #define DVB_S2_TABLE_DESC_KEEP_ID_AFTER_LOGOFF_MASK 0x40
625 #define DVB_S2_TABLE_DESC_POWER_CTRLMODE_MASK 0x30
626 #define DVB_S2_TABLE_DESC_RCST_ACCESS_STATUS_MASK 0x0F
627 #define DVB_S2_TABLE_DESC_ASSIGN_ID_COUNT_MASK 0xF0
628 #define DVB_S2_TABLE_DESC_UNICAST_MAC24_COUNT_MASK 0x0F
629 #define DVB_S2_TABLE_DESC_LLS_COUNT_MASK 0x0F
630 #define DVB_S2_TABLE_DESC_RC_COUNT_MASK 0x0F
631 #define DVB_S2_TABLE_DESC_RA_AC_COUNT_MASK 0x0F
632 #define DVB_S2_TABLE_DESC_CTRL_TIMESLOT_NBR_MASK 0x07FF
633 #define DVB_S2_TABLE_DESC_SYNC_FRAME_NBR_MASK 0x07FF
634 #define DVB_S2_TABLE_DESC_PID_LOOP_COUNT 0x0F
636 #define DVB_S2_TABLE_DESC_HAND_OVER_TYPE_MASK 0xF0
637 #define DVB_S2_TABLE_DESC_ORIGIN_TYPE_MASK 0x01
638 #define DVB_S2_TABLE_DESC_RESERVED_FOR_FUTURE_USE_MASK 0x0E
639 #define DVB_S2_TABLE_DESC_CAPCITY_TYPE_FLAG_MASK 0x40
640 #define DVB_S2_TABLE_DESC_TRAFFIC_BURST_TYPE_MASK 0x20
641 #define DVB_S2_TABLE_DESC_CONNECTIVITY_MASK 0x10
642 #define DVB_S2_TABLE_DESC_TRANSMISSION_STANDARD_MASK 0x18
643 #define DVB_S2_TABLE_DESC_SCRAMBLING_SEQUENCE_SELECTOR_MASK 0x04
645 #define DVB_S2_TABLE_DESC_NETWORK_ROUTING_LABEL 0x0F
646 #define DVB_S2_TABLE_DESC_PID_FLAG_MASK 0x01
647 #define DVB_S2_TABLE_DESC_VPI_VCI_FLAG_MASK 0x01
648 #define DVB_S2_TABLE_DESC_ROUTE_ID_FLAG_MASK 0x01
650 #define DVB_S2_TABLE_RA_AC_INDEX_MASK 0x0F
651 #define DVB_S2_TABLE_RC_RBDC_ALLOWED_MASK 0x01
652 #define DVB_S2_TABLE_RC_VOLUME_ALLOWED_MASK 0x02
653 #define DVB_S2_TABLE_RC_CONSTANT_ASSIGN_MASK 0x04
654 #define DVB_S2_TABLE_RC_INDEX_MASK 0xF0
655 #define DVB_S2_TABLE_LLS_NOMINAL_RA_AC_INDEX_MASK 0x0F
656 #define DVB_S2_TABLE_LLS_NOMINAL_DA_AC_INDEX_MASK 0x0F
657 #define DVB_S2_TABLE_LLS_NOMINAL_RC_INDEX_MASK 0xF0
658 #define DVB_S2_TABLE_LLS_DEDICATED_ACCESS_MASK 0x01
659 #define DVB_S2_TABLE_LLS_RANDOM_ACCESS_MASK 0x02
660 #define DVB_S2_TABLE_LLS_INDEX_MASK 0x3C
662 #define DVB_S2_TABLE_MAC24_PREFIX_SIZE_MASK 0x1F
663 #define DVB_S2_TABLE_MAC24_MAPPING_METHOD_MASK 0x40
664 #define DVB_S2_TABLE_MAC24_MCAST_IP_VERSION_IND_PRES_MASK 0x20
665 #define DVB_S2_TABLE_MAC24_MCAST_SYNTHESIS_FIELD_SIZE_MASK 0x1F
667 #define DVB_S2_TABLE_TX_MODE_FRAME_LENGTH_MASK 0xC0
668 #define DVB_S2_TABLE_TX_MODE_PILOT_SYMBOLS_MASK 0x20
669 #define DVB_S2_TABLE_TX_MODE_MODCOD_MASK 0x1F
671 #define DVB_S2_TABLE_ENTRY_SIZE 8
672 #define DVB_S2_TABLE_TX_MODE_SIZE 3
673 #define DVB_S2_TABLE_SAT_SIZE 13
674 #define DVB_S2_TABLE_TX_TYPE_UW_SEGMENT_SIZE 3
676 #define DVB_S2_TABLE_PAT 0x00
677 #define DVB_S2_TABLE_CAT 0x01
678 #define DVB_S2_TABLE_PMT 0x02
679 #define DVB_S2_TABLE_NIT 0x40
680 #define DVB_S2_TABLE_RMT 0x41
681 #define DVB_S2_TABLE_SDT 0x42
682 #define DVB_S2_TABLE_TDT 0x70
683 #define DVB_S2_TABLE_SCT 0xA0
684 #define DVB_S2_TABLE_FCT 0xA1
685 #define DVB_S2_TABLE_TCT 0xA2
686 #define DVB_S2_TABLE_SPT 0xA3
687 #define DVB_S2_TABLE_CMT 0xA4
688 #define DVB_S2_TABLE_TBTP 0xA5
689 #define DVB_S2_TABLE_PCR 0xA6
690 #define DVB_S2_TABLE_TMST 0xAA
691 #define DVB_S2_TABLE_TCTE 0xAB
692 #define DVB_S2_TABLE_FCT2 0xAB
693 #define DVB_S2_TABLE_BCT 0xAC
694 #define DVB_S2_TABLE_TBTP2 0xAD
695 #define DVB_S2_TABLE_TMST2 0xAE
696 #define DVB_S2_TABLE_FAT 0xAF
697 #define DVB_S2_TABLE_TIM 0xB0
698 #define DVB_S2_TABLE_MMT2 0xB2
699 #define DVB_S2_TABLE_MMT 0xC0
700 #define DVB_S2_TABLE_SMT 0x80
701 #define DVB_S2_TABLE_TIMB 0xFE
703 #define DVB_S2_NCR_SIZE 6
705 static const value_string tabletype[] = {
706 {DVB_S2_TABLE_PAT, "PAT"}, /**< Program Association Table */
707 {DVB_S2_TABLE_CAT, "CAT"}, /**< Conditional Access Table */
708 {DVB_S2_TABLE_PMT, "PMT"}, /**< Program Map Table */
709 {DVB_S2_TABLE_NIT, "NIT"}, /**< Network Information Table */
710 {DVB_S2_TABLE_RMT, "RMT"}, /**< RCS Mapping Table */
711 {DVB_S2_TABLE_SDT, "SDT"}, /**< Service Description Table */
712 {DVB_S2_TABLE_TDT, "TDT"}, /**< Time and Date Table */
713 {DVB_S2_TABLE_SCT, "SCT"}, /**< Superframe Composition Table */
714 {DVB_S2_TABLE_FCT, "FCT"}, /**< Frame Composition Table */
715 {DVB_S2_TABLE_TCT, "TCT"}, /**< Timeslot Composition Table*/
716 {DVB_S2_TABLE_SPT, "SPT"}, /**< Satellite Position Table */
717 {DVB_S2_TABLE_CMT, "CMT"}, /**< Correction Message Table */
718 {DVB_S2_TABLE_TBTP, "TBTP"}, /**< Terminal Burst Time Plan Table */
719 {DVB_S2_TABLE_PCR, "PCR"}, /**< PCR Packet Payload */
720 {DVB_S2_TABLE_TMST, "TMST"}, /**< Transmission Mode Support Table */
721 {DVB_S2_TABLE_TCTE, "TCTE(RCS)-FCT2(RCS2)"}, /**< Timeslot Composition Table extended */
722 // {DVB_S2_TABLE_FCT2, "FCT2"}, /**< Frame Composition Table RCS2 */
723 {DVB_S2_TABLE_BCT, "BCT"}, /**< Broadcast Configuration Table RCS2 */
724 {DVB_S2_TABLE_TBTP2, "TBTP2"}, /**< Terminal Burst Time Plan Table RCS2 */
725 {DVB_S2_TABLE_TMST2, "TMST2"}, /**< Transmission Mode Support Table RCS2 */
726 {DVB_S2_TABLE_FAT, "FAT"}, /**< Fast Access Table RCS2 */
727 {DVB_S2_TABLE_TIM, "TIM"}, /**< Terminal Information Message Table */
728 {DVB_S2_TABLE_MMT, "MMT"}, /**< Multicast Mapping Table */
729 {DVB_S2_TABLE_MMT2, "MMT2"}, /**< Multicast Mapping Table RCS2*/
730 {DVB_S2_TABLE_SMT, "SMT"}, /**< Signal Measurement Table */
731 {DVB_S2_TABLE_TIMB, "TIMB"}, /**< Broadcast TIM, for internal use only */
732 {0, NULL}
735 #define DVB_S2_TABLE_DESC_CTRL_ASSIGN 0xA4
736 #define DVB_S2_TABLE_DESC_CORRECTION_MSG 0xA1
737 #define DVB_S2_TABLE_DESC_CORRECTION_MSG_EXT 0xB1
738 #define DVB_S2_TABLE_DESC_LOGON_RESPONSE 0xB9
739 #define DVB_S2_TABLE_DESC_LOWER_LAYER_SERVICE 0xBB
741 #define DVB_S2_TABLE_DESC_NETWORK_NAME 0x40
742 #define DVB_S2_TABLE_DESC_LINKAGE 0x4A
743 #define DVB_S2_TABLE_DESC_SATELLITE_RETURN_LINK 0xA9
744 #define DVB_S2_TABLE_DESC_LOGON_INITIALIZE 0xA2
745 #define DVB_S2_TABLE_DESC_FORWARD_INTERACTION_PATH 0xAD
746 #define DVB_S2_TABLE_DESC_RETURN_INTERACTION_PATH 0xAE
747 #define DVB_S2_TABLE_DESC_NETWORK_LAYER_INFO 0xA0
748 #define DVB_S2_TABLE_DESC_CORRECTION_CONTROL 0xAC
749 #define DVB_S2_TABLE_DESC_CONTENTION_CONTROL 0xAB
750 #define DVB_S2_TABLE_DESC_SATELLITE_FORWARD_LINK 0xA8
751 #define DVB_S2_TABLE_DESC_MOBILITY_CONTROL 0xB0
752 #define DVB_S2_TABLE_DESC_LOWEST_SOFTWARE_VERSION 0xC5
754 static const value_string table_desc_type[] = {
755 {DVB_S2_TABLE_DESC_LINKAGE, "Linkage_descriptor"},
756 {DVB_S2_TABLE_DESC_LOGON_INITIALIZE, "Logon Initialize Descriptor"},
757 {DVB_S2_TABLE_DESC_NETWORK_LAYER_INFO, "Network_layer_info_descriptor"},
758 {DVB_S2_TABLE_DESC_CORRECTION_MSG, "Correction_message_descriptor"},
759 {DVB_S2_TABLE_DESC_CTRL_ASSIGN, "SYNC_assign_descriptor (RCS) - control_assign_descriptor (RCS2)"},
760 {0xA6, "Echo_value_descriptor"},
761 {0xA7, "RCS_content_descriptor"},
762 {DVB_S2_TABLE_DESC_SATELLITE_FORWARD_LINK, "Satellite_forward_link_descriptor"},
763 {DVB_S2_TABLE_DESC_SATELLITE_RETURN_LINK, "Satellite_return_link_descriptor"},
764 {DVB_S2_TABLE_DESC_CONTENTION_CONTROL, "Contention_Control_descriptor (RCS) - logon_contention_descriptor (RCS2)"},
765 {DVB_S2_TABLE_DESC_CORRECTION_CONTROL, "Correction_Control_descriptor"},
766 {DVB_S2_TABLE_DESC_FORWARD_INTERACTION_PATH, "Forward Interaction Path Descriptor"},
767 {DVB_S2_TABLE_DESC_RETURN_INTERACTION_PATH, "Return Interaction Path Descriptor"},
768 {0xB0, "Mobility_control_descriptor"},
769 {DVB_S2_TABLE_DESC_CORRECTION_MSG_EXT, "Correction_message_extension_descriptor"},
770 {0xB2, "Return_Transmission_Modes_descriptor"},
771 {0xB5, "Implementation_type_descriptor"},
772 {0xB6, "LL_FEC_identifier_descriptor"},
773 {0xB7, "Frame_payload_format_descriptor"},
774 {0xB8, "Pointing_alignment_support_descriptor"},
775 {DVB_S2_TABLE_DESC_LOGON_RESPONSE, "Logon_response_descriptor"},
776 {0xBA, "DHCP_option_descriptor"},
777 {DVB_S2_TABLE_DESC_LOWER_LAYER_SERVICE, "lower_layer_service_descriptor"},
778 {0xBC, "TRANSEC_message_descriptor"},
779 {0xBD, "Forward_link_streams_descriptor"},
780 {0xBE, "Logon_Security_descriptor"},
781 {0xBF, "Transmission_offset_descriptor"},
782 {0xC0, "Random_assess_load_control_descriptor"},
783 {0xC1, "CLI_instruction_descriptor"},
784 {0xC2, "random_access_traffic_method_descriptor"},
785 {0xC4, "higher_layers_initialize_descriptor"},
786 {0xC5, "lowest_sw_version_descriptor"},
787 {0xC6, "Mesh_system_descriptor"},
788 {0xC7, "Extension_protocol_descriptor"},
789 {0xC8, "Continuous_carrier_control_descriptor"},
790 {DVB_S2_TABLE_DESC_NETWORK_NAME, "Network Name Descriptor"},
791 {0, NULL}
794 static const value_string table_uplinkPolarization[] = {
795 {0, "linear - horizontal"},
796 {1, "linear - vertical"},
797 {2, "circular - left"},
798 {3, "circular - right"},
799 {0, NULL}
802 #define DVB_S2_TABLE_TXFORMAT_LMBT 0x1
803 #define DVB_S2_TABLE_TXFORMAT_CPMBT 0x2
804 #define DVB_S2_TABLE_TXFORMAT_CT 0x3
805 #define DVB_S2_TABLE_TXFORMAT_SSLMBT 0x4
806 static const value_string table_frameType_txFormatClass[] = {
807 {0, "Reserved"},
808 {DVB_S2_TABLE_TXFORMAT_LMBT, "Linear Modulation Burst Transmission"},
809 {DVB_S2_TABLE_TXFORMAT_CPMBT, "Continuous Phase Modulation Burst Transmission"},
810 {DVB_S2_TABLE_TXFORMAT_CT, "Continuous Transmission"},
811 {DVB_S2_TABLE_TXFORMAT_SSLMBT, "Spread-Spectrum Linear Modulation Burst Transmission"},
812 {0, NULL}
815 static const value_string table_assignContext[] = {
816 {0, "All traffic context"},
817 {1, "Transparent star traffic"},
818 {2, "Logon"},
819 {3, "Transparent mesh traffic"},
820 {4, "Continuous carrier"},
821 {0, NULL}
825 static const value_string table_timeslotContent[] = {
826 {0, "Traffic"},
827 {1, "Logon"},
828 {2, "Reserved"},
829 {3, "Control"},
830 {0, NULL}
833 static const value_string table_txType_contentType[] = {
834 {0, "Reserved"},
835 {1, "Logon payload"},
836 {2, "Control payload"},
837 {3, "Traffic and control payload"},
838 {4, "Traffic payload"},
839 {0, NULL}
842 #define DVB_S2_TABLE_MODULATION_SCHEME_BPSK 0x0
843 #define DVB_S2_TABLE_MODULATION_SCHEME_QPSK 0x1
844 #define DVB_S2_TABLE_MODULATION_SCHEME_8PSK 0x2
845 #define DVB_S2_TABLE_MODULATION_SCHEME_16QAM 0x3
846 #define DVB_S2_TABLE_MODULATION_SCHEME_PI2BPSK 0x5
847 static const value_string table_txType_modulationScheme[] = {
848 {DVB_S2_TABLE_MODULATION_SCHEME_BPSK, "Reserved (BPSK)"},
849 {DVB_S2_TABLE_MODULATION_SCHEME_QPSK, "QPSK"},
850 {DVB_S2_TABLE_MODULATION_SCHEME_8PSK, "8PSK"},
851 {DVB_S2_TABLE_MODULATION_SCHEME_16QAM, "16QAM"},
852 {4, "Reserved"},
853 {DVB_S2_TABLE_MODULATION_SCHEME_PI2BPSK, "pi/2-BPSK"},
854 {0, NULL}
857 static const value_string table_txType_modulationType[] = {
858 {0, "Quaternary - Linear mapping"},
859 {1, "Quaternary - Gray mapping"},
860 {0, NULL}
863 static const value_string table_txType_codeRate[] = {
864 {0, "1/2"},
865 {1, "2/3"},
866 {2, "4/5"},
867 {3, "6/7"},
868 {0, NULL}
871 static const value_string table_txType_constraintLengthK[] = {
872 {0, "3"},
873 {1, "4"},
874 {0, NULL}
877 static const value_string table_mobility_command_value[] = {
878 {0x0000, "No Command"},
879 {0x0001, "Execute Forward And Return Link Handover"},
880 {0x0002, "Execute Forward Link Handover"},
881 {0x0003, "Execute Return Link Handover"},
882 {0x0005, "Send Transmitter Status Report"},
883 {0x0006, "Send Position Report"},
884 {0x0007, "Maximum NCR Time"},
885 {0, NULL}
888 #define DVB_S2_TABLE_HEADER_LEN 8
889 #define DVB_S2_TABLE_HEADER_RCS2_LEN 4
890 #define DVB_S2_TABLE_CRC32_LEN 4
891 #define DVB_S2_TABLE_SCT_FRAME_LEN 8
893 /* *** Code to actually dissect the packets *** */
894 static int dissect_dvb_s2_table_correct_msg(tvbuff_t *tvb, int cur_off, proto_tree *dvb_s2_hdr_table_tree)
896 int new_off = 0;
897 uint8_t time_correction_flag, frequency_correction_flag, power_correction_flag, power_control_flag;
899 time_correction_flag = tvb_get_uint8(tvb, cur_off + new_off) & DVB_S2_TABLE_DESC_TIME_CORRECT_FLAG_MASK;
900 frequency_correction_flag = tvb_get_uint8(tvb, cur_off + new_off) & DVB_S2_TABLE_DESC_FREQ_CORRECT_FLAG_MASK;
901 power_correction_flag = tvb_get_uint8(tvb, cur_off + new_off) & DVB_S2_TABLE_DESC_POWER_CORRECT_FLAG_MASK;
902 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_table_desc_time_correct_flag, tvb, cur_off + new_off, 1, ENC_NA);
903 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_table_desc_power_correct_flag, tvb, cur_off + new_off, 1, ENC_NA);
904 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_table_desc_freq_correct_flag, tvb, cur_off + new_off, 1, ENC_NA);
905 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_table_desc_slot_type, tvb, cur_off + new_off, 1, ENC_NA);
906 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_table_desc_burst_time_scaling, tvb, cur_off + new_off, 1, ENC_NA);
907 new_off += 1;
908 if(time_correction_flag)
910 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_table_desc_burst_time_correct, tvb, cur_off + new_off, 1, ENC_NA);
911 new_off += 1;
913 if(power_correction_flag)
915 power_control_flag = tvb_get_uint8(tvb, cur_off + new_off) & DVB_S2_TABLE_DESC_POWER_CTRL_FLAG_MASK;
916 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_table_desc_power_ctrl_flag, tvb, cur_off + new_off, 1, ENC_NA);
917 if(power_control_flag)
918 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_table_desc_power_correction, tvb, cur_off + new_off, 1, ENC_NA);
919 else
920 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_table_desc_power_esn0, tvb, cur_off + new_off, 1, ENC_NA);
921 new_off += 1;
923 if(frequency_correction_flag)
925 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_table_desc_freq_correction, tvb, cur_off + new_off, 2, ENC_NA);
926 new_off += 2;
929 return new_off;
933 static int dissect_dvb_s2_table_desc(tvbuff_t *tvb, int cur_off, proto_tree *dvb_s2_hdr_table_tree, int desc_loop_count, int table_id, packet_info *pinfo)
936 int cur_desc, lls_size, rc_size, raac_size, new_off = 0;
937 int start_off = 0;
938 int linkage_type = 0;
939 uint32_t hand_over_type = 0;
940 uint32_t origin_type = 0;
941 int remaning_data = 0;
942 int capacity_type_flag = 0;
943 int traffic_burst_type = 0;
944 int connectivity = 0;
945 int pid_loop_count = 0;
946 int k = 0;
947 int network_routing_label_loop_count = 0;
948 int pid_flag = 0;
949 int j = 0;
950 int vpi_vci_flag = 0;
951 int vpi_vci_loop_count = 0;
952 int i = 0;
953 int l = 0;
954 int route_id_flag = 0;
955 int route_id_loop_count = 0;
956 int population_id_loop_count = 0;
957 int transmission_standard = 0;
958 int scrambling_sequence_selector = 0;
959 int group_count = 0;
960 int version_length = 0;
962 uint8_t desc_tag, desc_length;
963 proto_tree *dvb_s2_hdr_table_desc_tree, *dvb_s2_hdr_table_mac24_tree, *dvb_s2_hdr_table_lls_tree,
964 *dvb_s2_hdr_table_rc_tree, *dvb_s2_hdr_table_raac_tree, *dvb_s2_hdr_table_network_routing_tree;
965 proto_item *ti;
967 uint8_t mac24_count, cur_mac24, lls_count, cur_lls, rc_count, cur_rc, raac_count, cur_raac;
968 uint8_t dedicated_access, random_access, constant_assign_provided, volume_allowed, defaults_field_size;
970 for(cur_desc=0 ; cur_desc<=desc_loop_count ; cur_desc++)
972 desc_length = tvb_get_uint8(tvb, cur_off + new_off + 1);
973 ti = proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_table_descriptor, tvb, cur_off + new_off, desc_length + 2, ENC_NA);
974 dvb_s2_hdr_table_desc_tree = proto_item_add_subtree(ti, ett_dvb_s2_hdr_table_desc);
975 desc_tag = tvb_get_uint8(tvb, cur_off + new_off);
976 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_desc_tag, tvb, cur_off + new_off, 1, ENC_NA);
977 new_off += 1;
978 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_desc_length, tvb, cur_off + new_off, 1, ENC_NA);
979 new_off += 1;
980 switch(desc_tag){
981 case(DVB_S2_TABLE_DESC_CTRL_ASSIGN):
982 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_desc_sync_achieved_time_threshold, tvb, cur_off + new_off, 1, ENC_NA);
983 new_off += 1;
984 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_desc_max_sync_tries, tvb, cur_off + new_off, 1, ENC_NA);
985 new_off += 1;
986 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_desc_sync_achieved_freq_threshold, tvb, cur_off + new_off, 2, ENC_NA);
987 new_off += 2;
988 if (dvb_s2_rcs_version == DVB_S2_RCS_TABLE_DECODING)
990 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_desc_sync_start_superframe, tvb, cur_off + new_off, 2, ENC_NA);
991 new_off += 2;
992 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_desc_sync_frame_nbr, tvb, cur_off + new_off, 1, ENC_NA);
993 new_off += 1;
994 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_desc_sync_repeat_period, tvb, cur_off + new_off, 2, ENC_NA);
995 new_off += 2;
996 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_desc_sync_slot_nbr, tvb, cur_off + new_off, 2, ENC_NA);
997 new_off += 2;
999 if (dvb_s2_rcs_version == DVB_S2_RCS2_TABLE_DECODING)
1001 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_desc_ctrl_start_superframe_count, tvb, cur_off + new_off, 2, ENC_NA);
1002 new_off += 2;
1003 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_desc_ctrl_frame_nbr, tvb, cur_off + new_off, 1, ENC_NA);
1004 new_off += 1;
1005 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_desc_ctrl_repeat_period, tvb, cur_off + new_off, 2, ENC_NA);
1006 new_off += 2;
1007 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_desc_ctrl_timeslot_nbr, tvb, cur_off + new_off, 2, ENC_NA);
1008 new_off += 2;
1010 break;
1011 case(DVB_S2_TABLE_DESC_CORRECTION_MSG):
1012 new_off += dissect_dvb_s2_table_correct_msg(tvb, cur_off + new_off, dvb_s2_hdr_table_desc_tree);
1013 break;
1014 case(DVB_S2_TABLE_DESC_CORRECTION_MSG_EXT):
1015 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_desc_sf_sequence, tvb, cur_off + new_off, 1, ENC_NA);
1016 new_off += 1;
1017 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_sf_count, tvb, cur_off + new_off, 2, ENC_NA);
1018 new_off += 2;
1019 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_desc_frame_number, tvb, cur_off + new_off, 1, ENC_NA);
1020 new_off += 1;
1021 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_desc_slot_nbr, tvb, cur_off + new_off, 2, ENC_NA);
1022 new_off += 2;
1023 break;
1024 case(DVB_S2_TABLE_DESC_LOGON_RESPONSE):
1025 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_desc_keep_id_after_logoff, tvb, cur_off + new_off, 1, ENC_NA);
1026 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_desc_power_ctrl_mode, tvb, cur_off + new_off, 1, ENC_NA);
1027 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_desc_rcst_access_status, tvb, cur_off + new_off, 1, ENC_NA);
1028 new_off += 1;
1029 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_group_id, tvb, cur_off + new_off, 1, ENC_NA);
1030 new_off += 1;
1031 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_desc_logon_id, tvb, cur_off + new_off, 2, ENC_NA);
1032 new_off += 2;
1033 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_desc_lowest_assign_id, tvb, cur_off + new_off, 3, ENC_NA);
1034 new_off += 3;
1035 mac24_count = tvb_get_uint8(tvb, cur_off + new_off) & DVB_S2_TABLE_DESC_UNICAST_MAC24_COUNT_MASK;
1036 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_desc_assign_id_count, tvb, cur_off + new_off, 1, ENC_NA);
1037 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_desc_unicast_mac24_count, tvb, cur_off + new_off, 1, ENC_NA);
1038 new_off += 1;
1039 for(cur_mac24=0 ; cur_mac24<mac24_count ; cur_mac24++)
1041 ti = proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_mac24, tvb, cur_off + new_off, 5, ENC_NA);
1042 dvb_s2_hdr_table_mac24_tree = proto_item_add_subtree(ti, ett_dvb_s2_hdr_table_desc);
1043 proto_tree_add_item(dvb_s2_hdr_table_mac24_tree, hf_dvb_s2_table_mac24_prefix_size, tvb, cur_off + new_off, 1, ENC_NA);
1044 new_off += 1;
1045 proto_tree_add_item(dvb_s2_hdr_table_mac24_tree, hf_dvb_s2_table_mac24_unicast, tvb, cur_off + new_off, 3, ENC_NA);
1046 new_off += 3;
1047 proto_tree_add_item(dvb_s2_hdr_table_mac24_tree, hf_dvb_s2_table_mac24_mcast_mapping_method, tvb, cur_off + new_off, 1, ENC_NA);
1048 proto_tree_add_item(dvb_s2_hdr_table_mac24_tree, hf_dvb_s2_table_mac24_mcast_ip_version_ind_pres, tvb, cur_off + new_off, 1, ENC_NA);
1049 proto_tree_add_item(dvb_s2_hdr_table_mac24_tree, hf_dvb_s2_table_mac24_mcast_synthesis_field_size, tvb, cur_off + new_off, 1, ENC_NA);
1050 new_off += 1;
1052 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_desc_default_svn_number, tvb, cur_off + new_off, 2, ENC_NA);
1053 new_off += 2;
1054 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_desc_reserved, tvb, cur_off + new_off, 1, ENC_NA);
1055 new_off += 1;
1056 break;
1057 case(DVB_S2_TABLE_DESC_LOWER_LAYER_SERVICE):
1058 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_desc_default_ctrl_random_interval, tvb, cur_off + new_off, 1, ENC_NA);
1059 new_off += 1;
1060 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_desc_dynamic_rate_persistence, tvb, cur_off + new_off, 1, ENC_NA);
1061 new_off += 1;
1062 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_desc_volume_backlog_persistence, tvb, cur_off + new_off, 1, ENC_NA);
1063 new_off += 1;
1064 lls_count = tvb_get_uint8(tvb, cur_off + new_off) & DVB_S2_TABLE_DESC_LLS_COUNT_MASK;
1065 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_desc_lls_count, tvb, cur_off + new_off, 1, ENC_NA);
1066 new_off += 1;
1067 for(cur_lls=0 ; cur_lls<lls_count ; cur_lls++)
1069 dedicated_access = tvb_get_uint8(tvb, cur_off + new_off) & DVB_S2_TABLE_LLS_DEDICATED_ACCESS_MASK;
1070 random_access = tvb_get_uint8(tvb, cur_off + new_off) & DVB_S2_TABLE_LLS_RANDOM_ACCESS_MASK;
1071 lls_size=1;
1072 if(dedicated_access) lls_size += 5;
1073 if(random_access) lls_size += 2;
1074 ti = proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_lls, tvb, cur_off + new_off, lls_size, ENC_NA);
1075 dvb_s2_hdr_table_lls_tree = proto_item_add_subtree(ti, ett_dvb_s2_hdr_table_desc);
1076 proto_tree_add_item(dvb_s2_hdr_table_lls_tree, hf_dvb_s2_table_lls_index, tvb, cur_off + new_off, 1, ENC_NA);
1077 proto_tree_add_item(dvb_s2_hdr_table_lls_tree, hf_dvb_s2_table_lls_random_access, tvb, cur_off + new_off, 1, ENC_NA);
1078 proto_tree_add_item(dvb_s2_hdr_table_lls_tree, hf_dvb_s2_table_lls_dedicated_access, tvb, cur_off + new_off, 1, ENC_NA);
1079 new_off += 1;
1080 if(dedicated_access)
1082 proto_tree_add_item(dvb_s2_hdr_table_lls_tree, hf_dvb_s2_table_lls_nominal_rc_index, tvb, cur_off + new_off, 1, ENC_NA);
1083 proto_tree_add_item(dvb_s2_hdr_table_lls_tree, hf_dvb_s2_table_lls_nominal_da_ac_index, tvb, cur_off + new_off, 1, ENC_NA);
1084 new_off += 1;
1085 proto_tree_add_item(dvb_s2_hdr_table_lls_tree, hf_dvb_s2_table_lls_conditional_demand_rc_map, tvb, cur_off + new_off, 2, ENC_NA);
1086 new_off += 2;
1087 proto_tree_add_item(dvb_s2_hdr_table_lls_tree, hf_dvb_s2_table_lls_conditional_scheduler_da_ac_map, tvb, cur_off + new_off, 2, ENC_NA);
1088 new_off += 2;
1090 if(random_access)
1092 proto_tree_add_item(dvb_s2_hdr_table_lls_tree, hf_dvb_s2_table_lls_nominal_ra_ac_index, tvb, cur_off + new_off, 1, ENC_NA);
1093 new_off += 1;
1094 proto_tree_add_item(dvb_s2_hdr_table_lls_tree, hf_dvb_s2_table_lls_conditional_scheduler_ra_ac_map, tvb, cur_off + new_off, 1, ENC_NA);
1095 new_off += 1;
1098 rc_count = tvb_get_uint8(tvb, cur_off + new_off) & DVB_S2_TABLE_DESC_RC_COUNT_MASK;
1099 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_desc_rc_count, tvb, cur_off + new_off, 1, ENC_NA);
1100 new_off += 1;
1101 for(cur_rc=0 ; cur_rc<rc_count ; cur_rc++)
1103 constant_assign_provided = tvb_get_uint8(tvb, cur_off + new_off) & DVB_S2_TABLE_RC_CONSTANT_ASSIGN_MASK;
1104 volume_allowed = tvb_get_uint8(tvb, cur_off + new_off) & DVB_S2_TABLE_RC_VOLUME_ALLOWED_MASK;
1105 rc_size=5;
1106 if(constant_assign_provided) rc_size += 2;
1107 if(volume_allowed) rc_size += 1;
1108 ti = proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_rc, tvb, cur_off + new_off, rc_size, ENC_NA);
1109 dvb_s2_hdr_table_rc_tree = proto_item_add_subtree(ti, ett_dvb_s2_hdr_table_desc);
1110 proto_tree_add_item(dvb_s2_hdr_table_rc_tree, hf_dvb_s2_table_rc_index, tvb, cur_off + new_off, 1, ENC_NA);
1111 proto_tree_add_item(dvb_s2_hdr_table_rc_tree, hf_dvb_s2_table_rc_constant_assignment_provided, tvb, cur_off + new_off, 1, ENC_NA);
1112 proto_tree_add_item(dvb_s2_hdr_table_rc_tree, hf_dvb_s2_table_rc_volume_allowed, tvb, cur_off + new_off, 1, ENC_NA);
1113 proto_tree_add_item(dvb_s2_hdr_table_rc_tree, hf_dvb_s2_table_rc_rbdc_allowed, tvb, cur_off + new_off, 1, ENC_NA);
1114 new_off += 1;
1115 proto_tree_add_item(dvb_s2_hdr_table_rc_tree, hf_dvb_s2_table_rc_maximum_service_rate, tvb, cur_off + new_off, 2, ENC_NA);
1116 new_off += 2;
1117 proto_tree_add_item(dvb_s2_hdr_table_rc_tree, hf_dvb_s2_table_rc_minimum_service_rate, tvb, cur_off + new_off, 2, ENC_NA);
1118 new_off += 2;
1119 if(constant_assign_provided)
1121 proto_tree_add_item(dvb_s2_hdr_table_rc_tree, hf_dvb_s2_table_rc_constant_service_rate, tvb, cur_off + new_off, 2, ENC_NA);
1122 new_off += 2;
1124 if(volume_allowed)
1126 proto_tree_add_item(dvb_s2_hdr_table_rc_tree, hf_dvb_s2_table_rc_maximum_backlog, tvb, cur_off + new_off, 1, ENC_NA);
1127 new_off += 1;
1130 raac_count = tvb_get_uint8(tvb, cur_off + new_off) & DVB_S2_TABLE_DESC_RA_AC_COUNT_MASK;
1131 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_desc_ra_ac_count, tvb, cur_off + new_off, 1, ENC_NA);
1132 new_off += 1;
1133 for(cur_raac=0 ; cur_raac<raac_count ; cur_raac++)
1135 defaults_field_size = tvb_get_uint8(tvb, cur_off + new_off + 4);
1136 raac_size = 5 + defaults_field_size;
1137 ti = proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_ra_ac, tvb, cur_off + new_off, raac_size, ENC_NA);
1138 dvb_s2_hdr_table_raac_tree = proto_item_add_subtree(ti, ett_dvb_s2_hdr_table_desc);
1139 proto_tree_add_item(dvb_s2_hdr_table_raac_tree, hf_dvb_s2_table_ra_ac_index, tvb, cur_off + new_off, 1, ENC_NA);
1140 new_off += 1;
1141 proto_tree_add_item(dvb_s2_hdr_table_raac_tree, hf_dvb_s2_table_ra_ac_max_unique_payload_per_block, tvb, cur_off + new_off, 1, ENC_NA);
1142 new_off += 1;
1143 proto_tree_add_item(dvb_s2_hdr_table_raac_tree, hf_dvb_s2_table_ra_ac_max_consecutive_block_accessed, tvb, cur_off + new_off, 1, ENC_NA);
1144 new_off += 1;
1145 proto_tree_add_item(dvb_s2_hdr_table_raac_tree, hf_dvb_s2_table_ra_ac_min_idle_block, tvb, cur_off + new_off, 1, ENC_NA);
1146 new_off += 1;
1147 proto_tree_add_item(dvb_s2_hdr_table_raac_tree, hf_dvb_s2_table_ra_ac_defaults_field_size, tvb, cur_off + new_off, 1, ENC_NA);
1148 new_off += 1;
1149 proto_tree_add_item(dvb_s2_hdr_table_raac_tree, hf_dvb_s2_table_ra_ac_defaults_for_ra_load_control,
1150 tvb, cur_off + new_off, defaults_field_size, ENC_NA);
1151 new_off += defaults_field_size;
1153 break;
1154 case (DVB_S2_TABLE_DESC_NETWORK_NAME):
1155 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_nnd_char, tvb, cur_off + new_off, desc_length, ENC_NA);
1156 new_off += desc_length;
1157 break;
1158 case (DVB_S2_TABLE_DESC_LINKAGE):
1159 start_off = new_off;
1160 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_ld_fm_id, tvb, cur_off + new_off, 2, ENC_NA);
1161 new_off += 2;
1162 linkage_type = tvb_get_uint8(tvb, cur_off + new_off + 4);
1163 if (linkage_type == 0x82 || linkage_type == 0x81) {
1164 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_ld_rm_id, tvb, cur_off + new_off, 2, ENC_NA);
1165 } else {
1166 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_ld_on_id, tvb, cur_off + new_off, 2, ENC_NA);
1168 new_off += 2;
1169 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_ld_service_id, tvb, cur_off + new_off, 2, ENC_NA);
1170 new_off += 2;
1171 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_ld_linkage_type, tvb, cur_off + new_off, 1, ENC_NA);
1172 new_off += 1;
1173 if (linkage_type == 0x08) {
1174 proto_tree_add_item_ret_uint(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_ld_ho_type, tvb, cur_off + new_off, 1, ENC_NA, &hand_over_type);
1175 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_ld_reserved_future_use, tvb, cur_off + new_off, 1, ENC_NA);
1176 proto_tree_add_item_ret_uint(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_ld_origin_type, tvb, cur_off + new_off, 1, ENC_NA, &origin_type);
1177 new_off += 1;
1178 if ((hand_over_type == 0x01) || (hand_over_type == 0x02) || (hand_over_type == 0x03)) {
1179 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_ld_network_id, tvb, cur_off + new_off, 2, ENC_NA);
1180 new_off += 2;
1183 if (origin_type == 0x00) {
1184 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_ld_initial_service_id, tvb, cur_off + new_off, 2, ENC_NA);
1185 new_off += 2;
1189 if (linkage_type == 0x0D) {
1190 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_ld_target_event_id, tvb, cur_off + new_off, 2, ENC_NA);
1191 new_off += 2;
1192 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_ld_target_listed, tvb, cur_off + new_off, 1, ENC_NA);
1193 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_ld_event_simulcast, tvb, cur_off + new_off, 1, ENC_NA);
1194 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_ld_reserved, tvb, cur_off + new_off, 1, ENC_NA);
1195 new_off += 1;
1198 if (linkage_type == 0x82 || linkage_type == 0x81) {
1199 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_ld_network_id, tvb, cur_off + new_off, 2, ENC_NA);
1200 new_off += 2;
1201 population_id_loop_count = tvb_get_uint8(tvb, cur_off + new_off);
1202 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_ld_population_id_loop_count, tvb, cur_off + new_off, 1, ENC_NA);
1203 new_off += 1;
1204 for (i = 0 ; i <= population_id_loop_count ; i++) {
1205 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_ld_population_id_base, tvb, cur_off + new_off, 2, ENC_NA);
1206 new_off += 2;
1207 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_ld_population_id_mask, tvb, cur_off + new_off, 2, ENC_NA);
1208 new_off += 2;
1212 remaning_data = desc_length - (new_off - start_off);
1213 if (remaning_data > 0 ) {
1214 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_ld_private_data, tvb, cur_off + new_off, remaning_data, ENC_NA);
1215 new_off += remaning_data;
1218 break;
1219 case (DVB_S2_TABLE_DESC_SATELLITE_RETURN_LINK):
1220 start_off = new_off;
1221 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_srld_satellite_id, tvb, cur_off + new_off, 1, ENC_NA);
1222 new_off += 1;
1223 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_srld_beam_id, tvb, cur_off + new_off, 2, ENC_NA);
1224 new_off += 2;
1225 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_srld_gateway_id, tvb, cur_off + new_off, 1, ENC_NA);
1226 new_off += 1;
1227 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_srld_reserved, tvb, cur_off + new_off, 1, ENC_NA);
1228 new_off += 1;
1229 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_srld_orbital_position, tvb, cur_off + new_off, 2, ENC_NA);
1230 new_off += 2;
1231 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_srld_west_east_flag, tvb, cur_off + new_off, 1, ENC_NA);
1232 new_off += 1;
1233 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_srld_superframe_sequence, tvb, cur_off + new_off, 1, ENC_NA);
1234 new_off += 1;
1235 if (table_id == DVB_S2_TABLE_TIM) {
1236 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_srld_tx_frequency_offset, tvb, cur_off + new_off, 3, ENC_NA);
1237 } else {
1238 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_srld_zero_frequency_offset, tvb, cur_off + new_off, 3, ENC_NA);
1240 new_off += 3;
1241 remaning_data = desc_length - (new_off - start_off);
1242 if (remaning_data > 0 ) {
1243 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_srld_private_data, tvb, cur_off + new_off, remaning_data, ENC_NA);
1244 new_off += remaning_data;
1246 break;
1247 case (DVB_S2_TABLE_DESC_LOGON_INITIALIZE):
1248 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_lid_group_id, tvb, cur_off + new_off, 1, ENC_NA);
1249 new_off += 1;
1250 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_lid_logon_id, tvb, cur_off + new_off, 2, ENC_NA);
1251 new_off += 2;
1252 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_lid_continuous_carrier, tvb, cur_off + new_off, 1, ENC_NA);
1253 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_lid_security_handshake, tvb, cur_off + new_off, 1, ENC_NA);
1254 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_lid_prefix_flag, tvb, cur_off + new_off, 1, ENC_NA);
1255 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_lid_data_unit_label_flag, tvb, cur_off + new_off, 1, ENC_NA);
1256 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_lid_mini_slot_flag, tvb, cur_off + new_off, 1, ENC_NA);
1257 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_lid_contention_based_mini_slot_flag, tvb, cur_off + new_off, 1, ENC_NA);
1258 new_off += 1;
1259 capacity_type_flag = tvb_get_uint8(tvb, cur_off + new_off) & DVB_S2_TABLE_DESC_CAPCITY_TYPE_FLAG_MASK;
1260 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_lid_capacity_type_flag, tvb, cur_off + new_off, 1, ENC_NA);
1261 traffic_burst_type = tvb_get_uint8(tvb, cur_off + new_off) & DVB_S2_TABLE_DESC_TRAFFIC_BURST_TYPE_MASK;
1262 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_lid_traffic_burst_type, tvb, cur_off + new_off, 1, ENC_NA);
1263 if (traffic_burst_type == 0) {
1264 connectivity = tvb_get_uint8(tvb, cur_off + new_off) & DVB_S2_TABLE_DESC_CONNECTIVITY_MASK;
1265 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_lid_connectivity, tvb, cur_off + new_off, 1, ENC_NA);
1266 if (connectivity == 0) {
1267 new_off += 1;
1268 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_lid_return_vpi, tvb, cur_off + new_off, 1, ENC_NA);
1269 new_off += 1;
1270 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_lid_return_vci, tvb, cur_off + new_off, 2, ENC_NA);
1271 new_off += 2;
1272 } else {
1273 new_off += 1;
1274 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_lid_return_signalling_vpi, tvb, cur_off + new_off, 1, ENC_NA);
1275 new_off += 1;
1276 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_lid_return_signalling_vci, tvb, cur_off + new_off, 2, ENC_NA);
1277 new_off += 3;
1278 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_lid_forward_signalling_vpi, tvb, cur_off + new_off, 1, ENC_NA);
1279 new_off += 1;
1280 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_lid_forward_signalling_vci, tvb, cur_off + new_off, 2, ENC_NA);
1281 new_off += 2;
1283 } else {
1284 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_lid_return_trf_pid, tvb, cur_off + new_off, 2, ENC_NA);
1285 new_off += 2;
1286 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_lid_return_ctrl_mngm_pid, tvb, cur_off + new_off, 2, ENC_NA);
1287 new_off += 2;
1289 if (capacity_type_flag == 0) {
1290 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_lid_cra_level, tvb, cur_off + new_off, 3, ENC_NA);
1291 new_off += 3;
1292 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_lid_vbdc_max, tvb, cur_off + new_off, 2, ENC_NA);
1293 new_off += 2;
1294 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_lid_rbdc_max, tvb, cur_off + new_off, 3, ENC_NA);
1295 new_off += 3;
1296 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_lid_rbdc_timeout, tvb, cur_off + new_off, 2, ENC_NA);
1297 new_off += 2;
1299 break;
1300 case (DVB_S2_TABLE_DESC_FORWARD_INTERACTION_PATH):
1301 start_off = new_off;
1302 remaning_data = desc_length - (new_off - start_off);
1303 while (remaning_data > 0) {
1304 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_fipd_original_network_id, tvb, cur_off + new_off, 2, ENC_NA);
1305 new_off += 2;
1306 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_fipd_transport_stream_id, tvb, cur_off + new_off, 2, ENC_NA);
1307 new_off += 2;
1308 pid_loop_count = tvb_get_uint8(tvb, cur_off + new_off) & DVB_S2_TABLE_DESC_PID_LOOP_COUNT;
1309 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_fipd_pid_loop_count, tvb, cur_off + new_off, 1, ENC_NA);
1310 new_off += 1;
1311 for (k = 0 ; k <= pid_loop_count ; k++) {
1312 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_fipd_pid, tvb, cur_off + new_off, 2, ENC_NA);
1313 new_off += 2;
1315 remaning_data = desc_length - (new_off - start_off);
1317 break;
1318 case (DVB_S2_TABLE_DESC_RETURN_INTERACTION_PATH):
1319 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_ripd_continuous_carrier, tvb, cur_off + new_off, 1, ENC_NA);
1320 network_routing_label_loop_count = tvb_get_uint8(tvb, cur_off + new_off) & DVB_S2_TABLE_DESC_NETWORK_ROUTING_LABEL;
1321 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_ripd_network_routing_label_loop_count, tvb, cur_off + new_off, 1, ENC_NA);
1322 new_off += 1;
1323 for (k = 0 ; k <= network_routing_label_loop_count ; k++) {
1324 ti = proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_desc_network_routing, tvb, cur_off + new_off, -1, ENC_NA);
1325 dvb_s2_hdr_table_network_routing_tree = proto_item_add_subtree(ti, ett_dvb_s2_hdr_table_network_routing);
1326 proto_tree_add_item(dvb_s2_hdr_table_network_routing_tree, hf_dvb_s2_table_ripd_allocation_desallocation_flag, tvb, cur_off + new_off, 1, ENC_NA);
1327 pid_flag = tvb_get_uint8(tvb, cur_off + new_off) & DVB_S2_TABLE_DESC_PID_FLAG_MASK;
1328 proto_tree_add_item(dvb_s2_hdr_table_network_routing_tree, hf_dvb_s2_table_ripd_pid_flag, tvb, cur_off + new_off, 1, ENC_NA);
1329 new_off += 1;
1330 if (pid_flag == 1) {
1331 pid_loop_count = tvb_get_uint8(tvb, cur_off + new_off);
1332 proto_tree_add_item(dvb_s2_hdr_table_network_routing_tree, hf_dvb_s2_table_ripd_pid_loop_count, tvb, cur_off + new_off, 1, ENC_NA);
1333 new_off += 1;
1334 for (j = 0 ; j <= pid_loop_count ; j++) {
1335 proto_tree_add_item(dvb_s2_hdr_table_network_routing_tree, hf_dvb_s2_table_ripd_pid, tvb, cur_off + new_off, 2, ENC_NA);
1336 new_off += 2;
1339 vpi_vci_flag = tvb_get_uint8(tvb, cur_off + new_off) & DVB_S2_TABLE_DESC_VPI_VCI_FLAG_MASK;
1340 proto_tree_add_item(dvb_s2_hdr_table_network_routing_tree, hf_dvb_s2_table_ripd_vpi_vci_flag, tvb, cur_off + new_off, 1, ENC_NA);
1341 new_off += 1;
1342 if (vpi_vci_flag == 1) {
1343 vpi_vci_loop_count = tvb_get_uint8(tvb, cur_off + new_off);
1344 proto_tree_add_item(dvb_s2_hdr_table_network_routing_tree, hf_dvb_s2_table_ripd_vpi_vci_loop_count, tvb, cur_off + new_off, 1, ENC_NA);
1345 new_off += 1;
1346 for (i = 0 ; i <= vpi_vci_loop_count ; i++) {
1347 proto_tree_add_item(dvb_s2_hdr_table_network_routing_tree, hf_dvb_s2_table_ripd_vpi, tvb, cur_off + new_off, 1, ENC_NA);
1348 new_off += 1;
1349 proto_tree_add_item(dvb_s2_hdr_table_network_routing_tree, hf_dvb_s2_table_ripd_vci, tvb, cur_off + new_off, 2, ENC_NA);
1350 new_off += 2;
1353 route_id_flag = tvb_get_uint8(tvb, cur_off + new_off) & DVB_S2_TABLE_DESC_ROUTE_ID_FLAG_MASK;
1354 proto_tree_add_item(dvb_s2_hdr_table_network_routing_tree, hf_dvb_s2_table_ripd_route_id_flag, tvb, cur_off + new_off, 1, ENC_NA);
1355 new_off += 1;
1356 if (route_id_flag == 1) {
1357 route_id_loop_count = tvb_get_uint8(tvb, cur_off + new_off);
1358 proto_tree_add_item(dvb_s2_hdr_table_network_routing_tree, hf_dvb_s2_table_ripd_route_id_loop_count, tvb, cur_off + new_off, 1, ENC_NA);
1359 new_off += 1;
1360 for (l = 0 ; l <= route_id_loop_count ; l ++) {
1361 proto_tree_add_item(dvb_s2_hdr_table_network_routing_tree, hf_dvb_s2_table_ripd_route_id, tvb, cur_off + new_off, 2, ENC_NA);
1362 new_off += 2;
1365 proto_tree_add_item(dvb_s2_hdr_table_network_routing_tree, hf_dvb_s2_table_ripd_channel_id, tvb, cur_off + new_off, 1, ENC_NA);
1366 new_off += 1;
1368 break;
1369 case (DVB_S2_TABLE_DESC_NETWORK_LAYER_INFO):
1370 dissect_snmp_pdu(tvb, cur_off + new_off, pinfo, dvb_s2_hdr_table_desc_tree, 1, ett_dvb_s2_hdr_table_desc, false);
1371 new_off += desc_length;
1372 break;
1373 case (DVB_S2_TABLE_DESC_CORRECTION_CONTROL):
1374 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_corcd_acq_response_timeout, tvb, cur_off + new_off, 4, ENC_NA);
1375 new_off += 4;
1376 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_corcd_sync_response_timeout, tvb, cur_off + new_off, 4, ENC_NA);
1377 new_off += 4;
1378 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_corcd_acq_max_losses, tvb, cur_off + new_off, 1, ENC_NA);
1379 new_off += 1;
1380 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_corcd_sync_max_losses, tvb, cur_off + new_off, 1, ENC_NA);
1381 new_off += 1;
1382 break;
1383 case (DVB_S2_TABLE_DESC_CONTENTION_CONTROL):
1384 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_concd_superframe_id, tvb, cur_off + new_off, 1, ENC_NA);
1385 new_off += 1;
1386 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_concd_csc_response_timeout, tvb, cur_off + new_off, 4, ENC_NA);
1387 new_off += 4;
1388 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_concd_csc_max_losses, tvb, cur_off + new_off, 1, ENC_NA);
1389 new_off += 1;
1390 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_concd_max_time_before_retry, tvb, cur_off + new_off, 4, ENC_NA);
1391 new_off += 4;
1392 break;
1393 case (DVB_S2_TABLE_DESC_SATELLITE_FORWARD_LINK):
1394 start_off = new_off;
1395 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_sfld_satellite_id, tvb, cur_off + new_off, 1, ENC_NA);
1396 new_off += 1;
1397 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_sfld_beam_id, tvb, cur_off + new_off, 2, ENC_NA);
1398 new_off += 2;
1399 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_sfld_ncc_id, tvb, cur_off + new_off, 1, ENC_NA);
1400 new_off += 1;
1401 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_sfld_multiplex_usage, tvb, cur_off + new_off, 1, ENC_NA);
1402 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_sfld_local_multiplex_id, tvb, cur_off + new_off, 1, ENC_NA);
1403 new_off += 1;
1404 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_sfld_frequency, tvb, cur_off + new_off, 4, ENC_NA);
1405 new_off += 4;
1406 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_sfld_orbital_position, tvb, cur_off + new_off, 2, ENC_NA);
1407 new_off += 2;
1408 transmission_standard = (tvb_get_uint8(tvb, cur_off + new_off) & DVB_S2_TABLE_DESC_TRANSMISSION_STANDARD_MASK) /8;
1409 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_sfld_west_east_flag, tvb, cur_off + new_off, 1, ENC_NA);
1410 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_sfld_polarization, tvb, cur_off + new_off, 1, ENC_NA);
1411 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_sfld_transmission_standard, tvb, cur_off + new_off, 1, ENC_NA);
1412 if (transmission_standard == 0) {
1413 new_off += 1;
1414 } else if (transmission_standard == 1 || transmission_standard == 2) {
1415 scrambling_sequence_selector = tvb_get_uint8(tvb, cur_off + new_off) & DVB_S2_TABLE_DESC_SCRAMBLING_SEQUENCE_SELECTOR_MASK;
1416 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_sfld_scrambling_sequence_selector, tvb, cur_off + new_off, 1, ENC_NA);
1417 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_sfld_roll_off, tvb, cur_off + new_off, 1, ENC_NA);
1418 new_off += 1;
1420 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_sfld_symbol_rate, tvb, cur_off + new_off, 3, ENC_NA);
1421 new_off += 3;
1422 if (transmission_standard == 0) {
1423 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_sfld_fec_inner, tvb, cur_off + new_off, 1, ENC_NA);
1424 new_off += 1;
1425 } else if (transmission_standard == 1 || transmission_standard == 2) {
1426 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_sfld_input_stream_identifier, tvb, cur_off + new_off, 1, ENC_NA);
1427 new_off += 1;
1428 if (scrambling_sequence_selector == 0) {
1429 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_sfld_reserved_for_forward_spreading, tvb, cur_off + new_off, 1, ENC_NA);
1430 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_sfld_scrambling_sequence_index, tvb, cur_off + new_off, 3, ENC_NA);
1431 new_off += 3;
1434 remaning_data = desc_length - (new_off - start_off);
1435 if (remaning_data > 0 ) {
1436 if (table_id == DVB_S2_TABLE_TIMB && remaning_data == DVB_S2_NCR_SIZE) {
1437 proto_tree *dvb_s2_hdr_table_ncr_subtree;
1438 proto_item *ti_ncr;
1439 ti_ncr = proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_sfld_ncr_private_data, tvb, cur_off + new_off, 6, ENC_NA);
1440 dvb_s2_hdr_table_ncr_subtree = proto_item_add_subtree(ti_ncr, ett_dvb_s2_hdr_table_desc);
1442 proto_tree_add_bits_item(dvb_s2_hdr_table_ncr_subtree, hf_dvb_s2_table_sfld_ncr_base_private_data, tvb, (cur_off + new_off) * 8, 33, ENC_NA);
1443 proto_tree_add_item(dvb_s2_hdr_table_ncr_subtree, hf_dvb_s2_table_sfld_ncr_ext_private_data, tvb, cur_off + new_off + 4, 2, ENC_NA);
1444 } else {
1445 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_sfld_private_data, tvb, cur_off + new_off, remaning_data, ENC_NA);
1447 new_off += remaning_data;
1450 break;
1451 case (DVB_S2_TABLE_DESC_MOBILITY_CONTROL):
1452 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_mc_command_value, tvb, cur_off + new_off, 2, ENC_NA);
1453 new_off += 2;
1454 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_mc_command_parameter, tvb, cur_off + new_off, 2, ENC_NA);
1455 new_off += 2;
1456 break;
1457 case (DVB_S2_TABLE_DESC_LOWEST_SOFTWARE_VERSION):
1458 group_count = tvb_get_uint8(tvb, cur_off + new_off);
1459 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_lsvd_group_count, tvb, cur_off + new_off, 1, ENC_NA);
1460 new_off += 1;
1461 for (k = 0 ; k < group_count ; k++) {
1462 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_lsvd_oui, tvb, cur_off + new_off, 3, ENC_NA);
1463 new_off += 3;
1464 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_lsvd_mcast_address, tvb, cur_off + new_off, 4, ENC_NA);
1465 new_off += 4;
1466 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_lsvd_mcast_port, tvb, cur_off + new_off, 2, ENC_NA);
1467 new_off += 2;
1468 version_length = tvb_get_uint8(tvb, cur_off + new_off);
1469 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_lsvd_version_field_length, tvb, cur_off + new_off, 1, ENC_NA);
1470 new_off += 1;
1471 proto_tree_add_item(dvb_s2_hdr_table_desc_tree, hf_dvb_s2_table_lsvd_version_bytes, tvb, cur_off + new_off, version_length, ENC_NA);
1472 new_off += version_length;
1474 break;
1475 default:
1476 new_off += desc_length;
1477 break;
1481 return new_off;
1484 static int dissect_dvb_s2_table_sct(tvbuff_t *tvb, int cur_off, proto_tree *dvb_s2_hdr_table_tree)
1486 int sf_start_offset, new_off = 0;
1487 uint8_t superframe_loop_count, frame_loop_count;
1488 int cur_sf, cur_frame;
1489 proto_item *ti, *tf;
1491 proto_tree *dvb_s2_hdr_table_sf_tree, *dvb_s2_hdr_table_sf_frame_tree;
1493 superframe_loop_count = tvb_get_uint8(tvb, cur_off + new_off);
1494 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_table_superframe_loop_count, tvb, cur_off + new_off, 1, ENC_NA);
1495 new_off += 1;
1497 for(cur_sf=0 ; cur_sf<=superframe_loop_count ; cur_sf++)
1499 sf_start_offset = new_off;
1500 ti = proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_table_superframe, tvb, cur_off + new_off, -1, ENC_NA);
1501 dvb_s2_hdr_table_sf_tree = proto_item_add_subtree(ti, ett_dvb_s2_hdr_table_sf);
1502 if (dvb_s2_rcs_version == DVB_S2_RCS_TABLE_DECODING)
1503 proto_tree_add_item(dvb_s2_hdr_table_sf_tree, hf_dvb_s2_table_sf_id, tvb, cur_off + new_off, 1, ENC_NA);
1504 else if (dvb_s2_rcs_version == DVB_S2_RCS2_TABLE_DECODING)
1505 proto_tree_add_item(dvb_s2_hdr_table_sf_tree, hf_dvb_s2_table_sf_sequence, tvb, cur_off + new_off, 1, ENC_NA);
1506 new_off += 1;
1507 proto_tree_add_item(dvb_s2_hdr_table_sf_tree, hf_dvb_s2_table_sf_large_timing_uncertainty_flag, tvb, cur_off + new_off, 1, ENC_NA);
1508 proto_tree_add_item(dvb_s2_hdr_table_sf_tree, hf_dvb_s2_table_sf_uplink_polarization, tvb, cur_off + new_off, 1, ENC_NA);
1509 new_off += 1;
1510 proto_tree_add_item(dvb_s2_hdr_table_sf_tree, hf_dvb_s2_table_sf_absolute_time , tvb, cur_off + new_off, 6, ENC_NA);
1511 new_off += 6;
1512 proto_tree_add_item(dvb_s2_hdr_table_sf_tree, hf_dvb_s2_table_sf_duration, tvb, cur_off + new_off, 4, ENC_NA);
1513 new_off += 4;
1514 proto_tree_add_item(dvb_s2_hdr_table_sf_tree, hf_dvb_s2_table_sf_centre_frequency, tvb, cur_off + new_off, 4, ENC_NA);
1515 new_off += 4;
1516 proto_tree_add_item(dvb_s2_hdr_table_sf_tree, hf_dvb_s2_table_sf_count, tvb, cur_off + new_off, 2, ENC_NA);
1517 new_off += 2;
1518 frame_loop_count = tvb_get_uint8(tvb, cur_off + new_off) & DVB_S2_TABLE_SCT_FRAME_LOOP_COUNT_MASK;
1519 proto_tree_add_item(dvb_s2_hdr_table_sf_tree, hf_dvb_s2_table_sf_frame_loop_count, tvb, cur_off + new_off, 1, ENC_NA);
1520 new_off += 1;
1522 for(cur_frame=0 ; cur_frame<=frame_loop_count ; cur_frame++)
1524 tf = proto_tree_add_item(dvb_s2_hdr_table_sf_tree, hf_dvb_s2_table_sf_frame, tvb, cur_off + new_off,
1525 DVB_S2_TABLE_SCT_FRAME_LEN, ENC_NA);
1526 dvb_s2_hdr_table_sf_frame_tree = proto_item_add_subtree(tf, ett_dvb_s2_hdr_table_sf_frame);
1527 if (dvb_s2_rcs_version == DVB_S2_RCS_TABLE_DECODING)
1528 proto_tree_add_item(dvb_s2_hdr_table_sf_frame_tree, hf_dvb_s2_table_sf_frame_id, tvb, cur_off + new_off, 1, ENC_NA);
1529 if (dvb_s2_rcs_version == DVB_S2_RCS2_TABLE_DECODING)
1530 proto_tree_add_item(dvb_s2_hdr_table_sf_frame_tree, hf_dvb_s2_table_sf_frame_type, tvb, cur_off + new_off, 1, ENC_NA);
1531 new_off += 1;
1532 proto_tree_add_item(dvb_s2_hdr_table_sf_frame_tree, hf_dvb_s2_table_sf_frame_start_time, tvb, cur_off + new_off, 4, ENC_NA);
1533 new_off += 4;
1534 proto_tree_add_item(dvb_s2_hdr_table_sf_frame_tree, hf_dvb_s2_table_sf_frame_centre_frequency_offset, tvb, cur_off + new_off, 3, ENC_NA);
1535 new_off += 3;
1537 proto_item_set_len(ti, new_off - sf_start_offset);
1539 if (dvb_s2_rcs_version == DVB_S2_RCS_TABLE_DECODING)
1541 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_table_crc32, tvb, cur_off + new_off, 4, ENC_NA);
1542 new_off += 4;
1545 return new_off;
1548 static int dissect_dvb_s2_table_tim(tvbuff_t *tvb, int cur_off, proto_tree *dvb_s2_hdr_table_tree, bool isUnicast, packet_info *pinfo)
1550 int desc_loop_count, new_off = 0;
1551 int table_id = 0;
1553 if(isUnicast) {
1554 table_id = DVB_S2_TABLE_TIM;
1555 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_table_rcst_status, tvb, cur_off + new_off, 1, ENC_NA);
1556 } else {
1557 table_id = DVB_S2_TABLE_TIMB;
1558 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_table_network_status, tvb, cur_off + new_off, 1, ENC_NA);
1560 new_off += 1;
1561 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_table_desc_loop_count, tvb, cur_off + new_off, 1, ENC_NA);
1562 desc_loop_count = tvb_get_uint8(tvb, cur_off + new_off);
1563 new_off += 1;
1565 new_off += dissect_dvb_s2_table_desc(tvb, cur_off + new_off, dvb_s2_hdr_table_tree, desc_loop_count, table_id, pinfo);
1567 if (dvb_s2_rcs_version == DVB_S2_RCS_TABLE_DECODING)
1569 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_table_crc32, tvb, cur_off + new_off, 4, ENC_NA);
1570 new_off += 4;
1573 return new_off;
1577 static int dissect_dvb_s2_table_tbtp(tvbuff_t *tvb, int cur_off, proto_tree *dvb_s2_hdr_table_tree, uint16_t table_len)
1579 int frame_loop_count, frame_start_offset, btp_start_offset, cur_frame, btp_loop_count, btp, new_off = 0;
1580 uint8_t multiple_channel_flag = 0;
1581 proto_item *ti, *tf;
1582 proto_tree *dvb_s2_hdr_tbtp_frame_tree, *dvb_s2_hdr_tbtp_frame_btp_tree;
1583 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_tbtp_group_id, tvb, cur_off + new_off, 1, ENC_NA);
1584 new_off += 1;
1585 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_tbtp_superframe_count, tvb, cur_off + new_off, 2, ENC_NA);
1586 new_off += 2;
1587 frame_loop_count = tvb_get_uint8(tvb, cur_off + new_off) & DVB_S2_TABLE_SCT_FRAME_LOOP_COUNT_MASK;
1588 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_tbtp_frame_loop_count, tvb, cur_off + new_off, 1, ENC_NA);
1589 new_off += 1;
1590 for(cur_frame=0 ; cur_frame<=frame_loop_count ; cur_frame++)
1592 frame_start_offset = new_off;
1593 ti = proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_tbtp_sf_frame, tvb, cur_off + new_off, -1, ENC_NA);
1594 dvb_s2_hdr_tbtp_frame_tree = proto_item_add_subtree(ti, ett_dvb_s2_hdr_tbtp_frame);
1596 proto_tree_add_item(dvb_s2_hdr_tbtp_frame_tree, hf_dvb_s2_tbtp_frame_number, tvb, cur_off + new_off, 1, ENC_NA);
1597 new_off += 1;
1598 btp_loop_count = tvb_get_ntohs(tvb, cur_off + new_off) & DVB_S2_TABLE_TBTP_BTP_LOOP_COUNT_MASK;
1599 proto_tree_add_item(dvb_s2_hdr_tbtp_frame_tree, hf_dvb_s2_tbtp_btb_loop_count, tvb, cur_off + new_off, 2, ENC_NA);
1600 new_off += 2;
1601 for(btp=0 ; btp<=btp_loop_count ; btp++)
1603 btp_start_offset = new_off;
1604 tf = proto_tree_add_item(dvb_s2_hdr_tbtp_frame_tree, hf_dvb_s2_tbtp_btp, tvb, cur_off + new_off, -1, ENC_NA);
1605 dvb_s2_hdr_tbtp_frame_btp_tree = proto_item_add_subtree(tf, ett_dvb_s2_hdr_tbtp_frame_btp);
1606 proto_tree_add_item(dvb_s2_hdr_tbtp_frame_btp_tree, hf_dvb_s2_tbtp_logon_id, tvb, cur_off + new_off, 2, ENC_NA);
1607 new_off += 2;
1608 multiple_channel_flag = tvb_get_uint8(tvb, cur_off + new_off) & 0x80;
1609 proto_tree_add_item(dvb_s2_hdr_tbtp_frame_btp_tree, hf_dvb_s2_tbtp_multiple_channel_flag, tvb, cur_off + new_off, 1, ENC_NA);
1610 proto_tree_add_item(dvb_s2_hdr_tbtp_frame_btp_tree, hf_dvb_s2_tbtp_assignment_type, tvb, cur_off + new_off, 1, ENC_NA);
1611 proto_tree_add_item(dvb_s2_hdr_tbtp_frame_btp_tree, hf_dvb_s2_tbtp_frame_vbdc_queue_empty_flag, tvb, cur_off + new_off, 1, ENC_NA);
1612 proto_tree_add_item(dvb_s2_hdr_tbtp_frame_btp_tree, hf_dvb_s2_tbtp_start_slot, tvb, cur_off + new_off, 2, ENC_NA);
1613 new_off += 2;
1614 if (multiple_channel_flag) {
1615 proto_tree_add_item(dvb_s2_hdr_tbtp_frame_btp_tree, hf_dvb_s2_tbtp_channel_id, tvb, cur_off + new_off, 1, ENC_NA);
1616 new_off += 1;
1618 proto_tree_add_item(dvb_s2_hdr_tbtp_frame_btp_tree, hf_dvb_s2_tbtp_assignment_count, tvb, cur_off + new_off, 1, ENC_NA);
1619 new_off += 1;
1620 proto_item_set_len(tf, new_off - btp_start_offset);
1622 proto_item_set_len(ti, new_off - frame_start_offset);
1625 if (dvb_s2_rcs_version == DVB_S2_RCS_TABLE_DECODING)
1627 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_table_crc32, tvb, cur_off + new_off, 4, ENC_NA);
1630 return (table_len - DVB_S2_TABLE_HEADER_RCS2_LEN);
1634 static int dissect_dvb_s2_table_tbtp2(tvbuff_t *tvb, int cur_off, proto_tree *dvb_s2_hdr_table_tree, uint16_t table_len)
1636 int frame_loop_count, frame_start_offset, assign_start_offset, cur_frame, cur_assign, new_off = 0;
1637 uint16_t assignment_loop_count;
1638 uint8_t assignment_format = 0;
1639 proto_item *ti, *tf;
1640 proto_tree *dvb_s2_hdr_table_frame_tree, *dvb_s2_hdr_table_frame_assign_tree;
1642 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_table_group_id, tvb, cur_off + new_off, 1, ENC_NA);
1643 new_off += 1;
1644 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_table_sf_sequence, tvb, cur_off + new_off, 1, ENC_NA);
1645 new_off += 1;
1646 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_table_assign_context, tvb, cur_off + new_off, 1, ENC_NA);
1647 new_off += 1;
1648 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_table_superframe_count, tvb, cur_off + new_off, 1, ENC_NA);
1649 new_off += 1;
1650 assignment_format = tvb_get_uint8(tvb, cur_off + new_off);
1651 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_table_assign_format, tvb, cur_off + new_off, 1, ENC_NA);
1652 new_off += 1;
1653 frame_loop_count = tvb_get_uint8(tvb, cur_off + new_off);
1654 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_table_frame_loop_count, tvb, cur_off + new_off, 1, ENC_NA);
1655 new_off += 1;
1657 for(cur_frame=0 ; cur_frame<=frame_loop_count ; cur_frame++)
1659 frame_start_offset = new_off;
1660 ti = proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_table_sf_frame, tvb, cur_off + new_off, -1, ENC_NA);
1661 dvb_s2_hdr_table_frame_tree = proto_item_add_subtree(ti, ett_dvb_s2_hdr_table_frame);
1662 proto_tree_add_item(dvb_s2_hdr_table_frame_tree, hf_dvb_s2_table_frame_number, tvb, cur_off + new_off, 1, ENC_NA);
1663 new_off += 1;
1664 proto_tree_add_item(dvb_s2_hdr_table_frame_tree,hf_dvb_s2_table_frame_assign_offset, tvb, cur_off + new_off, 2, ENC_NA);
1665 new_off += 2;
1666 assignment_loop_count = tvb_get_ntohs(tvb, cur_off + new_off);
1667 proto_tree_add_item(dvb_s2_hdr_table_frame_tree, hf_dvb_s2_table_frame_assign_loop_count, tvb, cur_off + new_off, 2, ENC_NA);
1668 new_off += 2;
1669 for(cur_assign=0 ; cur_assign<=assignment_loop_count ; cur_assign++)
1671 assign_start_offset = new_off;
1672 tf = proto_tree_add_item(dvb_s2_hdr_table_frame_tree, hf_dvb_s2_table_frame_assignment, tvb, cur_off + new_off, -1, ENC_NA);
1673 dvb_s2_hdr_table_frame_assign_tree = proto_item_add_subtree(tf, ett_dvb_s2_hdr_table_frame_assign);
1674 switch (assignment_format) {
1675 case 0 :
1676 proto_tree_add_item(dvb_s2_hdr_table_frame_assign_tree, hf_dvb_s2_table_frame_assign_id48, tvb, cur_off + new_off, 6, ENC_NA);
1677 new_off += 6;
1678 break;
1679 case 1 :
1680 proto_tree_add_item(dvb_s2_hdr_table_frame_assign_tree, hf_dvb_s2_table_frame_assign_id8, tvb, cur_off + new_off, 1, ENC_NA);
1681 new_off += 1;
1682 break;
1683 case 2 :
1684 proto_tree_add_item(dvb_s2_hdr_table_frame_assign_tree, hf_dvb_s2_table_frame_assign_id16, tvb, cur_off + new_off, 2, ENC_NA);
1685 new_off += 2;
1686 break;
1687 case 3 :
1688 proto_tree_add_item(dvb_s2_hdr_table_frame_assign_tree, hf_dvb_s2_table_frame_assign_id24, tvb, cur_off + new_off, 3, ENC_NA);
1689 new_off += 3;
1690 break;
1691 case 10 :
1692 proto_tree_add_item(dvb_s2_hdr_table_frame_assign_tree, hf_dvb_s2_table_frame_dynamic_tx_type, tvb, cur_off + new_off, 1, ENC_NA);
1693 new_off += 1;
1694 proto_tree_add_item(dvb_s2_hdr_table_frame_assign_tree, hf_dvb_s2_table_frame_assign_id8, tvb, cur_off + new_off, 1, ENC_NA);
1695 new_off += 1;
1696 break;
1697 case 11 :
1698 proto_tree_add_item(dvb_s2_hdr_table_frame_assign_tree, hf_dvb_s2_table_frame_dynamic_tx_type, tvb, cur_off + new_off, 1, ENC_NA);
1699 new_off += 1;
1700 proto_tree_add_item(dvb_s2_hdr_table_frame_assign_tree, hf_dvb_s2_table_frame_assign_id16, tvb, cur_off + new_off, 2, ENC_NA);
1701 new_off += 2;
1702 break;
1703 case 12 :
1704 proto_tree_add_item(dvb_s2_hdr_table_frame_assign_tree, hf_dvb_s2_table_frame_dynamic_tx_type, tvb, cur_off + new_off, 1, ENC_NA);
1705 new_off += 1;
1706 proto_tree_add_item(dvb_s2_hdr_table_frame_assign_tree, hf_dvb_s2_table_frame_assign_id24, tvb, cur_off + new_off, 3, ENC_NA);
1707 new_off += 3;
1708 break;
1710 proto_item_set_len(tf, new_off - assign_start_offset);
1712 proto_item_set_len(ti, new_off - frame_start_offset);
1714 return (table_len - DVB_S2_TABLE_HEADER_RCS2_LEN);
1717 static int dissect_dvb_s2_table_cmt(tvbuff_t *tvb, int cur_off, proto_tree *dvb_s2_hdr_table_tree)
1719 int entry_loop_count, cur_entry, entry_start_offset, new_off = 0;
1720 proto_item *ti;
1721 proto_tree *dvb_s2_hdr_table_entry_tree;
1723 entry_loop_count = tvb_get_uint8(tvb, cur_off + new_off);
1724 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_table_entry_loop_count, tvb, cur_off + new_off, 1, ENC_NA);
1725 new_off += 1;
1727 for(cur_entry=0 ; cur_entry<=entry_loop_count ; cur_entry++)
1729 entry_start_offset = new_off;
1730 ti = proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_table_entry, tvb, cur_off + new_off, -1, ENC_NA);
1731 dvb_s2_hdr_table_entry_tree = proto_item_add_subtree(ti, ett_dvb_s2_hdr_table_entry);
1732 proto_tree_add_item(dvb_s2_hdr_table_entry_tree, hf_dvb_s2_table_group_id, tvb, cur_off + new_off, 1, ENC_NA);
1733 new_off += 1;
1734 proto_tree_add_item(dvb_s2_hdr_table_entry_tree, hf_dvb_s2_table_entry_login_id, tvb, cur_off + new_off, 2, ENC_NA);
1735 new_off += 2;
1737 new_off += dissect_dvb_s2_table_correct_msg(tvb, cur_off + new_off, dvb_s2_hdr_table_entry_tree);
1738 proto_item_set_len(ti, new_off - entry_start_offset);
1741 if (dvb_s2_rcs_version == DVB_S2_RCS_TABLE_DECODING)
1743 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_table_crc32, tvb, cur_off + new_off, 4, ENC_NA);
1744 new_off += 4;
1747 return new_off;
1750 static int dissect_dvb_s2_table_tmst(tvbuff_t *tvb, int cur_off, proto_tree *dvb_s2_hdr_table_tree)
1752 int txmode_count, cur_txmode, new_off = 0;
1753 proto_item *ti;
1754 proto_tree *dvb_s2_hdr_table_txmode_tree;
1756 txmode_count = tvb_get_uint8(tvb, cur_off + new_off);
1757 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_table_tx_mode_count, tvb, cur_off + new_off, 1, ENC_NA);
1758 new_off += 1;
1760 for(cur_txmode=0 ; cur_txmode<txmode_count ; cur_txmode++)
1762 ti = proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_table_tx_mode, tvb, cur_off + new_off, DVB_S2_TABLE_TX_MODE_SIZE, ENC_NA);
1763 dvb_s2_hdr_table_txmode_tree = proto_item_add_subtree(ti, ett_dvb_s2_hdr_table_txmode);
1764 proto_tree_add_item(dvb_s2_hdr_table_txmode_tree, hf_dvb_s2_table_tx_mode_frame_length, tvb, cur_off + new_off, 1, ENC_NA);
1765 proto_tree_add_item(dvb_s2_hdr_table_txmode_tree, hf_dvb_s2_table_tx_mode_pilot_symbols, tvb, cur_off + new_off, 1, ENC_NA);
1766 proto_tree_add_item(dvb_s2_hdr_table_txmode_tree, hf_dvb_s2_table_tx_mode_modcod, tvb, cur_off + new_off, 1, ENC_NA);
1767 new_off += 1;
1770 if (dvb_s2_rcs_version == DVB_S2_RCS_TABLE_DECODING)
1772 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_table_crc32, tvb, cur_off + new_off, 4, ENC_NA);
1773 new_off += 4;
1775 return new_off;
1778 static int dissect_dvb_s2_table_tmst2(tvbuff_t *tvb, int cur_off, proto_tree *dvb_s2_hdr_table_tree)
1780 int txmode_count, cur_txmode, new_off = 0;
1781 proto_item *ti;
1782 proto_tree *dvb_s2_hdr_table_txmode_tree;
1784 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_table_common_sytem_margin, tvb, cur_off + new_off, 1, ENC_NA);
1785 new_off += 1;
1786 txmode_count = tvb_get_uint8(tvb, cur_off + new_off);
1787 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_table_tx_mode_count, tvb, cur_off + new_off, 1, ENC_NA);
1788 new_off += 1;
1790 for(cur_txmode=0 ; cur_txmode<txmode_count ; cur_txmode++)
1792 ti = proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_table_tx_mode, tvb, cur_off + new_off, DVB_S2_TABLE_TX_MODE_SIZE, ENC_NA);
1793 dvb_s2_hdr_table_txmode_tree = proto_item_add_subtree(ti, ett_dvb_s2_hdr_table_txmode);
1794 proto_tree_add_item(dvb_s2_hdr_table_txmode_tree, hf_dvb_s2_table_tx_mode_frame_length, tvb, cur_off + new_off, 1, ENC_NA);
1795 proto_tree_add_item(dvb_s2_hdr_table_txmode_tree, hf_dvb_s2_table_tx_mode_pilot_symbols, tvb, cur_off + new_off, 1, ENC_NA);
1796 proto_tree_add_item(dvb_s2_hdr_table_txmode_tree, hf_dvb_s2_table_tx_mode_modcod, tvb, cur_off + new_off, 1, ENC_NA);
1797 new_off += 1;
1798 proto_tree_add_item(dvb_s2_hdr_table_txmode_tree, hf_dvb_s2_table_tx_mode_modcod_system_margin, tvb, cur_off + new_off, 1, ENC_NA);
1799 new_off += 1;
1800 proto_tree_add_item(dvb_s2_hdr_table_txmode_tree, hf_dvb_s2_table_tx_mode_isi, tvb, cur_off + new_off, 1, ENC_NA);
1801 new_off += 1;
1803 return new_off;
1806 static int dissect_dvb_s2_table_bct(tvbuff_t *tvb, int cur_off, proto_tree *dvb_s2_hdr_table_tree)
1808 int txtype_count, cur_txtype, tx_format_data_length, uw_symbol_len, cur_uwsymbol, uwsegment_count, cur_uwsegment, cur_period, cpm_offset, new_off = 0;
1809 proto_item *ti;
1810 proto_tree *dvb_s2_hdr_table_txtype_tree, *dvb_s2_hdr_table_txtype_uwsegment_tree,
1811 *dvb_s2_hdr_table_txtype_ypattern_tree, *dvb_s2_hdr_table_txtype_wpattern_tree,
1812 *dvb_s2_hdr_table_txtype_uwsymbol_tree;
1813 uint8_t tx_format, tx_type, y_period, w_period, modulation_scheme, param_interleaver;
1815 txtype_count = tvb_get_uint8(tvb, cur_off + new_off);
1816 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_table_tx_type_loop_count, tvb, cur_off + new_off, 1, ENC_NA);
1817 new_off += 1;
1819 for(cur_txtype=0 ; cur_txtype<txtype_count ; cur_txtype++)
1821 tx_format_data_length = tvb_get_uint8(tvb, cur_off + new_off + 3);
1822 ti = proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_table_tx_type_branch, tvb, cur_off + new_off, tx_format_data_length + 4, ENC_NA);
1823 dvb_s2_hdr_table_txtype_tree = proto_item_add_subtree(ti, ett_dvb_s2_hdr_table_txtype);
1824 tx_type = tvb_get_uint8(tvb, cur_off + new_off);
1825 proto_tree_add_item(dvb_s2_hdr_table_txtype_tree, hf_dvb_s2_table_tx_type, tvb, cur_off + new_off, 1, ENC_NA);
1826 new_off += 1;
1827 proto_tree_add_item(dvb_s2_hdr_table_txtype_tree, hf_dvb_s2_table_tx_type_tx_content_type, tvb, cur_off + new_off, 1, ENC_NA);
1828 new_off += 1;
1829 tx_format = tvb_get_uint8(tvb, cur_off + new_off);
1830 proto_tree_add_item(dvb_s2_hdr_table_txtype_tree, hf_dvb_s2_table_tx_type_tx_format_class, tvb, cur_off + new_off, 1, ENC_NA);
1831 new_off += 1;
1832 proto_tree_add_item(dvb_s2_hdr_table_txtype_tree, hf_dvb_s2_table_tx_type_tx_format_data_length, tvb, cur_off + new_off, 1, ENC_NA);
1833 new_off += 1;
1834 switch(tx_format)
1836 case DVB_S2_TABLE_TXFORMAT_LMBT :
1837 proto_tree_add_item(dvb_s2_hdr_table_txtype_tree, hf_dvb_s2_table_tx_type_tx_block_size, tvb, cur_off + new_off, 1, ENC_NA);
1838 new_off += 1;
1839 proto_tree_add_item(dvb_s2_hdr_table_txtype_tree, hf_dvb_s2_table_tx_type_threshold_es_n0, tvb, cur_off + new_off, 1, ENC_NA);
1840 new_off += 1;
1841 proto_tree_add_item(dvb_s2_hdr_table_txtype_tree, hf_dvb_s2_table_tx_type_tx_start_offset_1, tvb, cur_off + new_off, 1, ENC_NA);
1842 new_off += 1;
1843 proto_tree_add_item(dvb_s2_hdr_table_txtype_tree, hf_dvb_s2_table_tx_type_tx_start_offset_2, tvb, cur_off + new_off, 3, ENC_NA);
1844 new_off += 3;
1845 if(tx_type > 127)
1847 proto_tree_add_item(dvb_s2_hdr_table_txtype_tree, hf_dvb_s2_table_tx_type_payload_size, tvb, cur_off + new_off, 2, ENC_NA);
1848 new_off += 2;
1849 modulation_scheme = tvb_get_uint8(tvb, cur_off + new_off);
1850 proto_tree_add_item(dvb_s2_hdr_table_txtype_tree, hf_dvb_s2_table_tx_type_modulation_scheme, tvb, cur_off + new_off, 1, ENC_NA);
1851 new_off += 1;
1852 proto_tree_add_item(dvb_s2_hdr_table_txtype_tree, hf_dvb_s2_table_tx_type_p, tvb, cur_off + new_off, 1, ENC_NA);
1853 new_off += 1;
1854 proto_tree_add_item(dvb_s2_hdr_table_txtype_tree, hf_dvb_s2_table_tx_type_q0, tvb, cur_off + new_off, 1, ENC_NA);
1855 new_off += 1;
1856 proto_tree_add_item(dvb_s2_hdr_table_txtype_tree, hf_dvb_s2_table_tx_type_q1, tvb, cur_off + new_off, 1, ENC_NA);
1857 new_off += 1;
1858 proto_tree_add_item(dvb_s2_hdr_table_txtype_tree, hf_dvb_s2_table_tx_type_q2, tvb, cur_off + new_off, 1, ENC_NA);
1859 new_off += 1;
1860 proto_tree_add_item(dvb_s2_hdr_table_txtype_tree, hf_dvb_s2_table_tx_type_q3, tvb, cur_off + new_off, 1, ENC_NA);
1861 new_off += 1;
1862 y_period = tvb_get_uint8(tvb, cur_off + new_off) & DVB_S2_TABLE_TX_TYPE_W_Y_PERIOD_MASK;
1863 proto_tree_add_item(dvb_s2_hdr_table_txtype_tree, hf_dvb_s2_table_tx_type_y_period, tvb, cur_off + new_off, 1, ENC_NA);
1864 new_off += 1;
1865 w_period = tvb_get_uint8(tvb, cur_off + new_off) & DVB_S2_TABLE_TX_TYPE_W_Y_PERIOD_MASK;
1866 proto_tree_add_item(dvb_s2_hdr_table_txtype_tree, hf_dvb_s2_table_tx_type_w_period, tvb, cur_off + new_off, 1, ENC_NA);
1867 new_off += 1;
1868 ti = proto_tree_add_item(dvb_s2_hdr_table_txtype_tree, hf_dvb_s2_table_tx_type_y_pattern, tvb, cur_off + new_off, y_period, ENC_NA);
1869 dvb_s2_hdr_table_txtype_ypattern_tree = proto_item_add_subtree(ti, ett_dvb_s2_hdr_table_txtype_ypattern);
1870 for(cur_period=0 ; cur_period<y_period ; cur_period++)
1872 proto_tree_add_item(dvb_s2_hdr_table_txtype_ypattern_tree, hf_dvb_s2_table_tx_type_y_pattern_bit, tvb, cur_off + new_off, 1, ENC_NA);
1873 new_off += 1;
1875 ti = proto_tree_add_item(dvb_s2_hdr_table_txtype_tree, hf_dvb_s2_table_tx_type_w_pattern, tvb, cur_off + new_off, w_period, ENC_NA);
1876 dvb_s2_hdr_table_txtype_wpattern_tree = proto_item_add_subtree(ti, ett_dvb_s2_hdr_table_txtype_wpattern);
1877 for(cur_period=0 ; cur_period<w_period ; cur_period++)
1879 proto_tree_add_item(dvb_s2_hdr_table_txtype_wpattern_tree, hf_dvb_s2_table_tx_type_w_pattern_bit, tvb, cur_off + new_off, 1, ENC_NA);
1880 new_off += 1;
1882 uw_symbol_len = 0;
1883 uw_symbol_len += tvb_get_uint8(tvb, cur_off + new_off);
1884 proto_tree_add_item(dvb_s2_hdr_table_txtype_tree, hf_dvb_s2_table_tx_type_preamble_len, tvb, cur_off + new_off, 1, ENC_NA);
1885 new_off += 1;
1886 uw_symbol_len += tvb_get_uint8(tvb, cur_off + new_off);
1887 proto_tree_add_item(dvb_s2_hdr_table_txtype_tree, hf_dvb_s2_table_tx_type_postamble_len, tvb, cur_off + new_off, 1, ENC_NA);
1888 new_off += 1;
1889 proto_tree_add_item(dvb_s2_hdr_table_txtype_tree, hf_dvb_s2_table_tx_type_pilot_period, tvb, cur_off + new_off, 2, ENC_NA);
1890 new_off += 2;
1891 uw_symbol_len += tvb_get_uint8(tvb, cur_off + new_off);
1892 proto_tree_add_item(dvb_s2_hdr_table_txtype_tree, hf_dvb_s2_table_tx_type_pilot_block_len, tvb, cur_off + new_off, 1, ENC_NA);
1893 new_off += 1;
1894 proto_tree_add_item(dvb_s2_hdr_table_txtype_tree, hf_dvb_s2_table_tx_type_pilot_sum, tvb, cur_off + new_off, 1, ENC_NA);
1895 new_off += 1;
1896 ti = proto_tree_add_item(dvb_s2_hdr_table_txtype_tree, hf_dvb_s2_table_tx_type_uw_symbol, tvb, cur_off + new_off, uw_symbol_len, ENC_NA);
1897 dvb_s2_hdr_table_txtype_uwsymbol_tree = proto_item_add_subtree(ti, ett_dvb_s2_hdr_table_txtype_uwsymbol);
1898 for(cur_uwsymbol=0 ; cur_uwsymbol<uw_symbol_len ; cur_uwsymbol++)
1900 switch(modulation_scheme)
1902 case DVB_S2_TABLE_MODULATION_SCHEME_QPSK:
1903 proto_tree_add_item(dvb_s2_hdr_table_txtype_uwsymbol_tree, hf_dvb_s2_table_tx_type_uw_symbol_qpsk,
1904 tvb, cur_off + new_off, 1, ENC_NA);
1905 new_off += 1;
1906 break;
1907 case DVB_S2_TABLE_MODULATION_SCHEME_8PSK:
1908 proto_tree_add_item(dvb_s2_hdr_table_txtype_uwsymbol_tree, hf_dvb_s2_table_tx_type_uw_symbol_8psk,
1909 tvb, cur_off + new_off, 1, ENC_NA);
1910 new_off += 1;
1911 break;
1912 case DVB_S2_TABLE_MODULATION_SCHEME_16QAM:
1913 proto_tree_add_item(dvb_s2_hdr_table_txtype_uwsymbol_tree, hf_dvb_s2_table_tx_type_uw_symbol_16qam,
1914 tvb, cur_off + new_off, 1, ENC_NA);
1915 new_off += 1;
1916 break;
1917 default:
1918 proto_tree_add_item(dvb_s2_hdr_table_txtype_uwsymbol_tree, hf_dvb_s2_table_tx_type_uw_symbol_unit,
1919 tvb, cur_off + new_off, 1, ENC_NA);
1920 new_off += 1;
1921 break;
1925 else
1927 proto_tree_add_item(dvb_s2_hdr_table_txtype_tree, hf_dvb_s2_table_tx_type_waveform_id, tvb, cur_off + new_off, 1, ENC_NA);
1928 new_off += 1;
1930 break;
1931 case DVB_S2_TABLE_TXFORMAT_CPMBT :
1932 cpm_offset = new_off;
1933 proto_tree_add_item(dvb_s2_hdr_table_txtype_tree, hf_dvb_s2_table_tx_type_tx_block_size, tvb, cur_off + new_off, 1, ENC_NA);
1934 new_off += 1;
1935 proto_tree_add_item(dvb_s2_hdr_table_txtype_tree, hf_dvb_s2_table_tx_type_threshold_es_n0, tvb, cur_off + new_off, 1, ENC_NA);
1936 new_off += 1;
1937 proto_tree_add_item(dvb_s2_hdr_table_txtype_tree, hf_dvb_s2_table_tx_type_tx_start_offset, tvb, cur_off + new_off, 4, ENC_NA);
1938 new_off += 4;
1939 if(tx_type > 127)
1941 proto_tree_add_item(dvb_s2_hdr_table_txtype_tree, hf_dvb_s2_table_tx_type_modulation_mh, tvb, cur_off + new_off, 1, ENC_NA);
1942 proto_tree_add_item(dvb_s2_hdr_table_txtype_tree, hf_dvb_s2_table_tx_type_modulation_ph, tvb, cur_off + new_off, 1, ENC_NA);
1943 proto_tree_add_item(dvb_s2_hdr_table_txtype_tree, hf_dvb_s2_table_tx_type_modulation_type, tvb, cur_off + new_off, 1, ENC_NA);
1944 new_off += 1;
1945 proto_tree_add_item(dvb_s2_hdr_table_txtype_tree, hf_dvb_s2_table_tx_type_alpha_rc, tvb, cur_off + new_off, 1, ENC_NA);
1946 new_off += 1;
1947 proto_tree_add_item(dvb_s2_hdr_table_txtype_tree, hf_dvb_s2_table_tx_type_code_rate, tvb, cur_off + new_off, 1, ENC_NA);
1948 proto_tree_add_item(dvb_s2_hdr_table_txtype_tree, hf_dvb_s2_table_tx_type_constraint_length_k, tvb, cur_off + new_off, 1, ENC_NA);
1949 new_off += 1;
1950 uw_symbol_len = ( tvb_get_uint8(tvb, cur_off + new_off) * 2 ) / 8 + 1;
1951 proto_tree_add_item(dvb_s2_hdr_table_txtype_tree, hf_dvb_s2_table_tx_type_uw_length, tvb, cur_off + new_off, 1, ENC_NA);
1952 new_off += 1;
1953 proto_tree_add_item(dvb_s2_hdr_table_txtype_tree, hf_dvb_s2_table_tx_type_uw_symbol, tvb, cur_off + new_off, uw_symbol_len, ENC_NA);
1954 new_off += uw_symbol_len;
1955 uwsegment_count = tvb_get_uint8(tvb, cur_off + new_off);
1956 proto_tree_add_item(dvb_s2_hdr_table_txtype_tree, hf_dvb_s2_table_tx_type_nbr_uw_segments, tvb, cur_off + new_off, 1, ENC_NA);
1957 new_off += 1;
1958 for(cur_uwsegment=0 ; cur_uwsegment<uwsegment_count ; cur_uwsegment++)
1960 ti = proto_tree_add_item(dvb_s2_hdr_table_txtype_tree, hf_dvb_s2_table_tx_type_uw_segment, tvb, cur_off + new_off,
1961 DVB_S2_TABLE_TX_TYPE_UW_SEGMENT_SIZE, ENC_NA);
1962 dvb_s2_hdr_table_txtype_uwsegment_tree = proto_item_add_subtree(ti, ett_dvb_s2_hdr_table_txtype_uwsegment);
1963 proto_tree_add_item(dvb_s2_hdr_table_txtype_uwsegment_tree, hf_dvb_s2_table_tx_type_uw_segment_start, tvb, cur_off + new_off, 2, ENC_NA);
1964 new_off += 2;
1965 proto_tree_add_item(dvb_s2_hdr_table_txtype_uwsegment_tree, hf_dvb_s2_table_tx_type_uw_segment_length, tvb, cur_off + new_off, 1, ENC_NA);
1966 new_off += 1;
1968 param_interleaver = tvb_get_uint8(tvb, cur_off + new_off);
1969 proto_tree_add_item(dvb_s2_hdr_table_txtype_tree, hf_dvb_s2_table_tx_type_param_interleaver, tvb, cur_off + new_off, 1, ENC_NA);
1970 new_off += 1;
1971 if(param_interleaver)
1973 proto_tree_add_item(dvb_s2_hdr_table_txtype_tree, hf_dvb_s2_table_tx_type_n, tvb, cur_off + new_off, 1, ENC_NA);
1974 new_off += 1;
1975 proto_tree_add_item(dvb_s2_hdr_table_txtype_tree, hf_dvb_s2_table_tx_type_s, tvb, cur_off + new_off, 1, ENC_NA);
1976 new_off += 1;
1977 proto_tree_add_item(dvb_s2_hdr_table_txtype_tree, hf_dvb_s2_table_tx_type_p_interleaver, tvb, cur_off + new_off, 1, ENC_NA);
1978 new_off += 1;
1979 proto_tree_add_item(dvb_s2_hdr_table_txtype_tree, hf_dvb_s2_table_tx_type_n1_12, tvb, cur_off + new_off, 1, ENC_NA);
1980 new_off += 1;
1981 proto_tree_add_item(dvb_s2_hdr_table_txtype_tree, hf_dvb_s2_table_tx_type_k1_12, tvb, cur_off + new_off, 1, ENC_NA);
1982 new_off += 1;
1983 proto_tree_add_item(dvb_s2_hdr_table_txtype_tree, hf_dvb_s2_table_tx_type_K2_12, tvb, cur_off + new_off, 1, ENC_NA);
1984 new_off += 1;
1985 proto_tree_add_item(dvb_s2_hdr_table_txtype_tree, hf_dvb_s2_table_tx_type_K3_12, tvb, cur_off + new_off, 1, ENC_NA);
1986 new_off += 1;
1988 else
1990 proto_tree_add_item(dvb_s2_hdr_table_txtype_tree, hf_dvb_s2_table_tx_type_pi_i, tvb, cur_off + new_off,
1991 tx_format_data_length - (new_off - cpm_offset), ENC_NA);
1992 new_off += tx_format_data_length - (new_off - cpm_offset);
1995 break;
1996 case DVB_S2_TABLE_TXFORMAT_CT :
1997 case DVB_S2_TABLE_TXFORMAT_SSLMBT :
1998 default :
1999 proto_tree_add_item(dvb_s2_hdr_table_txtype_tree, hf_dvb_s2_table_tx_type_tx_format_data, tvb, cur_off + new_off, tx_format_data_length, ENC_NA);
2000 new_off += tx_format_data_length;
2001 break;
2004 return new_off;
2007 static int dissect_dvb_s2_table_fat(tvbuff_t *tvb, int cur_off, proto_tree *dvb_s2_hdr_table_tree, packet_info *pinfo)
2009 int desc_loop_count, new_off = 0;
2011 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_table_desc_loop_count, tvb, cur_off + new_off, 1, ENC_NA);
2012 desc_loop_count = tvb_get_uint8(tvb, cur_off + new_off);
2013 new_off += 1;
2015 new_off += dissect_dvb_s2_table_desc(tvb, cur_off + new_off, dvb_s2_hdr_table_tree, desc_loop_count, DVB_S2_TABLE_FAT, pinfo);
2017 return new_off;
2020 static int dissect_dvb_s2_table_fct2(tvbuff_t *tvb, int cur_off, proto_tree *dvb_s2_hdr_table_tree)
2022 int frametype_count, cur_frametype, frame_type_start_off, gridrepeat_count, cur_gridrepeat, section_count, cur_section, new_off = 0;
2023 proto_item *ti, *tf;
2024 proto_tree *dvb_s2_hdr_table_frametype_tree, *dvb_s2_hdr_table_frametype_section_tree;
2026 frametype_count = tvb_get_uint8(tvb, cur_off + new_off);
2027 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_table_frame_type_loop_count, tvb, cur_off + new_off, 1, ENC_NA);
2028 new_off += 1;
2030 for(cur_frametype=0 ; cur_frametype<=frametype_count ; cur_frametype++)
2032 frame_type_start_off = new_off;
2033 ti = proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_table_frame_type_branch, tvb, cur_off + new_off, -1, ENC_NA);
2034 dvb_s2_hdr_table_frametype_tree = proto_item_add_subtree(ti, ett_dvb_s2_hdr_table_frametype);
2035 proto_tree_add_item(dvb_s2_hdr_table_frametype_tree, hf_dvb_s2_table_frame_type, tvb, cur_off + new_off, 1, ENC_NA);
2036 new_off += 1;
2037 proto_tree_add_item(dvb_s2_hdr_table_frametype_tree, hf_dvb_s2_table_frame_type_frame_duration, tvb, cur_off + new_off, 4, ENC_NA);
2038 new_off += 4;
2039 proto_tree_add_item(dvb_s2_hdr_table_frametype_tree, hf_dvb_s2_table_frame_type_tx_format_class, tvb, cur_off + new_off, 1, ENC_NA);
2040 new_off += 1;
2041 proto_tree_add_item(dvb_s2_hdr_table_frametype_tree, hf_dvb_s2_table_frame_type_btu_duration, tvb, cur_off + new_off, 3, ENC_NA);
2042 new_off += 3;
2043 proto_tree_add_item(dvb_s2_hdr_table_frametype_tree, hf_dvb_s2_table_frame_type_btu_carrier_bw, tvb, cur_off + new_off, 3, ENC_NA);
2044 new_off += 3;
2045 proto_tree_add_item(dvb_s2_hdr_table_frametype_tree, hf_dvb_s2_table_frame_type_btu_symbol_rate, tvb, cur_off + new_off, 3, ENC_NA);
2046 new_off += 3;
2047 proto_tree_add_item(dvb_s2_hdr_table_frametype_tree, hf_dvb_s2_table_frame_type_time_unit_count, tvb, cur_off + new_off, 2, ENC_NA);
2048 new_off += 2;
2049 gridrepeat_count = tvb_get_uint8(tvb, cur_off + new_off);
2050 proto_tree_add_item(dvb_s2_hdr_table_frametype_tree, hf_dvb_s2_table_frame_type_grid_repeat_count, tvb, cur_off + new_off, 1, ENC_NA);
2051 new_off += 1;
2052 for(cur_gridrepeat=0 ; cur_gridrepeat<gridrepeat_count ; cur_gridrepeat++)
2054 proto_tree_add_item(dvb_s2_hdr_table_frametype_tree, hf_dvb_s2_table_frame_type_grid_frequency_offset, tvb, cur_off + new_off, 3, ENC_NA);
2055 new_off += 3;
2057 section_count = tvb_get_uint8(tvb, cur_off + new_off);
2058 proto_tree_add_item(dvb_s2_hdr_table_frametype_tree, hf_dvb_s2_table_frame_type_section_loop_count, tvb, cur_off + new_off, 1, ENC_NA);
2059 new_off += 1;
2060 for(cur_section=0 ; cur_section<=section_count ; cur_section++)
2062 tf = proto_tree_add_item(dvb_s2_hdr_table_frametype_tree, hf_dvb_s2_table_frame_type_section, tvb, cur_off + new_off, 4, ENC_NA);
2063 dvb_s2_hdr_table_frametype_section_tree = proto_item_add_subtree(tf, ett_dvb_s2_hdr_table_frametype_section);
2064 proto_tree_add_item(dvb_s2_hdr_table_frametype_section_tree, hf_dvb_s2_table_frame_type_section_default_tx_type, tvb, cur_off + new_off, 1, ENC_NA);
2065 new_off += 1;
2066 proto_tree_add_item(dvb_s2_hdr_table_frametype_section_tree, hf_dvb_s2_table_frame_type_section_fix_acc_method, tvb, cur_off + new_off, 1, ENC_NA);
2067 new_off += 1;
2068 proto_tree_add_item(dvb_s2_hdr_table_frametype_section_tree, hf_dvb_s2_table_frame_type_section_repeat_count, tvb, cur_off + new_off, 2, ENC_NA);
2069 new_off += 2;
2071 proto_item_set_len(ti, new_off - frame_type_start_off);
2074 return new_off;
2077 static int dissect_dvb_s2_table_fct(tvbuff_t *tvb, int cur_off, proto_tree *dvb_s2_hdr_table_tree)
2079 int frame_ID_count, cur_frame_ID, frame_type_start_off, timeslot_loop_count, cur_timeslot, new_off = 0;
2080 proto_item *ti, *tf;
2081 proto_tree *dvb_s2_hdr_table_frame_ID_tree, *dvb_s2_hdr_table_frame_ID_timeslot_tree;
2083 frame_ID_count = tvb_get_uint8(tvb, cur_off + new_off);
2084 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_table_frame_ID_loop_count, tvb, cur_off + new_off, 1, ENC_NA);
2085 new_off += 1;
2086 for(cur_frame_ID=0 ; cur_frame_ID<=frame_ID_count ; cur_frame_ID++)
2088 frame_type_start_off = new_off;
2089 ti = proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_table_frame_ID_branch, tvb, cur_off + new_off, -1, ENC_NA);
2090 dvb_s2_hdr_table_frame_ID_tree = proto_item_add_subtree(ti, ett_dvb_s2_hdr_table_frame_ID);
2091 proto_tree_add_item(dvb_s2_hdr_table_frame_ID_tree, hf_dvb_s2_table_frame_ID, tvb, cur_off + new_off, 1, ENC_NA);
2092 new_off += 1;
2093 proto_tree_add_item(dvb_s2_hdr_table_frame_ID_tree, hf_dvb_s2_table_frame_ID_frame_duration, tvb, cur_off + new_off, 4, ENC_NA);
2094 new_off += 4;
2095 proto_tree_add_item(dvb_s2_hdr_table_frame_ID_tree, hf_dvb_s2_table_frame_ID_total_timeslot_count, tvb, cur_off + new_off, 2, ENC_NA);
2096 new_off += 2;
2097 proto_tree_add_item(dvb_s2_hdr_table_frame_ID_tree, hf_dvb_s2_table_frame_ID_start_timeslot_number, tvb, cur_off + new_off, 2, ENC_NA);
2098 new_off += 2;
2099 timeslot_loop_count = tvb_get_uint8(tvb, cur_off + new_off);
2100 proto_tree_add_item(dvb_s2_hdr_table_frame_ID_tree, hf_dvb_s2_table_frame_ID_timeslot_loop_count, tvb, cur_off + new_off, 1, ENC_NA);
2101 new_off += 1;
2102 for(cur_timeslot=0 ; cur_timeslot<=timeslot_loop_count ; cur_timeslot++)
2104 tf = proto_tree_add_item(dvb_s2_hdr_table_frame_ID_tree, hf_dvb_s2_table_frame_ID_timeslot, tvb, cur_off + new_off, 9, ENC_NA);
2105 dvb_s2_hdr_table_frame_ID_timeslot_tree = proto_item_add_subtree(tf, ett_dvb_s2_hdr_table_frame_ID_timeslot);
2106 proto_tree_add_item(dvb_s2_hdr_table_frame_ID_timeslot_tree, hf_dvb_s2_table_frame_ID_timeslot_timeslot_frequency_offset, tvb, cur_off + new_off, 3, ENC_NA);
2107 new_off += 3;
2108 proto_tree_add_item(dvb_s2_hdr_table_frame_ID_timeslot_tree, hf_dvb_s2_table_frame_ID_timeslot_timeslot_time_offset, tvb, cur_off + new_off, 4, ENC_NA);
2109 new_off += 4;
2110 proto_tree_add_item(dvb_s2_hdr_table_frame_ID_timeslot_tree, hf_dvb_s2_table_frame_ID_timeslot_timeslot_id, tvb, cur_off + new_off, 1, ENC_NA);
2111 new_off += 1;
2112 proto_tree_add_item(dvb_s2_hdr_table_frame_ID_timeslot_tree, hf_dvb_s2_table_frame_ID_timeslot_repeat_count, tvb, cur_off + new_off, 1, ENC_NA);
2113 new_off += 1;
2115 proto_item_set_len(ti, new_off - frame_type_start_off);
2117 if (dvb_s2_rcs_version == DVB_S2_RCS_TABLE_DECODING)
2119 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_table_crc32, tvb, cur_off + new_off, 4, ENC_NA);
2120 new_off += 4;
2122 return new_off;
2125 static int dissect_dvb_s2_table_spt(tvbuff_t *tvb, int cur_off, proto_tree *dvb_s2_hdr_table_tree)
2127 int satellite_count, cur_satellite, new_off = 0;
2128 proto_item *ti;
2129 proto_tree *dvb_s2_hdr_table_satellite_tree;
2131 satellite_count = tvb_get_uint8(tvb, cur_off + new_off);
2132 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_table_satellite_loop_count, tvb, cur_off + new_off, 1, ENC_NA);
2133 new_off += 1;
2135 for(cur_satellite=0 ; cur_satellite<=satellite_count ; cur_satellite++)
2137 ti = proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_table_satellite, tvb, cur_off + new_off, DVB_S2_TABLE_SAT_SIZE, ENC_NA);
2138 dvb_s2_hdr_table_satellite_tree = proto_item_add_subtree(ti, ett_dvb_s2_hdr_table_satellite);
2139 proto_tree_add_item(dvb_s2_hdr_table_satellite_tree, hf_dvb_s2_table_satellite_id, tvb, cur_off + new_off, 1, ENC_NA);
2140 new_off += 1;
2141 proto_tree_add_item(dvb_s2_hdr_table_satellite_tree, hf_dvb_s2_table_satellite_x_coordinate, tvb, cur_off + new_off, 4, ENC_NA);
2142 new_off += 4;
2143 proto_tree_add_item(dvb_s2_hdr_table_satellite_tree, hf_dvb_s2_table_satellite_y_coordinate, tvb, cur_off + new_off, 4, ENC_NA);
2144 new_off += 4;
2145 proto_tree_add_item(dvb_s2_hdr_table_satellite_tree, hf_dvb_s2_table_satellite_z_coordinate, tvb, cur_off + new_off, 4, ENC_NA);
2146 new_off += 4;
2148 if (dvb_s2_rcs_version == DVB_S2_RCS_TABLE_DECODING)
2150 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_table_crc32, tvb, cur_off + new_off, 4, ENC_NA);
2151 new_off += 4;
2153 return new_off;
2156 static int dissect_dvb_s2_table_smt(tvbuff_t *tvb, int cur_off, proto_tree *dvb_s2_hdr_table_tree)
2158 int new_off = 0;
2160 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_table_smt_id, tvb, cur_off + new_off, 1, ENC_NA);
2161 new_off += 1;
2162 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_table_smt_section_syntax_indicator, tvb, cur_off + new_off, 2, ENC_NA);
2163 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_table_smt_futur_use, tvb, cur_off + new_off, 2, ENC_NA);
2164 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_table_smt_reserved, tvb, cur_off + new_off, 2, ENC_NA);
2165 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_table_smt_section_length, tvb, cur_off + new_off, 2, ENC_NA);
2166 new_off += 2;
2167 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_table_smt_esn0, tvb, cur_off + new_off, 2, ENC_NA);
2168 new_off += 2;
2169 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_table_smt_modcod, tvb, cur_off + new_off, 1, ENC_NA);
2170 new_off += 1;
2171 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_table_crc32, tvb, cur_off + new_off, DVB_S2_TABLE_CRC32_LEN, ENC_NA);
2172 new_off += 4;
2174 return new_off;
2177 static int dissect_dvb_s2_table_nit_rmt(tvbuff_t *tvb, int cur_off, proto_tree *dvb_s2_hdr_table_tree, uint8_t table_id, packet_info *pinfo)
2179 int desc_off, desc_count, max_multiplex_off, mux_start_off, new_off = 0;
2180 uint16_t network_descriptors_length, multiplex_streams_spec_length, transport_descriptors_length;
2181 proto_item *ti;
2182 proto_tree *dvb_s2_hdr_table_multiplex_tree;
2184 network_descriptors_length = tvb_get_ntohs(tvb, cur_off + new_off) & DVB_S2_TABLE_NETWORK_DESC_LENGTH_MASK;
2185 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_table_network_descriptors_length, tvb, cur_off + new_off, 2, ENC_NA);
2186 new_off += 2;
2187 //proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_table_network_descriptors, tvb, cur_off + new_off, network_descriptors_length, ENC_NA);
2188 //new_off += network_descriptors_length;
2190 /* calculate descriptors_count */
2191 desc_off=0;
2192 for(desc_count=0 ; desc_off<network_descriptors_length ; desc_count++){
2193 desc_off += tvb_get_uint8(tvb, cur_off + new_off + desc_off + 1) + 2;
2196 new_off += dissect_dvb_s2_table_desc(tvb, cur_off + new_off, dvb_s2_hdr_table_tree, desc_count - 1, table_id, pinfo);
2198 multiplex_streams_spec_length = tvb_get_ntohs(tvb, cur_off + new_off) & DVB_S2_TABLE_MULTIPLEX_STREAMS_LENGTH_MASK;
2199 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_table_multiplex_streams_spec_length, tvb, cur_off + new_off, 2, ENC_NA);
2200 new_off += 2;
2201 //proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_table_multiplex_streams_spec, tvb, cur_off + new_off, multiplex_streams_spec_length, ENC_NA);
2202 //new_off += multiplex_streams_spec_length;
2204 max_multiplex_off = new_off + multiplex_streams_spec_length;
2205 while(new_off < max_multiplex_off)
2207 mux_start_off = new_off;
2208 ti = proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_table_multiplex, tvb, cur_off + new_off, -1, ENC_NA);
2209 dvb_s2_hdr_table_multiplex_tree = proto_item_add_subtree(ti, ett_dvb_s2_hdr_table_multiplex);
2210 proto_tree_add_item(dvb_s2_hdr_table_multiplex_tree, hf_dvb_s2_table_multiplex_forward_multiplex, tvb, cur_off + new_off, 2, ENC_NA);
2211 new_off += 2;
2212 if(table_id == DVB_S2_TABLE_NIT)
2214 proto_tree_add_item(dvb_s2_hdr_table_multiplex_tree, hf_dvb_s2_table_multiplex_original_network_id, tvb, cur_off + new_off, 2, ENC_NA);
2215 new_off += 2;
2217 else
2219 proto_tree_add_item(dvb_s2_hdr_table_multiplex_tree, hf_dvb_s2_table_multiplex_reward_multiplex, tvb, cur_off + new_off, 2, ENC_NA);
2220 new_off += 2;
2222 transport_descriptors_length = tvb_get_ntohs(tvb, cur_off + new_off) & DVB_S2_TABLE_MULTIPLEX_TRANSPORT_DESC_LENGTH_MASK;
2223 proto_tree_add_item(dvb_s2_hdr_table_multiplex_tree, hf_dvb_s2_table_multiplex_transport_descriptors_length, tvb, cur_off + new_off, 2, ENC_NA);
2224 new_off += 2;
2225 /* calculate descriptors_count */
2226 desc_off=0;
2227 for(desc_count=0 ; desc_off<transport_descriptors_length ; desc_count++)
2228 desc_off += tvb_get_uint8(tvb, cur_off + new_off + desc_off + 1) + 2;
2229 new_off += dissect_dvb_s2_table_desc(tvb, cur_off + new_off, dvb_s2_hdr_table_multiplex_tree, desc_count - 1, table_id, pinfo);
2230 proto_item_set_len(ti, new_off - mux_start_off);
2233 if (dvb_s2_rcs_version == DVB_S2_RCS_TABLE_DECODING)
2235 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_table_crc32, tvb, cur_off + new_off, 4, ENC_NA);
2236 new_off += 4;
2239 return new_off;
2242 static int dissect_dvb_s2_table_mmt2(tvbuff_t *tvb, int cur_off, proto_tree *dvb_s2_hdr_table_tree)
2244 int protocol_count, cur_protocol, pt_start_off, ms_count, cur_ms, ms_start_off, exclusion_count, cur_exclusion, new_off = 0;
2245 proto_item *ti_pt, *ti_ms, *ti_exc;
2246 proto_tree *dvb_s2_hdr_table_protocol_tree, *dvb_s2_hdr_table_protocol_ms_tree, *dvb_s2_hdr_table_protocol_ms_excl_tree;
2247 uint8_t address_size;
2249 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_table_svn_number, tvb, cur_off + new_off, 2, ENC_NA);
2250 new_off += 2;
2251 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_table_svn_prefix_size, tvb, cur_off + new_off, 1, ENC_NA);
2252 new_off += 1;
2253 protocol_count = tvb_get_uint8(tvb, cur_off + new_off);
2254 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_table_pt_count, tvb, cur_off + new_off, 1, ENC_NA);
2255 new_off += 1;
2257 for(cur_protocol=0 ; cur_protocol<=protocol_count ; cur_protocol++)
2259 pt_start_off = new_off;
2260 ti_pt = proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_table_protocol, tvb, cur_off + new_off, -1, ENC_NA);
2261 dvb_s2_hdr_table_protocol_tree = proto_item_add_subtree(ti_pt, ett_dvb_s2_hdr_table_pt);
2262 proto_tree_add_item(dvb_s2_hdr_table_protocol_tree, hf_dvb_s2_table_pt_protocol_type, tvb, cur_off + new_off, 2, ENC_NA);
2263 new_off += 1;
2264 address_size = tvb_get_uint8(tvb, cur_off + new_off);
2265 proto_tree_add_item(dvb_s2_hdr_table_protocol_tree, hf_dvb_s2_table_pt_address_size, tvb, cur_off + new_off, 1, ENC_NA);
2266 new_off += 1;
2267 ms_count = tvb_get_uint8(tvb, cur_off + new_off);
2268 proto_tree_add_item(dvb_s2_hdr_table_protocol_tree, hf_dvb_s2_table_pt_mapping_sections, tvb, cur_off + new_off, 1, ENC_NA);
2269 new_off += 1;
2270 for(cur_ms=0 ; cur_ms<=ms_count ; cur_ms++)
2272 ms_start_off = new_off;
2273 ti_ms = proto_tree_add_item(dvb_s2_hdr_table_protocol_tree, hf_dvb_s2_table_pt_mapping_section, tvb, cur_off + new_off, -1, ENC_NA);
2274 dvb_s2_hdr_table_protocol_ms_tree = proto_item_add_subtree(ti_ms, ett_dvb_s2_hdr_table_pt_ms);
2275 proto_tree_add_item(dvb_s2_hdr_table_protocol_ms_tree, hf_dvb_s2_table_pt_ms_inclusion_start, tvb, cur_off + new_off, address_size, ENC_NA);
2276 new_off += address_size;
2277 proto_tree_add_item(dvb_s2_hdr_table_protocol_ms_tree, hf_dvb_s2_table_pt_ms_inclusion_end, tvb, cur_off + new_off, address_size, ENC_NA);
2278 new_off += address_size;
2279 exclusion_count = tvb_get_uint8(tvb, cur_off + new_off);
2280 proto_tree_add_item(dvb_s2_hdr_table_protocol_ms_tree, hf_dvb_s2_table_pt_ms_exclusions, tvb, cur_off + new_off, 1, ENC_NA);
2281 new_off += 1;
2282 for(cur_exclusion=0 ; cur_exclusion<=exclusion_count ; cur_exclusion++)
2284 ti_exc = proto_tree_add_item(dvb_s2_hdr_table_protocol_ms_tree, hf_dvb_s2_table_pt_ms_exclusion, tvb, cur_off + new_off, 2 * address_size, ENC_NA);
2285 dvb_s2_hdr_table_protocol_ms_excl_tree = proto_item_add_subtree(ti_exc, ett_dvb_s2_hdr_table_pt_ms_exclusion);
2286 proto_tree_add_item(dvb_s2_hdr_table_protocol_ms_excl_tree, hf_dvb_s2_table_pt_ms_exclusion_start, tvb, cur_off + new_off, address_size, ENC_NA);
2287 new_off += address_size;
2288 proto_tree_add_item(dvb_s2_hdr_table_protocol_ms_excl_tree, hf_dvb_s2_table_pt_ms_exclusion_end, tvb, cur_off + new_off, address_size, ENC_NA);
2289 new_off += address_size;
2291 proto_tree_add_item(dvb_s2_hdr_table_protocol_ms_tree, hf_dvb_s2_table_pt_ms_mac24_base, tvb, cur_off + new_off, 3, ENC_NA);
2292 new_off += 3;
2293 proto_tree_add_item(dvb_s2_hdr_table_protocol_ms_tree, hf_dvb_s2_table_pt_ms_mcast_prefix_size, tvb, cur_off + new_off, 1, ENC_NA);
2294 new_off += 1;
2295 proto_item_set_len(ti_ms, new_off - ms_start_off);
2297 proto_item_set_len(ti_pt, new_off - pt_start_off);
2299 return new_off;
2302 static int dissect_dvb_s2_table(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
2304 int new_off = 0;
2305 int cur_off = 0;
2306 uint16_t data_len = 0;
2307 uint8_t table_id = 0;
2308 uint8_t mac_1 = 0;
2309 uint8_t mac_2 = 0;
2310 uint8_t mac_3 = 0;
2311 uint8_t mac_4 = 0;
2312 uint8_t mac_5 = 0;
2313 uint8_t mac_6 = 0;
2314 bool dvb_s2_isUnicast = true;
2316 proto_item *ti = NULL;
2317 proto_tree *dvb_s2_hdr_table_tree;
2319 ti = proto_tree_add_item(tree, proto_dvb_s2_table, tvb, 0, -1, ENC_NA);
2320 dvb_s2_hdr_table_tree = proto_item_add_subtree(ti, ett_dvb_s2_hdr_table);
2321 table_id = tvb_get_uint8(tvb, cur_off + new_off);
2322 col_append_str(pinfo->cinfo, COL_INFO, val_to_str_const(table_id, tabletype, "Unknown table id" ));
2323 col_append_str(pinfo->cinfo, COL_INFO, " ");
2324 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_table_id, tvb, cur_off + new_off, 1, ENC_NA);
2325 new_off += 1;
2327 /* parse GSE table structure header for all RCS2 tables */
2328 if (dvb_s2_rcs_version == DVB_S2_RCS2_TABLE_DECODING) {
2329 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_table_network_interactive_id, tvb, cur_off + new_off, 2, ENC_NA);
2330 new_off += 2;
2331 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_table_reserved2, tvb, cur_off + new_off, 1, ENC_NA);
2332 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_table_version_number, tvb, cur_off + new_off, 1, ENC_NA);
2333 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_table_current_next_indicator, tvb, cur_off + new_off, 1, ENC_NA);
2334 new_off += 1;
2337 if (table_id == DVB_S2_TABLE_TDT) {
2338 /* parse TDT */
2339 /* parse DSM-CC header only for RCS */
2340 if (dvb_s2_rcs_version == DVB_S2_RCS_TABLE_DECODING) {
2341 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_section_syntax_indic, tvb, cur_off + new_off, 1, ENC_NA);
2342 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_reserved_future_use, tvb, cur_off + new_off, 1, ENC_NA);
2343 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_reserved_tdt, tvb, cur_off + new_off, 1, ENC_NA);
2344 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_section_length, tvb, cur_off + new_off, 1, ENC_NA);
2345 new_off += 2;
2347 /* parse the TDT table itself for both RCS and RCS2 */
2348 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_tdt_date, tvb, cur_off + new_off, 2, ENC_NA);
2349 new_off += 2;
2350 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_tdt_hour, tvb, cur_off + new_off, 1, ENC_NA);
2351 new_off += 1;
2352 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_tdt_minute, tvb, cur_off + new_off, 1, ENC_NA);
2353 new_off += 1;
2354 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_tdt_second, tvb, cur_off + new_off, 1, ENC_NA);
2355 new_off += 1;
2356 }else if (table_id == DVB_S2_TABLE_TIM && dvb_s2_rcs_version == DVB_S2_RCS_TABLE_DECODING) {
2357 /* parse TIMu with DSM-CC header only for RCS */
2358 /* parse DSM-CC header */
2359 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_section_syntax_indic, tvb, cur_off + new_off, 1, ENC_NA);
2360 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_private_indicator, tvb, cur_off + new_off, 1, ENC_NA);
2361 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_reserved_1, tvb, cur_off + new_off, 1, ENC_NA);
2362 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_section_length , tvb, cur_off + new_off, 2, ENC_NA);
2363 new_off +=2;
2364 mac_6 = tvb_get_uint8(tvb, cur_off + new_off);
2365 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_mac_addres_6 , tvb, cur_off + new_off, 1, ENC_NA);
2366 new_off +=1;
2367 mac_5 = tvb_get_uint8(tvb, cur_off + new_off);
2368 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_mac_addres_5 , tvb, cur_off + new_off, 1, ENC_NA);
2369 new_off +=1;
2370 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_reserved_2, tvb, cur_off + new_off, 1, ENC_NA);
2371 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_payload_scrambling_control, tvb, cur_off + new_off, 1, ENC_NA);
2372 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_address_scrambling_control, tvb, cur_off + new_off, 1, ENC_NA);
2373 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_LLC_SNAP_flag, tvb, cur_off + new_off, 1, ENC_NA);
2374 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_current_next_indicator, tvb, cur_off + new_off, 1, ENC_NA);
2375 new_off +=1;
2376 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_section_number , tvb, cur_off + new_off, 1, ENC_NA);
2377 new_off +=1;
2378 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_last_section_number , tvb, cur_off + new_off, 1, ENC_NA);
2379 new_off +=1;
2380 mac_4 = tvb_get_uint8(tvb, cur_off + new_off);
2381 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_mac_addres_4 , tvb, cur_off + new_off, 1, ENC_NA);
2382 new_off +=1;
2383 mac_3 = tvb_get_uint8(tvb, cur_off + new_off);
2384 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_mac_addres_3 , tvb, cur_off + new_off, 1, ENC_NA);
2385 new_off +=1;
2386 mac_2 = tvb_get_uint8(tvb, cur_off + new_off);
2387 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_mac_addres_2 , tvb, cur_off + new_off, 1, ENC_NA);
2388 new_off +=1;
2389 mac_1 = tvb_get_uint8(tvb, cur_off + new_off);
2390 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_mac_addres_1 , tvb, cur_off + new_off, 1, ENC_NA);
2391 new_off +=1;
2392 if ((mac_1 == 0xff) && (mac_2 == 0xff) && (mac_3 == 0xff) && (mac_4 == 0xff) && (mac_5 == 0xff) && (mac_6 == 0xff)) {
2393 table_id = DVB_S2_TABLE_TIMB;
2395 } else {
2396 /* parse SI section header only for RCS tables
2397 * (except TIMu and TDT that use DSM-CC instead) */
2398 if (dvb_s2_rcs_version == DVB_S2_RCS_TABLE_DECODING)
2400 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_table_section, tvb, cur_off + new_off, 1, ENC_NA);
2401 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_table_private, tvb, cur_off + new_off, 1, ENC_NA);
2402 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_table_reserved, tvb, cur_off + new_off, 1, ENC_NA);
2403 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_table_msb_len, tvb, cur_off + new_off, 1, ENC_NA);
2404 new_off += 1;
2405 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_table_lsb_len, tvb, cur_off + new_off, 1, ENC_NA);
2406 new_off += 1;
2407 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_table_network_interactive_id, tvb, cur_off + new_off, 2, ENC_NA);
2408 new_off += 2;
2409 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_table_reserved2, tvb, cur_off + new_off, 1, ENC_NA);
2410 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_table_version_number, tvb, cur_off + new_off, 1, ENC_NA);
2411 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_table_current_next_indicator, tvb, cur_off + new_off, 1, ENC_NA);
2412 new_off += 1;
2413 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_table_section_number, tvb, cur_off + new_off, 1, ENC_NA);
2414 new_off += 1;
2415 proto_tree_add_item(dvb_s2_hdr_table_tree, hf_dvb_s2_table_last_section_number, tvb, cur_off + new_off, 1, ENC_NA);
2416 new_off += 1;
2420 if (dvb_s2_rcs_version == DVB_S2_RCS_TABLE_DECODING)
2421 data_len = tvb_captured_length(tvb);
2422 else if (dvb_s2_rcs_version == DVB_S2_RCS2_TABLE_DECODING)
2423 data_len = tvb_captured_length(tvb);
2425 switch (table_id) {
2426 case DVB_S2_TABLE_SMT:
2427 dissect_dvb_s2_table_smt(tvb, cur_off + new_off, dvb_s2_hdr_table_tree);
2428 break;
2429 case DVB_S2_TABLE_SCT:
2430 dissect_dvb_s2_table_sct(tvb, cur_off + new_off, dvb_s2_hdr_table_tree);
2431 break;
2432 case DVB_S2_TABLE_TIMB:
2433 dissect_dvb_s2_table_tim(tvb, cur_off + new_off, dvb_s2_hdr_table_tree, !dvb_s2_isUnicast, pinfo);
2434 break;
2435 case DVB_S2_TABLE_TIM:
2436 dissect_dvb_s2_table_tim(tvb, cur_off + new_off, dvb_s2_hdr_table_tree, dvb_s2_isUnicast, pinfo);
2437 break;
2438 case DVB_S2_TABLE_TBTP2:
2439 dissect_dvb_s2_table_tbtp2(tvb, cur_off + new_off, dvb_s2_hdr_table_tree, data_len);
2440 break;
2441 case DVB_S2_TABLE_TBTP:
2442 dissect_dvb_s2_table_tbtp(tvb, cur_off + new_off, dvb_s2_hdr_table_tree, data_len);
2443 break;
2444 case DVB_S2_TABLE_CMT:
2445 dissect_dvb_s2_table_cmt(tvb, cur_off + new_off, dvb_s2_hdr_table_tree);
2446 break;
2447 case DVB_S2_TABLE_FAT:
2448 dissect_dvb_s2_table_fat(tvb, cur_off + new_off, dvb_s2_hdr_table_tree, pinfo);
2449 break;
2450 case DVB_S2_TABLE_FCT:
2451 dissect_dvb_s2_table_fct(tvb, cur_off + new_off, dvb_s2_hdr_table_tree);
2452 break;
2453 case DVB_S2_TABLE_TMST2:
2454 dissect_dvb_s2_table_tmst2(tvb, cur_off + new_off, dvb_s2_hdr_table_tree);
2455 break;
2456 case DVB_S2_TABLE_TMST:
2457 dissect_dvb_s2_table_tmst(tvb, cur_off + new_off, dvb_s2_hdr_table_tree);
2458 break;
2459 case DVB_S2_TABLE_TCTE:
2460 if (dvb_s2_rcs_version == DVB_S2_RCS2_TABLE_DECODING)
2462 dissect_dvb_s2_table_fct2(tvb, cur_off + new_off, dvb_s2_hdr_table_tree);
2464 break;
2465 case DVB_S2_TABLE_BCT:
2466 dissect_dvb_s2_table_bct(tvb, cur_off + new_off, dvb_s2_hdr_table_tree);
2467 break;
2468 case DVB_S2_TABLE_SPT:
2469 dissect_dvb_s2_table_spt(tvb, cur_off + new_off, dvb_s2_hdr_table_tree);
2470 break;
2471 case DVB_S2_TABLE_NIT:
2472 case DVB_S2_TABLE_RMT:
2473 dissect_dvb_s2_table_nit_rmt(tvb, cur_off + new_off, dvb_s2_hdr_table_tree, table_id, pinfo);
2474 break;
2475 case DVB_S2_TABLE_MMT2:
2476 dissect_dvb_s2_table_mmt2(tvb, cur_off + new_off, dvb_s2_hdr_table_tree);
2477 break;
2478 case DVB_S2_TABLE_TDT:
2479 /* already parsed above */
2480 break;
2481 case DVB_S2_TABLE_PAT:
2482 case DVB_S2_TABLE_CAT:
2483 case DVB_S2_TABLE_PMT:
2484 case DVB_S2_TABLE_SDT:
2485 case DVB_S2_TABLE_TCT:
2486 case DVB_S2_TABLE_PCR:
2487 case DVB_S2_TABLE_MMT:
2488 break;
2490 if (dvb_s2_rcs_version == DVB_S2_RCS_TABLE_DECODING)
2491 new_off += data_len - DVB_S2_TABLE_HEADER_LEN;
2492 else if (dvb_s2_rcs_version == DVB_S2_RCS2_TABLE_DECODING)
2493 new_off += data_len - DVB_S2_TABLE_HEADER_RCS2_LEN;
2495 return new_off;
2498 /* Register the protocol with Wireshark */
2499 void proto_register_dvb_s2_table(void)
2501 module_t *dvb_s2_table_module;
2503 /* DVB-S2 Table */
2504 static hf_register_info hf_table[] = {
2505 {&hf_dvb_s2_table_id, {
2506 "Table ID", "dvb-s2_table.id",
2507 FT_UINT8, BASE_HEX, VALS(tabletype), 0x0,
2508 NULL, HFILL}
2510 {&hf_dvb_s2_table_section, {
2511 "Table Section", "dvb-s2_table.section",
2512 FT_UINT8, BASE_HEX, NULL, DVB_S2_TABLE_SECTION_MASK,
2513 NULL, HFILL}
2515 {&hf_dvb_s2_table_private, {
2516 "Table private indicator", "dvb-s2_table.private_indicator",
2517 FT_UINT8, BASE_HEX, NULL, DVB_S2_TABLE_PRIVATE_MASK,
2518 NULL, HFILL}
2520 {&hf_dvb_s2_table_reserved, {
2521 "Table reserved field", "dvb-s2_table.reserved",
2522 FT_UINT8, BASE_HEX, NULL, DVB_S2_TABLE_RESERVED_MASK,
2523 NULL, HFILL}
2525 {&hf_dvb_s2_table_msb_len, {
2526 "Table length MSB", "dvb-s2_table.len.msb",
2527 FT_UINT8, BASE_DEC, NULL, DVB_S2_TABLE_MSB_LEN_MASK,
2528 NULL, HFILL}
2530 {&hf_dvb_s2_table_lsb_len, {
2531 "Table length LSB", "dvb-s2_table.len.lsb",
2532 FT_UINT8, BASE_DEC, NULL, 0x0,
2533 NULL, HFILL}
2535 {&hf_dvb_s2_table_network_interactive_id, {
2536 "Table network interactive id", "dvb-s2_table.network_interactive_id",
2537 FT_UINT16, BASE_DEC, NULL, 0x0,
2538 NULL, HFILL}
2540 {&hf_dvb_s2_table_reserved2, {
2541 "Table reserved field 2", "dvb-s2_table.reserved2",
2542 FT_UINT8, BASE_HEX, NULL, DVB_S2_TABLE_RESERVED2_MASK,
2543 NULL, HFILL}
2545 {&hf_dvb_s2_table_version_number, {
2546 "Table version number", "dvb-s2_table.version_number",
2547 FT_UINT8, BASE_DEC, NULL, DVB_S2_TABLE_VERSION_NUMBER_MASK,
2548 NULL, HFILL}
2550 {&hf_dvb_s2_table_current_next_indicator, {
2551 "Table current next indicator", "dvb-s2_table.current_next_indicator",
2552 FT_UINT8, BASE_DEC, NULL, DVB_S2_TABLE_CURRENT_NEXT_INDICATOR_MASK,
2553 NULL, HFILL}
2555 {&hf_dvb_s2_table_section_number, {
2556 "Table section number", "dvb-s2_table.section_number",
2557 FT_UINT8, BASE_DEC, NULL, 0x0,
2558 NULL, HFILL}
2560 {&hf_dvb_s2_table_last_section_number, {
2561 "Table last section number", "dvb-s2_table.len",
2562 FT_UINT8, BASE_DEC, NULL, 0x0,
2563 NULL, HFILL}
2565 {&hf_dvb_s2_table_smt_id, {
2566 "Table ID", "dvb-s2_table.id",
2567 FT_UINT8, BASE_HEX, VALS(tabletype), 0x0,
2568 NULL, HFILL}
2570 {&hf_dvb_s2_table_smt_section_syntax_indicator, {
2571 "Table section", "dvb-s2_table.section",
2572 FT_UINT16, BASE_HEX, NULL, DVB_S2_TABLE_SMT_SECTION_INDICATOR_MASK,
2573 NULL, HFILL}
2575 {&hf_dvb_s2_table_smt_futur_use, {
2576 "Table future use", "dvb-s2_table.future_use",
2577 FT_UINT16, BASE_HEX, NULL, DVB_S2_TABLE_SMT_FUTUR_USE_MASK,
2578 NULL, HFILL}
2580 {&hf_dvb_s2_table_smt_reserved, {
2581 "Table reserved", "dvb-s2_table.reserved",
2582 FT_UINT16, BASE_HEX, NULL, DVB_S2_TABLE_SMT_RESERVED_MASK,
2583 NULL, HFILL}
2585 {&hf_dvb_s2_table_smt_section_length, {
2586 "Table section length", "dvb-s2_table.section_length",
2587 FT_UINT16, BASE_DEC, NULL, DVB_S2_TABLE_SMT_SECTION_LENGTH_MASK,
2588 NULL, HFILL}
2590 {&hf_dvb_s2_table_smt_esn0, {
2591 "Table Es/N0", "dvb-s2_table.esn0",
2592 FT_UINT16, BASE_DEC, NULL, 0x0,
2593 NULL, HFILL}
2595 {&hf_dvb_s2_table_smt_modcod, {
2596 "Table modcod", "dvb-s2_table.modcod",
2597 FT_UINT8, BASE_DEC, NULL, 0x0,
2598 NULL, HFILL}
2601 /* DSM-CC */
2602 {&hf_dvb_s2_section_syntax_indic, {
2603 "Table section syntax indicator", "dvb-s2_table.section_syntax_indic",
2604 FT_UINT8, BASE_DEC, NULL, DVB_S2_TABLE_SECTION_SYNTAX_INDIC_MASK,
2605 NULL, HFILL}
2607 {&hf_dvb_s2_private_indicator, {
2608 "Table private indicator", "dvb-s2_table.private_indicator",
2609 FT_UINT8, BASE_DEC, NULL, DVB_S2_TABLE_PRIVATE_INDICATOR_MASK,
2610 NULL, HFILL}
2612 {&hf_dvb_s2_reserved_1, {
2613 "Table reserved field 1", "dvb-s2_table.reserved_1",
2614 FT_UINT8, BASE_DEC, NULL, DVB_S2_TABLE_RESERVED_ONE_MASK,
2615 NULL, HFILL}
2617 {&hf_dvb_s2_section_length, {
2618 "Table section length", "dvb-s2_table.section_length",
2619 FT_UINT16, BASE_DEC, NULL, DVB_S2_TABLE_SECTION_LENGTH_MASK,
2620 NULL, HFILL}
2622 {&hf_dvb_s2_mac_addres_6, {
2623 "Table MAC address 6", "dvb-s2_table.mac_address_6",
2624 FT_UINT8, BASE_HEX, NULL, 0x0,
2625 NULL, HFILL}
2627 {&hf_dvb_s2_mac_addres_5, {
2628 "Table MAC address 5", "dvb-s2_table.mac_address_5",
2629 FT_UINT8, BASE_HEX, NULL, 0x0,
2630 NULL, HFILL}
2632 {&hf_dvb_s2_mac_addres_4, {
2633 "Table MAC address 4", "dvb-s2_table.mac_address_4",
2634 FT_UINT8, BASE_HEX, NULL, 0x0,
2635 NULL, HFILL}
2637 {&hf_dvb_s2_mac_addres_3, {
2638 "Table MAC address 3", "dvb-s2_table.mac_address_3",
2639 FT_UINT8, BASE_HEX, NULL, 0x0,
2640 NULL, HFILL}
2642 {&hf_dvb_s2_mac_addres_2, {
2643 "Table MAC address 2", "dvb-s2_table.mac_address_2",
2644 FT_UINT8, BASE_HEX, NULL, 0x0,
2645 NULL, HFILL}
2647 {&hf_dvb_s2_mac_addres_1, {
2648 "Table MAC address 1", "dvb-s2_table.mac_address_1",
2649 FT_UINT8, BASE_HEX, NULL, 0x0,
2650 NULL, HFILL}
2652 {&hf_dvb_s2_reserved_2, {
2653 "Table reserved field 2", "dvb-s2_table.reserved_2",
2654 FT_UINT8, BASE_DEC, NULL, DVB_S2_TABLE_RESERVED_TWO_MASK,
2655 NULL, HFILL}
2657 {&hf_dvb_s2_payload_scrambling_control, {
2658 "Table payload scrambling control", "dvb-s2_table.payload_scrambling_control",
2659 FT_UINT8, BASE_DEC, NULL, DVB_S2_TABLE_PAYLOAD_SCRAMBLING_MASK,
2660 NULL, HFILL}
2662 {&hf_dvb_s2_address_scrambling_control, {
2663 "Table address scrambling control", "dvb-s2_table.address_scrambling_control",
2664 FT_UINT8, BASE_DEC, NULL, DVB_S2_TABLE_ADDRESS_SCRAMBLING_MASK,
2665 NULL, HFILL}
2667 {&hf_dvb_s2_LLC_SNAP_flag, {
2668 "Table LLC SNAP flag", "dvb-s2_table.LLC_SNAP_flag",
2669 FT_UINT8, BASE_DEC, NULL, DVB_S2_TABLE_LLC_SNAP_MASK,
2670 NULL, HFILL}
2672 {&hf_dvb_s2_current_next_indicator, {
2673 "Table current next indicator", "dvb-s2_table.current_next_indicator",
2674 FT_UINT8, BASE_DEC, NULL, DVB_S2_TABLE_CURRENT_NEXT_INDICATOR_MASK,
2675 NULL, HFILL}
2677 {&hf_dvb_s2_section_number, {
2678 "Table section number", "dvb-s2_table.section_number",
2679 FT_UINT8, BASE_DEC, NULL, 0x0,
2680 NULL, HFILL}
2682 {&hf_dvb_s2_last_section_number, {
2683 "Table last section number", "dvb-s2_table.last_section_number",
2684 FT_UINT8, BASE_DEC, NULL, 0x0,
2685 NULL, HFILL}
2688 /* SCT */
2689 {&hf_dvb_s2_table_superframe_loop_count, {
2690 "Table superframe loop count", "dvb-s2_table.superframe_loop_count",
2691 FT_UINT8, BASE_DEC, NULL, 0x0,
2692 NULL, HFILL}
2694 {&hf_dvb_s2_table_superframe, {
2695 "Superframe", "dvb-s2_table.superframe",
2696 FT_BYTES, BASE_NONE, NULL, 0x0,
2697 "Superframe definition", HFILL}
2699 {&hf_dvb_s2_table_sf_sequence, {
2700 "Superframe sequence", "dvb-s2_table.sf.sequence",
2701 FT_UINT8, BASE_HEX, NULL, 0x0,
2702 NULL, HFILL}
2704 {&hf_dvb_s2_table_sf_id, {
2705 "Superframe id", "dvb-s2_table.sf.id",
2706 FT_UINT8, BASE_HEX, NULL, 0x0,
2707 NULL, HFILL}
2709 {&hf_dvb_s2_table_sf_large_timing_uncertainty_flag, {
2710 "Superframe large timing uncertainty flag", "dvb-s2_table.sf.large_timing_uncertainty_flag",
2711 FT_UINT8, BASE_HEX, NULL, DVB_S2_TABLE_SCT_LARGE_TIMING_FLAG_MASK,
2712 NULL, HFILL}
2714 {&hf_dvb_s2_table_sf_uplink_polarization, {
2715 "Superframe uplink polarization", "dvb-s2_table.sf.uplink_polarization",
2716 FT_UINT8, BASE_HEX, VALS(table_uplinkPolarization), DVB_S2_TABLE_SCT_UPLINK_POLARIZATION_MASK,
2717 NULL, HFILL}
2719 {&hf_dvb_s2_table_sf_absolute_time, {
2720 "Superframe absolute time (NCR format)", "dvb-s2_table.sf.absolute",
2721 FT_BYTES, BASE_NONE, NULL, 0x0,
2722 NULL, HFILL}
2724 {&hf_dvb_s2_table_sf_duration, {
2725 "Superframe duration", "dvb-s2_table.sf.duration",
2726 FT_UINT32, BASE_DEC, NULL, 0x0,
2727 NULL, HFILL}
2729 {&hf_dvb_s2_table_sf_centre_frequency, {
2730 "Superframe center frequency", "dvb-s2_table.sf.center_frequency",
2731 FT_UINT32, BASE_DEC, NULL, 0x0,
2732 NULL, HFILL}
2734 {&hf_dvb_s2_table_sf_count, {
2735 "Superframe count", "dvb-s2_table.sf.count",
2736 FT_UINT16, BASE_DEC, NULL, 0x0,
2737 NULL, HFILL}
2739 {&hf_dvb_s2_table_sf_frame_loop_count, {
2740 "Superframe frame loop count", "dvb-s2_table.sf.frame_loop_count",
2741 FT_UINT8, BASE_DEC, NULL, DVB_S2_TABLE_SCT_FRAME_LOOP_COUNT_MASK,
2742 NULL, HFILL}
2744 {&hf_dvb_s2_table_sf_frame, {
2745 "Frame", "dvb-s2_table.sf.frame",
2746 FT_BYTES, BASE_NONE, NULL, 0x0,
2747 "Frame definition", HFILL}
2749 {&hf_dvb_s2_table_sf_frame_type, {
2750 "Frame type", "dvb-s2_table.sf.frame.type",
2751 FT_UINT8, BASE_DEC, NULL, 0x0,
2752 NULL, HFILL}
2754 {&hf_dvb_s2_table_sf_frame_id, {
2755 "Frame id", "dvb-s2_table.sf.frame.id",
2756 FT_UINT8, BASE_DEC, NULL, 0x0,
2757 NULL, HFILL}
2759 {&hf_dvb_s2_table_sf_frame_start_time, {
2760 "Frame start time", "dvb-s2_table.sf.frame.start_time",
2761 FT_UINT32, BASE_DEC, NULL, 0x0,
2762 NULL, HFILL}
2764 {&hf_dvb_s2_table_sf_frame_centre_frequency_offset, {
2765 "Frame center frequency offset", "dvb-s2_table.sf.frame.center_frequency_offset",
2766 FT_INT24, BASE_DEC, NULL, 0x0,
2767 NULL, HFILL}
2769 /* TIM */
2770 {&hf_dvb_s2_table_rcst_status, {
2771 "Table RCST status", "dvb-s2_table.rcst_status",
2772 FT_UINT8, BASE_HEX, NULL, 0x0,
2773 NULL, HFILL}
2775 {&hf_dvb_s2_table_network_status, {
2776 "Table network status", "dvb-s2_table.network_status",
2777 FT_UINT8, BASE_HEX, NULL, 0x0,
2778 NULL, HFILL}
2780 {&hf_dvb_s2_table_desc_loop_count, {
2781 "Table descriptor loop count", "dvb-s2_table.desc_loop_count",
2782 FT_UINT8, BASE_DEC, NULL, 0x0,
2783 NULL, HFILL}
2785 /* TBTP */
2786 {&hf_dvb_s2_tbtp_group_id, {
2787 "Group ID", "dvb-s2_table.group_id",
2788 FT_UINT8, BASE_HEX, NULL, 0x0,
2789 NULL, HFILL}
2791 {&hf_dvb_s2_tbtp_superframe_count, {
2792 "Superframe count", "dvb-s2_table.superframe_count",
2793 FT_UINT16, BASE_DEC, NULL, 0x0,
2794 NULL, HFILL}
2796 {&hf_dvb_s2_tbtp_frame_loop_count, {
2797 "Frame loop count", "dvb-s2_table.frame_loop_count",
2798 FT_UINT8, BASE_DEC, NULL, DVB_S2_TABLE_SCT_FRAME_LOOP_COUNT_MASK,
2799 NULL, HFILL}
2801 {&hf_dvb_s2_tbtp_sf_frame, {
2802 "Frame", "dvb-s2_table.frame_branch",
2803 FT_BYTES, BASE_NONE, NULL, 0x0,
2804 NULL, HFILL}
2806 {&hf_dvb_s2_tbtp_frame_number, {
2807 "Frame number", "dvb-s2_table.frame.number",
2808 FT_UINT8, BASE_DEC, NULL, DVB_S2_TABLE_TBTP_FRAME_NUMBER_MASK,
2809 NULL, HFILL}
2811 {&hf_dvb_s2_tbtp_btb_loop_count, {
2812 "Btp loop count", "dvb-s2_table.frame.btp_loop_count",
2813 FT_UINT16, BASE_DEC, NULL, DVB_S2_TABLE_TBTP_BTP_LOOP_COUNT_MASK,
2814 NULL, HFILL}
2816 {&hf_dvb_s2_tbtp_assignment_count, {
2817 "Assignment count", "dvb-s2_table.frame.btp.assignment_count",
2818 FT_UINT8, BASE_DEC, NULL, 0x0,
2819 NULL, HFILL}
2821 {&hf_dvb_s2_tbtp_btp, {
2822 "BTP", "dvb-s2_table.frame.btp_branch",
2823 FT_BYTES, BASE_NONE, NULL, 0x0,
2824 NULL, HFILL}
2826 {&hf_dvb_s2_tbtp_logon_id, {
2827 "Logon Id", "dvb-s2_table.frame.btp.logon_id",
2828 FT_UINT16, BASE_DEC, NULL, 0x0,
2829 NULL, HFILL}
2831 {&hf_dvb_s2_tbtp_multiple_channel_flag, {
2832 "Multiple channel flag", "dvb-s2_table.frame.btp.multiple_channel_flag",
2833 FT_UINT8, BASE_DEC, NULL, DVB_S2_TABLE_TBTP_MULTIPLE_CHANNEL_FLAG_MASK,
2834 NULL, HFILL}
2836 {&hf_dvb_s2_tbtp_assignment_type, {
2837 "Assignment type", "dvb-s2_table.frame.btp.assignment_type",
2838 FT_UINT8, BASE_DEC, NULL, DVB_S2_TABLE_TBTP_ASSIGNMENT_TYPE_MASK,
2839 NULL, HFILL}
2841 {&hf_dvb_s2_tbtp_frame_vbdc_queue_empty_flag, {
2842 "VBDC queue empty flag", "dvb-s2_table.frame.btp.vbdc_queue_empty_flag",
2843 FT_UINT8, BASE_DEC, NULL, DVB_S2_TABLE_TBTP_VBDC_FLAG_MASK,
2844 NULL, HFILL}
2846 {&hf_dvb_s2_tbtp_start_slot, {
2847 "Start slot", "dvb-s2_table.frame.btp.start_slot",
2848 FT_UINT16, BASE_DEC, NULL, DVB_S2_TABLE_TBTP_START_SLOT_MASK,
2849 NULL, HFILL}
2851 {&hf_dvb_s2_tbtp_channel_id, {
2852 "Channel id", "dvb-s2_table.frame.btp.channel_id",
2853 FT_UINT8, BASE_DEC, NULL, 0x0,
2854 NULL, HFILL}
2856 /* TBTP2 */
2857 {&hf_dvb_s2_table_group_id, {
2858 "Table Group ID", "dvb-s2_table.group_id",
2859 FT_UINT8, BASE_HEX, NULL, 0x0,
2860 NULL, HFILL}
2862 {&hf_dvb_s2_table_assign_context, {
2863 "Table assignment context", "dvb-s2_table.assign_context",
2864 FT_UINT8, BASE_HEX, VALS(table_assignContext), 0x0,
2865 NULL, HFILL}
2867 {&hf_dvb_s2_table_superframe_count, {
2868 "Superframe count", "dvb-s2_table.superframe_count",
2869 FT_UINT8, BASE_DEC, NULL, 0x0,
2870 NULL, HFILL}
2872 {&hf_dvb_s2_table_assign_format, {
2873 "Table assignment Format", "dvb-s2_table.assign_format",
2874 FT_UINT8, BASE_DEC, NULL, 0x0,
2875 NULL, HFILL}
2877 {&hf_dvb_s2_table_frame_loop_count, {
2878 "Table frame loop count", "dvb-s2_table.frame_loop_count",
2879 FT_UINT8, BASE_DEC, NULL, 0x0,
2880 NULL, HFILL}
2882 {&hf_dvb_s2_table_frame_number, {
2883 "Frame number", "dvb-s2_table.frame.number",
2884 FT_UINT8, BASE_DEC, NULL, 0x0,
2885 NULL, HFILL}
2887 {&hf_dvb_s2_table_frame_assign_offset, {
2888 "Frame assignment offset", "dvb-s2_table.frame.assign_offset",
2889 FT_UINT16, BASE_DEC, NULL, 0x0,
2890 NULL, HFILL}
2892 {&hf_dvb_s2_table_frame_assign_loop_count, {
2893 "Frame assignment loop count", "dvb-s2_table.frame.assign_loop_count",
2894 FT_UINT16, BASE_DEC, NULL, 0x0,
2895 NULL, HFILL}
2897 {&hf_dvb_s2_table_frame_assignment, {
2898 "Frame assignment", "dvb-s2_table.frame.assignment",
2899 FT_BYTES, BASE_NONE, NULL, 0x0,
2900 NULL, HFILL}
2902 {&hf_dvb_s2_table_frame_assign_id8, {
2903 "Frame assignment ID", "dvb-s2_table.frame.assign_id8",
2904 FT_UINT8, BASE_HEX, NULL, 0x0,
2905 NULL, HFILL}
2907 {&hf_dvb_s2_table_frame_assign_id16, {
2908 "Frame assignment ID", "dvb-s2_table.frame.assign_id16",
2909 FT_UINT16, BASE_HEX, NULL, 0x0,
2910 NULL, HFILL}
2912 {&hf_dvb_s2_table_frame_assign_id24, {
2913 "Frame assignment ID", "dvb-s2_table.frame.assign_id24",
2914 FT_UINT24, BASE_HEX, NULL, 0x0,
2915 NULL, HFILL}
2917 {&hf_dvb_s2_table_frame_assign_id48, {
2918 "Frame assignment ID", "dvb-s2_table.frame.assign_id48",
2919 FT_BYTES, BASE_NONE, NULL, 0x0,
2920 NULL, HFILL}
2922 {&hf_dvb_s2_table_frame_dynamic_tx_type, {
2923 "Frame dynamic tx_type", "dvb-s2_table.frame.dynamic_tx_type",
2924 FT_UINT8, BASE_HEX, NULL, 0x0,
2925 NULL, HFILL}
2927 /* CMT */
2928 {&hf_dvb_s2_table_entry_loop_count, {
2929 "Table entry loop count", "dvb-s2_table.entry_loop_count",
2930 FT_UINT8, BASE_DEC, NULL, 0x0,
2931 NULL, HFILL}
2933 {&hf_dvb_s2_table_entry, {
2934 "Entry Correction Message", "dvb-s2_table.entry",
2935 FT_BYTES, BASE_NONE, NULL, 0x0,
2936 NULL, HFILL}
2938 {&hf_dvb_s2_table_entry_login_id, {
2939 "Entry login ID", "dvb-s2_table.entry.login_id",
2940 FT_UINT16, BASE_HEX, NULL, 0x0,
2941 NULL, HFILL}
2943 /* TMST2 */
2944 {&hf_dvb_s2_table_common_sytem_margin, {
2945 "Table common system margin", "dvb-s2_table.common_system_margin",
2946 FT_UINT8, BASE_DEC, NULL, 0x0,
2947 NULL, HFILL}
2949 {&hf_dvb_s2_table_tx_mode_count, {
2950 "Table transmission mode count", "dvb-s2_table.tx_mode_count",
2951 FT_UINT8, BASE_DEC, NULL, 0x0,
2952 NULL, HFILL}
2954 {&hf_dvb_s2_table_tx_mode, {
2955 "Transmission mode", "dvb-s2_table.tx_mode",
2956 FT_BYTES, BASE_NONE, NULL, 0x0,
2957 NULL, HFILL}
2959 {&hf_dvb_s2_table_tx_mode_frame_length, {
2960 "tx mode frame length", "dvb-s2_table.tx_mode.frame_length",
2961 FT_UINT8, BASE_HEX, NULL, DVB_S2_TABLE_TX_MODE_FRAME_LENGTH_MASK,
2962 NULL, HFILL}
2964 {&hf_dvb_s2_table_tx_mode_pilot_symbols, {
2965 "tx mode pilot_symbols", "dvb-s2_table.tx_mode.pilot_symbols",
2966 FT_UINT8, BASE_HEX, NULL, DVB_S2_TABLE_TX_MODE_PILOT_SYMBOLS_MASK,
2967 NULL, HFILL}
2969 {&hf_dvb_s2_table_tx_mode_modcod, {
2970 "tx mode MODCOD", "dvb-s2_table.tx_mode.modcod",
2971 FT_UINT8, BASE_HEX, VALS(table_modcods), DVB_S2_TABLE_TX_MODE_MODCOD_MASK,
2972 NULL, HFILL}
2974 {&hf_dvb_s2_table_tx_mode_modcod_system_margin, {
2975 "tx mode modcod system margin", "dvb-s2_table.tx_mode.modcod_system_margin",
2976 FT_UINT8, BASE_DEC, NULL, 0x0,
2977 NULL, HFILL}
2979 {&hf_dvb_s2_table_tx_mode_isi, {
2980 "tx mode ISI", "dvb-s2_table.tx_mode.isi",
2981 FT_UINT8, BASE_HEX, NULL, 0x0,
2982 NULL, HFILL}
2984 /* FCT2 */
2985 {&hf_dvb_s2_table_frame_type_loop_count, {
2986 "Table frame type loop count", "dvb-s2_table.frame_type_loop_count",
2987 FT_UINT8, BASE_DEC, NULL, 0x0,
2988 NULL, HFILL}
2990 {&hf_dvb_s2_table_frame_type_branch, {
2991 "Frame type", "dvb-s2_table.frame_type_branch",
2992 FT_BYTES, BASE_NONE, NULL, 0x0,
2993 NULL, HFILL}
2995 {&hf_dvb_s2_table_frame_type, {
2996 "Frame type", "dvb-s2_table.frame_type.id",
2997 FT_UINT8, BASE_HEX, NULL, 0x0,
2998 NULL, HFILL}
3000 {&hf_dvb_s2_table_frame_type_frame_duration, {
3001 "Frame type frame duration", "dvb-s2_table.frame_type.frame_duration",
3002 FT_UINT32, BASE_DEC, NULL, 0x0,
3003 NULL, HFILL}
3005 {&hf_dvb_s2_table_frame_type_tx_format_class, {
3006 "Frame type tx format class", "dvb-s2_table.frame_type.tx_format_class",
3007 FT_UINT8, BASE_HEX, VALS(table_frameType_txFormatClass), 0x0,
3008 NULL, HFILL}
3010 {&hf_dvb_s2_table_frame_type_btu_duration, {
3011 "Frame type btu duration", "dvb-s2_table.frame_type.btu_duration",
3012 FT_UINT24, BASE_DEC, NULL, 0x0,
3013 NULL, HFILL}
3015 {&hf_dvb_s2_table_frame_type_btu_carrier_bw, {
3016 "Frame type btu carrier bw", "dvb-s2_table.frame_type.btu_carrier_bw",
3017 FT_UINT24, BASE_DEC, NULL, 0x0,
3018 NULL, HFILL}
3020 {&hf_dvb_s2_table_frame_type_btu_symbol_rate, {
3021 "Frame type btu symbol rate", "dvb-s2_table.frame_type.btu_symbol_rate",
3022 FT_UINT24, BASE_DEC, NULL, 0x0,
3023 NULL, HFILL}
3025 {&hf_dvb_s2_table_frame_type_time_unit_count, {
3026 "Frame type time unit count", "dvb-s2_table.frame_type.time_unit_count",
3027 FT_UINT16, BASE_DEC, NULL, 0x0,
3028 NULL, HFILL}
3030 {&hf_dvb_s2_table_frame_type_grid_repeat_count, {
3031 "Frame type grid repeat count", "dvb-s2_table.frame_type.grid_repeat_count",
3032 FT_UINT8, BASE_DEC, NULL, 0x0,
3033 NULL, HFILL}
3035 {&hf_dvb_s2_table_frame_type_grid_frequency_offset, {
3036 "Frame type grid frequency offset", "dvb-s2_table.frame_type.grid_frequency_offset",
3037 FT_INT24, BASE_DEC, NULL, 0x0,
3038 NULL, HFILL}
3040 {&hf_dvb_s2_table_frame_type_section_loop_count, {
3041 "Frame type section loop count", "dvb-s2_table.frame_type.section_loop_count",
3042 FT_UINT8, BASE_DEC, NULL, 0x0,
3043 NULL, HFILL}
3045 {&hf_dvb_s2_table_frame_type_section, {
3046 "Section", "dvb-s2_table.frame_type.section",
3047 FT_BYTES, BASE_NONE, NULL, 0x0,
3048 NULL, HFILL}
3050 {&hf_dvb_s2_table_frame_type_section_default_tx_type, {
3051 "Section default tx type", "dvb-s2_table.frame_type.section.default_tx_type",
3052 FT_UINT8, BASE_HEX, NULL, 0x0,
3053 NULL, HFILL}
3055 {&hf_dvb_s2_table_frame_type_section_fix_acc_method, {
3056 "Section fixed access method", "dvb-s2_table.frame_type.section.fixed_access_method",
3057 FT_UINT8, BASE_HEX, NULL, DVB_S2_TABLE_FRAME_TYPE_SECTION_FAM_MASK,
3058 NULL, HFILL}
3060 {&hf_dvb_s2_table_frame_type_section_repeat_count, {
3061 "Section repeat count", "dvb-s2_table.frame_type.section.repeat_count",
3062 FT_UINT16, BASE_DEC, NULL, 0x0,
3063 NULL, HFILL}
3065 /* FCT */
3066 {&hf_dvb_s2_table_frame_ID_loop_count, {
3067 "Frame loop count", "dvb-s2_table.frame_ID_loop_count",
3068 FT_UINT8, BASE_DEC, NULL, 0x0,
3069 NULL, HFILL}
3071 {&hf_dvb_s2_table_frame_ID_branch, {
3072 "Frame", "dvb-s2_table.frame_ID_branch",
3073 FT_BYTES, BASE_NONE, NULL, 0x0,
3074 NULL, HFILL}
3076 {&hf_dvb_s2_table_frame_ID, {
3077 "Frame ID", "dvb-s2_table.frame_ID.frame_ID.id",
3078 FT_UINT8, BASE_DEC, NULL, 0x0,
3079 NULL, HFILL}
3081 {&hf_dvb_s2_table_frame_ID_frame_duration, {
3082 "Frame duration", "dvb-s2_table.frame_ID.frame_duration",
3083 FT_UINT32, BASE_DEC, NULL, 0x0,
3084 NULL, HFILL}
3086 {&hf_dvb_s2_table_frame_ID_total_timeslot_count, {
3087 "Frame timeslot count", "dvb-s2_table.frame_ID.total_timeslot_count",
3088 FT_UINT16, BASE_DEC, NULL, DVB_S2_TABLE_FRAME_ID_TOT_TIME_COUNT_MASK,
3089 NULL, HFILL}
3091 {&hf_dvb_s2_table_frame_ID_start_timeslot_number, {
3092 "Frame timeslot start number", "dvb-s2_table.frame_ID.start_timeslot_number",
3093 FT_UINT16, BASE_DEC, NULL, DVB_S2_TABLE_FRAME_ID_TOT_TIME_COUNT_MASK,
3094 NULL, HFILL}
3096 {&hf_dvb_s2_table_frame_ID_timeslot_loop_count, {
3097 "Frame timeslot loop count", "dvb-s2_table.frame_ID.timeslot_loop_count",
3098 FT_UINT8, BASE_DEC, NULL, 0x0,
3099 NULL, HFILL}
3101 {&hf_dvb_s2_table_frame_ID_timeslot, {
3102 "Frame timeslot", "dvb-s2_table.frame_ID.timeslot",
3103 FT_BYTES, BASE_NONE, NULL, 0x0,
3104 NULL, HFILL}
3106 {&hf_dvb_s2_table_frame_ID_timeslot_timeslot_frequency_offset, {
3107 "Frame timeslot frequency offset", "dvb-s2_table.frame_ID.timeslot.frequency_offset",
3108 FT_INT24, BASE_DEC, NULL, 0x0,
3109 NULL, HFILL}
3111 {&hf_dvb_s2_table_frame_ID_timeslot_timeslot_time_offset, {
3112 "Frame timeslot time offset", "dvb-s2_table.frame_ID.timeslot.time_offset",
3113 FT_UINT32, BASE_DEC, NULL, 0x0,
3114 NULL, HFILL}
3116 {&hf_dvb_s2_table_frame_ID_timeslot_timeslot_id, {
3117 "Frame timeslot id", "dvb-s2_table.frame_ID.timeslot.id",
3118 FT_UINT8, BASE_DEC, NULL, 0x0,
3119 NULL, HFILL}
3121 {&hf_dvb_s2_table_frame_ID_timeslot_repeat_count, {
3122 "Frame timeslot repeat count", "dvb-s2_table.frame_ID.timeslot.repeat_count",
3123 FT_UINT8, BASE_DEC, NULL, 0x0,
3124 NULL, HFILL}
3126 /* BCT */
3127 {&hf_dvb_s2_table_tx_type_loop_count, {
3128 "Table tx type loop count", "dvb-s2_table.tx_type_loop_count",
3129 FT_UINT8, BASE_DEC, NULL, 0x0,
3130 NULL, HFILL}
3132 {&hf_dvb_s2_table_tx_type_branch, {
3133 "Tx type", "dvb-s2_table.tx_type",
3134 FT_BYTES, BASE_NONE, NULL, 0x0,
3135 NULL, HFILL}
3137 {&hf_dvb_s2_table_tx_type, {
3138 "Tx type", "dvb-s2_table.tx_type.id",
3139 FT_UINT8, BASE_HEX, NULL, 0x0,
3140 NULL, HFILL}
3142 {&hf_dvb_s2_table_tx_type_tx_content_type, {
3143 "Tx type tx content type", "dvb-s2_table.tx_type.tx_content_type",
3144 FT_UINT8, BASE_HEX, VALS(table_txType_contentType), 0x0,
3145 NULL, HFILL}
3147 {&hf_dvb_s2_table_tx_type_tx_format_class, {
3148 "Tx type tx format class", "dvb-s2_table.tx_type.tx_format_class",
3149 FT_UINT8, BASE_HEX, VALS(table_frameType_txFormatClass), 0x0,
3150 NULL, HFILL}
3152 {&hf_dvb_s2_table_tx_type_tx_format_data_length, {
3153 "Tx type tx format data length", "dvb-s2_table.tx_type.tx_format_data_length",
3154 FT_UINT8, BASE_HEX, NULL, 0x0,
3155 NULL, HFILL}
3157 {&hf_dvb_s2_table_tx_type_tx_format_data, {
3158 "Tx type format data", "dvb-s2_table.tx_type.format_data",
3159 FT_BYTES, BASE_NONE, NULL, 0x0,
3160 NULL, HFILL}
3162 /* BCT Common Tx*/
3163 {&hf_dvb_s2_table_tx_type_tx_block_size, {
3164 "Tx type tx block size", "dvb-s2_table.tx_type.tx_block_size",
3165 FT_UINT8, BASE_DEC, NULL, 0x0,
3166 NULL, HFILL}
3168 {&hf_dvb_s2_table_tx_type_threshold_es_n0, {
3169 "Tx type threshold Es/N0", "dvb-s2_table.tx_type.threshold_es_n0",
3170 FT_UINT8, BASE_DEC, NULL, 0x0,
3171 NULL, HFILL}
3173 {&hf_dvb_s2_table_tx_type_payload_size, {
3174 "Tx type payload size", "dvb-s2_table.tx_type.payload_size",
3175 FT_UINT16, BASE_DEC, NULL, 0x0,
3176 NULL, HFILL}
3178 {&hf_dvb_s2_table_tx_type_modulation_scheme, {
3179 "Tx type modulation scheme", "dvb-s2_table.tx_type.modulation_scheme",
3180 FT_UINT8, BASE_HEX, VALS(table_txType_modulationScheme), 0x0,
3181 NULL, HFILL}
3183 {&hf_dvb_s2_table_tx_type_p, {
3184 "Tx type P", "dvb-s2_table.tx_type.p",
3185 FT_UINT8, BASE_HEX, NULL, 0x0,
3186 "Tx type P permutation parameter", HFILL}
3188 {&hf_dvb_s2_table_tx_type_q0, {
3189 "Tx type Q0", "dvb-s2_table.tx_type.q0",
3190 FT_UINT8, BASE_HEX, NULL, DVB_S2_TABLE_TX_TYPE_QX_MASK,
3191 "Tx type Q0 permutation parameter", HFILL}
3193 {&hf_dvb_s2_table_tx_type_q1, {
3194 "Tx type Q1", "dvb-s2_table.tx_type.q1",
3195 FT_UINT8, BASE_HEX, NULL, DVB_S2_TABLE_TX_TYPE_QX_MASK,
3196 "Tx type Q1 permutation parameter", HFILL}
3198 {&hf_dvb_s2_table_tx_type_q2, {
3199 "Tx type Q2", "dvb-s2_table.tx_type.q2",
3200 FT_UINT8, BASE_HEX, NULL, DVB_S2_TABLE_TX_TYPE_QX_MASK,
3201 "Tx type Q2 permutation parameter", HFILL}
3203 {&hf_dvb_s2_table_tx_type_q3, {
3204 "Tx type Q3", "dvb-s2_table.tx_type.q3",
3205 FT_UINT8, BASE_HEX, NULL, DVB_S2_TABLE_TX_TYPE_QX_MASK,
3206 "Tx type Q3 permutation parameter", HFILL}
3208 {&hf_dvb_s2_table_tx_type_y_period, {
3209 "Tx type Y period", "dvb-s2_table.tx_type.y_period",
3210 FT_UINT8, BASE_DEC, NULL, DVB_S2_TABLE_TX_TYPE_W_Y_PERIOD_MASK,
3211 NULL, HFILL}
3213 {&hf_dvb_s2_table_tx_type_w_period, {
3214 "Tx type W period", "dvb-s2_table.tx_type.w_period",
3215 FT_UINT8, BASE_DEC, NULL, DVB_S2_TABLE_TX_TYPE_W_Y_PERIOD_MASK,
3216 NULL, HFILL}
3218 {&hf_dvb_s2_table_tx_type_y_pattern, {
3219 "Y patterns", "dvb-s2_table.tx_type.y_pattern",
3220 FT_BYTES, BASE_NONE, NULL, 0x0,
3221 NULL, HFILL}
3223 {&hf_dvb_s2_table_tx_type_y_pattern_bit, {
3224 "Y pattern bit", "dvb-s2_table.tx_type.y_pattern_bit",
3225 FT_UINT8, BASE_HEX, NULL, DVB_S2_TABLE_TX_TYPE_W_Y_PATTERN_BIT_MASK,
3226 NULL, HFILL}
3228 {&hf_dvb_s2_table_tx_type_w_pattern, {
3229 "W patterns", "dvb-s2_table.tx_type.w_pattern",
3230 FT_BYTES, BASE_NONE, NULL, 0x0,
3231 NULL, HFILL}
3233 {&hf_dvb_s2_table_tx_type_w_pattern_bit, {
3234 "W pattern bit", "dvb-s2_table.tx_type.w_pattern_bit",
3235 FT_UINT8, BASE_HEX, NULL, DVB_S2_TABLE_TX_TYPE_W_Y_PATTERN_BIT_MASK,
3236 NULL, HFILL}
3238 {&hf_dvb_s2_table_tx_type_preamble_len, {
3239 "Tx type preamble len", "dvb-s2_table.tx_type.preamble_len",
3240 FT_UINT8, BASE_DEC, NULL, 0x0,
3241 NULL, HFILL}
3243 {&hf_dvb_s2_table_tx_type_postamble_len, {
3244 "Tx type postamble len", "dvb-s2_table.tx_type.postamble_len",
3245 FT_UINT8, BASE_DEC, NULL, 0x0,
3246 NULL, HFILL}
3248 {&hf_dvb_s2_table_tx_type_pilot_period, {
3249 "Tx type pilot period", "dvb-s2_table.tx_type.pilot_period",
3250 FT_UINT16, BASE_DEC, NULL, DVB_S2_TABLE_TX_TYPE_PILOT_PERIOD_MASK,
3251 NULL, HFILL}
3253 {&hf_dvb_s2_table_tx_type_pilot_block_len, {
3254 "Tx type pilot block length", "dvb-s2_table.tx_type.pilot_block_len",
3255 FT_UINT8, BASE_DEC, NULL, 0x0,
3256 NULL, HFILL}
3258 {&hf_dvb_s2_table_tx_type_pilot_sum, {
3259 "Tx type pilot sum", "dvb-s2_table.tx_type.pilot_sum",
3260 FT_UINT8, BASE_DEC, NULL, 0x0,
3261 NULL, HFILL}
3263 {&hf_dvb_s2_table_tx_type_uw_symbol, {
3264 "Tx type UW symbols", "dvb-s2_table.tx_type.uw_symbol",
3265 FT_BYTES, BASE_NONE, NULL, 0x0,
3266 NULL, HFILL}
3268 {&hf_dvb_s2_table_tx_type_uw_symbol_unit, {
3269 "UW symbol unit", "dvb-s2_table.tx_type.uw_symbol_unit",
3270 FT_UINT8, BASE_HEX, NULL, 0x0,
3271 NULL, HFILL}
3273 {&hf_dvb_s2_table_tx_type_uw_symbol_qpsk, {
3274 "UW symbol QPSK", "dvb-s2_table.tx_type.uw_symbol_qpsk",
3275 FT_UINT8, BASE_HEX, NULL, DVB_S2_TABLE_TX_TYPE_UW_SYMBOL_QPSK_MASK,
3276 NULL, HFILL}
3278 {&hf_dvb_s2_table_tx_type_uw_symbol_8psk, {
3279 "UW symbol 8PSK", "dvb-s2_table.tx_type.uw_symbol_8psk",
3280 FT_UINT8, BASE_HEX, NULL, DVB_S2_TABLE_TX_TYPE_UW_SYMBOL_8PSK_MASK,
3281 NULL, HFILL}
3283 {&hf_dvb_s2_table_tx_type_uw_symbol_16qam, {
3284 "UW symbol 16QAM", "dvb-s2_table.tx_type.uw_symbol_16qam",
3285 FT_UINT8, BASE_HEX, NULL, DVB_S2_TABLE_TX_TYPE_UW_SYMBOL_16QAM_MASK,
3286 NULL, HFILL}
3288 {&hf_dvb_s2_table_tx_type_waveform_id, {
3289 "Tx type waveform id", "dvb-s2_table.tx_type.waveform_id",
3290 FT_UINT8, BASE_HEX, NULL, 0x0,
3291 NULL, HFILL}
3293 {&hf_dvb_s2_table_tx_type_tx_start_offset, {
3294 "Tx type tx start offset 1", "dvb-s2_table.tx_type.tx_start_offset",
3295 FT_UINT32, BASE_DEC, NULL, DVB_S2_TABLE_TX_TYPE_TX_START_OFFSET_MASK,
3296 NULL, HFILL}
3298 /* BCT LM Tx*/
3299 {&hf_dvb_s2_table_tx_type_tx_start_offset_1, {
3300 "Tx type tx start offset 1", "dvb-s2_table.tx_type.tx_start_offset_1",
3301 FT_UINT8, BASE_DEC, NULL, 0x0,
3302 NULL, HFILL}
3304 {&hf_dvb_s2_table_tx_type_tx_start_offset_2, {
3305 "Tx type tx start offset 1", "dvb-s2_table.tx_type.tx_start_offset_1",
3306 FT_UINT24, BASE_DEC, NULL, DVB_S2_TABLE_TX_TYPE_TX_START_OFFSET_MASK,
3307 NULL , HFILL}
3309 /* BCT CPM Tx */
3310 {&hf_dvb_s2_table_tx_type_modulation_mh, {
3311 "Tx type modulation mh", "dvb-s2_table.tx_type.modulation_mh",
3312 FT_UINT8, BASE_DEC, NULL, DVB_S2_TABLE_TX_TYPE_MODULATION_MH_MASK,
3313 NULL, HFILL}
3315 {&hf_dvb_s2_table_tx_type_modulation_ph, {
3316 "Tx type modulation ph", "dvb-s2_table.tx_type.modulation_ph",
3317 FT_UINT8, BASE_DEC, NULL, DVB_S2_TABLE_TX_TYPE_MODULATION_PH_MASK,
3318 NULL, HFILL}
3320 {&hf_dvb_s2_table_tx_type_modulation_type, {
3321 "Tx type modulation type", "dvb-s2_table.tx_type.modulation_type",
3322 FT_UINT8, BASE_DEC, VALS(table_txType_modulationType), DVB_S2_TABLE_TX_TYPE_MODULATION_TYPE_MASK,
3323 NULL, HFILL}
3325 {&hf_dvb_s2_table_tx_type_alpha_rc, {
3326 "Tx type alpha_rc", "dvb-s2_table.tx_type.alpha_rc",
3327 FT_UINT8, BASE_DEC, NULL, 0x0,
3328 NULL, HFILL}
3330 {&hf_dvb_s2_table_tx_type_code_rate, {
3331 "Tx type code rate", "dvb-s2_table.tx_type.code_rate",
3332 FT_UINT8, BASE_HEX, VALS(table_txType_codeRate), DVB_S2_TABLE_TX_TYPE_CODE_RATE_MASK,
3333 NULL, HFILL}
3335 {&hf_dvb_s2_table_tx_type_constraint_length_k, {
3336 "Tx type constraint length K", "dvb-s2_table.tx_type.constraint_length_k",
3337 FT_UINT8, BASE_HEX, VALS(table_txType_constraintLengthK), DVB_S2_TABLE_TX_TYPE_CONSTRAINT_LENGTH_K_MASK,
3338 NULL, HFILL}
3340 {&hf_dvb_s2_table_tx_type_uw_length, {
3341 "Tx type UW length", "dvb-s2_table.tx_type.uw_length",
3342 FT_UINT8, BASE_DEC, NULL, 0x0,
3343 NULL, HFILL}
3345 {&hf_dvb_s2_table_tx_type_nbr_uw_segments, {
3346 "Tx type number UW segments", "dvb-s2_table.tx_type.nbr_uw_segments",
3347 FT_UINT8, BASE_DEC, NULL, 0x0,
3348 NULL, HFILL}
3350 {&hf_dvb_s2_table_tx_type_uw_segment, {
3351 "UW segment", "dvb-s2_table.tx_type.uw_segment",
3352 FT_BYTES, BASE_NONE, NULL, 0x0,
3353 NULL, HFILL}
3355 {&hf_dvb_s2_table_tx_type_uw_segment_start, {
3356 "UW segment start", "dvb-s2_table.tx_type.uw_segment.start",
3357 FT_UINT16, BASE_DEC, NULL, 0x0,
3358 NULL, HFILL}
3360 {&hf_dvb_s2_table_tx_type_uw_segment_length, {
3361 "UW segment length", "dvb-s2_table.tx_type.uw_segment.length",
3362 FT_UINT8, BASE_DEC, NULL, 0x0,
3363 NULL, HFILL}
3365 {&hf_dvb_s2_table_tx_type_param_interleaver, {
3366 "Tx type parameterized interleaver", "dvb-s2_table.tx_type.param_interleaver",
3367 FT_UINT8, BASE_DEC, NULL, DVB_S2_TABLE_TX_TYPE_PARAM_INTERLEAVER_MASK,
3368 NULL, HFILL}
3370 {&hf_dvb_s2_table_tx_type_n, {
3371 "Tx type N", "dvb-s2_table.tx_type.n",
3372 FT_UINT16, BASE_DEC, NULL, DVB_S2_TABLE_TX_TYPE_N_MASK,
3373 NULL, HFILL}
3375 {&hf_dvb_s2_table_tx_type_s, {
3376 "Tx type s", "dvb-s2_table.tx_type.s",
3377 FT_UINT16, BASE_DEC, NULL, DVB_S2_TABLE_TX_TYPE_S_MASK,
3378 NULL, HFILL}
3380 {&hf_dvb_s2_table_tx_type_p_interleaver, {
3381 "Tx type p", "dvb-s2_table.tx_type.p",
3382 FT_UINT16, BASE_DEC, NULL, DVB_S2_TABLE_TX_TYPE_P_MASK,
3383 NULL, HFILL}
3385 {&hf_dvb_s2_table_tx_type_n1_12, {
3386 "Tx type N1/12", "dvb-s2_table.tx_type.n1_12",
3387 FT_UINT16, BASE_DEC, NULL, DVB_S2_TABLE_TX_TYPE_N1_12_MASK,
3388 NULL, HFILL}
3390 {&hf_dvb_s2_table_tx_type_k1_12, {
3391 "Tx type K1/12", "dvb-s2_table.tx_type.k1_12",
3392 FT_UINT16, BASE_DEC, NULL, DVB_S2_TABLE_TX_TYPE_K1_12_MASK,
3393 NULL, HFILL}
3395 {&hf_dvb_s2_table_tx_type_K2_12, {
3396 "Tx type K2/12", "dvb-s2_table.tx_type.k2_12",
3397 FT_UINT16, BASE_DEC, NULL, DVB_S2_TABLE_TX_TYPE_K2_12_MASK,
3398 NULL, HFILL}
3400 {&hf_dvb_s2_table_tx_type_K3_12, {
3401 "Tx type K3/12", "dvb-s2_table.tx_type.k3_12",
3402 FT_UINT16, BASE_DEC, NULL, DVB_S2_TABLE_TX_TYPE_K3_12_MASK,
3403 NULL, HFILL}
3405 {&hf_dvb_s2_table_tx_type_pi_i, {
3406 "Tx type PI(i)", "dvb-s2_table.tx_type.pi_i",
3407 FT_BYTES, BASE_NONE, NULL, 0x0,
3408 NULL, HFILL}
3410 /* SPT */
3411 {&hf_dvb_s2_table_satellite_loop_count, {
3412 "Table satellite loop count", "dvb-s2_table.satellite_loop_count",
3413 FT_UINT8, BASE_DEC, NULL, 0x0,
3414 NULL, HFILL}
3416 {&hf_dvb_s2_table_satellite, {
3417 "Satellite", "dvb-s2_table.satellite",
3418 FT_BYTES, BASE_NONE, NULL, 0x0,
3419 NULL, HFILL}
3421 {&hf_dvb_s2_table_satellite_id, {
3422 "Satellite id", "dvb-s2_table.satellite.id",
3423 FT_UINT8, BASE_HEX, NULL, 0x0,
3424 NULL, HFILL}
3426 {&hf_dvb_s2_table_satellite_x_coordinate, {
3427 "Satellite X coordinate", "dvb-s2_table.satellite.x_coordinate",
3428 FT_FLOAT, BASE_NONE, NULL, 0x0,
3429 NULL, HFILL}
3431 {&hf_dvb_s2_table_satellite_y_coordinate, {
3432 "Satellite Y coordinate", "dvb-s2_table.satellite.y_coordinate",
3433 FT_FLOAT, BASE_NONE, NULL, 0x0,
3434 NULL, HFILL}
3436 {&hf_dvb_s2_table_satellite_z_coordinate, {
3437 "Satellite Z coordinate", "dvb-s2_table.satellite.z_coordinate",
3438 FT_FLOAT, BASE_NONE, NULL, 0x0,
3439 NULL, HFILL}
3441 /* NIT - RMT */
3442 {&hf_dvb_s2_table_network_descriptors_length, {
3443 "Network descriptors length", "dvb-s2_table.network_descriptors_length",
3444 FT_UINT16, BASE_DEC, NULL, DVB_S2_TABLE_NETWORK_DESC_LENGTH_MASK,
3445 NULL, HFILL}
3447 {&hf_dvb_s2_table_multiplex_streams_spec_length, {
3448 "Multiplex streams spec loop length", "dvb-s2_table.multiplex_streams_spec_length",
3449 FT_UINT16, BASE_DEC, NULL, DVB_S2_TABLE_MULTIPLEX_STREAMS_LENGTH_MASK,
3450 NULL, HFILL}
3452 {&hf_dvb_s2_table_multiplex, {
3453 "Multiplex stream", "dvb-s2_table.multiplex",
3454 FT_BYTES, BASE_NONE, NULL, 0x0,
3455 NULL, HFILL}
3457 {&hf_dvb_s2_table_multiplex_forward_multiplex, {
3458 "Forward multiplex", "dvb-s2_table.multiplex.forward_multiplex",
3459 FT_UINT16, BASE_DEC, NULL, 0x0,
3460 NULL, HFILL}
3462 {&hf_dvb_s2_table_multiplex_reward_multiplex, {
3463 "Return Multiplex", "dvb-s2_table.multiplex.reward_multiplex",
3464 FT_UINT16, BASE_DEC, NULL, 0x0,
3465 NULL, HFILL}
3467 {&hf_dvb_s2_table_multiplex_original_network_id, {
3468 "Multiplex stream original network id", "dvb-s2_table.multiplex.original_network_id",
3469 FT_UINT16, BASE_DEC, NULL, 0x0,
3470 NULL, HFILL}
3472 {&hf_dvb_s2_table_multiplex_transport_descriptors_length, {
3473 "Multiplex stream transport descriptors length", "dvb-s2_table.multiplex.transport_descriptors_length",
3474 FT_UINT16, BASE_DEC, NULL, DVB_S2_TABLE_MULTIPLEX_TRANSPORT_DESC_LENGTH_MASK,
3475 NULL, HFILL}
3477 /* TDT */
3478 {&hf_dvb_s2_reserved_future_use, {
3479 "Reserved for future use", "dvb-s2_table.reserved_future_use",
3480 FT_UINT8, BASE_HEX, NULL, 0x40,
3481 NULL, HFILL}
3483 {&hf_dvb_s2_reserved_tdt, {
3484 "Reserved", "dvb-s2_table.reserved",
3485 FT_UINT8, BASE_HEX, NULL, 0x30,
3486 NULL, HFILL}
3488 {&hf_dvb_s2_tdt_date, {
3489 "Date", "dvb-s2_table.date",
3490 FT_UINT16, BASE_HEX, NULL, 0x0,
3491 NULL, HFILL}
3493 {&hf_dvb_s2_tdt_hour, {
3494 "Hour", "dvb-s2_table.hour",
3495 FT_UINT16, BASE_HEX, NULL, 0x0,
3496 NULL, HFILL}
3498 {&hf_dvb_s2_tdt_minute, {
3499 "Minute", "dvb-s2_table.minute",
3500 FT_UINT8, BASE_HEX, NULL, 0x0,
3501 NULL, HFILL}
3503 {&hf_dvb_s2_tdt_second, {
3504 "Second", "dvb-s2_table.second",
3505 FT_UINT8, BASE_HEX, NULL, 0x0,
3506 NULL, HFILL}
3508 /* MMT2 */
3509 {&hf_dvb_s2_table_svn_number, {
3510 "Table svn number", "dvb-s2_table.svn_number",
3511 FT_UINT16, BASE_DEC, NULL, 0x0,
3512 NULL, HFILL}
3514 {&hf_dvb_s2_table_svn_prefix_size, {
3515 "Table svn prefix size", "dvb-s2_table.svn_prefix_size",
3516 FT_UINT8, BASE_DEC, NULL, DVB_S2_TABLE_SVN_PREFIX_SIZE_MASK,
3517 NULL, HFILL}
3519 {&hf_dvb_s2_table_pt_count, {
3520 "Table pt count", "dvb-s2_table.pt_count",
3521 FT_UINT8, BASE_DEC, NULL, 0x0,
3522 NULL, HFILL}
3524 {&hf_dvb_s2_table_protocol, {
3525 "Protocol", "dvb-s2_table.protocol",
3526 FT_BYTES, BASE_NONE, NULL, 0x0,
3527 NULL, HFILL}
3529 {&hf_dvb_s2_table_pt_protocol_type, {
3530 "Protocol type", "dvb-s2_table.pt.protocol_type",
3531 FT_UINT16, BASE_HEX, NULL, 0x0,
3532 NULL, HFILL}
3534 {&hf_dvb_s2_table_pt_address_size, {
3535 "Protocol address size", "dvb-s2_table.pt.address_size",
3536 FT_UINT8, BASE_DEC, NULL, 0x0,
3537 NULL, HFILL}
3539 {&hf_dvb_s2_table_pt_mapping_sections, {
3540 "Protocol mapping sections", "dvb-s2_table.pt.mapping_sections",
3541 FT_UINT8, BASE_DEC, NULL, 0x0,
3542 NULL, HFILL}
3544 {&hf_dvb_s2_table_pt_mapping_section, {
3545 "Mapping section", "dvb-s2_table.pt.mapping_section",
3546 FT_BYTES, BASE_NONE, NULL, 0x0,
3547 NULL, HFILL}
3549 {&hf_dvb_s2_table_pt_ms_inclusion_start, {
3550 "Mapping section inclusion start", "dvb-s2_table.pt.ms.inclusion_start",
3551 FT_BYTES, BASE_NONE, NULL, 0x0,
3552 NULL, HFILL}
3554 {&hf_dvb_s2_table_pt_ms_inclusion_end, {
3555 "Mapping section inclusion end", "dvb-s2_table.pt.ms.inclusion_end",
3556 FT_BYTES, BASE_NONE, NULL, 0x0,
3557 NULL, HFILL}
3559 {&hf_dvb_s2_table_pt_ms_exclusions, {
3560 "Mapping section exclusions", "dvb-s2_table.pt.ms.exclusions",
3561 FT_UINT8, BASE_DEC, NULL, 0x0,
3562 NULL, HFILL}
3564 {&hf_dvb_s2_table_pt_ms_exclusion, {
3565 "Exclusion", "dvb-s2_table.pt.ms.exclusion",
3566 FT_BYTES, BASE_NONE, NULL, 0x0,
3567 NULL, HFILL}
3569 {&hf_dvb_s2_table_pt_ms_exclusion_start, {
3570 "Exclusion start", "dvb-s2_table.pt.ms.exclusion.start",
3571 FT_BYTES, BASE_NONE, NULL, 0x0,
3572 NULL, HFILL}
3574 {&hf_dvb_s2_table_pt_ms_exclusion_end, {
3575 "Exclusion end", "dvb-s2_table.pt.ms.exclusion.end",
3576 FT_BYTES, BASE_NONE, NULL, 0x0,
3577 NULL, HFILL}
3579 {&hf_dvb_s2_table_pt_ms_mac24_base, {
3580 "Mapping section mac24 base", "dvb-s2_table.pt.ms.mac24_base",
3581 FT_UINT24, BASE_HEX, NULL, 0x0,
3582 NULL, HFILL}
3584 {&hf_dvb_s2_table_pt_ms_mcast_prefix_size, {
3585 "Mapping section multicast prefix size", "dvb-s2_table.pt.ms.mcast_prefix_size",
3586 FT_UINT8, BASE_DEC, NULL, DVB_S2_TABLE_PT_MS_MCAST_PREFIX_SIZE_MASK,
3587 NULL, HFILL}
3590 /* Descriptors */
3591 {&hf_dvb_s2_table_descriptor, {
3592 "Descriptor", "dvb-s2_table.descriptor",
3593 FT_BYTES, BASE_NONE, NULL, 0x0,
3594 NULL, HFILL}
3596 {&hf_dvb_s2_table_desc_tag, {
3597 "Descriptor tag", "dvb-s2_table.desc.tag",
3598 FT_UINT8, BASE_HEX, VALS(table_desc_type), 0x0,
3599 NULL, HFILL}
3601 {&hf_dvb_s2_table_desc_length, {
3602 "Descriptor length", "dvb-s2_table.desc.length",
3603 FT_UINT8, BASE_DEC, NULL, 0x0,
3604 NULL, HFILL}
3606 {&hf_dvb_s2_table_nnd_char, {
3607 "Name", "dvb-s2_table.desc.nnd_name",
3608 FT_BYTES, BASE_NONE, NULL, 0x0,
3609 NULL, HFILL}
3611 {&hf_dvb_s2_table_ld_fm_id, {
3612 "Forward Multiplex", "dvb-s2_table.desc.ld_fm_id",
3613 FT_UINT16, BASE_HEX, NULL, 0x0,
3614 NULL, HFILL}
3616 {&hf_dvb_s2_table_ld_on_id, {
3617 "Original network id", "dvb-s2_table.desc.ld_on_id",
3618 FT_UINT16, BASE_HEX, NULL, 0x0,
3619 NULL, HFILL}
3621 {&hf_dvb_s2_table_ld_rm_id, {
3622 "Return Multiplex", "dvb-s2_table.desc.ld_rm_id",
3623 FT_UINT16, BASE_HEX, NULL, 0x0,
3624 NULL, HFILL}
3626 {&hf_dvb_s2_table_ld_service_id, {
3627 "Service id", "dvb-s2_table.desc.ld_service_id",
3628 FT_UINT16, BASE_HEX, NULL, 0x0,
3629 NULL, HFILL}
3631 {&hf_dvb_s2_table_ld_linkage_type, {
3632 "Linkage type", "dvb-s2_table.desc.ld_linkage_type",
3633 FT_UINT8, BASE_HEX, NULL, 0x0,
3634 NULL, HFILL}
3636 {&hf_dvb_s2_table_ld_ho_type, {
3637 "Hand-over type", "dvb-s2_table.desc.ld_hand_over_type",
3638 FT_UINT8, BASE_HEX, NULL, DVB_S2_TABLE_DESC_HAND_OVER_TYPE_MASK,
3639 NULL, HFILL}
3641 {&hf_dvb_s2_table_ld_reserved_future_use, {
3642 "Reserved for future use", "dvb-s2_table.desc.ld_reserved_future_use",
3643 FT_UINT8, BASE_HEX, NULL, DVB_S2_TABLE_DESC_RESERVED_FOR_FUTURE_USE_MASK,
3644 NULL, HFILL}
3646 {&hf_dvb_s2_table_ld_origin_type, {
3647 "Origin type", "dvb-s2_table.desc.ld_origin_type",
3648 FT_UINT8, BASE_HEX, NULL, DVB_S2_TABLE_DESC_ORIGIN_TYPE_MASK,
3649 NULL, HFILL}
3651 {&hf_dvb_s2_table_ld_network_id, {
3652 "Network Id", "dvb-s2_table.desc.ld_network_id",
3653 FT_UINT16, BASE_HEX, NULL, 0x0,
3654 NULL, HFILL}
3656 {&hf_dvb_s2_table_ld_initial_service_id, {
3657 "Initial service Id", "dvb-s2_table.desc.ld_initial_service_id",
3658 FT_UINT16, BASE_HEX, NULL, 0x0,
3659 NULL, HFILL}
3661 {&hf_dvb_s2_table_ld_target_event_id, {
3662 "Target event id", "dvb-s2_table.desc.ld_target_event_id",
3663 FT_UINT16, BASE_HEX, NULL, 0x0,
3664 NULL, HFILL}
3666 {&hf_dvb_s2_table_ld_target_listed, {
3667 "Target listed", "dvb-s2_table.desc.ld_target_listed",
3668 FT_UINT8, BASE_HEX, NULL, 0x80,
3669 NULL, HFILL}
3671 {&hf_dvb_s2_table_ld_event_simulcast, {
3672 "Event simulcast", "dvb-s2_table.desc.ld_event_simulcast",
3673 FT_UINT8, BASE_HEX, NULL, 0x40,
3674 NULL, HFILL}
3676 {&hf_dvb_s2_table_ld_reserved, {
3677 "Reserved", "dvb-s2_table.desc.ld_reserved",
3678 FT_UINT8, BASE_HEX, NULL, 0x3F,
3679 NULL, HFILL}
3681 {&hf_dvb_s2_table_ld_private_data, {
3682 "Private data", "dvb-s2_table.desc.ld_private_data",
3683 FT_BYTES, BASE_NONE, NULL, 0x0,
3684 NULL, HFILL}
3686 {&hf_dvb_s2_table_ld_population_id_loop_count, {
3687 "Population id loop count", "dvb-s2_table.desc.ld_population_id_loop_count",
3688 FT_UINT8, BASE_DEC, NULL, 0x0,
3689 NULL, HFILL}
3691 {&hf_dvb_s2_table_ld_population_id_base, {
3692 "Population id base", "dvb-s2_table.desc.ld_population_id_base",
3693 FT_UINT16, BASE_DEC, NULL, 0x0,
3694 NULL, HFILL}
3696 {&hf_dvb_s2_table_ld_population_id_mask, {
3697 "Population id mask", "dvb-s2_table.desc.ld_population_id_mask",
3698 FT_UINT16, BASE_DEC, NULL, 0x0,
3699 NULL, HFILL}
3701 /* Satellite Return Link Descriptor */
3702 {&hf_dvb_s2_table_srld_satellite_id, {
3703 "Satellite Id", "dvb-s2_table.desc.srld_satellite_id",
3704 FT_UINT8, BASE_DEC, NULL, 0x0,
3705 NULL, HFILL}
3707 {&hf_dvb_s2_table_srld_beam_id, {
3708 "Beam Id", "dvb-s2_table.desc.srld_beam_id",
3709 FT_UINT16, BASE_DEC, NULL, 0x0,
3710 NULL, HFILL}
3712 {&hf_dvb_s2_table_srld_gateway_id, {
3713 "Gateway Id", "dvb-s2_table.desc.srld_gateway_id",
3714 FT_UINT8, BASE_DEC, NULL, 0x0,
3715 NULL, HFILL}
3717 {&hf_dvb_s2_table_srld_reserved, {
3718 "Reserved data", "dvb-s2_table.desc.srld_reserved",
3719 FT_UINT8, BASE_DEC, NULL, 0x0,
3720 NULL, HFILL}
3722 {&hf_dvb_s2_table_srld_orbital_position, {
3723 "Orbital position", "dvb-s2_table.desc.srld_orbital_position",
3724 FT_UINT16, BASE_HEX, NULL, 0x0,
3725 NULL, HFILL}
3727 {&hf_dvb_s2_table_srld_west_east_flag, {
3728 "West east flag", "dvb-s2_table.desc.srld_west_east_flag",
3729 FT_UINT8, BASE_DEC, NULL, 0x01,
3730 NULL, HFILL}
3732 {&hf_dvb_s2_table_srld_superframe_sequence, {
3733 "Superframe sequence", "dvb-s2_table.desc.srld_superframe_sequence",
3734 FT_UINT8, BASE_DEC, NULL, 0x0,
3735 NULL, HFILL}
3737 {&hf_dvb_s2_table_srld_tx_frequency_offset, {
3738 "Tx frequency offset", "dvb-s2_table.desc.srld_tx_frequency_offset",
3739 FT_UINT24, BASE_DEC, NULL, 0x0,
3740 NULL, HFILL}
3742 {&hf_dvb_s2_table_srld_zero_frequency_offset, {
3743 "Zero frequency offset", "dvb-s2_table.desc.srld_zero_frequency_offset",
3744 FT_UINT24, BASE_DEC, NULL, 0x0,
3745 NULL, HFILL}
3747 {&hf_dvb_s2_table_srld_private_data, {
3748 "Private data", "dvb-s2_table.desc.srld_private_data",
3749 FT_BYTES, BASE_NONE, NULL, 0x0,
3750 NULL, HFILL}
3752 /* Logon Initialize Descriptor */
3753 {&hf_dvb_s2_table_lid_group_id, {
3754 "Group Id", "dvb-s2_table.desc.lid_group_id",
3755 FT_UINT8, BASE_DEC, NULL, 0x0,
3756 NULL, HFILL}
3758 {&hf_dvb_s2_table_lid_logon_id, {
3759 "Logon Id", "dvb-s2_table.desc.lid_logon_id",
3760 FT_UINT16, BASE_DEC, NULL, 0x0,
3761 NULL, HFILL}
3763 {&hf_dvb_s2_table_lid_continuous_carrier, {
3764 "Continuous carrier", "dvb-s2_table.desc.lid_continuous_carrier",
3765 FT_UINT8, BASE_HEX, NULL, 0x20,
3766 NULL, HFILL}
3768 {&hf_dvb_s2_table_lid_security_handshake, {
3769 "Security handsake required", "dvb-s2_table.desc.lid_security_handshake",
3770 FT_UINT8, BASE_HEX, NULL, 0x10,
3771 NULL, HFILL}
3773 {&hf_dvb_s2_table_lid_prefix_flag, {
3774 "Prefix flag", "dvb-s2_table.desc.lid_prefix_flag",
3775 FT_UINT8, BASE_HEX, NULL, 0x08,
3776 NULL, HFILL}
3778 {&hf_dvb_s2_table_lid_data_unit_label_flag, {
3779 "Data unit label flag", "dvb-s2_table.desc.lid_data_unit_label_flag",
3780 FT_UINT8, BASE_HEX, NULL, 0x04,
3781 NULL, HFILL}
3783 {&hf_dvb_s2_table_lid_mini_slot_flag, {
3784 "Mini slot flag", "dvb-s2_table.desc.lid_mini_slot_flag",
3785 FT_UINT8, BASE_HEX, NULL, 0x02,
3786 NULL, HFILL}
3788 {&hf_dvb_s2_table_lid_contention_based_mini_slot_flag, {
3789 "Contention based mini slot flag", "dvb-s2_table.desc.lid_contention_based_mini_slot_flag",
3790 FT_UINT8, BASE_HEX, NULL, 0x01,
3791 NULL, HFILL}
3793 {&hf_dvb_s2_table_lid_capacity_type_flag, {
3794 "Capacity type flag", "dvb-s2_table.desc.lid_capacity_type_flag",
3795 FT_UINT8, BASE_HEX, NULL, 0x40,
3796 NULL, HFILL}
3798 {&hf_dvb_s2_table_lid_traffic_burst_type, {
3799 "Traffic burst type", "dvb-s2_table.desc.lid_traffic_burst_type",
3800 FT_UINT8, BASE_HEX, NULL, 0x20,
3801 NULL, HFILL}
3803 {&hf_dvb_s2_table_lid_connectivity, {
3804 "Connectivity", "dvb-s2_table.desc.lid_connectivity",
3805 FT_UINT8, BASE_HEX, NULL, 0x10,
3806 NULL, HFILL}
3808 {&hf_dvb_s2_table_lid_return_vpi, {
3809 "Return vpi", "dvb-s2_table.desc.lid_return_vpi",
3810 FT_UINT8, BASE_DEC, NULL, 0x0,
3811 NULL, HFILL}
3813 {&hf_dvb_s2_table_lid_return_vci, {
3814 "Return vci", "dvb-s2_table.desc.lid_return_vci",
3815 FT_UINT16, BASE_DEC, NULL, 0x0,
3816 NULL, HFILL}
3818 {&hf_dvb_s2_table_lid_return_signalling_vpi, {
3819 "Return signalling vpi", "dvb-s2_table.desc.lid_return_signalling_vpi",
3820 FT_UINT8, BASE_DEC, NULL, 0x0,
3821 NULL, HFILL}
3823 {&hf_dvb_s2_table_lid_return_signalling_vci, {
3824 "Return signalling vci", "dvb-s2_table.desc.lid_return_signalling_vci",
3825 FT_UINT16, BASE_DEC, NULL, 0x0,
3826 NULL, HFILL}
3828 {&hf_dvb_s2_table_lid_forward_signalling_vpi, {
3829 "Forward signalling vpi", "dvb-s2_table.desc.lid_forward_signalling_vpi",
3830 FT_UINT8, BASE_DEC, NULL, 0x0,
3831 NULL, HFILL}
3833 {&hf_dvb_s2_table_lid_forward_signalling_vci, {
3834 "Forward signalling vci", "dvb-s2_table.desc.lid_forward_signalling_vci",
3835 FT_UINT16, BASE_DEC, NULL, 0x0,
3836 NULL, HFILL}
3838 {&hf_dvb_s2_table_lid_return_trf_pid, {
3839 "Return trf pid", "dvb-s2_table.desc.lid_return_trf_pid",
3840 FT_UINT16, BASE_DEC, NULL, 0x1FFF,
3841 NULL, HFILL}
3843 {&hf_dvb_s2_table_lid_return_ctrl_mngm_pid, {
3844 "Return ctrl mngm pid", "dvb-s2_table.desc.lid_return_ctrl_mngm_pid",
3845 FT_UINT16, BASE_DEC, NULL, 0x1FFF,
3846 NULL, HFILL}
3848 {&hf_dvb_s2_table_lid_cra_level, {
3849 "Cra level", "dvb-s2_table.desc.lid_cra_level",
3850 FT_UINT24, BASE_DEC, NULL, 0x0,
3851 NULL, HFILL}
3853 {&hf_dvb_s2_table_lid_vbdc_max, {
3854 "VBDC max", "dvb-s2_table.desc.lid_vbdc_max",
3855 FT_UINT16, BASE_DEC, NULL, 0x07FF,
3856 NULL, HFILL}
3858 {&hf_dvb_s2_table_lid_rbdc_max, {
3859 "RBDC max", "dvb-s2_table.desc.lid_rbdc_max",
3860 FT_UINT24, BASE_DEC, NULL, 0x0,
3861 NULL, HFILL}
3863 {&hf_dvb_s2_table_lid_rbdc_timeout, {
3864 "RBDC timeout", "dvb-s2_table.desc.lid_rbdc_timeout",
3865 FT_UINT16, BASE_DEC, NULL, 0x0,
3866 NULL, HFILL}
3868 /* Forward Interaction Path Descriptor */
3869 {&hf_dvb_s2_table_fipd_original_network_id, {
3870 "Original network id", "dvb-s2_table.desc.fipd_original_network_id",
3871 FT_UINT16, BASE_DEC, NULL, 0x0,
3872 NULL, HFILL}
3874 {&hf_dvb_s2_table_fipd_transport_stream_id, {
3875 "Transport stream id", "dvb-s2_table.desc.fipd_transport_stream_id",
3876 FT_UINT16, BASE_DEC, NULL, 0x0,
3877 NULL, HFILL}
3879 {&hf_dvb_s2_table_fipd_pid_loop_count, {
3880 "PID loop count", "dvb-s2_table.desc.fipd_pid_loop_count",
3881 FT_UINT8, BASE_DEC, NULL, 0x0F,
3882 NULL, HFILL}
3884 {&hf_dvb_s2_table_fipd_pid, {
3885 "PID", "dvb-s2_table.desc.fipd_pid",
3886 FT_UINT16, BASE_DEC, NULL, 0x1FFF,
3887 NULL, HFILL}
3889 /* Return Interaction Path Descriptor */
3890 {&hf_dvb_s2_table_ripd_continuous_carrier, {
3891 "Continuous carrier", "dvb-s2_table.desc.ripd_continuous_carrier",
3892 FT_UINT8, BASE_DEC, NULL, 0x10,
3893 NULL, HFILL}
3895 {&hf_dvb_s2_desc_network_routing, {
3896 "Network routing", "dvb-s2_table.desc.ripd_network_routing",
3897 FT_BYTES, BASE_NONE, NULL, 0x0,
3898 NULL, HFILL}
3900 {&hf_dvb_s2_table_ripd_network_routing_label_loop_count, {
3901 "Network routing label loop count", "dvb-s2_table.desc.ripd_network_routing_label_loop_count",
3902 FT_UINT8, BASE_DEC, NULL, 0x0F,
3903 NULL, HFILL}
3905 {&hf_dvb_s2_table_ripd_allocation_desallocation_flag, {
3906 "Allocation desallocation flag", "dvb-s2_table.desc.network_touing.ripd_allocation_desallocation_flag",
3907 FT_UINT8, BASE_DEC, NULL, 0x02,
3908 NULL, HFILL}
3910 {&hf_dvb_s2_table_ripd_pid_flag, {
3911 "PID flag", "dvb-s2_table.desc.network_touing.ripd_pid_flag",
3912 FT_UINT8, BASE_DEC, NULL, 0x01,
3913 NULL, HFILL}
3915 {&hf_dvb_s2_table_ripd_pid_loop_count, {
3916 "PID loop count", "dvb-s2_table.desc.network_touing.ripd_pid_loop_count",
3917 FT_UINT8, BASE_DEC, NULL, 0x0,
3918 NULL, HFILL}
3920 {&hf_dvb_s2_table_ripd_pid, {
3921 "PID", "dvb-s2_table.desc.network_touing.ripd_pid",
3922 FT_UINT16, BASE_DEC, NULL, 0x1FFF,
3923 NULL, HFILL}
3925 {&hf_dvb_s2_table_ripd_vpi_vci_flag, {
3926 "VPI VCI flag", "dvb-s2_table.desc.network_touing.ripd_vpi_vci_flag",
3927 FT_UINT8, BASE_DEC, NULL, 0x01,
3928 NULL, HFILL}
3930 {&hf_dvb_s2_table_ripd_vpi_vci_loop_count, {
3931 "VPI VCI loop count", "dvb-s2_table.desc.network_touing.ripd_vpi_vci_loop_count",
3932 FT_UINT8, BASE_DEC, NULL, 0x0,
3933 NULL, HFILL}
3935 {&hf_dvb_s2_table_ripd_vpi, {
3936 "VPI", "dvb-s2_table.desc.network_touing.ripd_vpi",
3937 FT_UINT8, BASE_DEC, NULL, 0x0,
3938 NULL, HFILL}
3940 {&hf_dvb_s2_table_ripd_vci, {
3941 "VCI", "dvb-s2_table.desc.network_touing.ripd_vci",
3942 FT_UINT16, BASE_DEC, NULL, 0x0,
3943 NULL, HFILL}
3945 {&hf_dvb_s2_table_ripd_route_id_flag, {
3946 "Route id flag", "dvb-s2_table.desc.network_touing.ripd_route_id_flag",
3947 FT_UINT8, BASE_DEC, NULL, 0x01,
3948 NULL, HFILL}
3950 {&hf_dvb_s2_table_ripd_route_id_loop_count, {
3951 "Route id loop count", "dvb-s2_table.desc.network_touing.ripd_route_id_loop_count",
3952 FT_UINT8, BASE_DEC, NULL, 0x01,
3953 NULL, HFILL}
3955 {&hf_dvb_s2_table_ripd_route_id, {
3956 "Route id", "dvb-s2_table.desc.network_touing.ripd_route_id",
3957 FT_UINT16, BASE_DEC, NULL, 0x0,
3958 NULL, HFILL}
3960 {&hf_dvb_s2_table_ripd_channel_id, {
3961 "Channel id", "dvb-s2_table.desc.network_touing.ripd_channel_id",
3962 FT_UINT16, BASE_DEC, NULL, 0x0,
3963 NULL, HFILL}
3965 /* Correction Control Descriptor */
3966 {&hf_dvb_s2_table_corcd_acq_response_timeout, {
3967 "ACQ response timeout", "dvb-s2_table.desc.corcd_acq_response_timeout",
3968 FT_UINT32, BASE_DEC, NULL, 0x0,
3969 NULL, HFILL}
3971 {&hf_dvb_s2_table_corcd_sync_response_timeout, {
3972 "SYNC response timeout", "dvb-s2_table.desc.corcd_sync_response_timeout",
3973 FT_UINT32, BASE_DEC, NULL, 0x0,
3974 NULL, HFILL}
3976 {&hf_dvb_s2_table_corcd_acq_max_losses, {
3977 "ACQ max losses", "dvb-s2_table.desc.corcd_acq_max_losses",
3978 FT_UINT8, BASE_DEC, NULL, 0x0,
3979 NULL, HFILL}
3981 {&hf_dvb_s2_table_corcd_sync_max_losses, {
3982 "SYNC max losses", "dvb-s2_table.desc.corcd_sync_max_losses",
3983 FT_UINT8, BASE_DEC, NULL, 0x0,
3984 NULL, HFILL}
3986 /* Contention Control Descriptor */
3987 {&hf_dvb_s2_table_concd_superframe_id, {
3988 "Superframe id/sequence", "dvb-s2_table.desc.concd_superframe_id",
3989 FT_UINT8, BASE_DEC, NULL, 0x0,
3990 NULL, HFILL}
3992 {&hf_dvb_s2_table_concd_csc_response_timeout, {
3993 "CSC/Logon response timeout", "dvb-s2_table.desc.concd_csc_response_timeout",
3994 FT_UINT32, BASE_DEC, NULL, 0x0,
3995 NULL, HFILL}
3997 {&hf_dvb_s2_table_concd_csc_max_losses, {
3998 "CSC/Logon max losses", "dvb-s2_table.desc.concd_csc_max_losses",
3999 FT_UINT8, BASE_DEC, NULL, 0x0,
4000 NULL, HFILL}
4002 {&hf_dvb_s2_table_concd_max_time_before_retry, {
4003 "Max time before retry", "dvb-s2_table.desc.concd_max_time_before_retry",
4004 FT_UINT32, BASE_DEC, NULL, 0x0,
4005 NULL, HFILL}
4007 /* Satellite Forward Link Descriptor */
4008 {&hf_dvb_s2_table_sfld_satellite_id, {
4009 "Satellite ID", "dvb-s2_table.desc.sfld_satellite_id",
4010 FT_UINT8, BASE_DEC, NULL, 0x0,
4011 NULL, HFILL}
4013 {&hf_dvb_s2_table_sfld_beam_id, {
4014 "Beam ID", "dvb-s2_table.desc.sfld_beam_id",
4015 FT_UINT16, BASE_DEC, NULL, 0x0,
4016 NULL, HFILL}
4018 {&hf_dvb_s2_table_sfld_ncc_id, {
4019 "NCC ID", "dvb-s2_table.desc.sfld_ncc_id",
4020 FT_UINT8, BASE_DEC, NULL, 0x0,
4021 NULL, HFILL}
4023 {&hf_dvb_s2_table_sfld_multiplex_usage, {
4024 "Multiplex usage", "dvb-s2_table.desc.sfld_multiplex_usage",
4025 FT_UINT8, BASE_DEC, NULL, 0xE0,
4026 NULL, HFILL}
4028 {&hf_dvb_s2_table_sfld_local_multiplex_id, {
4029 "Local multiplex id", "dvb-s2_table.desc.sfld_local_multiplex_id",
4030 FT_UINT8, BASE_DEC, NULL, 0x1F,
4031 NULL, HFILL}
4033 {&hf_dvb_s2_table_sfld_frequency, {
4034 "Frequency", "dvb-s2_table.desc.sfld_frequency",
4035 FT_INT32, BASE_DEC, NULL, 0x0,
4036 NULL, HFILL}
4038 {&hf_dvb_s2_table_sfld_orbital_position, {
4039 "Orbital position", "dvb-s2_table.desc.sfld_orbital_position",
4040 FT_UINT16, BASE_HEX, NULL, 0x0,
4041 NULL, HFILL}
4043 {&hf_dvb_s2_table_sfld_west_east_flag, {
4044 "West east flag", "dvb-s2_table.desc.sfld_west_east_flag",
4045 FT_UINT8, BASE_DEC, NULL, 0x80,
4046 NULL, HFILL}
4048 {&hf_dvb_s2_table_sfld_polarization, {
4049 "Polarization", "dvb-s2_table.desc.sfld_polarization",
4050 FT_UINT8, BASE_DEC, NULL, 0x60,
4051 NULL, HFILL}
4053 {&hf_dvb_s2_table_sfld_transmission_standard, {
4054 "Transmission standard", "dvb-s2_table.desc.sfld_transmission_standard",
4055 FT_UINT8, BASE_DEC, NULL, 0x18,
4056 NULL, HFILL}
4058 {&hf_dvb_s2_table_sfld_scrambling_sequence_selector, {
4059 "Scrambling sequence selector", "dvb-s2_table.desc.sfld_scrambling_sequence_selector",
4060 FT_UINT8, BASE_DEC, NULL, 0x04,
4061 NULL, HFILL}
4063 {&hf_dvb_s2_table_sfld_roll_off, {
4064 "Roll-off", "dvb-s2_table.desc.sfld_roll_off",
4065 FT_UINT8, BASE_DEC, NULL, 0x03,
4066 NULL, HFILL}
4068 {&hf_dvb_s2_table_sfld_symbol_rate, {
4069 "Symbol rate", "dvb-s2_table.desc.sfld_symbol_rate",
4070 FT_UINT24, BASE_DEC, NULL, 0x0,
4071 NULL, HFILL}
4073 {&hf_dvb_s2_table_sfld_fec_inner, {
4074 "FEC Inner", "dvb-s2_table.desc.sfld_fec_inner",
4075 FT_UINT8, BASE_DEC, NULL, 0xF0,
4076 NULL, HFILL}
4078 {&hf_dvb_s2_table_sfld_input_stream_identifier, {
4079 "Input stream identifier", "dvb-s2_table.desc.sfld_input_stream_identifier",
4080 FT_UINT8, BASE_DEC, NULL, 0x0,
4081 NULL, HFILL}
4083 {&hf_dvb_s2_table_sfld_reserved_for_forward_spreading, {
4084 "Reserved for forward link spreading", "dvb-s2_table.desc.sfld_reserved_for_forward_spreading",
4085 FT_UINT8, BASE_DEC, NULL, 0xE0,
4086 NULL, HFILL}
4088 {&hf_dvb_s2_table_sfld_scrambling_sequence_index, {
4089 "Scrambling sequence index", "dvb-s2_table.desc.sfld_scrambling_sequence_index",
4090 FT_UINT24, BASE_DEC, NULL, 0x03FFFF,
4091 NULL, HFILL}
4093 {&hf_dvb_s2_table_sfld_private_data, {
4094 "Private data", "dvb-s2_table.desc.sfld_private_data",
4095 FT_BYTES, BASE_NONE, NULL, 0x0,
4096 NULL, HFILL}
4098 {&hf_dvb_s2_table_sfld_ncr_private_data, {
4099 "NCR (Private data)", "dvb-s2_table.desc.sfld_ncr_private_data",
4100 FT_BYTES, BASE_NONE, NULL, 0x0,
4101 NULL, HFILL}
4103 {&hf_dvb_s2_table_sfld_ncr_base_private_data, {
4104 "NCR BASE", "dvb-s2_table.desc.sfld_ncr_base_private_data",
4105 FT_UINT64, BASE_DEC, NULL, 0x0,
4106 NULL, HFILL}
4108 {&hf_dvb_s2_table_sfld_ncr_ext_private_data, {
4109 "NCR EXT", "dvb-s2_table.desc.sfld_ncr_ext_private_data",
4110 FT_UINT16, BASE_DEC, NULL, 0x01FF,
4111 NULL, HFILL}
4113 /* Control assign descriptor */
4114 {&hf_dvb_s2_table_desc_sync_achieved_time_threshold, {
4115 "Descriptor sync achieved time threshold", "dvb-s2_table.desc.sync_achieved_time_threshold",
4116 FT_UINT8, BASE_DEC, NULL, 0x0,
4117 NULL, HFILL}
4119 {&hf_dvb_s2_table_desc_max_sync_tries, {
4120 "Descriptor max sync tries", "dvb-s2_table.desc.max_sync_tries",
4121 FT_UINT8, BASE_DEC, NULL, 0x0,
4122 NULL, HFILL}
4124 {&hf_dvb_s2_table_desc_sync_achieved_freq_threshold, {
4125 "Descriptor sync achieved frequency threshold", "dvb-s2_table.desc.sync_achieved_freq_threshold",
4126 FT_UINT16, BASE_DEC, NULL, 0x0,
4127 NULL, HFILL}
4129 {&hf_dvb_s2_table_desc_ctrl_start_superframe_count, {
4130 "Descriptor control start superframe count", "dvb-s2_table.desc.control_start_superframe_count",
4131 FT_UINT16, BASE_DEC, NULL, 0x0,
4132 NULL, HFILL}
4134 {&hf_dvb_s2_table_desc_ctrl_frame_nbr, {
4135 "Descriptor control frame number", "dvb-s2_table.desc.control_frame_number",
4136 FT_UINT8, BASE_DEC, NULL, 0x0,
4137 NULL, HFILL}
4139 {&hf_dvb_s2_table_desc_ctrl_repeat_period, {
4140 "Descriptor control repeat period", "dvb-s2_table.desc.control_repeat_period",
4141 FT_UINT16, BASE_DEC, NULL, 0x0,
4142 NULL, HFILL}
4144 {&hf_dvb_s2_table_desc_ctrl_timeslot_nbr, {
4145 "Descriptor control timeslot number", "dvb-s2_table.desc.control_timeslot_number",
4146 FT_UINT16, BASE_DEC, NULL, DVB_S2_TABLE_DESC_CTRL_TIMESLOT_NBR_MASK,
4147 NULL, HFILL}
4149 {&hf_dvb_s2_table_desc_sync_start_superframe, {
4150 "Descriptor SYNC start superframe", "dvb-s2_table.desc.sync_start_superframe",
4151 FT_UINT16, BASE_DEC, NULL, 0x0,
4152 NULL, HFILL}
4154 {&hf_dvb_s2_table_desc_sync_frame_nbr, {
4155 "Descriptor SYNC frame number", "dvb-s2_table.desc.sync_frame_number",
4156 FT_UINT8, BASE_DEC, NULL, 0x0,
4157 NULL, HFILL}
4159 {&hf_dvb_s2_table_desc_sync_repeat_period, {
4160 "Descriptor SYNC repeat period", "dvb-s2_table.desc.sync_repeat_period",
4161 FT_UINT16, BASE_DEC, NULL, 0x0,
4162 NULL, HFILL}
4164 {&hf_dvb_s2_table_desc_sync_slot_nbr, {
4165 "Descriptor SYNC timeslot number", "dvb-s2_table.desc.sync_timeslot_number",
4166 FT_UINT16, BASE_DEC, NULL, DVB_S2_TABLE_DESC_CTRL_TIMESLOT_NBR_MASK,
4167 NULL, HFILL}
4169 /* Correction message descriptor */
4170 {&hf_dvb_s2_table_desc_time_correct_flag, {
4171 "Descriptor time correction flag", "dvb-s2_table.desc.time_correct_flag",
4172 FT_UINT8, BASE_HEX, NULL, DVB_S2_TABLE_DESC_TIME_CORRECT_FLAG_MASK,
4173 NULL, HFILL}
4175 {&hf_dvb_s2_table_desc_power_correct_flag, {
4176 "Descriptor power correction flag", "dvb-s2_table.desc.power_correct_flag",
4177 FT_UINT8, BASE_HEX, NULL, DVB_S2_TABLE_DESC_POWER_CORRECT_FLAG_MASK,
4178 NULL, HFILL}
4180 {&hf_dvb_s2_table_desc_freq_correct_flag, {
4181 "Descriptor frequency correction flag", "dvb-s2_table.desc.freq_correct_flag",
4182 FT_UINT8, BASE_HEX, NULL, DVB_S2_TABLE_DESC_FREQ_CORRECT_FLAG_MASK,
4183 NULL, HFILL}
4185 {&hf_dvb_s2_table_desc_slot_type, {
4186 "Descriptor slot type", "dvb-s2_table.desc.slot_type",
4187 FT_UINT8, BASE_HEX, VALS(table_timeslotContent), DVB_S2_TABLE_DESC_SLOT_TYPE_MASK,
4188 NULL, HFILL}
4190 {&hf_dvb_s2_table_desc_burst_time_scaling, {
4191 "Descriptor burst time scaling", "dvb-s2_table.desc.burst_time_scaling",
4192 FT_UINT8, BASE_DEC, NULL, DVB_S2_TABLE_DESC_BURST_TIME_SCALING_MASK,
4193 NULL, HFILL}
4195 {&hf_dvb_s2_table_desc_burst_time_correct, {
4196 "Descriptor burst time correction", "dvb-s2_table.desc.burst_time_correct",
4197 FT_INT8, BASE_DEC, NULL, 0x0,
4198 NULL, HFILL}
4200 {&hf_dvb_s2_table_desc_power_ctrl_flag, {
4201 "Descriptor power control flag", "dvb-s2_table.desc.power_ctrl_flag",
4202 FT_UINT8, BASE_HEX, NULL, DVB_S2_TABLE_DESC_POWER_CTRL_FLAG_MASK,
4203 NULL, HFILL}
4205 {&hf_dvb_s2_table_desc_power_correction, {
4206 "Descriptor power correction", "dvb-s2_table.desc.power_correction",
4207 FT_INT8, BASE_DEC, NULL, DVB_S2_TABLE_DESC_POWER_CORRECTION_MASK,
4208 NULL, HFILL}
4210 {&hf_dvb_s2_table_desc_power_esn0, {
4211 "Descriptor EsN0", "dvb-s2_table.desc.esn0",
4212 FT_INT8, BASE_DEC, NULL, DVB_S2_TABLE_DESC_POWER_CORRECTION_MASK,
4213 NULL, HFILL}
4215 {&hf_dvb_s2_table_desc_freq_correction, {
4216 "Descriptor frequency correction", "dvb-s2_table.desc.freq_correction",
4217 FT_INT16, BASE_DEC, NULL, 0x0,
4218 NULL, HFILL}
4220 /* Correction message extension descriptor */
4221 {&hf_dvb_s2_table_desc_slot_nbr, {
4222 "Descriptor slot number", "dvb-s2_table.desc.slot_number",
4223 FT_UINT16, BASE_DEC, NULL, 0x0,
4224 NULL, HFILL}
4226 {&hf_dvb_s2_table_desc_sf_sequence, {
4227 "Superframe sequence", "dvb-s2_table.desc.cmed.sf.sequence",
4228 FT_UINT8, BASE_HEX, NULL, 0x0,
4229 NULL, HFILL}
4231 {&hf_dvb_s2_table_desc_frame_number, {
4232 "Frame number", "dvb-s2_table.desc.cmed.frame.number",
4233 FT_UINT8, BASE_DEC, NULL, 0x0,
4234 NULL, HFILL}
4236 /* Logon response descriptor */
4237 {&hf_dvb_s2_table_desc_keep_id_after_logoff, {
4238 "Descriptor keep identifiers after logoff", "dvb-s2_table.desc.keep_id_after_logoff",
4239 FT_UINT8, BASE_HEX, NULL, DVB_S2_TABLE_DESC_KEEP_ID_AFTER_LOGOFF_MASK,
4240 NULL, HFILL}
4242 {&hf_dvb_s2_table_desc_power_ctrl_mode, {
4243 "Descriptor power control mode", "dvb-s2_table.desc.power_ctrl_mode",
4244 FT_UINT8, BASE_HEX, NULL, DVB_S2_TABLE_DESC_POWER_CTRLMODE_MASK,
4245 NULL, HFILL}
4247 {&hf_dvb_s2_table_desc_rcst_access_status, {
4248 "Descriptor RCST access status", "dvb-s2_table.desc.rcst_access_status",
4249 FT_UINT8, BASE_HEX, NULL, DVB_S2_TABLE_DESC_RCST_ACCESS_STATUS_MASK,
4250 NULL, HFILL}
4252 {&hf_dvb_s2_table_desc_logon_id, {
4253 "Descriptor logon id", "dvb-s2_table.desc.logon_id",
4254 FT_UINT16, BASE_HEX, NULL, 0x0,
4255 NULL, HFILL}
4257 {&hf_dvb_s2_table_desc_lowest_assign_id, {
4258 "Descriptor lowest_assignment_id", "dvb-s2_table.desc.lowest_assign_id",
4259 FT_UINT24, BASE_HEX, NULL, 0x0,
4260 NULL, HFILL}
4262 {&hf_dvb_s2_table_desc_assign_id_count, {
4263 "Descriptor assignment id count", "dvb-s2_table.desc.assign_id_count",
4264 FT_UINT8, BASE_HEX, NULL, DVB_S2_TABLE_DESC_ASSIGN_ID_COUNT_MASK,
4265 NULL, HFILL}
4267 {&hf_dvb_s2_table_desc_unicast_mac24_count, {
4268 "Descriptor unicast_mac24_count", "dvb-s2_table.desc.unicast_mac24_count",
4269 FT_UINT8, BASE_HEX, NULL, DVB_S2_TABLE_DESC_UNICAST_MAC24_COUNT_MASK,
4270 NULL, HFILL}
4272 {&hf_dvb_s2_table_mac24, {
4273 "MAC24", "dvb-s2_table.desc.mac24",
4274 FT_BYTES, BASE_NONE, NULL, 0x0,
4275 NULL, HFILL}
4277 {&hf_dvb_s2_table_mac24_prefix_size, {
4278 "MAC24 prefix size", "dvb-s2_table.desc.mac24.prefix_size",
4279 FT_UINT8, BASE_HEX, NULL, DVB_S2_TABLE_MAC24_PREFIX_SIZE_MASK,
4280 NULL, HFILL}
4282 {&hf_dvb_s2_table_mac24_unicast, {
4283 "MAC24 unicast", "dvb-s2_table.mac24.unicast",
4284 FT_UINT24, BASE_HEX, NULL, 0x0,
4285 NULL, HFILL}
4287 {&hf_dvb_s2_table_mac24_mcast_mapping_method, {
4288 "MAC24 mcast mapping method", "dvb-s2_table.mac24.mcast_mapping_method",
4289 FT_UINT8, BASE_HEX, NULL, DVB_S2_TABLE_MAC24_MAPPING_METHOD_MASK,
4290 NULL, HFILL}
4292 {&hf_dvb_s2_table_mac24_mcast_ip_version_ind_pres, {
4293 "MAC24 mcast ip version indicator presence", "dvb-s2_table.mac24.mcast_ip_version_ind_pres",
4294 FT_UINT8, BASE_HEX, NULL, DVB_S2_TABLE_MAC24_MCAST_IP_VERSION_IND_PRES_MASK,
4295 NULL, HFILL}
4297 {&hf_dvb_s2_table_mac24_mcast_synthesis_field_size, {
4298 "MAC24 mcast synthesis field size", "dvb-s2_table.mac24.mcast_synthesis_field_size",
4299 FT_UINT8, BASE_HEX, NULL, DVB_S2_TABLE_MAC24_MCAST_SYNTHESIS_FIELD_SIZE_MASK,
4300 NULL, HFILL}
4302 {&hf_dvb_s2_table_desc_default_svn_number, {
4303 "Descriptor default svn number", "dvb-s2_table.desc.default_svn_number",
4304 FT_UINT16, BASE_HEX, NULL, 0x0,
4305 NULL, HFILL}
4307 {&hf_dvb_s2_table_desc_reserved, {
4308 "Descriptor reserved", "dvb-s2_table.desc.reserved",
4309 FT_UINT8, BASE_HEX, NULL, 0x0,
4310 NULL, HFILL}
4312 /* Mobility Control descriptor */
4313 {&hf_dvb_s2_table_mc_command_value, {
4314 "Descriptor command value", "dvb-s2_table.desc.mc_command_value",
4315 FT_UINT16, BASE_HEX, VALS(table_mobility_command_value), 0x0,
4316 NULL, HFILL}
4318 {&hf_dvb_s2_table_mc_command_parameter, {
4319 "Descriptor command parameter", "dvb-s2_table.desc.mc_command_parameter",
4320 FT_UINT16, BASE_HEX, NULL, 0x0,
4321 NULL, HFILL}
4323 /* Lowest Software Version Descriptor */
4324 {&hf_dvb_s2_table_lsvd_group_count, {
4325 "Descriptor Group count", "dvb-s2_table.desc.lsvd_group_count",
4326 FT_UINT8, BASE_DEC, NULL, 0x0,
4327 NULL, HFILL}
4329 {&hf_dvb_s2_table_lsvd_oui, {
4330 "Descriptor modem OUI", "dvb-s2_table.desc.lsvd_oui",
4331 FT_UINT32, BASE_DEC, NULL, 0x00FFFFFF,
4332 NULL, HFILL}
4334 {&hf_dvb_s2_table_lsvd_mcast_address, {
4335 "Descriptor multicast service address", "dvb-s2_table.desc.lsvd_mcast_address",
4336 FT_UINT32, BASE_HEX, NULL, 0x0,
4337 NULL, HFILL}
4339 {&hf_dvb_s2_table_lsvd_mcast_port, {
4340 "Descriptor multicast service port", "dvb-s2_table.desc.lsvd_mcast_port",
4341 FT_UINT16, BASE_DEC, NULL, 0x0,
4342 NULL, HFILL}
4344 {&hf_dvb_s2_table_lsvd_version_field_length, {
4345 "Descriptor version field length", "dvb-s2_table.desc.lsvd_version_field_length",
4346 FT_UINT8, BASE_DEC, NULL, 0x0,
4347 NULL, HFILL}
4349 {&hf_dvb_s2_table_lsvd_version_bytes, {
4350 "Descriptor version bytes", "dvb-s2_table.desc.lsvd_version_bytes",
4351 FT_BYTES, BASE_NONE, NULL, 0x0,
4352 NULL, HFILL}
4354 /* Lower layer service descriptor */
4355 {&hf_dvb_s2_table_desc_default_ctrl_random_interval, {
4356 "Descriptor default control randomization interval", "dvb-s2_table.desc.default_ctrl_random_interval",
4357 FT_UINT8, BASE_HEX, NULL, 0x0,
4358 NULL, HFILL}
4360 {&hf_dvb_s2_table_desc_dynamic_rate_persistence, {
4361 "Descriptor dynamic rate persistence", "dvb-s2_table.desc.dynamic_rate_persistence",
4362 FT_UINT8, BASE_HEX, NULL, 0x0,
4363 NULL, HFILL}
4365 {&hf_dvb_s2_table_desc_volume_backlog_persistence, {
4366 "Descriptor volume backlog persistence", "dvb-s2_table.desc.volume_backlog_persistence",
4367 FT_UINT8, BASE_HEX, NULL, 0x0,
4368 NULL, HFILL}
4370 {&hf_dvb_s2_table_desc_lls_count, {
4371 "Descriptor lower layer service count", "dvb-s2_table.desc.lower_layer_service_count",
4372 FT_UINT8, BASE_HEX, NULL, DVB_S2_TABLE_DESC_LLS_COUNT_MASK,
4373 NULL, HFILL}
4375 {&hf_dvb_s2_table_desc_rc_count, {
4376 "Descriptor rc count", "dvb-s2_table.desc.rc_count",
4377 FT_UINT8, BASE_HEX, NULL, DVB_S2_TABLE_DESC_RC_COUNT_MASK,
4378 NULL, HFILL}
4380 {&hf_dvb_s2_table_desc_ra_ac_count, {
4381 "Descriptor ra_ac count", "dvb-s2_table.desc.ra_ac_count",
4382 FT_UINT8, BASE_HEX, NULL, DVB_S2_TABLE_DESC_RA_AC_COUNT_MASK,
4383 NULL, HFILL}
4385 {&hf_dvb_s2_table_lls, {
4386 "lower layer service", "dvb-s2_table.lls",
4387 FT_BYTES, BASE_NONE, NULL, 0x0,
4388 NULL, HFILL}
4390 {&hf_dvb_s2_table_lls_index, {
4391 "lls index", "dvb-s2_table.lls.index",
4392 FT_UINT8, BASE_HEX, NULL, DVB_S2_TABLE_LLS_INDEX_MASK,
4393 NULL, HFILL}
4395 {&hf_dvb_s2_table_lls_random_access, {
4396 "lls random access", "dvb-s2_table.lls.random_access",
4397 FT_UINT8, BASE_HEX, NULL, DVB_S2_TABLE_LLS_RANDOM_ACCESS_MASK,
4398 NULL, HFILL}
4400 {&hf_dvb_s2_table_lls_dedicated_access, {
4401 "lls dedicated access", "dvb-s2_table.lls.dedicated_access",
4402 FT_UINT8, BASE_HEX, NULL, DVB_S2_TABLE_LLS_DEDICATED_ACCESS_MASK,
4403 NULL, HFILL}
4405 {&hf_dvb_s2_table_lls_nominal_rc_index, {
4406 "lls nominal rc index", "dvb-s2_table.lls.nominal_rc_index",
4407 FT_UINT8, BASE_HEX, NULL, DVB_S2_TABLE_LLS_NOMINAL_RC_INDEX_MASK,
4408 NULL, HFILL}
4410 {&hf_dvb_s2_table_lls_nominal_da_ac_index, {
4411 "lls nominal da_ac index", "dvb-s2_table.lls.nominal_da_ac_index",
4412 FT_UINT8, BASE_HEX, NULL, DVB_S2_TABLE_LLS_NOMINAL_DA_AC_INDEX_MASK,
4413 NULL, HFILL}
4415 {&hf_dvb_s2_table_lls_conditional_demand_rc_map, {
4416 "lls conditional demand rc map", "dvb-s2_table.lls.conditional_demand_rc_map",
4417 FT_BYTES, BASE_NONE, NULL, 0x0,
4418 NULL, HFILL}
4420 {&hf_dvb_s2_table_lls_conditional_scheduler_da_ac_map, {
4421 "lls conditional scheduler da ac map", "dvb-s2_table.lls.conditional_scheduler_da_ac_map",
4422 FT_UINT16, BASE_HEX, NULL, 0x0,
4423 NULL, HFILL}
4425 {&hf_dvb_s2_table_lls_nominal_ra_ac_index, {
4426 "lls nominal ra_ac index", "dvb-s2_table.lls.nominal_ra_ac_index",
4427 FT_UINT8, BASE_HEX, NULL, DVB_S2_TABLE_LLS_NOMINAL_RA_AC_INDEX_MASK,
4428 NULL, HFILL}
4430 {&hf_dvb_s2_table_lls_conditional_scheduler_ra_ac_map, {
4431 "lls nominal ra_ac map", "dvb-s2_table.lls.nominal_ra_ac_map",
4432 FT_UINT8, BASE_HEX, NULL, 0x0,
4433 NULL, HFILL}
4435 {&hf_dvb_s2_table_rc, {
4436 "request class", "dvb-s2_table.rc",
4437 FT_BYTES, BASE_NONE, NULL, 0x0,
4438 NULL, HFILL}
4440 {&hf_dvb_s2_table_rc_index, {
4441 "rc index", "dvb-s2_table.rc.index",
4442 FT_UINT8, BASE_HEX, NULL, DVB_S2_TABLE_RC_INDEX_MASK,
4443 NULL, HFILL}
4445 {&hf_dvb_s2_table_rc_constant_assignment_provided, {
4446 "rc constant assignment provided", "dvb-s2_table.rc.constant_assignment_provided",
4447 FT_UINT8, BASE_HEX, NULL, DVB_S2_TABLE_RC_CONSTANT_ASSIGN_MASK,
4448 NULL, HFILL}
4450 {&hf_dvb_s2_table_rc_volume_allowed, {
4451 "rc volume allowed", "dvb-s2_table.rc.volume_allowed",
4452 FT_UINT8, BASE_HEX, NULL, DVB_S2_TABLE_RC_VOLUME_ALLOWED_MASK,
4453 NULL, HFILL}
4455 {&hf_dvb_s2_table_rc_rbdc_allowed, {
4456 "rc rbdc allowed", "dvb-s2_table.rc.rbdc_allowed",
4457 FT_UINT8, BASE_HEX, NULL, DVB_S2_TABLE_RC_RBDC_ALLOWED_MASK,
4458 NULL, HFILL}
4460 {&hf_dvb_s2_table_rc_maximum_service_rate, {
4461 "rc maximum service rate", "dvb-s2_table.rc.maximum_service_rate",
4462 FT_UINT16, BASE_DEC, NULL, 0x0,
4463 NULL, HFILL}
4465 {&hf_dvb_s2_table_rc_minimum_service_rate, {
4466 "rc minimum service rate", "dvb-s2_table.rc.minimum_service_rate",
4467 FT_UINT16, BASE_DEC, NULL, 0x0,
4468 NULL, HFILL}
4470 {&hf_dvb_s2_table_rc_constant_service_rate, {
4471 "rc minimum constant rate", "dvb-s2_table.rc.constant_service_rate",
4472 FT_UINT16, BASE_DEC, NULL, 0x0,
4473 NULL, HFILL}
4475 {&hf_dvb_s2_table_rc_maximum_backlog, {
4476 "rc maximum_backlog", "dvb-s2_table.rc.maximum_backlog",
4477 FT_UINT8, BASE_DEC, NULL, 0x0,
4478 NULL, HFILL}
4480 {&hf_dvb_s2_table_ra_ac, {
4481 "random access allocation channel", "dvb-s2_table.ra_ac",
4482 FT_BYTES, BASE_NONE, NULL, 0x0,
4483 NULL, HFILL}
4485 {&hf_dvb_s2_table_ra_ac_index, {
4486 "ra_ac index", "dvb-s2_table.ra_ac.index",
4487 FT_UINT8, BASE_HEX, NULL, DVB_S2_TABLE_RA_AC_INDEX_MASK,
4488 NULL, HFILL}
4490 {&hf_dvb_s2_table_ra_ac_max_unique_payload_per_block, {
4491 "ra_ac max unique payload per block", "dvb-s2_table.ra_ac.max_unique_payload_per_block",
4492 FT_UINT8, BASE_DEC, NULL, 0x0,
4493 NULL, HFILL}
4495 {&hf_dvb_s2_table_ra_ac_max_consecutive_block_accessed, {
4496 "ra_ac max consecutive block accessed", "dvb-s2_table.ra_ac.max_consecutive_block_accessed",
4497 FT_UINT8, BASE_DEC, NULL, 0x0,
4498 NULL, HFILL}
4500 {&hf_dvb_s2_table_ra_ac_min_idle_block, {
4501 "ra_ac min idle block", "dvb-s2_table.ra_ac.min_idle_block",
4502 FT_UINT8, BASE_DEC, NULL, 0x0,
4503 NULL, HFILL}
4505 {&hf_dvb_s2_table_ra_ac_defaults_field_size, {
4506 "ra_ac defaults field size", "dvb-s2_table.ra_ac.default_field_size",
4507 FT_UINT8, BASE_DEC, NULL, 0x0,
4508 NULL, HFILL}
4510 {&hf_dvb_s2_table_ra_ac_defaults_for_ra_load_control, {
4511 "ra_ac defaults for ra load control", "dvb-s2_table.ra_ac.defaults_for_ra_load_control",
4512 FT_BYTES, BASE_NONE, NULL, 0x0,
4513 NULL, HFILL}
4515 {&hf_dvb_s2_table_crc32, {
4516 "Table crc32", "dvb-s2_table.crc32",
4517 FT_UINT32, BASE_HEX, NULL, 0x0,
4518 NULL, HFILL}
4522 static int *ett_table[] = {
4523 &ett_dvb_s2_hdr_table,
4524 &ett_dvb_s2_hdr_table_sf,
4525 &ett_dvb_s2_hdr_table_network_routing,
4526 &ett_dvb_s2_hdr_table_sf_frame,
4527 &ett_dvb_s2_hdr_table_desc,
4528 &ett_dvb_s2_hdr_tbtp_frame,
4529 &ett_dvb_s2_hdr_tbtp_frame_btp,
4530 &ett_dvb_s2_hdr_table_frame,
4531 &ett_dvb_s2_hdr_table_frame_assign,
4532 &ett_dvb_s2_hdr_table_entry,
4533 &ett_dvb_s2_hdr_table_frametype,
4534 &ett_dvb_s2_hdr_table_frametype_section,
4535 &ett_dvb_s2_hdr_table_frame_ID,
4536 &ett_dvb_s2_hdr_table_frame_ID_timeslot,
4537 &ett_dvb_s2_hdr_table_mac24,
4538 &ett_dvb_s2_hdr_table_lls,
4539 &ett_dvb_s2_hdr_table_rc,
4540 &ett_dvb_s2_hdr_table_raac,
4541 &ett_dvb_s2_hdr_table_txmode,
4542 &ett_dvb_s2_hdr_table_txtype,
4543 &ett_dvb_s2_hdr_table_txtype_uwsegment,
4544 &ett_dvb_s2_hdr_table_txtype_ypattern,
4545 &ett_dvb_s2_hdr_table_txtype_wpattern,
4546 &ett_dvb_s2_hdr_table_txtype_uwsymbol,
4547 &ett_dvb_s2_hdr_table_satellite,
4548 &ett_dvb_s2_hdr_table_multiplex,
4549 &ett_dvb_s2_hdr_table_pt,
4550 &ett_dvb_s2_hdr_table_pt_ms,
4551 &ett_dvb_s2_hdr_table_pt_ms_exclusion,
4554 static const enum_val_t rcs_version[] = {
4555 { "RCS", "RCS protocol" , DVB_S2_RCS_TABLE_DECODING },
4556 { "RCS2", "RCS2 protocol", DVB_S2_RCS2_TABLE_DECODING },
4557 { NULL, NULL, 0 }
4560 proto_dvb_s2_table = proto_register_protocol("DVB-S2 Signalization Table", "DVB-S2-TABLE", "dvb-s2_table");
4561 register_dissector("dvb-s2_table", dissect_dvb_s2_table, proto_dvb_s2_table);
4563 proto_register_field_array(proto_dvb_s2_table, hf_table, array_length(hf_table));
4564 proto_register_subtree_array(ett_table, array_length(ett_table));
4566 dvb_s2_table_module = prefs_register_protocol(proto_dvb_s2_table, proto_reg_handoff_dvb_s2_table);
4568 prefs_register_enum_preference(dvb_s2_table_module, "rcs_protocol",
4569 "defines RCS protocol version",
4570 "defines the RCS protocol version used in table dissection",
4571 &dvb_s2_rcs_version,
4572 rcs_version, false);
4575 void proto_reg_handoff_dvb_s2_table(void)
4581 * Editor modelines - http://www.wireshark.org/tools/modelines.html
4583 * Local variables:
4584 * c-basic-offset: 4
4585 * tab-width: 8
4586 * indent-tabs-mode: nil
4587 * End:
4589 * vi: set shiftwidth=4 tabstop=8 expandtab:
4590 * :indentSize=4:tabSize=8:noTabs=true: