Revert "TODO epan/dissectors/asn1/kerberos/packet-kerberos-template.c new GSS flags"
[wireshark-sm.git] / epan / dissectors / packet-dect-mitel-rfp.c
blob8d1ae00574f48df741194daa75039c603dba7028
1 /* packet-dect-mitel-rfp.c
2 * Routines for DECT-Mitel-RFP dissection
3 * Copyright 2022, Bernhard Dick <bernhard@bdick.de>
5 * Parts are based on the EVENTPHONE rfpproxy project that is MIT licensed
6 * and Copyright (c) 2019 Bianco Veigel <devel at zivillian.de>
8 * Wireshark - Network traffic analyzer
9 * By Gerald Combs <gerald@wireshark.org>
10 * Copyright 1998 Gerald Combs
12 * SPDX-License-Identifier: GPL-2.0-or-later
16 * This is a proprietary protocol deveolped by Mitel for communication
17 * between the DECT system management Software (OMM) and the DECT
18 * base station (RFPs)
21 #include <config.h>
23 #include <epan/packet.h>
24 #include <epan/column-utils.h>
25 #include <epan/prefs.h>
26 #include <epan/proto.h>
27 #include <epan/tfs.h>
28 #include <epan/tvbuff.h>
29 #include <epan/unit_strings.h>
30 #include <epan/value_string.h>
31 #include <ftypes/ftypes.h>
33 /* Prototypes */
34 void proto_reg_handoff_dect_mitel_rfp(void);
35 void proto_register_dect_mitel_rfp(void);
37 /* Initialize the protocol and registered fields */
38 static int proto_dect_mitel_rfp;
40 static int hf_dect_mitel_rfp_message_type;
41 static int hf_dect_mitel_rfp_message_length;
43 /* CONTROL-ACK */
44 static int hf_dect_mitel_rfp_control_ack_message;
45 static int hf_dect_mitel_rfp_control_ack_call_id;
47 /* CONTROL-NACK */
48 static int hf_dect_mitel_rfp_control_nack_message;
49 static int hf_dect_mitel_rfp_control_nack_call_id;
50 static int hf_dect_mitel_rfp_control_nack_reason;
52 /* CONTROL-HEARTBEAT */
53 static int hf_dect_mitel_rfp_control_heartbeat_milliseconds;
54 static int hf_dect_mitel_rfp_control_heartbeat_nanoseconds;
56 /* SYS-IP-OPTIONS */
57 static int hf_dect_mitel_rfp_sys_ip_options_voice_tos;
58 static int hf_dect_mitel_rfp_sys_ip_options_signalling_tos;
59 static int hf_dect_mitel_rfp_sys_ip_options_ttl;
60 static int hf_dect_mitel_rfp_sys_ip_options_signal_vlan_priority;
61 static int hf_dect_mitel_rfp_sys_ip_options_voice_vlan_priority;
63 /* SYS-LED */
64 static int hf_dect_mitel_rfp_sys_led_id;
65 static int hf_dect_mitel_rfp_sys_led_color;
67 /* SYS-HEARTBEAT-INTERVAL */
68 static int hf_dect_mitel_rfp_sys_heartbeat_interval_value;
70 /* SYS-SYSLOG */
71 static int hf_dect_mitel_rfp_sys_syslog_ip_address;
72 static int hf_dect_mitel_rfp_sys_syslog_port;
74 /* SYS-MAX-CHANNELS */
75 static int hf_dect_mitel_rfp_sys_max_channels_dsp;
76 static int hf_dect_mitel_rfp_sys_max_channels_sessions;
78 /* SYS-HTTP-SET */
79 static int hf_dect_mitel_rfp_sys_http_set_ip_address;
80 static int hf_dect_mitel_rfp_sys_http_set_port;
82 /* SYS-PASSWD */
83 static int hf_dect_mitel_rfp_sys_passwd_remote_access_enabled;
84 static int hf_dect_mitel_rfp_sys_passwd_root_username;
85 static int hf_dect_mitel_rfp_sys_passwd_root_password;
86 static int hf_dect_mitel_rfp_sys_passwd_admin_username;
87 static int hf_dect_mitel_rfp_sys_passwd_admin_password;
89 /* SYS-RPING */
90 static int hf_dect_mitel_rfp_sys_rping_ip_address;
91 static int hf_dect_mitel_rfp_sys_rping_rtt;
93 /* SYS-CORE-DUMP */
94 static int hf_dect_mitel_rfp_sys_core_dump_url;
96 /* SYS-VSNTP-TIME */
97 static int hf_dect_mitel_rfp_sys_vsntp_time_t1_seconds;
98 static int hf_dect_mitel_rfp_sys_vsntp_time_t1_nanoseconds;
99 static int hf_dect_mitel_rfp_sys_vsntp_time_t2_seconds;
100 static int hf_dect_mitel_rfp_sys_vsntp_time_t2_nanoseconds;
102 /* SYS-INIT */
103 static int hf_dect_mitel_rfp_sys_init_rfp_model;
104 static int hf_dect_mitel_rfp_sys_init_rfp_mac;
105 static int hf_dect_mitel_rfp_sys_init_crypted;
106 static int hf_dect_mitel_rfp_sys_init_protocol;
107 static int hf_dect_mitel_rfp_sys_init_rfp_capabilities;
108 static int hf_dect_mitel_rfp_sys_init_rfp_capability_normal_tx;
109 static int hf_dect_mitel_rfp_sys_init_rfp_capability_indoor;
110 static int hf_dect_mitel_rfp_sys_init_rfp_capability_wlan;
111 static int hf_dect_mitel_rfp_sys_init_rfp_capability_encryption;
112 static int hf_dect_mitel_rfp_sys_init_rfp_capability_frequency_shift;
113 static int hf_dect_mitel_rfp_sys_init_rfp_capability_low_tx;
114 static int hf_dect_mitel_rfp_sys_init_rfp_capability_advanced_feature;
115 static int hf_dect_mitel_rfp_sys_init_rfp_software_version;
116 static int hf_dect_mitel_rfp_sys_init_signature;
118 /* SYS-AUTHENTICATE */
119 static int hf_dect_mitel_rfp_sys_authenticate_omm_iv;
120 static int hf_dect_mitel_rfp_sys_authenticate_rfp_iv;
122 /* SYS-LICENSE-TIMER */
123 static int hf_dect_mitel_rfp_sys_license_timer_query;
124 static int hf_dect_mitel_rfp_sys_license_timer_grace_period;
125 static int hf_dect_mitel_rfp_sys_license_timer_checksum;
127 /* MEDIA */
128 static int hf_dect_mitel_rfp_media_handle;
129 static int hf_dect_mitel_rfp_media_mcei;
130 static int hf_dect_mitel_rfp_media_direction;
132 /* MEDIA-OPEN */
133 static int hf_dect_mitel_rfp_media_open_codec;
134 static int hf_dect_mitel_rfp_media_open_slot_count;
135 static int hf_dect_mitel_rfp_media_open_flags;
137 /* MEDIA-CONF */
138 static int hf_dect_mitel_rfp_media_conf_vif;
139 static int hf_dect_mitel_rfp_media_conf_vad;
140 static int hf_dect_mitel_rfp_media_conf_codec_count;
141 static int hf_dect_mitel_rfp_media_conf_codec_type;
142 static int hf_dect_mitel_rfp_media_conf_codec_pt;
143 static int hf_dect_mitel_rfp_media_conf_codec_rate;
144 static int hf_dect_mitel_rfp_media_conf_ppn;
145 static int hf_dect_mitel_rfp_media_conf_local_port_1;
146 static int hf_dect_mitel_rfp_media_conf_local_port_2;
147 static int hf_dect_mitel_rfp_media_conf_rx_ip_address;
148 static int hf_dect_mitel_rfp_media_conf_rx_port_1;
149 static int hf_dect_mitel_rfp_media_conf_rx_port_2;
150 static int hf_dect_mitel_rfp_media_conf_tx_ip_address;
151 static int hf_dect_mitel_rfp_media_conf_tx_port_1;
152 static int hf_dect_mitel_rfp_media_conf_tx_port_2;
154 /* MEDIA-START */
155 static int hf_dect_mitel_rfp_media_start_time;
156 static int hf_dect_mitel_rfp_media_start_met_keep_alive;
158 /* MEDIA-STATISTICS */
159 static int hf_dect_mitel_rfp_media_statistics_duration;
160 static int hf_dect_mitel_rfp_media_statistics_tx_packets;
161 static int hf_dect_mitel_rfp_media_statistics_tx_bytes;
162 static int hf_dect_mitel_rfp_media_statistics_rx_packets;
163 static int hf_dect_mitel_rfp_media_statistics_rx_bytes;
164 static int hf_dect_mitel_rfp_media_statistics_lost_packets;
165 static int hf_dect_mitel_rfp_media_statistics_max_jitter;
166 static int hf_dect_mitel_rfp_media_statistics_rtp_ip_address;
168 /* MEDIA-REDIRECT-START */
169 static int hf_dect_mitel_rfp_media_redirect_start_local_port_1;
170 static int hf_dect_mitel_rfp_media_redirect_start_local_port_2;
171 static int hf_dect_mitel_rfp_media_redirect_start_remote_ip_address;
172 static int hf_dect_mitel_rfp_media_redirect_start_remote_port_1;
173 static int hf_dect_mitel_rfp_media_redirect_start_remote_port_2;
174 static int hf_dect_mitel_rfp_media_redirect_start_time;
176 /* MEDIA-REDIRECT-STOP */
177 static int hf_dect_mitel_rfp_media_redirect_stop_fallback;
179 /* MEDIA-DTMF */
180 static int hf_dect_mitel_rfp_media_dtmf_duration;
181 static int hf_dect_mitel_rfp_media_dtmf_key;
183 /* MEDIA-TONE */
184 static int hf_dect_mitel_rfp_media_tone_count;
185 static int hf_dect_mitel_rfp_media_tone_frequency_1;
186 static int hf_dect_mitel_rfp_media_tone_frequency_2;
187 static int hf_dect_mitel_rfp_media_tone_frequency_3;
188 static int hf_dect_mitel_rfp_media_tone_frequency_4;
189 static int hf_dect_mitel_rfp_media_tone_cb_1;
190 static int hf_dect_mitel_rfp_media_tone_cb_2;
191 static int hf_dect_mitel_rfp_media_tone_cb_3;
192 static int hf_dect_mitel_rfp_media_tone_cb_4;
193 static int hf_dect_mitel_rfp_media_tone_duration;
194 static int hf_dect_mitel_rfp_media_tone_cycle_count;
195 static int hf_dect_mitel_rfp_media_tone_cycle_to;
196 static int hf_dect_mitel_rfp_media_tone_next;
198 /* SYNC */
199 static int hf_dect_mitel_rfp_sync_payload_type;
200 static int hf_dect_mitel_rfp_sync_payload_length;
202 /* SYNC FREQ_CTRL_MODE_IND */
203 static int hf_dect_mitel_rfp_sync_freq_ctrl_mode_ind_mode;
205 /* SYNC FREQ_CTRL_MODE_CFM */
206 static int hf_dect_mitel_rfp_sync_freq_ctrl_mode_cfm_mode;
207 static int hf_dect_mitel_rfp_sync_freq_ctrl_mode_cfm_ppm;
208 static int hf_dect_mitel_rfp_sync_freq_ctrl_mode_cfm_avg;
210 /* SYNC SET_FREQUENCY */
211 static int hf_dect_mitel_rfp_sync_set_frequency_value;
213 /* SYNC START_MAC_SLAVE_MODE_IND */
214 static int hf_dect_mitel_rfp_sync_start_mac_slave_mode_ind_rfp;
216 /* SYNC SYSTEM_SEARCH_IND */
217 static int hf_dect_mitel_rfp_sync_system_search_ind_mode;
219 /* SYNC SYSTEM_SEARCH_CFM */
220 static int hf_dect_mitel_rfp_sync_system_search_cfm_count;
221 static int hf_dect_mitel_rfp_sync_system_search_cfm_item_rpn;
222 static int hf_dect_mitel_rfp_sync_system_search_cfm_item_rssi;
224 /* SYNC PHASE_OFS_WITH_RSSI_IND */
225 static int hf_dect_mitel_rfp_sync_phase_ofs_with_rssi_ind_count;
226 static int hf_dect_mitel_rfp_sync_phase_ofs_with_rssi_ind_item_rpn;
227 static int hf_dect_mitel_rfp_sync_phase_ofs_with_rssi_ind_item_offset;
228 static int hf_dect_mitel_rfp_sync_phase_ofs_with_rssi_ind_item_rssi;
229 static int hf_dect_mitel_rfp_sync_phase_ofs_with_rssi_ind_item_qt_sync_check;
231 /* Message Type */
232 enum dect_mitel_rfp_message_type_coding {
233 DECT_MITEL_RFP_MESSAGE_TYPE_CONTROL_ACK = 0x0001,
234 DECT_MITEL_RFP_MESSAGE_TYPE_CONTROL_NACK = 0x0002,
235 DECT_MITEL_RFP_MESSAGE_TYPE_CONTROL_HEARTBEAT = 0x0003,
236 DECT_MITEL_RFP_MESSAGE_TYPE_SYS_IP_OPTIONS = 0x0101,
237 DECT_MITEL_RFP_MESSAGE_TYPE_SYS_LED = 0x0102,
238 DECT_MITEL_RFP_MESSAGE_TYPE_SYS_SPY = 0x0104,
239 DECT_MITEL_RFP_MESSAGE_TYPE_SYS_HEARTBEAT_INTERVAL = 0x0105,
240 DECT_MITEL_RFP_MESSAGE_TYPE_SYS_RSX = 0x0106,
241 DECT_MITEL_RFP_MESSAGE_TYPE_SYS_SYSLOG = 0x0107,
242 DECT_MITEL_RFP_MESSAGE_TYPE_SYS_MAX_CHANNELS = 0x0108,
243 DECT_MITEL_RFP_MESSAGE_TYPE_SYS_HTTP_SET = 0x0109,
244 DECT_MITEL_RFP_MESSAGE_TYPE_SYS_PASSWD = 0x010a,
245 DECT_MITEL_RFP_MESSAGE_TYPE_SYS_CRYPTED_PACKET = 0x010b,
246 DECT_MITEL_RFP_MESSAGE_TYPE_SYS_OMM_CONTROL = 0x010c,
247 DECT_MITEL_RFP_MESSAGE_TYPE_SYS_STATE_DUMP = 0x010d,
248 DECT_MITEL_RFP_MESSAGE_TYPE_SYS_RPING = 0x010e,
249 DECT_MITEL_RFP_MESSAGE_TYPE_SYS_STATE_DUMP_REQ = 0x010f,
250 DECT_MITEL_RFP_MESSAGE_TYPE_SYS_STATE_DUMP_RES = 0x0110,
251 DECT_MITEL_RFP_MESSAGE_TYPE_SYS_NEW_SW = 0x0111,
252 DECT_MITEL_RFP_MESSAGE_TYPE_SYS_AUDIO_LOG = 0x0112,
253 DECT_MITEL_RFP_MESSAGE_TYPE_SYS_USB_OVERLOAD = 0x0113,
254 DECT_MITEL_RFP_MESSAGE_TYPE_SYS_SW_CONTAINER = 0x0115,
255 DECT_MITEL_RFP_MESSAGE_TYPE_SYS_CORE_DUMP = 0x0116,
256 DECT_MITEL_RFP_MESSAGE_TYPE_SYS_VSNTP_TIME = 0x0117,
257 DECT_MITEL_RFP_MESSAGE_TYPE_SYS_UPDATE_802_1X_SUPPLICANT = 0x0119,
258 DECT_MITEL_RFP_MESSAGE_TYPE_SYS_INIT = 0x0120,
259 DECT_MITEL_RFP_MESSAGE_TYPE_SYS_RESET = 0x0121,
260 DECT_MITEL_RFP_MESSAGE_TYPE_SYS_SUPPLICANT_MD5 = 0x0122,
261 DECT_MITEL_RFP_MESSAGE_TYPE_SYS_STREAM_INFO = 0x0123,
262 DECT_MITEL_RFP_MESSAGE_TYPE_SYS_RFP_AUTH_KEY = 0x0124,
263 DECT_MITEL_RFP_MESSAGE_TYPE_SYS_RFP_RE_ENROLEMENT = 0x0125,
264 DECT_MITEL_RFP_MESSAGE_TYPE_SYS_ENCRYPTION_CONF = 0x0126,
265 DECT_MITEL_RFP_MESSAGE_TYPE_SYS_AUTHENTICATE = 0x012d,
266 DECT_MITEL_RFP_MESSAGE_TYPE_SYS_LICENSE_TIMER = 0x0134,
267 DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_OPEN = 0x0200,
268 DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_CONF = 0x0201,
269 DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_CLOSE = 0x0202,
270 DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_START = 0x0203,
271 DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_STOP = 0x0204,
272 DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_STATISTICS = 0x0205,
273 DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_REDIRECT_START = 0x0206,
274 DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_REDIRECT_STOP = 0x0207,
275 DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_RESTART = 0x0208,
276 DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_DTMF = 0x0209,
277 DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_DSP_CLOSE = 0x020a,
278 DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_TONE = 0x020b,
279 DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_BANDWIDTH_SWO = 0x020c,
280 DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_MUTE = 0x020d,
281 DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_G729_USED = 0x020e,
282 DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_TRACE_PPN = 0x020f,
283 DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_EOS_DETECT = 0x0210,
284 DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_AUDIO_STATISTICS = 0x0211,
285 DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_VIDEO_STATE = 0x0212,
286 DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_CHANNEL_MOD_INFO = 0x0213,
287 DECT_MITEL_RFP_MESSAGE_TYPE_ETH = 0x0301,
288 DECT_MITEL_RFP_MESSAGE_TYPE_SYNC = 0x0302,
289 DECT_MITEL_RFP_MESSAGE_TYPE_WLAN_RFP_CONFIG = 0x0401,
290 DECT_MITEL_RFP_MESSAGE_TYPE_WLAN_RFP_UP = 0x0402,
291 DECT_MITEL_RFP_MESSAGE_TYPE_WLAN_RFP_DOWN = 0x0403,
292 DECT_MITEL_RFP_MESSAGE_TYPE_WLAN_RFP_CLIENT_REQ = 0x0404,
293 DECT_MITEL_RFP_MESSAGE_TYPE_WLAN_RFP_CLIENT_REP = 0x0405,
294 DECT_MITEL_RFP_MESSAGE_TYPE_WLAN_RFP_SET_ACL = 0x0406,
295 DECT_MITEL_RFP_MESSAGE_TYPE_WLAN_RFP_CLIENT_INFO = 0x0407,
296 DECT_MITEL_RFP_MESSAGE_TYPE_WLAN_RFP_ACK = 0x0408,
297 DECT_MITEL_RFP_MESSAGE_TYPE_WLAN_RFP_LINK_NOK_NACK = 0x0409,
298 DECT_MITEL_RFP_MESSAGE_TYPE_WLAN_RFP_IFACE_REP = 0x040e,
299 DECT_MITEL_RFP_MESSAGE_TYPE_SNMP_RFP_UPDATE = 0x0501,
300 DECT_MITEL_RFP_MESSAGE_TYPE_CONF_OPEN = 0x0600,
301 DECT_MITEL_RFP_MESSAGE_TYPE_CONF_ADD_SUBSCR = 0x0601,
302 DECT_MITEL_RFP_MESSAGE_TYPE_CONF_CHG_SUBSCR = 0x0602,
303 DECT_MITEL_RFP_MESSAGE_TYPE_CONF_DEL_SUBSCR = 0x0603,
304 DECT_MITEL_RFP_MESSAGE_TYPE_CONF_CLOSE = 0x0604,
305 DECT_MITEL_RFP_MESSAGE_TYPE_CONF_RTP = 0x0605,
306 DECT_MITEL_RFP_MESSAGE_TYPE_BLUETOOTH_DEVICE = 0x0700,
307 DECT_MITEL_RFP_MESSAGE_TYPE_BLUETOOTH_CONFIG = 0x0701,
308 DECT_MITEL_RFP_MESSAGE_TYPE_BLUETOOTH_DATA = 0x0702,
309 DECT_MITEL_RFP_MESSAGE_TYPE_VIDEO_DEVICE = 0x0800,
310 DECT_MITEL_RFP_MESSAGE_TYPE_VIDEO_CONFIG = 0x0801,
313 /* CONTROL-NACK */
314 enum dect_mitel_rfp_control_nack_reason_coding {
315 DECT_MITEL_RFP_CONTROL_NACK_REASON_OK = 0x04000000,
316 DECT_MITEL_RFP_CONTROL_NACK_REASON_INVALID_ELEMENT = 0x04000001,
317 DECT_MITEL_RFP_CONTROL_NACK_REASON_NO_RESOURCE = 0x04000002,
318 DECT_MITEL_RFP_CONTROL_NACK_REASON_WRONG_STATE = 0x04000003,
319 DECT_MITEL_RFP_CONTROL_NACK_REASON_INVALID_PARAMETERS = 0x04000004,
320 DECT_MITEL_RFP_CONTROL_NACK_REASON_PORT_IN_USE = 0x04000005,
321 DECT_MITEL_RFP_CONTROL_NACK_REASON_CODEC_NOT_SUPPORTED = 0x04000006,
322 DECT_MITEL_RFP_CONTROL_NACK_REASON_VIDEO_NOT_SUPPORTED = 0x04000007,
325 /* SYS-LED */
326 enum dect_mitel_rfp_sys_led_color_coding {
327 DECT_MITEL_RFP_SYS_LED_COLOR_OFF = 0x00,
328 DECT_MITEL_RFP_SYS_LED_COLOR_STEADY_GREEN = 0x01,
329 DECT_MITEL_RFP_SYS_LED_COLOR_FLASH_GREEN = 0x02,
330 DECT_MITEL_RFP_SYS_LED_COLOR_FLASH_GREEN_ORANGE = 0x03,
331 DECT_MITEL_RFP_SYS_LED_COLOR_FLASH_GREEN_RED = 0x04,
332 DECT_MITEL_RFP_SYS_LED_COLOR_STEADY_RED = 0x05,
333 DECT_MITEL_RFP_SYS_LED_COLOR_STEADY_ORANGE = 0x06,
334 DECT_MITEL_RFP_SYS_LED_COLOR_CYCLE_GREEN_RED = 0x07,
337 /* SYS-INIT */
338 enum dect_mitel_rfp_sys_init_rfp_model_coding {
339 DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFP31 = 0x0001,
340 DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFP33 = 0x0002,
341 DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFP41 = 0x0003,
342 DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFP32 = 0x0004,
343 DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFP32US = 0x0005,
344 DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFP34 = 0x0006,
345 DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFP34US = 0x0007,
346 DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFP42 = 0x0008,
347 DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFP42US = 0x0009,
348 DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFP35 = 0x000b,
349 DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFP36 = 0x000c,
350 DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFP43 = 0x000d,
351 DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFP37 = 0x000e,
352 DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFP44 = 0x0010,
353 DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFP45 = 0x0011,
354 DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFP47 = 0x0012,
355 DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFP48 = 0x0013,
356 DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_PC_ECM = 0x0014,
357 DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_PC = 0x0015,
358 DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFPL31 = 0x1001,
359 DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFPL33 = 0x1002,
360 DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFPL41 = 0x1003,
361 DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFPL32US = 0x1005,
362 DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFPL34 = 0x1006,
363 DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFPL34US = 0x1007,
364 DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFPL42 = 0x1008,
365 DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFPL42US = 0x1009,
366 DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFPL35 = 0x100B,
367 DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFPL36 = 0x100C,
368 DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFPL43 = 0x100D,
369 DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFPL37 = 0x100E,
370 DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFPSL35 = 0x200B,
371 DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFPSL36 = 0x200C,
372 DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFPSL43 = 0x200D,
373 DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFPSL37 = 0x200E,
376 enum dect_mitel_rfp_sys_init_rfp_capability_coding {
377 DECT_MITEL_RFP_SYS_INIT_RFP_CAPABILITY_NORMAL_TX = 0x00000008,
378 DECT_MITEL_RFP_SYS_INIT_RFP_CAPABILITY_INDOOR = 0x00000010,
379 DECT_MITEL_RFP_SYS_INIT_RFP_CAPABILITY_WLAN = 0x00000020,
380 DECT_MITEL_RFP_SYS_INIT_RFP_CAPABILITY_ENCRYPTION = 0x00000100,
381 DECT_MITEL_RFP_SYS_INIT_RFP_CAPABILITY_FREQUENCY_SHIFT = 0x00000200,
382 DECT_MITEL_RFP_SYS_INIT_RFP_CAPABILITY_LOW_TX = 0x00000400,
383 DECT_MITEL_RFP_SYS_INIT_RFP_CAPABILITY_ADVANCED_FEATURE = 0x00008000,
386 /* MEDIA */
387 enum dect_mitel_rfp_media_direction_coding {
388 DECT_MITEL_RFP_MEDIA_DIRECTION_NONE = 0x0,
389 DECT_MITEL_RFP_MEDIA_DIRECTION_RX = 0x1,
390 DECT_MITEL_RFP_MEDIA_DIRECTION_TX = 0x2,
391 DECT_MITEL_RFP_MEDIA_DIRECTION_RXTX = 0x3,
394 /* MEDIA-CONF */
395 enum dect_mitel_rfp_media_conf_codec_type_coding {
396 DECT_MITEL_RFP_MEDIA_CONF_CODEC_TYPE_G711_A = 0x0,
397 DECT_MITEL_RFP_MEDIA_CONF_CODEC_TYPE_G723_1_53 = 0x1,
398 DECT_MITEL_RFP_MEDIA_CONF_CODEC_TYPE_G723_1_63 = 0x2,
399 DECT_MITEL_RFP_MEDIA_CONF_CODEC_TYPE_G729 = 0x3,
400 DECT_MITEL_RFP_MEDIA_CONF_CODEC_TYPE_G711_U = 0x4,
403 /* SYNC */
404 enum dect_mitel_rfp_sync_payload_type_coding {
405 DECT_MITEL_RFP_SYNC_TYPE_GET_REQ_RSSI_COMP_IND = 0x7d0e,
406 DECT_MITEL_RFP_SYNC_TYPE_GET_REQ_RSSI_COMP_CFM = 0x7d0f,
407 DECT_MITEL_RFP_SYNC_TYPE_FREQ_CTRL_MODE_IND = 0x7d15,
408 DECT_MITEL_RFP_SYNC_TYPE_FREQ_CTRL_MODE_CFM = 0x7d16,
409 DECT_MITEL_RFP_SYNC_TYPE_PHASE_OFFSET_IND = 0x7d17,
410 DECT_MITEL_RFP_SYNC_TYPE_SET_FREQUENCY = 0x7d18,
411 DECT_MITEL_RFP_SYNC_TYPE_SET_REPORT_LIMIT = 0x7d1a,
412 DECT_MITEL_RFP_SYNC_TYPE_RESET_MAC_IND = 0x7d1b,
413 DECT_MITEL_RFP_SYNC_TYPE_START_MAC_MASTER_IND = 0x7d1c,
414 DECT_MITEL_RFP_SYNC_TYPE_START_MAC_SLAVE_MODE_IND = 0x7d1d,
415 DECT_MITEL_RFP_SYNC_TYPE_SYSTEM_SEARCH_IND = 0x7d1e,
416 DECT_MITEL_RFP_SYNC_TYPE_SYSTEM_SEARCH_CFM = 0x7d1f,
417 DECT_MITEL_RFP_SYNC_TYPE_MAC_STARTED_IND = 0x7d20,
418 DECT_MITEL_RFP_SYNC_TYPE_RESET_MAC_CFM = 0x7d21,
419 DECT_MITEL_RFP_SYNC_TYPE_START_MAC_MASTER_CFM = 0x7d22,
420 DECT_MITEL_RFP_SYNC_TYPE_START_MAC_MASTER_REJ = 0x7d23,
421 DECT_MITEL_RFP_SYNC_TYPE_START_MAC_SLAVE_MODE_CFM = 0x7d24,
422 DECT_MITEL_RFP_SYNC_TYPE_START_MAC_SLAVE_REJ = 0x7d25,
423 DECT_MITEL_RFP_SYNC_TYPE_SYSTEM_SEARCH_REJ = 0x7d26,
424 DECT_MITEL_RFP_SYNC_TYPE_READY_FOR_SYNC_IND = 0x7d27,
425 DECT_MITEL_RFP_SYNC_TYPE_GET_ACTIVE_CHANNEL_CFM = 0x7d29,
426 DECT_MITEL_RFP_SYNC_TYPE_PHASE_OFS_WITH_RSSI_IND = 0x7d2c,
427 DECT_MITEL_RFP_SYNC_TYPE_RESET_MAC_IF_IDLE_CFM = 0x7d2f,
428 DECT_MITEL_RFP_SYNC_TYPE_UNKNOWN_READY_FOR_SYNC = 0x7d32,
429 DECT_MITEL_RFP_SYNC_TYPE_UNKNOWN_STANDBY = 0x7d33,
432 /* Message Type */
433 static const value_string dect_mitel_rfp_message_type_val[] = {
434 { DECT_MITEL_RFP_MESSAGE_TYPE_CONTROL_ACK, "CONTROL-ACK" },
435 { DECT_MITEL_RFP_MESSAGE_TYPE_CONTROL_NACK, "CONTROL-NACK" },
436 { DECT_MITEL_RFP_MESSAGE_TYPE_CONTROL_HEARTBEAT, "CONTROL-HEARTBEAT" },
437 { DECT_MITEL_RFP_MESSAGE_TYPE_SYS_IP_OPTIONS, "SYS-IP-OPTIONS" },
438 { DECT_MITEL_RFP_MESSAGE_TYPE_SYS_LED, "SYS-LED" },
439 { DECT_MITEL_RFP_MESSAGE_TYPE_SYS_SPY, "SYS-SPY" },
440 { DECT_MITEL_RFP_MESSAGE_TYPE_SYS_HEARTBEAT_INTERVAL, "SYS-HEARTBEAT-INTERVAL" },
441 { DECT_MITEL_RFP_MESSAGE_TYPE_SYS_RSX, "SYS-RSX" },
442 { DECT_MITEL_RFP_MESSAGE_TYPE_SYS_SYSLOG, "SYS-SYSLOG" },
443 { DECT_MITEL_RFP_MESSAGE_TYPE_SYS_MAX_CHANNELS, "SYS-MAX-CHANNELS" },
444 { DECT_MITEL_RFP_MESSAGE_TYPE_SYS_HTTP_SET, "SYS-HTTP-SET" },
445 { DECT_MITEL_RFP_MESSAGE_TYPE_SYS_PASSWD, "SYS-PASSWD" },
446 { DECT_MITEL_RFP_MESSAGE_TYPE_SYS_CRYPTED_PACKET, "SYS-CRYPTED-PACKET" },
447 { DECT_MITEL_RFP_MESSAGE_TYPE_SYS_OMM_CONTROL, "SYS-OMM-CONTROL" },
448 { DECT_MITEL_RFP_MESSAGE_TYPE_SYS_STATE_DUMP, "SYS-STATE-DUMP" },
449 { DECT_MITEL_RFP_MESSAGE_TYPE_SYS_RPING, "SYS-RPING" },
450 { DECT_MITEL_RFP_MESSAGE_TYPE_SYS_STATE_DUMP_REQ, "SYS-STATE-DUMP-REQ" },
451 { DECT_MITEL_RFP_MESSAGE_TYPE_SYS_STATE_DUMP_RES, "SYS-STATE-DUMP-RES" },
452 { DECT_MITEL_RFP_MESSAGE_TYPE_SYS_NEW_SW, "SYS-NEW-SW" },
453 { DECT_MITEL_RFP_MESSAGE_TYPE_SYS_AUDIO_LOG, "SYS-AUDIO-LOG" },
454 { DECT_MITEL_RFP_MESSAGE_TYPE_SYS_USB_OVERLOAD, "SYS-USB-OVERLOAD" },
455 { DECT_MITEL_RFP_MESSAGE_TYPE_SYS_SW_CONTAINER, "SYS-SW-CONTAINER" },
456 { DECT_MITEL_RFP_MESSAGE_TYPE_SYS_CORE_DUMP, "SYS-CORE-DUMP" },
457 { DECT_MITEL_RFP_MESSAGE_TYPE_SYS_VSNTP_TIME, "SYS-VSNTP-TIME" },
458 { DECT_MITEL_RFP_MESSAGE_TYPE_SYS_UPDATE_802_1X_SUPPLICANT, "SYS-UPDATE-802-1X-SUPPLICANT" },
459 { DECT_MITEL_RFP_MESSAGE_TYPE_SYS_INIT, "SYS-INIT" },
460 { DECT_MITEL_RFP_MESSAGE_TYPE_SYS_RESET, "SYS-RESET" },
461 { DECT_MITEL_RFP_MESSAGE_TYPE_SYS_SUPPLICANT_MD5, "SYS-SUPPLICANT-MD5" },
462 { DECT_MITEL_RFP_MESSAGE_TYPE_SYS_STREAM_INFO, "SYS-STREAM-INFO" },
463 { DECT_MITEL_RFP_MESSAGE_TYPE_SYS_RFP_AUTH_KEY, "SYS-RFP-AUTH-KEY" },
464 { DECT_MITEL_RFP_MESSAGE_TYPE_SYS_RFP_RE_ENROLEMENT, "SYS-RFP-RE-ENROLEMENT" },
465 { DECT_MITEL_RFP_MESSAGE_TYPE_SYS_ENCRYPTION_CONF, "SYS-ENCRYPTION-CONF" },
466 { DECT_MITEL_RFP_MESSAGE_TYPE_SYS_AUTHENTICATE, "SYS-AUTHENTICATE" },
467 { DECT_MITEL_RFP_MESSAGE_TYPE_SYS_LICENSE_TIMER, "SYS-LICENSE-TIMER" },
468 { DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_OPEN, "MEDIA-OPEN" },
469 { DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_CONF, "MEDIA-CONF" },
470 { DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_CLOSE, "MEDIA-CLOSE" },
471 { DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_START, "MEDIA-START" },
472 { DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_STOP, "MEDIA-STOP" },
473 { DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_STATISTICS, "MEDIA-STATISTICS" },
474 { DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_REDIRECT_START, "MEDIA-REDIRECT-START" },
475 { DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_REDIRECT_STOP, "MEDIA-REDIRECT-STOP" },
476 { DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_RESTART, "MEDIA-RESTART" },
477 { DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_DTMF, "MEDIA-DTMF" },
478 { DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_DSP_CLOSE, "MEDIA-DSP-CLOSE" },
479 { DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_TONE, "MEDIA-TONE" },
480 { DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_BANDWIDTH_SWO, "MEDIA-BANDWIDTH-SWO" },
481 { DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_MUTE, "MEDIA-MUTE" },
482 { DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_G729_USED, "MEDIA-G729-USED" },
483 { DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_TRACE_PPN, "MEDIA-TRACE-PPN" },
484 { DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_EOS_DETECT, "MEDIA-EOS-DETECT" },
485 { DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_AUDIO_STATISTICS, "MEDIA-AUDIO-STATISTICS" },
486 { DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_VIDEO_STATE, "MEDIA-VIDEO-STATE" },
487 { DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_CHANNEL_MOD_INFO, "MEDIA-CHANNEL-MOD-INFO" },
488 { DECT_MITEL_RFP_MESSAGE_TYPE_ETH, "DECToE" },
489 { DECT_MITEL_RFP_MESSAGE_TYPE_SYNC, "SYNC" },
490 { DECT_MITEL_RFP_MESSAGE_TYPE_WLAN_RFP_CONFIG, "WLAN-RFP-CONFIG" },
491 { DECT_MITEL_RFP_MESSAGE_TYPE_WLAN_RFP_UP, "WLAN-RFP-UP" },
492 { DECT_MITEL_RFP_MESSAGE_TYPE_WLAN_RFP_DOWN, "WLAN-RFP-DOWN" },
493 { DECT_MITEL_RFP_MESSAGE_TYPE_WLAN_RFP_CLIENT_REQ, "WLAN-RFP-CLIENT-REQ" },
494 { DECT_MITEL_RFP_MESSAGE_TYPE_WLAN_RFP_CLIENT_REP, "WLAN-RFP-CLIENT-REP" },
495 { DECT_MITEL_RFP_MESSAGE_TYPE_WLAN_RFP_SET_ACL, "WLAN-RFP-SET-ACL" },
496 { DECT_MITEL_RFP_MESSAGE_TYPE_WLAN_RFP_CLIENT_INFO, "WLAN-RFP-CLIENT-INFO" },
497 { DECT_MITEL_RFP_MESSAGE_TYPE_WLAN_RFP_ACK, "WLAN-RFP-ACK" },
498 { DECT_MITEL_RFP_MESSAGE_TYPE_WLAN_RFP_LINK_NOK_NACK, "WLAN-RFP-LINK-NON-NACK" },
499 { DECT_MITEL_RFP_MESSAGE_TYPE_WLAN_RFP_IFACE_REP, "WLAN-RFP-IFACE-REP" },
500 { DECT_MITEL_RFP_MESSAGE_TYPE_SNMP_RFP_UPDATE, "SNMP-RFP-UPDATE" },
501 { DECT_MITEL_RFP_MESSAGE_TYPE_CONF_OPEN, "CONF-OPEN" },
502 { DECT_MITEL_RFP_MESSAGE_TYPE_CONF_ADD_SUBSCR, "CONF-ADD-SUBSCR" },
503 { DECT_MITEL_RFP_MESSAGE_TYPE_CONF_CHG_SUBSCR, "CONF-CHG-SUBSCR" },
504 { DECT_MITEL_RFP_MESSAGE_TYPE_CONF_DEL_SUBSCR, "CONF-DEL-SUBSCR" },
505 { DECT_MITEL_RFP_MESSAGE_TYPE_CONF_CLOSE, "CONF-CLOSE" },
506 { DECT_MITEL_RFP_MESSAGE_TYPE_CONF_RTP, "CONF-RTP" },
507 { DECT_MITEL_RFP_MESSAGE_TYPE_BLUETOOTH_DEVICE, "BLUETOOTH-DEVICE" },
508 { DECT_MITEL_RFP_MESSAGE_TYPE_BLUETOOTH_CONFIG, "BLUETOOTH-CONFIG" },
509 { DECT_MITEL_RFP_MESSAGE_TYPE_BLUETOOTH_DATA, "BLUETOOTH-DATA" },
510 { DECT_MITEL_RFP_MESSAGE_TYPE_VIDEO_DEVICE, "VIDEO-DEVICE" },
511 { DECT_MITEL_RFP_MESSAGE_TYPE_VIDEO_CONFIG, "VIDEO-CONFIG" },
512 { 0, NULL }
515 /* CONTROL-NACK */
516 static const value_string dect_mitel_rfp_control_nack_reason_val[] = {
517 { DECT_MITEL_RFP_CONTROL_NACK_REASON_OK, "OK" },
518 { DECT_MITEL_RFP_CONTROL_NACK_REASON_INVALID_ELEMENT, "Invalid element" },
519 { DECT_MITEL_RFP_CONTROL_NACK_REASON_NO_RESOURCE, "No resource" },
520 { DECT_MITEL_RFP_CONTROL_NACK_REASON_WRONG_STATE, "Wrong state" },
521 { DECT_MITEL_RFP_CONTROL_NACK_REASON_INVALID_PARAMETERS, "Invalid parameters" },
522 { DECT_MITEL_RFP_CONTROL_NACK_REASON_PORT_IN_USE, "Port in use" },
523 { DECT_MITEL_RFP_CONTROL_NACK_REASON_CODEC_NOT_SUPPORTED, "Codec not supported" },
524 { DECT_MITEL_RFP_CONTROL_NACK_REASON_VIDEO_NOT_SUPPORTED, "Video not supported" },
525 { 0, NULL }
528 /* SYS-LED */
529 static const value_string dect_mitel_rfp_sys_led_color_val[] = {
530 { DECT_MITEL_RFP_SYS_LED_COLOR_OFF, "Off" },
531 { DECT_MITEL_RFP_SYS_LED_COLOR_STEADY_GREEN, "Steady green" },
532 { DECT_MITEL_RFP_SYS_LED_COLOR_FLASH_GREEN, "Flash green" },
533 { DECT_MITEL_RFP_SYS_LED_COLOR_FLASH_GREEN_ORANGE, "Flash green-orange" },
534 { DECT_MITEL_RFP_SYS_LED_COLOR_FLASH_GREEN_RED, "Flash green-red" },
535 { DECT_MITEL_RFP_SYS_LED_COLOR_STEADY_RED, "Steady red" },
536 { DECT_MITEL_RFP_SYS_LED_COLOR_STEADY_ORANGE, "Steady orange" },
537 { DECT_MITEL_RFP_SYS_LED_COLOR_CYCLE_GREEN_RED, "Cycle green-red" },
538 { 0, NULL }
541 /* SYS-INIT */
542 static const value_string dect_mitel_rfp_sys_init_rfp_model_val[] = {
543 { DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFP31, "RFP 31" },
544 { DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFP33, "RFP 33" },
545 { DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFP41, "RFP 41" },
546 { DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFP32, "RFP 32" },
547 { DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFP32US, "RFP 32 (US Version)" },
548 { DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFP34, "RFP 34" },
549 { DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFP34US, "RFP 34 (US Version)" },
550 { DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFP42, "RFP 42" },
551 { DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFP42US, "RFP 42 (US Version)" },
552 { DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFP35, "RFP 35" },
553 { DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFP36, "RFP 36" },
554 { DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFP43, "RFP 43" },
555 { DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFP37, "RFP 37" },
556 { DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFP44, "RFP 44" },
557 { DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFP45, "RFP 45" },
558 { DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFP47, "RFP 47" },
559 { DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFP48, "RFP 48" },
560 { DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_PC_ECM, "PC-ECM" },
561 { DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_PC, "PC" },
562 { DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFPL31, "RFP L31" },
563 { DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFPL33, "RFP L33" },
564 { DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFPL41, "RFP L41" },
565 { DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFPL32US, "RFP L32 (US Version)" },
566 { DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFPL34, "RFP L34" },
567 { DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFPL34US, "RFP L34 (US Version)" },
568 { DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFPL42, "RFP L42" },
569 { DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFPL42US, "RFP L42 (US Version)" },
570 { DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFPL35, "RFP L35" },
571 { DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFPL36, "RFP L36" },
572 { DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFPL43, "RFP L43" },
573 { DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFPL37, "RFP L37" },
574 { DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFPSL35, "RFP SL35" },
575 { DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFPSL36, "RFP SL36" },
576 { DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFPSL43, "RFP SL43" },
577 { DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFPSL37, "RFP SL37" },
578 { 0, NULL }
581 /* MEDIA */
582 static const value_string dect_mitel_rfp_media_direction_val[] = {
583 { DECT_MITEL_RFP_MEDIA_DIRECTION_NONE, "None" },
584 { DECT_MITEL_RFP_MEDIA_DIRECTION_RX, "RX" },
585 { DECT_MITEL_RFP_MEDIA_DIRECTION_TX, "TX" },
586 { DECT_MITEL_RFP_MEDIA_DIRECTION_RXTX, "RX+TX" },
587 { 0, NULL }
590 /* MEDIA-CONF */
591 static const value_string dect_mitel_rfp_media_conf_codec_type_val[] = {
592 { DECT_MITEL_RFP_MEDIA_CONF_CODEC_TYPE_G711_A, "G.711 alaw" },
593 { DECT_MITEL_RFP_MEDIA_CONF_CODEC_TYPE_G723_1_53, "G.723 5.3kbit/s" },
594 { DECT_MITEL_RFP_MEDIA_CONF_CODEC_TYPE_G723_1_63, "G.723 6.3kbit/s" },
595 { DECT_MITEL_RFP_MEDIA_CONF_CODEC_TYPE_G729, "G.729" },
596 { DECT_MITEL_RFP_MEDIA_CONF_CODEC_TYPE_G711_U, "G.711 ulaw" },
597 { 0, NULL }
600 /* SYNC */
601 static const value_string dect_mitel_rfp_sync_payload_type_val[] = {
602 { DECT_MITEL_RFP_SYNC_TYPE_GET_REQ_RSSI_COMP_IND, "GET_REQ_RSSI_COMP_IND" },
603 { DECT_MITEL_RFP_SYNC_TYPE_GET_REQ_RSSI_COMP_CFM, "GET_REQ_RSSI_COMP_CFM" },
604 { DECT_MITEL_RFP_SYNC_TYPE_FREQ_CTRL_MODE_IND, "FREQ_CTRL_MODE_IND" },
605 { DECT_MITEL_RFP_SYNC_TYPE_FREQ_CTRL_MODE_CFM, "FREQ_CTRL_MODE_CFM" },
606 { DECT_MITEL_RFP_SYNC_TYPE_PHASE_OFFSET_IND, "PHASE_OFFSET_IND" },
607 { DECT_MITEL_RFP_SYNC_TYPE_SET_FREQUENCY, "SET_FREQUENCY" },
608 { DECT_MITEL_RFP_SYNC_TYPE_SET_REPORT_LIMIT, "SET_REPORT_LIMIT" },
609 { DECT_MITEL_RFP_SYNC_TYPE_RESET_MAC_IND, "RESET_MAC_IND" },
610 { DECT_MITEL_RFP_SYNC_TYPE_START_MAC_MASTER_IND, "START_MAC_MASTER_IND" },
611 { DECT_MITEL_RFP_SYNC_TYPE_START_MAC_SLAVE_MODE_IND, "START_MAC_SLAVE_MODE_IND" },
612 { DECT_MITEL_RFP_SYNC_TYPE_SYSTEM_SEARCH_IND, "SYSTEM_SEARCH_IND" },
613 { DECT_MITEL_RFP_SYNC_TYPE_SYSTEM_SEARCH_CFM, "SYSTEM_SEARCH_CFM" },
614 { DECT_MITEL_RFP_SYNC_TYPE_MAC_STARTED_IND, "MAC_STARTED_IND" },
615 { DECT_MITEL_RFP_SYNC_TYPE_RESET_MAC_CFM, "RESET_MAC_CFM" },
616 { DECT_MITEL_RFP_SYNC_TYPE_START_MAC_MASTER_CFM, "START_MAC_MASTER_CFM" },
617 { DECT_MITEL_RFP_SYNC_TYPE_START_MAC_MASTER_REJ, "START_MAC_MASTER_REJ" },
618 { DECT_MITEL_RFP_SYNC_TYPE_START_MAC_SLAVE_MODE_CFM, "START_MAC_SLAVE_MODE_CFM" },
619 { DECT_MITEL_RFP_SYNC_TYPE_START_MAC_SLAVE_REJ, "START_MAC_SLAVE_REJ" },
620 { DECT_MITEL_RFP_SYNC_TYPE_SYSTEM_SEARCH_REJ, "SYSTEM_SEARCH_REJ" },
621 { DECT_MITEL_RFP_SYNC_TYPE_READY_FOR_SYNC_IND, "READY_FOR_SYNC_IND" },
622 { DECT_MITEL_RFP_SYNC_TYPE_GET_ACTIVE_CHANNEL_CFM, "GET_ACTIVE_CHANNEL_CFM" },
623 { DECT_MITEL_RFP_SYNC_TYPE_PHASE_OFS_WITH_RSSI_IND, "PHASE_OFS_WITH_RSSI_IND" },
624 { DECT_MITEL_RFP_SYNC_TYPE_RESET_MAC_IF_IDLE_CFM, "RESET_MAC_IF_IDLE_CFM" },
625 { DECT_MITEL_RFP_SYNC_TYPE_UNKNOWN_READY_FOR_SYNC, "UNKNOWN_READY_FOR_SYNC" },
626 { DECT_MITEL_RFP_SYNC_TYPE_UNKNOWN_STANDBY, "UNKNOWN_STANDBY" },
627 { 0, NULL }
630 static dissector_handle_t dect_mitel_rfp_handle;
631 static dissector_handle_t dect_mitel_eth_handle;
633 /* Preferences */
634 #define DECT_MITEL_RFP_TCP_PORT 16321
635 static unsigned tcp_port_pref = DECT_MITEL_RFP_TCP_PORT;
637 /* Initialize the subtree pointers */
638 static int ett_dect_mitel_rfp;
639 static int ett_dect_mitel_rfp_sys_init_rfp_capabilities;
640 static int ett_dect_mitel_rfp_media_tone_entry;
641 static int ett_dect_mitel_rfp_sync_system_search_cfm_item;
642 static int ett_dect_mitel_rfp_sync_phase_ofs_with_rssi_ind_item;
645 CONTROL-ACK Message
646 | Offset | Len | Content |
647 | ------ | --- | ------- |
648 | 0 | 2 | Message |
649 | 2 | 2 | Call ID |
651 static unsigned dissect_dect_mitel_rfp_control_ack(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_, unsigned offset)
653 proto_tree_add_item(tree, hf_dect_mitel_rfp_control_ack_message, tvb, offset, 2, ENC_NA);
654 offset += 2;
655 proto_tree_add_item(tree, hf_dect_mitel_rfp_control_ack_call_id, tvb, offset, 2, ENC_NA);
656 offset += 2;
657 return offset;
661 CONTROL-NACK Message
662 | Offset | Len | Content |
663 | ------ | --- | ------------- |
664 | 0 | 2 | Message |
665 | 2 | 2 | Call ID |
666 | 4 | 4 | Reject resaon |
668 static unsigned dissect_dect_mitel_rfp_control_nack(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_, unsigned offset)
670 proto_tree_add_item(tree, hf_dect_mitel_rfp_control_nack_message, tvb, offset, 2, ENC_NA);
671 offset += 2;
672 proto_tree_add_item(tree, hf_dect_mitel_rfp_control_nack_call_id, tvb, offset, 2, ENC_NA);
673 offset += 2;
674 proto_tree_add_item(tree, hf_dect_mitel_rfp_control_nack_reason, tvb, offset, 4, ENC_NA);
675 offset += 4;
676 return offset;
680 CONTROL-HEARTBEAT Message
681 | Offset | Len | Content |
682 | ------ | --- | ------------------- |
683 | 0 | 4 | Uptime milliseconds |
684 | 4 | 4 | Uptime nanoseconds |
686 static unsigned dissect_dect_mitel_rfp_control_heartbeat(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_, unsigned offset)
688 proto_tree_add_item(tree, hf_dect_mitel_rfp_control_heartbeat_milliseconds, tvb, offset, 4, ENC_NA);
689 offset += 4;
690 proto_tree_add_item(tree, hf_dect_mitel_rfp_control_heartbeat_nanoseconds, tvb, offset, 4, ENC_NA);
691 offset += 4;
692 return offset;
696 SYS-IP-OPTIONS Message
697 | Offset | Len | Content |
698 | ------ | --- | --------------------------- |
699 | 0 | 1 | Voice Type of Service (ToS) |
700 | 1 | 1 | Signalling ToS |
701 | 2 | 1 | TTL |
702 | 3 | 1 | Signal VLAN priority |
703 | 4 | 1 | Voice VLAN priority |
705 static unsigned dissect_dect_mitel_rfp_sys_ip_options(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_, unsigned offset)
707 proto_tree_add_item(tree, hf_dect_mitel_rfp_sys_ip_options_voice_tos, tvb, offset, 1, ENC_NA);
708 offset++;
709 proto_tree_add_item(tree, hf_dect_mitel_rfp_sys_ip_options_signalling_tos, tvb, offset, 1, ENC_NA);
710 offset++;
711 proto_tree_add_item(tree, hf_dect_mitel_rfp_sys_ip_options_ttl, tvb, offset, 1, ENC_NA);
712 offset++;
713 proto_tree_add_item(tree, hf_dect_mitel_rfp_sys_ip_options_signal_vlan_priority, tvb, offset, 1, ENC_NA);
714 offset++;
715 proto_tree_add_item(tree, hf_dect_mitel_rfp_sys_ip_options_voice_vlan_priority, tvb, offset, 1, ENC_NA);
716 offset++;
717 return offset;
721 SYS-LED Message
722 | Offset | Len | Content |
723 | ------ | --- | ----------- |
724 | 0 | 1 | LED ID |
725 | 1 | 1 | LED Colour |
727 static unsigned dissect_dect_mitel_rfp_sys_led(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_, unsigned offset)
729 uint8_t led_id, led_color;
730 proto_tree_add_item(tree, hf_dect_mitel_rfp_sys_led_id, tvb, offset, 1, ENC_NA);
731 led_id = tvb_get_uint8(tvb, offset);
732 offset++;
733 proto_tree_add_item(tree, hf_dect_mitel_rfp_sys_led_color, tvb, offset, 1, ENC_NA);
734 led_color = tvb_get_uint8(tvb, offset);
735 offset++;
736 col_append_fstr(pinfo->cinfo, COL_INFO, "LED %d:%s", led_id,
737 val_to_str(led_color, dect_mitel_rfp_sys_led_color_val, "Unknown: %02x"));
738 return offset;
742 SYS-HEARTBEAT-INTERVAL Message
743 | Offset | Len | Content |
744 | ------ | --- | ------------------ |
745 | 0 | 1 | Interval value (s) |
747 static unsigned dissect_dect_mitel_rfp_sys_heartbeat_interval(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_, unsigned offset)
749 uint8_t interval;
750 proto_tree_add_item(tree, hf_dect_mitel_rfp_sys_heartbeat_interval_value, tvb, offset, 1, ENC_BIG_ENDIAN);
751 interval = tvb_get_uint8(tvb, offset);
752 col_append_fstr(pinfo->cinfo, COL_INFO, "Interval: %ds", interval);
753 offset++;
755 return offset;
759 SYS-SYSLOG Message
760 | Offset | Len | Content |
761 | ------ | --- | ------------------ |
762 | 0 | 16 | IP Address |
763 | 16 | 2 | Port |
765 static unsigned dissect_dect_mitel_rfp_sys_syslog(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_, unsigned offset)
767 proto_tree_add_item(tree, hf_dect_mitel_rfp_sys_syslog_ip_address, tvb, offset, 16, ENC_NA);
768 offset += 16;
770 proto_tree_add_item(tree, hf_dect_mitel_rfp_sys_syslog_port, tvb, offset, 2, ENC_BIG_ENDIAN);
771 offset += 2;
773 return offset;
777 SYS-MAX-CHANNELS Message
778 | Offset | Len | Content |
779 | ------ | --- | --------- |
780 | 0 | 1 | DSP |
781 | 1 | 1 | Sesseions |
783 static unsigned dissect_dect_mitel_rfp_sys_max_channels(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_, unsigned offset)
785 proto_tree_add_item(tree, hf_dect_mitel_rfp_sys_max_channels_dsp, tvb, offset, 1, ENC_BIG_ENDIAN);
786 offset++;
788 proto_tree_add_item(tree, hf_dect_mitel_rfp_sys_max_channels_sessions, tvb, offset, 1, ENC_BIG_ENDIAN);
789 offset++;
791 return offset;
795 SYS-HTTP-SET Message
796 | Offset | Len | Content |
797 | ------ | --- | ------------------ |
798 | 0 | 16 | IP Address |
799 | 16 | 2 | Port |
801 static unsigned dissect_dect_mitel_rfp_sys_http_set(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_, unsigned offset)
803 proto_tree_add_item(tree, hf_dect_mitel_rfp_sys_http_set_ip_address, tvb, offset, 16, ENC_NA);
804 offset += 16;
806 proto_tree_add_item(tree, hf_dect_mitel_rfp_sys_http_set_port, tvb, offset, 2, ENC_BIG_ENDIAN);
807 offset += 2;
809 return offset;
813 SYS-PASSWD Message
814 | Offset | Len | Content |
815 | ------ | --- | --------------------------- |
816 | 0 | 1 | Remote Access Enabled (0x1) |
817 | 2 | 65 | Root username |
818 | 67 | 65 | Root password |
819 | 132 | 65 | Admin username |
820 | 197 | 65 | Admin password |
822 static unsigned dissect_dect_mitel_rfp_sys_passwd(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_, unsigned offset)
824 proto_tree_add_item(tree, hf_dect_mitel_rfp_sys_passwd_remote_access_enabled, tvb, offset, 1, ENC_BIG_ENDIAN);
825 offset += 2;
827 proto_tree_add_item(tree, hf_dect_mitel_rfp_sys_passwd_root_username, tvb, offset, 65, ENC_ASCII);
828 offset += 65;
830 proto_tree_add_item(tree, hf_dect_mitel_rfp_sys_passwd_root_password, tvb, offset, 65, ENC_ASCII);
831 offset += 65;
833 proto_tree_add_item(tree, hf_dect_mitel_rfp_sys_passwd_admin_username, tvb, offset, 65, ENC_ASCII);
834 offset += 65;
836 proto_tree_add_item(tree, hf_dect_mitel_rfp_sys_passwd_admin_password, tvb, offset, 65, ENC_ASCII);
837 offset += 65;
839 return offset;
843 SYS-RPING Message
844 | Offset | Len | Content |
845 | ------ | --- | ---------- |
846 | 0 | 16 | IP Address |
847 | 16 | 4 | RTT (ms) |
849 static unsigned dissect_dect_mitel_rfp_sys_rping(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_, unsigned offset)
851 proto_tree_add_item(tree, hf_dect_mitel_rfp_sys_rping_ip_address, tvb, offset, 16, ENC_NA);
852 offset += 16;
854 proto_tree_add_item(tree, hf_dect_mitel_rfp_sys_rping_rtt, tvb, offset, 4, ENC_BIG_ENDIAN);
855 offset += 4;
857 return offset;
861 SYS-CORE-DUMP Message
862 | Offset | Len | Content |
863 | ------ | --- | ------- |
864 | 0 | len | URL |
866 static unsigned dissect_dect_mitel_rfp_sys_core_dump(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_, unsigned offset, uint16_t message_length)
868 proto_tree_add_item(tree, hf_dect_mitel_rfp_sys_core_dump_url, tvb, offset, message_length, ENC_ASCII);
869 offset += message_length;
871 return offset;
875 SYS-VSNTP-TIME Message
876 | Offset | Len | Content |
877 | ------ | --- | -------------- |
878 | 0 | 4 | T1 seconds |
879 | 4 | 4 | T1 nanoseconds |
880 | 8 | 4 | T2 seconds |
881 | 12 | 4 | T2 nanoseconds |
883 static unsigned dissect_dect_mitel_rfp_sys_vsntp_time(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_, unsigned offset)
885 proto_tree_add_item(tree, hf_dect_mitel_rfp_sys_vsntp_time_t1_seconds, tvb, offset, 4, ENC_BIG_ENDIAN);
886 offset += 4;
888 proto_tree_add_item(tree, hf_dect_mitel_rfp_sys_vsntp_time_t1_nanoseconds, tvb, offset, 4, ENC_BIG_ENDIAN);
889 offset += 4;
891 proto_tree_add_item(tree, hf_dect_mitel_rfp_sys_vsntp_time_t2_seconds, tvb, offset, 4, ENC_BIG_ENDIAN);
892 offset += 4;
894 proto_tree_add_item(tree, hf_dect_mitel_rfp_sys_vsntp_time_t2_nanoseconds, tvb, offset, 4, ENC_BIG_ENDIAN);
895 offset += 4;
897 return offset;
901 SYS-INIT Message
902 | Offset | Len | Content |
903 | ------ | --- | ----------------- |
904 | 0 | 4 | Model Type |
905 | 8 | 6 | MAC Address |
906 | 20 | 4 | Capabilities |
907 | 24 | 64 | AES enrypted Data |
908 | 88 | 4 | Protocol |
909 | 112 | 32 | Software Version |
910 | 256 | 16 | Signature |
912 static unsigned dissect_dect_mitel_rfp_sys_init(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_, unsigned offset)
914 static int *const capabilities_flags [] = {
915 &hf_dect_mitel_rfp_sys_init_rfp_capability_normal_tx,
916 &hf_dect_mitel_rfp_sys_init_rfp_capability_indoor,
917 &hf_dect_mitel_rfp_sys_init_rfp_capability_wlan,
918 &hf_dect_mitel_rfp_sys_init_rfp_capability_encryption,
919 &hf_dect_mitel_rfp_sys_init_rfp_capability_frequency_shift,
920 &hf_dect_mitel_rfp_sys_init_rfp_capability_low_tx,
921 &hf_dect_mitel_rfp_sys_init_rfp_capability_advanced_feature,
922 NULL
925 proto_tree_add_item(tree, hf_dect_mitel_rfp_sys_init_rfp_model, tvb, offset, 4, ENC_NA);
926 offset += 8;
927 proto_tree_add_item(tree, hf_dect_mitel_rfp_sys_init_rfp_mac, tvb, offset, 6, ENC_NA);
928 offset += 12;
929 proto_tree_add_bitmask(tree, tvb, offset, hf_dect_mitel_rfp_sys_init_rfp_capabilities, ett_dect_mitel_rfp_sys_init_rfp_capabilities, capabilities_flags, ENC_NA);
930 offset += 4;
931 proto_tree_add_item(tree, hf_dect_mitel_rfp_sys_init_crypted, tvb, offset, 64, ENC_NA);
932 offset += 64;
933 proto_tree_add_item(tree, hf_dect_mitel_rfp_sys_init_protocol, tvb, offset, 4, ENC_NA);
934 offset += 24;
935 proto_tree_add_item(tree, hf_dect_mitel_rfp_sys_init_rfp_software_version, tvb, offset, 32, ENC_ASCII);
936 offset += 144;
937 proto_tree_add_item(tree, hf_dect_mitel_rfp_sys_init_signature, tvb, offset, 16, ENC_NA);
938 offset += 16;
939 return offset;
943 SYS-AUTHENTICATE Message
944 | Offset | Len | Content |
945 | ------ | --- | --------------- |
946 | 7 | 8 | RFP Blowfish IV |
947 | 21 | 8 | OMM Blowfish IV |
949 static unsigned dissect_dect_mitel_rfp_sys_authenticate(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_, unsigned offset)
951 offset += 7;
952 proto_tree_add_item(tree, hf_dect_mitel_rfp_sys_authenticate_rfp_iv, tvb, offset, 8, ENC_NA);
953 offset += 16;
954 proto_tree_add_item(tree, hf_dect_mitel_rfp_sys_authenticate_omm_iv, tvb, offset, 8, ENC_NA);
955 offset += 8;
956 return offset;
960 SYS-LICENSE-TIMER Message
961 | Offset | Len | Content | Comment |
962 | ------ | --- | ---------------- | ------------------------------------ |
963 | 0 | 4 | Grace period (m) | Most significant bit indicates QUERY |
964 | 4 | 16 | Checksum | |
966 static unsigned dissect_dect_mitel_rfp_sys_license_timer(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_, unsigned offset)
968 proto_tree_add_item(tree, hf_dect_mitel_rfp_sys_license_timer_query, tvb, offset, 4, ENC_BIG_ENDIAN);
969 proto_tree_add_item(tree, hf_dect_mitel_rfp_sys_license_timer_grace_period, tvb, offset, 4, ENC_BIG_ENDIAN);
970 offset += 4;
972 proto_tree_add_item(tree, hf_dect_mitel_rfp_sys_license_timer_checksum, tvb, offset, 16, ENC_NA);
973 offset += 16;
975 return offset;
979 MEDIA-OPEN Message
980 | Offset | Len | Content |
981 | ------ | --- | ---------- |
982 | 0 | 1 | Codec |
983 | 1 | 1 | Slot count |
984 | 2 | 4 | Flags |
986 static unsigned dissect_dect_mitel_rfp_media_open(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_, unsigned offset)
988 proto_tree_add_item(tree, hf_dect_mitel_rfp_media_open_codec, tvb, offset, 1, ENC_BIG_ENDIAN);
989 offset++;
991 proto_tree_add_item(tree, hf_dect_mitel_rfp_media_open_slot_count, tvb, offset, 1, ENC_BIG_ENDIAN);
992 offset++;
994 proto_tree_add_item(tree, hf_dect_mitel_rfp_media_open_flags, tvb, offset, 4, ENC_BIG_ENDIAN);
995 offset+=4;
997 return offset;
1001 MEDIA-CONF Message
1002 | Offset | Len | Content |
1003 | ------ | --- | ------------- |
1004 | 2 | 1 | Vif |
1005 | 3 | 1 | VAD |
1006 | 4 | 1 | Codec count |
1007 | 5 | 1 | Codec 1 Type |
1008 | 6 | 1 | Codec 1 Pt |
1009 | 7 | 1 | Codec 1 Rate |
1010 | .. | .. | ... |
1011 | 56 | 1 | MCEI |
1012 | 58 | 2 | PPN |
1013 | 64 | 2 | Local port 1 |
1014 | 66 | 2 | Local port 2 |
1015 | 70 | 4 | RX IP address |
1016 | 74 | 2 | RX port 1 |
1017 | 76 | 2 | RX port 2 |
1018 | 78 | 4 | TX IP address |
1019 | 82 | 2 | TX port 1 |
1020 | 84 | 2 | TX port 2 |
1022 static unsigned dissect_dect_mitel_rfp_media_conf(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_, unsigned offset)
1024 uint32_t codec_count;
1025 unsigned mcei_offset;
1026 mcei_offset = offset + 56;
1027 offset += 2;
1029 proto_tree_add_item(tree, hf_dect_mitel_rfp_media_conf_vif, tvb, offset, 1,ENC_BIG_ENDIAN);
1030 offset++;
1032 proto_tree_add_item(tree, hf_dect_mitel_rfp_media_conf_vad, tvb, offset, 1, ENC_BIG_ENDIAN);
1033 offset++;
1035 proto_tree_add_item_ret_uint(tree, hf_dect_mitel_rfp_media_conf_codec_count, tvb, offset, 1, ENC_BIG_ENDIAN, &codec_count);
1036 offset++;
1038 for (uint32_t i = 0; i < codec_count && offset < mcei_offset; i++) {
1039 proto_tree_add_item(tree, hf_dect_mitel_rfp_media_conf_codec_type, tvb, offset, 1, ENC_BIG_ENDIAN);
1040 offset++;
1041 proto_tree_add_item(tree, hf_dect_mitel_rfp_media_conf_codec_pt, tvb, offset, 1, ENC_BIG_ENDIAN);
1042 offset++;
1043 proto_tree_add_item(tree, hf_dect_mitel_rfp_media_conf_codec_rate, tvb, offset, 1, ENC_BIG_ENDIAN);
1044 offset++;
1047 offset = mcei_offset;
1048 proto_tree_add_item(tree, hf_dect_mitel_rfp_media_mcei, tvb, offset, 1, ENC_BIG_ENDIAN);
1049 offset += 2;
1051 proto_tree_add_item(tree, hf_dect_mitel_rfp_media_conf_ppn, tvb, offset, 2, ENC_LITTLE_ENDIAN);
1052 offset += 6;
1054 proto_tree_add_item(tree, hf_dect_mitel_rfp_media_conf_local_port_1, tvb, offset, 2, ENC_BIG_ENDIAN);
1055 offset += 2;
1057 proto_tree_add_item(tree, hf_dect_mitel_rfp_media_conf_local_port_2, tvb, offset, 2, ENC_BIG_ENDIAN);
1058 offset += 2;
1060 proto_tree_add_item(tree, hf_dect_mitel_rfp_media_conf_rx_ip_address, tvb, offset, 4, ENC_BIG_ENDIAN);
1061 offset += 4;
1063 proto_tree_add_item(tree, hf_dect_mitel_rfp_media_conf_rx_port_1, tvb, offset, 2, ENC_BIG_ENDIAN);
1064 offset += 2;
1066 proto_tree_add_item(tree, hf_dect_mitel_rfp_media_conf_rx_port_2, tvb, offset, 2, ENC_BIG_ENDIAN);
1067 offset += 2;
1069 proto_tree_add_item(tree, hf_dect_mitel_rfp_media_conf_tx_ip_address, tvb, offset, 4, ENC_BIG_ENDIAN);
1070 offset += 4;
1072 proto_tree_add_item(tree, hf_dect_mitel_rfp_media_conf_tx_port_1, tvb, offset, 2, ENC_BIG_ENDIAN);
1073 offset += 2;
1075 proto_tree_add_item(tree, hf_dect_mitel_rfp_media_conf_tx_port_2, tvb, offset, 2, ENC_BIG_ENDIAN);
1076 offset += 2;
1078 return offset;
1082 MEDIA-START Message
1083 | Offset | Len | Content |
1084 | ------ | --- | ------------- |
1085 | 0 | 1 | Direction |
1086 | 2 | 4 | Time |
1087 | 6 | 1 | Met keepalive |
1089 static unsigned dissect_dect_mitel_rfp_media_start(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_, unsigned offset)
1091 proto_tree_add_item(tree, hf_dect_mitel_rfp_media_direction, tvb, offset, 1, ENC_BIG_ENDIAN);
1092 offset += 2;
1094 proto_tree_add_item(tree, hf_dect_mitel_rfp_media_start_time, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1095 offset += 4;
1097 proto_tree_add_item(tree, hf_dect_mitel_rfp_media_start_met_keep_alive, tvb, offset, 1, ENC_BIG_ENDIAN);
1098 offset++;
1100 return offset;
1104 MEDIA-STOP Message
1105 | Offset | Len | Content |
1106 | ------ | --- | ------------- |
1107 | 0 | 1 | Direction |
1109 static unsigned dissect_dect_mitel_rfp_media_stop(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_, unsigned offset)
1111 proto_tree_add_item(tree, hf_dect_mitel_rfp_media_direction, tvb, offset, 1, ENC_BIG_ENDIAN);
1112 offset++;
1114 return offset;
1118 MEDIA-STATISTICS Message
1119 | Offset | Len | Content |
1120 | ------ | --- | -------------- |
1121 | 2 | 4 | Duration |
1122 | 6 | 4 | TX packets |
1123 | 10 | 4 | TX bytes |
1124 | 14 | 4 | RX packets |
1125 | 18 | 4 | RX bytes |
1126 | 22 | 4 | Lost packets |
1127 | 26 | 4 | Max jitter |
1128 | 30 | 4 | RTP IP address |
1130 static unsigned dissect_dect_mitel_rfp_media_statistics(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_, unsigned offset)
1132 proto_tree_add_item(tree, hf_dect_mitel_rfp_media_statistics_duration, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1133 offset += 4;
1135 proto_tree_add_item(tree, hf_dect_mitel_rfp_media_statistics_tx_packets, tvb, offset, 4, ENC_BIG_ENDIAN);
1136 offset += 4;
1138 proto_tree_add_item(tree, hf_dect_mitel_rfp_media_statistics_tx_bytes, tvb, offset, 4, ENC_BIG_ENDIAN);
1139 offset += 4;
1141 proto_tree_add_item(tree, hf_dect_mitel_rfp_media_statistics_rx_packets, tvb, offset, 4, ENC_BIG_ENDIAN);
1142 offset += 4;
1144 proto_tree_add_item(tree, hf_dect_mitel_rfp_media_statistics_rx_bytes, tvb, offset, 4, ENC_BIG_ENDIAN);
1145 offset += 4;
1147 proto_tree_add_item(tree, hf_dect_mitel_rfp_media_statistics_lost_packets, tvb, offset, 4, ENC_BIG_ENDIAN);
1148 offset += 4;
1150 proto_tree_add_item(tree, hf_dect_mitel_rfp_media_statistics_max_jitter, tvb, offset, 4, ENC_BIG_ENDIAN);
1151 offset += 4;
1153 proto_tree_add_item(tree, hf_dect_mitel_rfp_media_statistics_rtp_ip_address, tvb, offset, 4, ENC_BIG_ENDIAN);
1154 offset += 4;
1156 return offset;
1160 MEDIA-REDIRECT-START Message
1161 | Offset | Len | Content |
1162 | ------ | --- | ------------------ |
1163 | 2 | 2 | Local port 1 |
1164 | 4 | 2 | Local port 2 |
1165 | 6 | 4 | Remote IP address |
1166 | 10 | 2 | Remote port 1 |
1167 | 12 | 2 | Remote port 2 |
1168 | 14 | 4 | Time |
1170 static unsigned dissect_dect_mitel_rfp_media_redirect_start(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_, unsigned offset)
1172 offset += 2;
1174 proto_tree_add_item(tree, hf_dect_mitel_rfp_media_redirect_start_local_port_1, tvb, offset, 2, ENC_BIG_ENDIAN);
1175 offset += 2;
1177 proto_tree_add_item(tree, hf_dect_mitel_rfp_media_redirect_start_local_port_2, tvb, offset, 2, ENC_BIG_ENDIAN);
1178 offset += 2;
1180 proto_tree_add_item(tree, hf_dect_mitel_rfp_media_redirect_start_remote_ip_address, tvb, offset, 4, ENC_BIG_ENDIAN);
1181 offset += 4;
1183 proto_tree_add_item(tree, hf_dect_mitel_rfp_media_redirect_start_remote_port_1, tvb, offset, 2, ENC_BIG_ENDIAN);
1184 offset += 2;
1186 proto_tree_add_item(tree, hf_dect_mitel_rfp_media_redirect_start_remote_port_2, tvb, offset, 2, ENC_BIG_ENDIAN);
1187 offset += 2;
1189 proto_tree_add_item(tree, hf_dect_mitel_rfp_media_redirect_start_time, tvb, offset, 4, ENC_BIG_ENDIAN);
1190 offset += 4;
1191 return offset;
1195 MEDIA-REDIRECT-STOP Message
1196 | Offset | Len | Content |
1197 | ------ | --- | ------------- |
1198 | 0 | 1 | Fallback |
1200 static unsigned dissect_dect_mitel_rfp_media_redirect_stop(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_, unsigned offset)
1202 proto_tree_add_item(tree, hf_dect_mitel_rfp_media_redirect_stop_fallback, tvb, offset, 1, ENC_BIG_ENDIAN);
1203 offset++;
1205 return offset;
1209 MEDIA-RESTART Message
1210 | Offset | Len | Content |
1211 | ------ | --- | ------- |
1212 | 0 | 1 | MCEI |
1214 static unsigned dissect_dect_mitel_rfp_media_restart(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_, unsigned offset)
1216 proto_tree_add_item(tree, hf_dect_mitel_rfp_media_mcei, tvb, offset, 1, ENC_BIG_ENDIAN);
1217 offset++;
1219 return offset;
1223 MEDIA-DTMF Message
1224 | Offset | Len | Content |
1225 | ------ | --- | --------- |
1226 | 0 | 2 | Duration |
1227 | 2 | 1 | Key |
1228 | 3 | 1 | Direction |
1230 static unsigned dissect_dect_mitel_rfp_media_dtmf(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_, unsigned offset)
1232 proto_tree_add_item(tree, hf_dect_mitel_rfp_media_dtmf_duration, tvb, offset, 2, ENC_LITTLE_ENDIAN);
1233 offset += 2;
1235 proto_tree_add_item(tree, hf_dect_mitel_rfp_media_dtmf_key, tvb, offset, 1, ENC_ASCII_7BITS);
1236 offset++;
1238 proto_tree_add_item(tree, hf_dect_mitel_rfp_media_direction, tvb, offset, 1, ENC_BIG_ENDIAN);
1239 offset++;
1241 return offset;
1245 MEDIA-TONE Message
1246 | Offset | Len | Content |
1247 | ------ | --- | --------- |
1248 | 0 | 1 | Direction |
1249 | 1 | 1 | Count |
1250 | 6 | 24 | Tone 0 |
1251 | ... | ... | ... |
1252 | 6+24*n | 24 | Tone n |
1254 Tone:
1255 | Offset | Len | Content |
1256 | ------ | --- | ----------- |
1257 | 0 | 2 | Frequency 1 |
1258 | 2 | 2 | Frequency 2 |
1259 | 4 | 2 | Frequency 3 |
1260 | 6 | 2 | Frequency 4 |
1261 | 8 | 2 | cB 1 |
1262 | 10 | 2 | cB 2 |
1263 | 12 | 2 | cB 3 |
1264 | 14 | 2 | cB 4 |
1265 | 16 | 2 | Duration |
1266 | 18 | 2 | Cycle count |
1267 | 20 | 2 | Cycle to |
1268 | 22 | 2 | Next |
1270 static unsigned dissect_dect_mitel_rfp_media_tone(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_, unsigned offset)
1272 uint8_t tone_count;
1273 proto_tree *tone_tree;
1275 proto_tree_add_item(tree, hf_dect_mitel_rfp_media_direction, tvb, offset, 1, ENC_BIG_ENDIAN);
1276 offset++;
1278 proto_tree_add_item(tree, hf_dect_mitel_rfp_media_tone_count, tvb, offset, 1, ENC_BIG_ENDIAN);
1279 tone_count = tvb_get_uint8(tvb, offset);
1280 offset += 5;
1282 for (uint8_t i = 0; i < tone_count; i++) {
1283 tone_tree = proto_tree_add_subtree(tree, tvb, offset, 24, ett_dect_mitel_rfp_media_tone_entry, NULL, "Tone entry");
1285 proto_tree_add_item(tone_tree, hf_dect_mitel_rfp_media_tone_frequency_1, tvb, offset, 2, ENC_LITTLE_ENDIAN);
1286 offset += 2;
1288 proto_tree_add_item(tone_tree, hf_dect_mitel_rfp_media_tone_frequency_2, tvb, offset, 2, ENC_LITTLE_ENDIAN);
1289 offset += 2;
1291 proto_tree_add_item(tone_tree, hf_dect_mitel_rfp_media_tone_frequency_3, tvb, offset, 2, ENC_LITTLE_ENDIAN);
1292 offset += 2;
1294 proto_tree_add_item(tone_tree, hf_dect_mitel_rfp_media_tone_frequency_4, tvb, offset, 2, ENC_LITTLE_ENDIAN);
1295 offset += 2;
1297 proto_tree_add_item(tone_tree, hf_dect_mitel_rfp_media_tone_cb_1, tvb, offset, 2, ENC_LITTLE_ENDIAN);
1298 offset += 2;
1300 proto_tree_add_item(tone_tree, hf_dect_mitel_rfp_media_tone_cb_2, tvb, offset, 2, ENC_LITTLE_ENDIAN);
1301 offset += 2;
1303 proto_tree_add_item(tone_tree, hf_dect_mitel_rfp_media_tone_cb_3, tvb, offset, 2, ENC_LITTLE_ENDIAN);
1304 offset += 2;
1306 proto_tree_add_item(tone_tree, hf_dect_mitel_rfp_media_tone_cb_4, tvb, offset, 2, ENC_LITTLE_ENDIAN);
1307 offset += 2;
1309 proto_tree_add_item(tone_tree, hf_dect_mitel_rfp_media_tone_duration, tvb, offset, 2, ENC_LITTLE_ENDIAN);
1310 offset += 2;
1312 proto_tree_add_item(tone_tree, hf_dect_mitel_rfp_media_tone_cycle_count, tvb, offset, 2, ENC_LITTLE_ENDIAN);
1313 offset += 2;
1315 proto_tree_add_item(tone_tree, hf_dect_mitel_rfp_media_tone_cycle_to, tvb, offset, 2, ENC_LITTLE_ENDIAN);
1316 offset += 2;
1318 proto_tree_add_item(tone_tree, hf_dect_mitel_rfp_media_tone_next, tvb, offset, 2, ENC_LITTLE_ENDIAN);
1319 offset += 2;
1322 return offset;
1326 MEDIA Message
1327 | Offset | Len | Content |
1328 | ------ | --- | --------------- |
1329 | 0 | 2 | Handle |
1330 | 2 | | Message content |
1332 static unsigned dissect_dect_mitel_rfp_media(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data, unsigned offset, uint16_t message_type)
1334 proto_tree_add_item(tree, hf_dect_mitel_rfp_media_handle, tvb, offset, 2, ENC_BIG_ENDIAN);
1335 offset += 2;
1337 switch(message_type) {
1338 case DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_OPEN:
1339 offset = dissect_dect_mitel_rfp_media_open(tvb, pinfo, tree, data, offset);
1340 break;
1341 case DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_CONF:
1342 offset = dissect_dect_mitel_rfp_media_conf(tvb, pinfo, tree, data, offset);
1343 break;
1344 case DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_CLOSE:
1345 offset += 2;
1346 break;
1347 case DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_START:
1348 offset = dissect_dect_mitel_rfp_media_start(tvb, pinfo, tree, data, offset);
1349 break;
1350 case DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_STOP:
1351 offset = dissect_dect_mitel_rfp_media_stop(tvb, pinfo, tree, data, offset);
1352 break;
1353 case DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_STATISTICS:
1354 offset = dissect_dect_mitel_rfp_media_statistics(tvb, pinfo, tree, data, offset);
1355 break;
1356 case DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_REDIRECT_START:
1357 offset = dissect_dect_mitel_rfp_media_redirect_start(tvb, pinfo, tree, data, offset);
1358 break;
1359 case DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_REDIRECT_STOP:
1360 offset = dissect_dect_mitel_rfp_media_redirect_stop(tvb, pinfo, tree, data, offset);
1361 break;
1362 case DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_RESTART:
1363 offset = dissect_dect_mitel_rfp_media_restart(tvb, pinfo, tree, data, offset);
1364 break;
1365 case DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_DTMF:
1366 offset = dissect_dect_mitel_rfp_media_dtmf(tvb, pinfo, tree, data, offset);
1367 break;
1368 case DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_TONE:
1369 offset = dissect_dect_mitel_rfp_media_tone(tvb, pinfo, tree, data, offset);
1370 break;
1372 return offset;
1376 SYNC FREQ_CTRL_MODE_IND Message
1377 | Offset | Len | Content |
1378 | ------ | --- | ------- |
1379 | 0 | 1 | Mode |
1381 static unsigned dissect_dect_mitel_rfp_sync_freq_ctrl_mode_ind(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_, unsigned offset)
1383 proto_tree_add_item(tree, hf_dect_mitel_rfp_sync_freq_ctrl_mode_ind_mode, tvb, offset, 1, ENC_BIG_ENDIAN);
1384 offset++;
1386 return offset;
1390 SYNC FREQ_CTRL_MODE_CFM Message
1391 | Offset | Len | Content |
1392 | ------ | --- | ------- |
1393 | 0 | 1 | Mode |
1394 | 1 | 2 | Ppm |
1395 | 3 | 2 | Avg |
1397 static unsigned dissect_dect_mitel_rfp_sync_freq_ctrl_mode_cfm(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_, unsigned offset)
1399 proto_tree_add_item(tree, hf_dect_mitel_rfp_sync_freq_ctrl_mode_cfm_mode, tvb, offset, 1, ENC_BIG_ENDIAN);
1400 offset++;
1402 proto_tree_add_item(tree, hf_dect_mitel_rfp_sync_freq_ctrl_mode_cfm_ppm, tvb, offset, 2, ENC_BIG_ENDIAN);
1403 offset += 2;
1405 proto_tree_add_item(tree, hf_dect_mitel_rfp_sync_freq_ctrl_mode_cfm_avg, tvb, offset, 2, ENC_BIG_ENDIAN);
1406 offset += 2;
1408 return offset;
1412 SYNC SET_FREQUENCY Message
1413 | Offset | Len | Content |
1414 | ------ | --- | --------- |
1415 | 0 | 2 | Frequency |
1417 static unsigned dissect_dect_mitel_rfp_sync_set_frequency(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_, unsigned offset)
1419 proto_tree_add_item(tree, hf_dect_mitel_rfp_sync_set_frequency_value, tvb, offset, 2, ENC_BIG_ENDIAN);
1420 offset += 2;
1422 return offset;
1426 SYNC START_MAC_SLAVE_MODE Message
1427 | Offset | Len | Content |
1428 | ------ | --- | --------- |
1429 | 0 | 2 | RFP |
1431 static unsigned dissect_dect_mitel_rfp_start_mac_slave_mode(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_, unsigned offset)
1433 proto_tree_add_item(tree, hf_dect_mitel_rfp_sync_start_mac_slave_mode_ind_rfp, tvb, offset, 2, ENC_BIG_ENDIAN);
1434 offset += 2;
1436 return offset;
1440 SYNC SYSTEM_SEARCH_IND Message
1441 | Offset | Len | Content |
1442 | ------ | --- | ------- |
1443 | 0 | 1 | Mode |
1445 static unsigned dissect_dect_mitel_rfp_sync_system_search_ind(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_, unsigned offset)
1447 proto_tree_add_item(tree, hf_dect_mitel_rfp_sync_system_search_ind_mode, tvb, offset, 1, ENC_BIG_ENDIAN);
1448 offset++;
1450 return offset;
1454 SYNC SYSTEM_SEARCH_CFM Message
1455 | Offset | Len | Content |
1456 | ------ | --- | ------- |
1457 | 0 | 1 | Count |
1458 | 1 | 4 | Item 1 |
1459 | ... | ... | ... |
1460 | 1+4*n | 4 | Item n |
1462 Item:
1464 | Offset | Len | Content |
1465 | ------ | --- | ------------- |
1466 | 0 | 2 | RPN |
1467 | 4 | 2 | RSSI |
1469 static unsigned dissect_dect_mitel_rfp_sync_system_search_cfm(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_, unsigned offset)
1471 uint8_t item_count;
1472 proto_tree *item_tree;
1474 proto_tree_add_item(tree, hf_dect_mitel_rfp_sync_system_search_cfm_count, tvb, offset, 1, ENC_BIG_ENDIAN);
1475 item_count = tvb_get_uint8(tvb, offset);
1476 offset++;
1478 for (uint8_t i = 0; i < item_count; i++) {
1479 item_tree = proto_tree_add_subtree(tree, tvb, offset, 4, ett_dect_mitel_rfp_sync_phase_ofs_with_rssi_ind_item, NULL, "Item");
1481 proto_tree_add_item(item_tree, hf_dect_mitel_rfp_sync_system_search_cfm_item_rpn, tvb, offset, 2, ENC_BIG_ENDIAN);
1482 offset += 2;
1484 proto_tree_add_item(item_tree, hf_dect_mitel_rfp_sync_system_search_cfm_item_rssi, tvb, offset, 2, ENC_BIG_ENDIAN);
1485 offset += 2;
1488 return offset;
1493 SYNC PHASE_OFS_WITH_RSSI_IND Message
1494 | Offset | Len | Content |
1495 | ------ | --- | ------- |
1496 | 0 | 1 | Count |
1497 | 1 | 6 | Item 1 |
1498 | ... | ... | ... |
1499 | 1+6*n | 6 | Item n |
1501 Item:
1503 | Offset | Len | Content |
1504 | ------ | --- | ------------- |
1505 | 0 | 2 | RPN |
1506 | 2 | 2 | Offset |
1507 | 4 | 1 | RSSI |
1508 | 5 | 1 | Qt Sync Check |
1510 static unsigned dissect_dect_mitel_rfp_sync_phase_ofs_with_rssi_ind(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_, unsigned offset)
1512 uint8_t item_count;
1513 proto_tree *item_tree;
1515 proto_tree_add_item(tree, hf_dect_mitel_rfp_sync_phase_ofs_with_rssi_ind_count, tvb, offset, 1, ENC_BIG_ENDIAN);
1516 item_count = tvb_get_uint8(tvb, offset);
1517 offset++;
1519 for (uint8_t i = 0; i < item_count; i++) {
1520 item_tree = proto_tree_add_subtree(tree, tvb, offset, 6, ett_dect_mitel_rfp_sync_phase_ofs_with_rssi_ind_item, NULL, "Item");
1522 proto_tree_add_item(item_tree, hf_dect_mitel_rfp_sync_phase_ofs_with_rssi_ind_item_rpn, tvb, offset, 2, ENC_BIG_ENDIAN);
1523 offset += 2;
1525 proto_tree_add_item(item_tree, hf_dect_mitel_rfp_sync_phase_ofs_with_rssi_ind_item_offset, tvb, offset, 2, ENC_BIG_ENDIAN);
1526 offset += 2;
1528 proto_tree_add_item(item_tree, hf_dect_mitel_rfp_sync_phase_ofs_with_rssi_ind_item_rssi, tvb, offset, 1, ENC_BIG_ENDIAN);
1529 offset++;
1531 proto_tree_add_item(item_tree, hf_dect_mitel_rfp_sync_phase_ofs_with_rssi_ind_item_qt_sync_check, tvb, offset, 1, ENC_BIG_ENDIAN);
1532 offset++;
1535 return offset;
1539 SYNC Message
1540 | Offset | Len | Content |
1541 | ------ | --- | ------- |
1542 | 0 | 2 | Type |
1543 | 2 | 1 | Length |
1544 | 3 | len | Content |
1546 static unsigned dissect_dect_mitel_rfp_sync(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data, unsigned offset)
1548 uint16_t message_type;
1549 uint8_t payload_length;
1550 proto_tree_add_item(tree, hf_dect_mitel_rfp_sync_payload_type, tvb, offset, 2, ENC_BIG_ENDIAN);
1551 message_type = tvb_get_uint16(tvb, offset, ENC_BIG_ENDIAN);
1552 col_append_fstr(pinfo->cinfo, COL_INFO, "%s ",
1553 val_to_str(message_type, dect_mitel_rfp_sync_payload_type_val, " Unknown 0x%04x"));
1554 offset += 2;
1556 proto_tree_add_item(tree, hf_dect_mitel_rfp_sync_payload_length, tvb, offset, 1, ENC_BIG_ENDIAN);
1557 payload_length = tvb_get_uint8(tvb, offset);
1558 offset++;
1560 if (payload_length > 0) {
1561 switch(message_type) {
1562 case DECT_MITEL_RFP_SYNC_TYPE_FREQ_CTRL_MODE_IND:
1563 offset = dissect_dect_mitel_rfp_sync_freq_ctrl_mode_ind(tvb, pinfo, tree, data, offset);
1564 break;
1565 case DECT_MITEL_RFP_SYNC_TYPE_FREQ_CTRL_MODE_CFM:
1566 offset = dissect_dect_mitel_rfp_sync_freq_ctrl_mode_cfm(tvb, pinfo, tree, data, offset);
1567 break;
1568 case DECT_MITEL_RFP_SYNC_TYPE_SET_FREQUENCY:
1569 offset = dissect_dect_mitel_rfp_sync_set_frequency(tvb, pinfo, tree, data, offset);
1570 break;
1571 case DECT_MITEL_RFP_SYNC_TYPE_START_MAC_SLAVE_MODE_IND:
1572 offset = dissect_dect_mitel_rfp_start_mac_slave_mode(tvb, pinfo, tree, data, offset);
1573 break;
1574 case DECT_MITEL_RFP_SYNC_TYPE_SYSTEM_SEARCH_IND:
1575 offset = dissect_dect_mitel_rfp_sync_system_search_ind(tvb, pinfo, tree, data, offset);
1576 break;
1577 case DECT_MITEL_RFP_SYNC_TYPE_SYSTEM_SEARCH_CFM:
1578 offset = dissect_dect_mitel_rfp_sync_system_search_cfm(tvb, pinfo, tree, data, offset);
1579 break;
1580 case DECT_MITEL_RFP_SYNC_TYPE_PHASE_OFS_WITH_RSSI_IND:
1581 offset = dissect_dect_mitel_rfp_sync_phase_ofs_with_rssi_ind(tvb, pinfo, tree, data, offset);
1582 break;
1586 return offset;
1589 static int dissect_dect_mitel_rfp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
1591 proto_item *ti;
1592 proto_tree *dect_mitel_rfp_tree;
1594 unsigned offset = 0;
1595 uint16_t message_type, message_length;
1596 tvbuff_t *next_tvb;
1597 bool ip_encapsulated = true;
1599 /*** COLUMN DATA ***/
1600 col_set_str(pinfo->cinfo, COL_PROTOCOL, "MITEL-RFP");
1601 col_clear(pinfo->cinfo, COL_INFO);
1603 /*** PROTOCOL TREE ***/
1604 ti = proto_tree_add_item(tree, proto_dect_mitel_rfp, tvb, 0, -1, ENC_NA);
1606 dect_mitel_rfp_tree = proto_item_add_subtree(ti, ett_dect_mitel_rfp);
1608 proto_tree_add_item(dect_mitel_rfp_tree, hf_dect_mitel_rfp_message_type, tvb,
1609 offset, 2, ENC_NA);
1610 message_type = tvb_get_uint16(tvb, offset, ENC_NA);
1611 col_append_fstr(pinfo->cinfo, COL_INFO, "%s ",
1612 val_to_str(message_type, dect_mitel_rfp_message_type_val, "Unknown 0x%04x"));
1613 offset += 2;
1615 proto_tree_add_item(dect_mitel_rfp_tree, hf_dect_mitel_rfp_message_length, tvb,
1616 offset, 2, ENC_NA);
1617 message_length = tvb_get_uint16(tvb, offset, ENC_BIG_ENDIAN);
1618 offset += 2;
1620 switch ( message_type ) {
1621 case DECT_MITEL_RFP_MESSAGE_TYPE_CONTROL_ACK:
1622 dissect_dect_mitel_rfp_control_ack(tvb, pinfo, dect_mitel_rfp_tree, data, offset);
1623 break;
1624 case DECT_MITEL_RFP_MESSAGE_TYPE_CONTROL_NACK:
1625 dissect_dect_mitel_rfp_control_nack(tvb, pinfo, dect_mitel_rfp_tree, data, offset);
1626 break;
1627 case DECT_MITEL_RFP_MESSAGE_TYPE_CONTROL_HEARTBEAT:
1628 dissect_dect_mitel_rfp_control_heartbeat(tvb, pinfo, dect_mitel_rfp_tree, data, offset);
1629 break;
1630 case DECT_MITEL_RFP_MESSAGE_TYPE_SYS_IP_OPTIONS:
1631 dissect_dect_mitel_rfp_sys_ip_options(tvb, pinfo, dect_mitel_rfp_tree, data, offset);
1632 break;
1633 case DECT_MITEL_RFP_MESSAGE_TYPE_SYS_LED:
1634 dissect_dect_mitel_rfp_sys_led(tvb, pinfo, dect_mitel_rfp_tree, data, offset);
1635 break;
1636 case DECT_MITEL_RFP_MESSAGE_TYPE_SYS_HEARTBEAT_INTERVAL:
1637 dissect_dect_mitel_rfp_sys_heartbeat_interval(tvb, pinfo, dect_mitel_rfp_tree, data, offset);
1638 break;
1639 case DECT_MITEL_RFP_MESSAGE_TYPE_SYS_SYSLOG:
1640 dissect_dect_mitel_rfp_sys_syslog(tvb, pinfo, dect_mitel_rfp_tree, data, offset);
1641 break;
1642 case DECT_MITEL_RFP_MESSAGE_TYPE_SYS_MAX_CHANNELS:
1643 dissect_dect_mitel_rfp_sys_max_channels(tvb, pinfo, dect_mitel_rfp_tree, data, offset);
1644 break;
1645 case DECT_MITEL_RFP_MESSAGE_TYPE_SYS_HTTP_SET:
1646 dissect_dect_mitel_rfp_sys_http_set(tvb, pinfo, dect_mitel_rfp_tree, data, offset);
1647 break;
1648 case DECT_MITEL_RFP_MESSAGE_TYPE_SYS_PASSWD:
1649 dissect_dect_mitel_rfp_sys_passwd(tvb, pinfo, dect_mitel_rfp_tree, data, offset);
1650 break;
1651 case DECT_MITEL_RFP_MESSAGE_TYPE_SYS_RPING:
1652 dissect_dect_mitel_rfp_sys_rping(tvb, pinfo, dect_mitel_rfp_tree, data, offset);
1653 break;
1654 case DECT_MITEL_RFP_MESSAGE_TYPE_SYS_CORE_DUMP:
1655 dissect_dect_mitel_rfp_sys_core_dump(tvb, pinfo, dect_mitel_rfp_tree, data, offset, message_length);
1656 break;
1657 case DECT_MITEL_RFP_MESSAGE_TYPE_SYS_VSNTP_TIME:
1658 dissect_dect_mitel_rfp_sys_vsntp_time(tvb, pinfo, dect_mitel_rfp_tree, data, offset);
1659 break;
1660 case DECT_MITEL_RFP_MESSAGE_TYPE_SYS_INIT:
1661 dissect_dect_mitel_rfp_sys_init(tvb, pinfo, dect_mitel_rfp_tree, data, offset);
1662 break;
1663 case DECT_MITEL_RFP_MESSAGE_TYPE_SYS_AUTHENTICATE:
1664 dissect_dect_mitel_rfp_sys_authenticate(tvb, pinfo, dect_mitel_rfp_tree, data, offset);
1665 break;
1666 case DECT_MITEL_RFP_MESSAGE_TYPE_SYS_LICENSE_TIMER:
1667 dissect_dect_mitel_rfp_sys_license_timer(tvb, pinfo, dect_mitel_rfp_tree, data, offset);
1668 break;
1669 case DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_OPEN:
1670 case DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_CONF:
1671 case DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_CLOSE:
1672 case DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_START:
1673 case DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_STOP:
1674 case DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_STATISTICS:
1675 case DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_REDIRECT_START:
1676 case DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_REDIRECT_STOP:
1677 case DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_RESTART:
1678 case DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_DTMF:
1679 case DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_DSP_CLOSE:
1680 case DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_TONE:
1681 case DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_BANDWIDTH_SWO:
1682 case DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_MUTE:
1683 case DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_G729_USED:
1684 case DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_TRACE_PPN:
1685 case DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_EOS_DETECT:
1686 case DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_AUDIO_STATISTICS:
1687 case DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_VIDEO_STATE:
1688 case DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_CHANNEL_MOD_INFO:
1689 dissect_dect_mitel_rfp_media(tvb, pinfo, dect_mitel_rfp_tree, data, offset, message_type);
1690 break;
1691 case DECT_MITEL_RFP_MESSAGE_TYPE_ETH:
1692 /* Handover to DECT-MITEL-ETH*/
1693 proto_item_set_len(ti, 4);
1694 next_tvb = tvb_new_subset_remaining(tvb, offset);
1695 call_dissector_with_data(dect_mitel_eth_handle, next_tvb, pinfo, tree, &ip_encapsulated);
1696 break;
1697 case DECT_MITEL_RFP_MESSAGE_TYPE_SYNC:
1698 dissect_dect_mitel_rfp_sync(tvb, pinfo, dect_mitel_rfp_tree, data, offset);
1699 break;
1700 default:
1701 break;
1704 return tvb_captured_length(tvb);
1707 static void fmt_dect_mitel_rfp_media_conf_codec_rate(char *rate_string, uint32_t rate)
1709 snprintf(rate_string, 9, "%d000Hz", rate);
1712 static void fmt_dect_mitel_rfp_media_statistics_max_jitter(char *max_jitter_string, uint32_t max_jitter)
1714 snprintf(max_jitter_string, 14, "%.3fms", max_jitter / 1000.0);
1717 static void fmt_dect_mitel_rfp_sync_phase_ofs_with_rssi_ind_item_offset(char *item_offset_string, uint32_t item_offset)
1719 snprintf(item_offset_string, 10, "%dns", item_offset * 48);
1722 void proto_register_dect_mitel_rfp(void)
1724 static hf_register_info hf[] = {
1725 { &hf_dect_mitel_rfp_message_type,
1726 { "Message Type", "dect_mitel_rfp.message.type", FT_UINT16, BASE_HEX,
1727 VALS(dect_mitel_rfp_message_type_val), 0x0, NULL, HFILL
1730 { &hf_dect_mitel_rfp_message_length,
1731 { "Length", "dect_mitel_rfp.message.length", FT_UINT16, BASE_DEC,
1732 NULL, 0x0, NULL, HFILL
1735 /* CONTROL-ACK */
1736 { &hf_dect_mitel_rfp_control_ack_message,
1737 { "Message Type", "dect_mitel_rfp.control.ack.message", FT_UINT16, BASE_HEX,
1738 VALS(dect_mitel_rfp_message_type_val), 0x0, NULL, HFILL
1741 { &hf_dect_mitel_rfp_control_ack_call_id,
1742 { "Call ID", "dect_mitel_rfp.control.ack.call_id", FT_UINT16, BASE_HEX,
1743 NULL, 0x0, NULL, HFILL
1746 /* CONTROL-NACK */
1747 { &hf_dect_mitel_rfp_control_nack_message,
1748 { "Message Type", "dect_mitel_rfp.control.nack.message", FT_UINT16, BASE_HEX,
1749 VALS(dect_mitel_rfp_message_type_val), 0x0, NULL, HFILL
1752 { &hf_dect_mitel_rfp_control_nack_call_id,
1753 { "Call ID", "dect_mitel_rfp.control.nack.call_id", FT_UINT16, BASE_HEX,
1754 NULL, 0x0, NULL, HFILL
1757 { &hf_dect_mitel_rfp_control_nack_reason,
1758 { "Reject reason", "dect_mitel_rfp.control.nack.reason", FT_UINT32, BASE_HEX,
1759 VALS(dect_mitel_rfp_control_nack_reason_val), 0x0, NULL, HFILL
1762 /* CONTROL-HEARTBEAT */
1763 { &hf_dect_mitel_rfp_control_heartbeat_milliseconds,
1764 { "Milliseconds", "dect_mitel_rfp.control.heartbeat.milliseconds", FT_UINT32, BASE_DEC|BASE_UNIT_STRING,
1765 UNS(&units_milliseconds), 0x0, NULL, HFILL
1768 { &hf_dect_mitel_rfp_control_heartbeat_nanoseconds,
1769 { "Nanoseconds", "dect_mitel_rfp.control.heartbeat.nanoseconds", FT_UINT32, BASE_DEC|BASE_UNIT_STRING,
1770 UNS(&units_nanoseconds), 0x0, NULL, HFILL
1773 /* SYS-IP-OPTIONS */
1774 { &hf_dect_mitel_rfp_sys_ip_options_voice_tos,
1775 { "Voice ToS", "dect_mitel_rfp.sys.ip_options.voice_tos", FT_UINT8, BASE_HEX,
1776 NULL, 0x0, NULL, HFILL
1779 { &hf_dect_mitel_rfp_sys_ip_options_signalling_tos,
1780 { "Signalling ToS", "dect_mitel_rfp.sys.ip_options.signalling_tos", FT_UINT8, BASE_HEX,
1781 NULL, 0x0, NULL, HFILL
1784 { &hf_dect_mitel_rfp_sys_ip_options_ttl,
1785 { "TTL", "dect_mitel_rfp.sys.ip_options.ttl", FT_UINT8, BASE_DEC,
1786 NULL, 0x0, NULL, HFILL
1789 { &hf_dect_mitel_rfp_sys_ip_options_signal_vlan_priority,
1790 { "Signal VLAN priority", "dect_mitel_rfp.sys.ip_options.signal_vlan_priority", FT_UINT8, BASE_HEX,
1791 NULL, 0x0, NULL, HFILL
1794 { &hf_dect_mitel_rfp_sys_ip_options_voice_vlan_priority,
1795 { "Voice VLAN priority", "dect_mitel_rfp.sys.ip_options.voice_vlan_priority", FT_UINT8, BASE_HEX,
1796 NULL, 0x0, NULL, HFILL
1799 /* SYS-LED */
1800 { &hf_dect_mitel_rfp_sys_led_id,
1801 { "ID", "dect_mitel_rfp.sys.led.id", FT_UINT8, BASE_DEC,
1802 NULL, 0x0, NULL, HFILL
1805 { &hf_dect_mitel_rfp_sys_led_color,
1806 { "Color", "dect_mitel_rfp.sys.led.color", FT_UINT8, BASE_HEX,
1807 VALS(dect_mitel_rfp_sys_led_color_val), 0x0, NULL, HFILL
1810 /* SYS-HEARTBEAT-INTERVAL */
1811 { &hf_dect_mitel_rfp_sys_heartbeat_interval_value,
1812 { "Interval", "dect_mitel_rfp.sys.heartbeat_interval.value", FT_UINT8, BASE_DEC|BASE_UNIT_STRING,
1813 UNS(&units_seconds), 0, NULL, HFILL
1816 /* SYS-SYSLOG */
1817 { &hf_dect_mitel_rfp_sys_syslog_ip_address,
1818 { "IP address", "dect_mitel_rfp.sys.syslog.ip_address", FT_IPv6, BASE_NONE,
1819 NULL, 0, NULL, HFILL
1822 { &hf_dect_mitel_rfp_sys_syslog_port,
1823 { "Port", "dect_mitel_rfp.sys.syslog.port", FT_UINT16, BASE_DEC,
1824 NULL, 0, NULL, HFILL
1827 /* SYS-MAX-CHANNELS */
1828 { &hf_dect_mitel_rfp_sys_max_channels_dsp,
1829 { "DSP", "dect_mitel_rfp.sys.max_channels.dsp", FT_UINT8, BASE_DEC,
1830 NULL, 0, NULL, HFILL
1833 { &hf_dect_mitel_rfp_sys_max_channels_sessions,
1834 { "Sessions", "dect_mitel_rfp.sys.max_channels.sessions", FT_UINT8, BASE_DEC,
1835 NULL, 0, NULL, HFILL
1838 /* SYS-HTTP-SET */
1839 { &hf_dect_mitel_rfp_sys_http_set_ip_address,
1840 { "IP address", "dect_mitel_rfp.sys.http_set.ip_address", FT_IPv6, BASE_NONE,
1841 NULL, 0, NULL, HFILL
1844 { &hf_dect_mitel_rfp_sys_http_set_port,
1845 { "Port", "dect_mitel_rfp.sys.http_set.port", FT_UINT16, BASE_DEC,
1846 NULL, 0, NULL, HFILL
1849 /* SYS-PASSWD */
1850 { &hf_dect_mitel_rfp_sys_passwd_remote_access_enabled,
1851 { "Remote access enabled", "dect_mitel_rfp.sys.passwd.remote_access_enabled", FT_BOOLEAN, 8,
1852 NULL, 0x1, NULL, HFILL
1855 { &hf_dect_mitel_rfp_sys_passwd_root_username,
1856 { "Root username", "dect_mitel_rfp.sys.passwd.root_username", FT_STRINGZ, BASE_NONE,
1857 NULL, 0, NULL, HFILL
1860 { &hf_dect_mitel_rfp_sys_passwd_root_password,
1861 { "Root password", "dect_mitel_rfp.sys.passwd.root_password", FT_STRINGZ, BASE_NONE,
1862 NULL, 0, NULL, HFILL
1865 { &hf_dect_mitel_rfp_sys_passwd_admin_username,
1866 { "Admin username", "dect_mitel_rfp.sys.passwd.admin_username", FT_STRINGZ, BASE_NONE,
1867 NULL, 0, NULL, HFILL
1870 { &hf_dect_mitel_rfp_sys_passwd_admin_password,
1871 { "Admin password", "dect_mitel_rfp.sys.passwd.admin_password", FT_STRINGZ, BASE_NONE,
1872 NULL, 0, NULL, HFILL
1875 /* SYS-RPING */
1876 { &hf_dect_mitel_rfp_sys_rping_ip_address,
1877 { "IP address", "dect_mitel_rfp.sys.rping.ip_address", FT_IPv6, BASE_NONE,
1878 NULL, 0, NULL, HFILL
1881 { &hf_dect_mitel_rfp_sys_rping_rtt,
1882 { "RTT", "dect_mitel_rfp.sys.rping.rtt", FT_UINT32, BASE_DEC|BASE_UNIT_STRING,
1883 UNS(&units_milliseconds), 0, NULL, HFILL
1886 /* SYS-CORE-DUMP */
1887 { &hf_dect_mitel_rfp_sys_core_dump_url,
1888 { "URL", "dect_mitel_rfp.sys.core_dump.url", FT_STRINGZ, BASE_NONE,
1889 NULL, 0, NULL, HFILL
1892 /* SYS-VSNTP-TIME */
1893 { &hf_dect_mitel_rfp_sys_vsntp_time_t1_seconds,
1894 { "T1 seconds", "dect_mitel_rfp.sys.vsntp_time.t1_seconds", FT_UINT32, BASE_DEC|BASE_UNIT_STRING,
1895 UNS(&units_seconds), 0, NULL, HFILL
1898 { &hf_dect_mitel_rfp_sys_vsntp_time_t1_nanoseconds,
1899 { "T1 nanoseconds", "dect_mitel_rfp.sys.vsntp_time.t1_nanoseconds", FT_UINT32, BASE_DEC|BASE_UNIT_STRING,
1900 UNS(&units_nanoseconds), 0, NULL, HFILL
1903 { &hf_dect_mitel_rfp_sys_vsntp_time_t2_seconds,
1904 { "T2 seconds", "dect_mitel_rfp.sys.vsntp_time.t2_seconds", FT_UINT32, BASE_DEC|BASE_UNIT_STRING,
1905 UNS(&units_seconds), 0, NULL, HFILL
1908 { &hf_dect_mitel_rfp_sys_vsntp_time_t2_nanoseconds,
1909 { "T2 nanoseconds", "dect_mitel_rfp.sys.vsntp_time.t2_nanoseconds", FT_UINT32, BASE_DEC|BASE_UNIT_STRING,
1910 UNS(&units_nanoseconds), 0, NULL, HFILL
1913 /* SYS-INIT */
1914 { &hf_dect_mitel_rfp_sys_init_rfp_model,
1915 { "RFP Model", "dect_mitel_rfp.sys.init.rfp_model", FT_UINT32, BASE_HEX,
1916 VALS(dect_mitel_rfp_sys_init_rfp_model_val), 0x0, NULL, HFILL
1919 { &hf_dect_mitel_rfp_sys_init_rfp_mac,
1920 { "RFP MAC Address", "dect_mitel_rfp.sys.init.rfp_mac", FT_ETHER, BASE_NONE,
1921 NULL, 0x0, NULL, HFILL
1924 { &hf_dect_mitel_rfp_sys_init_crypted,
1925 { "Crypted", "dect_mitel_rfp.sys.init.crypted", FT_BYTES, BASE_NONE,
1926 NULL, 0x0, "AES Crypted fields", HFILL
1929 { &hf_dect_mitel_rfp_sys_init_protocol,
1930 { "Protocol", "dect_mitel_rfp.sys.init.protocol", FT_UINT32, BASE_HEX,
1931 NULL, 0x0, NULL, HFILL
1934 { &hf_dect_mitel_rfp_sys_init_rfp_capabilities,
1935 { "RPF Capabilities", "dect_mitel_rfp.sys.init.capabilities", FT_UINT32, BASE_HEX,
1936 NULL, 0x0, NULL, HFILL
1939 { &hf_dect_mitel_rfp_sys_init_rfp_capability_normal_tx,
1940 { "Normal TX power", "dect_mitel_rfp.sys.init.capabilities.normal_tx", FT_BOOLEAN, 32,
1941 TFS(&tfs_yes_no), DECT_MITEL_RFP_SYS_INIT_RFP_CAPABILITY_NORMAL_TX, NULL, HFILL
1944 { &hf_dect_mitel_rfp_sys_init_rfp_capability_indoor,
1945 { "Indoor", "dect_mitel_rfp.sys.init.capabilities.indoor", FT_BOOLEAN, 32,
1946 TFS(&tfs_yes_no), DECT_MITEL_RFP_SYS_INIT_RFP_CAPABILITY_INDOOR, NULL, HFILL
1949 { &hf_dect_mitel_rfp_sys_init_rfp_capability_wlan,
1950 { "WLAN", "dect_mitel_rfp.sys.init.capabilities.wlan", FT_BOOLEAN, 32,
1951 TFS(&tfs_yes_no), DECT_MITEL_RFP_SYS_INIT_RFP_CAPABILITY_WLAN, NULL, HFILL
1954 { &hf_dect_mitel_rfp_sys_init_rfp_capability_encryption,
1955 { "Encryption", "dect_mitel_rfp.sys.init.capabilities.encryption", FT_BOOLEAN, 32,
1956 TFS(&tfs_yes_no), DECT_MITEL_RFP_SYS_INIT_RFP_CAPABILITY_ENCRYPTION, NULL, HFILL
1959 { &hf_dect_mitel_rfp_sys_init_rfp_capability_frequency_shift,
1960 { "Frequency shift", "dect_mitel_rfp.sys.init.capabilities.frequency_shift", FT_BOOLEAN, 32,
1961 TFS(&tfs_yes_no), DECT_MITEL_RFP_SYS_INIT_RFP_CAPABILITY_FREQUENCY_SHIFT, NULL, HFILL
1964 { &hf_dect_mitel_rfp_sys_init_rfp_capability_low_tx,
1965 { "Low TX power", "dect_mitel_rfp.sys.init.capabilities.low_tx", FT_BOOLEAN, 32,
1966 TFS(&tfs_yes_no), DECT_MITEL_RFP_SYS_INIT_RFP_CAPABILITY_LOW_TX, NULL, HFILL
1969 { &hf_dect_mitel_rfp_sys_init_rfp_capability_advanced_feature,
1970 { "Advanced Feature", "dect_mitel_rfp.sys.init.capabilities.advanced_feature", FT_BOOLEAN, 32,
1971 TFS(&tfs_yes_no), DECT_MITEL_RFP_SYS_INIT_RFP_CAPABILITY_ADVANCED_FEATURE, NULL, HFILL
1974 { &hf_dect_mitel_rfp_sys_init_rfp_software_version,
1975 { "RFP Software Version", "dect_mitel_rfp.sys.init.rfp_software_version", FT_STRING, BASE_NONE,
1976 NULL, 0x0, NULL, HFILL
1979 { &hf_dect_mitel_rfp_sys_init_signature,
1980 { "Signature", "dect_mitel_rfp.sys.init.signature", FT_BYTES, BASE_NONE,
1981 NULL, 0x0, NULL, HFILL
1984 /* SYS-AUTHENTICATE */
1985 { &hf_dect_mitel_rfp_sys_authenticate_rfp_iv,
1986 { "RFP IV", "dect_mitel_rfp.sys.authenticate.rfp_iv", FT_UINT64, BASE_HEX,
1987 NULL, 0x0, NULL, HFILL
1990 { &hf_dect_mitel_rfp_sys_authenticate_omm_iv,
1991 { "OMM IV", "dect_mitel_rfp.sys.authenticate.omm_iv", FT_UINT64, BASE_HEX,
1992 NULL, 0x0, NULL, HFILL
1995 /* SYS-LICENSE-TIMER */
1996 { &hf_dect_mitel_rfp_sys_license_timer_query,
1997 { "Query", "dect_mitel_rfp.sys.license_timer.query", FT_BOOLEAN, 32,
1998 NULL, 0x80000000, NULL, HFILL
2001 { &hf_dect_mitel_rfp_sys_license_timer_grace_period,
2002 { "Grace period", "dect_mitel_rfp.sys.license_timer.grace_period", FT_UINT32, BASE_DEC|BASE_UNIT_STRING,
2003 UNS(&units_minutes), 0x7FFFFFFF, NULL, HFILL
2006 { &hf_dect_mitel_rfp_sys_license_timer_checksum,
2007 { "Checksum", "dect_mitel_rfp.sys.license_timer.checksum", FT_BYTES, BASE_NONE,
2008 NULL, 0, NULL, HFILL
2011 /* MEDIA */
2012 { &hf_dect_mitel_rfp_media_handle,
2013 { "Handle", "dect_mitel_rfp.media.handle", FT_UINT16, BASE_HEX,
2014 NULL, 0, NULL, HFILL
2017 { &hf_dect_mitel_rfp_media_mcei,
2018 { "MCEI", "dect_mitel_rfp.media.mcei", FT_UINT8, BASE_HEX,
2019 NULL, 0, NULL, HFILL
2022 { &hf_dect_mitel_rfp_media_direction,
2023 { "Direction", "dect_mitel_rfp.media.start.direction", FT_UINT8, BASE_HEX,
2024 VALS(dect_mitel_rfp_media_direction_val), 0, NULL, HFILL
2027 /* MEDIA-OPEN */
2028 { &hf_dect_mitel_rfp_media_open_codec,
2029 { "Codec", "dect_mitel_rfp.media.open.codec", FT_UINT8, BASE_HEX,
2030 NULL, 0, NULL, HFILL
2033 { &hf_dect_mitel_rfp_media_open_slot_count,
2034 { "Slot count", "dect_mitel_rfp.media.open.slot_count", FT_UINT8, BASE_DEC,
2035 NULL, 0, NULL, HFILL
2038 { &hf_dect_mitel_rfp_media_open_flags,
2039 { "Flags", "dect_mitel_rfp.media.open.flags", FT_UINT32, BASE_HEX,
2040 NULL, 0, NULL, HFILL
2043 /* MEDIA-CONF */
2044 { &hf_dect_mitel_rfp_media_conf_vif,
2045 { "VIF", "dect_mitel_rfp.media.conf.vif", FT_UINT8, BASE_HEX,
2046 NULL, 0, NULL, HFILL
2049 { &hf_dect_mitel_rfp_media_conf_vad,
2050 { "VAD", "dect_mitel_rfp.media.conf.vad", FT_BOOLEAN, 8,
2051 NULL, 0x01, "Voice Activity Detection (VAD)", HFILL
2054 { &hf_dect_mitel_rfp_media_conf_codec_count,
2055 { "Codec count", "dect_mitel_rfp.media.conf.codec_count", FT_UINT16, BASE_DEC,
2056 NULL, 0, NULL, HFILL
2059 { &hf_dect_mitel_rfp_media_conf_codec_type,
2060 { "Type", "dect_mitel_rfp.media.conf.codec.type", FT_UINT8, BASE_HEX,
2061 VALS(dect_mitel_rfp_media_conf_codec_type_val), 0, NULL, HFILL
2064 { &hf_dect_mitel_rfp_media_conf_codec_pt,
2065 { "Priority", "dect_mitel_rfp.media.conf.codec.priority", FT_UINT8, BASE_HEX,
2066 NULL, 0, NULL, HFILL
2069 { &hf_dect_mitel_rfp_media_conf_codec_rate,
2070 { "Rate", "dect_mitel_rfp.media.conf.codec.rate", FT_UINT8, BASE_CUSTOM,
2071 CF_FUNC(&fmt_dect_mitel_rfp_media_conf_codec_rate), 0, NULL, HFILL
2074 { &hf_dect_mitel_rfp_media_conf_ppn,
2075 { "PPN", "dect_mitel_rfp.media.conf.ppn", FT_UINT16, BASE_HEX,
2076 NULL, 0, NULL, HFILL
2079 { &hf_dect_mitel_rfp_media_conf_local_port_1,
2080 { "Local port 1", "dect_mitel_rfp.media.conf.local_port_1", FT_UINT16, BASE_DEC,
2081 NULL, 0, NULL, HFILL
2084 { &hf_dect_mitel_rfp_media_conf_local_port_2,
2085 { "Local port 2", "dect_mitel_rfp.media.conf.local_port_2", FT_UINT16, BASE_DEC,
2086 NULL, 0, NULL, HFILL
2089 { &hf_dect_mitel_rfp_media_conf_rx_ip_address,
2090 { "RX IP Address", "dect_mitel_rfp.media.conf.rx_ip_address", FT_IPv4, BASE_NONE,
2091 NULL, 0, NULL, HFILL
2094 { &hf_dect_mitel_rfp_media_conf_rx_port_1,
2095 { "RX port 1", "dect_mitel_rfp.media.conf.rx_port_1", FT_UINT16, BASE_DEC,
2096 NULL, 0, NULL, HFILL
2099 { &hf_dect_mitel_rfp_media_conf_rx_port_2,
2100 { "RX port 2", "dect_mitel_rfp.media.conf.rx_port_2", FT_UINT16, BASE_DEC,
2101 NULL, 0, NULL, HFILL
2104 { &hf_dect_mitel_rfp_media_conf_tx_ip_address,
2105 { "TX IP Address", "dect_mitel_rfp.media.conf.tx_ip_address", FT_IPv4, BASE_NONE,
2106 NULL, 0, NULL, HFILL
2109 { &hf_dect_mitel_rfp_media_conf_tx_port_1,
2110 { "TX port 1", "dect_mitel_rfp.media.conf.tx_port_1", FT_UINT16, BASE_DEC,
2111 NULL, 0, NULL, HFILL
2114 { &hf_dect_mitel_rfp_media_conf_tx_port_2,
2115 { "TX port 2", "dect_mitel_rfp.media.conf.tx_port_2", FT_UINT16, BASE_DEC,
2116 NULL, 0, NULL, HFILL
2119 /* MEDIA-START */
2120 { &hf_dect_mitel_rfp_media_start_time,
2121 { "Time", "dect_mitel_rfp.media.start.time", FT_UINT32, BASE_DEC,
2122 NULL, 0, NULL, HFILL
2125 { &hf_dect_mitel_rfp_media_start_met_keep_alive,
2126 { "Met keep alive", "dect_mitel_rfp.media.start.met_keep_alive", FT_UINT8, BASE_HEX,
2127 NULL, 0, NULL, HFILL
2130 /* MEDIA-STATISTICS */
2131 { &hf_dect_mitel_rfp_media_statistics_duration,
2132 { "Duration", "dect_mitel_rfp.media.statistics.duration", FT_UINT32, BASE_DEC|BASE_UNIT_STRING,
2133 UNS(&units_seconds), 0, NULL, HFILL
2136 { &hf_dect_mitel_rfp_media_statistics_tx_packets,
2137 { "TX packets", "dect_mitel_rfp.media.statistics.tx_packets", FT_UINT32, BASE_DEC,
2138 NULL, 0, NULL, HFILL
2141 { &hf_dect_mitel_rfp_media_statistics_tx_bytes,
2142 { "TX bytes", "dect_mitel_rfp.media.statistics.tx_bytes", FT_UINT32, BASE_DEC,
2143 NULL, 0, NULL, HFILL
2146 { &hf_dect_mitel_rfp_media_statistics_rx_packets,
2147 { "RX packets", "dect_mitel_rfp.media.statistics.rx_packets", FT_UINT32, BASE_DEC,
2148 NULL, 0, NULL, HFILL
2151 { &hf_dect_mitel_rfp_media_statistics_rx_bytes,
2152 { "RX bytes", "dect_mitel_rfp.media.statistics.rx_bytes", FT_UINT32, BASE_DEC,
2153 NULL, 0, NULL, HFILL
2156 { &hf_dect_mitel_rfp_media_statistics_lost_packets,
2157 { "Lost packets", "dect_mitel_rfp.media.statistics.lost_packets", FT_UINT32, BASE_DEC,
2158 NULL, 0, NULL, HFILL
2161 { &hf_dect_mitel_rfp_media_statistics_max_jitter,
2162 { "Max jitter", "dect_mitel_rfp.media.statistics.max_jitter", FT_UINT32, BASE_CUSTOM,
2163 CF_FUNC(&fmt_dect_mitel_rfp_media_statistics_max_jitter), 0, NULL, HFILL
2166 { &hf_dect_mitel_rfp_media_statistics_rtp_ip_address,
2167 { "RTP IP address", "dect_mitel_rfp.media.statistics.rtp_ip_address", FT_IPv4, BASE_NONE,
2168 NULL, 0, NULL, HFILL
2171 /* MEDIA-REDIRECT-START */
2172 { &hf_dect_mitel_rfp_media_redirect_start_local_port_1,
2173 { "Local port 1", "dect_mitel_rfp.media.redirect_start.local_port_1", FT_UINT16, BASE_DEC,
2174 NULL, 0, NULL, HFILL
2177 { &hf_dect_mitel_rfp_media_redirect_start_local_port_2,
2178 { "Local port 2", "dect_mitel_rfp.media.redirect_start.local_port_2", FT_UINT16, BASE_DEC,
2179 NULL, 0, NULL, HFILL
2182 { &hf_dect_mitel_rfp_media_redirect_start_remote_ip_address,
2183 { "Remote IP address", "dect_mitel_rfp.media.redirect_start.remote_ip_address", FT_IPv4, BASE_NONE,
2184 NULL, 0, NULL, HFILL
2187 { &hf_dect_mitel_rfp_media_redirect_start_remote_port_1,
2188 { "Remote port 1", "dect_mitel_rfp.media.redirect_start.remote_port_1", FT_UINT16, BASE_DEC,
2189 NULL, 0, NULL, HFILL
2192 { &hf_dect_mitel_rfp_media_redirect_start_remote_port_2,
2193 { "Remote port 2", "dect_mitel_rfp.media.redirect_start.remote_port_2", FT_UINT16, BASE_DEC,
2194 NULL, 0, NULL, HFILL
2197 { &hf_dect_mitel_rfp_media_redirect_start_time,
2198 { "Time", "dect_mitel_rfp.media.redirect_start.time", FT_UINT32, BASE_DEC,
2199 NULL, 0, NULL, HFILL
2202 /* MEDIA-REDIRECT-STOP */
2203 { &hf_dect_mitel_rfp_media_redirect_stop_fallback,
2204 { "Fallback", "dect_mitel_rfp.media.redirect_stop.fallback", FT_UINT8, BASE_HEX,
2205 NULL, 0, NULL, HFILL
2208 /* MEDIA-DTMF */
2209 { &hf_dect_mitel_rfp_media_dtmf_duration,
2210 { "Duration", "dect_mitel_rfp.media.dtmf.duration", FT_UINT16, BASE_DEC|BASE_UNIT_STRING,
2211 UNS(&units_milliseconds), 0, NULL, HFILL
2214 { &hf_dect_mitel_rfp_media_dtmf_key,
2215 { "Key", "dect_mitel_rfp.media.dtmf.key", FT_CHAR, BASE_HEX,
2216 NULL, 0, NULL, HFILL
2219 /* MEDIA-TONE */
2220 { &hf_dect_mitel_rfp_media_tone_count,
2221 { "Count", "dect_mitel_rfp.media.tone.count", FT_UINT8, BASE_DEC,
2222 NULL, 0, NULL, HFILL
2225 { &hf_dect_mitel_rfp_media_tone_frequency_1,
2226 { "Frequency 1", "dect_mitel_rfp.media.tone.frequency_1", FT_UINT16, BASE_DEC|BASE_UNIT_STRING,
2227 UNS(&units_hz), 0, NULL, HFILL
2230 { &hf_dect_mitel_rfp_media_tone_frequency_2,
2231 { "Frequency 2", "dect_mitel_rfp.media.tone.frequency_2", FT_UINT16, BASE_DEC|BASE_UNIT_STRING,
2232 UNS(&units_hz), 0, NULL, HFILL
2235 { &hf_dect_mitel_rfp_media_tone_frequency_3,
2236 { "Frequency 3", "dect_mitel_rfp.media.tone.frequency_3", FT_UINT16, BASE_DEC|BASE_UNIT_STRING,
2237 UNS(&units_hz), 0, NULL, HFILL
2240 { &hf_dect_mitel_rfp_media_tone_frequency_4,
2241 { "Frequency 4", "dect_mitel_rfp.media.tone.frequency_4", FT_UINT16, BASE_DEC|BASE_UNIT_STRING,
2242 UNS(&units_hz), 0, NULL, HFILL
2245 { &hf_dect_mitel_rfp_media_tone_cb_1,
2246 { "cB 1", "dect_mitel_rfp.media.tone.cb_1", FT_INT16, BASE_DEC|BASE_UNIT_STRING,
2247 UNS(&units_centibels), 0, NULL, HFILL
2250 { &hf_dect_mitel_rfp_media_tone_cb_2,
2251 { "cB 2", "dect_mitel_rfp.media.tone.cb_2", FT_INT16, BASE_DEC|BASE_UNIT_STRING,
2252 UNS(&units_centibels), 0, NULL, HFILL
2255 { &hf_dect_mitel_rfp_media_tone_cb_3,
2256 { "cB 3", "dect_mitel_rfp.media.tone.cb_3", FT_INT16, BASE_DEC|BASE_UNIT_STRING,
2257 UNS(&units_centibels), 0, NULL, HFILL
2260 { &hf_dect_mitel_rfp_media_tone_cb_4,
2261 { "cB 4", "dect_mitel_rfp.media.tone.cb_4", FT_INT16, BASE_DEC|BASE_UNIT_STRING,
2262 UNS(&units_centibels), 0, NULL, HFILL
2265 { &hf_dect_mitel_rfp_media_tone_duration,
2266 { "Duration", "dect_mitel_rfp.media.tone.duration", FT_UINT16, BASE_DEC,
2267 NULL, 0, NULL, HFILL
2270 { &hf_dect_mitel_rfp_media_tone_cycle_count,
2271 { "Cycle count", "dect_mitel_rfp.media.tone.cycle_count", FT_UINT16, BASE_DEC,
2272 NULL, 0, NULL, HFILL
2275 { &hf_dect_mitel_rfp_media_tone_cycle_to,
2276 { "Cycle to", "dect_mitel_rfp.media.tone.cycle_to", FT_UINT16, BASE_DEC,
2277 NULL, 0, NULL, HFILL
2280 { &hf_dect_mitel_rfp_media_tone_next,
2281 { "Next", "dect_mitel_rfp.media.tone.next", FT_UINT16, BASE_DEC,
2282 NULL, 0, NULL, HFILL
2285 /* SYNC */
2286 { &hf_dect_mitel_rfp_sync_payload_type,
2287 { "Type", "dect_mitel_rfp.sync.payload_type", FT_UINT16, BASE_HEX,
2288 VALS(dect_mitel_rfp_sync_payload_type_val), 0, NULL, HFILL
2291 { &hf_dect_mitel_rfp_sync_payload_length,
2292 { "Length", "dect_mitel_rfp.sync.payload_length", FT_UINT8, BASE_DEC,
2293 NULL, 0, NULL, HFILL
2296 /* SYNC FREQ_CTRL_MODE_IND */
2297 { &hf_dect_mitel_rfp_sync_freq_ctrl_mode_ind_mode,
2298 { "Mode", "dect_mitel_rfp.sync.freq_ctrl_mode_ind.mode", FT_UINT8, BASE_HEX,
2299 NULL, 0, NULL, HFILL
2302 /* SYNC FREQ_CTRL_MODE_CFM */
2303 { &hf_dect_mitel_rfp_sync_freq_ctrl_mode_cfm_mode,
2304 { "Mode", "dect_mitel_rfp.sync.freq_ctrl_mode_cfm.mode", FT_UINT8, BASE_HEX,
2305 NULL, 0, NULL, HFILL
2308 { &hf_dect_mitel_rfp_sync_freq_ctrl_mode_cfm_ppm,
2309 { "ppm", "dect_mitel_rfp.sync.freq_ctrl_mode_cfm.ppm", FT_UINT16, BASE_DEC,
2310 NULL, 0, NULL, HFILL
2313 { &hf_dect_mitel_rfp_sync_freq_ctrl_mode_cfm_avg,
2314 { "avg", "dect_mitel_rfp.sync.freq_ctrl_mode_cfm.avg", FT_UINT16, BASE_DEC,
2315 NULL, 0, NULL, HFILL
2318 /* SYNC SET_FREQUENCY */
2319 { &hf_dect_mitel_rfp_sync_set_frequency_value,
2320 { "Frequency", "dect_mitel_rfp.sync.set_frequency.value", FT_UINT16, BASE_DEC|BASE_UNIT_STRING,
2321 UNS(&units_hz), 0, NULL, HFILL
2324 /* SYNC START_MAC_SLAVE_MODE_IND */
2325 { &hf_dect_mitel_rfp_sync_start_mac_slave_mode_ind_rfp,
2326 { "RFP", "dect_mitel_rfp.sync.start_mac_slave_mode_ind.rfp", FT_UINT16, BASE_HEX,
2327 NULL, 0, NULL, HFILL
2330 /* SYNC SYSTEM_SEARCH_IND */
2331 { &hf_dect_mitel_rfp_sync_system_search_ind_mode,
2332 { "Mode", "dect_mitel_rfp.sync.system_search_ind.mode", FT_UINT8, BASE_HEX,
2333 NULL, 0, NULL, HFILL
2336 /* SYNC SYSTEM_SEARCH_CFM */
2337 { &hf_dect_mitel_rfp_sync_system_search_cfm_count,
2338 { "Count", "dect_mitel_rfp.sync.system_search_cfm.count", FT_UINT8, BASE_DEC,
2339 NULL, 0, NULL, HFILL
2342 { &hf_dect_mitel_rfp_sync_system_search_cfm_item_rpn,
2343 { "RPN", "dect_mitel_rfp.sync.system_search_cfm.item.rpn", FT_UINT16, BASE_HEX,
2344 NULL, 0, NULL, HFILL
2347 { &hf_dect_mitel_rfp_sync_system_search_cfm_item_rssi,
2348 { "RSSI", "dect_mitel_rfp.sync.system_search_cfm.item.rssi", FT_UINT16, BASE_DEC,
2349 NULL, 0, NULL, HFILL
2352 /* SYNC PHASE_OFS_WITH_RSSI_IND */
2353 { &hf_dect_mitel_rfp_sync_phase_ofs_with_rssi_ind_count,
2354 { "Count", "dect_mitel_rfp.sync.phase_ofs_with_rssi_ind.count", FT_UINT8, BASE_DEC,
2355 NULL, 0, NULL, HFILL
2358 { &hf_dect_mitel_rfp_sync_phase_ofs_with_rssi_ind_item_rpn,
2359 { "RPN", "dect_mitel_rfp.sync.phase_ofs_with_rssi_ind.item.rpn", FT_UINT16, BASE_HEX,
2360 NULL, 0, NULL, HFILL
2363 { &hf_dect_mitel_rfp_sync_phase_ofs_with_rssi_ind_item_offset,
2364 { "Offset", "dect_mitel_rfp.sync.phase_ofs_with_rssi_ind.item.offset", FT_UINT16, BASE_CUSTOM,
2365 CF_FUNC(&fmt_dect_mitel_rfp_sync_phase_ofs_with_rssi_ind_item_offset), 0, NULL, HFILL
2368 { &hf_dect_mitel_rfp_sync_phase_ofs_with_rssi_ind_item_rssi,
2369 { "RSSI", "dect_mitel_rfp.sync.phase_ofs_with_rssi_ind.item.rssi", FT_UINT8, BASE_DEC,
2370 NULL, 0, NULL, HFILL
2373 { &hf_dect_mitel_rfp_sync_phase_ofs_with_rssi_ind_item_qt_sync_check,
2374 { "QT-Sync-Check", "dect_mitel_rfp.sync.phase_ofs_with_rssi_ind.item.qt_sync_check", FT_UINT8, BASE_HEX,
2375 NULL, 0, NULL, HFILL
2380 static int *ett[] = {
2381 &ett_dect_mitel_rfp,
2382 &ett_dect_mitel_rfp_sys_init_rfp_capabilities,
2383 &ett_dect_mitel_rfp_media_tone_entry,
2384 &ett_dect_mitel_rfp_sync_phase_ofs_with_rssi_ind_item,
2385 &ett_dect_mitel_rfp_sync_system_search_cfm_item,
2388 proto_dect_mitel_rfp = proto_register_protocol("Mitel RFP/OMM TCP communication protocol",
2389 "DECT-MITEL-RFP", "dect_mitel_rfp");
2391 proto_register_field_array(proto_dect_mitel_rfp, hf, array_length(hf));
2392 proto_register_subtree_array(ett, array_length(ett));
2394 dect_mitel_rfp_handle = register_dissector("dect_mitel_rfp", dissect_dect_mitel_rfp,
2395 proto_dect_mitel_rfp);
2398 void proto_reg_handoff_dect_mitel_rfp(void)
2400 dissector_add_uint_with_preference("tcp.port", tcp_port_pref, dect_mitel_rfp_handle);
2402 dect_mitel_eth_handle = find_dissector("dect_mitel_eth");
2406 * Editor modelines - https://www.wireshark.org/tools/modelines.html
2408 * Local variables:
2409 * c-basic-offset: 4
2410 * tab-width: 8
2411 * indent-tabs-mode: nil
2412 * End:
2414 * vi: set shiftwidth=4 tabstop=8 expandtab:
2415 * :indentSize=4:tabSize=8:noTabs=true: