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