aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-v5ua.c
diff options
context:
space:
mode:
authorMartin Kaiser <wireshark@kaiser.cx>2013-03-31 12:12:03 +0000
committerMartin Kaiser <wireshark@kaiser.cx>2013-03-31 12:12:03 +0000
commit4f55532d5965c874d08c43968c05a40dec74d232 (patch)
tree356a15b524ae20dce18b9c634e343a6f100f99a9 /epan/dissectors/packet-v5ua.c
parenta808b622ac3295be96a5c0f99bad15c766a4171d (diff)
TABs -> spaces
add editor modelines svn path=/trunk/; revision=48669
Diffstat (limited to 'epan/dissectors/packet-v5ua.c')
-rw-r--r--epan/dissectors/packet-v5ua.c1975
1 files changed, 994 insertions, 981 deletions
diff --git a/epan/dissectors/packet-v5ua.c b/epan/dissectors/packet-v5ua.c
index 724288e1c5..faa2c2f5f0 100644
--- a/epan/dissectors/packet-v5ua.c
+++ b/epan/dissectors/packet-v5ua.c
@@ -59,17 +59,17 @@ static int proto_v5ua = -1;
static dissector_handle_t q931_handle;
static dissector_handle_t v52_handle;
- /* round up parameter length to multiple of four */
+ /* round up parameter length to multiple of four */
#define ADD_PADDING(x) ((((x) + 3) >> 2) << 2)
- /* common msg-header */
+/* common msg-header */
static int hf_version = -1;
static int hf_reserved = -1;
static int hf_msg_class = -1;
static int hf_msg_type = -1;
-/* static int hf_msg_type_id = -1; */
+/* static int hf_msg_type_id = -1; */
static int hf_msg_length = -1;
- /* V5UA message header */
+/* V5UA message header */
static int hf_link_id = -1;
static int hf_chnl_id = -1;
static int hf_adaptation_layer_id = -1;
@@ -83,15 +83,15 @@ static int hf_dlci_sapi = -1;
static int hf_dlci_one_bit = -1;
static int hf_dlci_tei = -1;
static int hf_efa = -1;
-/* static int hf_spare_efa = -1; */
- /* variable length parameter (msg) */
+/* static int hf_spare_efa = -1; */
+/* variable length parameter (msg) */
static int hf_parameter_tag = -1;
static int hf_parameter_tag_draft = -1;
static int hf_parameter_length = -1;
static int hf_parameter_value = -1;
static int hf_parameter_padding = -1;
- /* parameter fields */
+ /* parameter fields */
static int hf_link_status = -1;
static int hf_sa_bit_id = -1;
static int hf_sa_bit_value = -1;
@@ -118,19 +118,19 @@ static gint ett_v5ua_layer3 = -1;
#define RFC 0x1
#define DRAFT 0x2
- /* Version of IUA */
+ /* Version of IUA */
static int iua_version = RFC;
- /* Variables necessary for dissection of draft messages */
+/* Variables necessary for dissection of draft messages */
static int msg_class = -1;
static int msg_type = -1;
static int msg_length = -1;
static int messageclassCopy = -1;
-static int sa_bit_id = -1;
+static int sa_bit_id = -1;
static int link_status_operational = -1;
/* Code to actually dissect the packets */
- /* define the parameters for the Tags: Tag-Type,Tag-Length,Tag-Value (Payload) */
+ /* define the parameters for the Tags: Tag-Type,Tag-Length,Tag-Value (Payload) */
#define PARAMETER_TAG_OFFSET 0
#define PARAMETER_TAG_LENGTH 2
#define PARAMETER_LENGTH_OFFSET (PARAMETER_TAG_OFFSET + PARAMETER_TAG_LENGTH)
@@ -142,7 +142,7 @@ static int link_status_operational = -1;
/*----------------------V5UA Interface Identifier (int) (Draft,RFC)------------*/
- /* define parameter for the format of the integer formatted Interface Identifier */
+ /* define parameter for the format of the integer formatted Interface Identifier */
#define INT_IF_ID_LINK_OFFSET PARAMETER_VALUE_OFFSET
#define INT_IF_ID_LINK_LENGTH 4
#define INT_IF_ID_CHNL_OFFSET INT_IF_ID_LINK_OFFSET
@@ -154,30 +154,30 @@ static int linkIdentifier = -1;
static void
dissect_int_interface_identifier_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
- guint32 identifier;
- guint16 number_of_ids, id_number;
- gint offset;
-
- number_of_ids= (tvb_get_ntohs(parameter_tvb, PARAMETER_LENGTH_OFFSET) - PARAMETER_HEADER_LENGTH) / INT_INTERFACE_ID_LENGTH;
-
- offset = INT_IF_ID_LINK_OFFSET;
- proto_item_append_text(parameter_item, "(");
- for (id_number = 0; id_number < number_of_ids; id_number++) {
- proto_tree_add_item(parameter_tree, hf_link_id, parameter_tvb, offset, INT_IF_ID_LINK_LENGTH, ENC_BIG_ENDIAN);
- identifier = tvb_get_ntohl(parameter_tvb,offset)>>5;
- if (id_number < 1) {
- proto_item_append_text(parameter_item, "L:%d",identifier);
- } else {
- proto_item_append_text(parameter_item, " | L:%d",identifier);
- }
- linkIdentifier = identifier;
-
- proto_tree_add_item(parameter_tree, hf_chnl_id, parameter_tvb, offset+3, INT_IF_ID_CHNL_LENGTH, ENC_BIG_ENDIAN);
- identifier = tvb_get_guint8(parameter_tvb,offset+3)&0x1f;
- proto_item_append_text(parameter_item, " C:%d", identifier);
- offset += INT_INTERFACE_ID_LENGTH;
- }
- proto_item_append_text(parameter_item, ")");
+ guint32 identifier;
+ guint16 number_of_ids, id_number;
+ gint offset;
+
+ number_of_ids= (tvb_get_ntohs(parameter_tvb, PARAMETER_LENGTH_OFFSET) - PARAMETER_HEADER_LENGTH) / INT_INTERFACE_ID_LENGTH;
+
+ offset = INT_IF_ID_LINK_OFFSET;
+ proto_item_append_text(parameter_item, "(");
+ for (id_number = 0; id_number < number_of_ids; id_number++) {
+ proto_tree_add_item(parameter_tree, hf_link_id, parameter_tvb, offset, INT_IF_ID_LINK_LENGTH, ENC_BIG_ENDIAN);
+ identifier = tvb_get_ntohl(parameter_tvb,offset)>>5;
+ if (id_number < 1) {
+ proto_item_append_text(parameter_item, "L:%d",identifier);
+ } else {
+ proto_item_append_text(parameter_item, " | L:%d",identifier);
+ }
+ linkIdentifier = identifier;
+
+ proto_tree_add_item(parameter_tree, hf_chnl_id, parameter_tvb, offset+3, INT_IF_ID_CHNL_LENGTH, ENC_BIG_ENDIAN);
+ identifier = tvb_get_guint8(parameter_tvb,offset+3)&0x1f;
+ proto_item_append_text(parameter_item, " C:%d", identifier);
+ offset += INT_INTERFACE_ID_LENGTH;
+ }
+ proto_item_append_text(parameter_item, ")");
}
/*----------------------V5UA Interface Identifier (int) (Draft,RFC)------------*/
@@ -190,13 +190,13 @@ dissect_int_interface_identifier_parameter(tvbuff_t *parameter_tvb, proto_tree *
static void
dissect_text_interface_identifier_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
- guint16 if_id_length;
+ guint16 if_id_length;
- if_id_length = tvb_get_ntohs(parameter_tvb, TEXT_IF_ID_LENGTH_OFFSET) - TEXT_IF_ID_HEADER_LENGTH;
+ if_id_length = tvb_get_ntohs(parameter_tvb, TEXT_IF_ID_LENGTH_OFFSET) - TEXT_IF_ID_HEADER_LENGTH;
- proto_tree_add_item(parameter_tree, hf_text_if_id, parameter_tvb, TEXT_IF_ID_VALUE_OFFSET, if_id_length, ENC_ASCII|ENC_NA);
- proto_item_append_text(parameter_item, " (0x%.*s)", if_id_length,
- tvb_get_ephemeral_string(parameter_tvb, TEXT_IF_ID_VALUE_OFFSET, if_id_length));
+ proto_tree_add_item(parameter_tree, hf_text_if_id, parameter_tvb, TEXT_IF_ID_VALUE_OFFSET, if_id_length, ENC_ASCII|ENC_NA);
+ proto_item_append_text(parameter_item, " (0x%.*s)", if_id_length,
+ tvb_get_ephemeral_string(parameter_tvb, TEXT_IF_ID_VALUE_OFFSET, if_id_length));
}
/*----------------------Text Interface Identifier (RFC)------------------------*/
@@ -205,14 +205,14 @@ dissect_text_interface_identifier_parameter(tvbuff_t *parameter_tvb, proto_tree
/* interpretation of EFA-values */
static const value_string efa_values[] = {
- { 8175, "ISDN Protocol" },
- { 8176, "PSTN Protocol" },
- { 8177, "CONTROL Protocol" },
- { 8178, "BCC Protocol" },
- { 8179, "PROT Protocol" },
- { 8180, "Link Control Protocol" },
- { 8191, "VALUE RESERVED" },
- { 0, NULL } };
+ { 8175, "ISDN Protocol" },
+ { 8176, "PSTN Protocol" },
+ { 8177, "CONTROL Protocol" },
+ { 8178, "BCC Protocol" },
+ { 8179, "PROT Protocol" },
+ { 8180, "Link Control Protocol" },
+ { 8191, "VALUE RESERVED" },
+ { 0, NULL } };
#define DLCI_LENGTH_OFFSET PARAMETER_LENGTH_OFFSET
#define DLCI_SAPI_OFFSET PARAMETER_VALUE_OFFSET
@@ -225,102 +225,102 @@ static const value_string efa_values[] = {
static void
dissect_dlci_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item, packet_info *pinfo)
{
- guint16 efa = 0, offset = 0;
-
-guint8 sapi = -1;
-guint8 tei = -1;
-
-
- if (iua_version == RFC) offset = DLCI_SAPI_OFFSET;
- else if(iua_version == DRAFT) offset = DLCI_HEADER_LENGTH + tvb_get_ntohs(parameter_tvb, DLCI_LENGTH_OFFSET);
-
- proto_tree_add_item(parameter_tree, hf_dlci_zero_bit, parameter_tvb, offset, DLCI_SAPI_LENGTH, ENC_BIG_ENDIAN);
- proto_tree_add_item(parameter_tree, hf_dlci_spare_bit, parameter_tvb, offset, DLCI_SAPI_LENGTH, ENC_BIG_ENDIAN);
- proto_tree_add_item(parameter_tree, hf_dlci_sapi, parameter_tvb, offset, DLCI_SAPI_LENGTH, ENC_BIG_ENDIAN);
-
- offset += DLCI_SAPI_LENGTH;
- proto_tree_add_item(parameter_tree, hf_dlci_one_bit, parameter_tvb, offset, DLCI_TEI_LENGTH, ENC_BIG_ENDIAN);
- proto_tree_add_item(parameter_tree, hf_dlci_tei, parameter_tvb, offset, DLCI_TEI_LENGTH, ENC_BIG_ENDIAN);
-
-sapi = tvb_get_ntohs(parameter_tvb, offset-DLCI_TEI_LENGTH-DLCI_SAPI_LENGTH)>>2;
-tei = tvb_get_ntohs(parameter_tvb, offset-DLCI_TEI_LENGTH)>>1;
-
- /* if SAPI & TEI not set to ZERO, value of EFA must be decode (EFA = 0 -> ISDN protocol)*/
- if(tvb_get_ntohs(parameter_tvb,offset-DLCI_TEI_LENGTH) != 0x01){
-
- offset += DLCI_TEI_LENGTH;
- efa = tvb_get_ntohs(parameter_tvb, offset);
- dlci_efa = tvb_get_ntohs(parameter_tvb, offset);
-
- if (dlci_efa >= 0 && dlci_efa <= 8175) { col_append_fstr(pinfo->cinfo, COL_INFO, " | ISDN: %u", dlci_efa); }
- else if (dlci_efa == 8176) { col_append_str(pinfo->cinfo, COL_INFO, " | PSTN"); }
- else if (dlci_efa == 8177) { col_append_str(pinfo->cinfo, COL_INFO, " | Ctrl"); }
- else if (dlci_efa == 8178) { col_append_str(pinfo->cinfo, COL_INFO, " | BCC"); }
- else if (dlci_efa == 8179) { col_append_str(pinfo->cinfo, COL_INFO, " | ProtProt"); }
- else if (dlci_efa == 8180) { col_append_str(pinfo->cinfo, COL_INFO, " | LinkCtrl"); }
- else {};
-
- if(efa <= 8175) {
- proto_tree_add_uint_format(parameter_tree, hf_efa, parameter_tvb, offset, EFA_LENGTH, efa,
- "Envelope function address: ISDN (%u)", efa);
- proto_item_append_text(parameter_item, " (SAPI:%u TEI:%u EFA:ISDN (%u))",sapi,tei,efa);
- }
- else if (efa > 8175 && efa <= 8180){
- proto_tree_add_uint_format(parameter_tree, hf_efa, parameter_tvb, offset, EFA_LENGTH, efa,
- "Envelope function address: %s (%u)", val_to_str_const(efa, efa_values, "unknown EFA"),tvb_get_ntohs(parameter_tvb, offset));
- proto_item_append_text(parameter_item, " (SAPI:%u TEI:%u EFA:%s (%u))",sapi,tei,val_to_str_const(efa, efa_values, "unknown EFA-value"),efa);
- }
- else {
- proto_tree_add_uint_format(parameter_tree, hf_efa, parameter_tvb, offset, EFA_LENGTH, efa,
- "Envelope function address: RESERVED (%u)", efa);
- proto_item_append_text(parameter_item, " (SAPI:%u TEI:%u EFA:RESERVED (%u))",sapi,tei,efa);
- }
- }
- /* if SAPI & TEI set to ZERO, EFA also shall be set to ZERO and didn't comply with value for ISDN protocol */
- else{
- offset += DLCI_TEI_LENGTH;
- efa = tvb_get_ntohs(parameter_tvb, offset);
- dlci_efa = tvb_get_ntohs(parameter_tvb, offset);
-
- if (dlci_efa >= 0 && dlci_efa <= 8175) { col_append_fstr(pinfo->cinfo, COL_INFO, " | ISDN: %u", dlci_efa); }
- else if (dlci_efa == 8176) { col_append_str(pinfo->cinfo, COL_INFO, " | PSTN"); }
- else if (dlci_efa == 8177) { col_append_str(pinfo->cinfo, COL_INFO, " | Ctrl"); }
- else if (dlci_efa == 8178) { col_append_str(pinfo->cinfo, COL_INFO, " | BCC"); }
- else if (dlci_efa == 8179) { col_append_str(pinfo->cinfo, COL_INFO, " | ProtProt"); }
- else if (dlci_efa == 8180) { col_append_str(pinfo->cinfo, COL_INFO, " | LinkCtrl"); }
- else {};
-
- if(efa <= 8175) {
-
- proto_tree_add_uint_format(parameter_tree, hf_efa, parameter_tvb, offset, EFA_LENGTH, efa,
- "Envelope function address: ISDN (%u)", efa);
- proto_item_append_text(parameter_item, " (SAPI:%u TEI:%u EFA:ISDN (%u))",sapi,tei,efa);
-
- }
- else if (efa > 8175 && efa <= 8180){
-
- proto_tree_add_uint_format(parameter_tree, hf_efa, parameter_tvb, offset, EFA_LENGTH, efa,
- "Envelope function address: %s (%u)", val_to_str_const(efa, efa_values, "unknown EFA"),tvb_get_ntohs(parameter_tvb, offset));
- proto_item_append_text(parameter_item, " (SAPI:%u TEI:%u EFA:%s (%u))",sapi,tei,val_to_str_const(efa, efa_values, "unknown EFA-value"),efa);
-
- }
- else if(efa >= 8181){
- proto_tree_add_uint_format(parameter_tree, hf_efa, parameter_tvb, offset, EFA_LENGTH, efa,
- "Envelope function address: RESERVED (%u)", efa);
- proto_item_append_text(parameter_item, " (SAPI:%u TEI:%u EFA:RESERVED (%u))",sapi,tei,efa);
- }
- else {
- proto_tree_add_uint_format(parameter_tree, hf_efa, parameter_tvb, offset, EFA_LENGTH, efa,
- "Envelope function address: %u", efa);
- proto_item_append_text(parameter_item, " (SAPI:%u TEI:%u EFA:%u)",sapi,tei,efa);
- }
- }
+ guint16 efa = 0, offset = 0;
+
+ guint8 sapi = -1;
+ guint8 tei = -1;
+
+
+ if (iua_version == RFC) offset = DLCI_SAPI_OFFSET;
+ else if(iua_version == DRAFT) offset = DLCI_HEADER_LENGTH + tvb_get_ntohs(parameter_tvb, DLCI_LENGTH_OFFSET);
+
+ proto_tree_add_item(parameter_tree, hf_dlci_zero_bit, parameter_tvb, offset, DLCI_SAPI_LENGTH, ENC_BIG_ENDIAN);
+ proto_tree_add_item(parameter_tree, hf_dlci_spare_bit, parameter_tvb, offset, DLCI_SAPI_LENGTH, ENC_BIG_ENDIAN);
+ proto_tree_add_item(parameter_tree, hf_dlci_sapi, parameter_tvb, offset, DLCI_SAPI_LENGTH, ENC_BIG_ENDIAN);
+
+ offset += DLCI_SAPI_LENGTH;
+ proto_tree_add_item(parameter_tree, hf_dlci_one_bit, parameter_tvb, offset, DLCI_TEI_LENGTH, ENC_BIG_ENDIAN);
+ proto_tree_add_item(parameter_tree, hf_dlci_tei, parameter_tvb, offset, DLCI_TEI_LENGTH, ENC_BIG_ENDIAN);
+
+ sapi = tvb_get_ntohs(parameter_tvb, offset-DLCI_TEI_LENGTH-DLCI_SAPI_LENGTH)>>2;
+ tei = tvb_get_ntohs(parameter_tvb, offset-DLCI_TEI_LENGTH)>>1;
+
+ /* if SAPI & TEI not set to ZERO, value of EFA must be decode (EFA = 0 -> ISDN protocol)*/
+ if(tvb_get_ntohs(parameter_tvb,offset-DLCI_TEI_LENGTH) != 0x01){
+
+ offset += DLCI_TEI_LENGTH;
+ efa = tvb_get_ntohs(parameter_tvb, offset);
+ dlci_efa = tvb_get_ntohs(parameter_tvb, offset);
+
+ if (dlci_efa >= 0 && dlci_efa <= 8175) { col_append_fstr(pinfo->cinfo, COL_INFO, " | ISDN: %u", dlci_efa); }
+ else if (dlci_efa == 8176) { col_append_str(pinfo->cinfo, COL_INFO, " | PSTN"); }
+ else if (dlci_efa == 8177) { col_append_str(pinfo->cinfo, COL_INFO, " | Ctrl"); }
+ else if (dlci_efa == 8178) { col_append_str(pinfo->cinfo, COL_INFO, " | BCC"); }
+ else if (dlci_efa == 8179) { col_append_str(pinfo->cinfo, COL_INFO, " | ProtProt"); }
+ else if (dlci_efa == 8180) { col_append_str(pinfo->cinfo, COL_INFO, " | LinkCtrl"); }
+ else {};
+
+ if(efa <= 8175) {
+ proto_tree_add_uint_format(parameter_tree, hf_efa, parameter_tvb, offset, EFA_LENGTH, efa,
+ "Envelope function address: ISDN (%u)", efa);
+ proto_item_append_text(parameter_item, " (SAPI:%u TEI:%u EFA:ISDN (%u))",sapi,tei,efa);
+ }
+ else if (efa > 8175 && efa <= 8180){
+ proto_tree_add_uint_format(parameter_tree, hf_efa, parameter_tvb, offset, EFA_LENGTH, efa,
+ "Envelope function address: %s (%u)", val_to_str_const(efa, efa_values, "unknown EFA"),tvb_get_ntohs(parameter_tvb, offset));
+ proto_item_append_text(parameter_item, " (SAPI:%u TEI:%u EFA:%s (%u))",sapi,tei,val_to_str_const(efa, efa_values, "unknown EFA-value"),efa);
+ }
+ else {
+ proto_tree_add_uint_format(parameter_tree, hf_efa, parameter_tvb, offset, EFA_LENGTH, efa,
+ "Envelope function address: RESERVED (%u)", efa);
+ proto_item_append_text(parameter_item, " (SAPI:%u TEI:%u EFA:RESERVED (%u))",sapi,tei,efa);
+ }
+ }
+ /* if SAPI & TEI set to ZERO, EFA also shall be set to ZERO and didn't comply with value for ISDN protocol */
+ else{
+ offset += DLCI_TEI_LENGTH;
+ efa = tvb_get_ntohs(parameter_tvb, offset);
+ dlci_efa = tvb_get_ntohs(parameter_tvb, offset);
+
+ if (dlci_efa >= 0 && dlci_efa <= 8175) { col_append_fstr(pinfo->cinfo, COL_INFO, " | ISDN: %u", dlci_efa); }
+ else if (dlci_efa == 8176) { col_append_str(pinfo->cinfo, COL_INFO, " | PSTN"); }
+ else if (dlci_efa == 8177) { col_append_str(pinfo->cinfo, COL_INFO, " | Ctrl"); }
+ else if (dlci_efa == 8178) { col_append_str(pinfo->cinfo, COL_INFO, " | BCC"); }
+ else if (dlci_efa == 8179) { col_append_str(pinfo->cinfo, COL_INFO, " | ProtProt"); }
+ else if (dlci_efa == 8180) { col_append_str(pinfo->cinfo, COL_INFO, " | LinkCtrl"); }
+ else {};
+
+ if(efa <= 8175) {
+
+ proto_tree_add_uint_format(parameter_tree, hf_efa, parameter_tvb, offset, EFA_LENGTH, efa,
+ "Envelope function address: ISDN (%u)", efa);
+ proto_item_append_text(parameter_item, " (SAPI:%u TEI:%u EFA:ISDN (%u))",sapi,tei,efa);
+
+ }
+ else if (efa > 8175 && efa <= 8180){
+
+ proto_tree_add_uint_format(parameter_tree, hf_efa, parameter_tvb, offset, EFA_LENGTH, efa,
+ "Envelope function address: %s (%u)", val_to_str_const(efa, efa_values, "unknown EFA"),tvb_get_ntohs(parameter_tvb, offset));
+ proto_item_append_text(parameter_item, " (SAPI:%u TEI:%u EFA:%s (%u))",sapi,tei,val_to_str_const(efa, efa_values, "unknown EFA-value"),efa);
+
+ }
+ else if(efa >= 8181){
+ proto_tree_add_uint_format(parameter_tree, hf_efa, parameter_tvb, offset, EFA_LENGTH, efa,
+ "Envelope function address: RESERVED (%u)", efa);
+ proto_item_append_text(parameter_item, " (SAPI:%u TEI:%u EFA:RESERVED (%u))",sapi,tei,efa);
+ }
+ else {
+ proto_tree_add_uint_format(parameter_tree, hf_efa, parameter_tvb, offset, EFA_LENGTH, efa,
+ "Envelope function address: %u", efa);
+ proto_item_append_text(parameter_item, " (SAPI:%u TEI:%u EFA:%u)",sapi,tei,efa);
+ }
+ }
}
/*----------------------DLCI & Envelope Function Address------------------------*/
/*----------------------Error Indication (Draft)-------------------------------*/
- /* define Error Code Parameter for Layer Management (MGMT) Messages */
+ /* define Error Code Parameter for Layer Management (MGMT) Messages */
#define MGMT_ERROR_INVALID_TEI_DRAFT 0x00
#define MGMT_ERROR_INVALID_IFID_DRAFT 0x01
#define MGMT_ERROR_UNDEFINIED_MSG_DRAFT 0x02
@@ -347,17 +347,17 @@ static const value_string draft_error_code_values[] = {
static void
dissect_draft_error_code_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree)
{
- guint16 offset = MGMT_ERROR_MSG_HEADER_LENGTH + tvb_get_ntohs(parameter_tvb, MGMT_ERROR_MSG_LENGTH_OFFSET) + 4;
- proto_tree_add_item(parameter_tree, hf_draft_error_code, parameter_tvb, offset, MGMT_ERROR_CODE_LENGTH, ENC_BIG_ENDIAN);
- offset += MGMT_ERROR_CODE_LENGTH ;
- if( tvb_length_remaining(parameter_tvb,offset) > 0 )
- proto_tree_add_item(parameter_tree, hf_info_string, parameter_tvb, offset, msg_length - offset,ENC_ASCII|ENC_NA);
+ guint16 offset = MGMT_ERROR_MSG_HEADER_LENGTH + tvb_get_ntohs(parameter_tvb, MGMT_ERROR_MSG_LENGTH_OFFSET) + 4;
+ proto_tree_add_item(parameter_tree, hf_draft_error_code, parameter_tvb, offset, MGMT_ERROR_CODE_LENGTH, ENC_BIG_ENDIAN);
+ offset += MGMT_ERROR_CODE_LENGTH ;
+ if( tvb_length_remaining(parameter_tvb,offset) > 0 )
+ proto_tree_add_item(parameter_tree, hf_info_string, parameter_tvb, offset, msg_length - offset,ENC_ASCII|ENC_NA);
}
/*----------------------Error Indication (Draft)-------------------------------*/
/*----------------------Error Indication (RFC)---------------------------------*/
- /* define Error Code Parameter for Layer Management (MGMT) Messages */
+ /* define Error Code Parameter for Layer Management (MGMT) Messages */
#define MGMT_ERROR_INVALID_VERSION 0x01
#define MGMT_ERROR_INVALID_IF_ID 0x02
#define MGMT_ERROR_UNSUPPORTED_MSG_CLASS 0x03
@@ -391,50 +391,50 @@ static const value_string error_code_values[] = {
static void
dissect_error_code_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
- proto_tree_add_item(parameter_tree, hf_error_code, parameter_tvb, MGMT_ERROR_CODE_OFFSET, MGMT_ERROR_CODE_LENGTH, ENC_BIG_ENDIAN);
- proto_item_append_text(parameter_item, " (%s)",
- val_to_str_const(tvb_get_ntohl(parameter_tvb, MGMT_ERROR_CODE_OFFSET), error_code_values, "Unknown error code"));
+ proto_tree_add_item(parameter_tree, hf_error_code, parameter_tvb, MGMT_ERROR_CODE_OFFSET, MGMT_ERROR_CODE_LENGTH, ENC_BIG_ENDIAN);
+ proto_item_append_text(parameter_item, " (%s)",
+ val_to_str_const(tvb_get_ntohl(parameter_tvb, MGMT_ERROR_CODE_OFFSET), error_code_values, "Unknown error code"));
}
static void
dissect_diagnostic_information_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
- guint16 diag_info_length;
+ guint16 diag_info_length;
- diag_info_length = tvb_get_ntohs(parameter_tvb, MGMT_ERROR_MSG_LENGTH_OFFSET) - MGMT_ERROR_MSG_HEADER_LENGTH;
- proto_tree_add_item(parameter_tree, hf_diagnostic_info, parameter_tvb, PARAMETER_VALUE_OFFSET, diag_info_length, ENC_NA);
- proto_item_append_text(parameter_item, " (%u byte%s)", diag_info_length, plurality(diag_info_length, "", "s"));
+ diag_info_length = tvb_get_ntohs(parameter_tvb, MGMT_ERROR_MSG_LENGTH_OFFSET) - MGMT_ERROR_MSG_HEADER_LENGTH;
+ proto_tree_add_item(parameter_tree, hf_diagnostic_info, parameter_tvb, PARAMETER_VALUE_OFFSET, diag_info_length, ENC_NA);
+ proto_item_append_text(parameter_item, " (%u byte%s)", diag_info_length, plurality(diag_info_length, "", "s"));
}
/*----------------------Error Indication (RFC)---------------------------------*/
/*----------------------Notify (RFC)-------------------------------------------*/
- /* define Status Type parameters for Notify (NTFY) Messages */
+ /* define Status Type parameters for Notify (NTFY) Messages */
#define NTFY_STATUS_TYPE_AS_STATE_CHANGE 0x01
#define NTFY_STATUS_TYPE_OTHER 0x02
static const value_string status_type_values[] = {
- { NTFY_STATUS_TYPE_AS_STATE_CHANGE, "Application server state change" },
- { NTFY_STATUS_TYPE_OTHER, "Other" },
- { 0, NULL } };
+ { NTFY_STATUS_TYPE_AS_STATE_CHANGE, "Application server state change" },
+ { NTFY_STATUS_TYPE_OTHER, "Other" },
+ { 0, NULL } };
- /* define Status Identification parameters for NTFY Messages (AS state change)*/
+ /* define Status Identification parameters for NTFY Messages (AS state change)*/
#define NTFY_STATUS_IDENT_AS_DOWN 0x01
#define NTFY_STATUS_IDENT_AS_INACTIVE 0x02
#define NTFY_STATUS_IDENT_AS_ACTIVE 0x03
#define NTFY_STATUS_IDENT_AS_PENDING 0x04
- /* define Status Identification parameters for NTFY Messages (Other)*/
+ /* define Status Identification parameters for NTFY Messages (Other)*/
#define NTFY_STATUS_INSUFFICIENT_ASP_RES_ACTIVE 0x01
#define NTFY_STATUS_ALTERNATE_ASP_ACTIVE 0x02
static const value_string status_type_id_values[] = {
- { NTFY_STATUS_TYPE_AS_STATE_CHANGE * 256 * 256 + NTFY_STATUS_IDENT_AS_DOWN, "Application server down" },
- { NTFY_STATUS_TYPE_AS_STATE_CHANGE * 256 * 256 + NTFY_STATUS_IDENT_AS_INACTIVE, "Application server inactive" },
- { NTFY_STATUS_TYPE_AS_STATE_CHANGE * 256 * 256 + NTFY_STATUS_IDENT_AS_ACTIVE, "Application server active" },
- { NTFY_STATUS_TYPE_AS_STATE_CHANGE * 256 * 256 + NTFY_STATUS_IDENT_AS_PENDING, "Application server pending" },
- { NTFY_STATUS_TYPE_OTHER * 256 * 256 + NTFY_STATUS_INSUFFICIENT_ASP_RES_ACTIVE, "Insufficient ASP resources active in AS" },
- { NTFY_STATUS_TYPE_OTHER * 256 * 256 + NTFY_STATUS_ALTERNATE_ASP_ACTIVE, "Alternate ASP active" },
- { 0, NULL } };
+ { NTFY_STATUS_TYPE_AS_STATE_CHANGE * 256 * 256 + NTFY_STATUS_IDENT_AS_DOWN, "Application server down" },
+ { NTFY_STATUS_TYPE_AS_STATE_CHANGE * 256 * 256 + NTFY_STATUS_IDENT_AS_INACTIVE, "Application server inactive" },
+ { NTFY_STATUS_TYPE_AS_STATE_CHANGE * 256 * 256 + NTFY_STATUS_IDENT_AS_ACTIVE, "Application server active" },
+ { NTFY_STATUS_TYPE_AS_STATE_CHANGE * 256 * 256 + NTFY_STATUS_IDENT_AS_PENDING, "Application server pending" },
+ { NTFY_STATUS_TYPE_OTHER * 256 * 256 + NTFY_STATUS_INSUFFICIENT_ASP_RES_ACTIVE, "Insufficient ASP resources active in AS" },
+ { NTFY_STATUS_TYPE_OTHER * 256 * 256 + NTFY_STATUS_ALTERNATE_ASP_ACTIVE, "Alternate ASP active" },
+ { 0, NULL } };
#define NTFY_STATUS_TYPE_OFFSET PARAMETER_VALUE_OFFSET
#define NTFY_STATUS_TYPE_LENGTH 2
@@ -444,31 +444,31 @@ static const value_string status_type_id_values[] = {
static void
dissect_status_type_identification_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
- guint16 status_type, status_id;
+ guint16 status_type, status_id;
- status_type = tvb_get_ntohs(parameter_tvb, NTFY_STATUS_TYPE_OFFSET);
- status_id = tvb_get_ntohs(parameter_tvb, NTFY_STATUS_IDENT_OFFSET);
+ status_type = tvb_get_ntohs(parameter_tvb, NTFY_STATUS_TYPE_OFFSET);
+ status_id = tvb_get_ntohs(parameter_tvb, NTFY_STATUS_IDENT_OFFSET);
- proto_tree_add_item(parameter_tree, hf_status_type, parameter_tvb, NTFY_STATUS_TYPE_OFFSET, NTFY_STATUS_TYPE_LENGTH, ENC_BIG_ENDIAN);
- proto_tree_add_uint_format(parameter_tree, hf_status_id, parameter_tvb, NTFY_STATUS_IDENT_OFFSET, NTFY_STATUS_IDENT_LENGTH,
- status_id, "Status identification: %u (%s)", status_id,
- val_to_str_const(status_type * 256 * 256 + status_id, status_type_id_values, "unknown"));
+ proto_tree_add_item(parameter_tree, hf_status_type, parameter_tvb, NTFY_STATUS_TYPE_OFFSET, NTFY_STATUS_TYPE_LENGTH, ENC_BIG_ENDIAN);
+ proto_tree_add_uint_format(parameter_tree, hf_status_id, parameter_tvb, NTFY_STATUS_IDENT_OFFSET, NTFY_STATUS_IDENT_LENGTH,
+ status_id, "Status identification: %u (%s)", status_id,
+ val_to_str_const(status_type * 256 * 256 + status_id, status_type_id_values, "unknown"));
- proto_item_append_text(parameter_item, " (%s)",
- val_to_str_const(status_type * 256 * 256 + status_id, status_type_id_values, "Unknown status information"));
+ proto_item_append_text(parameter_item, " (%s)",
+ val_to_str_const(status_type * 256 * 256 + status_id, status_type_id_values, "Unknown status information"));
}
/*----------------------Notify (RFC)-------------------------------------------*/
/*----------------------TEI Status Indication,Confirm (RFC)--------------------*/
- /* define parameters for TEI Status (Indication,Confirm) Messages */
+ /* define parameters for TEI Status (Indication,Confirm) Messages */
#define TEI_STATUS_ASSIGNED 0x0
#define TEI_STATUS_UNASSIGNED 0x1
static const value_string tei_status_values[] = {
- { TEI_STATUS_ASSIGNED, "TEI is considered assigned by Q.921" },
- { TEI_STATUS_UNASSIGNED, "TEI is considered unassigned by Q.921" },
- { 0, NULL } };
+ { TEI_STATUS_ASSIGNED, "TEI is considered assigned by Q.921" },
+ { TEI_STATUS_UNASSIGNED, "TEI is considered unassigned by Q.921" },
+ { 0, NULL } };
#define TEI_STATUS_OFFSET PARAMETER_VALUE_OFFSET
#define TEI_STATUS_LENGTH 4
@@ -476,9 +476,9 @@ static const value_string tei_status_values[] = {
static void
dissect_tei_status_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
- proto_tree_add_item(parameter_tree, hf_tei_status, parameter_tvb, TEI_STATUS_OFFSET, TEI_STATUS_LENGTH, ENC_BIG_ENDIAN);
- proto_item_append_text(parameter_item, " (%s)",
- val_to_str_const(tvb_get_ntohl(parameter_tvb, TEI_STATUS_OFFSET), tei_status_values, "Unknown TEI status"));
+ proto_tree_add_item(parameter_tree, hf_tei_status, parameter_tvb, TEI_STATUS_OFFSET, TEI_STATUS_LENGTH, ENC_BIG_ENDIAN);
+ proto_item_append_text(parameter_item, " (%s)",
+ val_to_str_const(tvb_get_ntohl(parameter_tvb, TEI_STATUS_OFFSET), tei_status_values, "Unknown TEI status"));
}
/*----------------------TEI Status (RFC)---------------------------------------*/
@@ -487,22 +487,22 @@ dissect_tei_status_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree
#define TEI_DRAFT_OUT_OF_SERVICE 0x1
static const value_string tei_draft_status_values[] = {
- { TEI_DRAFT_IN_SERVICE, "TEI is in service" },
- { TEI_DRAFT_OUT_OF_SERVICE,"TEI is out of service" },
- { 0, NULL } };
+ { TEI_DRAFT_IN_SERVICE, "TEI is in service" },
+ { TEI_DRAFT_OUT_OF_SERVICE,"TEI is out of service" },
+ { 0, NULL } };
#define TEI_STATUS_LENGTH_OFFSET PARAMETER_LENGTH_OFFSET
static void
dissect_draft_tei_status_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
- gint offset;
- offset = tvb_get_ntohs(parameter_tvb, TEI_STATUS_LENGTH_OFFSET) + 8;
- if(tvb_length_remaining(parameter_tvb, offset) > 0 ){
- proto_tree_add_item(parameter_tree, hf_tei_draft_status, parameter_tvb, offset, TEI_STATUS_LENGTH, ENC_BIG_ENDIAN);
- proto_item_append_text(parameter_item, " (%s)",
- val_to_str_const(tvb_get_ntohl(parameter_tvb, offset), tei_draft_status_values, "Unknown TEI Status"));
- }
+ gint offset;
+ offset = tvb_get_ntohs(parameter_tvb, TEI_STATUS_LENGTH_OFFSET) + 8;
+ if(tvb_length_remaining(parameter_tvb, offset) > 0 ){
+ proto_tree_add_item(parameter_tree, hf_tei_draft_status, parameter_tvb, offset, TEI_STATUS_LENGTH, ENC_BIG_ENDIAN);
+ proto_item_append_text(parameter_item, " (%s)",
+ val_to_str_const(tvb_get_ntohl(parameter_tvb, offset), tei_draft_status_values, "Unknown TEI Status"));
+ }
}
/*----------------------TEI Status (Draft)-------------------------------------*/
@@ -511,31 +511,31 @@ dissect_draft_tei_status_parameter(tvbuff_t *parameter_tvb, proto_tree *paramete
static void
dissect_asp_msg_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
- guint16 adaptation_layer_id_length = tvb_get_ntohs(parameter_tvb, PARAMETER_LENGTH_OFFSET);
+ guint16 adaptation_layer_id_length = tvb_get_ntohs(parameter_tvb, PARAMETER_LENGTH_OFFSET);
- proto_tree_add_item(parameter_tree, hf_adaptation_layer_id, parameter_tvb, PARAMETER_VALUE_OFFSET, adaptation_layer_id_length, ENC_ASCII|ENC_NA);
- proto_item_append_text(parameter_item, " (%.*s)", adaptation_layer_id_length,
- tvb_get_ephemeral_string(parameter_tvb, PARAMETER_VALUE_OFFSET, adaptation_layer_id_length));
+ proto_tree_add_item(parameter_tree, hf_adaptation_layer_id, parameter_tvb, PARAMETER_VALUE_OFFSET, adaptation_layer_id_length, ENC_ASCII|ENC_NA);
+ proto_item_append_text(parameter_item, " (%.*s)", adaptation_layer_id_length,
+ tvb_get_ephemeral_string(parameter_tvb, PARAMETER_VALUE_OFFSET, adaptation_layer_id_length));
}
static void
dissect_scn_protocol_id_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
- guint16 id_length = tvb_get_ntohs(parameter_tvb, PARAMETER_LENGTH_OFFSET);
- proto_tree_add_item(parameter_tree, hf_scn_protocol_id, parameter_tvb, PARAMETER_VALUE_OFFSET, id_length, ENC_ASCII|ENC_NA);
- proto_item_append_text(parameter_item, " (%.*s)", id_length,
- tvb_get_ephemeral_string(parameter_tvb, PARAMETER_VALUE_OFFSET, id_length));
+ guint16 id_length = tvb_get_ntohs(parameter_tvb, PARAMETER_LENGTH_OFFSET);
+ proto_tree_add_item(parameter_tree, hf_scn_protocol_id, parameter_tvb, PARAMETER_VALUE_OFFSET, id_length, ENC_ASCII|ENC_NA);
+ proto_item_append_text(parameter_item, " (%.*s)", id_length,
+ tvb_get_ephemeral_string(parameter_tvb, PARAMETER_VALUE_OFFSET, id_length));
}
/*----------------------ASP (Draft)--------------------------------------------*/
/*----------------------ASP Down + Ack (RFC)--------------------------------*/
- /* define reason parameter for Application Server Process Maintenance (ASPM) Messages */
+ /* define reason parameter for Application Server Process Maintenance (ASPM) Messages */
#define ASP_REASON_MGMT 1
static const value_string asp_reason_values[] = {
- { ASP_REASON_MGMT, "Management inhibit" },
- { 0, NULL } };
+ { ASP_REASON_MGMT, "Management inhibit" },
+ { 0, NULL } };
#define ASP_REASON_OFFSET PARAMETER_VALUE_OFFSET
#define ASP_REASON_LENGTH 4
@@ -543,8 +543,8 @@ static const value_string asp_reason_values[] = {
static void
dissect_asp_reason_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
- proto_tree_add_item(parameter_tree, hf_asp_reason, parameter_tvb, ASP_REASON_OFFSET, ASP_REASON_LENGTH, ENC_BIG_ENDIAN);
- proto_item_append_text(parameter_item, " (%s)", val_to_str_const(tvb_get_ntohl(parameter_tvb, ASP_REASON_OFFSET), asp_reason_values, "Unknown ASP down reason"));
+ proto_tree_add_item(parameter_tree, hf_asp_reason, parameter_tvb, ASP_REASON_OFFSET, ASP_REASON_LENGTH, ENC_BIG_ENDIAN);
+ proto_item_append_text(parameter_item, " (%s)", val_to_str_const(tvb_get_ntohl(parameter_tvb, ASP_REASON_OFFSET), asp_reason_values, "Unknown ASP down reason"));
}
@@ -559,11 +559,11 @@ dissect_asp_reason_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree
static void
dissect_heartbeat_data_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
- guint16 heartbeat_data_length;
+ guint16 heartbeat_data_length;
- heartbeat_data_length = tvb_get_ntohs(parameter_tvb, HEARTBEAT_MSG_LENGTH_OFFSET) - HEARTBEAT_MSG_HEADER_LENGTH;
- proto_tree_add_item(parameter_tree, hf_heartbeat_data, parameter_tvb, HEARTBEAT_DATA_OFFSET, heartbeat_data_length, ENC_NA);
- proto_item_append_text(parameter_item, " (%u byte%s)", heartbeat_data_length, plurality(heartbeat_data_length, "", "s"));
+ heartbeat_data_length = tvb_get_ntohs(parameter_tvb, HEARTBEAT_MSG_LENGTH_OFFSET) - HEARTBEAT_MSG_HEADER_LENGTH;
+ proto_tree_add_item(parameter_tree, hf_heartbeat_data, parameter_tvb, HEARTBEAT_DATA_OFFSET, heartbeat_data_length, ENC_NA);
+ proto_item_append_text(parameter_item, " (%u byte%s)", heartbeat_data_length, plurality(heartbeat_data_length, "", "s"));
}
/*----------------------Heartbeat Data (RFC)-----------------------------------*/
@@ -573,9 +573,9 @@ dissect_heartbeat_data_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_
#define LOAD_SHARE_TRAFFIC_MODE_TYPE 2
static const value_string traffic_mode_type_values[] = {
- { OVER_RIDE_TRAFFIC_MODE_TYPE, "Over-ride" },
- { LOAD_SHARE_TRAFFIC_MODE_TYPE, "Load-share" },
- { 0, NULL } };
+ { OVER_RIDE_TRAFFIC_MODE_TYPE, "Over-ride" },
+ { LOAD_SHARE_TRAFFIC_MODE_TYPE, "Load-share" },
+ { 0, NULL } };
#define TRAFFIC_MODE_TYPE_LENGTH 4
#define TRAFFIC_MODE_TYPE_OFFSET PARAMETER_VALUE_OFFSET
@@ -583,9 +583,9 @@ static const value_string traffic_mode_type_values[] = {
static void
dissect_traffic_mode_type_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
- proto_tree_add_item(parameter_tree, hf_traffic_mode_type, parameter_tvb, TRAFFIC_MODE_TYPE_OFFSET, TRAFFIC_MODE_TYPE_LENGTH, ENC_BIG_ENDIAN);
- proto_item_append_text(parameter_item, " (%s)",
- val_to_str_const(tvb_get_ntohl(parameter_tvb, TRAFFIC_MODE_TYPE_OFFSET), traffic_mode_type_values, "Unknown traffic mode type"));
+ proto_tree_add_item(parameter_tree, hf_traffic_mode_type, parameter_tvb, TRAFFIC_MODE_TYPE_OFFSET, TRAFFIC_MODE_TYPE_LENGTH, ENC_BIG_ENDIAN);
+ proto_item_append_text(parameter_item, " (%s)",
+ val_to_str_const(tvb_get_ntohl(parameter_tvb, TRAFFIC_MODE_TYPE_OFFSET), traffic_mode_type_values, "Unknown traffic mode type"));
}
#define INT_RANGE_START_OFFSET PARAMETER_VALUE_OFFSET
@@ -602,17 +602,17 @@ dissect_traffic_mode_type_parameter(tvbuff_t *parameter_tvb, proto_tree *paramet
static void
dissect_integer_range_interface_identifier_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
- guint16 number_of_ranges, range_number, offset;
+ guint16 number_of_ranges, range_number, offset;
- number_of_ranges = (tvb_get_ntohs(parameter_tvb, INT_RANGE_LENGTH_OFFSET) - INT_RANGE_HEADER_LENGTH) / IF_ID_INTERVAL_LENGTH;
- offset = INT_RANGE_START_OFFSET;
- for(range_number = 0; range_number < number_of_ranges; range_number++) {
- proto_tree_add_item(parameter_tree, hf_if_range_start, parameter_tvb, offset + IF_ID_START_OFFSET, IF_ID_START_LENGTH, ENC_BIG_ENDIAN);
- proto_tree_add_item(parameter_tree, hf_if_range_end, parameter_tvb, offset + IF_ID_END_OFFSET, IF_ID_END_LENGTH, ENC_BIG_ENDIAN);
- offset += IF_ID_INTERVAL_LENGTH;
- };
+ number_of_ranges = (tvb_get_ntohs(parameter_tvb, INT_RANGE_LENGTH_OFFSET) - INT_RANGE_HEADER_LENGTH) / IF_ID_INTERVAL_LENGTH;
+ offset = INT_RANGE_START_OFFSET;
+ for(range_number = 0; range_number < number_of_ranges; range_number++) {
+ proto_tree_add_item(parameter_tree, hf_if_range_start, parameter_tvb, offset + IF_ID_START_OFFSET, IF_ID_START_LENGTH, ENC_BIG_ENDIAN);
+ proto_tree_add_item(parameter_tree, hf_if_range_end, parameter_tvb, offset + IF_ID_END_OFFSET, IF_ID_END_LENGTH, ENC_BIG_ENDIAN);
+ offset += IF_ID_INTERVAL_LENGTH;
+ };
- proto_item_append_text(parameter_item, " (%u range%s)", number_of_ranges, plurality(number_of_ranges, "", "s"));
+ proto_item_append_text(parameter_item, " (%u range%s)", number_of_ranges, plurality(number_of_ranges, "", "s"));
}
/*----------------------ASP Active,Inactive (RFC)------------------------------*/
@@ -637,37 +637,37 @@ dissect_integer_range_interface_identifier_parameter(tvbuff_t *parameter_tvb, pr
static void
dissect_layer3_message(tvbuff_t *layer3_data_tvb, proto_tree *v5ua_tree,proto_item *parameter_item, packet_info *pinfo)
{
- guint16 discriminator_offset;
+ guint16 discriminator_offset;
- if(iua_version == DRAFT){
- discriminator_offset = DISCRIMINATOR_OFFSET;
- }
- else{
- discriminator_offset = DISCRIMINATOR_OFFSET + PARAMETER_HEADER_LENGTH;
- }
+ if(iua_version == DRAFT){
+ discriminator_offset = DISCRIMINATOR_OFFSET;
+ }
+ else{
+ discriminator_offset = DISCRIMINATOR_OFFSET + PARAMETER_HEADER_LENGTH;
+ }
- if (tvb_get_guint8(layer3_data_tvb, discriminator_offset) == 0x48){
- guint16 protocol_data_length;
- tvbuff_t *protocol_data_tvb;
+ if (tvb_get_guint8(layer3_data_tvb, discriminator_offset) == 0x48){
+ guint16 protocol_data_length;
+ tvbuff_t *protocol_data_tvb;
- protocol_data_length = tvb_get_ntohs(layer3_data_tvb, PARAMETER_LENGTH_OFFSET) - PARAMETER_HEADER_LENGTH;
- protocol_data_tvb = tvb_new_subset(layer3_data_tvb, PARAMETER_VALUE_OFFSET, protocol_data_length, protocol_data_length);
+ protocol_data_length = tvb_get_ntohs(layer3_data_tvb, PARAMETER_LENGTH_OFFSET) - PARAMETER_HEADER_LENGTH;
+ protocol_data_tvb = tvb_new_subset(layer3_data_tvb, PARAMETER_VALUE_OFFSET, protocol_data_length, protocol_data_length);
- call_dissector(v52_handle, protocol_data_tvb, pinfo, v5ua_tree);
+ call_dissector(v52_handle, protocol_data_tvb, pinfo, v5ua_tree);
- proto_item_append_text(parameter_item, " (%u byte%s)", protocol_data_length, plurality(protocol_data_length, "", "s"));
+ proto_item_append_text(parameter_item, " (%u byte%s)", protocol_data_length, plurality(protocol_data_length, "", "s"));
- }
- else{
- guint16 protocol_data_length;
- tvbuff_t *protocol_data_tvb;
+ }
+ else{
+ guint16 protocol_data_length;
+ tvbuff_t *protocol_data_tvb;
- protocol_data_length = tvb_get_ntohs(layer3_data_tvb, PARAMETER_LENGTH_OFFSET) - PARAMETER_HEADER_LENGTH;
- protocol_data_tvb = tvb_new_subset(layer3_data_tvb, PARAMETER_VALUE_OFFSET, protocol_data_length, protocol_data_length);
- call_dissector(q931_handle, protocol_data_tvb, pinfo, v5ua_tree);
+ protocol_data_length = tvb_get_ntohs(layer3_data_tvb, PARAMETER_LENGTH_OFFSET) - PARAMETER_HEADER_LENGTH;
+ protocol_data_tvb = tvb_new_subset(layer3_data_tvb, PARAMETER_VALUE_OFFSET, protocol_data_length, protocol_data_length);
+ call_dissector(q931_handle, protocol_data_tvb, pinfo, v5ua_tree);
- proto_item_append_text(parameter_item, " (%u byte%s)", protocol_data_length, plurality(protocol_data_length, "", "s"));
- }
+ proto_item_append_text(parameter_item, " (%u byte%s)", protocol_data_length, plurality(protocol_data_length, "", "s"));
+ }
}
/*----------------------Data Request,Indication (Draft,RFC)------------------------*/
@@ -680,18 +680,18 @@ dissect_layer3_message(tvbuff_t *layer3_data_tvb, proto_tree *v5ua_tree,proto_it
/*----------------------Release Indication, Request (Draft,RFC)----------------*/
- /* define parameters for Release Request and Indication Messages */
+ /* define parameters for Release Request and Indication Messages */
#define RELEASE_MGMT 0x0
#define RELEASE_PHYS 0x1
#define RELEASE_DM 0x2
#define RELEASE_OTHER 0x3
static const value_string release_reason_values[] = {
- { RELEASE_MGMT, "Management layer generated release" },
- { RELEASE_PHYS, "Physical layer alarm generated release" },
- { RELEASE_DM, "Specific to a request" },
- { RELEASE_OTHER, "Other reason" },
- { 0, NULL } };
+ { RELEASE_MGMT, "Management layer generated release" },
+ { RELEASE_PHYS, "Physical layer alarm generated release" },
+ { RELEASE_DM, "Specific to a request" },
+ { RELEASE_OTHER, "Other reason" },
+ { 0, NULL } };
#define RELEASE_REASON_LENGTH_OFFSET PARAMETER_LENGTH_OFFSET
#define RELEASE_REASON_OFFSET PARAMETER_VALUE_OFFSET
@@ -700,12 +700,12 @@ static const value_string release_reason_values[] = {
static void
dissect_release_reason_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
- gint offset = RELEASE_REASON_OFFSET;
- if(iua_version == DRAFT) offset = tvb_get_ntohs(parameter_tvb, RELEASE_REASON_LENGTH_OFFSET)+8;
- proto_tree_add_item(parameter_tree, hf_release_reason, parameter_tvb, offset, RELEASE_REASON_LENGTH, ENC_BIG_ENDIAN);
- if(iua_version != DRAFT)
- proto_item_append_text(parameter_item, " (%s)",
- val_to_str_const(tvb_get_ntohl(parameter_tvb, offset), release_reason_values, "Unknown release reason"));
+ gint offset = RELEASE_REASON_OFFSET;
+ if(iua_version == DRAFT) offset = tvb_get_ntohs(parameter_tvb, RELEASE_REASON_LENGTH_OFFSET)+8;
+ proto_tree_add_item(parameter_tree, hf_release_reason, parameter_tvb, offset, RELEASE_REASON_LENGTH, ENC_BIG_ENDIAN);
+ if(iua_version != DRAFT)
+ proto_item_append_text(parameter_item, " (%s)",
+ val_to_str_const(tvb_get_ntohl(parameter_tvb, offset), release_reason_values, "Unknown release reason"));
}
/*----------------------Release Indication,Request (Draft,RFC)-----------------*/
@@ -717,14 +717,14 @@ dissect_release_reason_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_
/*----------------------Link Status Indication (Draft,RFC)---------------------*/
- /* define parameters for Link Status Indication */
+ /* define parameters for Link Status Indication */
#define LINK_STATUS_OPERTIONAL 0x0
#define LINK_STATUS_NON_OPERTIONAL 0x1
static const value_string link_status_values[] = {
- { LINK_STATUS_OPERTIONAL, "Link operational" },
- { LINK_STATUS_NON_OPERTIONAL, "Link not operational" },
- { 0, NULL } };
+ { LINK_STATUS_OPERTIONAL, "Link operational" },
+ { LINK_STATUS_NON_OPERTIONAL, "Link not operational" },
+ { 0, NULL } };
#define LINK_STATUS_OFFSET PARAMETER_VALUE_OFFSET
#define LINK_STATUS_LENGTH 4
@@ -732,26 +732,26 @@ static const value_string link_status_values[] = {
static void
dissect_link_status_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
- proto_tree_add_item(parameter_tree, hf_link_status, parameter_tvb, LINK_STATUS_OFFSET, LINK_STATUS_LENGTH, ENC_BIG_ENDIAN);
- proto_item_append_text(parameter_item, " (%s)",
- val_to_str_const(tvb_get_ntohl(parameter_tvb, LINK_STATUS_OFFSET),link_status_values, "Unknown Link status"));
+ proto_tree_add_item(parameter_tree, hf_link_status, parameter_tvb, LINK_STATUS_OFFSET, LINK_STATUS_LENGTH, ENC_BIG_ENDIAN);
+ proto_item_append_text(parameter_item, " (%s)",
+ val_to_str_const(tvb_get_ntohl(parameter_tvb, LINK_STATUS_OFFSET),link_status_values, "Unknown Link status"));
-link_status_operational = tvb_get_ntohl(parameter_tvb, LINK_STATUS_OFFSET);
+ link_status_operational = tvb_get_ntohl(parameter_tvb, LINK_STATUS_OFFSET);
}
/*----------------------Link Status Indication (Draft,RFC)---------------------*/
/*----------------------Sa-Bit (Draft,RFC)-------------------------------------*/
- /* define parameter for sa-bit message */
+ /* define parameter for sa-bit message */
#define SA_BIT_ID_ZERO 0x0
#define SA_BIT_ID_ONE 0x1
#define SA_BIT_VALUE_SA7 0x7
static const value_string sa_bit_values[] = {
- { SA_BIT_ID_ZERO, "set value ZERO" },
- { SA_BIT_ID_ONE, "set value ONE" },
- { SA_BIT_VALUE_SA7, "Addresses the Sa7 Bit" },
- { 0, NULL } };
+ { SA_BIT_ID_ZERO, "set value ZERO" },
+ { SA_BIT_ID_ONE, "set value ONE" },
+ { SA_BIT_VALUE_SA7, "Addresses the Sa7 Bit" },
+ { 0, NULL } };
#define SA_BIT_ID_OFFSET PARAMETER_VALUE_OFFSET
#define SA_BIT_ID_LENGTH 2
@@ -761,13 +761,13 @@ static const value_string sa_bit_values[] = {
static void
dissect_sa_bit_status_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
- proto_tree_add_item(parameter_tree, hf_sa_bit_id, parameter_tvb, SA_BIT_ID_OFFSET, SA_BIT_ID_LENGTH, ENC_BIG_ENDIAN);
- proto_tree_add_item(parameter_tree, hf_sa_bit_value, parameter_tvb, SA_BIT_VALUE_OFFSET, SA_BIT_VALUE_LENGTH, ENC_BIG_ENDIAN);
- proto_item_append_text(parameter_item, " (%s %s)",
- val_to_str_const(tvb_get_ntohs(parameter_tvb, SA_BIT_ID_OFFSET), sa_bit_values, "unknown"),
- val_to_str_const(tvb_get_ntohs(parameter_tvb, SA_BIT_VALUE_OFFSET), sa_bit_values, "unknown Bit"));
+ proto_tree_add_item(parameter_tree, hf_sa_bit_id, parameter_tvb, SA_BIT_ID_OFFSET, SA_BIT_ID_LENGTH, ENC_BIG_ENDIAN);
+ proto_tree_add_item(parameter_tree, hf_sa_bit_value, parameter_tvb, SA_BIT_VALUE_OFFSET, SA_BIT_VALUE_LENGTH, ENC_BIG_ENDIAN);
+ proto_item_append_text(parameter_item, " (%s %s)",
+ val_to_str_const(tvb_get_ntohs(parameter_tvb, SA_BIT_ID_OFFSET), sa_bit_values, "unknown"),
+ val_to_str_const(tvb_get_ntohs(parameter_tvb, SA_BIT_VALUE_OFFSET), sa_bit_values, "unknown Bit"));
-sa_bit_id = tvb_get_ntohs(parameter_tvb, SA_BIT_VALUE_OFFSET);
+ sa_bit_id = tvb_get_ntohs(parameter_tvb, SA_BIT_VALUE_OFFSET);
}
/*----------------------Sa-Bit (Draft,RFC)-------------------------------------*/
@@ -776,8 +776,8 @@ sa_bit_id = tvb_get_ntohs(parameter_tvb, SA_BIT_VALUE_OFFSET);
#define ERROR_REASON_OVERLOAD 0x1
static const value_string error_reason_values[] = {
- { ERROR_REASON_OVERLOAD, "C-Channel is in overload state" },
- { 0, NULL } };
+ { ERROR_REASON_OVERLOAD, "C-Channel is in overload state" },
+ { 0, NULL } };
#define ERROR_REASON_LENGTH 4
#define ERROR_REASON_OFFSET PARAMETER_VALUE_OFFSET
@@ -785,9 +785,9 @@ static const value_string error_reason_values[] = {
static void
dissect_error_indication_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
- proto_tree_add_item(parameter_tree, hf_error_reason, parameter_tvb, ERROR_REASON_OFFSET, ERROR_REASON_LENGTH, ENC_BIG_ENDIAN);
- proto_item_append_text(parameter_item, " (%s)",
- val_to_str_const(tvb_get_ntohl(parameter_tvb, ERROR_REASON_OFFSET), error_reason_values, "unknown"));
+ proto_tree_add_item(parameter_tree, hf_error_reason, parameter_tvb, ERROR_REASON_OFFSET, ERROR_REASON_LENGTH, ENC_BIG_ENDIAN);
+ proto_item_append_text(parameter_item, " (%s)",
+ val_to_str_const(tvb_get_ntohl(parameter_tvb, ERROR_REASON_OFFSET), error_reason_values, "unknown"));
}
/*----------------------Error Indication (RFC)---------------------------------*/
@@ -798,8 +798,8 @@ dissect_error_indication_parameter(tvbuff_t *parameter_tvb, proto_tree *paramete
static void
dissect_asp_identifier_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
- proto_tree_add_item(parameter_tree, hf_asp_identifier, parameter_tvb, ASP_IDENTIFIER_OFFSET, ASP_IDENTIFIER_LENGTH, ENC_BIG_ENDIAN);
- proto_item_append_text(parameter_item, " (%d) ",tvb_get_ntohl(parameter_tvb,ASP_IDENTIFIER_OFFSET));
+ proto_tree_add_item(parameter_tree, hf_asp_identifier, parameter_tvb, ASP_IDENTIFIER_OFFSET, ASP_IDENTIFIER_LENGTH, ENC_BIG_ENDIAN);
+ proto_item_append_text(parameter_item, " (%d) ",tvb_get_ntohl(parameter_tvb,ASP_IDENTIFIER_OFFSET));
}
/*--------------------------ASP identifier-------------------------------------*/
@@ -808,16 +808,16 @@ dissect_asp_identifier_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_
static void
dissect_info_string_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
- guint16 info_string_length;
-
- info_string_length = tvb_get_ntohs(parameter_tvb, PARAMETER_LENGTH_OFFSET);
- if(iua_version == DRAFT) info_string_length += 4;
- if(info_string_length > 4){
- info_string_length -= PARAMETER_HEADER_LENGTH;
- proto_tree_add_item(parameter_tree, hf_info_string, parameter_tvb, INFO_STRING_OFFSET, info_string_length, ENC_ASCII|ENC_NA);
- proto_item_append_text(parameter_item, " (%.*s)", info_string_length,
- tvb_get_ephemeral_string(parameter_tvb, INFO_STRING_OFFSET, info_string_length));
- }
+ guint16 info_string_length;
+
+ info_string_length = tvb_get_ntohs(parameter_tvb, PARAMETER_LENGTH_OFFSET);
+ if(iua_version == DRAFT) info_string_length += 4;
+ if(info_string_length > 4){
+ info_string_length -= PARAMETER_HEADER_LENGTH;
+ proto_tree_add_item(parameter_tree, hf_info_string, parameter_tvb, INFO_STRING_OFFSET, info_string_length, ENC_ASCII|ENC_NA);
+ proto_item_append_text(parameter_item, " (%.*s)", info_string_length,
+ tvb_get_ephemeral_string(parameter_tvb, INFO_STRING_OFFSET, info_string_length));
+ }
}
@@ -825,17 +825,17 @@ static void
dissect_unknown_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
- guint16 parameter_value_length;
+ guint16 parameter_value_length;
- parameter_value_length = tvb_get_ntohs(parameter_tvb, PARAMETER_LENGTH_OFFSET) - PARAMETER_HEADER_LENGTH;
- if (parameter_value_length > 0)
- proto_tree_add_item(parameter_tree, hf_parameter_value, parameter_tvb, PARAMETER_VALUE_OFFSET, parameter_value_length, ENC_NA);
+ parameter_value_length = tvb_get_ntohs(parameter_tvb, PARAMETER_LENGTH_OFFSET) - PARAMETER_HEADER_LENGTH;
+ if (parameter_value_length > 0)
+ proto_tree_add_item(parameter_tree, hf_parameter_value, parameter_tvb, PARAMETER_VALUE_OFFSET, parameter_value_length, ENC_NA);
- proto_item_append_text(parameter_item, " with tag %u and %u byte%s value",
- tvb_get_ntohs(parameter_tvb, PARAMETER_TAG_OFFSET), parameter_value_length, plurality(parameter_value_length, "", "s"));
+ proto_item_append_text(parameter_item, " with tag %u and %u byte%s value",
+ tvb_get_ntohs(parameter_tvb, PARAMETER_TAG_OFFSET), parameter_value_length, plurality(parameter_value_length, "", "s"));
}
-#define Reserved_TAG 0x00
+#define Reserved_TAG 0x00
#define INT_INTERFACE_IDENTIFIER_PARAMETER_TAG 0x01
#define ASP_MSG_PARAMETER_TAG 0x02
#define TEXT_INTERFACE_IDENTIFIER_PARAMETER_TAG 0x03
@@ -858,211 +858,211 @@ dissect_unknown_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, p
#define ERROR_INDICATION_PARAMETER_TAG 0x84
static const value_string parameter_tag_values[] = {
- { Reserved_TAG, "Reserved" },
- { INT_INTERFACE_IDENTIFIER_PARAMETER_TAG, "Interface Identifier (integer)" },
- { TEXT_INTERFACE_IDENTIFIER_PARAMETER_TAG, "Interface Identifier (text)" },
- { INFO_PARAMETER_TAG, "Info string" },
- { DLCI_PARAMETER_TAG, "DLCI" },
- { DIAGNOSTIC_INFORMATION_PARAMETER_TAG, "Diagnostic information" },
- { INTEGER_RANGE_INTERFACE_IDENTIFIER_PARAMETER_TAG, "Interface Identifier Range" },
- { HEARTBEAT_DATA_PARAMETER_TAG, "Hearbeat data" },
- { ASP_DOWN_REASON_PARAMETER_TAG, "ASP DOWN Reason" },
- { TRAFFIC_MODE_TYPE_PARAMETER_TAG, "Traffic mode type" },
- { ERROR_CODE_PARAMETER_TAG, "Error code" },
- { STATUS_TYPE_INDENTIFICATION_PARAMETER_TAG, "Status type/identification" },
- { PROTOCOL_DATA_PARAMETER_TAG, "Protocol Data" },
- { RELEASE_REASON_PARAMETER_TAG, "Release Reason" },
- { TEI_STATUS_PARAMETER_TAG, "TEI status" },
- { ASP_IDENTIFIER_PARAMETER_TAG, "ASP Identifier" },
- { NOT_USED_IN_IUA_PARAMETER_TAG, "Not used in IUA" },
- { LINK_STATUS_PARAMETER_TAG, "Link status" },
- { SA_BIT_STATUS_PARAMETER_TAG, "SA-Bit status" },
- { ERROR_INDICATION_PARAMETER_TAG, "Error reason" },
- { 0, NULL } };
+ { Reserved_TAG, "Reserved" },
+ { INT_INTERFACE_IDENTIFIER_PARAMETER_TAG, "Interface Identifier (integer)" },
+ { TEXT_INTERFACE_IDENTIFIER_PARAMETER_TAG, "Interface Identifier (text)" },
+ { INFO_PARAMETER_TAG, "Info string" },
+ { DLCI_PARAMETER_TAG, "DLCI" },
+ { DIAGNOSTIC_INFORMATION_PARAMETER_TAG, "Diagnostic information" },
+ { INTEGER_RANGE_INTERFACE_IDENTIFIER_PARAMETER_TAG, "Interface Identifier Range" },
+ { HEARTBEAT_DATA_PARAMETER_TAG, "Hearbeat data" },
+ { ASP_DOWN_REASON_PARAMETER_TAG, "ASP DOWN Reason" },
+ { TRAFFIC_MODE_TYPE_PARAMETER_TAG, "Traffic mode type" },
+ { ERROR_CODE_PARAMETER_TAG, "Error code" },
+ { STATUS_TYPE_INDENTIFICATION_PARAMETER_TAG, "Status type/identification" },
+ { PROTOCOL_DATA_PARAMETER_TAG, "Protocol Data" },
+ { RELEASE_REASON_PARAMETER_TAG, "Release Reason" },
+ { TEI_STATUS_PARAMETER_TAG, "TEI status" },
+ { ASP_IDENTIFIER_PARAMETER_TAG, "ASP Identifier" },
+ { NOT_USED_IN_IUA_PARAMETER_TAG, "Not used in IUA" },
+ { LINK_STATUS_PARAMETER_TAG, "Link status" },
+ { SA_BIT_STATUS_PARAMETER_TAG, "SA-Bit status" },
+ { ERROR_INDICATION_PARAMETER_TAG, "Error reason" },
+ { 0, NULL } };
static const value_string parameter_tag_draft_values[] = {
- { INT_INTERFACE_IDENTIFIER_PARAMETER_TAG, "V5UA Interface Identifier (int)" },
- { ASP_MSG_PARAMETER_TAG, "ASP Adaption Layer ID" },
- { TEXT_INTERFACE_IDENTIFIER_PARAMETER_TAG, "SCN Protocol Identifier" },
- { INFO_PARAMETER_TAG, "Info" },
- { PROTOCOL_DATA_PARAMETER_TAG, "Protocol Data" },
- { LINK_STATUS_PARAMETER_TAG, "Link status" },
- { SA_BIT_STATUS_PARAMETER_TAG, "SA-Bit status" },
- { ERROR_INDICATION_PARAMETER_TAG, "Error reason" },
- { 0, NULL } };
+ { INT_INTERFACE_IDENTIFIER_PARAMETER_TAG, "V5UA Interface Identifier (int)" },
+ { ASP_MSG_PARAMETER_TAG, "ASP Adaption Layer ID" },
+ { TEXT_INTERFACE_IDENTIFIER_PARAMETER_TAG, "SCN Protocol Identifier" },
+ { INFO_PARAMETER_TAG, "Info" },
+ { PROTOCOL_DATA_PARAMETER_TAG, "Protocol Data" },
+ { LINK_STATUS_PARAMETER_TAG, "Link status" },
+ { SA_BIT_STATUS_PARAMETER_TAG, "SA-Bit status" },
+ { ERROR_INDICATION_PARAMETER_TAG, "Error reason" },
+ { 0, NULL } };
static void
dissect_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, proto_tree *v5ua_tree)
{
- guint16 tag, length, padding_length;
- proto_item *parameter_item;
- proto_tree *parameter_tree;
-
- /* extract tag and length from the parameter */
- tag = tvb_get_ntohs(parameter_tvb, PARAMETER_TAG_OFFSET);
- length = tvb_get_ntohs(parameter_tvb, PARAMETER_LENGTH_OFFSET);
- /* on IUA-Draft messages the message length not including the message header */
- if((iua_version==DRAFT)&&(tag<=0x4)){
- /* at V5UA Header, length of header and length of DLCI+EFA must be added */
- if(tag==0x1) length += 8;
- /* at ASP message tags only length of header must be added */
- else if(tag<=0x4) length += PARAMETER_HEADER_LENGTH;
- /* for following message-tags are no length information available. Only in common msg header */
+ guint16 tag, length, padding_length;
+ proto_item *parameter_item;
+ proto_tree *parameter_tree;
+
+ /* extract tag and length from the parameter */
+ tag = tvb_get_ntohs(parameter_tvb, PARAMETER_TAG_OFFSET);
+ length = tvb_get_ntohs(parameter_tvb, PARAMETER_LENGTH_OFFSET);
+ /* on IUA-Draft messages the message length not including the message header */
+ if((iua_version==DRAFT)&&(tag<=0x4)){
+ /* at V5UA Header, length of header and length of DLCI+EFA must be added */
+ if(tag==0x1) length += 8;
+ /* at ASP message tags only length of header must be added */
+ else if(tag<=0x4) length += PARAMETER_HEADER_LENGTH;
+ /* for following message-tags are no length information available. Only in common msg header */
if((msg_class==0 || msg_class==1 || msg_class==9) && msg_type<=10)
- length = msg_length;
- }
- padding_length = tvb_length(parameter_tvb) - length;
- paddingl = padding_length;
-
- /* create proto_tree stuff */
- switch(iua_version){
- case RFC:
- parameter_item = proto_tree_add_text(v5ua_tree, parameter_tvb, PARAMETER_HEADER_OFFSET, tvb_length(parameter_tvb), "%s",
- val_to_str_const(tag, parameter_tag_values, "Unknown parameter"));
- parameter_tree = proto_item_add_subtree(parameter_item, ett_v5ua_parameter);
- /* add tag to the v5ua tree */
- proto_tree_add_item(parameter_tree, hf_parameter_tag, parameter_tvb, PARAMETER_TAG_OFFSET, PARAMETER_TAG_LENGTH, ENC_BIG_ENDIAN);
- break;
- case DRAFT:
- default:
- parameter_item = proto_tree_add_text(v5ua_tree, parameter_tvb, PARAMETER_HEADER_OFFSET, tvb_length(parameter_tvb), "%s",
- val_to_str_const(tag, parameter_tag_draft_values, "Unknown parameter"));
- parameter_tree = proto_item_add_subtree(parameter_item, ett_v5ua_parameter);
-
- /* add tag to the v5ua tree */
- proto_tree_add_item(parameter_tree, hf_parameter_tag_draft, parameter_tvb, PARAMETER_TAG_OFFSET, PARAMETER_TAG_LENGTH, ENC_BIG_ENDIAN);
- break;
- };
-
- /* add length to the v5ua tree */
- proto_tree_add_item(parameter_tree, hf_parameter_length, parameter_tvb, PARAMETER_LENGTH_OFFSET, PARAMETER_LENGTH_LENGTH, ENC_BIG_ENDIAN);
-
- switch(tag) {
- case INT_INTERFACE_IDENTIFIER_PARAMETER_TAG:
- if(iua_version == RFC) dissect_int_interface_identifier_parameter(parameter_tvb, parameter_tree, parameter_item);
- if(iua_version == DRAFT){
- dissect_int_interface_identifier_parameter(parameter_tvb, parameter_tree, parameter_item);
- dissect_dlci_parameter(parameter_tvb, parameter_tree, parameter_item, pinfo);
-
- /* for the following parameters no tag- and length-informations available. Parameters must be dissect with info from common msg header */
- if(msg_class==0 && msg_type==0) dissect_draft_error_code_parameter(parameter_tvb, parameter_tree);
- if(msg_class==1) dissect_draft_tei_status_parameter(parameter_tvb, parameter_tree, parameter_item);
- if(msg_class==9){
- if(msg_type==1||msg_type==2||msg_type==3||msg_type==4){
- guint16 length_2, offset;
- tvbuff_t *layer3_data_tvb;
- offset = tvb_get_ntohs(parameter_tvb, PARAMETER_LENGTH_OFFSET) + 8;
- length_2 = msg_length - offset;
- if(length_2 > 0){
- if(tvb_get_guint8(parameter_tvb, offset) == 0x48){
- layer3_data_tvb = tvb_new_subset(parameter_tvb, offset, length_2, length_2);
- dissect_layer3_message(layer3_data_tvb, v5ua_tree, parameter_item, pinfo);
- }
- }
- }
- else if(msg_type==8||msg_type==10) dissect_release_reason_parameter(parameter_tvb, parameter_tree, parameter_item);
- }
- }
- break;
- case ASP_MSG_PARAMETER_TAG:
- dissect_asp_msg_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case TEXT_INTERFACE_IDENTIFIER_PARAMETER_TAG:
- if(iua_version == RFC)
- dissect_text_interface_identifier_parameter(parameter_tvb, parameter_tree, parameter_item);
- if(iua_version == DRAFT)
- dissect_scn_protocol_id_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case INFO_PARAMETER_TAG:
- dissect_info_string_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case DLCI_PARAMETER_TAG:
- dissect_dlci_parameter(parameter_tvb, parameter_tree, parameter_item, pinfo);
- break;
- case DIAGNOSTIC_INFORMATION_PARAMETER_TAG:
- dissect_diagnostic_information_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case INTEGER_RANGE_INTERFACE_IDENTIFIER_PARAMETER_TAG:
- dissect_integer_range_interface_identifier_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case HEARTBEAT_DATA_PARAMETER_TAG:
- dissect_heartbeat_data_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case ASP_DOWN_REASON_PARAMETER_TAG:
- dissect_asp_reason_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case TRAFFIC_MODE_TYPE_PARAMETER_TAG:
- dissect_traffic_mode_type_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case ERROR_CODE_PARAMETER_TAG:
- dissect_error_code_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case STATUS_TYPE_INDENTIFICATION_PARAMETER_TAG:
- dissect_status_type_identification_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PROTOCOL_DATA_PARAMETER_TAG:
- dissect_layer3_message(parameter_tvb, v5ua_tree, parameter_item, pinfo);
- break;
- case RELEASE_REASON_PARAMETER_TAG:
- dissect_release_reason_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case TEI_STATUS_PARAMETER_TAG:
- dissect_tei_status_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case ASP_IDENTIFIER_PARAMETER_TAG:
- dissect_asp_identifier_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case LINK_STATUS_PARAMETER_TAG:
- dissect_link_status_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case SA_BIT_STATUS_PARAMETER_TAG:
- dissect_sa_bit_status_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case ERROR_INDICATION_PARAMETER_TAG:
- dissect_error_indication_parameter( parameter_tvb, parameter_tree, parameter_item);
- break;
- default:
- dissect_unknown_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- };
-
- if (padding_length > 0){
- proto_tree_add_item(parameter_tree, hf_parameter_padding, parameter_tvb, PARAMETER_HEADER_OFFSET + length, padding_length, ENC_NA);
- }
+ length = msg_length;
+ }
+ padding_length = tvb_length(parameter_tvb) - length;
+ paddingl = padding_length;
+
+ /* create proto_tree stuff */
+ switch(iua_version){
+ case RFC:
+ parameter_item = proto_tree_add_text(v5ua_tree, parameter_tvb, PARAMETER_HEADER_OFFSET, tvb_length(parameter_tvb), "%s",
+ val_to_str_const(tag, parameter_tag_values, "Unknown parameter"));
+ parameter_tree = proto_item_add_subtree(parameter_item, ett_v5ua_parameter);
+ /* add tag to the v5ua tree */
+ proto_tree_add_item(parameter_tree, hf_parameter_tag, parameter_tvb, PARAMETER_TAG_OFFSET, PARAMETER_TAG_LENGTH, ENC_BIG_ENDIAN);
+ break;
+ case DRAFT:
+ default:
+ parameter_item = proto_tree_add_text(v5ua_tree, parameter_tvb, PARAMETER_HEADER_OFFSET, tvb_length(parameter_tvb), "%s",
+ val_to_str_const(tag, parameter_tag_draft_values, "Unknown parameter"));
+ parameter_tree = proto_item_add_subtree(parameter_item, ett_v5ua_parameter);
+
+ /* add tag to the v5ua tree */
+ proto_tree_add_item(parameter_tree, hf_parameter_tag_draft, parameter_tvb, PARAMETER_TAG_OFFSET, PARAMETER_TAG_LENGTH, ENC_BIG_ENDIAN);
+ break;
+ };
+
+ /* add length to the v5ua tree */
+ proto_tree_add_item(parameter_tree, hf_parameter_length, parameter_tvb, PARAMETER_LENGTH_OFFSET, PARAMETER_LENGTH_LENGTH, ENC_BIG_ENDIAN);
+
+ switch(tag) {
+ case INT_INTERFACE_IDENTIFIER_PARAMETER_TAG:
+ if(iua_version == RFC) dissect_int_interface_identifier_parameter(parameter_tvb, parameter_tree, parameter_item);
+ if(iua_version == DRAFT){
+ dissect_int_interface_identifier_parameter(parameter_tvb, parameter_tree, parameter_item);
+ dissect_dlci_parameter(parameter_tvb, parameter_tree, parameter_item, pinfo);
+
+ /* for the following parameters no tag- and length-informations available. Parameters must be dissect with info from common msg header */
+ if(msg_class==0 && msg_type==0) dissect_draft_error_code_parameter(parameter_tvb, parameter_tree);
+ if(msg_class==1) dissect_draft_tei_status_parameter(parameter_tvb, parameter_tree, parameter_item);
+ if(msg_class==9){
+ if(msg_type==1||msg_type==2||msg_type==3||msg_type==4){
+ guint16 length_2, offset;
+ tvbuff_t *layer3_data_tvb;
+ offset = tvb_get_ntohs(parameter_tvb, PARAMETER_LENGTH_OFFSET) + 8;
+ length_2 = msg_length - offset;
+ if(length_2 > 0){
+ if(tvb_get_guint8(parameter_tvb, offset) == 0x48){
+ layer3_data_tvb = tvb_new_subset(parameter_tvb, offset, length_2, length_2);
+ dissect_layer3_message(layer3_data_tvb, v5ua_tree, parameter_item, pinfo);
+ }
+ }
+ }
+ else if(msg_type==8||msg_type==10) dissect_release_reason_parameter(parameter_tvb, parameter_tree, parameter_item);
+ }
+ }
+ break;
+ case ASP_MSG_PARAMETER_TAG:
+ dissect_asp_msg_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case TEXT_INTERFACE_IDENTIFIER_PARAMETER_TAG:
+ if(iua_version == RFC)
+ dissect_text_interface_identifier_parameter(parameter_tvb, parameter_tree, parameter_item);
+ if(iua_version == DRAFT)
+ dissect_scn_protocol_id_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case INFO_PARAMETER_TAG:
+ dissect_info_string_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case DLCI_PARAMETER_TAG:
+ dissect_dlci_parameter(parameter_tvb, parameter_tree, parameter_item, pinfo);
+ break;
+ case DIAGNOSTIC_INFORMATION_PARAMETER_TAG:
+ dissect_diagnostic_information_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case INTEGER_RANGE_INTERFACE_IDENTIFIER_PARAMETER_TAG:
+ dissect_integer_range_interface_identifier_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case HEARTBEAT_DATA_PARAMETER_TAG:
+ dissect_heartbeat_data_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case ASP_DOWN_REASON_PARAMETER_TAG:
+ dissect_asp_reason_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case TRAFFIC_MODE_TYPE_PARAMETER_TAG:
+ dissect_traffic_mode_type_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case ERROR_CODE_PARAMETER_TAG:
+ dissect_error_code_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case STATUS_TYPE_INDENTIFICATION_PARAMETER_TAG:
+ dissect_status_type_identification_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PROTOCOL_DATA_PARAMETER_TAG:
+ dissect_layer3_message(parameter_tvb, v5ua_tree, parameter_item, pinfo);
+ break;
+ case RELEASE_REASON_PARAMETER_TAG:
+ dissect_release_reason_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case TEI_STATUS_PARAMETER_TAG:
+ dissect_tei_status_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case ASP_IDENTIFIER_PARAMETER_TAG:
+ dissect_asp_identifier_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case LINK_STATUS_PARAMETER_TAG:
+ dissect_link_status_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case SA_BIT_STATUS_PARAMETER_TAG:
+ dissect_sa_bit_status_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case ERROR_INDICATION_PARAMETER_TAG:
+ dissect_error_indication_parameter( parameter_tvb, parameter_tree, parameter_item);
+ break;
+ default:
+ dissect_unknown_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ };
+
+ if (padding_length > 0){
+ proto_tree_add_item(parameter_tree, hf_parameter_padding, parameter_tvb, PARAMETER_HEADER_OFFSET + length, padding_length, ENC_NA);
+ }
}
/* dissect the V5UA-Parameters into subsets which are separated by Tag-Length-Header and call up the dissector for the subsets */
static void
dissect_parameters(tvbuff_t *parameters_tvb, packet_info *pinfo, proto_tree *tree _U_, proto_tree *v5ua_tree)
{
- gint tag, offset, length, total_length, remaining_length;
- tvbuff_t *parameter_tvb;
-
-
- offset = 0;
- while((remaining_length = tvb_length_remaining(parameters_tvb, offset))) {
- tag = tvb_get_ntohs(parameters_tvb, offset + PARAMETER_TAG_OFFSET);
- length = tvb_get_ntohs(parameters_tvb, offset + PARAMETER_LENGTH_OFFSET);
- if(iua_version==DRAFT){
- if(tag==0x1) length += 8; /* V5UA Header */
- else if(tag<=0x4) length += PARAMETER_HEADER_LENGTH; /* ASP MSGs */
-
- /* add the parameters which are not separated by tag-length-header to the V5UA header */
- if((msg_class==0 || msg_class==1 || msg_class==9)&&msg_type<=10)
- length = msg_length;
- }
- total_length = ADD_PADDING(length);
- if (remaining_length >= length)
- total_length = MIN(total_length, remaining_length);
- /* create a tvb for the parameter including the padding bytes */
- parameter_tvb = tvb_new_subset(parameters_tvb, offset, total_length, total_length);
- dissect_parameter(parameter_tvb, pinfo, v5ua_tree);
- /* get rid of the handled parameter */
- offset += total_length;
- }
+ gint tag, offset, length, total_length, remaining_length;
+ tvbuff_t *parameter_tvb;
+
+
+ offset = 0;
+ while((remaining_length = tvb_length_remaining(parameters_tvb, offset))) {
+ tag = tvb_get_ntohs(parameters_tvb, offset + PARAMETER_TAG_OFFSET);
+ length = tvb_get_ntohs(parameters_tvb, offset + PARAMETER_LENGTH_OFFSET);
+ if(iua_version==DRAFT){
+ if(tag==0x1) length += 8; /* V5UA Header */
+ else if(tag<=0x4) length += PARAMETER_HEADER_LENGTH; /* ASP MSGs */
+
+ /* add the parameters which are not separated by tag-length-header to the V5UA header */
+ if((msg_class==0 || msg_class==1 || msg_class==9)&&msg_type<=10)
+ length = msg_length;
+ }
+ total_length = ADD_PADDING(length);
+ if (remaining_length >= length)
+ total_length = MIN(total_length, remaining_length);
+ /* create a tvb for the parameter including the padding bytes */
+ parameter_tvb = tvb_new_subset(parameters_tvb, offset, total_length, total_length);
+ dissect_parameter(parameter_tvb, pinfo, v5ua_tree);
+ /* get rid of the handled parameter */
+ offset += total_length;
+ }
}
- /* define the common header fields of V5UA MSG */
+ /* define the common header fields of V5UA MSG */
#define COMMON_HEADER_VERSION_LENGTH 1
#define COMMON_HEADER_RESERVED_LENGTH 1
#define COMMON_HEADER_MSG_CLASS_LENGTH 1
@@ -1072,7 +1072,7 @@ dissect_parameters(tvbuff_t *parameters_tvb, packet_info *pinfo, proto_tree *tre
COMMON_HEADER_MSG_CLASS_LENGTH + COMMON_HEADER_MSG_TYPE_LENGTH +\
COMMON_HEADER_MSG_LENGTH_LENGTH)
- /* define the offsets of common header */
+ /* define the offsets of common header */
#define COMMON_HEADER_OFFSET 0
#define COMMON_HEADER_VERSION_OFFSET COMMON_HEADER_OFFSET
#define COMMON_HEADER_RESERVED_OFFSET (COMMON_HEADER_VERSION_OFFSET + COMMON_HEADER_VERSION_LENGTH)
@@ -1081,14 +1081,14 @@ dissect_parameters(tvbuff_t *parameters_tvb, packet_info *pinfo, proto_tree *tre
#define COMMON_HEADER_MSG_LENGTH_OFFSET (COMMON_HEADER_MSG_TYPE_OFFSET + COMMON_HEADER_MSG_TYPE_LENGTH)
#define COMMON_HEADER_PARAMETERS_OFFSET (COMMON_HEADER_OFFSET + COMMON_HEADER_LENGTH)
- /* version of V5UA protocol */
+ /* version of V5UA protocol */
#define V5UA_PROTOCOL_VERSION_RELEASE_1 1
static const value_string v5ua_protocol_version_values[] = {
- { V5UA_PROTOCOL_VERSION_RELEASE_1, "Release 1.0" },
- { 0, NULL } };
+ { V5UA_PROTOCOL_VERSION_RELEASE_1, "Release 1.0" },
+ { 0, NULL } };
- /* define V5UA MSGs */
+ /* define V5UA MSGs */
#define MSG_CLASS_MGMT_MSG 0
#define MSG_CLASS_MGMT_MSG_DRAFT 1
#define MSG_CLASS_ASPSM_MSG 3
@@ -1097,15 +1097,15 @@ static const value_string v5ua_protocol_version_values[] = {
#define MSG_CLASS_V5PTM_MSG 14
static const value_string msg_class_values[] = {
- { MSG_CLASS_MGMT_MSG, "Management Messages" },
- { MSG_CLASS_MGMT_MSG_DRAFT,"Management Messages"},
- { MSG_CLASS_ASPSM_MSG, "ASP State Maintenance Message" },
- { MSG_CLASS_ASPTM_MSG, "ASP Traffic Maintenance Message" },
- { MSG_CLASS_V5PTM_MSG_DRAFT, "V5 Boundary Primitives Transport Message" },
- { MSG_CLASS_V5PTM_MSG, "V5 Boundary Primitives Transport Message" },
- { 0, NULL } };
-
- /* message types for MGMT messages */
+ { MSG_CLASS_MGMT_MSG, "Management Messages" },
+ { MSG_CLASS_MGMT_MSG_DRAFT,"Management Messages"},
+ { MSG_CLASS_ASPSM_MSG, "ASP State Maintenance Message" },
+ { MSG_CLASS_ASPTM_MSG, "ASP Traffic Maintenance Message" },
+ { MSG_CLASS_V5PTM_MSG_DRAFT, "V5 Boundary Primitives Transport Message" },
+ { MSG_CLASS_V5PTM_MSG, "V5 Boundary Primitives Transport Message" },
+ { 0, NULL } };
+
+ /* message types for MGMT messages */
#define MGMT_MSG_TYPE_ERR 0
#define MGMT_MSG_TYPE_NTFY 1
#define MGMT_MSG_TYPE_TEI_STATUS_REQ 2
@@ -1115,7 +1115,7 @@ static const value_string msg_class_values[] = {
#define MGMT_MSG_TYPE_TEI_QUERY_REQUEST 8
/* end */
- /* MGMT messages for Nortel draft version*/
+ /* MGMT messages for Nortel draft version*/
#define MGMT_MSG_DRAFT_TYPE_TEI_STATUS_REQ 1
#define MGMT_MSG_DRAFT_TYPE_TEI_STATUS_CON 2
#define MGMT_MSG_DRAFT_TYPE_TEI_STATUS_IND 3
@@ -1123,7 +1123,7 @@ static const value_string msg_class_values[] = {
#define MGMT_MSG_DRAFT_TYPE_TEI_QUERY_REQUEST 8
/* end */
- /* message types for ASPSM messages */
+ /* message types for ASPSM messages */
#define ASPSM_MSG_TYPE_Reserved 0
#define ASPSM_MSG_TYPE_UP 1
#define ASPSM_MSG_TYPE_DOWN 2
@@ -1132,14 +1132,14 @@ static const value_string msg_class_values[] = {
#define ASPSM_MSG_TYPE_DOWN_ACK 5
#define ASPSM_MSG_TYPE_BEAT_ACK 6
- /* message types for ASPTM messages */
+ /* message types for ASPTM messages */
#define ASPTM_MSG_TYPE_Reserved 0
#define ASPTM_MSG_TYPE_ACTIVE 1
#define ASPTM_MSG_TYPE_INACTIVE 2
#define ASPTM_MSG_TYPE_ACTIVE_ACK 3
#define ASPTM_MSG_TYPE_INACTIVE_ACK 4
- /* message types for V5PTM messages */
+ /* message types for V5PTM messages */
#define V5PTM_MSG_TYPE_Reserved 0
#define V5PTM_MSG_TYPE_DATA_REQUEST 1
#define V5PTM_MSG_TYPE_DATA_INDICATION 2
@@ -1164,231 +1164,231 @@ static const value_string msg_class_values[] = {
#define MGMT_MSG_TYPE_TEI_STATUS_REQUEST 8
static const value_string msg_class_type_values[] = {
- { MSG_CLASS_MGMT_MSG * 256 + MGMT_MSG_TYPE_ERR, "Error" },
- { MSG_CLASS_MGMT_MSG * 256 + MGMT_MSG_TYPE_NTFY, "Notify" },
- { MSG_CLASS_MGMT_MSG * 256 + MGMT_MSG_TYPE_TEI_STATUS_REQ, "TEI status request" },
- { MSG_CLASS_MGMT_MSG * 256 + MGMT_MSG_TYPE_TEI_STATUS_CON, "TEI status confirmation" },
- { MSG_CLASS_MGMT_MSG * 256 + MGMT_MSG_TYPE_TEI_STATUS_IND, "TEI status indication" },
- { MSG_CLASS_MGMT_MSG * 256 + MGMT_MSG_TYPE_TEI_QUERY_REQUEST, "TEI query request" },
- { MSG_CLASS_MGMT_MSG * 256 + MGMT_MSG_TYPE_TEI_QUERY_REQUEST5, "TEI query request" },
-
- { MSG_CLASS_MGMT_MSG_DRAFT * 256 + MGMT_MSG_DRAFT_TYPE_TEI_STATUS_REQ, "TEI status request" },
- { MSG_CLASS_MGMT_MSG_DRAFT * 256 + MGMT_MSG_DRAFT_TYPE_TEI_STATUS_CON, "TEI status confimation" },
- { MSG_CLASS_MGMT_MSG_DRAFT * 256 + MGMT_MSG_DRAFT_TYPE_TEI_STATUS_IND, "TEI status indication" },
- { MSG_CLASS_MGMT_MSG_DRAFT * 256 + MGMT_MSG_DRAFT_TYPE_TEI_QUERY_REQUEST, "TEI query request" },
- { MSG_CLASS_MGMT_MSG_DRAFT * 256 + MGMT_MSG_DRAFT_TYPE_TEI_QUERY_REQUEST5, "TEI query request" },
-
-
- { MSG_CLASS_ASPSM_MSG * 256 + ASPSM_MSG_TYPE_Reserved, "Reserved" },
- { MSG_CLASS_ASPSM_MSG * 256 + ASPSM_MSG_TYPE_UP, "ASP up" },
- { MSG_CLASS_ASPSM_MSG * 256 + ASPSM_MSG_TYPE_DOWN, "ASP down" },
- { MSG_CLASS_ASPSM_MSG * 256 + ASPSM_MSG_TYPE_BEAT, "Heartbeat" },
- { MSG_CLASS_ASPSM_MSG * 256 + ASPSM_MSG_TYPE_UP_ACK, "ASP up ack" },
- { MSG_CLASS_ASPSM_MSG * 256 + ASPSM_MSG_TYPE_DOWN_ACK, "ASP down ack" },
- { MSG_CLASS_ASPSM_MSG * 256 + ASPSM_MSG_TYPE_BEAT_ACK, "Heartbeat ack" },
-
- { MSG_CLASS_ASPTM_MSG * 256 + ASPTM_MSG_TYPE_Reserved , "Reserved" },
- { MSG_CLASS_ASPTM_MSG * 256 + ASPTM_MSG_TYPE_ACTIVE , "ASP active" },
- { MSG_CLASS_ASPTM_MSG * 256 + ASPTM_MSG_TYPE_INACTIVE , "ASP inactive" },
- { MSG_CLASS_ASPTM_MSG * 256 + ASPTM_MSG_TYPE_ACTIVE_ACK , "ASP active ack" },
- { MSG_CLASS_ASPTM_MSG * 256 + ASPTM_MSG_TYPE_INACTIVE_ACK , "ASP inactive ack" },
-
- { MSG_CLASS_V5PTM_MSG_DRAFT * 256 + V5PTM_MSG_TYPE_Reserved, "Reserved" },
- { MSG_CLASS_V5PTM_MSG_DRAFT * 256 + V5PTM_MSG_TYPE_DATA_REQUEST, "Data request" },
- { MSG_CLASS_V5PTM_MSG_DRAFT * 256 + V5PTM_MSG_TYPE_DATA_INDICATION, "Data indication" },
- { MSG_CLASS_V5PTM_MSG_DRAFT * 256 + V5PTM_MSG_TYPE_UNIT_DATA_REQUEST, "Unit data request" },
- { MSG_CLASS_V5PTM_MSG_DRAFT * 256 + V5PTM_MSG_TYPE_UNIT_DATA_INDICATION, "Unit data indication" },
- { MSG_CLASS_V5PTM_MSG_DRAFT * 256 + V5PTM_MSG_TYPE_ESTABLISH_REQUEST, "Establish request" },
- { MSG_CLASS_V5PTM_MSG_DRAFT * 256 + V5PTM_MSG_TYPE_ESTABLISH_CONFIRM, "Establish confirmation" },
- { MSG_CLASS_V5PTM_MSG_DRAFT * 256 + V5PTM_MSG_TYPE_ESTABLISH_INDICATION, "Establish indication" },
- { MSG_CLASS_V5PTM_MSG_DRAFT * 256 + V5PTM_MSG_TYPE_RELEASE_REQUEST, "Release request" },
- { MSG_CLASS_V5PTM_MSG_DRAFT * 256 + V5PTM_MSG_TYPE_RELEASE_CONFIRM, "Release confirmation" },
- { MSG_CLASS_V5PTM_MSG_DRAFT * 256 + V5PTM_MSG_TYPE_RELEASE_INDICATION, "Release indication" },
- { MSG_CLASS_V5PTM_MSG_DRAFT * 256 + V5PTM_MSG_TYPE_LINK_STATUS_START_REPORTING,"Link status start reporting" },
- { MSG_CLASS_V5PTM_MSG_DRAFT * 256 + V5PTM_MSG_TYPE_LINK_STATUS_STOP_REPORTING, "Link status stop reporting" },
- { MSG_CLASS_V5PTM_MSG_DRAFT * 256 + V5PTM_MSG_TYPE_LINK_STATUS_INDICATION, "Link status indication" },
- { MSG_CLASS_V5PTM_MSG_DRAFT * 256 + V5PTM_MSG_TYPE_SA_BIT_SET_REQUEST, "Sa-Bit set request" },
- { MSG_CLASS_V5PTM_MSG_DRAFT * 256 + V5PTM_MSG_TYPE_SA_BIT_SET_CONFIRM, "Sa-Bit set confirm" },
- { MSG_CLASS_V5PTM_MSG_DRAFT * 256 + V5PTM_MSG_TYPE_SA_BIT_STATUS_REQUEST, "Sa-Bit status request" },
- { MSG_CLASS_V5PTM_MSG_DRAFT * 256 + V5PTM_MSG_TYPE_SA_BIT_STATUS_INDICATION, "Sa-Bit status indication" },
- { MSG_CLASS_V5PTM_MSG_DRAFT * 256 + V5PTM_MSG_TYPE_ERROR_INDICATION, "Error indication" },
-
- { MSG_CLASS_V5PTM_MSG * 256 + V5PTM_MSG_TYPE_Reserved, "Reserved" },
- { MSG_CLASS_V5PTM_MSG * 256 + V5PTM_MSG_TYPE_DATA_REQUEST, "Data request" },
- { MSG_CLASS_V5PTM_MSG * 256 + V5PTM_MSG_TYPE_DATA_INDICATION, "Data indication" },
- { MSG_CLASS_V5PTM_MSG * 256 + V5PTM_MSG_TYPE_UNIT_DATA_REQUEST, "Unit data request" },
- { MSG_CLASS_V5PTM_MSG * 256 + V5PTM_MSG_TYPE_UNIT_DATA_INDICATION, "Unit data indication" },
- { MSG_CLASS_V5PTM_MSG * 256 + V5PTM_MSG_TYPE_ESTABLISH_REQUEST, "Establish request" },
- { MSG_CLASS_V5PTM_MSG * 256 + V5PTM_MSG_TYPE_ESTABLISH_CONFIRM, "Establish confirmation" },
- { MSG_CLASS_V5PTM_MSG * 256 + V5PTM_MSG_TYPE_ESTABLISH_INDICATION, "Establish indication" },
- { MSG_CLASS_V5PTM_MSG * 256 + V5PTM_MSG_TYPE_RELEASE_REQUEST, "Release request" },
- { MSG_CLASS_V5PTM_MSG * 256 + V5PTM_MSG_TYPE_RELEASE_CONFIRM, "Release confirmation" },
- { MSG_CLASS_V5PTM_MSG * 256 + V5PTM_MSG_TYPE_RELEASE_INDICATION, "Release indication" },
- { MSG_CLASS_V5PTM_MSG * 256 + V5PTM_MSG_TYPE_LINK_STATUS_START_REPORTING,"Link status start reporting" },
- { MSG_CLASS_V5PTM_MSG * 256 + V5PTM_MSG_TYPE_LINK_STATUS_STOP_REPORTING, "Link status stop reporting" },
- { MSG_CLASS_V5PTM_MSG * 256 + V5PTM_MSG_TYPE_LINK_STATUS_INDICATION, "Link status indication" },
- { MSG_CLASS_V5PTM_MSG * 256 + V5PTM_MSG_TYPE_SA_BIT_SET_REQUEST, "Sa-Bit set request" },
- { MSG_CLASS_V5PTM_MSG * 256 + V5PTM_MSG_TYPE_SA_BIT_SET_CONFIRM, "Sa-Bit set confirm" },
- { MSG_CLASS_V5PTM_MSG * 256 + V5PTM_MSG_TYPE_SA_BIT_STATUS_REQUEST, "Sa-Bit status request" },
- { MSG_CLASS_V5PTM_MSG * 256 + V5PTM_MSG_TYPE_SA_BIT_STATUS_INDICATION, "Sa-Bit status indication" },
- { MSG_CLASS_V5PTM_MSG * 256 + V5PTM_MSG_TYPE_ERROR_INDICATION, "Error indication" },
-
- { 0, NULL } };
+ { MSG_CLASS_MGMT_MSG * 256 + MGMT_MSG_TYPE_ERR, "Error" },
+ { MSG_CLASS_MGMT_MSG * 256 + MGMT_MSG_TYPE_NTFY, "Notify" },
+ { MSG_CLASS_MGMT_MSG * 256 + MGMT_MSG_TYPE_TEI_STATUS_REQ, "TEI status request" },
+ { MSG_CLASS_MGMT_MSG * 256 + MGMT_MSG_TYPE_TEI_STATUS_CON, "TEI status confirmation" },
+ { MSG_CLASS_MGMT_MSG * 256 + MGMT_MSG_TYPE_TEI_STATUS_IND, "TEI status indication" },
+ { MSG_CLASS_MGMT_MSG * 256 + MGMT_MSG_TYPE_TEI_QUERY_REQUEST, "TEI query request" },
+ { MSG_CLASS_MGMT_MSG * 256 + MGMT_MSG_TYPE_TEI_QUERY_REQUEST5, "TEI query request" },
+
+ { MSG_CLASS_MGMT_MSG_DRAFT * 256 + MGMT_MSG_DRAFT_TYPE_TEI_STATUS_REQ, "TEI status request" },
+ { MSG_CLASS_MGMT_MSG_DRAFT * 256 + MGMT_MSG_DRAFT_TYPE_TEI_STATUS_CON, "TEI status confimation" },
+ { MSG_CLASS_MGMT_MSG_DRAFT * 256 + MGMT_MSG_DRAFT_TYPE_TEI_STATUS_IND, "TEI status indication" },
+ { MSG_CLASS_MGMT_MSG_DRAFT * 256 + MGMT_MSG_DRAFT_TYPE_TEI_QUERY_REQUEST, "TEI query request" },
+ { MSG_CLASS_MGMT_MSG_DRAFT * 256 + MGMT_MSG_DRAFT_TYPE_TEI_QUERY_REQUEST5, "TEI query request" },
+
+
+ { MSG_CLASS_ASPSM_MSG * 256 + ASPSM_MSG_TYPE_Reserved, "Reserved" },
+ { MSG_CLASS_ASPSM_MSG * 256 + ASPSM_MSG_TYPE_UP, "ASP up" },
+ { MSG_CLASS_ASPSM_MSG * 256 + ASPSM_MSG_TYPE_DOWN, "ASP down" },
+ { MSG_CLASS_ASPSM_MSG * 256 + ASPSM_MSG_TYPE_BEAT, "Heartbeat" },
+ { MSG_CLASS_ASPSM_MSG * 256 + ASPSM_MSG_TYPE_UP_ACK, "ASP up ack" },
+ { MSG_CLASS_ASPSM_MSG * 256 + ASPSM_MSG_TYPE_DOWN_ACK, "ASP down ack" },
+ { MSG_CLASS_ASPSM_MSG * 256 + ASPSM_MSG_TYPE_BEAT_ACK, "Heartbeat ack" },
+
+ { MSG_CLASS_ASPTM_MSG * 256 + ASPTM_MSG_TYPE_Reserved , "Reserved" },
+ { MSG_CLASS_ASPTM_MSG * 256 + ASPTM_MSG_TYPE_ACTIVE , "ASP active" },
+ { MSG_CLASS_ASPTM_MSG * 256 + ASPTM_MSG_TYPE_INACTIVE , "ASP inactive" },
+ { MSG_CLASS_ASPTM_MSG * 256 + ASPTM_MSG_TYPE_ACTIVE_ACK , "ASP active ack" },
+ { MSG_CLASS_ASPTM_MSG * 256 + ASPTM_MSG_TYPE_INACTIVE_ACK , "ASP inactive ack" },
+
+ { MSG_CLASS_V5PTM_MSG_DRAFT * 256 + V5PTM_MSG_TYPE_Reserved, "Reserved" },
+ { MSG_CLASS_V5PTM_MSG_DRAFT * 256 + V5PTM_MSG_TYPE_DATA_REQUEST, "Data request" },
+ { MSG_CLASS_V5PTM_MSG_DRAFT * 256 + V5PTM_MSG_TYPE_DATA_INDICATION, "Data indication" },
+ { MSG_CLASS_V5PTM_MSG_DRAFT * 256 + V5PTM_MSG_TYPE_UNIT_DATA_REQUEST, "Unit data request" },
+ { MSG_CLASS_V5PTM_MSG_DRAFT * 256 + V5PTM_MSG_TYPE_UNIT_DATA_INDICATION, "Unit data indication" },
+ { MSG_CLASS_V5PTM_MSG_DRAFT * 256 + V5PTM_MSG_TYPE_ESTABLISH_REQUEST, "Establish request" },
+ { MSG_CLASS_V5PTM_MSG_DRAFT * 256 + V5PTM_MSG_TYPE_ESTABLISH_CONFIRM, "Establish confirmation" },
+ { MSG_CLASS_V5PTM_MSG_DRAFT * 256 + V5PTM_MSG_TYPE_ESTABLISH_INDICATION, "Establish indication" },
+ { MSG_CLASS_V5PTM_MSG_DRAFT * 256 + V5PTM_MSG_TYPE_RELEASE_REQUEST, "Release request" },
+ { MSG_CLASS_V5PTM_MSG_DRAFT * 256 + V5PTM_MSG_TYPE_RELEASE_CONFIRM, "Release confirmation" },
+ { MSG_CLASS_V5PTM_MSG_DRAFT * 256 + V5PTM_MSG_TYPE_RELEASE_INDICATION, "Release indication" },
+ { MSG_CLASS_V5PTM_MSG_DRAFT * 256 + V5PTM_MSG_TYPE_LINK_STATUS_START_REPORTING,"Link status start reporting" },
+ { MSG_CLASS_V5PTM_MSG_DRAFT * 256 + V5PTM_MSG_TYPE_LINK_STATUS_STOP_REPORTING, "Link status stop reporting" },
+ { MSG_CLASS_V5PTM_MSG_DRAFT * 256 + V5PTM_MSG_TYPE_LINK_STATUS_INDICATION, "Link status indication" },
+ { MSG_CLASS_V5PTM_MSG_DRAFT * 256 + V5PTM_MSG_TYPE_SA_BIT_SET_REQUEST, "Sa-Bit set request" },
+ { MSG_CLASS_V5PTM_MSG_DRAFT * 256 + V5PTM_MSG_TYPE_SA_BIT_SET_CONFIRM, "Sa-Bit set confirm" },
+ { MSG_CLASS_V5PTM_MSG_DRAFT * 256 + V5PTM_MSG_TYPE_SA_BIT_STATUS_REQUEST, "Sa-Bit status request" },
+ { MSG_CLASS_V5PTM_MSG_DRAFT * 256 + V5PTM_MSG_TYPE_SA_BIT_STATUS_INDICATION, "Sa-Bit status indication" },
+ { MSG_CLASS_V5PTM_MSG_DRAFT * 256 + V5PTM_MSG_TYPE_ERROR_INDICATION, "Error indication" },
+
+ { MSG_CLASS_V5PTM_MSG * 256 + V5PTM_MSG_TYPE_Reserved, "Reserved" },
+ { MSG_CLASS_V5PTM_MSG * 256 + V5PTM_MSG_TYPE_DATA_REQUEST, "Data request" },
+ { MSG_CLASS_V5PTM_MSG * 256 + V5PTM_MSG_TYPE_DATA_INDICATION, "Data indication" },
+ { MSG_CLASS_V5PTM_MSG * 256 + V5PTM_MSG_TYPE_UNIT_DATA_REQUEST, "Unit data request" },
+ { MSG_CLASS_V5PTM_MSG * 256 + V5PTM_MSG_TYPE_UNIT_DATA_INDICATION, "Unit data indication" },
+ { MSG_CLASS_V5PTM_MSG * 256 + V5PTM_MSG_TYPE_ESTABLISH_REQUEST, "Establish request" },
+ { MSG_CLASS_V5PTM_MSG * 256 + V5PTM_MSG_TYPE_ESTABLISH_CONFIRM, "Establish confirmation" },
+ { MSG_CLASS_V5PTM_MSG * 256 + V5PTM_MSG_TYPE_ESTABLISH_INDICATION, "Establish indication" },
+ { MSG_CLASS_V5PTM_MSG * 256 + V5PTM_MSG_TYPE_RELEASE_REQUEST, "Release request" },
+ { MSG_CLASS_V5PTM_MSG * 256 + V5PTM_MSG_TYPE_RELEASE_CONFIRM, "Release confirmation" },
+ { MSG_CLASS_V5PTM_MSG * 256 + V5PTM_MSG_TYPE_RELEASE_INDICATION, "Release indication" },
+ { MSG_CLASS_V5PTM_MSG * 256 + V5PTM_MSG_TYPE_LINK_STATUS_START_REPORTING,"Link status start reporting" },
+ { MSG_CLASS_V5PTM_MSG * 256 + V5PTM_MSG_TYPE_LINK_STATUS_STOP_REPORTING, "Link status stop reporting" },
+ { MSG_CLASS_V5PTM_MSG * 256 + V5PTM_MSG_TYPE_LINK_STATUS_INDICATION, "Link status indication" },
+ { MSG_CLASS_V5PTM_MSG * 256 + V5PTM_MSG_TYPE_SA_BIT_SET_REQUEST, "Sa-Bit set request" },
+ { MSG_CLASS_V5PTM_MSG * 256 + V5PTM_MSG_TYPE_SA_BIT_SET_CONFIRM, "Sa-Bit set confirm" },
+ { MSG_CLASS_V5PTM_MSG * 256 + V5PTM_MSG_TYPE_SA_BIT_STATUS_REQUEST, "Sa-Bit status request" },
+ { MSG_CLASS_V5PTM_MSG * 256 + V5PTM_MSG_TYPE_SA_BIT_STATUS_INDICATION, "Sa-Bit status indication" },
+ { MSG_CLASS_V5PTM_MSG * 256 + V5PTM_MSG_TYPE_ERROR_INDICATION, "Error indication" },
+
+ { 0, NULL } };
static const value_string msg_class_type_values_short[] = {
- { MSG_CLASS_MGMT_MSG * 256 + MGMT_MSG_TYPE_ERR, "Error" },
- { MSG_CLASS_MGMT_MSG * 256 + MGMT_MSG_TYPE_NTFY, "Notify" },
- { MSG_CLASS_MGMT_MSG * 256 + MGMT_MSG_TYPE_TEI_STATUS_REQ, "TEI status request" },
- { MSG_CLASS_MGMT_MSG * 256 + MGMT_MSG_TYPE_TEI_STATUS_CON, "TEI status confirmation" },
- { MSG_CLASS_MGMT_MSG * 256 + MGMT_MSG_TYPE_TEI_STATUS_IND, "TEI status indication" },
- { MSG_CLASS_MGMT_MSG * 256 + MGMT_MSG_TYPE_TEI_QUERY_REQUEST, "TEI query request" },
- { MSG_CLASS_MGMT_MSG * 256 + MGMT_MSG_TYPE_TEI_QUERY_REQUEST5, "TEI query request" },
-
- { MSG_CLASS_MGMT_MSG_DRAFT * 256 + MGMT_MSG_DRAFT_TYPE_TEI_STATUS_REQ, "TEI status request" },
- { MSG_CLASS_MGMT_MSG_DRAFT * 256 + MGMT_MSG_DRAFT_TYPE_TEI_STATUS_CON, "TEI status confimation" },
- { MSG_CLASS_MGMT_MSG_DRAFT * 256 + MGMT_MSG_DRAFT_TYPE_TEI_STATUS_IND, "TEI status indication" },
- { MSG_CLASS_MGMT_MSG_DRAFT * 256 + MGMT_MSG_DRAFT_TYPE_TEI_QUERY_REQUEST, "TEI query request" },
- { MSG_CLASS_MGMT_MSG_DRAFT * 256 + MGMT_MSG_DRAFT_TYPE_TEI_QUERY_REQUEST5, "TEI query request" },
-
-
- { MSG_CLASS_ASPSM_MSG * 256 + ASPSM_MSG_TYPE_Reserved, "Reserved" },
- { MSG_CLASS_ASPSM_MSG * 256 + ASPSM_MSG_TYPE_UP, "ASP up" },
- { MSG_CLASS_ASPSM_MSG * 256 + ASPSM_MSG_TYPE_DOWN, "ASP down" },
- { MSG_CLASS_ASPSM_MSG * 256 + ASPSM_MSG_TYPE_BEAT, "Heartbeat" },
- { MSG_CLASS_ASPSM_MSG * 256 + ASPSM_MSG_TYPE_UP_ACK, "ASP up ack" },
- { MSG_CLASS_ASPSM_MSG * 256 + ASPSM_MSG_TYPE_DOWN_ACK, "ASP down ack" },
- { MSG_CLASS_ASPSM_MSG * 256 + ASPSM_MSG_TYPE_BEAT_ACK, "Heartbeat ack" },
-
- { MSG_CLASS_ASPTM_MSG * 256 + ASPTM_MSG_TYPE_Reserved , "Reserved" },
- { MSG_CLASS_ASPTM_MSG * 256 + ASPTM_MSG_TYPE_ACTIVE , "ASP active" },
- { MSG_CLASS_ASPTM_MSG * 256 + ASPTM_MSG_TYPE_INACTIVE , "ASP inactive" },
- { MSG_CLASS_ASPTM_MSG * 256 + ASPTM_MSG_TYPE_ACTIVE_ACK , "ASP active ack" },
- { MSG_CLASS_ASPTM_MSG * 256 + ASPTM_MSG_TYPE_INACTIVE_ACK , "ASP inactive ack" },
-
- { MSG_CLASS_V5PTM_MSG_DRAFT * 256 + V5PTM_MSG_TYPE_Reserved, "Reserved" },
- { MSG_CLASS_V5PTM_MSG_DRAFT * 256 + V5PTM_MSG_TYPE_DATA_REQUEST, "Data request" },
- { MSG_CLASS_V5PTM_MSG_DRAFT * 256 + V5PTM_MSG_TYPE_DATA_INDICATION, "Data indication" },
- { MSG_CLASS_V5PTM_MSG_DRAFT * 256 + V5PTM_MSG_TYPE_UNIT_DATA_REQUEST, "Unit data request" },
- { MSG_CLASS_V5PTM_MSG_DRAFT * 256 + V5PTM_MSG_TYPE_UNIT_DATA_INDICATION, "Unit data indication" },
- { MSG_CLASS_V5PTM_MSG_DRAFT * 256 + V5PTM_MSG_TYPE_ESTABLISH_REQUEST, "Establish request" },
- { MSG_CLASS_V5PTM_MSG_DRAFT * 256 + V5PTM_MSG_TYPE_ESTABLISH_CONFIRM, "Establish confirmation" },
- { MSG_CLASS_V5PTM_MSG_DRAFT * 256 + V5PTM_MSG_TYPE_ESTABLISH_INDICATION, "Establish indication" },
- { MSG_CLASS_V5PTM_MSG_DRAFT * 256 + V5PTM_MSG_TYPE_RELEASE_REQUEST, "Release request" },
- { MSG_CLASS_V5PTM_MSG_DRAFT * 256 + V5PTM_MSG_TYPE_RELEASE_CONFIRM, "Release confirmation" },
- { MSG_CLASS_V5PTM_MSG_DRAFT * 256 + V5PTM_MSG_TYPE_RELEASE_INDICATION, "Release indication" },
- { MSG_CLASS_V5PTM_MSG_DRAFT * 256 + V5PTM_MSG_TYPE_LINK_STATUS_START_REPORTING,"Link status start reporting" },
- { MSG_CLASS_V5PTM_MSG_DRAFT * 256 + V5PTM_MSG_TYPE_LINK_STATUS_STOP_REPORTING, "Link status stop reporting" },
- { MSG_CLASS_V5PTM_MSG_DRAFT * 256 + V5PTM_MSG_TYPE_LINK_STATUS_INDICATION, "Link status indication" },
- { MSG_CLASS_V5PTM_MSG_DRAFT * 256 + V5PTM_MSG_TYPE_SA_BIT_SET_REQUEST, "Sa-Bit set request" },
- { MSG_CLASS_V5PTM_MSG_DRAFT * 256 + V5PTM_MSG_TYPE_SA_BIT_SET_CONFIRM, "Sa-Bit set confirm" },
- { MSG_CLASS_V5PTM_MSG_DRAFT * 256 + V5PTM_MSG_TYPE_SA_BIT_STATUS_REQUEST, "Sa-Bit status request" },
- { MSG_CLASS_V5PTM_MSG_DRAFT * 256 + V5PTM_MSG_TYPE_SA_BIT_STATUS_INDICATION, "Sa-Bit status indication" },
- { MSG_CLASS_V5PTM_MSG_DRAFT * 256 + V5PTM_MSG_TYPE_ERROR_INDICATION, "Error indication" },
-
-
- { MSG_CLASS_V5PTM_MSG * 256 + V5PTM_MSG_TYPE_Reserved, "Reserved" },
- { MSG_CLASS_V5PTM_MSG * 256 + V5PTM_MSG_TYPE_DATA_REQUEST, "Data Req" },
- { MSG_CLASS_V5PTM_MSG * 256 + V5PTM_MSG_TYPE_DATA_INDICATION, "Data Ind" },
- { MSG_CLASS_V5PTM_MSG * 256 + V5PTM_MSG_TYPE_UNIT_DATA_REQUEST, "U Data Req" },
- { MSG_CLASS_V5PTM_MSG * 256 + V5PTM_MSG_TYPE_UNIT_DATA_INDICATION, "U Data Ind" },
- { MSG_CLASS_V5PTM_MSG * 256 + V5PTM_MSG_TYPE_ESTABLISH_REQUEST, "Est Req" },
- { MSG_CLASS_V5PTM_MSG * 256 + V5PTM_MSG_TYPE_ESTABLISH_CONFIRM, "Est Conf" },
- { MSG_CLASS_V5PTM_MSG * 256 + V5PTM_MSG_TYPE_ESTABLISH_INDICATION, "Est Ind" },
- { MSG_CLASS_V5PTM_MSG * 256 + V5PTM_MSG_TYPE_RELEASE_REQUEST, "Rel Req" },
- { MSG_CLASS_V5PTM_MSG * 256 + V5PTM_MSG_TYPE_RELEASE_CONFIRM, "Rel Con" },
- { MSG_CLASS_V5PTM_MSG * 256 + V5PTM_MSG_TYPE_RELEASE_INDICATION, "Rel Ind" },
- { MSG_CLASS_V5PTM_MSG * 256 + V5PTM_MSG_TYPE_LINK_STATUS_START_REPORTING,"Link Status Start Rep" },
- { MSG_CLASS_V5PTM_MSG * 256 + V5PTM_MSG_TYPE_LINK_STATUS_STOP_REPORTING, "Link Status Stop Rep" },
- { MSG_CLASS_V5PTM_MSG * 256 + V5PTM_MSG_TYPE_LINK_STATUS_INDICATION, "Link Status Ind" },
- { MSG_CLASS_V5PTM_MSG * 256 + V5PTM_MSG_TYPE_SA_BIT_SET_REQUEST, "Sa-Bit Set Req" },
- { MSG_CLASS_V5PTM_MSG * 256 + V5PTM_MSG_TYPE_SA_BIT_SET_CONFIRM, "Sa-Bit set Conf" },
- { MSG_CLASS_V5PTM_MSG * 256 + V5PTM_MSG_TYPE_SA_BIT_STATUS_REQUEST, "Sa-Bit Status Req" },
- { MSG_CLASS_V5PTM_MSG * 256 + V5PTM_MSG_TYPE_SA_BIT_STATUS_INDICATION, "Sa-Bit Status Ind" },
- { MSG_CLASS_V5PTM_MSG * 256 + V5PTM_MSG_TYPE_ERROR_INDICATION, "Error Ind" },
- { 0, NULL } };
+ { MSG_CLASS_MGMT_MSG * 256 + MGMT_MSG_TYPE_ERR, "Error" },
+ { MSG_CLASS_MGMT_MSG * 256 + MGMT_MSG_TYPE_NTFY, "Notify" },
+ { MSG_CLASS_MGMT_MSG * 256 + MGMT_MSG_TYPE_TEI_STATUS_REQ, "TEI status request" },
+ { MSG_CLASS_MGMT_MSG * 256 + MGMT_MSG_TYPE_TEI_STATUS_CON, "TEI status confirmation" },
+ { MSG_CLASS_MGMT_MSG * 256 + MGMT_MSG_TYPE_TEI_STATUS_IND, "TEI status indication" },
+ { MSG_CLASS_MGMT_MSG * 256 + MGMT_MSG_TYPE_TEI_QUERY_REQUEST, "TEI query request" },
+ { MSG_CLASS_MGMT_MSG * 256 + MGMT_MSG_TYPE_TEI_QUERY_REQUEST5, "TEI query request" },
+
+ { MSG_CLASS_MGMT_MSG_DRAFT * 256 + MGMT_MSG_DRAFT_TYPE_TEI_STATUS_REQ, "TEI status request" },
+ { MSG_CLASS_MGMT_MSG_DRAFT * 256 + MGMT_MSG_DRAFT_TYPE_TEI_STATUS_CON, "TEI status confimation" },
+ { MSG_CLASS_MGMT_MSG_DRAFT * 256 + MGMT_MSG_DRAFT_TYPE_TEI_STATUS_IND, "TEI status indication" },
+ { MSG_CLASS_MGMT_MSG_DRAFT * 256 + MGMT_MSG_DRAFT_TYPE_TEI_QUERY_REQUEST, "TEI query request" },
+ { MSG_CLASS_MGMT_MSG_DRAFT * 256 + MGMT_MSG_DRAFT_TYPE_TEI_QUERY_REQUEST5, "TEI query request" },
+
+
+ { MSG_CLASS_ASPSM_MSG * 256 + ASPSM_MSG_TYPE_Reserved, "Reserved" },
+ { MSG_CLASS_ASPSM_MSG * 256 + ASPSM_MSG_TYPE_UP, "ASP up" },
+ { MSG_CLASS_ASPSM_MSG * 256 + ASPSM_MSG_TYPE_DOWN, "ASP down" },
+ { MSG_CLASS_ASPSM_MSG * 256 + ASPSM_MSG_TYPE_BEAT, "Heartbeat" },
+ { MSG_CLASS_ASPSM_MSG * 256 + ASPSM_MSG_TYPE_UP_ACK, "ASP up ack" },
+ { MSG_CLASS_ASPSM_MSG * 256 + ASPSM_MSG_TYPE_DOWN_ACK, "ASP down ack" },
+ { MSG_CLASS_ASPSM_MSG * 256 + ASPSM_MSG_TYPE_BEAT_ACK, "Heartbeat ack" },
+
+ { MSG_CLASS_ASPTM_MSG * 256 + ASPTM_MSG_TYPE_Reserved , "Reserved" },
+ { MSG_CLASS_ASPTM_MSG * 256 + ASPTM_MSG_TYPE_ACTIVE , "ASP active" },
+ { MSG_CLASS_ASPTM_MSG * 256 + ASPTM_MSG_TYPE_INACTIVE , "ASP inactive" },
+ { MSG_CLASS_ASPTM_MSG * 256 + ASPTM_MSG_TYPE_ACTIVE_ACK , "ASP active ack" },
+ { MSG_CLASS_ASPTM_MSG * 256 + ASPTM_MSG_TYPE_INACTIVE_ACK , "ASP inactive ack" },
+
+ { MSG_CLASS_V5PTM_MSG_DRAFT * 256 + V5PTM_MSG_TYPE_Reserved, "Reserved" },
+ { MSG_CLASS_V5PTM_MSG_DRAFT * 256 + V5PTM_MSG_TYPE_DATA_REQUEST, "Data request" },
+ { MSG_CLASS_V5PTM_MSG_DRAFT * 256 + V5PTM_MSG_TYPE_DATA_INDICATION, "Data indication" },
+ { MSG_CLASS_V5PTM_MSG_DRAFT * 256 + V5PTM_MSG_TYPE_UNIT_DATA_REQUEST, "Unit data request" },
+ { MSG_CLASS_V5PTM_MSG_DRAFT * 256 + V5PTM_MSG_TYPE_UNIT_DATA_INDICATION, "Unit data indication" },
+ { MSG_CLASS_V5PTM_MSG_DRAFT * 256 + V5PTM_MSG_TYPE_ESTABLISH_REQUEST, "Establish request" },
+ { MSG_CLASS_V5PTM_MSG_DRAFT * 256 + V5PTM_MSG_TYPE_ESTABLISH_CONFIRM, "Establish confirmation" },
+ { MSG_CLASS_V5PTM_MSG_DRAFT * 256 + V5PTM_MSG_TYPE_ESTABLISH_INDICATION, "Establish indication" },
+ { MSG_CLASS_V5PTM_MSG_DRAFT * 256 + V5PTM_MSG_TYPE_RELEASE_REQUEST, "Release request" },
+ { MSG_CLASS_V5PTM_MSG_DRAFT * 256 + V5PTM_MSG_TYPE_RELEASE_CONFIRM, "Release confirmation" },
+ { MSG_CLASS_V5PTM_MSG_DRAFT * 256 + V5PTM_MSG_TYPE_RELEASE_INDICATION, "Release indication" },
+ { MSG_CLASS_V5PTM_MSG_DRAFT * 256 + V5PTM_MSG_TYPE_LINK_STATUS_START_REPORTING,"Link status start reporting" },
+ { MSG_CLASS_V5PTM_MSG_DRAFT * 256 + V5PTM_MSG_TYPE_LINK_STATUS_STOP_REPORTING, "Link status stop reporting" },
+ { MSG_CLASS_V5PTM_MSG_DRAFT * 256 + V5PTM_MSG_TYPE_LINK_STATUS_INDICATION, "Link status indication" },
+ { MSG_CLASS_V5PTM_MSG_DRAFT * 256 + V5PTM_MSG_TYPE_SA_BIT_SET_REQUEST, "Sa-Bit set request" },
+ { MSG_CLASS_V5PTM_MSG_DRAFT * 256 + V5PTM_MSG_TYPE_SA_BIT_SET_CONFIRM, "Sa-Bit set confirm" },
+ { MSG_CLASS_V5PTM_MSG_DRAFT * 256 + V5PTM_MSG_TYPE_SA_BIT_STATUS_REQUEST, "Sa-Bit status request" },
+ { MSG_CLASS_V5PTM_MSG_DRAFT * 256 + V5PTM_MSG_TYPE_SA_BIT_STATUS_INDICATION, "Sa-Bit status indication" },
+ { MSG_CLASS_V5PTM_MSG_DRAFT * 256 + V5PTM_MSG_TYPE_ERROR_INDICATION, "Error indication" },
+
+
+ { MSG_CLASS_V5PTM_MSG * 256 + V5PTM_MSG_TYPE_Reserved, "Reserved" },
+ { MSG_CLASS_V5PTM_MSG * 256 + V5PTM_MSG_TYPE_DATA_REQUEST, "Data Req" },
+ { MSG_CLASS_V5PTM_MSG * 256 + V5PTM_MSG_TYPE_DATA_INDICATION, "Data Ind" },
+ { MSG_CLASS_V5PTM_MSG * 256 + V5PTM_MSG_TYPE_UNIT_DATA_REQUEST, "U Data Req" },
+ { MSG_CLASS_V5PTM_MSG * 256 + V5PTM_MSG_TYPE_UNIT_DATA_INDICATION, "U Data Ind" },
+ { MSG_CLASS_V5PTM_MSG * 256 + V5PTM_MSG_TYPE_ESTABLISH_REQUEST, "Est Req" },
+ { MSG_CLASS_V5PTM_MSG * 256 + V5PTM_MSG_TYPE_ESTABLISH_CONFIRM, "Est Conf" },
+ { MSG_CLASS_V5PTM_MSG * 256 + V5PTM_MSG_TYPE_ESTABLISH_INDICATION, "Est Ind" },
+ { MSG_CLASS_V5PTM_MSG * 256 + V5PTM_MSG_TYPE_RELEASE_REQUEST, "Rel Req" },
+ { MSG_CLASS_V5PTM_MSG * 256 + V5PTM_MSG_TYPE_RELEASE_CONFIRM, "Rel Con" },
+ { MSG_CLASS_V5PTM_MSG * 256 + V5PTM_MSG_TYPE_RELEASE_INDICATION, "Rel Ind" },
+ { MSG_CLASS_V5PTM_MSG * 256 + V5PTM_MSG_TYPE_LINK_STATUS_START_REPORTING,"Link Status Start Rep" },
+ { MSG_CLASS_V5PTM_MSG * 256 + V5PTM_MSG_TYPE_LINK_STATUS_STOP_REPORTING, "Link Status Stop Rep" },
+ { MSG_CLASS_V5PTM_MSG * 256 + V5PTM_MSG_TYPE_LINK_STATUS_INDICATION, "Link Status Ind" },
+ { MSG_CLASS_V5PTM_MSG * 256 + V5PTM_MSG_TYPE_SA_BIT_SET_REQUEST, "Sa-Bit Set Req" },
+ { MSG_CLASS_V5PTM_MSG * 256 + V5PTM_MSG_TYPE_SA_BIT_SET_CONFIRM, "Sa-Bit set Conf" },
+ { MSG_CLASS_V5PTM_MSG * 256 + V5PTM_MSG_TYPE_SA_BIT_STATUS_REQUEST, "Sa-Bit Status Req" },
+ { MSG_CLASS_V5PTM_MSG * 256 + V5PTM_MSG_TYPE_SA_BIT_STATUS_INDICATION, "Sa-Bit Status Ind" },
+ { MSG_CLASS_V5PTM_MSG * 256 + V5PTM_MSG_TYPE_ERROR_INDICATION, "Error Ind" },
+ { 0, NULL } };
static void
dissect_common_header(tvbuff_t *common_header_tvb, packet_info *pinfo, proto_tree *v5ua_tree)
{
- proto_item *common_header_item;
- proto_tree *common_header_tree;
-
- guint8 message_class, message_type;
-
- message_class = tvb_get_guint8(common_header_tvb, COMMON_HEADER_MSG_CLASS_OFFSET);
- message_type = tvb_get_guint8(common_header_tvb, COMMON_HEADER_MSG_TYPE_OFFSET);
-
- /* Add message type into info column */
- col_add_str(pinfo->cinfo, COL_INFO, val_to_str_const(message_class * 256 + message_type, msg_class_type_values_short, "UNKNOWN"));
-
-
- if (v5ua_tree) {
-
- /* create proto_tree stuff */
- common_header_item = proto_tree_add_text(v5ua_tree, common_header_tvb, COMMON_HEADER_OFFSET, tvb_length(common_header_tvb),"Common Msg-Header");
- common_header_tree = proto_item_add_subtree(common_header_item, ett_v5ua_common_header);
-
- /* add the components of the common header to the protocol tree */
- proto_tree_add_item(common_header_tree, hf_version, common_header_tvb, COMMON_HEADER_VERSION_OFFSET, COMMON_HEADER_VERSION_LENGTH, ENC_BIG_ENDIAN);
- proto_tree_add_item(common_header_tree, hf_reserved, common_header_tvb, COMMON_HEADER_RESERVED_OFFSET, COMMON_HEADER_RESERVED_LENGTH, ENC_BIG_ENDIAN);
- proto_tree_add_item(common_header_tree, hf_msg_class, common_header_tvb, COMMON_HEADER_MSG_CLASS_OFFSET, COMMON_HEADER_MSG_CLASS_LENGTH, ENC_BIG_ENDIAN);
- proto_tree_add_uint_format(common_header_tree, hf_msg_type,
- common_header_tvb, COMMON_HEADER_MSG_TYPE_OFFSET, COMMON_HEADER_MSG_TYPE_LENGTH,
- message_type, "Message type: %s ( %u )",
- val_to_str_const(message_class * 256 + message_type, msg_class_type_values, "reserved"), message_type);
- proto_tree_add_item(common_header_tree, hf_msg_length, common_header_tvb, COMMON_HEADER_MSG_LENGTH_OFFSET, COMMON_HEADER_MSG_LENGTH_LENGTH, ENC_BIG_ENDIAN);
-
- /* Add message type to the Common Msg-Header line */
- proto_item_append_text(common_header_item, " (%s)",val_to_str_const(message_class * 256 + message_type, msg_class_type_values, "Unknown Msg-Type"));
- messageclassCopy = message_class;
- }
-
- /* the following info are required to dissect IUA-Draft messages.
- In the DRAFT-Specification V5UA-Parameters are not separated by Tag-Length-Header (as defined in RFC-Spec) */
- if (iua_version == DRAFT){
- msg_class = message_class;
- msg_type = message_type;
- msg_length = tvb_get_ntohl (common_header_tvb, COMMON_HEADER_MSG_LENGTH_OFFSET);
- }
+ proto_item *common_header_item;
+ proto_tree *common_header_tree;
+
+ guint8 message_class, message_type;
+
+ message_class = tvb_get_guint8(common_header_tvb, COMMON_HEADER_MSG_CLASS_OFFSET);
+ message_type = tvb_get_guint8(common_header_tvb, COMMON_HEADER_MSG_TYPE_OFFSET);
+
+ /* Add message type into info column */
+ col_add_str(pinfo->cinfo, COL_INFO, val_to_str_const(message_class * 256 + message_type, msg_class_type_values_short, "UNKNOWN"));
+
+
+ if (v5ua_tree) {
+
+ /* create proto_tree stuff */
+ common_header_item = proto_tree_add_text(v5ua_tree, common_header_tvb, COMMON_HEADER_OFFSET, tvb_length(common_header_tvb),"Common Msg-Header");
+ common_header_tree = proto_item_add_subtree(common_header_item, ett_v5ua_common_header);
+
+ /* add the components of the common header to the protocol tree */
+ proto_tree_add_item(common_header_tree, hf_version, common_header_tvb, COMMON_HEADER_VERSION_OFFSET, COMMON_HEADER_VERSION_LENGTH, ENC_BIG_ENDIAN);
+ proto_tree_add_item(common_header_tree, hf_reserved, common_header_tvb, COMMON_HEADER_RESERVED_OFFSET, COMMON_HEADER_RESERVED_LENGTH, ENC_BIG_ENDIAN);
+ proto_tree_add_item(common_header_tree, hf_msg_class, common_header_tvb, COMMON_HEADER_MSG_CLASS_OFFSET, COMMON_HEADER_MSG_CLASS_LENGTH, ENC_BIG_ENDIAN);
+ proto_tree_add_uint_format(common_header_tree, hf_msg_type,
+ common_header_tvb, COMMON_HEADER_MSG_TYPE_OFFSET, COMMON_HEADER_MSG_TYPE_LENGTH,
+ message_type, "Message type: %s ( %u )",
+ val_to_str_const(message_class * 256 + message_type, msg_class_type_values, "reserved"), message_type);
+ proto_tree_add_item(common_header_tree, hf_msg_length, common_header_tvb, COMMON_HEADER_MSG_LENGTH_OFFSET, COMMON_HEADER_MSG_LENGTH_LENGTH, ENC_BIG_ENDIAN);
+
+ /* Add message type to the Common Msg-Header line */
+ proto_item_append_text(common_header_item, " (%s)",val_to_str_const(message_class * 256 + message_type, msg_class_type_values, "Unknown Msg-Type"));
+ messageclassCopy = message_class;
+ }
+
+ /* the following info are required to dissect IUA-Draft messages.
+ In the DRAFT-Specification V5UA-Parameters are not separated by Tag-Length-Header (as defined in RFC-Spec) */
+ if (iua_version == DRAFT){
+ msg_class = message_class;
+ msg_type = message_type;
+ msg_length = tvb_get_ntohl (common_header_tvb, COMMON_HEADER_MSG_LENGTH_OFFSET);
+ }
}
/* dissect the V5UA-packet in two subsets: Common Msg-Header (used by all msgs) and V5UA-parameter */
static void
dissect_v5ua_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_tree *v5ua_tree)
{
- tvbuff_t *common_header_tvb, *parameters_tvb;
-
- common_header_tvb = tvb_new_subset(tvb, COMMON_HEADER_OFFSET, COMMON_HEADER_LENGTH, COMMON_HEADER_LENGTH);
- dissect_common_header(common_header_tvb, pinfo, v5ua_tree);
-
- parameters_tvb = tvb_new_subset_remaining(tvb, COMMON_HEADER_LENGTH);
- dissect_parameters(parameters_tvb, pinfo, tree, v5ua_tree);
- if (dlci_efa >= 0 && dlci_efa <= 8175) {
- if ((messageclassCopy == 0) || (messageclassCopy == 3) || (messageclassCopy == 4)) {
- messageclassCopy = -1;
- }
- else {
- col_append_str(pinfo->cinfo, COL_INFO, " | ");
- col_append_fstr(pinfo->cinfo, COL_INFO, "LinkId: %u", linkIdentifier);
- }
+ tvbuff_t *common_header_tvb, *parameters_tvb;
+
+ common_header_tvb = tvb_new_subset(tvb, COMMON_HEADER_OFFSET, COMMON_HEADER_LENGTH, COMMON_HEADER_LENGTH);
+ dissect_common_header(common_header_tvb, pinfo, v5ua_tree);
+
+ parameters_tvb = tvb_new_subset_remaining(tvb, COMMON_HEADER_LENGTH);
+ dissect_parameters(parameters_tvb, pinfo, tree, v5ua_tree);
+ if (dlci_efa >= 0 && dlci_efa <= 8175) {
+ if ((messageclassCopy == 0) || (messageclassCopy == 3) || (messageclassCopy == 4)) {
+ messageclassCopy = -1;
+ }
+ else {
+ col_append_str(pinfo->cinfo, COL_INFO, " | ");
+ col_append_fstr(pinfo->cinfo, COL_INFO, "LinkId: %u", linkIdentifier);
+ }
} else {};
if (sa_bit_id > -1) {
- col_append_str(pinfo->cinfo, COL_INFO, " | ");
- col_append_fstr(pinfo->cinfo, COL_INFO, "SA7bit: %u", sa_bit_id);
- sa_bit_id = -1;
+ col_append_str(pinfo->cinfo, COL_INFO, " | ");
+ col_append_fstr(pinfo->cinfo, COL_INFO, "SA7bit: %u", sa_bit_id);
+ sa_bit_id = -1;
} else {};
if (link_status_operational > -1) {
- if (link_status_operational == 0) {
- col_append_str(pinfo->cinfo, COL_INFO, " | operational");
- }
- else if (link_status_operational == 1) {
- col_append_str(pinfo->cinfo, COL_INFO, " | non-operational");
- }else {
- }
- link_status_operational = -1;
+ if (link_status_operational == 0) {
+ col_append_str(pinfo->cinfo, COL_INFO, " | operational");
+ }
+ else if (link_status_operational == 1) {
+ col_append_str(pinfo->cinfo, COL_INFO, " | non-operational");
+ }else {
+ }
+ link_status_operational = -1;
} else {};
}
@@ -1400,86 +1400,86 @@ dissect_v5ua(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
gint offset, remaining_length, length, tag, one_bit;
-/* Set up structures needed to add the protocol subtree and manage it */
- proto_tree *v5ua_tree;
- proto_item *ti;
-
-/* Make entries in Protocol column and Info column on summary display */
- col_set_str(pinfo->cinfo, COL_PROTOCOL, "V5UA");
-/* end */
- col_clear(pinfo->cinfo, COL_INFO);
- if (tree) {
-/* create display subtree for the protocol */
- ti = proto_tree_add_item(tree, proto_v5ua, tvb, 0, -1, ENC_NA);
- v5ua_tree = proto_item_add_subtree(ti, ett_v5ua);
- }
- else {
- v5ua_tree=NULL;
- };
-
- /* detect version of IUA */
+ /* Set up structures needed to add the protocol subtree and manage it */
+ proto_tree *v5ua_tree;
+ proto_item *ti;
+
+ /* Make entries in Protocol column and Info column on summary display */
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "V5UA");
+ /* end */
+ col_clear(pinfo->cinfo, COL_INFO);
+ if (tree) {
+ /* create display subtree for the protocol */
+ ti = proto_tree_add_item(tree, proto_v5ua, tvb, 0, -1, ENC_NA);
+ v5ua_tree = proto_item_add_subtree(ti, ett_v5ua);
+ }
+ else {
+ v5ua_tree=NULL;
+ };
+
+ /* detect version of IUA */
iua_version = RFC;
offset = COMMON_HEADER_LENGTH;
remaining_length = tvb_length_remaining(tvb, offset);
while(remaining_length) {
- tag = tvb_get_ntohs(tvb, offset);
- /*0x01,0x03: Inerface Id (draft&RFC)*/
- if(tag==0x1){
- length = tvb_get_ntohs(tvb, offset+2);
- tag = tvb_get_ntohs(tvb, offset+length);
- /* tag 0x5 indicates the DLCI in the V5UA-Header accoriding to RFC spec */
- if(tag==0x81){
- remaining_length = FALSE;
- }
- else{
- one_bit = tvb_get_guint8(tvb, offset+4+length+1);
- /* no indication from DLCI by tag (in the V5UA-Header according DRAFT).
- Thus the ONE-Bit within DLCI have to compare */
- if((one_bit & 0x01) == 0x01){
- iua_version = DRAFT;
- remaining_length = FALSE;
- }
- /* an indication to incorrect bit in DLCI.
- Must be include to decode an incorrect implemented message on Nortels PVG*/
- else{
- proto_item_append_text(v5ua_tree, " !! DLCI INCORRECT !!");
-
- iua_version = DRAFT;
- remaining_length = FALSE;
- }
- }
- }
- /*0x02: AL Id (draft) following after common msg header without V5UA header*/
- else if(tag==0x02){
- iua_version = DRAFT;
- remaining_length = FALSE;
- }
- /*0x03: Text formatted IId SHALL not be supported by draft*/
- else if(tag==0x03){
- iua_version = RFC;
- remaining_length = FALSE;
- }
- else if(tag==0x11){
- remaining_length = FALSE;
- }
- /*ASP, Notify and Error messages (RFC) only contain common msg header followed by parameter*/
- else if(tag==0x04 || tag == 0x0a || tag == 0x0b || tag == 0x0c || tag == 0x0d){
- remaining_length = FALSE;
- }
- else{
- offset+=2;
- remaining_length = tvb_length_remaining(tvb, offset);
- }
- /* add a notice for the draft version */
- if(iua_version == DRAFT){
- col_set_str(pinfo->cinfo, COL_PROTOCOL, "V5UA (draft)");
- }
+ tag = tvb_get_ntohs(tvb, offset);
+ /*0x01,0x03: Inerface Id (draft&RFC)*/
+ if(tag==0x1){
+ length = tvb_get_ntohs(tvb, offset+2);
+ tag = tvb_get_ntohs(tvb, offset+length);
+ /* tag 0x5 indicates the DLCI in the V5UA-Header accoriding to RFC spec */
+ if(tag==0x81){
+ remaining_length = FALSE;
+ }
+ else{
+ one_bit = tvb_get_guint8(tvb, offset+4+length+1);
+ /* no indication from DLCI by tag (in the V5UA-Header according DRAFT).
+ Thus the ONE-Bit within DLCI have to compare */
+ if((one_bit & 0x01) == 0x01){
+ iua_version = DRAFT;
+ remaining_length = FALSE;
+ }
+ /* an indication to incorrect bit in DLCI.
+ Must be include to decode an incorrect implemented message on Nortels PVG*/
+ else{
+ proto_item_append_text(v5ua_tree, " !! DLCI INCORRECT !!");
+
+ iua_version = DRAFT;
+ remaining_length = FALSE;
+ }
+ }
+ }
+ /*0x02: AL Id (draft) following after common msg header without V5UA header*/
+ else if(tag==0x02){
+ iua_version = DRAFT;
+ remaining_length = FALSE;
+ }
+ /*0x03: Text formatted IId SHALL not be supported by draft*/
+ else if(tag==0x03){
+ iua_version = RFC;
+ remaining_length = FALSE;
+ }
+ else if(tag==0x11){
+ remaining_length = FALSE;
+ }
+ /*ASP, Notify and Error messages (RFC) only contain common msg header followed by parameter*/
+ else if(tag==0x04 || tag == 0x0a || tag == 0x0b || tag == 0x0c || tag == 0x0d){
+ remaining_length = FALSE;
+ }
+ else{
+ offset+=2;
+ remaining_length = tvb_length_remaining(tvb, offset);
+ }
+ /* add a notice for the draft version */
+ if(iua_version == DRAFT){
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "V5UA (draft)");
+ }
}
/* dissect the message */
- dissect_v5ua_message(tvb, pinfo, tree, v5ua_tree);
+ dissect_v5ua_message(tvb, pinfo, tree, v5ua_tree);
}
@@ -1492,197 +1492,197 @@ void
proto_register_v5ua(void)
{
-/* Setup list of header fields */
- static hf_register_info hf[] = {
- { &hf_version,
- { "Version", "v5ua.version",
- FT_UINT8, BASE_DEC, VALS(v5ua_protocol_version_values),0x0,
- NULL, HFILL } },
- { &hf_reserved,
- { "Reserved", "v5ua.reserved",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL } },
- { &hf_msg_class,
- { "Message class", "v5ua.msg_class",
- FT_UINT8, BASE_DEC, VALS(msg_class_values), 0x0,
- NULL, HFILL } },
- { &hf_msg_type,
- { "Message Type", "v5ua.msg_type",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL } },
+ /* Setup list of header fields */
+ static hf_register_info hf[] = {
+ { &hf_version,
+ { "Version", "v5ua.version",
+ FT_UINT8, BASE_DEC, VALS(v5ua_protocol_version_values), 0x0,
+ NULL, HFILL } },
+ { &hf_reserved,
+ { "Reserved", "v5ua.reserved",
+ FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL } },
+ { &hf_msg_class,
+ { "Message class", "v5ua.msg_class",
+ FT_UINT8, BASE_DEC, VALS(msg_class_values), 0x0,
+ NULL, HFILL } },
+ { &hf_msg_type,
+ { "Message Type", "v5ua.msg_type",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
#if 0
- { &hf_msg_type_id,
- { "Message Type ID", "v5ua.msg_type_id",
- FT_UINT8, BASE_DEC, VALS(msg_class_type_values), 0x0,
- NULL, HFILL } },
+ { &hf_msg_type_id,
+ { "Message Type ID", "v5ua.msg_type_id",
+ FT_UINT8, BASE_DEC, VALS(msg_class_type_values), 0x0,
+ NULL, HFILL } },
#endif
- { &hf_msg_length,
- { "Message length", "v5ua.msg_length",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- NULL, HFILL } },
- { &hf_link_id,
- { "Link Identifier", "v5ua.link_id",
- FT_UINT32, BASE_DEC, NULL, 0xffffffe0,
- NULL, HFILL } },
- { &hf_chnl_id,
- { "Channel Identifier", "v5ua.channel_id",
- FT_UINT8, BASE_DEC, NULL, 0x1f,
- NULL, HFILL } },
-
- { &hf_adaptation_layer_id,
- { "Adaptation Layer ID", "v5ua.adaptation_layer_id",
- FT_STRING, BASE_NONE,NULL, 0x0,
- NULL, HFILL } },
- { &hf_text_if_id,
- { "Text interface identifier","v5ua.text_interface_id",
- FT_STRING, BASE_NONE,NULL, 0x0,
- NULL, HFILL } },
- { &hf_scn_protocol_id,
- { "SCN Protocol Identifier","v5ua.scn_protocol_id",
- FT_STRING, BASE_NONE,NULL, 0x0,
- NULL, HFILL } },
- { &hf_info_string,
- { "Info String", "v5ua.info_string",
- FT_STRING, BASE_NONE,NULL, 0x0,
- NULL, HFILL } },
- { &hf_asp_identifier,
- { "ASP Identifier", "v5ua.asp_identifier",
- FT_UINT32, BASE_HEX, NULL, 0x0,
- NULL, HFILL } },
- { &hf_dlci_zero_bit,
- { "Zero bit", "v5ua.dlci_zero_bit",
- FT_BOOLEAN, 8, NULL, 0x01,
- NULL, HFILL } },
- { &hf_dlci_spare_bit,
- { "Spare bit", "v5ua.dlci_spare_bit",
- FT_BOOLEAN, 8, NULL, 0x02,
- NULL, HFILL } },
- { &hf_dlci_sapi,
- { "SAPI", "v5ua.dlci_sapi",
- FT_UINT8, BASE_HEX, NULL, 0xfc,
- NULL, HFILL } },
- { &hf_dlci_one_bit,
- { "One bit", "v5ua.dlci_one_bit",
- FT_BOOLEAN, 8, NULL, 0x01,
- NULL, HFILL } },
- { &hf_dlci_tei,
- { "TEI", "v5ua.dlci_tei",
- FT_UINT8, BASE_HEX, NULL, 0xfe,
- NULL, HFILL } },
- { &hf_efa,
- { "Envelope Function Address","v5ua.efa",
- FT_UINT16, BASE_DEC, VALS(efa_values), 0x0,
- NULL, HFILL } },
+ { &hf_msg_length,
+ { "Message length", "v5ua.msg_length",
+ FT_UINT32, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
+ { &hf_link_id,
+ { "Link Identifier", "v5ua.link_id",
+ FT_UINT32, BASE_DEC, NULL, 0xffffffe0,
+ NULL, HFILL } },
+ { &hf_chnl_id,
+ { "Channel Identifier", "v5ua.channel_id",
+ FT_UINT8, BASE_DEC, NULL, 0x1f,
+ NULL, HFILL } },
+
+ { &hf_adaptation_layer_id,
+ { "Adaptation Layer ID", "v5ua.adaptation_layer_id",
+ FT_STRING, BASE_NONE,NULL, 0x0,
+ NULL, HFILL } },
+ { &hf_text_if_id,
+ { "Text interface identifier","v5ua.text_interface_id",
+ FT_STRING, BASE_NONE,NULL, 0x0,
+ NULL, HFILL } },
+ { &hf_scn_protocol_id,
+ { "SCN Protocol Identifier","v5ua.scn_protocol_id",
+ FT_STRING, BASE_NONE,NULL, 0x0,
+ NULL, HFILL } },
+ { &hf_info_string,
+ { "Info String", "v5ua.info_string",
+ FT_STRING, BASE_NONE,NULL, 0x0,
+ NULL, HFILL } },
+ { &hf_asp_identifier,
+ { "ASP Identifier", "v5ua.asp_identifier",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ NULL, HFILL } },
+ { &hf_dlci_zero_bit,
+ { "Zero bit", "v5ua.dlci_zero_bit",
+ FT_BOOLEAN, 8, NULL, 0x01,
+ NULL, HFILL } },
+ { &hf_dlci_spare_bit,
+ { "Spare bit", "v5ua.dlci_spare_bit",
+ FT_BOOLEAN, 8, NULL, 0x02,
+ NULL, HFILL } },
+ { &hf_dlci_sapi,
+ { "SAPI", "v5ua.dlci_sapi",
+ FT_UINT8, BASE_HEX, NULL, 0xfc,
+ NULL, HFILL } },
+ { &hf_dlci_one_bit,
+ { "One bit", "v5ua.dlci_one_bit",
+ FT_BOOLEAN, 8, NULL, 0x01,
+ NULL, HFILL } },
+ { &hf_dlci_tei,
+ { "TEI", "v5ua.dlci_tei",
+ FT_UINT8, BASE_HEX, NULL, 0xfe,
+ NULL, HFILL } },
+ { &hf_efa,
+ { "Envelope Function Address","v5ua.efa",
+ FT_UINT16, BASE_DEC, VALS(efa_values), 0x0,
+ NULL, HFILL } },
#if 0
- { &hf_spare_efa,
- { "Envelope Function Address (spare)","v5ua.efa",
- FT_UINT16, BASE_DEC, NULL, ~7,
- NULL, HFILL } },
+ { &hf_spare_efa,
+ { "Envelope Function Address (spare)","v5ua.efa",
+ FT_UINT16, BASE_DEC, NULL, ~7,
+ NULL, HFILL } },
#endif
- { &hf_asp_reason,
- { "Reason", "v5ua.asp_reason",
- FT_UINT32, BASE_HEX, VALS(asp_reason_values), 0x0,
- NULL, HFILL } },
- { &hf_release_reason,
- { "Release Reason", "v5ua.release_reason",
- FT_UINT32, BASE_HEX, VALS(release_reason_values), 0x0,
- NULL, HFILL } },
- { &hf_tei_status,
- { "TEI status", "v5ua.tei_status",
- FT_UINT32, BASE_HEX, VALS(tei_status_values), 0x0,
- NULL, HFILL } },
- { &hf_tei_draft_status,
- { "TEI status", "v5ua.tei_draft_status",
- FT_UINT32, BASE_HEX, VALS(tei_draft_status_values), 0x0,
- NULL, HFILL } },
- { &hf_link_status,
- { "Link Status", "v5ua.link_status",
- FT_UINT32, BASE_HEX, VALS(link_status_values), 0x0,
- NULL, HFILL } },
- { &hf_sa_bit_id,
- { "BIT ID", "v5ua.sa_bit_id",
- FT_UINT16, BASE_HEX, VALS(sa_bit_values), 0x0,
- NULL, HFILL } },
- { &hf_sa_bit_value,
- { "Bit Value", "v5ua.sa_bit_value",
- FT_UINT16, BASE_HEX, VALS(sa_bit_values), 0x0,
- NULL, HFILL } },
- { &hf_parameter_tag,
- { "Parameter Tag", "v5ua.parameter_tag",
- FT_UINT16, BASE_HEX, VALS(parameter_tag_values), 0x0,
- NULL, HFILL } },
- { &hf_parameter_tag_draft,
- { "Parameter Tag", "v5ua.parameter_tag",
- FT_UINT16, BASE_HEX, VALS(parameter_tag_draft_values), 0x0,
- NULL, HFILL } },
- { &hf_parameter_length,
- { "Parameter length", "v5ua.parameter_length",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL } },
- { &hf_parameter_value,
- { "Parameter value", "v5ua.parameter_value",
- FT_BYTES, BASE_NONE,NULL, 0x0,
- NULL, HFILL } },
- { &hf_parameter_padding,
- { "Parameter padding", "v5ua.parameter_padding",
- FT_BYTES, BASE_NONE,NULL, 0x0,
- NULL, HFILL } },
- { &hf_diagnostic_info,
- { "Diagnostic Information", "v5ua.diagnostic_info",
- FT_BYTES, BASE_NONE,NULL, 0x0,
- NULL, HFILL } },
- { &hf_if_range_start,
- { "Interface range Start", "v5ua.interface_range_start",
- FT_UINT32, BASE_HEX, NULL, 0x0,
- NULL, HFILL } },
- { &hf_if_range_end,
- { "Interface range End", "v5ua.interface_range_end",
- FT_UINT32, BASE_HEX, NULL, 0x0,
- NULL, HFILL } },
- { &hf_heartbeat_data,
- { "Heartbeat data", "v5ua.heartbeat_data",
- FT_BYTES, BASE_NONE,NULL, 0x0,
- NULL, HFILL } },
- { &hf_traffic_mode_type,
- { "Traffic mode type", "v5ua.traffic_mode_type",
- FT_UINT32, BASE_HEX, VALS(traffic_mode_type_values), 0x0,
- NULL, HFILL } },
- { &hf_error_code,
- { "Error code", "v5ua.error_code",
- FT_UINT32, BASE_HEX, VALS(error_code_values), 0x0,
- NULL, HFILL } },
- { &hf_draft_error_code,
- { "Error code (draft)", "v5ua.draft_error_code",
- FT_UINT32, BASE_HEX, VALS(draft_error_code_values), 0x0,
- NULL, HFILL } },
- { &hf_status_type,
- { "Status type", "v5ua.status_type",
- FT_UINT16, BASE_DEC, VALS(status_type_values), 0x0,
- NULL, HFILL } },
- { &hf_status_id,
- { "Status identification", "v5ua.status_id",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL } },
- { &hf_error_reason,
- { "Error Reason", "v5ua.error_reason",
- FT_UINT32, BASE_HEX, VALS(error_reason_values), 0x0,
- NULL, HFILL } }
- };
-
-/* Setup protocol subtree array */
- static gint *ett[] = {
- &ett_v5ua,
- &ett_v5ua_common_header,
- &ett_v5ua_parameter,
- &ett_v5ua_layer3
- };
-
-/* Register the protocol name and description */
- proto_v5ua = proto_register_protocol("V5.2-User Adaptation Layer", "V5UA", "v5ua");
-
-/* Required function calls to register the header fields and subtrees used */
- proto_register_field_array(proto_v5ua, hf, array_length(hf));
- proto_register_subtree_array(ett, array_length(ett));
+ { &hf_asp_reason,
+ { "Reason", "v5ua.asp_reason",
+ FT_UINT32, BASE_HEX, VALS(asp_reason_values), 0x0,
+ NULL, HFILL } },
+ { &hf_release_reason,
+ { "Release Reason", "v5ua.release_reason",
+ FT_UINT32, BASE_HEX, VALS(release_reason_values), 0x0,
+ NULL, HFILL } },
+ { &hf_tei_status,
+ { "TEI status", "v5ua.tei_status",
+ FT_UINT32, BASE_HEX, VALS(tei_status_values), 0x0,
+ NULL, HFILL } },
+ { &hf_tei_draft_status,
+ { "TEI status", "v5ua.tei_draft_status",
+ FT_UINT32, BASE_HEX, VALS(tei_draft_status_values), 0x0,
+ NULL, HFILL } },
+ { &hf_link_status,
+ { "Link Status", "v5ua.link_status",
+ FT_UINT32, BASE_HEX, VALS(link_status_values), 0x0,
+ NULL, HFILL } },
+ { &hf_sa_bit_id,
+ { "BIT ID", "v5ua.sa_bit_id",
+ FT_UINT16, BASE_HEX, VALS(sa_bit_values), 0x0,
+ NULL, HFILL } },
+ { &hf_sa_bit_value,
+ { "Bit Value", "v5ua.sa_bit_value",
+ FT_UINT16, BASE_HEX, VALS(sa_bit_values), 0x0,
+ NULL, HFILL } },
+ { &hf_parameter_tag,
+ { "Parameter Tag", "v5ua.parameter_tag",
+ FT_UINT16, BASE_HEX, VALS(parameter_tag_values), 0x0,
+ NULL, HFILL } },
+ { &hf_parameter_tag_draft,
+ { "Parameter Tag", "v5ua.parameter_tag",
+ FT_UINT16, BASE_HEX, VALS(parameter_tag_draft_values), 0x0,
+ NULL, HFILL } },
+ { &hf_parameter_length,
+ { "Parameter length", "v5ua.parameter_length",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
+ { &hf_parameter_value,
+ { "Parameter value", "v5ua.parameter_value",
+ FT_BYTES, BASE_NONE,NULL, 0x0,
+ NULL, HFILL } },
+ { &hf_parameter_padding,
+ { "Parameter padding", "v5ua.parameter_padding",
+ FT_BYTES, BASE_NONE,NULL, 0x0,
+ NULL, HFILL } },
+ { &hf_diagnostic_info,
+ { "Diagnostic Information", "v5ua.diagnostic_info",
+ FT_BYTES, BASE_NONE,NULL, 0x0,
+ NULL, HFILL } },
+ { &hf_if_range_start,
+ { "Interface range Start", "v5ua.interface_range_start",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ NULL, HFILL } },
+ { &hf_if_range_end,
+ { "Interface range End", "v5ua.interface_range_end",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ NULL, HFILL } },
+ { &hf_heartbeat_data,
+ { "Heartbeat data", "v5ua.heartbeat_data",
+ FT_BYTES, BASE_NONE,NULL, 0x0,
+ NULL, HFILL } },
+ { &hf_traffic_mode_type,
+ { "Traffic mode type", "v5ua.traffic_mode_type",
+ FT_UINT32, BASE_HEX, VALS(traffic_mode_type_values), 0x0,
+ NULL, HFILL } },
+ { &hf_error_code,
+ { "Error code", "v5ua.error_code",
+ FT_UINT32, BASE_HEX, VALS(error_code_values), 0x0,
+ NULL, HFILL } },
+ { &hf_draft_error_code,
+ { "Error code (draft)", "v5ua.draft_error_code",
+ FT_UINT32, BASE_HEX, VALS(draft_error_code_values), 0x0,
+ NULL, HFILL } },
+ { &hf_status_type,
+ { "Status type", "v5ua.status_type",
+ FT_UINT16, BASE_DEC, VALS(status_type_values), 0x0,
+ NULL, HFILL } },
+ { &hf_status_id,
+ { "Status identification", "v5ua.status_id",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL } },
+ { &hf_error_reason,
+ { "Error Reason", "v5ua.error_reason",
+ FT_UINT32, BASE_HEX, VALS(error_reason_values), 0x0,
+ NULL, HFILL } }
+ };
+
+ /* Setup protocol subtree array */
+ static gint *ett[] = {
+ &ett_v5ua,
+ &ett_v5ua_common_header,
+ &ett_v5ua_parameter,
+ &ett_v5ua_layer3
+ };
+
+ /* Register the protocol name and description */
+ proto_v5ua = proto_register_protocol("V5.2-User Adaptation Layer", "V5UA", "v5ua");
+
+ /* Required function calls to register the header fields and subtrees used */
+ proto_register_field_array(proto_v5ua, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
}
@@ -1693,13 +1693,26 @@ proto_register_v5ua(void)
void
proto_reg_handoff_v5ua(void)
{
- dissector_handle_t v5ua_handle;
+ dissector_handle_t v5ua_handle;
- v5ua_handle = create_dissector_handle(dissect_v5ua, proto_v5ua);
- q931_handle = find_dissector("q931");
- v52_handle = find_dissector("v52");
+ v5ua_handle = create_dissector_handle(dissect_v5ua, proto_v5ua);
+ q931_handle = find_dissector("q931");
+ v52_handle = find_dissector("v52");
- dissector_add_uint("sctp.port", SCTP_PORT_V5UA_DRAFT, v5ua_handle);
- dissector_add_uint("sctp.port", SCTP_PORT_V5UA_RFC, v5ua_handle);
- dissector_add_uint("sctp.ppi", V5UA_PAYLOAD_PROTOCOL_ID, v5ua_handle);
+ dissector_add_uint("sctp.port", SCTP_PORT_V5UA_DRAFT, v5ua_handle);
+ dissector_add_uint("sctp.port", SCTP_PORT_V5UA_RFC, v5ua_handle);
+ dissector_add_uint("sctp.ppi", V5UA_PAYLOAD_PROTOCOL_ID, v5ua_handle);
}
+
+/*
+ * Editor modelines - http://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:
+ */