DECT-MITEL-RFP: Begin of OMM/RFP protocol

This is the begin of a basic dissection of the proprietary protocol used
by the Mitel OMM/RFP communicatino over TCP. Currently no decryption is
supported so there is the need of external decryption.
This commit is contained in:
Bernhard Dick 2022-11-16 17:02:19 +01:00 committed by Martin Mathieson
parent d4a4d8ebc0
commit 534e594a34
3 changed files with 808 additions and 0 deletions

View File

@ -83,6 +83,8 @@ Support for almost all WoW 1.12 messages has been added.
Management Component Transport Protocol (MCTP)
Management Component Transport Protocol - Control Protocol (MCTP CP)
Non-volatile Memory Express - Management Interface (NVMe-MI) over MCTP
SAP Internet Graphic Server (SAP IGS)
DECT proprietary Mitel OMM/RFP Protocol (also named AaMiDe)
--
=== Updated Protocol Support

View File

@ -972,6 +972,7 @@ set(DISSECTOR_SRC
${CMAKE_CURRENT_SOURCE_DIR}/packet-dec-dnart.c
${CMAKE_CURRENT_SOURCE_DIR}/packet-dect.c
${CMAKE_CURRENT_SOURCE_DIR}/packet-dect-mitel-eth.c
${CMAKE_CURRENT_SOURCE_DIR}/packet-dect-mitel-rfp.c
${CMAKE_CURRENT_SOURCE_DIR}/packet-devicenet.c
${CMAKE_CURRENT_SOURCE_DIR}/packet-dhcp.c
${CMAKE_CURRENT_SOURCE_DIR}/packet-dhcp-failover.c

View File

@ -0,0 +1,805 @@
/* packet-dect-mitel-rfp.c
* Routines for DECT-Mitel-RFP dissection
* Copyright 2022, Bernhard Dick <bernhard@bdick.de>
*
* Wireshark - Network traffic analyzer
* By Gerald Combs <gerald@wireshark.org>
* Copyright 1998 Gerald Combs
*
* SPDX-License-Identifier: GPL-2.0-or-later
*/
/*
* This is a proprietary protocol deveolped by Mitel for communication
* inbetween the DECT system management Software (OMM) and the DECT
* base station (RFPs)
*/
#include <config.h>
#include <epan/packet.h>
#include <epan/prefs.h>
#include <ftypes/ftypes.h>
#include <proto.h>
#include <tfs.h>
#include <tvbuff.h>
#include <value_string.h>
/* Prototypes */
void proto_reg_handoff_dect_mitel_rfp(void);
void proto_register_dect_mitel_rfp(void);
/* Initialize the protocol and registered fields */
static int proto_dect_mitel_rfp = -1;
static int hf_dect_mitel_rfp_message_type = -1;
static int hf_dect_mitel_rfp_message_length = -1;
/* CONTROL-ACK */
static int hf_dect_mitel_rfp_control_ack_message = -1;
static int hf_dect_mitel_rfp_control_ack_call_id = -1;
/* CONTROL-NACK */
static int hf_dect_mitel_rfp_control_nack_message = -1;
static int hf_dect_mitel_rfp_control_nack_call_id = -1;
static int hf_dect_mitel_rfp_control_nack_reason = -1;
/* CONTROL-HEARTBEAT */
static int hf_dect_mitel_rfp_control_heartbeat_milliseconds = -1;
static int hf_dect_mitel_rfp_control_heartbeat_nanoseconds = -1;
/* SYS-LED */
static int hf_dect_mitel_rfp_sys_led_id = -1;
static int hf_dect_mitel_rfp_sys_led_color = -1;
/* SYS-AUTHENTICATE */
static int hf_dect_mitel_rfp_sys_authenticate_omm_iv = -1;
static int hf_dect_mitel_rfp_sys_authenticate_rfp_iv = -1;
/* SYS-INIT */
static int hf_dect_mitel_rfp_sys_init_rfp_model = -1;
static int hf_dect_mitel_rfp_sys_init_rfp_mac = -1;
static int hf_dect_mitel_rfp_sys_init_crypted = -1;
static int hf_dect_mitel_rfp_sys_init_protocol = -1;
static int hf_dect_mitel_rfp_sys_init_rfp_capabilities = -1;
static int hf_dect_mitel_rfp_sys_init_rfp_capability_normal_tx = -1;
static int hf_dect_mitel_rfp_sys_init_rfp_capability_indoor = -1;
static int hf_dect_mitel_rfp_sys_init_rfp_capability_wlan = -1;
static int hf_dect_mitel_rfp_sys_init_rfp_capability_encryption = -1;
static int hf_dect_mitel_rfp_sys_init_rfp_capability_frequency_shift = -1;
static int hf_dect_mitel_rfp_sys_init_rfp_capability_low_tx = -1;
static int hf_dect_mitel_rfp_sys_init_rfp_capability_advanced_feature = -1;
static int hf_dect_mitel_rfp_sys_init_rfp_brand = -1;
static int hf_dect_mitel_rfp_sys_init_rfp_software_version = -1;
static int hf_dect_mitel_rfp_sys_init_signature = -1;
/* Message Type */
enum dect_mitel_rfp_message_type_coding {
DECT_MITEL_RFP_MESSAGE_TYPE_CONTROL_ACK = 0x0001,
DECT_MITEL_RFP_MESSAGE_TYPE_CONTROL_NACK = 0x0002,
DECT_MITEL_RFP_MESSAGE_TYPE_CONTROL_HEARTBEAT = 0x0003,
DECT_MITEL_RFP_MESSAGE_TYPE_SYS_IP_OPTIONS = 0x0101,
DECT_MITEL_RFP_MESSAGE_TYPE_SYS_LED = 0x0102,
DECT_MITEL_RFP_MESSAGE_TYPE_SYS_SPY = 0x0104,
DECT_MITEL_RFP_MESSAGE_TYPE_SYS_HEARTBEAT_INTERVAL = 0x0105,
DECT_MITEL_RFP_MESSAGE_TYPE_SYS_RSX = 0x0106,
DECT_MITEL_RFP_MESSAGE_TYPE_SYS_SYSLOG = 0x0107,
DECT_MITEL_RFP_MESSAGE_TYPE_SYS_MAX_CHANNELS = 0x0108,
DECT_MITEL_RFP_MESSAGE_TYPE_SYS_HTTP_SET = 0x0109,
DECT_MITEL_RFP_MESSAGE_TYPE_SYS_PASSWD = 0x010a,
DECT_MITEL_RFP_MESSAGE_TYPE_SYS_CRYPTED_PACKET = 0x010b,
DECT_MITEL_RFP_MESSAGE_TYPE_SYS_OMM_CONTROL = 0x010c,
DECT_MITEL_RFP_MESSAGE_TYPE_SYS_STATE_DUMP = 0x010d,
DECT_MITEL_RFP_MESSAGE_TYPE_SYS_RPING = 0x010e,
DECT_MITEL_RFP_MESSAGE_TYPE_SYS_STATE_DUMP_REQ = 0x010f,
DECT_MITEL_RFP_MESSAGE_TYPE_SYS_STATE_DUMP_RES = 0x0110,
DECT_MITEL_RFP_MESSAGE_TYPE_SYS_NEW_SW = 0x0111,
DECT_MITEL_RFP_MESSAGE_TYPE_SYS_AUDIO_LOG = 0x0112,
DECT_MITEL_RFP_MESSAGE_TYPE_SYS_USB_OVERLOAD = 0x0113,
DECT_MITEL_RFP_MESSAGE_TYPE_SYS_SW_CONTAINER = 0x0115,
DECT_MITEL_RFP_MESSAGE_TYPE_SYS_CORE_DUMP = 0x0116,
DECT_MITEL_RFP_MESSAGE_TYPE_SYS_VSNTP_TIME = 0x0117,
DECT_MITEL_RFP_MESSAGE_TYPE_SYS_UPDATE_802_1X_SUPPLICANT = 0x0119,
DECT_MITEL_RFP_MESSAGE_TYPE_SYS_INIT = 0x0120,
DECT_MITEL_RFP_MESSAGE_TYPE_SYS_RESET = 0x0121,
DECT_MITEL_RFP_MESSAGE_TYPE_SYS_SUPPLICANT_MD5 = 0x0122,
DECT_MITEL_RFP_MESSAGE_TYPE_SYS_STREAM_INFO = 0x0123,
DECT_MITEL_RFP_MESSAGE_TYPE_SYS_RFP_AUTH_KEY = 0x0124,
DECT_MITEL_RFP_MESSAGE_TYPE_SYS_RFP_RE_ENROLEMENT = 0x0125,
DECT_MITEL_RFP_MESSAGE_TYPE_SYS_ENCRYPTION_CONF = 0x0126,
DECT_MITEL_RFP_MESSAGE_TYPE_SYS_AUTHENTICATE = 0x012d,
DECT_MITEL_RFP_MESSAGE_TYPE_SYS_LICENSE_TIMER = 0x0134,
DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_OPEN = 0x0200,
DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_CONF = 0x0201,
DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_CLOSE = 0x0202,
DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_START = 0x0203,
DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_STOP = 0x0204,
DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_STATISTICS = 0x0205,
DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_REDIRECT_START = 0x0206,
DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_REDIRECT_STOP = 0x0207,
DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_RESTART = 0x0208,
DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_DTMF = 0x0209,
DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_DSP_CLOSE = 0x020a,
DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_TONE2 = 0x020b,
DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_BANDWIDTH_SWO = 0x020c,
DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_MUTE = 0x020d,
DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_G729_USED = 0x020e,
DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_TRACE_PPN = 0x020f,
DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_EOS_DETECT = 0x0210,
DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_AUDIO_STATISTICS = 0x0211,
DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_VIDEO_STATE = 0x0212,
DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_CHANNEL_MOD_INFO = 0x0213,
DECT_MITEL_RFP_MESSAGE_TYPE_ETH = 0x0301,
DECT_MITEL_RFP_MESSAGE_TYPE_SYNC = 0x0302,
DECT_MITEL_RFP_MESSAGE_TYPE_WLAN_RFP_CONFIG = 0x0401,
DECT_MITEL_RFP_MESSAGE_TYPE_WLAN_RFP_UP = 0x0402,
DECT_MITEL_RFP_MESSAGE_TYPE_WLAN_RFP_DOWN = 0x0403,
DECT_MITEL_RFP_MESSAGE_TYPE_WLAN_RFP_CLIENT_REQ = 0x0404,
DECT_MITEL_RFP_MESSAGE_TYPE_WLAN_RFP_CLIENT_REP = 0x0405,
DECT_MITEL_RFP_MESSAGE_TYPE_WLAN_RFP_SET_ACL = 0x0406,
DECT_MITEL_RFP_MESSAGE_TYPE_WLAN_RFP_CLIENT_INFO = 0x0407,
DECT_MITEL_RFP_MESSAGE_TYPE_WLAN_RFP_ACK = 0x0408,
DECT_MITEL_RFP_MESSAGE_TYPE_WLAN_RFP_LINK_NOK_NACK = 0x0409,
DECT_MITEL_RFP_MESSAGE_TYPE_WLAN_RFP_IFACE_REP = 0x040e,
DECT_MITEL_RFP_MESSAGE_TYPE_SNMP_RFP_UPDATE = 0x0501,
DECT_MITEL_RFP_MESSAGE_TYPE_CONF_OPEN = 0x0600,
DECT_MITEL_RFP_MESSAGE_TYPE_CONF_ADD_SUBSCR = 0x0601,
DECT_MITEL_RFP_MESSAGE_TYPE_CONF_CHG_SUBSCR = 0x0602,
DECT_MITEL_RFP_MESSAGE_TYPE_CONF_DEL_SUBSCR = 0x0603,
DECT_MITEL_RFP_MESSAGE_TYPE_CONF_CLOSE = 0x0604,
DECT_MITEL_RFP_MESSAGE_TYPE_CONF_RTP = 0x0605,
DECT_MITEL_RFP_MESSAGE_TYPE_BLUETOOTH_DEVICE = 0x0700,
DECT_MITEL_RFP_MESSAGE_TYPE_BLUETOOTH_CONFIG = 0x0701,
DECT_MITEL_RFP_MESSAGE_TYPE_BLUETOOTH_DATA = 0x0702,
DECT_MITEL_RFP_MESSAGE_TYPE_VIDEO_DEVICE = 0x0800,
DECT_MITEL_RFP_MESSAGE_TYPE_VIDEO_CONFIG = 0x0801,
};
/* CONTROL-NACK */
enum dect_mitel_rfp_control_nack_reason_coding {
DECT_MITEL_RFP_CONTROL_NACK_REASON_OK = 0x04000000,
DECT_MITEL_RFP_CONTROL_NACK_REASON_INVALID_ELEMENT = 0x04000001,
DECT_MITEL_RFP_CONTROL_NACK_REASON_NO_RESOURCE = 0x04000002,
DECT_MITEL_RFP_CONTROL_NACK_REASON_WRONG_STATE = 0x04000003,
DECT_MITEL_RFP_CONTROL_NACK_REASON_INVALID_PARAMETERS = 0x04000004,
DECT_MITEL_RFP_CONTROL_NACK_REASON_PORT_IN_USE = 0x04000005,
DECT_MITEL_RFP_CONTROL_NACK_REASON_CODEC_NOT_SUPPORTED = 0x04000006,
DECT_MITEL_RFP_CONTROL_NACK_REASON_VIDEO_NOT_SUPPORTED = 0x04000007,
};
/* SYS-LED */
enum dect_mitel_rfp_sys_led_color_coding {
DECT_MITEL_RFP_SYS_LED_COLOR_OFF = 0x00,
DECT_MITEL_RFP_SYS_LED_COLOR_STEADY_GREEN = 0x01,
DECT_MITEL_RFP_SYS_LED_COLOR_FLASH_GREEN = 0x02,
DECT_MITEL_RFP_SYS_LED_COLOR_FLASH_GREEN_ORANGE = 0x03,
DECT_MITEL_RFP_SYS_LED_COLOR_FLASH_GREEN_RED = 0x04,
DECT_MITEL_RFP_SYS_LED_COLOR_STEADY_RED = 0x05,
DECT_MITEL_RFP_SYS_LED_COLOR_STEADY_ORANGE = 0x06,
DECT_MITEL_RFP_SYS_LED_COLOR_CYCLE_GREEN_RED = 0x07,
};
/* SYS-INIT */
enum dect_mitel_rfp_sys_init_rfp_model_coding {
DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFP31 = 0x0001,
DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFP33 = 0x0002,
DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFP41 = 0x0003,
DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFP32 = 0x0004,
DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFP32US = 0x0005,
DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFP34 = 0x0006,
DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFP34US = 0x0007,
DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFP42 = 0x0008,
DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFP42US = 0x0009,
DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFP35 = 0x000b,
DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFP36 = 0x000c,
DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFP43 = 0x000d,
DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFP37 = 0x000e,
DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFP44 = 0x0010,
DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFP45 = 0x0011,
DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFP47 = 0x0012,
DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFP48 = 0x0013,
DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_PC_ECM = 0x0014,
DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_PC = 0x0015,
DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFPL31 = 0x1001,
DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFPL33 = 0x1002,
DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFPL41 = 0x1003,
DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFPL32US = 0x1005,
DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFPL34 = 0x1006,
DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFPL34US = 0x1007,
DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFPL42 = 0x1008,
DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFPL42US = 0x1009,
DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFPL35 = 0x100B,
DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFPL36 = 0x100C,
DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFPL43 = 0x100D,
DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFPL37 = 0x100E,
DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFPSL35 = 0x200B,
DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFPSL36 = 0x200C,
DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFPSL43 = 0x200D,
DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFPSL37 = 0x200E,
};
enum dect_mitel_rfp_sys_init_rfp_capability_coding {
DECT_MITEL_RFP_SYS_INIT_RFP_CAPABILITY_NORMAL_TX = 0x00000008,
DECT_MITEL_RFP_SYS_INIT_RFP_CAPABILITY_INDOOR = 0x00000010,
DECT_MITEL_RFP_SYS_INIT_RFP_CAPABILITY_WLAN = 0x00000020,
DECT_MITEL_RFP_SYS_INIT_RFP_CAPABILITY_ENCRYPTION = 0x00000100,
DECT_MITEL_RFP_SYS_INIT_RFP_CAPABILITY_FREQUENCY_SHIFT = 0x00000200,
DECT_MITEL_RFP_SYS_INIT_RFP_CAPABILITY_LOW_TX = 0x00000400,
DECT_MITEL_RFP_SYS_INIT_RFP_CAPABILITY_ADVANCED_FEATURE = 0x00008000,
};
enum dect_mitel_rfp_sys_init_rfp_brand_coding {
DECT_MITEL_RFP_SYS_INIT_RFP_BRAND_AVAYA = 0x001,
DECT_MITEL_RFP_SYS_INIT_RFP_BRAND_FFSIP = 0x002,
DECT_MITEL_RFP_SYS_INIT_RFP_BRAND_A5000 = 0x004,
DECT_MITEL_RFP_SYS_INIT_RFP_BRAND_Mitel = 0x008,
DECT_MITEL_RFP_SYS_INIT_RFP_BRAND_OC01XX = 0x010,
DECT_MITEL_RFP_SYS_INIT_RFP_BRAND_OCX = 0x020,
};
/* Message Type */
static const value_string dect_mitel_rfp_message_type_val[] = {
{ DECT_MITEL_RFP_MESSAGE_TYPE_CONTROL_ACK, "CONTROL-ACK" },
{ DECT_MITEL_RFP_MESSAGE_TYPE_CONTROL_NACK, "CONTROL-NACK" },
{ DECT_MITEL_RFP_MESSAGE_TYPE_CONTROL_HEARTBEAT, "CONTROL-HEARTBEAT" },
{ DECT_MITEL_RFP_MESSAGE_TYPE_SYS_IP_OPTIONS, "SYS-IP-OPTIONS" },
{ DECT_MITEL_RFP_MESSAGE_TYPE_SYS_LED, "SYS-LED" },
{ DECT_MITEL_RFP_MESSAGE_TYPE_SYS_SPY, "SYS-SPY" },
{ DECT_MITEL_RFP_MESSAGE_TYPE_SYS_HEARTBEAT_INTERVAL, "SYS-HEARTBEAT-INTERVAL" },
{ DECT_MITEL_RFP_MESSAGE_TYPE_SYS_RSX, "SYS-RSX" },
{ DECT_MITEL_RFP_MESSAGE_TYPE_SYS_SYSLOG, "SYS-SYSLOG" },
{ DECT_MITEL_RFP_MESSAGE_TYPE_SYS_MAX_CHANNELS, "SYS-MAX-CHANNELS" },
{ DECT_MITEL_RFP_MESSAGE_TYPE_SYS_HTTP_SET, "SYS-HTTP-SET" },
{ DECT_MITEL_RFP_MESSAGE_TYPE_SYS_PASSWD, "SYS-PASSWD" },
{ DECT_MITEL_RFP_MESSAGE_TYPE_SYS_CRYPTED_PACKET, "SYS-CRYPTED-PACKET" },
{ DECT_MITEL_RFP_MESSAGE_TYPE_SYS_OMM_CONTROL, "SYS-OMM-CONTROL" },
{ DECT_MITEL_RFP_MESSAGE_TYPE_SYS_STATE_DUMP, "SYS-STATE-DUMP" },
{ DECT_MITEL_RFP_MESSAGE_TYPE_SYS_RPING, "SYS-RPING" },
{ DECT_MITEL_RFP_MESSAGE_TYPE_SYS_STATE_DUMP_REQ, "SYS-STATE-DUMP-REQ" },
{ DECT_MITEL_RFP_MESSAGE_TYPE_SYS_STATE_DUMP_RES, "SYS-STATE-DUMP-RES" },
{ DECT_MITEL_RFP_MESSAGE_TYPE_SYS_NEW_SW, "SYS-NEW-SW" },
{ DECT_MITEL_RFP_MESSAGE_TYPE_SYS_AUDIO_LOG, "SYS-AUDIO-LOG" },
{ DECT_MITEL_RFP_MESSAGE_TYPE_SYS_USB_OVERLOAD, "SYS-USB-OVERLOAD" },
{ DECT_MITEL_RFP_MESSAGE_TYPE_SYS_SW_CONTAINER, "SYS-SW-CONTAINER" },
{ DECT_MITEL_RFP_MESSAGE_TYPE_SYS_CORE_DUMP, "SYS-CORE-DUMP" },
{ DECT_MITEL_RFP_MESSAGE_TYPE_SYS_VSNTP_TIME, "SYS-VSNTP-TIME" },
{ DECT_MITEL_RFP_MESSAGE_TYPE_SYS_UPDATE_802_1X_SUPPLICANT, "SYS-UPDATE-802-1X-SUPPLICANT" },
{ DECT_MITEL_RFP_MESSAGE_TYPE_SYS_INIT, "SYS-INIT" },
{ DECT_MITEL_RFP_MESSAGE_TYPE_SYS_RESET, "SYS-RESET" },
{ DECT_MITEL_RFP_MESSAGE_TYPE_SYS_SUPPLICANT_MD5, "SYS-SUPPLICANT-MD5" },
{ DECT_MITEL_RFP_MESSAGE_TYPE_SYS_STREAM_INFO, "SYS-STREAM-INFO" },
{ DECT_MITEL_RFP_MESSAGE_TYPE_SYS_RFP_AUTH_KEY, "SYS-RFP-AUTH-KEY" },
{ DECT_MITEL_RFP_MESSAGE_TYPE_SYS_RFP_RE_ENROLEMENT, "SYS-RFP-RE-ENROLEMENT" },
{ DECT_MITEL_RFP_MESSAGE_TYPE_SYS_ENCRYPTION_CONF, "SYS-ENCRYPTION-CONF" },
{ DECT_MITEL_RFP_MESSAGE_TYPE_SYS_AUTHENTICATE, "SYS-AUTHENTICATE" },
{ DECT_MITEL_RFP_MESSAGE_TYPE_SYS_LICENSE_TIMER, "SYS-LICENSE-TIMER" },
{ DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_OPEN, "MEDIA-OPEN" },
{ DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_CONF, "MEDIA-CONF" },
{ DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_CLOSE, "MEDIA-CLOSE" },
{ DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_START, "MEDIA-START" },
{ DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_STOP, "MEDIA-STOP" },
{ DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_STATISTICS, "MEDIA-STATISTICS" },
{ DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_REDIRECT_START, "MEDIA-REDIRECT-START" },
{ DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_REDIRECT_STOP, "MEDIA-REDIRECT-STOP" },
{ DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_RESTART, "MEDIA-RESTART" },
{ DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_DTMF, "MEDIA-DTMF" },
{ DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_DSP_CLOSE, "MEDIA-DSP-CLOSE" },
{ DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_TONE2, "MEDIA-TONE2" },
{ DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_BANDWIDTH_SWO, "MEDIA-BANDWIDTH-SWO" },
{ DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_MUTE, "MEDIA-MUTE" },
{ DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_G729_USED, "MEDIA-G729-USED" },
{ DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_TRACE_PPN, "MEDIA-TRACE-PPN" },
{ DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_EOS_DETECT, "MEDIA-EOS-DETECT" },
{ DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_AUDIO_STATISTICS, "MEDIA-AUDIO-STATISTICS" },
{ DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_VIDEO_STATE, "MEDIA-VIDEO-STATE" },
{ DECT_MITEL_RFP_MESSAGE_TYPE_MEDIA_CHANNEL_MOD_INFO, "MEDIA-CHANNEL-MOD-INFO" },
{ DECT_MITEL_RFP_MESSAGE_TYPE_ETH, "DECToE" },
{ DECT_MITEL_RFP_MESSAGE_TYPE_SYNC, "SYNC" },
{ DECT_MITEL_RFP_MESSAGE_TYPE_WLAN_RFP_CONFIG, "WLAN-RFP-CONFIG" },
{ DECT_MITEL_RFP_MESSAGE_TYPE_WLAN_RFP_UP, "WLAN-RFP-UP" },
{ DECT_MITEL_RFP_MESSAGE_TYPE_WLAN_RFP_DOWN, "WLAN-RFP-DOWN" },
{ DECT_MITEL_RFP_MESSAGE_TYPE_WLAN_RFP_CLIENT_REQ, "WLAN-RFP-CLIENT-REQ" },
{ DECT_MITEL_RFP_MESSAGE_TYPE_WLAN_RFP_CLIENT_REP, "WLAN-RFP-CLIENT-REP" },
{ DECT_MITEL_RFP_MESSAGE_TYPE_WLAN_RFP_SET_ACL, "WLAN-RFP-SET-ACL" },
{ DECT_MITEL_RFP_MESSAGE_TYPE_WLAN_RFP_CLIENT_INFO, "WLAN-RFP-CLIENT-INFO" },
{ DECT_MITEL_RFP_MESSAGE_TYPE_WLAN_RFP_ACK, "WLAN-RFP-ACK" },
{ DECT_MITEL_RFP_MESSAGE_TYPE_WLAN_RFP_LINK_NOK_NACK, "WLAN-RFP-LINK-NON-NACK" },
{ DECT_MITEL_RFP_MESSAGE_TYPE_WLAN_RFP_IFACE_REP, "WLAN-RFP-IFACE-REP" },
{ DECT_MITEL_RFP_MESSAGE_TYPE_SNMP_RFP_UPDATE, "SNMP-RFP-UPDATE" },
{ DECT_MITEL_RFP_MESSAGE_TYPE_CONF_OPEN, "CONF-OPEN" },
{ DECT_MITEL_RFP_MESSAGE_TYPE_CONF_ADD_SUBSCR, "CONF-ADD-SUBSCR" },
{ DECT_MITEL_RFP_MESSAGE_TYPE_CONF_CHG_SUBSCR, "CONF-CHG-SUBSCR" },
{ DECT_MITEL_RFP_MESSAGE_TYPE_CONF_DEL_SUBSCR, "CONF-DEL-SUBSCR" },
{ DECT_MITEL_RFP_MESSAGE_TYPE_CONF_CLOSE, "CONF-CLOSE" },
{ DECT_MITEL_RFP_MESSAGE_TYPE_CONF_RTP, "CONF-RTP" },
{ DECT_MITEL_RFP_MESSAGE_TYPE_BLUETOOTH_DEVICE, "BLUETOOTH-DEVICE" },
{ DECT_MITEL_RFP_MESSAGE_TYPE_BLUETOOTH_CONFIG, "BLUETOOTH-CONFIG" },
{ DECT_MITEL_RFP_MESSAGE_TYPE_BLUETOOTH_DATA, "BLUETOOOTH-DATA" },
{ DECT_MITEL_RFP_MESSAGE_TYPE_VIDEO_DEVICE, "VIDEO-DEVICE" },
{ DECT_MITEL_RFP_MESSAGE_TYPE_VIDEO_CONFIG, "VIDEO-CONFIG" },
{ 0, NULL }
};
/* CONTROL-NACK */
static const value_string dect_mitel_rfp_control_nack_reason_val[] = {
{ DECT_MITEL_RFP_CONTROL_NACK_REASON_OK, "OK" },
{ DECT_MITEL_RFP_CONTROL_NACK_REASON_INVALID_ELEMENT, "Invalid element" },
{ DECT_MITEL_RFP_CONTROL_NACK_REASON_NO_RESOURCE, "No resource" },
{ DECT_MITEL_RFP_CONTROL_NACK_REASON_WRONG_STATE, "Wrong state" },
{ DECT_MITEL_RFP_CONTROL_NACK_REASON_INVALID_PARAMETERS, "Invalid parameters" },
{ DECT_MITEL_RFP_CONTROL_NACK_REASON_PORT_IN_USE, "Port in use" },
{ DECT_MITEL_RFP_CONTROL_NACK_REASON_CODEC_NOT_SUPPORTED, "Codec not supported" },
{ DECT_MITEL_RFP_CONTROL_NACK_REASON_VIDEO_NOT_SUPPORTED, "Video not supported" },
{ 0, NULL }
};
/* SYS-LED */
static const value_string dect_mitel_rfp_sys_led_color_val[] = {
{ DECT_MITEL_RFP_SYS_LED_COLOR_OFF, "Off" },
{ DECT_MITEL_RFP_SYS_LED_COLOR_STEADY_GREEN, "Steady green" },
{ DECT_MITEL_RFP_SYS_LED_COLOR_FLASH_GREEN, "Flash green" },
{ DECT_MITEL_RFP_SYS_LED_COLOR_FLASH_GREEN_ORANGE, "Flash green-orange" },
{ DECT_MITEL_RFP_SYS_LED_COLOR_FLASH_GREEN_RED, "Flash green-red" },
{ DECT_MITEL_RFP_SYS_LED_COLOR_STEADY_RED, "Steady red" },
{ DECT_MITEL_RFP_SYS_LED_COLOR_STEADY_ORANGE, "Steady orange" },
{ DECT_MITEL_RFP_SYS_LED_COLOR_CYCLE_GREEN_RED, "Cycle green-red" },
{ 0, NULL }
};
/* SYS-INIT */
static const value_string dect_mitel_rfp_sys_init_rfp_model_val[] = {
{ DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFP31, "RFP 31" },
{ DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFP33, "RFP 33" },
{ DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFP41, "RFP 41" },
{ DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFP32, "RFP 32" },
{ DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFP32US, "RFP 32 (US Version)" },
{ DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFP34, "RFP 34" },
{ DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFP34US, "RFP 34 (US Version)" },
{ DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFP42, "RFP 42" },
{ DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFP42US, "RFP 42 (US Version)" },
{ DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFP35, "RFP 35" },
{ DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFP36, "RFP 36" },
{ DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFP43, "RFP 43" },
{ DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFP37, "RFP 37" },
{ DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFP44, "RFP 44" },
{ DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFP45, "RFP 45" },
{ DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFP47, "RFP 47" },
{ DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFP48, "RFP 48" },
{ DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_PC_ECM, "PC-ECM" },
{ DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_PC, "PC" },
{ DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFPL31, "RFP L31" },
{ DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFPL33, "RFP L33" },
{ DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFPL41, "RFP L41" },
{ DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFPL32US, "RFP L32 (US Version)" },
{ DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFPL34, "RFP L34" },
{ DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFPL34US, "RFP L34 (US Version)" },
{ DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFPL42, "RFP L42" },
{ DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFPL42US, "RFP L42 (US Version)" },
{ DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFPL35, "RFP L35" },
{ DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFPL36, "RFP L36" },
{ DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFPL43, "RFP L43" },
{ DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFPL37, "RFP L37" },
{ DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFPSL35, "RFP SL35" },
{ DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFPSL36, "RFP SL36" },
{ DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFPSL43, "RFP SL43" },
{ DECT_MITEL_RFP_SYS_INIT_RFP_MODEL_RFPSL37, "RFP SL37" },
{ 0, NULL }
};
static const value_string dect_mitel_rfp_sys_init_rfp_brand_val[] = {
{DECT_MITEL_RFP_SYS_INIT_RFP_BRAND_AVAYA, "Avaya" },
{DECT_MITEL_RFP_SYS_INIT_RFP_BRAND_FFSIP, "FF-SIP" },
{DECT_MITEL_RFP_SYS_INIT_RFP_BRAND_A5000, "A5000" },
{DECT_MITEL_RFP_SYS_INIT_RFP_BRAND_Mitel, "Mitel" },
{DECT_MITEL_RFP_SYS_INIT_RFP_BRAND_OC01XX, "OC01XX" },
{DECT_MITEL_RFP_SYS_INIT_RFP_BRAND_OCX, "OCX" },
{ 0, NULL }
};
static dissector_handle_t dect_mitel_rfp_handle;
static dissector_handle_t dect_mitel_eth_handle;
/* Preferences */
#define DECT_MITEL_RFP_TCP_PORT 16321
static guint tcp_port_pref = DECT_MITEL_RFP_TCP_PORT;
/* Initialize the subtree pointers */
static gint ett_dect_mitel_rfp = -1;
/*
CONTROL-ACK Message
| Offset | Len | Content |
| ------ | --- | ------- |
| 0 | 2 | Message |
| 2 | 2 | Call ID |
*/
static guint dissect_dect_mitel_rfp_control_ack(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_, guint offset)
{
proto_tree_add_item(tree, hf_dect_mitel_rfp_control_ack_message, tvb, offset, 2, ENC_NA);
offset += 2;
proto_tree_add_item(tree, hf_dect_mitel_rfp_control_ack_call_id, tvb, offset, 2, ENC_NA);
offset += 2;
return offset;
}
/*
CONTROL-NACK Message
| Offset | Len | Content |
| ------ | --- | ------------- |
| 0 | 2 | Message |
| 2 | 2 | Call ID |
| 4 | 4 | Reject resaon |
*/
static guint dissect_dect_mitel_rfp_control_nack(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_, guint offset)
{
proto_tree_add_item(tree, hf_dect_mitel_rfp_control_nack_message, tvb, offset, 2, ENC_NA);
offset += 2;
proto_tree_add_item(tree, hf_dect_mitel_rfp_control_nack_call_id, tvb, offset, 2, ENC_NA);
offset += 2;
proto_tree_add_item(tree, hf_dect_mitel_rfp_control_nack_reason, tvb, offset, 4, ENC_NA);
offset += 4;
return offset;
}
/*
CONTROL-HEARTBEAT Message
| Offset | Len | Content |
| ------ | --- | ------------------- |
| 0 | 4 | Uptime milliseconds |
| 4 | 4 | Uptime nanoseconds |
*/
static guint dissect_dect_mitel_rfp_control_heartbeat(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_, guint offset)
{
proto_tree_add_item(tree, hf_dect_mitel_rfp_control_heartbeat_milliseconds, tvb, offset, 4, ENC_NA);
offset += 4;
proto_tree_add_item(tree, hf_dect_mitel_rfp_control_heartbeat_nanoseconds, tvb, offset, 4, ENC_NA);
offset += 4;
return offset;
}
/*
SYS-LED Message
| Offset | Len | Content |
| ------ | --- | ----------- |
| 0 | 1 | LED ID |
| 1 | 1 | LED Colour |
*/
static guint dissect_dect_mitel_rfp_sys_led(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_, guint offset)
{
guint8 led_id, led_color;
proto_tree_add_item(tree, hf_dect_mitel_rfp_sys_led_id, tvb, offset, 1, ENC_NA);
led_id = tvb_get_guint8(tvb, offset);
offset++;
proto_tree_add_item(tree, hf_dect_mitel_rfp_sys_led_color, tvb, offset, 1, ENC_NA);
led_color = tvb_get_guint8(tvb, offset);
offset++;
col_append_fstr(pinfo->cinfo, COL_INFO, "LED %d:%s", led_id,
val_to_str(led_color, dect_mitel_rfp_sys_led_color_val, "Unknown: %02x"));
return offset;
}
/*
SYS-AUTHENTICATE Message
| Offset | Len | Content |
| ------ | --- | --------------- |
| 7 | 8 | RFP Blowfish IV |
| 21 | 8 | OMM Blowfish IV |
*/
static guint dissect_dect_mitel_rfp_sys_authenticate(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_, guint offset)
{
offset += 7;
proto_tree_add_item(tree, hf_dect_mitel_rfp_sys_authenticate_rfp_iv, tvb, offset, 8, ENC_NA);
offset += 16;
proto_tree_add_item(tree, hf_dect_mitel_rfp_sys_authenticate_omm_iv, tvb, offset, 8, ENC_NA);
offset += 8;
return offset;
}
/*
SYS-INIT Message
| Offset | Len | Content |
| ------ | --- | ----------------- |
| 0 | 4 | Model Type |
| 8 | 6 | MAC Address |
| 20 | 4 | Capabilities |
| 24 | 64 | AES enrypted Data |
| 88 | 4 | Protocol |
| 112 | 32 | Software Version |
| 256 | 16 | Signature |
*/
static guint dissect_dect_mitel_rfp_sys_init(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_, guint offset)
{
static int *const capabilities_flags [] = {
&hf_dect_mitel_rfp_sys_init_rfp_capability_normal_tx,
&hf_dect_mitel_rfp_sys_init_rfp_capability_indoor,
&hf_dect_mitel_rfp_sys_init_rfp_capability_wlan,
&hf_dect_mitel_rfp_sys_init_rfp_capability_encryption,
&hf_dect_mitel_rfp_sys_init_rfp_capability_frequency_shift,
&hf_dect_mitel_rfp_sys_init_rfp_capability_low_tx,
&hf_dect_mitel_rfp_sys_init_rfp_capability_advanced_feature,
NULL
};
proto_tree_add_item(tree, hf_dect_mitel_rfp_sys_init_rfp_model, tvb, offset, 4, ENC_NA);
offset += 8;
proto_tree_add_item(tree, hf_dect_mitel_rfp_sys_init_rfp_mac, tvb, offset, 6, ENC_NA);
offset += 12;
proto_tree_add_bitmask(tree, tvb, offset, hf_dect_mitel_rfp_sys_init_rfp_capabilities, ett_dect_mitel_rfp, capabilities_flags, ENC_NA);
offset += 4;
proto_tree_add_item(tree, hf_dect_mitel_rfp_sys_init_crypted, tvb, offset, 64, ENC_NA);
offset += 64;
proto_tree_add_item(tree, hf_dect_mitel_rfp_sys_init_protocol, tvb, offset, 4, ENC_NA);
offset += 24;
proto_tree_add_item(tree, hf_dect_mitel_rfp_sys_init_rfp_software_version, tvb, offset, 32, ENC_ASCII);
offset += 144;
proto_tree_add_item(tree, hf_dect_mitel_rfp_sys_init_signature, tvb, offset, 16, ENC_NA);
offset += 16;
return offset;
}
static int dissect_dect_mitel_rfp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
{
proto_item *ti;
proto_tree *dect_mitel_rfp_tree;
guint offset = 0;
guint16 message_type;
tvbuff_t *next_tvb;
gboolean ip_encapsulated = true;
/*** COLUMN DATA ***/
col_set_str(pinfo->cinfo, COL_PROTOCOL, "MITEL-RFP");
col_clear(pinfo->cinfo, COL_INFO);
/*** PROTOCOL TREE ***/
ti = proto_tree_add_item(tree, proto_dect_mitel_rfp, tvb, 0, -1, ENC_NA);
dect_mitel_rfp_tree = proto_item_add_subtree(ti, ett_dect_mitel_rfp);
proto_tree_add_item(dect_mitel_rfp_tree, hf_dect_mitel_rfp_message_type, tvb,
offset, 2, ENC_NA);
message_type = tvb_get_guint16(tvb, offset, ENC_NA);
col_append_fstr(pinfo->cinfo, COL_INFO, "%s ",
val_to_str(message_type, dect_mitel_rfp_message_type_val, "Unknown 0x%04x"));
offset += 2;
proto_tree_add_item(dect_mitel_rfp_tree, hf_dect_mitel_rfp_message_length, tvb,
offset, 2, ENC_NA);
offset += 2;
switch ( message_type ) {
case DECT_MITEL_RFP_MESSAGE_TYPE_CONTROL_ACK:
offset = dissect_dect_mitel_rfp_control_ack(tvb, pinfo, tree, data, offset);
break;
case DECT_MITEL_RFP_MESSAGE_TYPE_CONTROL_NACK:
offset = dissect_dect_mitel_rfp_control_nack(tvb, pinfo, tree, data, offset);
break;
case DECT_MITEL_RFP_MESSAGE_TYPE_CONTROL_HEARTBEAT:
offset = dissect_dect_mitel_rfp_control_heartbeat(tvb, pinfo, tree, data, offset);
break;
case DECT_MITEL_RFP_MESSAGE_TYPE_SYS_LED:
offset = dissect_dect_mitel_rfp_sys_led(tvb, pinfo, tree, data, offset);
break;
case DECT_MITEL_RFP_MESSAGE_TYPE_SYS_AUTHENTICATE:
offset = dissect_dect_mitel_rfp_sys_authenticate(tvb, pinfo, tree, data, offset);
break;
case DECT_MITEL_RFP_MESSAGE_TYPE_SYS_INIT:
offset = dissect_dect_mitel_rfp_sys_init(tvb, pinfo, tree, data, offset);
break;
case DECT_MITEL_RFP_MESSAGE_TYPE_ETH:
/* Handover to DECT-MITEL-ETH*/
next_tvb = tvb_new_subset_remaining(tvb, offset);
call_dissector_with_data(dect_mitel_eth_handle, next_tvb, pinfo, tree, &ip_encapsulated);
break;
default:
break;
}
return tvb_captured_length(tvb);
}
void proto_register_dect_mitel_rfp(void)
{
module_t *dect_mitel_rfp_module;
static hf_register_info hf[] = {
{ &hf_dect_mitel_rfp_message_type,
{ "Message Type", "dect_mitel_rfp.message.type", FT_UINT16, BASE_HEX,
VALS(dect_mitel_rfp_message_type_val), 0x0, NULL, HFILL
}
},
{ &hf_dect_mitel_rfp_message_length,
{ "Length", "dect_mitel_rfp.message.length", FT_UINT16, BASE_DEC,
NULL, 0x0, NULL, HFILL
}
},
/* CONTROL-ACK */
{ &hf_dect_mitel_rfp_control_ack_message,
{ "Message Type", "dect_mitel_rfp.control.ack.message", FT_UINT16, BASE_HEX,
VALS(dect_mitel_rfp_message_type_val), 0x0, NULL, HFILL
}
},
{ &hf_dect_mitel_rfp_control_ack_call_id,
{ "Call ID", "dect_mitel_rfp.control.ack.call_id", FT_UINT16, BASE_HEX,
NULL, 0x0, NULL, HFILL
}
},
/* CONTROL-NACK */
{ &hf_dect_mitel_rfp_control_nack_message,
{ "Message Type", "dect_mitel_rfp.control.nack.message", FT_UINT16, BASE_HEX,
VALS(dect_mitel_rfp_message_type_val), 0x0, NULL, HFILL
}
},
{ &hf_dect_mitel_rfp_control_nack_call_id,
{ "Call ID", "dect_mitel_rfp.control.nack.call_id", FT_UINT16, BASE_HEX,
NULL, 0x0, NULL, HFILL
}
},
{ &hf_dect_mitel_rfp_control_nack_reason,
{ "Reject reason", "dect_mitel_rfp.control.nack.message", FT_UINT32, BASE_HEX,
VALS(dect_mitel_rfp_control_nack_reason_val), 0x0, NULL, HFILL
}
},
/* CONTROL-HEARTBEAT */
{ &hf_dect_mitel_rfp_control_heartbeat_milliseconds,
{ "Milliseconds", "dect_mitel_rfp.control.heartbeat.milliseconds", FT_UINT32, BASE_DEC,
NULL, 0x0, NULL, HFILL
}
},
{ &hf_dect_mitel_rfp_control_heartbeat_nanoseconds,
{ "Nanoseconds", "dect_mitel_rfp.control.heartbeat.nanoseconds", FT_UINT32, BASE_DEC,
NULL, 0x0, NULL, HFILL
}
},
/* SYS-LED */
{ &hf_dect_mitel_rfp_sys_led_id,
{ "ID", "dect_mitel_rfp.sys.led.id", FT_UINT8, BASE_DEC,
NULL, 0x0, NULL, HFILL
}
},
{ &hf_dect_mitel_rfp_sys_led_color,
{ "Color", "dect_mitel_rfp.sys.led.color", FT_UINT8, BASE_HEX,
VALS(dect_mitel_rfp_sys_led_color_val), 0x0, NULL, HFILL
}
},
/* SYS-AUTHENTICATE */
{ &hf_dect_mitel_rfp_sys_authenticate_rfp_iv,
{ "RFP IV", "dect_mitel_rfp.sys.authenticate.rfp_iv", FT_UINT64, BASE_HEX,
NULL, 0x0, NULL, HFILL
}
},
{ &hf_dect_mitel_rfp_sys_authenticate_omm_iv,
{ "OMM IV", "dect_mitel_rfp.sys.authenticate.omm_iv", FT_UINT64, BASE_HEX,
NULL, 0x0, NULL, HFILL
}
},
/* SYS-INIT */
{ &hf_dect_mitel_rfp_sys_init_rfp_model,
{ "RFP Model", "dect_mitel_rfp.sys.init.rfp_model", FT_UINT32, BASE_HEX,
VALS(dect_mitel_rfp_sys_init_rfp_model_val), 0x0, NULL, HFILL
}
},
{ &hf_dect_mitel_rfp_sys_init_rfp_mac,
{ "RFP MAC Address", "dect_mitel_rfp.sys.init.rfp_mac", FT_ETHER, BASE_NONE,
NULL, 0x0, NULL, HFILL
}
},
{ &hf_dect_mitel_rfp_sys_init_crypted,
{ "Crypted", "dect_mitel_rfp.sys.init.crypted", FT_BYTES, BASE_NONE,
NULL, 0x0, "AES Crypted fields", HFILL
}
},
{ &hf_dect_mitel_rfp_sys_init_protocol,
{ "Protocol", "dect_mitel_rfp.sys.init.protocol", FT_UINT32, BASE_HEX,
NULL, 0x0, NULL, HFILL
}
},
{ &hf_dect_mitel_rfp_sys_init_rfp_capabilities,
{ "RPF Capabilities", "dect_mitel_rfp.sys.init.capabilities", FT_UINT32, BASE_HEX,
NULL, 0x0, NULL, HFILL
}
},
{ &hf_dect_mitel_rfp_sys_init_rfp_capability_normal_tx,
{ "Normal TX power", "dect_mitel_rfp.sys.init.capabilities.normal_tx", FT_BOOLEAN, 32,
TFS(&tfs_yes_no), DECT_MITEL_RFP_SYS_INIT_RFP_CAPABILITY_NORMAL_TX, NULL, HFILL
}
},
{ &hf_dect_mitel_rfp_sys_init_rfp_capability_indoor,
{ "Indoor", "dect_mitel_rfp.sys.init.capabilities.indoor", FT_BOOLEAN, 32,
TFS(&tfs_yes_no), DECT_MITEL_RFP_SYS_INIT_RFP_CAPABILITY_INDOOR, NULL, HFILL
}
},
{ &hf_dect_mitel_rfp_sys_init_rfp_capability_wlan,
{ "WLAN", "dect_mitel_rfp.sys.init.capabilities.wlan", FT_BOOLEAN, 32,
TFS(&tfs_yes_no), DECT_MITEL_RFP_SYS_INIT_RFP_CAPABILITY_WLAN, NULL, HFILL
}
},
{ &hf_dect_mitel_rfp_sys_init_rfp_capability_encryption,
{ "Encryption", "dect_mitel_rfp.sys.init.capabilities.encryption", FT_BOOLEAN, 32,
TFS(&tfs_yes_no), DECT_MITEL_RFP_SYS_INIT_RFP_CAPABILITY_ENCRYPTION, NULL, HFILL
}
},
{ &hf_dect_mitel_rfp_sys_init_rfp_capability_frequency_shift,
{ "Frequency shift", "dect_mitel_rfp.sys.init.capabilities.frequency_shift", FT_BOOLEAN, 32,
TFS(&tfs_yes_no), DECT_MITEL_RFP_SYS_INIT_RFP_CAPABILITY_FREQUENCY_SHIFT, NULL, HFILL
}
},
{ &hf_dect_mitel_rfp_sys_init_rfp_capability_low_tx,
{ "Low TX power", "dect_mitel_rfp.sys.init.capabilities.low_tx", FT_BOOLEAN, 32,
TFS(&tfs_yes_no), DECT_MITEL_RFP_SYS_INIT_RFP_CAPABILITY_LOW_TX, NULL, HFILL
}
},
{ &hf_dect_mitel_rfp_sys_init_rfp_capability_advanced_feature,
{ "Advanced Feature", "dect_mitel_rfp.sys.init.capabilities.advanced_feature", FT_BOOLEAN, 32,
TFS(&tfs_yes_no), DECT_MITEL_RFP_SYS_INIT_RFP_CAPABILITY_ADVANCED_FEATURE, NULL, HFILL
}
},
{ &hf_dect_mitel_rfp_sys_init_rfp_brand,
{ "RFP Brand", "dect_mitel_rfp.sys.init.rfp_brand", FT_UINT16, BASE_HEX,
VALS(dect_mitel_rfp_sys_init_rfp_brand_val), 0x03FF, NULL, HFILL
}
},
{ &hf_dect_mitel_rfp_sys_init_rfp_software_version,
{ "RFP Software Version", "dect_mitel_rfp.sys.init.rfp_software_version", FT_STRING, BASE_NONE,
NULL, 0x0, NULL, HFILL
}
},
{ &hf_dect_mitel_rfp_sys_init_signature,
{ "Signature", "dect_mitel_rfp.sys.init.signature", FT_BYTES, BASE_NONE,
NULL, 0x0, NULL, HFILL
}
},
};
static gint *ett[] = {
&ett_dect_mitel_rfp
};
proto_dect_mitel_rfp = proto_register_protocol("Mitel RFP/OMM TCP communication protocol",
"DECT-MITEL-RFP", "dect_mitel_rfp");
proto_register_field_array(proto_dect_mitel_rfp, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
dect_mitel_rfp_handle = register_dissector("dect_mitel_rfp", dissect_dect_mitel_rfp,
proto_dect_mitel_rfp);
dect_mitel_rfp_module = prefs_register_protocol(proto_dect_mitel_rfp,
proto_reg_handoff_dect_mitel_rfp);
prefs_register_uint_preference(dect_mitel_rfp_module, "tcp.port", "dect_mitel_rfp TCP Port",
" dect_mitel_rfp TCP port if other than the default",
10, &tcp_port_pref);
}
void proto_reg_handoff_dect_mitel_rfp(void)
{
static gboolean initialized = FALSE;
static int current_tcp_port;
if (!initialized) {
dissector_add_uint_with_preference("tcp.port", tcp_port_pref, dect_mitel_rfp_handle);
initialized = TRUE;
} else {
dissector_delete_uint("tcp.port", current_tcp_port, dect_mitel_rfp_handle);
}
current_tcp_port = tcp_port_pref;
dissector_add_uint_with_preference("tcp.port", tcp_port_pref, dect_mitel_rfp_handle);
dect_mitel_eth_handle = find_dissector("dect_mitel_eth");
}
/*
* Editor modelines - https://www.wireshark.org/tools/modelines.html
*
* Local variables:
* c-basic-offset: 4
* tab-width: 8
* indent-tabs-mode: nil
* End:
*
* vi: set shiftwidth=4 tabstop=8 expandtab:
* :indentSize=4:tabSize=8:noTabs=true:
*/