aboutsummaryrefslogtreecommitdiffstats
path: root/epan
diff options
context:
space:
mode:
authorBill Meier <wmeier@newsguy.com>2010-11-05 22:44:03 +0000
committerBill Meier <wmeier@newsguy.com>2010-11-05 22:44:03 +0000
commitb78ec5269315ff54b7643df9e5deb8a574224bb2 (patch)
tree268bfcebff2389346229cce5f013daa0ac4bef6d /epan
parent76bc0e537bbb8d55dbfa9b46f1a54bcc02aaadf4 (diff)
Use value_string_ext fcns to access certain value_string arrays;
Sort certain value_string arrays so the values are in ascending order; Use val_to_str_ext() instead of for loops to do value_string array lookups (voip_calls.c). Minor whitespace cleanup. svn path=/trunk/; revision=34794
Diffstat (limited to 'epan')
-rw-r--r--epan/dissectors/packet-camel.c4
-rw-r--r--epan/dissectors/packet-gsm_a_dtap.c6
-rw-r--r--epan/dissectors/packet-h225.c2
-rw-r--r--epan/dissectors/packet-h248_annex_c.c2
-rw-r--r--epan/dissectors/packet-h248_q1950.c2
-rw-r--r--epan/dissectors/packet-inap.c2
-rw-r--r--epan/dissectors/packet-isup.c8660
-rw-r--r--epan/dissectors/packet-isup.h243
-rw-r--r--epan/dissectors/packet-q931.c184
-rw-r--r--epan/dissectors/packet-q931.h102
-rw-r--r--epan/dissectors/packet-sip.c2
-rw-r--r--epan/libwireshark.def9
12 files changed, 4690 insertions, 4528 deletions
diff --git a/epan/dissectors/packet-camel.c b/epan/dissectors/packet-camel.c
index a1edba1b98..b8a41aef2d 100644
--- a/epan/dissectors/packet-camel.c
+++ b/epan/dissectors/packet-camel.c
@@ -7102,7 +7102,7 @@ void proto_register_camel(void) {
"ERROR code", HFILL }},
{ &hf_camel_cause_indicator, /* Currently not enabled */
{ "Cause indicator", "camel.cause_indicator",
- FT_UINT8, BASE_DEC, VALS(q850_cause_code_vals), 0x7f,
+ FT_UINT8, BASE_DEC|BASE_EXT_STRING, &q850_cause_code_vals_ext, 0x7f,
NULL, HFILL }},
{ &hf_digit,
{ "Digit Value", "camel.digit_value",
@@ -8654,7 +8654,7 @@ void proto_register_camel(void) {
NULL, HFILL }},
{ &hf_camel_callingPartysCategory,
{ "callingPartysCategory", "camel.callingPartysCategory",
- FT_UINT16, BASE_DEC, VALS(isup_calling_partys_category_value), 0,
+ FT_UINT16, BASE_DEC|BASE_EXT_STRING, &isup_calling_partys_category_value_ext, 0,
NULL, HFILL }},
{ &hf_camel_redirectingPartyID,
{ "redirectingPartyID", "camel.redirectingPartyID",
diff --git a/epan/dissectors/packet-gsm_a_dtap.c b/epan/dissectors/packet-gsm_a_dtap.c
index 2addbda9cb..ac4f9596aa 100644
--- a/epan/dissectors/packet-gsm_a_dtap.c
+++ b/epan/dissectors/packet-gsm_a_dtap.c
@@ -2307,7 +2307,7 @@ de_call_state(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gc
case 0:
proto_tree_add_uint_format_value(subtree, hf_gsm_a_dtap_call_state, tvb,
offset, 1, call_state, "%s (%u)",
- val_to_str(call_state, q931_call_state_vals, "Reserved"),
+ val_to_str_ext_const(call_state, &q931_call_state_vals_ext, "Reserved"),
call_state);
break;
case 1:
@@ -3030,7 +3030,7 @@ de_prog_ind(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gcha
case 0:
proto_tree_add_uint_format_value(tree, hf_gsm_a_dtap_progress_description, tvb,
curr_offset, 1, progress_description, "%s (%u)",
- val_to_str(progress_description, q931_progress_description_vals, "Reserved"),
+ val_to_str_ext_const(progress_description, &q931_progress_description_vals_ext, "Reserved"),
progress_description);
break;
case 1:
@@ -6605,7 +6605,7 @@ proto_register_gsm_a_dtap(void)
},
{ &hf_gsm_a_dtap_afi,
{ "Authority and Format Identifier", "gsm_a.dtap.afi",
- FT_UINT8, BASE_HEX, VALS(x213_afi_value), 0x0,
+ FT_UINT8, BASE_HEX|BASE_EXT_STRING, &x213_afi_value_ext, 0x0,
NULL, HFILL }
},
{ &hf_gsm_a_dtap_rej_cause,
diff --git a/epan/dissectors/packet-h225.c b/epan/dissectors/packet-h225.c
index 27fcfda329..64cd197228 100644
--- a/epan/dissectors/packet-h225.c
+++ b/epan/dissectors/packet-h225.c
@@ -7636,7 +7636,7 @@ void proto_register_h225(void) {
NULL, HFILL }},
{ &hf_h225_protocol_discriminator,
{ "protocol-discriminator", "h225.protocol_discriminator",
- FT_UINT32, BASE_DEC, VALS(q931_protocol_discriminator_vals), 0,
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &q931_protocol_discriminator_vals_ext, 0,
"INTEGER_0_255", HFILL }},
{ &hf_h225_user_information,
{ "user-information", "h225.user_information",
diff --git a/epan/dissectors/packet-h248_annex_c.c b/epan/dissectors/packet-h248_annex_c.c
index 9cacc49358..cb927cc3e5 100644
--- a/epan/dissectors/packet-h248_annex_c.c
+++ b/epan/dissectors/packet-h248_annex_c.c
@@ -1245,7 +1245,7 @@ void proto_register_h248_annex_c(void) {
{ &hf_h248_pkg_annexc_tmr,
{ "TMR", "h248.pkg.annexc.tmr",
- FT_UINT8, BASE_HEX, VALS(isup_transmission_medium_requirement_value), 0,
+ FT_UINT8, BASE_HEX|BASE_EXT_STRING, &isup_transmission_medium_requirement_value_ext, 0,
"Transmission Medium Requirement", HFILL }},
{ &hf_h248_pkg_annexc_tmrsr,
{ "TMSR", "h248.pkg.annexc.tmsr",
diff --git a/epan/dissectors/packet-h248_q1950.c b/epan/dissectors/packet-h248_q1950.c
index ef26613a62..5075930dc5 100644
--- a/epan/dissectors/packet-h248_q1950.c
+++ b/epan/dissectors/packet-h248_q1950.c
@@ -443,7 +443,7 @@ void proto_register_q1950(void) {
},
{ &hf_h248_pkg_BCP_BNCChar,
{ "BNCChar (BNC Characteristics)", "h248.pkg.bcp.bncchar",
- FT_UINT32, BASE_HEX, VALS(bearer_network_connection_characteristics_vals), 0, "BNC Characteristics", HFILL }
+ FT_UINT32, BASE_HEX|BASE_EXT_STRING, &bearer_network_connection_characteristics_vals_ext, 0, "BNC Characteristics", HFILL }
},
/* A.4 Bearer Network connection cut-through package */
diff --git a/epan/dissectors/packet-inap.c b/epan/dissectors/packet-inap.c
index 0ea1d9823f..2edc19f2c2 100644
--- a/epan/dissectors/packet-inap.c
+++ b/epan/dissectors/packet-inap.c
@@ -9985,7 +9985,7 @@ void proto_register_inap(void) {
NULL, HFILL }},
{ &hf_inap_callingPartysCategory,
{ "callingPartysCategory", "inap.callingPartysCategory",
- FT_UINT16, BASE_DEC, VALS(isup_calling_partys_category_value), 0,
+ FT_UINT16, BASE_DEC|BASE_EXT_STRING, &isup_calling_partys_category_value_ext, 0,
NULL, HFILL }},
{ &hf_inap_iPSSPCapabilities,
{ "iPSSPCapabilities", "inap.iPSSPCapabilities",
diff --git a/epan/dissectors/packet-isup.c b/epan/dissectors/packet-isup.c
index 14fb025f4a..9c4fa53b29 100644
--- a/epan/dissectors/packet-isup.c
+++ b/epan/dissectors/packet-isup.c
@@ -4,7 +4,7 @@
*
* Copyright 2004-2005, Anders Broman <anders.broman@ericsson.com>
* Modified 2003-09-10 by Anders Broman
- * <anders.broman@ericsson.com>
+ * <anders.broman@ericsson.com>
* Inserted routines for BICC dissection according to Q.765.5 Q.1902 Q.1970 Q.1990,
* calling SDP dissector for RFC2327 decoding.
* Modified 2004-01-10 by Anders Broman to add abillity to dissect
@@ -68,472 +68,481 @@ static gint isup_standard = ITU_STANDARD;
/* Definition of protocol field values und lengths */
/* Definition of Message Types */
-#define MESSAGE_TYPE_INITIAL_ADDR 1
-#define MESSAGE_TYPE_SUBSEQ_ADDR 2
-#define MESSAGE_TYPE_INFO_REQ 3
-#define MESSAGE_TYPE_INFO 4
-#define MESSAGE_TYPE_CONTINUITY 5
-#define MESSAGE_TYPE_ADDR_CMPL 6
-#define MESSAGE_TYPE_CONNECT 7
-#define MESSAGE_TYPE_FORW_TRANS 8
-#define MESSAGE_TYPE_ANSWER 9
-#define MESSAGE_TYPE_RELEASE 12
-#define MESSAGE_TYPE_SUSPEND 13
-#define MESSAGE_TYPE_RESUME 14
-#define MESSAGE_TYPE_REL_CMPL 16
-#define MESSAGE_TYPE_CONT_CHECK_REQ 17
-#define MESSAGE_TYPE_RESET_CIRCUIT 18
-#define MESSAGE_TYPE_BLOCKING 19
-#define MESSAGE_TYPE_UNBLOCKING 20
-#define MESSAGE_TYPE_BLOCK_ACK 21
-#define MESSAGE_TYPE_UNBLOCK_ACK 22
-#define MESSAGE_TYPE_CIRC_GRP_RST 23
-#define MESSAGE_TYPE_CIRC_GRP_BLCK 24
-#define MESSAGE_TYPE_CIRC_GRP_UNBL 25
-#define MESSAGE_TYPE_CIRC_GRP_BL_ACK 26
-#define MESSAGE_TYPE_CIRC_GRP_UNBL_ACK 27
-#define MESSAGE_TYPE_FACILITY_REQ 31
-#define MESSAGE_TYPE_FACILITY_ACC 32
-#define MESSAGE_TYPE_FACILITY_REJ 33
-#define MESSAGE_TYPE_LOOP_BACK_ACK 36
-#define MESSAGE_TYPE_PASS_ALONG 40
-#define MESSAGE_TYPE_CIRC_GRP_RST_ACK 41
-#define MESSAGE_TYPE_CIRC_GRP_QRY 42
-#define MESSAGE_TYPE_CIRC_GRP_QRY_RSP 43
-#define MESSAGE_TYPE_CALL_PROGRSS 44
-#define MESSAGE_TYPE_USER2USER_INFO 45
-#define MESSAGE_TYPE_UNEQUIPPED_CIC 46
-#define MESSAGE_TYPE_CONFUSION 47
-#define MESSAGE_TYPE_OVERLOAD 48
-#define MESSAGE_TYPE_CHARGE_INFO 49
-#define MESSAGE_TYPE_NETW_RESRC_MGMT 50
-#define MESSAGE_TYPE_FACILITY 51
-#define MESSAGE_TYPE_USER_PART_TEST 52
-#define MESSAGE_TYPE_USER_PART_AVAIL 53
-#define MESSAGE_TYPE_IDENT_REQ 54
-#define MESSAGE_TYPE_IDENT_RSP 55
-#define MESSAGE_TYPE_SEGMENTATION 56
-#define MESSAGE_TYPE_LOOP_PREVENTION 64
-#define MESSAGE_TYPE_APPLICATION_TRANS 65
-#define MESSAGE_TYPE_PRE_RELEASE_INFO 66
+#define MESSAGE_TYPE_INITIAL_ADDR 1
+#define MESSAGE_TYPE_SUBSEQ_ADDR 2
+#define MESSAGE_TYPE_INFO_REQ 3
+#define MESSAGE_TYPE_INFO 4
+#define MESSAGE_TYPE_CONTINUITY 5
+#define MESSAGE_TYPE_ADDR_CMPL 6
+#define MESSAGE_TYPE_CONNECT 7
+#define MESSAGE_TYPE_FORW_TRANS 8
+#define MESSAGE_TYPE_ANSWER 9
+#define MESSAGE_TYPE_RELEASE 12
+#define MESSAGE_TYPE_SUSPEND 13
+#define MESSAGE_TYPE_RESUME 14
+#define MESSAGE_TYPE_REL_CMPL 16
+#define MESSAGE_TYPE_CONT_CHECK_REQ 17
+#define MESSAGE_TYPE_RESET_CIRCUIT 18
+#define MESSAGE_TYPE_BLOCKING 19
+#define MESSAGE_TYPE_UNBLOCKING 20
+#define MESSAGE_TYPE_BLOCK_ACK 21
+#define MESSAGE_TYPE_UNBLOCK_ACK 22
+#define MESSAGE_TYPE_CIRC_GRP_RST 23
+#define MESSAGE_TYPE_CIRC_GRP_BLCK 24
+#define MESSAGE_TYPE_CIRC_GRP_UNBL 25
+#define MESSAGE_TYPE_CIRC_GRP_BL_ACK 26
+#define MESSAGE_TYPE_CIRC_GRP_UNBL_ACK 27
+#define MESSAGE_TYPE_FACILITY_REQ 31
+#define MESSAGE_TYPE_FACILITY_ACC 32
+#define MESSAGE_TYPE_FACILITY_REJ 33
+#define MESSAGE_TYPE_LOOP_BACK_ACK 36
+#define MESSAGE_TYPE_PASS_ALONG 40
+#define MESSAGE_TYPE_CIRC_GRP_RST_ACK 41
+#define MESSAGE_TYPE_CIRC_GRP_QRY 42
+#define MESSAGE_TYPE_CIRC_GRP_QRY_RSP 43
+#define MESSAGE_TYPE_CALL_PROGRSS 44
+#define MESSAGE_TYPE_USER2USER_INFO 45
+#define MESSAGE_TYPE_UNEQUIPPED_CIC 46
+#define MESSAGE_TYPE_CONFUSION 47
+#define MESSAGE_TYPE_OVERLOAD 48
+#define MESSAGE_TYPE_CHARGE_INFO 49
+#define MESSAGE_TYPE_NETW_RESRC_MGMT 50
+#define MESSAGE_TYPE_FACILITY 51
+#define MESSAGE_TYPE_USER_PART_TEST 52
+#define MESSAGE_TYPE_USER_PART_AVAIL 53
+#define MESSAGE_TYPE_IDENT_REQ 54
+#define MESSAGE_TYPE_IDENT_RSP 55
+#define MESSAGE_TYPE_SEGMENTATION 56
+#define MESSAGE_TYPE_LOOP_PREVENTION 64
+#define MESSAGE_TYPE_APPLICATION_TRANS 65
+#define MESSAGE_TYPE_PRE_RELEASE_INFO 66
#define MESSAGE_TYPE_SUBSEQUENT_DIR_NUM 67
-#define ANSI_ISUP_MESSAGE_TYPE_CIRCUIT_RES_ACK 0xE9
-#define ANSI_ISUP_MESSAGE_TYPE_CIRCUIT_RES 0xEA
-#define ANSI_ISUP_MESSAGE_TYPE_CCT_VAL_TEST_RSP 0xEB
-#define ANSI_ISUP_MESSAGE_TYPE_CCT_VAL_TEST 0xEC
-#define ANSI_ISUP_MESSAGE_TYPE_EXIT 0xED
-
-const value_string isup_message_type_value[] = {
- { MESSAGE_TYPE_INITIAL_ADDR, "Initial address"},
- { MESSAGE_TYPE_SUBSEQ_ADDR, "Subsequent address"},
- { MESSAGE_TYPE_INFO_REQ, "Information request (national use)"},
- { MESSAGE_TYPE_INFO, "Information (national use)"},
- { MESSAGE_TYPE_CONTINUITY, "Continuity"},
- { MESSAGE_TYPE_ADDR_CMPL, "Address complete"},
- { MESSAGE_TYPE_CONNECT, "Connect"},
- { MESSAGE_TYPE_FORW_TRANS, "Forward transfer"},
- { MESSAGE_TYPE_ANSWER, "Answer"},
- { MESSAGE_TYPE_RELEASE, "Release"},
- { MESSAGE_TYPE_SUSPEND, "Suspend"},
- { MESSAGE_TYPE_RESUME, "Resume"},
- { MESSAGE_TYPE_REL_CMPL, "Release complete"},
- { MESSAGE_TYPE_CONT_CHECK_REQ, "Continuity check request"},
- { MESSAGE_TYPE_RESET_CIRCUIT, "Reset Circuit"},
- { MESSAGE_TYPE_BLOCKING, "Blocking"},
- { MESSAGE_TYPE_UNBLOCKING, "Unblocking"},
- { MESSAGE_TYPE_BLOCK_ACK, "Blocking acknowledgement"},
- { MESSAGE_TYPE_UNBLOCK_ACK, "Unblocking acknowledgment"},
- { MESSAGE_TYPE_CIRC_GRP_RST, "Circuit group reset"},
- { MESSAGE_TYPE_CIRC_GRP_BLCK, "Circuit group blocking"},
- { MESSAGE_TYPE_CIRC_GRP_UNBL, "Circuit group unblocking"},
- { MESSAGE_TYPE_CIRC_GRP_BL_ACK, "Circuit group blocking acknowledgement"},
- { MESSAGE_TYPE_CIRC_GRP_UNBL_ACK, "Circuit group unblocking acknowledgement"},
- { MESSAGE_TYPE_FACILITY_REQ, "Facility request"},
- { MESSAGE_TYPE_FACILITY_ACC, "Facility accepted"},
- { MESSAGE_TYPE_FACILITY_REJ, "Facility reject"},
- { MESSAGE_TYPE_LOOP_BACK_ACK, "Loop back acknowledgement (national use)"},
- { MESSAGE_TYPE_PASS_ALONG, "Pass-along (national use)"},
- { MESSAGE_TYPE_CIRC_GRP_RST_ACK, "Circuit group reset acknowledgement"},
- { MESSAGE_TYPE_CIRC_GRP_QRY, "Circuit group query (national use)"},
- { MESSAGE_TYPE_CIRC_GRP_QRY_RSP, "Circuit group query response (national use)"},
- { MESSAGE_TYPE_CALL_PROGRSS, "Call progress"},
- { MESSAGE_TYPE_USER2USER_INFO, "User-to-user information"},
- { MESSAGE_TYPE_UNEQUIPPED_CIC, "Unequipped CIC (national use)"},
- { MESSAGE_TYPE_CONFUSION, "Confusion"},
- { MESSAGE_TYPE_OVERLOAD, "Overload (national use)"},
- { MESSAGE_TYPE_CHARGE_INFO, "Charge information (national use)"},
- { MESSAGE_TYPE_NETW_RESRC_MGMT, "Network resource management"},
- { MESSAGE_TYPE_FACILITY, "Facility"},
- { MESSAGE_TYPE_USER_PART_TEST, "User part test"},
- { MESSAGE_TYPE_USER_PART_AVAIL, "User part available"},
- { MESSAGE_TYPE_IDENT_REQ, "Identification request"},
- { MESSAGE_TYPE_IDENT_RSP, "Identification response"},
- { MESSAGE_TYPE_SEGMENTATION, "Segmentation"},
- { MESSAGE_TYPE_LOOP_PREVENTION, "Loop prevention"},
- { MESSAGE_TYPE_APPLICATION_TRANS, "Application transport"},
- { MESSAGE_TYPE_PRE_RELEASE_INFO, "Pre-release information"},
- { MESSAGE_TYPE_SUBSEQUENT_DIR_NUM, "Subsequent Directory Number (national use)"},
+#define ANSI_ISUP_MESSAGE_TYPE_CIRCUIT_RES_ACK 0xE9
+#define ANSI_ISUP_MESSAGE_TYPE_CIRCUIT_RES 0xEA
+#define ANSI_ISUP_MESSAGE_TYPE_CCT_VAL_TEST_RSP 0xEB
+#define ANSI_ISUP_MESSAGE_TYPE_CCT_VAL_TEST 0xEC
+#define ANSI_ISUP_MESSAGE_TYPE_EXIT 0xED
+
+static const value_string isup_message_type_value[] = {
+ { MESSAGE_TYPE_INITIAL_ADDR, "Initial address"},
+ { MESSAGE_TYPE_SUBSEQ_ADDR, "Subsequent address"},
+ { MESSAGE_TYPE_INFO_REQ, "Information request (national use)"},
+ { MESSAGE_TYPE_INFO, "Information (national use)"},
+ { MESSAGE_TYPE_CONTINUITY, "Continuity"},
+ { MESSAGE_TYPE_ADDR_CMPL, "Address complete"},
+ { MESSAGE_TYPE_CONNECT, "Connect"},
+ { MESSAGE_TYPE_FORW_TRANS, "Forward transfer"},
+ { MESSAGE_TYPE_ANSWER, "Answer"},
+ { MESSAGE_TYPE_RELEASE, "Release"},
+ { MESSAGE_TYPE_SUSPEND, "Suspend"},
+ { MESSAGE_TYPE_RESUME, "Resume"},
+ { MESSAGE_TYPE_REL_CMPL, "Release complete"},
+ { MESSAGE_TYPE_CONT_CHECK_REQ, "Continuity check request"},
+ { MESSAGE_TYPE_RESET_CIRCUIT, "Reset Circuit"},
+ { MESSAGE_TYPE_BLOCKING, "Blocking"},
+ { MESSAGE_TYPE_UNBLOCKING, "Unblocking"},
+ { MESSAGE_TYPE_BLOCK_ACK, "Blocking acknowledgement"},
+ { MESSAGE_TYPE_UNBLOCK_ACK, "Unblocking acknowledgment"},
+ { MESSAGE_TYPE_CIRC_GRP_RST, "Circuit group reset"},
+ { MESSAGE_TYPE_CIRC_GRP_BLCK, "Circuit group blocking"},
+ { MESSAGE_TYPE_CIRC_GRP_UNBL, "Circuit group unblocking"},
+ { MESSAGE_TYPE_CIRC_GRP_BL_ACK, "Circuit group blocking acknowledgement"},
+ { MESSAGE_TYPE_CIRC_GRP_UNBL_ACK, "Circuit group unblocking acknowledgement"},
+ { MESSAGE_TYPE_FACILITY_REQ, "Facility request"},
+ { MESSAGE_TYPE_FACILITY_ACC, "Facility accepted"},
+ { MESSAGE_TYPE_FACILITY_REJ, "Facility reject"},
+ { MESSAGE_TYPE_LOOP_BACK_ACK, "Loop back acknowledgement (national use)"},
+ { MESSAGE_TYPE_PASS_ALONG, "Pass-along (national use)"},
+ { MESSAGE_TYPE_CIRC_GRP_RST_ACK, "Circuit group reset acknowledgement"},
+ { MESSAGE_TYPE_CIRC_GRP_QRY, "Circuit group query (national use)"},
+ { MESSAGE_TYPE_CIRC_GRP_QRY_RSP, "Circuit group query response (national use)"},
+ { MESSAGE_TYPE_CALL_PROGRSS, "Call progress"},
+ { MESSAGE_TYPE_USER2USER_INFO, "User-to-user information"},
+ { MESSAGE_TYPE_UNEQUIPPED_CIC, "Unequipped CIC (national use)"},
+ { MESSAGE_TYPE_CONFUSION, "Confusion"},
+ { MESSAGE_TYPE_OVERLOAD, "Overload (national use)"},
+ { MESSAGE_TYPE_CHARGE_INFO, "Charge information (national use)"},
+ { MESSAGE_TYPE_NETW_RESRC_MGMT, "Network resource management"},
+ { MESSAGE_TYPE_FACILITY, "Facility"},
+ { MESSAGE_TYPE_USER_PART_TEST, "User part test"},
+ { MESSAGE_TYPE_USER_PART_AVAIL, "User part available"},
+ { MESSAGE_TYPE_IDENT_REQ, "Identification request"},
+ { MESSAGE_TYPE_IDENT_RSP, "Identification response"},
+ { MESSAGE_TYPE_SEGMENTATION, "Segmentation"},
+ { MESSAGE_TYPE_LOOP_PREVENTION, "Loop prevention"},
+ { MESSAGE_TYPE_APPLICATION_TRANS, "Application transport"},
+ { MESSAGE_TYPE_PRE_RELEASE_INFO, "Pre-release information"},
+ { MESSAGE_TYPE_SUBSEQUENT_DIR_NUM, "Subsequent Directory Number (national use)"},
{ 0, NULL}};
-
- static const value_string ansi_isup_message_type_value[] = {
- { MESSAGE_TYPE_INITIAL_ADDR, "Initial address"},
- { MESSAGE_TYPE_SUBSEQ_ADDR, "Subsequent address"},
- { MESSAGE_TYPE_INFO_REQ, "Information request (national use)"},
- { MESSAGE_TYPE_INFO, "Information (national use)"},
- { MESSAGE_TYPE_CONTINUITY, "Continuity"},
- { MESSAGE_TYPE_ADDR_CMPL, "Address complete"},
- { MESSAGE_TYPE_CONNECT, "Connect"},
- { MESSAGE_TYPE_FORW_TRANS, "Forward transfer"},
- { MESSAGE_TYPE_ANSWER, "Answer"},
- { MESSAGE_TYPE_RELEASE, "Release"},
- { MESSAGE_TYPE_SUSPEND, "Suspend"},
- { MESSAGE_TYPE_RESUME, "Resume"},
- { MESSAGE_TYPE_REL_CMPL, "Release complete"},
- { MESSAGE_TYPE_CONT_CHECK_REQ, "Continuity check request"},
- { MESSAGE_TYPE_RESET_CIRCUIT, "Reset Circuit"},
- { MESSAGE_TYPE_BLOCKING, "Blocking"},
- { MESSAGE_TYPE_UNBLOCKING, "Unblocking"},
- { MESSAGE_TYPE_BLOCK_ACK, "Blocking acknowledgement"},
- { MESSAGE_TYPE_UNBLOCK_ACK, "Unblocking acknowledgment"},
- { MESSAGE_TYPE_CIRC_GRP_RST, "Circuit group reset"},
- { MESSAGE_TYPE_CIRC_GRP_BLCK, "Circuit group blocking"},
- { MESSAGE_TYPE_CIRC_GRP_UNBL, "Circuit group unblocking"},
- { MESSAGE_TYPE_CIRC_GRP_BL_ACK, "Circuit group blocking acknowledgement"},
- { MESSAGE_TYPE_CIRC_GRP_UNBL_ACK, "Circuit group unblocking acknowledgement"},
- { MESSAGE_TYPE_FACILITY_REQ, "Facility request"},
- { MESSAGE_TYPE_FACILITY_ACC, "Facility accepted"},
- { MESSAGE_TYPE_FACILITY_REJ, "Facility reject"},
- { MESSAGE_TYPE_LOOP_BACK_ACK, "Loop back acknowledgement (national use)"},
- { MESSAGE_TYPE_PASS_ALONG, "Pass-along (national use)"},
- { MESSAGE_TYPE_CIRC_GRP_RST_ACK, "Circuit group reset acknowledgement"},
- { MESSAGE_TYPE_CIRC_GRP_QRY, "Circuit group query (national use)"},
- { MESSAGE_TYPE_CIRC_GRP_QRY_RSP, "Circuit group query response (national use)"},
- { MESSAGE_TYPE_CALL_PROGRSS, "Call progress"},
- { MESSAGE_TYPE_USER2USER_INFO, "User-to-user information"},
- { MESSAGE_TYPE_UNEQUIPPED_CIC, "Unequipped CIC (national use)"},
- { MESSAGE_TYPE_CONFUSION, "Confusion"},
- { MESSAGE_TYPE_OVERLOAD, "Overload (national use)"},
- { MESSAGE_TYPE_CHARGE_INFO, "Charge information (national use)"},
- { MESSAGE_TYPE_NETW_RESRC_MGMT, "Network resource management"},
- { MESSAGE_TYPE_FACILITY, "Facility"},
- { MESSAGE_TYPE_USER_PART_TEST, "User part test"},
- { MESSAGE_TYPE_USER_PART_AVAIL, "User part available"},
- { MESSAGE_TYPE_IDENT_REQ, "Identification request"},
- { MESSAGE_TYPE_IDENT_RSP, "Identification response"},
- { MESSAGE_TYPE_SEGMENTATION, "Segmentation"},
- { MESSAGE_TYPE_LOOP_PREVENTION, "Loop prevention"},
- { MESSAGE_TYPE_APPLICATION_TRANS, "Application transport"},
- { MESSAGE_TYPE_PRE_RELEASE_INFO, "Pre-release information"},
- { MESSAGE_TYPE_SUBSEQUENT_DIR_NUM, "Subsequent Directory Number (national use)"},
- { ANSI_ISUP_MESSAGE_TYPE_CIRCUIT_RES_ACK, "Circuit Reservation Acknowledge"},
- { ANSI_ISUP_MESSAGE_TYPE_CIRCUIT_RES, "Circuit Reservation"},
- { ANSI_ISUP_MESSAGE_TYPE_CCT_VAL_TEST_RSP, "Circuit Validation Test Response"},
- { ANSI_ISUP_MESSAGE_TYPE_CCT_VAL_TEST, "Circuit Validation Test"},
- { ANSI_ISUP_MESSAGE_TYPE_EXIT, "Exit"},
+static value_string_ext isup_message_type_value_ext = VALUE_STRING_EXT_INIT(isup_message_type_value);
+
+static const value_string ansi_isup_message_type_value[] = {
+ { MESSAGE_TYPE_INITIAL_ADDR, "Initial address"},
+ { MESSAGE_TYPE_SUBSEQ_ADDR, "Subsequent address"},
+ { MESSAGE_TYPE_INFO_REQ, "Information request (national use)"},
+ { MESSAGE_TYPE_INFO, "Information (national use)"},
+ { MESSAGE_TYPE_CONTINUITY, "Continuity"},
+ { MESSAGE_TYPE_ADDR_CMPL, "Address complete"},
+ { MESSAGE_TYPE_CONNECT, "Connect"},
+ { MESSAGE_TYPE_FORW_TRANS, "Forward transfer"},
+ { MESSAGE_TYPE_ANSWER, "Answer"},
+ { MESSAGE_TYPE_RELEASE, "Release"},
+ { MESSAGE_TYPE_SUSPEND, "Suspend"},
+ { MESSAGE_TYPE_RESUME, "Resume"},
+ { MESSAGE_TYPE_REL_CMPL, "Release complete"},
+ { MESSAGE_TYPE_CONT_CHECK_REQ, "Continuity check request"},
+ { MESSAGE_TYPE_RESET_CIRCUIT, "Reset Circuit"},
+ { MESSAGE_TYPE_BLOCKING, "Blocking"},
+ { MESSAGE_TYPE_UNBLOCKING, "Unblocking"},
+ { MESSAGE_TYPE_BLOCK_ACK, "Blocking acknowledgement"},
+ { MESSAGE_TYPE_UNBLOCK_ACK, "Unblocking acknowledgment"},
+ { MESSAGE_TYPE_CIRC_GRP_RST, "Circuit group reset"},
+ { MESSAGE_TYPE_CIRC_GRP_BLCK, "Circuit group blocking"},
+ { MESSAGE_TYPE_CIRC_GRP_UNBL, "Circuit group unblocking"},
+ { MESSAGE_TYPE_CIRC_GRP_BL_ACK, "Circuit group blocking acknowledgement"},
+ { MESSAGE_TYPE_CIRC_GRP_UNBL_ACK, "Circuit group unblocking acknowledgement"},
+ { MESSAGE_TYPE_FACILITY_REQ, "Facility request"},
+ { MESSAGE_TYPE_FACILITY_ACC, "Facility accepted"},
+ { MESSAGE_TYPE_FACILITY_REJ, "Facility reject"},
+ { MESSAGE_TYPE_LOOP_BACK_ACK, "Loop back acknowledgement (national use)"},
+ { MESSAGE_TYPE_PASS_ALONG, "Pass-along (national use)"},
+ { MESSAGE_TYPE_CIRC_GRP_RST_ACK, "Circuit group reset acknowledgement"},
+ { MESSAGE_TYPE_CIRC_GRP_QRY, "Circuit group query (national use)"},
+ { MESSAGE_TYPE_CIRC_GRP_QRY_RSP, "Circuit group query response (national use)"},
+ { MESSAGE_TYPE_CALL_PROGRSS, "Call progress"},
+ { MESSAGE_TYPE_USER2USER_INFO, "User-to-user information"},
+ { MESSAGE_TYPE_UNEQUIPPED_CIC, "Unequipped CIC (national use)"},
+ { MESSAGE_TYPE_CONFUSION, "Confusion"},
+ { MESSAGE_TYPE_OVERLOAD, "Overload (national use)"},
+ { MESSAGE_TYPE_CHARGE_INFO, "Charge information (national use)"},
+ { MESSAGE_TYPE_NETW_RESRC_MGMT, "Network resource management"},
+ { MESSAGE_TYPE_FACILITY, "Facility"},
+ { MESSAGE_TYPE_USER_PART_TEST, "User part test"},
+ { MESSAGE_TYPE_USER_PART_AVAIL, "User part available"},
+ { MESSAGE_TYPE_IDENT_REQ, "Identification request"},
+ { MESSAGE_TYPE_IDENT_RSP, "Identification response"},
+ { MESSAGE_TYPE_SEGMENTATION, "Segmentation"},
+ { MESSAGE_TYPE_LOOP_PREVENTION, "Loop prevention"},
+ { MESSAGE_TYPE_APPLICATION_TRANS, "Application transport"},
+ { MESSAGE_TYPE_PRE_RELEASE_INFO, "Pre-release information"},
+ { MESSAGE_TYPE_SUBSEQUENT_DIR_NUM, "Subsequent Directory Number (national use)"},
+ { ANSI_ISUP_MESSAGE_TYPE_CIRCUIT_RES_ACK, "Circuit Reservation Acknowledge"},
+ { ANSI_ISUP_MESSAGE_TYPE_CIRCUIT_RES, "Circuit Reservation"},
+ { ANSI_ISUP_MESSAGE_TYPE_CCT_VAL_TEST_RSP, "Circuit Validation Test Response"},
+ { ANSI_ISUP_MESSAGE_TYPE_CCT_VAL_TEST, "Circuit Validation Test"},
+ { ANSI_ISUP_MESSAGE_TYPE_EXIT, "Exit"},
{ 0, NULL}};
+static value_string_ext ansi_isup_message_type_value_ext = VALUE_STRING_EXT_INIT(ansi_isup_message_type_value);
+
/* Same as above but in acronym form (for the Info column) */
-const value_string isup_message_type_value_acro[] = {
- { MESSAGE_TYPE_INITIAL_ADDR, "IAM"},
- { MESSAGE_TYPE_SUBSEQ_ADDR, "SAM"},
- { MESSAGE_TYPE_INFO_REQ, "INR"},
- { MESSAGE_TYPE_INFO, "INF"},
- { MESSAGE_TYPE_CONTINUITY, "COT"},
- { MESSAGE_TYPE_ADDR_CMPL, "ACM"},
- { MESSAGE_TYPE_CONNECT, "CON"},
- { MESSAGE_TYPE_FORW_TRANS, "FOT"},
- { MESSAGE_TYPE_ANSWER, "ANM"},
- { MESSAGE_TYPE_RELEASE, "REL"},
- { MESSAGE_TYPE_SUSPEND, "SUS"},
- { MESSAGE_TYPE_RESUME, "RES"},
- { MESSAGE_TYPE_REL_CMPL, "RLC"},
- { MESSAGE_TYPE_CONT_CHECK_REQ, "CCR"},
- { MESSAGE_TYPE_RESET_CIRCUIT, "RSC"},
- { MESSAGE_TYPE_BLOCKING, "BLO"},
- { MESSAGE_TYPE_UNBLOCKING, "UBL"},
- { MESSAGE_TYPE_BLOCK_ACK, "BLA"},
- { MESSAGE_TYPE_UNBLOCK_ACK, "UBLA"},
- { MESSAGE_TYPE_CIRC_GRP_RST, "GRS"},
- { MESSAGE_TYPE_CIRC_GRP_BLCK, "CGB"},
- { MESSAGE_TYPE_CIRC_GRP_UNBL, "CGU"},
- { MESSAGE_TYPE_CIRC_GRP_BL_ACK, "CGBA"},
- { MESSAGE_TYPE_CIRC_GRP_UNBL_ACK, "CGUA"},
- { MESSAGE_TYPE_FACILITY_REQ, "FAR"},
- { MESSAGE_TYPE_FACILITY_ACC, "FAA"},
- { MESSAGE_TYPE_FACILITY_REJ, "FRJ"},
- { MESSAGE_TYPE_LOOP_BACK_ACK, "LPA"},
- { MESSAGE_TYPE_PASS_ALONG, "PAM"},
- { MESSAGE_TYPE_CIRC_GRP_RST_ACK, "GRA"},
- { MESSAGE_TYPE_CIRC_GRP_QRY, "CQM"},
- { MESSAGE_TYPE_CIRC_GRP_QRY_RSP, "CQR"},
- { MESSAGE_TYPE_CALL_PROGRSS, "CPG"},
- { MESSAGE_TYPE_USER2USER_INFO, "UUI"},
- { MESSAGE_TYPE_UNEQUIPPED_CIC, "UCIC"},
- { MESSAGE_TYPE_CONFUSION, "CFN"},
- { MESSAGE_TYPE_OVERLOAD, "OLM"},
- { MESSAGE_TYPE_CHARGE_INFO, "CRG"},
- { MESSAGE_TYPE_NETW_RESRC_MGMT, "NRM"},
- { MESSAGE_TYPE_FACILITY, "FAC"},
- { MESSAGE_TYPE_USER_PART_TEST, "UPT"},
- { MESSAGE_TYPE_USER_PART_AVAIL, "UPA"},
- { MESSAGE_TYPE_IDENT_REQ, "IDR"},
- { MESSAGE_TYPE_IDENT_RSP, "IDS"},
- { MESSAGE_TYPE_SEGMENTATION, "SGM"},
- { MESSAGE_TYPE_LOOP_PREVENTION, "LOP"},
- { MESSAGE_TYPE_APPLICATION_TRANS, "APM"},
- { MESSAGE_TYPE_PRE_RELEASE_INFO, "PRI"},
- { MESSAGE_TYPE_SUBSEQUENT_DIR_NUM, "SDN"},
+static const value_string isup_message_type_value_acro[] = {
+ { MESSAGE_TYPE_INITIAL_ADDR, "IAM"},
+ { MESSAGE_TYPE_SUBSEQ_ADDR, "SAM"},
+ { MESSAGE_TYPE_INFO_REQ, "INR"},
+ { MESSAGE_TYPE_INFO, "INF"},
+ { MESSAGE_TYPE_CONTINUITY, "COT"},
+ { MESSAGE_TYPE_ADDR_CMPL, "ACM"},
+ { MESSAGE_TYPE_CONNECT, "CON"},
+ { MESSAGE_TYPE_FORW_TRANS, "FOT"},
+ { MESSAGE_TYPE_ANSWER, "ANM"},
+ { MESSAGE_TYPE_RELEASE, "REL"},
+ { MESSAGE_TYPE_SUSPEND, "SUS"},
+ { MESSAGE_TYPE_RESUME, "RES"},
+ { MESSAGE_TYPE_REL_CMPL, "RLC"},
+ { MESSAGE_TYPE_CONT_CHECK_REQ, "CCR"},
+ { MESSAGE_TYPE_RESET_CIRCUIT, "RSC"},
+ { MESSAGE_TYPE_BLOCKING, "BLO"},
+ { MESSAGE_TYPE_UNBLOCKING, "UBL"},
+ { MESSAGE_TYPE_BLOCK_ACK, "BLA"},
+ { MESSAGE_TYPE_UNBLOCK_ACK, "UBLA"},
+ { MESSAGE_TYPE_CIRC_GRP_RST, "GRS"},
+ { MESSAGE_TYPE_CIRC_GRP_BLCK, "CGB"},
+ { MESSAGE_TYPE_CIRC_GRP_UNBL, "CGU"},
+ { MESSAGE_TYPE_CIRC_GRP_BL_ACK, "CGBA"},
+ { MESSAGE_TYPE_CIRC_GRP_UNBL_ACK, "CGUA"},
+ { MESSAGE_TYPE_FACILITY_REQ, "FAR"},
+ { MESSAGE_TYPE_FACILITY_ACC, "FAA"},
+ { MESSAGE_TYPE_FACILITY_REJ, "FRJ"},
+ { MESSAGE_TYPE_LOOP_BACK_ACK, "LPA"},
+ { MESSAGE_TYPE_PASS_ALONG, "PAM"},
+ { MESSAGE_TYPE_CIRC_GRP_RST_ACK, "GRA"},
+ { MESSAGE_TYPE_CIRC_GRP_QRY, "CQM"},
+ { MESSAGE_TYPE_CIRC_GRP_QRY_RSP, "CQR"},
+ { MESSAGE_TYPE_CALL_PROGRSS, "CPG"},
+ { MESSAGE_TYPE_USER2USER_INFO, "UUI"},
+ { MESSAGE_TYPE_UNEQUIPPED_CIC, "UCIC"},
+ { MESSAGE_TYPE_CONFUSION, "CFN"},
+ { MESSAGE_TYPE_OVERLOAD, "OLM"},
+ { MESSAGE_TYPE_CHARGE_INFO, "CRG"},
+ { MESSAGE_TYPE_NETW_RESRC_MGMT, "NRM"},
+ { MESSAGE_TYPE_FACILITY, "FAC"},
+ { MESSAGE_TYPE_USER_PART_TEST, "UPT"},
+ { MESSAGE_TYPE_USER_PART_AVAIL, "UPA"},
+ { MESSAGE_TYPE_IDENT_REQ, "IDR"},
+ { MESSAGE_TYPE_IDENT_RSP, "IDS"},
+ { MESSAGE_TYPE_SEGMENTATION, "SGM"},
+ { MESSAGE_TYPE_LOOP_PREVENTION, "LOP"},
+ { MESSAGE_TYPE_APPLICATION_TRANS, "APM"},
+ { MESSAGE_TYPE_PRE_RELEASE_INFO, "PRI"},
+ { MESSAGE_TYPE_SUBSEQUENT_DIR_NUM, "SDN"},
{ 0, NULL}};
+value_string_ext isup_message_type_value_acro_ext = VALUE_STRING_EXT_INIT(isup_message_type_value_acro);
/* Same as above but in acronym form (for the Info column) */
static const value_string ansi_isup_message_type_value_acro[] = {
- { MESSAGE_TYPE_INITIAL_ADDR, "IAM"},
- { MESSAGE_TYPE_SUBSEQ_ADDR, "SAM"},
- { MESSAGE_TYPE_INFO_REQ, "INR"},
- { MESSAGE_TYPE_INFO, "INF"},
- { MESSAGE_TYPE_CONTINUITY, "COT"},
- { MESSAGE_TYPE_ADDR_CMPL, "ACM"},
- { MESSAGE_TYPE_CONNECT, "CON"},
- { MESSAGE_TYPE_FORW_TRANS, "FOT"},
- { MESSAGE_TYPE_ANSWER, "ANM"},
- { MESSAGE_TYPE_RELEASE, "REL"},
- { MESSAGE_TYPE_SUSPEND, "SUS"},
- { MESSAGE_TYPE_RESUME, "RES"},
- { MESSAGE_TYPE_REL_CMPL, "RLC"},
- { MESSAGE_TYPE_CONT_CHECK_REQ, "CCR"},
- { MESSAGE_TYPE_RESET_CIRCUIT, "RSC"},
- { MESSAGE_TYPE_BLOCKING, "BLO"},
- { MESSAGE_TYPE_UNBLOCKING, "UBL"},
- { MESSAGE_TYPE_BLOCK_ACK, "BLA"},
- { MESSAGE_TYPE_UNBLOCK_ACK, "UBLA"},
- { MESSAGE_TYPE_CIRC_GRP_RST, "GRS"},
- { MESSAGE_TYPE_CIRC_GRP_BLCK, "CGB"},
- { MESSAGE_TYPE_CIRC_GRP_UNBL, "CGU"},
- { MESSAGE_TYPE_CIRC_GRP_BL_ACK, "CGBA"},
- { MESSAGE_TYPE_CIRC_GRP_UNBL_ACK, "CGUA"},
- { MESSAGE_TYPE_FACILITY_REQ, "FAR"},
- { MESSAGE_TYPE_FACILITY_ACC, "FAA"},
- { MESSAGE_TYPE_FACILITY_REJ, "FRJ"},
- { MESSAGE_TYPE_LOOP_BACK_ACK, "LPA"},
- { MESSAGE_TYPE_PASS_ALONG, "PAM"},
- { MESSAGE_TYPE_CIRC_GRP_RST_ACK, "GRA"},
- { MESSAGE_TYPE_CIRC_GRP_QRY, "CQM"},
- { MESSAGE_TYPE_CIRC_GRP_QRY_RSP, "CQR"},
- { MESSAGE_TYPE_CALL_PROGRSS, "CPG"},
- { MESSAGE_TYPE_USER2USER_INFO, "UUI"},
- { MESSAGE_TYPE_UNEQUIPPED_CIC, "UCIC"},
- { MESSAGE_TYPE_CONFUSION, "CFN"},
- { MESSAGE_TYPE_OVERLOAD, "OLM"},
- { MESSAGE_TYPE_CHARGE_INFO, "CRG"},
- { MESSAGE_TYPE_NETW_RESRC_MGMT, "NRM"},
- { MESSAGE_TYPE_FACILITY, "FAC"},
- { MESSAGE_TYPE_USER_PART_TEST, "UPT"},
- { MESSAGE_TYPE_USER_PART_AVAIL, "UPA"},
- { MESSAGE_TYPE_IDENT_REQ, "IDR"},
- { MESSAGE_TYPE_IDENT_RSP, "IDS"},
- { MESSAGE_TYPE_SEGMENTATION, "SGM"},
- { MESSAGE_TYPE_LOOP_PREVENTION, "LOP"},
- { MESSAGE_TYPE_APPLICATION_TRANS, "APM"},
- { MESSAGE_TYPE_PRE_RELEASE_INFO, "PRI"},
- { MESSAGE_TYPE_SUBSEQUENT_DIR_NUM, "SDN"},
- { ANSI_ISUP_MESSAGE_TYPE_CIRCUIT_RES_ACK, "CRA"},
- { ANSI_ISUP_MESSAGE_TYPE_CIRCUIT_RES, "CRM"},
- { ANSI_ISUP_MESSAGE_TYPE_CCT_VAL_TEST_RSP, "CVR"},
- { ANSI_ISUP_MESSAGE_TYPE_CCT_VAL_TEST, "CVT"},
- { ANSI_ISUP_MESSAGE_TYPE_EXIT, "EXIT"},
+ { MESSAGE_TYPE_INITIAL_ADDR, "IAM"},
+ { MESSAGE_TYPE_SUBSEQ_ADDR, "SAM"},
+ { MESSAGE_TYPE_INFO_REQ, "INR"},
+ { MESSAGE_TYPE_INFO, "INF"},
+ { MESSAGE_TYPE_CONTINUITY, "COT"},
+ { MESSAGE_TYPE_ADDR_CMPL, "ACM"},
+ { MESSAGE_TYPE_CONNECT, "CON"},
+ { MESSAGE_TYPE_FORW_TRANS, "FOT"},
+ { MESSAGE_TYPE_ANSWER, "ANM"},
+ { MESSAGE_TYPE_RELEASE, "REL"},
+ { MESSAGE_TYPE_SUSPEND, "SUS"},
+ { MESSAGE_TYPE_RESUME, "RES"},
+ { MESSAGE_TYPE_REL_CMPL, "RLC"},
+ { MESSAGE_TYPE_CONT_CHECK_REQ, "CCR"},
+ { MESSAGE_TYPE_RESET_CIRCUIT, "RSC"},
+ { MESSAGE_TYPE_BLOCKING, "BLO"},
+ { MESSAGE_TYPE_UNBLOCKING, "UBL"},
+ { MESSAGE_TYPE_BLOCK_ACK, "BLA"},
+ { MESSAGE_TYPE_UNBLOCK_ACK, "UBLA"},
+ { MESSAGE_TYPE_CIRC_GRP_RST, "GRS"},
+ { MESSAGE_TYPE_CIRC_GRP_BLCK, "CGB"},
+ { MESSAGE_TYPE_CIRC_GRP_UNBL, "CGU"},
+ { MESSAGE_TYPE_CIRC_GRP_BL_ACK, "CGBA"},
+ { MESSAGE_TYPE_CIRC_GRP_UNBL_ACK, "CGUA"},
+ { MESSAGE_TYPE_FACILITY_REQ, "FAR"},
+ { MESSAGE_TYPE_FACILITY_ACC, "FAA"},
+ { MESSAGE_TYPE_FACILITY_REJ, "FRJ"},
+ { MESSAGE_TYPE_LOOP_BACK_ACK, "LPA"},
+ { MESSAGE_TYPE_PASS_ALONG, "PAM"},
+ { MESSAGE_TYPE_CIRC_GRP_RST_ACK, "GRA"},
+ { MESSAGE_TYPE_CIRC_GRP_QRY, "CQM"},
+ { MESSAGE_TYPE_CIRC_GRP_QRY_RSP, "CQR"},
+ { MESSAGE_TYPE_CALL_PROGRSS, "CPG"},
+ { MESSAGE_TYPE_USER2USER_INFO, "UUI"},
+ { MESSAGE_TYPE_UNEQUIPPED_CIC, "UCIC"},
+ { MESSAGE_TYPE_CONFUSION, "CFN"},
+ { MESSAGE_TYPE_OVERLOAD, "OLM"},
+ { MESSAGE_TYPE_CHARGE_INFO, "CRG"},
+ { MESSAGE_TYPE_NETW_RESRC_MGMT, "NRM"},
+ { MESSAGE_TYPE_FACILITY, "FAC"},
+ { MESSAGE_TYPE_USER_PART_TEST, "UPT"},
+ { MESSAGE_TYPE_USER_PART_AVAIL, "UPA"},
+ { MESSAGE_TYPE_IDENT_REQ, "IDR"},
+ { MESSAGE_TYPE_IDENT_RSP, "IDS"},
+ { MESSAGE_TYPE_SEGMENTATION, "SGM"},
+ { MESSAGE_TYPE_LOOP_PREVENTION, "LOP"},
+ { MESSAGE_TYPE_APPLICATION_TRANS, "APM"},
+ { MESSAGE_TYPE_PRE_RELEASE_INFO, "PRI"},
+ { MESSAGE_TYPE_SUBSEQUENT_DIR_NUM, "SDN"},
+ { ANSI_ISUP_MESSAGE_TYPE_CIRCUIT_RES_ACK, "CRA"},
+ { ANSI_ISUP_MESSAGE_TYPE_CIRCUIT_RES, "CRM"},
+ { ANSI_ISUP_MESSAGE_TYPE_CCT_VAL_TEST_RSP, "CVR"},
+ { ANSI_ISUP_MESSAGE_TYPE_CCT_VAL_TEST, "CVT"},
+ { ANSI_ISUP_MESSAGE_TYPE_EXIT, "EXIT"},
{ 0, NULL}};
+static value_string_ext ansi_isup_message_type_value_acro_ext = VALUE_STRING_EXT_INIT(ansi_isup_message_type_value_acro);
const value_string isup_parameter_type_value[] = {
-{ PARAM_TYPE_END_OF_OPT_PARAMS, "End of optional parameters"},
- { PARAM_TYPE_CALL_REF, "Call Reference (national use)"},
- { PARAM_TYPE_TRANSM_MEDIUM_REQU, "Transmission medium requirement"},
- { PARAM_TYPE_ACC_TRANSP, "Access transport"},
- { PARAM_TYPE_CALLED_PARTY_NR, "Called party number"},
- { PARAM_TYPE_SUBSQT_NR, "Subsequent number"},
- { PARAM_TYPE_NATURE_OF_CONN_IND, "Nature of connection indicators"},
- { PARAM_TYPE_FORW_CALL_IND, "Forward call indicators"},
- { PARAM_TYPE_OPT_FORW_CALL_IND, "Optional forward call indicators"},
- { PARAM_TYPE_CALLING_PRTY_CATEG, "Calling party's category"},
- { PARAM_TYPE_CALLING_PARTY_NR, "Calling party number"},
- { PARAM_TYPE_REDIRECTING_NR, "Redirecting number"},
- { PARAM_TYPE_REDIRECTION_NR, "Redirection number"},
- { PARAM_TYPE_CONNECTION_REQ, "Connection request"},
- { PARAM_TYPE_INFO_REQ_IND, "Information request indicators (national use)"},
- { PARAM_TYPE_INFO_IND, "Information indicators (national use)"},
- { PARAM_TYPE_CONTINUITY_IND, "Continuity request"},
- { PARAM_TYPE_BACKW_CALL_IND, "Backward call indicators"},
- { PARAM_TYPE_CAUSE_INDICATORS, "Cause indicators"},
- { PARAM_TYPE_REDIRECTION_INFO, "Redirection information"},
- { PARAM_TYPE_CIRC_GRP_SV_MSG_TYPE, "Circuit group supervision message type"},
- { PARAM_TYPE_RANGE_AND_STATUS, "Range and Status"},
- { PARAM_TYPE_FACILITY_IND, "Facility indicator"},
- { PARAM_TYPE_CLSD_USR_GRP_ILOCK_CD, "Closed user group interlock code"},
- { PARAM_TYPE_USER_SERVICE_INFO, "User service information"},
- { PARAM_TYPE_SIGNALLING_POINT_CODE, "Signalling point code (national use)"},
- { PARAM_TYPE_USER_TO_USER_INFO, "User-to-user information"},
- { PARAM_TYPE_CONNECTED_NR, "Connected number"},
- { PARAM_TYPE_SUSP_RESUME_IND, "Suspend/Resume indicators"},
- { PARAM_TYPE_TRANSIT_NETW_SELECT, "Transit network selection (national use)"},
- { PARAM_TYPE_EVENT_INFO, "Event information"},
- { PARAM_TYPE_CIRC_ASSIGN_MAP, "Circuit assignment map"},
- { PARAM_TYPE_CIRC_STATE_IND, "Circuit state indicator (national use)"},
- { PARAM_TYPE_AUTO_CONG_LEVEL, "Automatic congestion level"},
- { PARAM_TYPE_ORIG_CALLED_NR, "Original called number"},
- { PARAM_TYPE_OPT_BACKW_CALL_IND, "Backward call indicators"},
- { PARAM_TYPE_USER_TO_USER_IND, "User-to-user indicators"},
- { PARAM_TYPE_ORIG_ISC_POINT_CODE, "Origination ISC point code"},
- { PARAM_TYPE_GENERIC_NOTIF_IND, "Generic notification indicator"},
- { PARAM_TYPE_CALL_HIST_INFO, "Call history information"},
- { PARAM_TYPE_ACC_DELIV_INFO, "Access delivery information"},
- { PARAM_TYPE_NETW_SPECIFIC_FACLTY, "Network specific facility (national use)"},
- { PARAM_TYPE_USER_SERVICE_INFO_PR, "User service information prime"},
- { PARAM_TYPE_PROPAG_DELAY_COUNTER, "Propagation delay counter"},
- { PARAM_TYPE_REMOTE_OPERATIONS, "Remote operations (national use)"},
- { PARAM_TYPE_SERVICE_ACTIVATION, "Service activation"},
- { PARAM_TYPE_USER_TELESERV_INFO, "User teleservice information"},
- { PARAM_TYPE_TRANSM_MEDIUM_USED, "Transmission medium used"},
- { PARAM_TYPE_CALL_DIV_INFO, "Call diversion information"},
- { PARAM_TYPE_ECHO_CTRL_INFO, "Echo control information"},
- { PARAM_TYPE_MSG_COMPAT_INFO, "Message compatibility information"},
- { PARAM_TYPE_PARAM_COMPAT_INFO, "Parameter compatibility information"},
- { PARAM_TYPE_MLPP_PRECEDENCE, "MLPP precedence"},
- { PARAM_TYPE_MCID_REQ_IND, "MCID request indicators"},
- { PARAM_TYPE_MCID_RSP_IND, "MCID response indicators"},
- { PARAM_TYPE_HOP_COUNTER, "Hop counter"},
- { PARAM_TYPE_TRANSM_MEDIUM_RQUR_PR, "Transmission medium requirement prime"},
- { PARAM_TYPE_LOCATION_NR, "Location number"},
- { PARAM_TYPE_REDIR_NR_RSTRCT, "Redirection number restriction"},
- { PARAM_TYPE_CALL_TRANS_REF, "Call transfer reference"},
- { PARAM_TYPE_LOOP_PREV_IND, "Loop prevention indicators"},
- { PARAM_TYPE_CALL_TRANS_NR, "Call transfer number"},
- { PARAM_TYPE_CCSS, "CCSS"},
- { PARAM_TYPE_FORW_GVNS, "Forward GVNS"},
- { PARAM_TYPE_BACKW_GVNS, "Backward GVNS"},
- { PARAM_TYPE_REDIRECT_CAPAB, "Redirect capability (reserved for national use)"},
- { PARAM_TYPE_NETW_MGMT_CTRL, "Network management controls"},
- { PARAM_TYPE_CORRELATION_ID, "Correlation id"},
- { PARAM_TYPE_SCF_ID, "SCF id"},
- { PARAM_TYPE_CALL_DIV_TREAT_IND, "Call diversion treatment indicators"},
- { PARAM_TYPE_CALLED_IN_NR, "Called IN number"},
- { PARAM_TYPE_CALL_OFF_TREAT_IND, "Call offering treatment indicators"},
- { PARAM_TYPE_CHARGED_PARTY_IDENT, "Charged party identification (national use)"},
- { PARAM_TYPE_CONF_TREAT_IND, "Conference treatment indicators"},
- { PARAM_TYPE_DISPLAY_INFO, "Display information"},
- { PARAM_TYPE_UID_ACTION_IND, "UID action indicators"},
- { PARAM_TYPE_UID_CAPAB_IND, "UID capability indicators"},
- { PARAM_TYPE_REDIRECT_COUNTER, "Redirect counter (reserved for national use)"},
- { PARAM_TYPE_COLLECT_CALL_REQ, "Collect call request"},
- { PARAM_TYPE_GENERIC_NR, "Generic number"},
- { PARAM_TYPE_GENERIC_DIGITS, "Generic digits (national use)"},
- { PARAM_TYPE_APPLICATON_TRANS, "Application transport"},
+ { PARAM_TYPE_END_OF_OPT_PARAMS, "End of optional parameters"},
+ { PARAM_TYPE_CALL_REF, "Call Reference (national use)"},
+ { PARAM_TYPE_TRANSM_MEDIUM_REQU, "Transmission medium requirement"},
+ { PARAM_TYPE_ACC_TRANSP, "Access transport"},
+ { PARAM_TYPE_CALLED_PARTY_NR, "Called party number"},
+ { PARAM_TYPE_SUBSQT_NR, "Subsequent number"},
+ { PARAM_TYPE_NATURE_OF_CONN_IND, "Nature of connection indicators"},
+ { PARAM_TYPE_FORW_CALL_IND, "Forward call indicators"},
+ { PARAM_TYPE_OPT_FORW_CALL_IND, "Optional forward call indicators"},
+ { PARAM_TYPE_CALLING_PRTY_CATEG, "Calling party's category"},
+ { PARAM_TYPE_CALLING_PARTY_NR, "Calling party number"},
+ { PARAM_TYPE_REDIRECTING_NR, "Redirecting number"},
+ { PARAM_TYPE_REDIRECTION_NR, "Redirection number"},
+ { PARAM_TYPE_CONNECTION_REQ, "Connection request"},
+ { PARAM_TYPE_INFO_REQ_IND, "Information request indicators (national use)"},
+ { PARAM_TYPE_INFO_IND, "Information indicators (national use)"},
+ { PARAM_TYPE_CONTINUITY_IND, "Continuity request"},
+ { PARAM_TYPE_BACKW_CALL_IND, "Backward call indicators"},
+ { PARAM_TYPE_CAUSE_INDICATORS, "Cause indicators"},
+ { PARAM_TYPE_REDIRECTION_INFO, "Redirection information"},
+ { PARAM_TYPE_CIRC_GRP_SV_MSG_TYPE, "Circuit group supervision message type"},
+ { PARAM_TYPE_RANGE_AND_STATUS, "Range and Status"},
+ { PARAM_TYPE_FACILITY_IND, "Facility indicator"},
+ { PARAM_TYPE_CLSD_USR_GRP_ILOCK_CD, "Closed user group interlock code"},
+ { PARAM_TYPE_USER_SERVICE_INFO, "User service information"},
+ { PARAM_TYPE_SIGNALLING_POINT_CODE, "Signalling point code (national use)"},
+ { PARAM_TYPE_USER_TO_USER_INFO, "User-to-user information"},
+ { PARAM_TYPE_CONNECTED_NR, "Connected number"},
+ { PARAM_TYPE_SUSP_RESUME_IND, "Suspend/Resume indicators"},
+ { PARAM_TYPE_TRANSIT_NETW_SELECT, "Transit network selection (national use)"},
+ { PARAM_TYPE_EVENT_INFO, "Event information"},
+ { PARAM_TYPE_CIRC_ASSIGN_MAP, "Circuit assignment map"},
+ { PARAM_TYPE_CIRC_STATE_IND, "Circuit state indicator (national use)"},
+ { PARAM_TYPE_AUTO_CONG_LEVEL, "Automatic congestion level"},
+ { PARAM_TYPE_ORIG_CALLED_NR, "Original called number"},
+ { PARAM_TYPE_OPT_BACKW_CALL_IND, "Backward call indicators"},
+ { PARAM_TYPE_USER_TO_USER_IND, "User-to-user indicators"},
+ { PARAM_TYPE_ORIG_ISC_POINT_CODE, "Origination ISC point code"},
+ { PARAM_TYPE_GENERIC_NOTIF_IND, "Generic notification indicator"},
+ { PARAM_TYPE_CALL_HIST_INFO, "Call history information"},
+ { PARAM_TYPE_ACC_DELIV_INFO, "Access delivery information"},
+ { PARAM_TYPE_NETW_SPECIFIC_FACLTY, "Network specific facility (national use)"},
+ { PARAM_TYPE_USER_SERVICE_INFO_PR, "User service information prime"},
+ { PARAM_TYPE_PROPAG_DELAY_COUNTER, "Propagation delay counter"},
+ { PARAM_TYPE_REMOTE_OPERATIONS, "Remote operations (national use)"},
+ { PARAM_TYPE_SERVICE_ACTIVATION, "Service activation"},
+ { PARAM_TYPE_USER_TELESERV_INFO, "User teleservice information"},
+ { PARAM_TYPE_TRANSM_MEDIUM_USED, "Transmission medium used"},
+ { PARAM_TYPE_CALL_DIV_INFO, "Call diversion information"},
+ { PARAM_TYPE_ECHO_CTRL_INFO, "Echo control information"},
+ { PARAM_TYPE_MSG_COMPAT_INFO, "Message compatibility information"},
+ { PARAM_TYPE_PARAM_COMPAT_INFO, "Parameter compatibility information"},
+ { PARAM_TYPE_MLPP_PRECEDENCE, "MLPP precedence"},
+ { PARAM_TYPE_MCID_REQ_IND, "MCID request indicators"},
+ { PARAM_TYPE_MCID_RSP_IND, "MCID response indicators"},
+ { PARAM_TYPE_HOP_COUNTER, "Hop counter"},
+ { PARAM_TYPE_TRANSM_MEDIUM_RQUR_PR, "Transmission medium requirement prime"},
+ { PARAM_TYPE_LOCATION_NR, "Location number"},
+ { PARAM_TYPE_REDIR_NR_RSTRCT, "Redirection number restriction"},
+ { PARAM_TYPE_CALL_TRANS_REF, "Call transfer reference"},
+ { PARAM_TYPE_LOOP_PREV_IND, "Loop prevention indicators"},
+ { PARAM_TYPE_CALL_TRANS_NR, "Call transfer number"},
+ { PARAM_TYPE_CCSS, "CCSS"},
+ { PARAM_TYPE_FORW_GVNS, "Forward GVNS"},
+ { PARAM_TYPE_BACKW_GVNS, "Backward GVNS"},
+ { PARAM_TYPE_REDIRECT_CAPAB, "Redirect capability (reserved for national use)"},
+ { PARAM_TYPE_NETW_MGMT_CTRL, "Network management controls"},
+ { PARAM_TYPE_CORRELATION_ID, "Correlation id"},
+ { PARAM_TYPE_SCF_ID, "SCF id"},
+ { PARAM_TYPE_CALL_DIV_TREAT_IND, "Call diversion treatment indicators"},
+ { PARAM_TYPE_CALLED_IN_NR, "Called IN number"},
+ { PARAM_TYPE_CALL_OFF_TREAT_IND, "Call offering treatment indicators"},
+ { PARAM_TYPE_CHARGED_PARTY_IDENT, "Charged party identification (national use)"},
+ { PARAM_TYPE_CONF_TREAT_IND, "Conference treatment indicators"},
+ { PARAM_TYPE_DISPLAY_INFO, "Display information"},
+ { PARAM_TYPE_UID_ACTION_IND, "UID action indicators"},
+ { PARAM_TYPE_UID_CAPAB_IND, "UID capability indicators"},
+ { PARAM_TYPE_REDIRECT_COUNTER, "Redirect counter (reserved for national use)"},
+ { PARAM_TYPE_APPLICATON_TRANS, "Application transport"},
+ { PARAM_TYPE_COLLECT_CALL_REQ, "Collect call request"},
+ { PARAM_TYPE_GENERIC_NR, "Generic number"},
+ { PARAM_TYPE_GENERIC_DIGITS, "Generic digits (national use)"},
{ 0, NULL}};
+static value_string_ext isup_parameter_type_value_ext = VALUE_STRING_EXT_INIT(isup_parameter_type_value);
static const value_string ansi_isup_parameter_type_value[] = {
-{ PARAM_TYPE_END_OF_OPT_PARAMS, "End of optional parameters"},
- { PARAM_TYPE_CALL_REF, "Call Reference (national use)"},
- { PARAM_TYPE_TRANSM_MEDIUM_REQU, "Transmission medium requirement"},
- { PARAM_TYPE_ACC_TRANSP, "Access transport"},
- { PARAM_TYPE_CALLED_PARTY_NR, "Called party number"},
- { PARAM_TYPE_SUBSQT_NR, "Subsequent number"},
- { PARAM_TYPE_NATURE_OF_CONN_IND, "Nature of connection indicators"},
- { PARAM_TYPE_FORW_CALL_IND, "Forward call indicators"},
- { PARAM_TYPE_OPT_FORW_CALL_IND, "Optional forward call indicators"},
- { PARAM_TYPE_CALLING_PRTY_CATEG, "Calling party's category"},
- { PARAM_TYPE_CALLING_PARTY_NR, "Calling party number"},
- { PARAM_TYPE_REDIRECTING_NR, "Redirecting number"},
- { PARAM_TYPE_REDIRECTION_NR, "Redirection number"},
- { PARAM_TYPE_CONNECTION_REQ, "Connection request"},
- { PARAM_TYPE_INFO_REQ_IND, "Information request indicators (national use)"},
- { PARAM_TYPE_INFO_IND, "Information indicators (national use)"},
- { PARAM_TYPE_CONTINUITY_IND, "Continuity request"},
- { PARAM_TYPE_BACKW_CALL_IND, "Backward call indicators"},
- { PARAM_TYPE_CAUSE_INDICATORS, "Cause indicators"},
- { PARAM_TYPE_REDIRECTION_INFO, "Redirection information"},
- { PARAM_TYPE_CIRC_GRP_SV_MSG_TYPE, "Circuit group supervision message type"},
- { PARAM_TYPE_RANGE_AND_STATUS, "Range and Status"},
- { PARAM_TYPE_FACILITY_IND, "Facility indicator"},
- { PARAM_TYPE_CLSD_USR_GRP_ILOCK_CD, "Closed user group interlock code"},
- { PARAM_TYPE_USER_SERVICE_INFO, "User service information"},
- { PARAM_TYPE_SIGNALLING_POINT_CODE, "Signalling point code (national use)"},
- { PARAM_TYPE_USER_TO_USER_INFO, "User-to-user information"},
- { PARAM_TYPE_CONNECTED_NR, "Connected number"},
- { PARAM_TYPE_SUSP_RESUME_IND, "Suspend/Resume indicators"},
- { PARAM_TYPE_TRANSIT_NETW_SELECT, "Transit network selection (national use)"},
- { PARAM_TYPE_EVENT_INFO, "Event information"},
- { PARAM_TYPE_CIRC_ASSIGN_MAP, "Circuit assignment map"},
- { PARAM_TYPE_CIRC_STATE_IND, "Circuit state indicator (national use)"},
- { PARAM_TYPE_AUTO_CONG_LEVEL, "Automatic congestion level"},
- { PARAM_TYPE_ORIG_CALLED_NR, "Original called number"},
- { PARAM_TYPE_OPT_BACKW_CALL_IND, "Backward call indicators"},
- { PARAM_TYPE_USER_TO_USER_IND, "User-to-user indicators"},
- { PARAM_TYPE_ORIG_ISC_POINT_CODE, "Origination ISC point code"},
- { PARAM_TYPE_GENERIC_NOTIF_IND, "Generic notification indicator"},
- { PARAM_TYPE_CALL_HIST_INFO, "Call history information"},
- { PARAM_TYPE_ACC_DELIV_INFO, "Access delivery information"},
- { PARAM_TYPE_NETW_SPECIFIC_FACLTY, "Network specific facility (national use)"},
- { PARAM_TYPE_USER_SERVICE_INFO_PR, "User service information prime"},
- { PARAM_TYPE_PROPAG_DELAY_COUNTER, "Propagation delay counter"},
- { PARAM_TYPE_REMOTE_OPERATIONS, "Remote operations (national use)"},
- { PARAM_TYPE_SERVICE_ACTIVATION, "Service activation"},
- { PARAM_TYPE_USER_TELESERV_INFO, "User teleservice information"},
- { PARAM_TYPE_TRANSM_MEDIUM_USED, "Transmission medium used"},
- { PARAM_TYPE_CALL_DIV_INFO, "Call diversion information"},
- { PARAM_TYPE_ECHO_CTRL_INFO, "Echo control information"},
- { PARAM_TYPE_MSG_COMPAT_INFO, "Message compatibility information"},
- { PARAM_TYPE_PARAM_COMPAT_INFO, "Parameter compatibility information"},
- { PARAM_TYPE_MLPP_PRECEDENCE, "MLPP precedence"},
- { PARAM_TYPE_MCID_REQ_IND, "MCID request indicators"},
- { PARAM_TYPE_MCID_RSP_IND, "MCID response indicators"},
- { PARAM_TYPE_HOP_COUNTER, "Hop counter"},
- { PARAM_TYPE_ORIG_LINE_INFO, "Originating line info"},
- { PARAM_TYPE_TRANSM_MEDIUM_RQUR_PR, "Transmission medium requirement prime"},
- { PARAM_TYPE_LOCATION_NR, "Location number"},
- { PARAM_TYPE_REDIR_NR_RSTRCT, "Redirection number restriction"},
- { PARAM_TYPE_CALL_TRANS_REF, "Call transfer reference"},
- { PARAM_TYPE_LOOP_PREV_IND, "Loop prevention indicators"},
- { PARAM_TYPE_CALL_TRANS_NR, "Call transfer number"},
- { PARAM_TYPE_CCSS, "CCSS"},
- { PARAM_TYPE_FORW_GVNS, "Forward GVNS"},
- { PARAM_TYPE_BACKW_GVNS, "Backward GVNS"},
- { PARAM_TYPE_REDIRECT_CAPAB, "Redirect capability (reserved for national use)"},
- { PARAM_TYPE_NETW_MGMT_CTRL, "Network management controls"},
- { PARAM_TYPE_CORRELATION_ID, "Correlation id"},
- { PARAM_TYPE_SCF_ID, "SCF id"},
- { PARAM_TYPE_CALL_DIV_TREAT_IND, "Call diversion treatment indicators"},
- { PARAM_TYPE_CALLED_IN_NR, "Called IN number"},
- { PARAM_TYPE_CALL_OFF_TREAT_IND, "Call offering treatment indicators"},
- { PARAM_TYPE_CHARGED_PARTY_IDENT, "Charged party identification (national use)"},
- { PARAM_TYPE_CONF_TREAT_IND, "Conference treatment indicators"},
- { PARAM_TYPE_DISPLAY_INFO, "Display information"},
- { PARAM_TYPE_UID_ACTION_IND, "UID action indicators"},
- { PARAM_TYPE_UID_CAPAB_IND, "UID capability indicators"},
- { PARAM_TYPE_REDIRECT_COUNTER, "Redirect counter (reserved for national use)"},
- { PARAM_TYPE_COLLECT_CALL_REQ, "Collect call request"},
- { PARAM_TYPE_CALLING_GEODETIC_LOCATION, "Calling geodetic location"},
- { PARAM_TYPE_GENERIC_NR, "Generic number"},
- { PARAM_TYPE_JURISDICTION, "Jurisdiction"},
- { PARAM_TYPE_GENERIC_NAME, "Generic name"},
- { PARAM_TYPE_GENERIC_DIGITS, "Generic digits (national use)"},
- { PARAM_TYPE_APPLICATON_TRANS, "Application transport"},
- { ANSI_ISUP_PARAM_TYPE_OPER_SERV_INF, "Operator Services information"},
- { ANSI_ISUP_PARAM_TYPE_EGRESS, "Egress"},
- { ANSI_ISUP_PARAM_TYPE_JURISDICTION, "Jurisdiction"},
- { ANSI_ISUP_PARAM_TYPE_CARRIER_ID, "Carrier identification"},
- { ANSI_ISUP_PARAM_TYPE_BUSINESS_GRP, "Business group"},
- { ANSI_ISUP_PARAM_TYPE_GENERIC_NAME, "Generic name"},
- { ANSI_ISUP_PARAM_TYPE_NOTIF_IND, "Notification indicator"},
- { ANSI_ISUP_PARAM_TYPE_CG_CHAR_IND, "Circuit group characteristic indicator"},
- { ANSI_ISUP_PARAM_TYPE_CVR_RESP_IND, "Circuit validation response indicator"},
- { ANSI_ISUP_PARAM_TYPE_OUT_TRK_GRP_NM,"Outgoing trunk group number"},
- { ANSI_ISUP_PARAM_TYPE_CI_NAME_IND, "Circuit identification name"},
- { ANSI_ISUP_PARAM_CLLI_CODE, "COMMON LANGUAGE location identification (CLLI) code"},
- { ANSI_ISUP_PARAM_ORIG_LINE_INF, "Originating line information"},
- { ANSI_ISUP_PARAM_CHRG_NO, "Charge number"},
- { ANSI_ISUP_PARAM_SERV_CODE_IND, "Service code indicator"},
- { ANSI_ISUP_PARAM_SPEC_PROC_REQ, "Special processing request"},
- { ANSI_ISUP_PARAM_CARRIER_SEL_INF, "Carrier selection information"},
- { ANSI_ISUP_PARAM_NET_TRANS, "Network transport"},
+ { PARAM_TYPE_END_OF_OPT_PARAMS, "End of optional parameters"},
+ { PARAM_TYPE_CALL_REF, "Call Reference (national use)"},
+ { PARAM_TYPE_TRANSM_MEDIUM_REQU, "Transmission medium requirement"},
+ { PARAM_TYPE_ACC_TRANSP, "Access transport"},
+ { PARAM_TYPE_CALLED_PARTY_NR, "Called party number"},
+ { PARAM_TYPE_SUBSQT_NR, "Subsequent number"},
+ { PARAM_TYPE_NATURE_OF_CONN_IND, "Nature of connection indicators"},
+ { PARAM_TYPE_FORW_CALL_IND, "Forward call indicators"},
+ { PARAM_TYPE_OPT_FORW_CALL_IND, "Optional forward call indicators"},
+ { PARAM_TYPE_CALLING_PRTY_CATEG, "Calling party's category"},
+ { PARAM_TYPE_CALLING_PARTY_NR, "Calling party number"},
+ { PARAM_TYPE_REDIRECTING_NR, "Redirecting number"},
+ { PARAM_TYPE_REDIRECTION_NR, "Redirection number"},
+ { PARAM_TYPE_CONNECTION_REQ, "Connection request"},
+ { PARAM_TYPE_INFO_REQ_IND, "Information request indicators (national use)"},
+ { PARAM_TYPE_INFO_IND, "Information indicators (national use)"},
+ { PARAM_TYPE_CONTINUITY_IND, "Continuity request"},
+ { PARAM_TYPE_BACKW_CALL_IND, "Backward call indicators"},
+ { PARAM_TYPE_CAUSE_INDICATORS, "Cause indicators"},
+ { PARAM_TYPE_REDIRECTION_INFO, "Redirection information"},
+ { PARAM_TYPE_CIRC_GRP_SV_MSG_TYPE, "Circuit group supervision message type"},
+ { PARAM_TYPE_RANGE_AND_STATUS, "Range and Status"},
+ { PARAM_TYPE_FACILITY_IND, "Facility indicator"},
+ { PARAM_TYPE_CLSD_USR_GRP_ILOCK_CD, "Closed user group interlock code"},
+ { PARAM_TYPE_USER_SERVICE_INFO, "User service information"},
+ { PARAM_TYPE_SIGNALLING_POINT_CODE, "Signalling point code (national use)"},
+ { PARAM_TYPE_USER_TO_USER_INFO, "User-to-user information"},
+ { PARAM_TYPE_CONNECTED_NR, "Connected number"},
+ { PARAM_TYPE_SUSP_RESUME_IND, "Suspend/Resume indicators"},
+ { PARAM_TYPE_TRANSIT_NETW_SELECT, "Transit network selection (national use)"},
+ { PARAM_TYPE_EVENT_INFO, "Event information"},
+ { PARAM_TYPE_CIRC_ASSIGN_MAP, "Circuit assignment map"},
+ { PARAM_TYPE_CIRC_STATE_IND, "Circuit state indicator (national use)"},
+ { PARAM_TYPE_AUTO_CONG_LEVEL, "Automatic congestion level"},
+ { PARAM_TYPE_ORIG_CALLED_NR, "Original called number"},
+ { PARAM_TYPE_OPT_BACKW_CALL_IND, "Backward call indicators"},
+ { PARAM_TYPE_USER_TO_USER_IND, "User-to-user indicators"},
+ { PARAM_TYPE_ORIG_ISC_POINT_CODE, "Origination ISC point code"},
+ { PARAM_TYPE_GENERIC_NOTIF_IND, "Generic notification indicator"},
+ { PARAM_TYPE_CALL_HIST_INFO, "Call history information"},
+ { PARAM_TYPE_ACC_DELIV_INFO, "Access delivery information"},
+ { PARAM_TYPE_NETW_SPECIFIC_FACLTY, "Network specific facility (national use)"},
+ { PARAM_TYPE_USER_SERVICE_INFO_PR, "User service information prime"},
+ { PARAM_TYPE_PROPAG_DELAY_COUNTER, "Propagation delay counter"},
+ { PARAM_TYPE_REMOTE_OPERATIONS, "Remote operations (national use)"},
+ { PARAM_TYPE_SERVICE_ACTIVATION, "Service activation"},
+ { PARAM_TYPE_USER_TELESERV_INFO, "User teleservice information"},
+ { PARAM_TYPE_TRANSM_MEDIUM_USED, "Transmission medium used"},
+ { PARAM_TYPE_CALL_DIV_INFO, "Call diversion information"},
+ { PARAM_TYPE_ECHO_CTRL_INFO, "Echo control information"},
+ { PARAM_TYPE_MSG_COMPAT_INFO, "Message compatibility information"},
+ { PARAM_TYPE_PARAM_COMPAT_INFO, "Parameter compatibility information"},
+ { PARAM_TYPE_MLPP_PRECEDENCE, "MLPP precedence"},
+ { PARAM_TYPE_MCID_REQ_IND, "MCID request indicators"},
+ { PARAM_TYPE_MCID_RSP_IND, "MCID response indicators"},
+ { PARAM_TYPE_HOP_COUNTER, "Hop counter"},
+ { PARAM_TYPE_TRANSM_MEDIUM_RQUR_PR, "Transmission medium requirement prime"},
+ { PARAM_TYPE_LOCATION_NR, "Location number"},
+ { PARAM_TYPE_REDIR_NR_RSTRCT, "Redirection number restriction"},
+ { PARAM_TYPE_CALL_TRANS_REF, "Call transfer reference"},
+ { PARAM_TYPE_LOOP_PREV_IND, "Loop prevention indicators"},
+ { PARAM_TYPE_CALL_TRANS_NR, "Call transfer number"},
+ { PARAM_TYPE_CCSS, "CCSS"},
+ { PARAM_TYPE_FORW_GVNS, "Forward GVNS"},
+ { PARAM_TYPE_BACKW_GVNS, "Backward GVNS"},
+ { PARAM_TYPE_REDIRECT_CAPAB, "Redirect capability (reserved for national use)"},
+ { PARAM_TYPE_NETW_MGMT_CTRL, "Network management controls"},
+ { PARAM_TYPE_CORRELATION_ID, "Correlation id"},
+ { PARAM_TYPE_SCF_ID, "SCF id"},
+ { PARAM_TYPE_CALL_DIV_TREAT_IND, "Call diversion treatment indicators"},
+ { PARAM_TYPE_CALLED_IN_NR, "Called IN number"},
+ { PARAM_TYPE_CALL_OFF_TREAT_IND, "Call offering treatment indicators"},
+ { PARAM_TYPE_CHARGED_PARTY_IDENT, "Charged party identification (national use)"},
+ { PARAM_TYPE_CONF_TREAT_IND, "Conference treatment indicators"},
+ { PARAM_TYPE_DISPLAY_INFO, "Display information"},
+ { PARAM_TYPE_UID_ACTION_IND, "UID action indicators"},
+ { PARAM_TYPE_UID_CAPAB_IND, "UID capability indicators"},
+ { PARAM_TYPE_REDIRECT_COUNTER, "Redirect counter (reserved for national use)"},
+ { PARAM_TYPE_APPLICATON_TRANS, "Application transport"},
+ { PARAM_TYPE_COLLECT_CALL_REQ, "Collect call request"},
+ { PARAM_TYPE_CALLING_GEODETIC_LOCATION, "Calling geodetic location"},
+ { PARAM_TYPE_GENERIC_NR, "Generic number"},
+ { PARAM_TYPE_GENERIC_DIGITS, "Generic digits (national use)"},
+#if 0 /* XXX: Dups of below */
+ { PARAM_TYPE_JURISDICTION, "Jurisdiction"},
+ { PARAM_TYPE_GENERIC_NAME, "Generic name"},
+ { PARAM_TYPE_ORIG_LINE_INFO, "Originating line info"},
+#endif
+ { ANSI_ISUP_PARAM_TYPE_OPER_SERV_INF, "Operator Services information"},
+ { ANSI_ISUP_PARAM_TYPE_EGRESS, "Egress"},
+ { ANSI_ISUP_PARAM_TYPE_JURISDICTION, "Jurisdiction"},
+ { ANSI_ISUP_PARAM_TYPE_CARRIER_ID, "Carrier identification"},
+ { ANSI_ISUP_PARAM_TYPE_BUSINESS_GRP, "Business group"},
+ { ANSI_ISUP_PARAM_TYPE_GENERIC_NAME, "Generic name"},
+ { ANSI_ISUP_PARAM_TYPE_NOTIF_IND, "Notification indicator"},
+ { ANSI_ISUP_PARAM_TYPE_CG_CHAR_IND, "Circuit group characteristic indicator"},
+ { ANSI_ISUP_PARAM_TYPE_CVR_RESP_IND, "Circuit validation response indicator"},
+ { ANSI_ISUP_PARAM_TYPE_OUT_TRK_GRP_NM, "Outgoing trunk group number"},
+ { ANSI_ISUP_PARAM_TYPE_CI_NAME_IND, "Circuit identification name"},
+ { ANSI_ISUP_PARAM_CLLI_CODE, "COMMON LANGUAGE location identification (CLLI) code"},
+ { ANSI_ISUP_PARAM_ORIG_LINE_INF, "Originating line information"},
+ { ANSI_ISUP_PARAM_CHRG_NO, "Charge number"},
+ { ANSI_ISUP_PARAM_SERV_CODE_IND, "Service code indicator"},
+ { ANSI_ISUP_PARAM_SPEC_PROC_REQ, "Special processing request"},
+ { ANSI_ISUP_PARAM_CARRIER_SEL_INF, "Carrier selection information"},
+ { ANSI_ISUP_PARAM_NET_TRANS, "Network transport"},
{ 0, NULL}};
+static value_string_ext ansi_isup_parameter_type_value_ext = VALUE_STRING_EXT_INIT(ansi_isup_parameter_type_value);
#define CIC_LENGTH 2
#define BICC_CIC_LENGTH 4
@@ -604,10 +613,10 @@ static const value_string ansi_isup_parameter_type_value[] = {
#define USER_TO_USER_IND_LENGTH 1
#define RANGE_LENGTH 1
-#define CVR_RESP_IND_LENGTH 1
-#define CG_CHAR_IND_LENGTH 1
-#define CI_NAME_IND 28
-#define CLLI_CODE_LENGTH 13
+#define CVR_RESP_IND_LENGTH 1
+#define CG_CHAR_IND_LENGTH 1
+#define CI_NAME_IND 28
+#define CLLI_CODE_LENGTH 13
#define CALL_ID_LENGTH 3 /* for parameter Call Reference */
#define SPC_LENGTH 2 /* for parameter Call Reference, Connection request */
@@ -720,7 +729,7 @@ static const value_string isup_SCCP_method_ind_value[] = {
#define DATA_CALL 12
#define TEST_CALL 13
#define PAYPHONE 15
-const value_string isup_calling_partys_category_value[] = {
+static const value_string isup_calling_partys_category_value[] = {
{ UNKNOWN_AT_THIS_TIME, "Category unknown at this time (national use)"},
{ OPERATOR_FRENCH, "operator, language French"},
{ OPERATOR_ENGLISH, "operator, language English"},
@@ -732,17 +741,18 @@ const value_string isup_calling_partys_category_value[] = {
{ DATA_CALL, "data call (voice band data)"},
{ TEST_CALL, "test call"},
/* q.763-200212Amd2 */
- { 14, "IEPS call marking for preferential call set up"},
+ { 14, "IEPS call marking for preferential call set up"},
{ PAYPHONE, "payphone"},
{ 0, NULL}};
+value_string_ext isup_calling_partys_category_value_ext = VALUE_STRING_EXT_INIT(isup_calling_partys_category_value);
-#define CVR_RSP_IND_FAILURE 0
-#define CVR_RSP_IND_SUCCESS 1
+#define CVR_RSP_IND_FAILURE 0
+#define CVR_RSP_IND_SUCCESS 1
static const value_string isup_cvr_rsp_ind_value[ ] = {
- { CVR_RSP_IND_FAILURE, "CVR Response Fail" },
- { CVR_RSP_IND_SUCCESS, "CVR Response Success" },
- { 0, NULL }
+ { CVR_RSP_IND_FAILURE, "CVR Response Fail" },
+ { CVR_RSP_IND_SUCCESS, "CVR Response Success" },
+ { 0, NULL }
};
#define CVR_CG_IND_DOUBLE_SEIZE_NONE 0
@@ -751,51 +761,51 @@ static const value_string isup_cvr_rsp_ind_value[ ] = {
#define CVR_CG_IND_DOUBLE_SEIZE_ALL 3
static const value_string isup_cvr_cg_double_seize_value[ ] = {
- { CVR_CG_IND_DOUBLE_SEIZE_NONE, "Double Seize control NONE" },
- { CVR_CG_IND_DOUBLE_SEIZE_ODD, "Double Seize control odd circuits"},
- { CVR_CG_IND_DOUBLE_SEIZE_EVEN, "Double Seize control even circuits"},
- { CVR_CG_IND_DOUBLE_SEIZE_ALL, "Double Seize control all circuits"},
- {0, NULL }
+ { CVR_CG_IND_DOUBLE_SEIZE_NONE, "Double Seize control NONE" },
+ { CVR_CG_IND_DOUBLE_SEIZE_ODD, "Double Seize control odd circuits"},
+ { CVR_CG_IND_DOUBLE_SEIZE_EVEN, "Double Seize control even circuits"},
+ { CVR_CG_IND_DOUBLE_SEIZE_ALL, "Double Seize control all circuits"},
+ {0, NULL }
};
-#define CVR_CG_IND_CAR_IND_UNKNOWN 0
-#define CVR_CG_IND_CAR_IND_ANALOG 1
-#define CVR_CG_IND_CAR_IND_DIGITAL 2
-#define CVR_CG_IND_CAR_IND_ANALOG_DIG 3
+#define CVR_CG_IND_CAR_IND_UNKNOWN 0
+#define CVR_CG_IND_CAR_IND_ANALOG 1
+#define CVR_CG_IND_CAR_IND_DIGITAL 2
+#define CVR_CG_IND_CAR_IND_ANALOG_DIG 3
static const value_string isup_cvr_cg_car_ind_value[ ] = {
{ CVR_CG_IND_CAR_IND_UNKNOWN , "Carrier Type Unknown" },
-{ CVR_CG_IND_CAR_IND_ANALOG , "Carrier Type Analog" },
-{ CVR_CG_IND_CAR_IND_DIGITAL , "Carrier Type Digital"},
+{ CVR_CG_IND_CAR_IND_ANALOG , "Carrier Type Analog" },
+{ CVR_CG_IND_CAR_IND_DIGITAL , "Carrier Type Digital"},
{ CVR_CG_IND_CAR_IND_ANALOG_DIG, "Carrier Type Digital And Analog"},
{ 0, NULL }
};
-#define CVR_CG_IND_ALARM_CAR_IND_UNKNOWN 0
-#define CVR_CG_IND_ALARM_CAR_IND_SOFTWARE 1
-#define CVR_CG_IND_ALARM_CAR_IND_HARDWARE 2
-#define CVR_CG_IND_ALARM_CAR_IND_SPARE 3
+#define CVR_CG_IND_ALARM_CAR_IND_UNKNOWN 0
+#define CVR_CG_IND_ALARM_CAR_IND_SOFTWARE 1
+#define CVR_CG_IND_ALARM_CAR_IND_HARDWARE 2
+#define CVR_CG_IND_ALARM_CAR_IND_SPARE 3
static const value_string isup_cvr_alarm_car_ind_value[ ] = {
- { CVR_CG_IND_ALARM_CAR_IND_UNKNOWN , "Alarm Carrier Ind Default"},
- { CVR_CG_IND_ALARM_CAR_IND_SOFTWARE , "Alarm Carrier Ind Software"},
- { CVR_CG_IND_ALARM_CAR_IND_HARDWARE , "Alarm Carrier Ind Hardware"},
- { CVR_CG_IND_ALARM_CAR_IND_SPARE , "Alarm Carrier Ind Spare"},
- { 0, NULL }
+ { CVR_CG_IND_ALARM_CAR_IND_UNKNOWN , "Alarm Carrier Ind Default"},
+ { CVR_CG_IND_ALARM_CAR_IND_SOFTWARE , "Alarm Carrier Ind Software"},
+ { CVR_CG_IND_ALARM_CAR_IND_HARDWARE , "Alarm Carrier Ind Hardware"},
+ { CVR_CG_IND_ALARM_CAR_IND_SPARE , "Alarm Carrier Ind Spare"},
+ { 0, NULL }
};
#define CVR_CG_IND_CONT_CHK_UNKNOWN 0
-#define CVR_CG_IND_CONT_CHK_NONE 1
-#define CVR_CG_IND_CONT_CHK_STAT 2
+#define CVR_CG_IND_CONT_CHK_NONE 1
+#define CVR_CG_IND_CONT_CHK_STAT 2
#define CVR_CG_IND_CONT_CHK_PER_CALL 3
static const value_string isup_cvr_cont_chk_ind_value[ ] = {
- { CVR_CG_IND_CONT_CHK_UNKNOWN , "Continuity Check Unknown"},
- { CVR_CG_IND_CONT_CHK_NONE , "Continuity Check NONE"},
- { CVR_CG_IND_CONT_CHK_STAT ,"Continuity Check Statistical"},
- { CVR_CG_IND_CONT_CHK_PER_CALL ,"Continuity Check Per Call"},
- { 0, NULL }
+ { CVR_CG_IND_CONT_CHK_UNKNOWN , "Continuity Check Unknown"},
+ { CVR_CG_IND_CONT_CHK_NONE , "Continuity Check NONE"},
+ { CVR_CG_IND_CONT_CHK_STAT , "Continuity Check Statistical"},
+ { CVR_CG_IND_CONT_CHK_PER_CALL , "Continuity Check Per Call"},
+ { 0, NULL }
};
#define MEDIUM_SPEECH 0
@@ -834,7 +844,7 @@ static const value_string isup_cvr_cont_chk_ind_value[ ] = {
#define MEDIUM_28_64KBS 41
#define MEDIUM_29_64KBS 42
-const value_string isup_transmission_medium_requirement_value[] = {
+static const value_string isup_transmission_medium_requirement_value[] = {
{ MEDIUM_SPEECH, "speech"},
{ MEDIUM_64KBS, "64 kbit/s unrestricted"},
{ MEDIUM_3_1_KHZ_AUDIO, "3.1 kHz audio"},
@@ -871,6 +881,8 @@ const value_string isup_transmission_medium_requirement_value[] = {
{ MEDIUM_28_64KBS, "28x64 kbit/s unrestricted"},
{ MEDIUM_29_64KBS, "29x64 kbit/s unrestricted"},
{ 0, NULL}};
+value_string_ext isup_transmission_medium_requirement_value_ext = VALUE_STRING_EXT_INIT(isup_transmission_medium_requirement_value);
+
static const value_string isup_transmission_medium_requirement_prime_value[] = {
{ MEDIUM_SPEECH, "speech"},
{ MEDIUM_64KBS, "reserved for 64 kbit/s unrestricted"},
@@ -883,6 +895,7 @@ static const value_string isup_transmission_medium_requirement_prime_value[] = {
{ MEDIUM_1536KBS, "reserved for 1536 kbit/s unrestricted"},
{ MEDIUM_1920KBS, "reserved for 1920 kbit/s unrestricted"},
{ 0, NULL}};
+static value_string_ext isup_transmission_medium_requirement_prime_value_ext = VALUE_STRING_EXT_INIT(isup_transmission_medium_requirement_prime_value);
/* Definitions for Called and Calling Party number */
@@ -907,12 +920,12 @@ static const true_false_string isup_odd_even_ind_value = {
#define ISUP_CALLED_PARTY_NATURE_INTERNATNL_NR 4
#define ISUP_CALLED_PARTY_NATURE_NETW_SPEC_NR 5
-#define ISUP_CHARGE_NATURE_ANI_CGPA_SUB_NR 1
-#define ISUP_CHARGE_NATURE_ANI_NA 2
-#define ISUP_CHARGE_NATURE_ANI_CGPA_NAT_NR 3
-#define ISUP_CHARGE_NATURE_ANI_CDPA_SUB_NR 5
-#define ISUP_CHARGE_NATURE_ANI_CDPA_NO_NR 6
-#define ISUP_CHARGE_NATURE_ANI_CDPA_NAT_NR 7
+#define ISUP_CHARGE_NATURE_ANI_CGPA_SUB_NR 1
+#define ISUP_CHARGE_NATURE_ANI_NA 2
+#define ISUP_CHARGE_NATURE_ANI_CGPA_NAT_NR 3
+#define ISUP_CHARGE_NATURE_ANI_CDPA_SUB_NR 5
+#define ISUP_CHARGE_NATURE_ANI_CDPA_NO_NR 6
+#define ISUP_CHARGE_NATURE_ANI_CDPA_NAT_NR 7
static const value_string isup_called_party_nature_of_address_ind_value[] = {
{ ISUP_CALLED_PARTY_NATURE_SUBSCRIBER_NR, "subscriber number (national use)"},
@@ -930,29 +943,29 @@ static const value_string isup_calling_party_nature_of_address_ind_value[] = {
{ 0, NULL}};
static const value_string isup_charge_number_nature_of_address_ind_value[] = {
- { ISUP_CHARGE_NATURE_ANI_CGPA_SUB_NR, "ANI of the calling party; subscriber number"},
- { ISUP_CHARGE_NATURE_ANI_NA, "ANI not available or not provided"},
- { ISUP_CHARGE_NATURE_ANI_CGPA_NAT_NR, "ANI of the calling party; national number"},
- { ISUP_CHARGE_NATURE_ANI_CDPA_SUB_NR, "ANI of the called party; subscriber number"},
- { ISUP_CHARGE_NATURE_ANI_CDPA_NO_NR, "ANI of the called party; no number present"},
- { ISUP_CHARGE_NATURE_ANI_CDPA_NAT_NR, "ANI of the called party; national number"},
+ { ISUP_CHARGE_NATURE_ANI_CGPA_SUB_NR, "ANI of the calling party; subscriber number"},
+ { ISUP_CHARGE_NATURE_ANI_NA, "ANI not available or not provided"},
+ { ISUP_CHARGE_NATURE_ANI_CGPA_NAT_NR, "ANI of the calling party; national number"},
+ { ISUP_CHARGE_NATURE_ANI_CDPA_SUB_NR, "ANI of the called party; subscriber number"},
+ { ISUP_CHARGE_NATURE_ANI_CDPA_NO_NR, "ANI of the called party; no number present"},
+ { ISUP_CHARGE_NATURE_ANI_CDPA_NAT_NR, "ANI of the called party; national number"},
{ 0, NULL}};
-#define ISUP_GENERIC_NAME_PRESENTATION_ALLOWED 0
-#define ISUP_GENERIC_NAME_PRESENTATION_RESTRICT 1
-#define ISUP_GENERIC_NAME_PRESENTATION_BLOCK_TOGGLE 2
-#define ISUP_GENERIC_NAME_PRESENTATION_NO_INDIC 3
-#define ISUP_GENERIC_NAME_TYPE_SPARE 0
-#define ISUP_GENERIC_NAME_TYPE_CALLING 1
-#define ISUP_GENERIC_NAME_TYPE_ORIG_CALLED 2
-#define ISUP_GENERIC_NAME_TYPE_REDIRECTING 3
-#define ISUP_GENERIC_NAME_TYPE_CONNECTED 4
+#define ISUP_GENERIC_NAME_PRESENTATION_ALLOWED 0
+#define ISUP_GENERIC_NAME_PRESENTATION_RESTRICT 1
+#define ISUP_GENERIC_NAME_PRESENTATION_BLOCK_TOGGLE 2
+#define ISUP_GENERIC_NAME_PRESENTATION_NO_INDIC 3
+#define ISUP_GENERIC_NAME_TYPE_SPARE 0
+#define ISUP_GENERIC_NAME_TYPE_CALLING 1
+#define ISUP_GENERIC_NAME_TYPE_ORIG_CALLED 2
+#define ISUP_GENERIC_NAME_TYPE_REDIRECTING 3
+#define ISUP_GENERIC_NAME_TYPE_CONNECTED 4
static const value_string isup_generic_name_presentation_value[] = {
- { ISUP_GENERIC_NAME_PRESENTATION_ALLOWED, "presentation allowed"},
- { ISUP_GENERIC_NAME_PRESENTATION_RESTRICT, "presentation restricted"},
- { ISUP_GENERIC_NAME_PRESENTATION_BLOCK_TOGGLE, "blocking toggle"},
- { ISUP_GENERIC_NAME_PRESENTATION_NO_INDIC, "no indication"},
+ { ISUP_GENERIC_NAME_PRESENTATION_ALLOWED, "presentation allowed"},
+ { ISUP_GENERIC_NAME_PRESENTATION_RESTRICT, "presentation restricted"},
+ { ISUP_GENERIC_NAME_PRESENTATION_BLOCK_TOGGLE, "blocking toggle"},
+ { ISUP_GENERIC_NAME_PRESENTATION_NO_INDIC, "no indication"},
{ 0, NULL}};
static const true_false_string isup_generic_name_availability_value = {
@@ -961,14 +974,14 @@ static const true_false_string isup_generic_name_availability_value = {
};
static const value_string isup_generic_name_type_value[] = {
- { ISUP_GENERIC_NAME_TYPE_SPARE, "spare"},
- { ISUP_GENERIC_NAME_TYPE_CALLING, "calling name"},
- { ISUP_GENERIC_NAME_TYPE_ORIG_CALLED, "original called name"},
- { ISUP_GENERIC_NAME_TYPE_REDIRECTING, "redirecting name"},
- { ISUP_GENERIC_NAME_TYPE_CONNECTED, "connected name"},
- { 5, "spare"},
- { 6, "spare"},
- { 7, "spare"},
+ { ISUP_GENERIC_NAME_TYPE_SPARE, "spare"},
+ { ISUP_GENERIC_NAME_TYPE_CALLING, "calling name"},
+ { ISUP_GENERIC_NAME_TYPE_ORIG_CALLED, "original called name"},
+ { ISUP_GENERIC_NAME_TYPE_REDIRECTING, "redirecting name"},
+ { ISUP_GENERIC_NAME_TYPE_CONNECTED, "connected name"},
+ { 5, "spare"},
+ { 6, "spare"},
+ { 7, "spare"},
{ 0, NULL}};
static const true_false_string isup_INN_ind_value = {
@@ -1262,59 +1275,59 @@ static const true_false_string isup_connected_line_identity_request_ind_value =
static const value_string isup_redirecting_ind_value[] = {
/* according 3.45/Q.763 */
- { 0, "no redirection (national use)"},
- { 1, "call rerouted (national use)"},
- { 2, "call rerouted, all redirection information presentation restricted (national use)"},
- { 3, "call diverted"},
- { 4, "call diverted, all redirection information presentation restricted"},
- { 5, "call rerouted, redirection number presentation restricted (national use)"},
- { 6, "call diversion, redirection number presentation restricted (national use)"},
- { 7, "spare"},
- { 0, NULL}};
+ { 0, "no redirection (national use)"},
+ { 1, "call rerouted (national use)"},
+ { 2, "call rerouted, all redirection information presentation restricted (national use)"},
+ { 3, "call diverted"},
+ { 4, "call diverted, all redirection information presentation restricted"},
+ { 5, "call rerouted, redirection number presentation restricted (national use)"},
+ { 6, "call diversion, redirection number presentation restricted (national use)"},
+ { 7, "spare"},
+ { 0, NULL}};
static const value_string isup_original_redirection_reason_value[] = {
/* according 3.45/Q.763 */
- { 0, "unknown/not available"},
- { 1, "user busy (national use)"},
- { 2, "no reply (national use)"},
- { 3, "unconditional (national use)"},
- { 0, NULL}};
+ { 0, "unknown/not available"},
+ { 1, "user busy (national use)"},
+ { 2, "no reply (national use)"},
+ { 3, "unconditional (national use)"},
+ { 0, NULL}};
static const value_string isup_redirection_reason_value[] = {
/* according 3.45/Q.763 */
- { 0, "unknown/not available"},
- { 1, "user busy (national use)"},
- { 2, "no reply (national use)"},
- { 3, "unconditional (national use)"},
- { 4, "deflection during alerting"},
- { 5, "deflection immediate response"},
- { 6, "mobile subscriber not reachable"},
- { 0, NULL}};
+ { 0, "unknown/not available"},
+ { 1, "user busy (national use)"},
+ { 2, "no reply (national use)"},
+ { 3, "unconditional (national use)"},
+ { 4, "deflection during alerting"},
+ { 5, "deflection immediate response"},
+ { 6, "mobile subscriber not reachable"},
+ { 0, NULL}};
static const value_string isup_type_of_network_identification_value[] = {
/* according 3.53/Q.763 */
- { 0, "CCITT/ITU-T-standardized identification"},
- { 2, "national network identification"},
- { 0, NULL}};
+ { 0, "CCITT/ITU-T-standardized identification"},
+ { 2, "national network identification"},
+ { 0, NULL}};
static const value_string isup_network_identification_plan_value[] = {
/* according 3.53/Q.763 */
- { 0, "if CCITT/ITU-T id - unknown"},
- { 3, "if CCITT/ITU-T id - public data network id code (X.121)"},
- { 6, "if CCITT/ITU-T id - public land Mobile Network id code (E.211)"},
- { 0, NULL}};
+ { 0, "if CCITT/ITU-T id - unknown"},
+ { 3, "if CCITT/ITU-T id - public data network id code (X.121)"},
+ { 6, "if CCITT/ITU-T id - public land Mobile Network id code (E.211)"},
+ { 0, NULL}};
static const value_string isup_map_type_value[] = {
/* according 3.69/Q.763 */
- { 1, "1544 kbit/s digital path map format (64 kbit/s base rate"},
- { 2, "2048 kbit/s digital path map format (64 kbit/s base rate"},
- { 0, NULL}};
+ { 1, "1544 kbit/s digital path map format (64 kbit/s base rate"},
+ { 2, "2048 kbit/s digital path map format (64 kbit/s base rate"},
+ { 0, NULL}};
static const value_string isup_auto_congestion_level_value[] = {
/* according 3.4/Q.763 */
- { 1, "Congestion level 1 exceeded"},
- { 2, "Congestion level 2 exceeded"},
- { 0, NULL}};
+ { 1, "Congestion level 1 exceeded"},
+ { 2, "Congestion level 2 exceeded"},
+ { 0, NULL}};
static const true_false_string isup_inband_information_ind_value = {
/* according 3.37/Q.763 */
@@ -1340,10 +1353,10 @@ static const true_false_string isup_access_delivery_ind_value = {
static const value_string isup_loop_prevention_response_ind_value[] = {
/* according 3.67/Q.763 */
- { 0, "insufficient information"},
- { 1, "no loop exists"},
- { 2, "simultaneous transfer"},
- { 0, NULL}};
+ { 0, "insufficient information"},
+ { 1, "no loop exists"},
+ { 2, "simultaneous transfer"},
+ { 0, NULL}};
static const true_false_string isup_temporary_alternative_routing_ind_value = {
/* according 3.68/Q.763 */
@@ -1360,38 +1373,38 @@ static const true_false_string isup_extension_ind_value = {
static const value_string isup_call_to_be_diverted_ind_value[] = {
/* according 3.72/Q.763 */
- { 0, "no indication"},
- { 1, "call diversion allowed"},
- { 2, "call diversion not allowed"},
- { 3, "spare"},
- { 0, NULL}};
+ { 0, "no indication"},
+ { 1, "call diversion allowed"},
+ { 2, "call diversion not allowed"},
+ { 3, "spare"},
+ { 0, NULL}};
static const value_string isup_call_to_be_offered_ind_value[] = {
/* according 3.72/Q.763 */
- { 0, "no indication"},
- { 1, "call offering not allowed"},
- { 2, "call offering allowed"},
- { 3, "spare"},
- { 0, NULL}};
+ { 0, "no indication"},
+ { 1, "call offering not allowed"},
+ { 2, "call offering allowed"},
+ { 3, "spare"},
+ { 0, NULL}};
static const value_string isup_conference_acceptance_ind_value[] = {
/* according 3.76/Q.763 */
- { 0, "no indication"},
- { 1, "accept conference request"},
- { 2, "reject conference request"},
- { 3, "spare"},
- { 0, NULL}};
+ { 0, "no indication"},
+ { 1, "accept conference request"},
+ { 2, "reject conference request"},
+ { 3, "spare"},
+ { 0, NULL}};
static const value_string isup_application_transport_parameter_value[] = {
/* according 3.82/Q.763 */
- { 0, "Unidentified Context and Error Handling (UCEH) ASE"},
- { 1, "PSS1 ASE (VPN)"},
- { 2, "spare"},
- { 3, "Charging ASE"},
- { 4, "GAT"},
- { 5, "BAT ASE"},
- { 6, "Enhanced Unidentified Context and Error Handling ASE (EUCEH ASE)"},
- { 0, NULL}};
+ { 0, "Unidentified Context and Error Handling (UCEH) ASE"},
+ { 1, "PSS1 ASE (VPN)"},
+ { 2, "spare"},
+ { 3, "Charging ASE"},
+ { 4, "GAT"},
+ { 5, "BAT ASE"},
+ { 6, "Enhanced Unidentified Context and Error Handling ASE (EUCEH ASE)"},
+ { 0, NULL}};
static const true_false_string isup_Release_call_indicator_value = {
"release call",
@@ -1404,17 +1417,17 @@ static const true_false_string isup_Send_notification_ind_value = {
};
static const value_string isup_APM_segmentation_ind_value[] = {
- { 0x00, "final segment"},
- { 0x01, "number of following segments"},
- { 0x02, "number of following segments"},
- { 0x03, "number of following segments"},
- { 0x04, "number of following segments"},
- { 0x05, "number of following segments"},
- { 0x06, "number of following segments"},
- { 0x07, "number of following segments"},
- { 0x08, "number of following segments"},
- { 0x09, "number of following segments"},
- { 0, NULL}};
+ { 0x00, "final segment"},
+ { 0x01, "number of following segments"},
+ { 0x02, "number of following segments"},
+ { 0x03, "number of following segments"},
+ { 0x04, "number of following segments"},
+ { 0x05, "number of following segments"},
+ { 0x06, "number of following segments"},
+ { 0x07, "number of following segments"},
+ { 0x08, "number of following segments"},
+ { 0x09, "number of following segments"},
+ { 0, NULL}};
static const true_false_string isup_Sequence_ind_value = {
"new sequence",
@@ -1535,18 +1548,18 @@ static int hf_isup_screening_indicator = -1;
static int hf_isup_screening_indicator_enhanced = -1;
static int hf_isup_called_party_odd_address_signal_digit = -1;
static int hf_isup_calling_party_odd_address_signal_digit = -1;
-static int hf_isup_called_party_even_address_signal_digit = -1;
-static int hf_isup_calling_party_even_address_signal_digit = -1;
+static int hf_isup_called_party_even_address_signal_digit = -1;
+static int hf_isup_calling_party_even_address_signal_digit = -1;
static int hf_isup_generic_name_presentation = -1;
static int hf_isup_generic_name_availability = -1;
static int hf_isup_generic_name_type = -1;
static int hf_isup_generic_name_ia5 = -1;
-static int hf_isup_OECD_inf_ind = -1;
-static int hf_isup_IECD_inf_ind = -1;
-static int hf_isup_OECD_req_ind = -1;
-static int hf_isup_IECD_req_ind = -1;
+static int hf_isup_OECD_inf_ind = -1;
+static int hf_isup_IECD_inf_ind = -1;
+static int hf_isup_OECD_req_ind = -1;
+static int hf_isup_IECD_req_ind = -1;
static int hf_isup_calling_party_address_request_indicator = -1;
static int hf_isup_info_req_holding_indicator = -1;
@@ -1605,82 +1618,82 @@ static int hf_isup_network_identification_plan = -1;
static int hf_isup_map_type = -1;
-static int hf_isup_automatic_congestion_level = -1;
+static int hf_isup_automatic_congestion_level = -1;
-static int hf_isup_inband_information_ind = -1;
-static int hf_isup_call_diversion_may_occur_ind = -1;
-static int hf_isup_mlpp_user_ind = -1;
+static int hf_isup_inband_information_ind = -1;
+static int hf_isup_call_diversion_may_occur_ind = -1;
+static int hf_isup_mlpp_user_ind = -1;
-static int hf_isup_UUI_type = -1;
-static int hf_isup_UUI_req_service1 = -1;
-static int hf_isup_UUI_req_service2 = -1;
-static int hf_isup_UUI_req_service3 = -1;
-static int hf_isup_UUI_res_service1 = -1;
-static int hf_isup_UUI_res_service2 = -1;
-static int hf_isup_UUI_res_service3 = -1;
-static int hf_isup_UUI_network_discard_ind = -1;
-static int hf_isup_access_delivery_ind = -1;
+static int hf_isup_UUI_type = -1;
+static int hf_isup_UUI_req_service1 = -1;
+static int hf_isup_UUI_req_service2 = -1;
+static int hf_isup_UUI_req_service3 = -1;
+static int hf_isup_UUI_res_service1 = -1;
+static int hf_isup_UUI_res_service2 = -1;
+static int hf_isup_UUI_res_service3 = -1;
+static int hf_isup_UUI_network_discard_ind = -1;
+static int hf_isup_access_delivery_ind = -1;
-static int hf_isup_transmission_medium_requirement_prime = -1;
+static int hf_isup_transmission_medium_requirement_prime = -1;
-static int hf_isup_loop_prevention_response_ind = -1;
+static int hf_isup_loop_prevention_response_ind = -1;
-static int hf_isup_temporary_alternative_routing_ind = -1;
-static int hf_isup_extension_ind = -1;
+static int hf_isup_temporary_alternative_routing_ind = -1;
+static int hf_isup_extension_ind = -1;
-static int hf_isup_call_to_be_diverted_ind = -1;
+static int hf_isup_call_to_be_diverted_ind = -1;
-static int hf_isup_call_to_be_offered_ind = -1;
+static int hf_isup_call_to_be_offered_ind = -1;
-static int hf_isup_conference_acceptance_ind = -1;
+static int hf_isup_conference_acceptance_ind = -1;
-static int hf_isup_transit_at_intermediate_exchange_ind = -1;
-static int hf_isup_Release_call_ind = -1;
-static int hf_isup_Send_notification_ind = -1;
-static int hf_isup_Discard_message_ind_value = -1;
-static int hf_isup_Discard_parameter_ind = -1;
-static int hf_isup_Pass_on_not_possible_indicator = -1;
-static int hf_isup_pass_on_not_possible_indicator2 = -1;
-static int hf_isup_Broadband_narrowband_interworking_ind = -1;
-static int hf_isup_Broadband_narrowband_interworking_ind2 = -1;
+static int hf_isup_transit_at_intermediate_exchange_ind = -1;
+static int hf_isup_Release_call_ind = -1;
+static int hf_isup_Send_notification_ind = -1;
+static int hf_isup_Discard_message_ind_value = -1;
+static int hf_isup_Discard_parameter_ind = -1;
+static int hf_isup_Pass_on_not_possible_indicator = -1;
+static int hf_isup_pass_on_not_possible_indicator2 = -1;
+static int hf_isup_Broadband_narrowband_interworking_ind = -1;
+static int hf_isup_Broadband_narrowband_interworking_ind2 = -1;
-static int hf_isup_app_cont_ident = -1;
-static int hf_isup_app_Send_notification_ind = -1;
-static int hf_isup_apm_segmentation_ind = -1;
-static int hf_isup_apm_si_ind = -1;
-static int hf_isup_apm_slr = -1;
-static int hf_isup_orig_addr_len = -1;
-static int hf_isup_dest_addr_len = -1;
-static int hf_isup_app_Release_call_ind = -1;
-static int hf_isup_cause_location = -1;
+static int hf_isup_app_cont_ident = -1;
+static int hf_isup_app_Send_notification_ind = -1;
+static int hf_isup_apm_segmentation_ind = -1;
+static int hf_isup_apm_si_ind = -1;
+static int hf_isup_apm_slr = -1;
+static int hf_isup_orig_addr_len = -1;
+static int hf_isup_dest_addr_len = -1;
+static int hf_isup_app_Release_call_ind = -1;
+static int hf_isup_cause_location = -1;
-static int hf_ansi_isup_coding_standard = -1;
+static int hf_ansi_isup_coding_standard = -1;
-static int hf_length_indicator = -1;
-static int hf_afi = -1;
-static int hf_bicc_nsap_dsp = -1;
-static int hf_bat_ase_identifier = -1;
+static int hf_length_indicator = -1;
+static int hf_afi = -1;
+static int hf_bicc_nsap_dsp = -1;
+static int hf_bat_ase_identifier = -1;
-static int hf_Action_Indicator = -1;
+static int hf_Action_Indicator = -1;
-static int hf_Instruction_ind_for_general_action = -1;
+static int hf_Instruction_ind_for_general_action = -1;
-static int hf_Send_notification_ind_for_general_action = -1;
+static int hf_Send_notification_ind_for_general_action = -1;
-static int hf_Instruction_ind_for_pass_on_not_possible = -1;
+static int hf_Instruction_ind_for_pass_on_not_possible = -1;
-static int hf_Send_notification_ind_for_pass_on_not_possible = -1;
-static int hf_BCTP_Version_Indicator = -1;
-static int hf_Tunnelled_Protocol_Indicator = -1;
-static int hf_TPEI = -1;
-static int hf_BVEI = -1;
-static int hf_bncid = -1;
-static int hf_bat_ase_biwfa = -1;
-static int hf_characteristics = -1;
+static int hf_Send_notification_ind_for_pass_on_not_possible = -1;
+static int hf_BCTP_Version_Indicator = -1;
+static int hf_Tunnelled_Protocol_Indicator = -1;
+static int hf_TPEI = -1;
+static int hf_BVEI = -1;
+static int hf_bncid = -1;
+static int hf_bat_ase_biwfa = -1;
+static int hf_characteristics = -1;
-static int hf_Organization_Identifier = -1;
-static int hf_codec_type = -1;
-static int hf_etsi_codec_type = -1;
+static int hf_Organization_Identifier = -1;
+static int hf_codec_type = -1;
+static int hf_etsi_codec_type = -1;
static int hf_active_code_set = -1;
static int hf_active_code_set_12_2 = -1;
static int hf_active_code_set_10_2 = -1;
@@ -1701,21 +1714,21 @@ static int hf_supported_code_set_5_15 = -1;
static int hf_supported_code_set_4_75 = -1;
static int hf_optimisation_mode = -1;
static int hf_max_codec_modes = -1;
-static int hf_bearer_control_tunneling = -1;
-static int hf_Local_BCU_ID = -1;
-static int hf_late_cut_trough_cap_ind = -1;
-static int hf_bat_ase_signal = -1;
-static int hf_bat_ase_duration = -1;
-static int hf_bat_ase_bearer_redir_ind = -1;
-static int hf_BAT_ASE_Comp_Report_Reason = -1;
-static int hf_BAT_ASE_Comp_Report_ident = -1;
-static int hf_BAT_ASE_Comp_Report_diagnostic = -1;
-static int hf_nsap_ipv4_addr = -1;
-static int hf_nsap_ipv6_addr = -1;
-static int hf_iana_icp = -1;
-
-static int hf_isup_geo_loc_presentation_restricted_ind = -1;
-static int hf_isup_geo_loc_screening_ind = -1;
+static int hf_bearer_control_tunneling = -1;
+static int hf_Local_BCU_ID = -1;
+static int hf_late_cut_trough_cap_ind = -1;
+static int hf_bat_ase_signal = -1;
+static int hf_bat_ase_duration = -1;
+static int hf_bat_ase_bearer_redir_ind = -1;
+static int hf_BAT_ASE_Comp_Report_Reason = -1;
+static int hf_BAT_ASE_Comp_Report_ident = -1;
+static int hf_BAT_ASE_Comp_Report_diagnostic = -1;
+static int hf_nsap_ipv4_addr = -1;
+static int hf_nsap_ipv6_addr = -1;
+static int hf_iana_icp = -1;
+
+static int hf_isup_geo_loc_presentation_restricted_ind = -1;
+static int hf_isup_geo_loc_screening_ind = -1;
static int hf_isup_apm_msg_fragments = -1;
static int hf_isup_apm_msg_fragment = -1;
@@ -1728,17 +1741,17 @@ static int hf_isup_apm_msg_reassembled_in = -1;
static int hf_isup_apm_msg_reassembled_length = -1;
/* Initialize the subtree pointers */
-static gint ett_isup = -1;
-static gint ett_isup_parameter = -1;
-static gint ett_isup_address_digits = -1;
-static gint ett_isup_pass_along_message = -1;
-static gint ett_isup_circuit_state_ind = -1;
-static gint ett_bat_ase = -1;
-static gint ett_bicc = -1;
-static gint ett_bat_ase_element = -1;
-static gint ett_bat_ase_iwfa = -1;
-static gint ett_acs = -1;
-static gint ett_scs = -1;
+static gint ett_isup = -1;
+static gint ett_isup_parameter = -1;
+static gint ett_isup_address_digits = -1;
+static gint ett_isup_pass_along_message = -1;
+static gint ett_isup_circuit_state_ind = -1;
+static gint ett_bat_ase = -1;
+static gint ett_bicc = -1;
+static gint ett_bat_ase_element = -1;
+static gint ett_bat_ase_iwfa = -1;
+static gint ett_acs = -1;
+static gint ett_scs = -1;
static gint ett_isup_apm_msg_fragment = -1;
static gint ett_isup_apm_msg_fragments = -1;
@@ -1751,23 +1764,23 @@ static dissector_handle_t q931_ie_handle = NULL;
static gboolean isup_apm_desegment = TRUE;
static const fragment_items isup_apm_msg_frag_items = {
- /* Fragment subtrees */
- &ett_isup_apm_msg_fragment,
- &ett_isup_apm_msg_fragments,
- /* Fragment fields */
- &hf_isup_apm_msg_fragments,
- &hf_isup_apm_msg_fragment,
- &hf_isup_apm_msg_fragment_overlap,
- &hf_isup_apm_msg_fragment_overlap_conflicts,
- &hf_isup_apm_msg_fragment_multiple_tails,
- &hf_isup_apm_msg_fragment_too_long_fragment,
- &hf_isup_apm_msg_fragment_error,
- /* Reassembled in field */
- &hf_isup_apm_msg_reassembled_in,
- /* Reassembled length field */
- &hf_isup_apm_msg_reassembled_length,
- /* Tag */
- "ISUP APM Message fragments"
+ /* Fragment subtrees */
+ &ett_isup_apm_msg_fragment,
+ &ett_isup_apm_msg_fragments,
+ /* Fragment fields */
+ &hf_isup_apm_msg_fragments,
+ &hf_isup_apm_msg_fragment,
+ &hf_isup_apm_msg_fragment_overlap,
+ &hf_isup_apm_msg_fragment_overlap_conflicts,
+ &hf_isup_apm_msg_fragment_multiple_tails,
+ &hf_isup_apm_msg_fragment_too_long_fragment,
+ &hf_isup_apm_msg_fragment_error,
+ /* Reassembled in field */
+ &hf_isup_apm_msg_reassembled_in,
+ /* Reassembled length field */
+ &hf_isup_apm_msg_reassembled_length,
+ /* Tag */
+ "ISUP APM Message fragments"
};
static GHashTable *isup_apm_msg_fragment_table = NULL;
@@ -1777,8 +1790,8 @@ static GHashTable *isup_apm_msg_reassembled_table = NULL;
static void
isup_apm_defragment_init(void)
{
- fragment_table_init (&isup_apm_msg_fragment_table);
- reassembled_table_init(&isup_apm_msg_reassembled_table);
+ fragment_table_init (&isup_apm_msg_fragment_table);
+ reassembled_table_init(&isup_apm_msg_reassembled_table);
}
/* Info for the tap that must be passed between procedures */
@@ -1811,30 +1824,30 @@ static char number_to_char(int number)
static void
dissect_isup_cvr_response_ind_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
- guint8 cvr_response_ind;
+ guint8 cvr_response_ind;
- cvr_response_ind = tvb_get_guint8(parameter_tvb, 0);
- proto_tree_add_uint(parameter_tree, hf_isup_cvr_rsp_ind, parameter_tvb, 0, CVR_RESP_IND_LENGTH, cvr_response_ind );
- proto_item_set_text(parameter_item, "Circuit Validation Test Response Indicator: 0x%x", cvr_response_ind );
+ cvr_response_ind = tvb_get_guint8(parameter_tvb, 0);
+ proto_tree_add_uint(parameter_tree, hf_isup_cvr_rsp_ind, parameter_tvb, 0, CVR_RESP_IND_LENGTH, cvr_response_ind );
+ proto_item_set_text(parameter_item, "Circuit Validation Test Response Indicator: 0x%x", cvr_response_ind );
}
/* ------------------------------------------------------------------
- Dissector Parameter circuit validation response - circuit group
- characters
- */
+ Dissector Parameter circuit validation response - circuit group
+ characters
+*/
static void
dissect_isup_circuit_group_char_ind_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
- guint8 cvr_cg_char_ind;
+ guint8 cvr_cg_char_ind;
- cvr_cg_char_ind = tvb_get_guint8(parameter_tvb, 0);
- proto_tree_add_uint(parameter_tree, hf_isup_cvr_cg_car_ind, parameter_tvb, 0, CG_CHAR_IND_LENGTH, cvr_cg_char_ind );
- proto_tree_add_uint(parameter_tree, hf_isup_cvr_cg_double_seize, parameter_tvb, 0, CG_CHAR_IND_LENGTH, cvr_cg_char_ind );
- proto_tree_add_uint(parameter_tree, hf_isup_cvr_cg_alarm_car_ind, parameter_tvb, 0, CG_CHAR_IND_LENGTH, cvr_cg_char_ind );
- proto_tree_add_uint(parameter_tree, hf_isup_cvr_cont_chk_ind, parameter_tvb, 0, CG_CHAR_IND_LENGTH, cvr_cg_char_ind );
+ cvr_cg_char_ind = tvb_get_guint8(parameter_tvb, 0);
+ proto_tree_add_uint(parameter_tree, hf_isup_cvr_cg_car_ind, parameter_tvb, 0, CG_CHAR_IND_LENGTH, cvr_cg_char_ind );
+ proto_tree_add_uint(parameter_tree, hf_isup_cvr_cg_double_seize, parameter_tvb, 0, CG_CHAR_IND_LENGTH, cvr_cg_char_ind );
+ proto_tree_add_uint(parameter_tree, hf_isup_cvr_cg_alarm_car_ind, parameter_tvb, 0, CG_CHAR_IND_LENGTH, cvr_cg_char_ind );
+ proto_tree_add_uint(parameter_tree, hf_isup_cvr_cont_chk_ind, parameter_tvb, 0, CG_CHAR_IND_LENGTH, cvr_cg_char_ind );
- proto_item_set_text(parameter_item, "Circuit Validation Test Response Circuit Group Characteristics: 0x%x", cvr_cg_char_ind );
+ proto_item_set_text(parameter_item, "Circuit Validation Test Response Circuit Group Characteristics: 0x%x", cvr_cg_char_ind );
}
/* ------------------------------------------------------------------
@@ -1887,7 +1900,7 @@ dissect_isup_calling_partys_category_parameter(tvbuff_t *parameter_tvb,proto_tre
calling_partys_category = tvb_get_guint8(parameter_tvb, 0);
proto_tree_add_uint(parameter_tree, hf_isup_calling_partys_category, parameter_tvb, 0, CALLING_PRTYS_CATEGORY_LENGTH, calling_partys_category);
- proto_item_set_text(parameter_item, "Calling Party's category: 0x%x (%s)", calling_partys_category, val_to_str(calling_partys_category, isup_calling_partys_category_value, "reserved/spare"));
+ proto_item_set_text(parameter_item, "Calling Party's category: 0x%x (%s)", calling_partys_category, val_to_str_ext_const(calling_partys_category, &isup_calling_partys_category_value_ext, "reserved/spare"));
}
@@ -1902,7 +1915,7 @@ dissect_isup_transmission_medium_requirement_parameter(tvbuff_t *parameter_tvb,
transmission_medium_requirement = tvb_get_guint8(parameter_tvb, 0);
proto_tree_add_uint(parameter_tree, hf_isup_transmission_medium_requirement, parameter_tvb, 0, TRANSMISSION_MEDIUM_REQUIREMENT_LENGTH,transmission_medium_requirement);
- proto_item_set_text(parameter_item, "Transmission medium requirement: %u (%s)", transmission_medium_requirement, val_to_str(transmission_medium_requirement, isup_transmission_medium_requirement_value, "spare"));
+ proto_item_set_text(parameter_item, "Transmission medium requirement: %u (%s)", transmission_medium_requirement, val_to_str_ext_const(transmission_medium_requirement, &isup_transmission_medium_requirement_value_ext, "spare"));
}
/* ------------------------------------------------------------------
Dissector Parameter Called party number
@@ -1932,46 +1945,46 @@ dissect_isup_called_party_number_parameter(tvbuff_t *parameter_tvb, proto_tree *
offset = 2;
address_digits_item = proto_tree_add_text(parameter_tree, parameter_tvb,
- offset, -1,
- "Called Party Number");
+ offset, -1,
+ "Called Party Number");
address_digits_tree = proto_item_add_subtree(address_digits_item, ett_isup_address_digits);
while((length = tvb_reported_length_remaining(parameter_tvb, offset)) > 0){
- address_digit_pair = tvb_get_guint8(parameter_tvb, offset);
- proto_tree_add_uint(address_digits_tree, hf_isup_called_party_odd_address_signal_digit, parameter_tvb, offset, 1, address_digit_pair);
- called_number[i++] = number_to_char(address_digit_pair & ISUP_ODD_ADDRESS_SIGNAL_DIGIT_MASK);
- if (i > MAXDIGITS)
- THROW(ReportedBoundsError);
- if ((length - 1) > 0 ){
- proto_tree_add_uint(address_digits_tree, hf_isup_called_party_even_address_signal_digit, parameter_tvb, offset, 1, address_digit_pair);
- called_number[i++] = number_to_char((address_digit_pair & ISUP_EVEN_ADDRESS_SIGNAL_DIGIT_MASK) / 0x10);
- if (i > MAXDIGITS)
- THROW(ReportedBoundsError);
- }
- offset++;
- }
+ address_digit_pair = tvb_get_guint8(parameter_tvb, offset);
+ proto_tree_add_uint(address_digits_tree, hf_isup_called_party_odd_address_signal_digit, parameter_tvb, offset, 1, address_digit_pair);
+ called_number[i++] = number_to_char(address_digit_pair & ISUP_ODD_ADDRESS_SIGNAL_DIGIT_MASK);
+ if (i > MAXDIGITS)
+ THROW(ReportedBoundsError);
+ if ((length - 1) > 0 ){
+ proto_tree_add_uint(address_digits_tree, hf_isup_called_party_even_address_signal_digit, parameter_tvb, offset, 1, address_digit_pair);
+ called_number[i++] = number_to_char((address_digit_pair & ISUP_EVEN_ADDRESS_SIGNAL_DIGIT_MASK) / 0x10);
+ if (i > MAXDIGITS)
+ THROW(ReportedBoundsError);
+ }
+ offset++;
+ }
if (((indicators1 & 0x80) == 0) && (tvb_length(parameter_tvb) > 0)){ /* Even Indicator set -> last even digit is valid & has be displayed */
- proto_tree_add_uint(address_digits_tree, hf_isup_called_party_even_address_signal_digit, parameter_tvb, offset - 1, 1, address_digit_pair);
- called_number[i++] = number_to_char((address_digit_pair & ISUP_EVEN_ADDRESS_SIGNAL_DIGIT_MASK) / 0x10);
- if (i > MAXDIGITS)
- THROW(ReportedBoundsError);
+ proto_tree_add_uint(address_digits_tree, hf_isup_called_party_even_address_signal_digit, parameter_tvb, offset - 1, 1, address_digit_pair);
+ called_number[i++] = number_to_char((address_digit_pair & ISUP_EVEN_ADDRESS_SIGNAL_DIGIT_MASK) / 0x10);
+ if (i > MAXDIGITS)
+ THROW(ReportedBoundsError);
}
called_number[i++] = '\0';
proto_item_set_text(address_digits_item, "Called Party Number: %s", called_number);
proto_item_set_text(parameter_item, "Called Party Number: %s", called_number);
if ( number_plan == 1 ) {
- e164_info.e164_number_type = CALLED_PARTY_NUMBER;
- e164_info.nature_of_address = indicators1 & 0x7f;
- e164_info.E164_number_str = called_number;
- e164_info.E164_number_length = i - 1;
- dissect_e164_number(parameter_tvb, address_digits_tree, 2, (offset - 2), e164_info);
- hidden_item = proto_tree_add_string(address_digits_tree, hf_isup_called, parameter_tvb,
- offset - length, length, called_number);
- PROTO_ITEM_SET_HIDDEN(hidden_item);
+ e164_info.e164_number_type = CALLED_PARTY_NUMBER;
+ e164_info.nature_of_address = indicators1 & 0x7f;
+ e164_info.E164_number_str = called_number;
+ e164_info.E164_number_length = i - 1;
+ dissect_e164_number(parameter_tvb, address_digits_tree, 2, (offset - 2), e164_info);
+ hidden_item = proto_tree_add_string(address_digits_tree, hf_isup_called, parameter_tvb,
+ offset - length, length, called_number);
+ PROTO_ITEM_SET_HIDDEN(hidden_item);
} else {
- proto_tree_add_string(address_digits_tree, hf_isup_called, parameter_tvb,
- offset - length, length, called_number);
+ proto_tree_add_string(address_digits_tree, hf_isup_called, parameter_tvb,
+ offset - length, length, called_number);
}
tap_called_number = ep_strdup(called_number);
}
@@ -1995,8 +2008,8 @@ dissect_isup_subsequent_number_parameter(tvbuff_t *parameter_tvb, proto_tree *pa
offset = 1;
address_digits_item = proto_tree_add_text(parameter_tree, parameter_tvb,
- offset, -1,
- "Subsequent Number");
+ offset, -1,
+ "Subsequent Number");
address_digits_tree = proto_item_add_subtree(address_digits_item, ett_isup_address_digits);
while((length = tvb_reported_length_remaining(parameter_tvb, offset)) > 0){
@@ -2009,7 +2022,7 @@ dissect_isup_subsequent_number_parameter(tvbuff_t *parameter_tvb, proto_tree *pa
proto_tree_add_uint(address_digits_tree, hf_isup_called_party_even_address_signal_digit, parameter_tvb, offset, 1, address_digit_pair);
called_number[i++] = number_to_char((address_digit_pair & ISUP_EVEN_ADDRESS_SIGNAL_DIGIT_MASK) / 0x10);
if (i > MAXDIGITS)
- THROW(ReportedBoundsError);
+ THROW(ReportedBoundsError);
}
offset++;
}
@@ -2018,7 +2031,7 @@ dissect_isup_subsequent_number_parameter(tvbuff_t *parameter_tvb, proto_tree *pa
proto_tree_add_uint(address_digits_tree, hf_isup_called_party_even_address_signal_digit, parameter_tvb, offset - 1, 1, address_digit_pair);
called_number[i++] = number_to_char((address_digit_pair & ISUP_EVEN_ADDRESS_SIGNAL_DIGIT_MASK) / 0x10);
if (i > MAXDIGITS)
- THROW(ReportedBoundsError);
+ THROW(ReportedBoundsError);
}
called_number[i++] = '\0';
@@ -2111,241 +2124,245 @@ dissect_isup_backward_call_indicators_parameter(tvbuff_t *parameter_tvb,proto_tr
* dissector, as that has some values not specified by the standard but
* that appear to be used for purposes other than the ones in Q.850.
*/
-const value_string q850_cause_code_vals[] = {
- { 0x00, "Valid cause code not yet received" },
- { 0x01, "Unallocated (unassigned) number" },
- { 0x02, "No route to specified transit network" },
- { 0x03, "No route to destination" },
- { 0x04, "Send special information tone" },
- { 0x05, "Misdialled trunk prefix" },
- { 0x06, "Channel unacceptable" },
- { 0x07, "Call awarded and being delivered in an established channel" },
- { 0x08, "Preemption" },
- { 0x09, "Preemption - circuit reserved for reuse" },
- { 0x0E, "QoR: ported number" },
- { 0x10, "Normal call clearing" },
- { 0x11, "User busy" },
- { 0x12, "No user responding" },
- { 0x13, "No answer from user (user alerted)" },
- { 0x14, "Subscriber absent" },
- { 0x15, "Call rejected" },
- { 0x16, "Number changed" },
- { 0x17, "Redirection to new destination" },
- { 0x18, "Call rejected due to feature at the destination" },
- { 0x19, "Exchange routing error" },
- { 0x1A, "Non-selected user clearing" },
- { 0x1B, "Destination out of order" },
- { 0x1C, "Invalid number format (address incomplete)" },
- { 0x1D, "Facility rejected" },
- { 0x1E, "Response to STATUS ENQUIRY" },
- { 0x1F, "Normal unspecified" },
- { 0x21, "Circuit out of order" },
- { 0x22, "No circuit/channel available" },
- { 0x26, "Network out of order" },
- { 0x27, "Permanent frame mode connection out of service" },
- { 0x28, "Permanent frame mode connection operational" },
- { 0x29, "Temporary failure" },
- { 0x2A, "Switching equipment congestion" },
- { 0x2B, "Access information discarded" },
- { 0x2C, "Requested circuit/channel not available" },
- { 0x2E, "Precedence call blocked" },
- { 0x2F, "Resources unavailable, unspecified" },
- { 0x31, "Quality of service unavailable" },
- { 0x32, "Requested facility not subscribed" },
- { 0x35, "Outgoing calls barred within CUG" },
- { 0x37, "Incoming calls barred within CUG" },
- { 0x38, "Call waiting not subscribed" },
- { 0x39, "Bearer capability not authorized" },
- { 0x3A, "Bearer capability not presently available" },
- { 0x3E, "Inconsistency in designated outgoing access information and subscriber class" },
- { 0x3F, "Service or option not available, unspecified" },
- { 0x41, "Bearer capability not implemented" },
- { 0x42, "Channel type not implemented" },
- { 0x45, "Requested facility not implemented" },
- { 0x46, "Only restricted digital information bearer capability is available" },
- { 0x4F, "Service or option not implemented, unspecified" },
- { 0x51, "Invalid call reference value" },
- { 0x52, "Identified channel does not exist" },
- { 0x53, "Call identity does not exist for suspended call" },
- { 0x54, "Call identity in use" },
- { 0x55, "No call suspended" },
- { 0x56, "Call having the requested call identity has been cleared" },
- { 0x57, "Called user not member of CUG" },
- { 0x58, "Incompatible destination" },
- { 0x5A, "Non-existing CUG" },
- { 0x5B, "Invalid transit network selection (national use)" },
- { 0x5F, "Invalid message, unspecified" },
- { 0x60, "Mandatory information element is missing" },
- { 0x61, "Message type non-existent or not implemented" },
- { 0x62, "Message not compatible with call state or message type non-existent or not implemented" },
- { 0x63, "Information element nonexistent or not implemented" },
- { 0x64, "Invalid information element contents" },
- { 0x65, "Message not compatible with call state" },
- { 0x66, "Recovery on timer expiry" },
- { 0x67, "Parameter non-existent or not implemented - passed on" },
- { 0x6E, "Message with unrecognized parameter discarded" },
- { 0x6F, "Protocol error, unspecified" },
- { 0x7F, "Internetworking, unspecified" },
- { 0, NULL }
+static const value_string q850_cause_code_vals[] = {
+ { 0x00, "Valid cause code not yet received" },
+ { 0x01, "Unallocated (unassigned) number" },
+ { 0x02, "No route to specified transit network" },
+ { 0x03, "No route to destination" },
+ { 0x04, "Send special information tone" },
+ { 0x05, "Misdialled trunk prefix" },
+ { 0x06, "Channel unacceptable" },
+ { 0x07, "Call awarded and being delivered in an established channel" },
+ { 0x08, "Preemption" },
+ { 0x09, "Preemption - circuit reserved for reuse" },
+ { 0x0E, "QoR: ported number" },
+ { 0x10, "Normal call clearing" },
+ { 0x11, "User busy" },
+ { 0x12, "No user responding" },
+ { 0x13, "No answer from user (user alerted)" },
+ { 0x14, "Subscriber absent" },
+ { 0x15, "Call rejected" },
+ { 0x16, "Number changed" },
+ { 0x17, "Redirection to new destination" },
+ { 0x18, "Call rejected due to feature at the destination" },
+ { 0x19, "Exchange routing error" },
+ { 0x1A, "Non-selected user clearing" },
+ { 0x1B, "Destination out of order" },
+ { 0x1C, "Invalid number format (address incomplete)" },
+ { 0x1D, "Facility rejected" },
+ { 0x1E, "Response to STATUS ENQUIRY" },
+ { 0x1F, "Normal unspecified" },
+ { 0x21, "Circuit out of order" },
+ { 0x22, "No circuit/channel available" },
+ { 0x26, "Network out of order" },
+ { 0x27, "Permanent frame mode connection out of service" },
+ { 0x28, "Permanent frame mode connection operational" },
+ { 0x29, "Temporary failure" },
+ { 0x2A, "Switching equipment congestion" },
+ { 0x2B, "Access information discarded" },
+ { 0x2C, "Requested circuit/channel not available" },
+ { 0x2E, "Precedence call blocked" },
+ { 0x2F, "Resources unavailable, unspecified" },
+ { 0x31, "Quality of service unavailable" },
+ { 0x32, "Requested facility not subscribed" },
+ { 0x35, "Outgoing calls barred within CUG" },
+ { 0x37, "Incoming calls barred within CUG" },
+ { 0x38, "Call waiting not subscribed" },
+ { 0x39, "Bearer capability not authorized" },
+ { 0x3A, "Bearer capability not presently available" },
+ { 0x3E, "Inconsistency in designated outgoing access information and subscriber class" },
+ { 0x3F, "Service or option not available, unspecified" },
+ { 0x41, "Bearer capability not implemented" },
+ { 0x42, "Channel type not implemented" },
+ { 0x45, "Requested facility not implemented" },
+ { 0x46, "Only restricted digital information bearer capability is available" },
+ { 0x4F, "Service or option not implemented, unspecified" },
+ { 0x51, "Invalid call reference value" },
+ { 0x52, "Identified channel does not exist" },
+ { 0x53, "Call identity does not exist for suspended call" },
+ { 0x54, "Call identity in use" },
+ { 0x55, "No call suspended" },
+ { 0x56, "Call having the requested call identity has been cleared" },
+ { 0x57, "Called user not member of CUG" },
+ { 0x58, "Incompatible destination" },
+ { 0x5A, "Non-existing CUG" },
+ { 0x5B, "Invalid transit network selection (national use)" },
+ { 0x5F, "Invalid message, unspecified" },
+ { 0x60, "Mandatory information element is missing" },
+ { 0x61, "Message type non-existent or not implemented" },
+ { 0x62, "Message not compatible with call state or message type non-existent or not implemented" },
+ { 0x63, "Information element nonexistent or not implemented" },
+ { 0x64, "Invalid information element contents" },
+ { 0x65, "Message not compatible with call state" },
+ { 0x66, "Recovery on timer expiry" },
+ { 0x67, "Parameter non-existent or not implemented - passed on" },
+ { 0x6E, "Message with unrecognized parameter discarded" },
+ { 0x6F, "Protocol error, unspecified" },
+ { 0x7F, "Internetworking, unspecified" },
+ { 0, NULL }
};
+value_string_ext q850_cause_code_vals_ext = VALUE_STRING_EXT_INIT(q850_cause_code_vals);
static const value_string ansi_isup_cause_code_vals[] = {
- { 0x00, "Valid cause code not yet received" },
- { 0x01, "Unallocated (unassigned) number" },
- { 0x02, "No route to specified transit network" },
- { 0x03, "No route to destination" },
- { 0x04, "Send special information tone" },
- { 0x05, "Misdialled trunk prefix" },
- { 0x06, "Channel unacceptable" },
- { 0x07, "Call awarded and being delivered in an established channel" },
- { 0x08, "Preemption" },
- { 0x09, "Preemption - circuit reserved for reuse" },
- { 0x0E, "QoR: ported number" },
- { 0x10, "Normal call clearing" },
- { 0x11, "User busy" },
- { 0x12, "No user responding" },
- { 0x13, "No answer from user (user alerted)" },
- { 0x14, "Subscriber absent" },
- { 0x15, "Call rejected" },
- { 0x16, "Number changed" },
- { 23, "Unallocated destination number" },
- { 24, "Undefined business group" },
- { 0x19, "Exchange routing error" },
- { 0x1A, "Non-selected user clearing" },
- { 0x1B, "Destination out of order" },
- { 0x1C, "Invalid number format (address incomplete)" },
- { 0x1D, "Facility rejected" },
- { 0x1E, "Response to STATUS ENQUIRY" },
- { 0x1F, "Normal unspecified" },
- { 0x21, "Circuit out of order" },
- { 0x22, "No circuit/channel available" },
- { 0x26, "Network out of order" },
- { 0x27, "Permanent frame mode connection out of service" },
- { 0x28, "Permanent frame mode connection operational" },
- { 0x29, "Temporary failure" },
- { 0x2A, "Switching equipment congestion" },
- { 0x2B, "Access information discarded" },
- { 0x2C, "Requested circuit/channel not available" },
- { 45, "Preemption" },
- { 0x2E, "Precedence call blocked" },
- { 0x2F, "Resources unavailable, unspecified" },
- { 0x31, "Quality of service unavailable" },
- { 0x32, "Requested facility not subscribed" },
- { 51, "Call type incompatible with service request" },
- { 0x35, "Outgoing calls barred within CUG" },
- { 54, "Call blocked due to group restriction" },
- { 0x37, "Incoming calls barred within CUG" },
- { 0x38, "Call waiting not subscribed" },
- { 0x39, "Bearer capability not authorized" },
- { 0x3A, "Bearer capability not presently available" },
- { 0x3E, "Inconsistency in designated outgoing access information and subscriber class" },
- { 0x3F, "Service or option not available, unspecified" },
- { 0x41, "Bearer capability not implemented" },
- { 0x42, "Channel type not implemented" },
- { 0x45, "Requested facility not implemented" },
- { 0x46, "Only restricted digital information bearer capability is available" },
- { 0x4F, "Service or option not implemented, unspecified" },
- { 0x51, "Invalid call reference value" },
- { 0x52, "Identified channel does not exist" },
- { 0x53, "Call identity does not exist for suspended call" },
- { 0x54, "Call identity in use" },
- { 0x55, "No call suspended" },
- { 0x56, "Call having the requested call identity has been cleared" },
- { 0x57, "Called user not member of CUG" },
- { 0x58, "Incompatible destination" },
- { 0x5A, "Non-existing CUG" },
- { 0x5B, "Invalid transit network selection (national use)" },
- { 0x5F, "Invalid message, unspecified" },
- { 0x60, "Mandatory information element is missing" },
- { 0x61, "Message type non-existent or not implemented" },
- { 0x62, "Message not compatible with call state or message type non-existent or not implemented" },
- { 0x63, "Information element nonexistent or not implemented" },
- { 0x64, "Invalid information element contents" },
- { 0x65, "Message not compatible with call state" },
- { 0x66, "Recovery on timer expiry" },
- { 0x67, "Parameter non-existent or not implemented - passed on" },
- { 0x6E, "Message with unrecognized parameter discarded" },
- { 0x6F, "Protocol error, unspecified" },
- { 0x7F, "Internetworking, unspecified" },
- { 0, NULL }
+ { 0x00, "Valid cause code not yet received" },
+ { 0x01, "Unallocated (unassigned) number" },
+ { 0x02, "No route to specified transit network" },
+ { 0x03, "No route to destination" },
+ { 0x04, "Send special information tone" },
+ { 0x05, "Misdialled trunk prefix" },
+ { 0x06, "Channel unacceptable" },
+ { 0x07, "Call awarded and being delivered in an established channel" },
+ { 0x08, "Preemption" },
+ { 0x09, "Preemption - circuit reserved for reuse" },
+ { 0x0E, "QoR: ported number" },
+ { 0x10, "Normal call clearing" },
+ { 0x11, "User busy" },
+ { 0x12, "No user responding" },
+ { 0x13, "No answer from user (user alerted)" },
+ { 0x14, "Subscriber absent" },
+ { 0x15, "Call rejected" },
+ { 0x16, "Number changed" },
+ { 23, "Unallocated destination number" },
+ { 24, "Undefined business group" },
+ { 0x19, "Exchange routing error" },
+ { 0x1A, "Non-selected user clearing" },
+ { 0x1B, "Destination out of order" },
+ { 0x1C, "Invalid number format (address incomplete)" },
+ { 0x1D, "Facility rejected" },
+ { 0x1E, "Response to STATUS ENQUIRY" },
+ { 0x1F, "Normal unspecified" },
+ { 0x21, "Circuit out of order" },
+ { 0x22, "No circuit/channel available" },
+ { 0x26, "Network out of order" },
+ { 0x27, "Permanent frame mode connection out of service" },
+ { 0x28, "Permanent frame mode connection operational" },
+ { 0x29, "Temporary failure" },
+ { 0x2A, "Switching equipment congestion" },
+ { 0x2B, "Access information discarded" },
+ { 0x2C, "Requested circuit/channel not available" },
+ { 45, "Preemption" },
+ { 0x2E, "Precedence call blocked" },
+ { 0x2F, "Resources unavailable, unspecified" },
+ { 0x31, "Quality of service unavailable" },
+ { 0x32, "Requested facility not subscribed" },
+ { 51, "Call type incompatible with service request" },
+ { 0x35, "Outgoing calls barred within CUG" },
+ { 54, "Call blocked due to group restriction" },
+ { 0x37, "Incoming calls barred within CUG" },
+ { 0x38, "Call waiting not subscribed" },
+ { 0x39, "Bearer capability not authorized" },
+ { 0x3A, "Bearer capability not presently available" },
+ { 0x3E, "Inconsistency in designated outgoing access information and subscriber class" },
+ { 0x3F, "Service or option not available, unspecified" },
+ { 0x41, "Bearer capability not implemented" },
+ { 0x42, "Channel type not implemented" },
+ { 0x45, "Requested facility not implemented" },
+ { 0x46, "Only restricted digital information bearer capability is available" },
+ { 0x4F, "Service or option not implemented, unspecified" },
+ { 0x51, "Invalid call reference value" },
+ { 0x52, "Identified channel does not exist" },
+ { 0x53, "Call identity does not exist for suspended call" },
+ { 0x54, "Call identity in use" },
+ { 0x55, "No call suspended" },
+ { 0x56, "Call having the requested call identity has been cleared" },
+ { 0x57, "Called user not member of CUG" },
+ { 0x58, "Incompatible destination" },
+ { 0x5A, "Non-existing CUG" },
+ { 0x5B, "Invalid transit network selection (national use)" },
+ { 0x5F, "Invalid message, unspecified" },
+ { 0x60, "Mandatory information element is missing" },
+ { 0x61, "Message type non-existent or not implemented" },
+ { 0x62, "Message not compatible with call state or message type non-existent or not implemented" },
+ { 0x63, "Information element nonexistent or not implemented" },
+ { 0x64, "Invalid information element contents" },
+ { 0x65, "Message not compatible with call state" },
+ { 0x66, "Recovery on timer expiry" },
+ { 0x67, "Parameter non-existent or not implemented - passed on" },
+ { 0x6E, "Message with unrecognized parameter discarded" },
+ { 0x6F, "Protocol error, unspecified" },
+ { 0x7F, "Internetworking, unspecified" },
+ { 0, NULL }
};
+static value_string_ext ansi_isup_cause_code_vals_ext = VALUE_STRING_EXT_INIT(ansi_isup_cause_code_vals);
static const value_string ansi_isup_coding_standard_vals[] = {
- { 0, "CCITT Standard" },
- { 1, "Reserved for other international standards" },
- { 2, "ANSI Standard" },
- { 3, "Reserved" },
- { 0, NULL }
+ { 0, "CCITT Standard" },
+ { 1, "Reserved for other international standards" },
+ { 2, "ANSI Standard" },
+ { 3, "Reserved" },
+ { 0, NULL }
};
void
dissect_isup_cause_indicators_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{ guint length = tvb_reported_length(parameter_tvb);
proto_tree_add_text(parameter_tree, parameter_tvb,0, -1, "Cause indicators (-> Q.850)");
dissect_q931_cause_ie(parameter_tvb,0,length,
- parameter_tree,
- hf_isup_cause_indicator, &tap_cause_value, isup_parameter_type_value);
+ parameter_tree,
+ hf_isup_cause_indicator, &tap_cause_value, isup_parameter_type_value);
proto_item_set_text(parameter_item, "Cause indicators, see Q.850 (%u byte%s length)", length , plurality(length, "", "s"));
}
static void
dissect_ansi_isup_cause_indicators_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
- guint8 coding_standard;
- guint8 cause_value;
- int offset = 0;
- guint length = tvb_reported_length(parameter_tvb);
-
- coding_standard = (tvb_get_guint8(parameter_tvb, offset)&0x60)>>5;
-
- switch (coding_standard) {
- case 0:
- /*CCITT*/
- proto_tree_add_item(parameter_tree, hf_isup_cause_location, parameter_tvb, offset, 1, FALSE);
- proto_tree_add_item(parameter_tree, hf_ansi_isup_coding_standard, parameter_tvb, offset, 1, FALSE);
- proto_tree_add_item(parameter_tree, hf_isup_extension_ind, parameter_tvb, offset, 1, FALSE);
- offset ++;
- length--;
- if (length == 0)
- return;
- proto_tree_add_item(parameter_tree, hf_isup_cause_indicator, parameter_tvb, offset, 1, FALSE);
- cause_value=tvb_get_guint8(parameter_tvb, offset)&0x7f;
- offset ++;
- length--;
- proto_item_set_text(parameter_item, "Cause indicators: %s (%u)", val_to_str(cause_value, q850_cause_code_vals, "spare"),cause_value );
- if (length == 0) {
- return;
- }
- proto_tree_add_text(parameter_tree, parameter_tvb, offset,
- length, "Diagnostic: %s",
- tvb_bytes_to_str(parameter_tvb, offset, length));
- return;
- case 2:
- /*ANSI*/
- proto_tree_add_item(parameter_tree, hf_isup_cause_location, parameter_tvb, offset, 1, FALSE);
- proto_tree_add_item(parameter_tree, hf_ansi_isup_coding_standard, parameter_tvb, offset, 1, FALSE);
- proto_tree_add_item(parameter_tree, hf_isup_extension_ind, parameter_tvb, offset, 1, FALSE);
- offset ++;
- length--;
- if (length == 0)
- return;
- proto_tree_add_item(parameter_tree, hf_ansi_isup_cause_indicator, parameter_tvb, offset, 1, FALSE);
- cause_value=tvb_get_guint8(parameter_tvb, offset)&0x7f;
- proto_item_set_text(parameter_item, "Cause indicators: %s (%u)", val_to_str(cause_value, ansi_isup_cause_code_vals, "spare"),cause_value );
- offset ++;
- length--;
- if (length == 0) {
- return;
- }
- proto_tree_add_text(parameter_tree, parameter_tvb, offset,
- length, "Diagnostic: %s",
- tvb_bytes_to_str(parameter_tvb, offset, length));
- return;
- default:
- proto_tree_add_item(parameter_tree, hf_ansi_isup_coding_standard, parameter_tvb, offset, 1, FALSE);
- proto_tree_add_item(parameter_tree, hf_isup_extension_ind, parameter_tvb, offset, 1, FALSE);
- break;
- }
- proto_item_set_text(parameter_item, "Cause indicators(%u byte%s length)", length , plurality(length, "", "s"));
+ guint8 coding_standard;
+ guint8 cause_value;
+ int offset = 0;
+ guint length = tvb_reported_length(parameter_tvb);
+
+ coding_standard = (tvb_get_guint8(parameter_tvb, offset)&0x60)>>5;
+
+ switch (coding_standard) {
+ case 0:
+ /*CCITT*/
+ proto_tree_add_item(parameter_tree, hf_isup_cause_location, parameter_tvb, offset, 1, FALSE);
+ proto_tree_add_item(parameter_tree, hf_ansi_isup_coding_standard, parameter_tvb, offset, 1, FALSE);
+ proto_tree_add_item(parameter_tree, hf_isup_extension_ind, parameter_tvb, offset, 1, FALSE);
+ offset ++;
+ length--;
+ if (length == 0)
+ return;
+ proto_tree_add_item(parameter_tree, hf_isup_cause_indicator, parameter_tvb, offset, 1, FALSE);
+ cause_value=tvb_get_guint8(parameter_tvb, offset)&0x7f;
+ offset ++;
+ length--;
+ proto_item_set_text(parameter_item, "Cause indicators: %s (%u)", val_to_str_ext_const(cause_value, &q850_cause_code_vals_ext, "spare"),cause_value );
+ if (length == 0) {
+ return;
+ }
+ proto_tree_add_text(parameter_tree, parameter_tvb, offset,
+ length, "Diagnostic: %s",
+ tvb_bytes_to_str(parameter_tvb, offset, length));
+ return;
+ case 2:
+ /*ANSI*/
+ proto_tree_add_item(parameter_tree, hf_isup_cause_location, parameter_tvb, offset, 1, FALSE);
+ proto_tree_add_item(parameter_tree, hf_ansi_isup_coding_standard, parameter_tvb, offset, 1, FALSE);
+ proto_tree_add_item(parameter_tree, hf_isup_extension_ind, parameter_tvb, offset, 1, FALSE);
+ offset ++;
+ length--;
+ if (length == 0)
+ return;
+ proto_tree_add_item(parameter_tree, hf_ansi_isup_cause_indicator, parameter_tvb, offset, 1, FALSE);
+ cause_value=tvb_get_guint8(parameter_tvb, offset)&0x7f;
+ proto_item_set_text(parameter_item, "Cause indicators: %s (%u)",
+ val_to_str_ext_const(cause_value, &ansi_isup_cause_code_vals_ext, "spare"),
+ cause_value );
+ offset ++;
+ length--;
+ if (length == 0) {
+ return;
+ }
+ proto_tree_add_text(parameter_tree, parameter_tvb, offset,
+ length, "Diagnostic: %s",
+ tvb_bytes_to_str(parameter_tvb, offset, length));
+ return;
+ default:
+ proto_tree_add_item(parameter_tree, hf_ansi_isup_coding_standard, parameter_tvb, offset, 1, FALSE);
+ proto_tree_add_item(parameter_tree, hf_isup_extension_ind, parameter_tvb, offset, 1, FALSE);
+ break;
+ }
+ proto_item_set_text(parameter_item, "Cause indicators(%u byte%s length)", length , plurality(length, "", "s"));
}
/* ------------------------------------------------------------------
@@ -2420,8 +2437,8 @@ dissect_isup_circuit_state_ind_parameter(tvbuff_t *parameter_tvb, proto_tree *pa
while((length = tvb_reported_length_remaining(parameter_tvb, offset)) > 0){
circuit_state_item = proto_tree_add_text(parameter_tree, parameter_tvb,
- offset, -1,
- "Circuit# CIC+%u state", i);
+ offset, -1,
+ "Circuit# CIC+%u state", i);
circuit_state_tree = proto_item_add_subtree(circuit_state_item, ett_isup_circuit_state_ind);
circuit_state = tvb_get_guint8(parameter_tvb, offset);
if ((circuit_state & DC_8BIT_MASK) == 0){
@@ -2459,11 +2476,11 @@ static void
dissect_isup_user_to_user_information_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, proto_tree *parameter_tree, proto_item *parameter_item)
{ guint length = tvb_reported_length(parameter_tvb);
proto_tree_add_text(parameter_tree, parameter_tvb, 0, -1,
- "User-to-user info (-> Q.931)");
+ "User-to-user info (-> Q.931)");
dissect_q931_user_user_ie(parameter_tvb, pinfo, 0, length,
parameter_tree );
proto_item_set_text(parameter_item, "User-to-user information,(%u byte%s length)",
- length , plurality(length, "", "s"));
+ length , plurality(length, "", "s"));
}
/* ------------------------------------------------------------------
Dissector Parameter Call Reference
@@ -2486,92 +2503,93 @@ dissect_isup_call_reference_parameter(tvbuff_t *parameter_tvb, proto_tree *param
*/
static void
dissect_isup_access_transport_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree,
- proto_item *parameter_item, packet_info *pinfo)
+ proto_item *parameter_item, packet_info *pinfo)
{ guint length = tvb_reported_length(parameter_tvb);
proto_tree_add_text(parameter_tree, parameter_tvb, 0, -1,
- "Access transport parameter field (-> Q.931)");
+ "Access transport parameter field (-> Q.931)");
if (q931_ie_handle)
call_dissector(q931_ie_handle, parameter_tvb, pinfo, parameter_tree);
proto_item_set_text(parameter_item, "Access transport (%u byte%s length)",
- length , plurality(length, "", "s"));
+ length , plurality(length, "", "s"));
}
/* dissect x.213 NSAP coded Address */
-const value_string x213_afi_value[] = {
- { 0x34, "IANA ICP"},
- { 0x35, "IANA ICP"},
- { 0x36, "X.121"},
- { 0x37, "X.121"},
- { 0x38, "ISO DCC"},
- { 0x39, "ISO DCC"},
- { 0x40, "F.69"},
- { 0x41, "F.69"},
- { 0x42, "E.163"},
- { 0x43, "E.163"},
- { 0x44, "E.164"},
- { 0x45, "E.164"},
- { 0x46, "ISO 6523-ICD"},
- { 0x47, "ISO 6523-ICD"},
- { 0x48, "Local"},
- { 0x49, "Local"},
- { 0x50, "Local ISO/IEC 646 character "},
- { 0x51, "Local ( National character )"},
- { 0x52, "X.121"},
- { 0x53, "X.121"},
- { 0x54, "F.69"},
- { 0x55, "F.69"},
- { 0x56, "E.163"},
- { 0x57, "E.163"},
- { 0x58, "E.164"},
- { 0x59, "E.164"},
-
- { 0x76, "ITU-T IND"},
- { 0x77, "ITU-T IND"},
-
- { 0xb8, "IANA ICP Group no"},
- { 0xb9, "IANA ICP Group no"},
- { 0xba, "X.121 Group no"},
- { 0xbb, "X.121 Group no"},
- { 0xbc, "ISO DCC Group no"},
- { 0xbd, "ISO DCC Group no"},
- { 0xbe, "F.69 Group no"},
- { 0xbf, "F.69 Group no"},
- { 0xc0, "E.163 Group no"},
- { 0xc1, "E.163 Group no"},
- { 0xc2, "E.164 Group no"},
- { 0xc3, "E.164 Group no"},
- { 0xc4, "ISO 6523-ICD Group no"},
- { 0xc5, "ISO 6523-ICD Group no"},
- { 0xc6, "Local Group no"},
- { 0xc7, "Local Group no"},
- { 0xc8, "Local ISO/IEC 646 character Group no"},
- { 0xc9, "Local ( National character ) Group no"},
- { 0xca, "X.121 Group no"},
- { 0xcb, "X.121 Group no"},
- { 0xcd, "F.69 Group no"},
- { 0xce, "F.69 Group no"},
- { 0xcf, "E.163 Group no"},
- { 0xde, "E.163 Group no"},
- { 0xd0, "E.164 Group no"},
- { 0xd1, "E.164 Group no"},
-
- { 0xe2, "ITU-T IND Group no"},
- { 0xe3, "ITU-T IND Group no"},
- { 0, NULL }
+static const value_string x213_afi_value[] = {
+ { 0x34, "IANA ICP"},
+ { 0x35, "IANA ICP"},
+ { 0x36, "X.121"},
+ { 0x37, "X.121"},
+ { 0x38, "ISO DCC"},
+ { 0x39, "ISO DCC"},
+ { 0x40, "F.69"},
+ { 0x41, "F.69"},
+ { 0x42, "E.163"},
+ { 0x43, "E.163"},
+ { 0x44, "E.164"},
+ { 0x45, "E.164"},
+ { 0x46, "ISO 6523-ICD"},
+ { 0x47, "ISO 6523-ICD"},
+ { 0x48, "Local"},
+ { 0x49, "Local"},
+ { 0x50, "Local ISO/IEC 646 character "},
+ { 0x51, "Local ( National character )"},
+ { 0x52, "X.121"},
+ { 0x53, "X.121"},
+ { 0x54, "F.69"},
+ { 0x55, "F.69"},
+ { 0x56, "E.163"},
+ { 0x57, "E.163"},
+ { 0x58, "E.164"},
+ { 0x59, "E.164"},
+
+ { 0x76, "ITU-T IND"},
+ { 0x77, "ITU-T IND"},
+
+ { 0xb8, "IANA ICP Group no"},
+ { 0xb9, "IANA ICP Group no"},
+ { 0xba, "X.121 Group no"},
+ { 0xbb, "X.121 Group no"},
+ { 0xbc, "ISO DCC Group no"},
+ { 0xbd, "ISO DCC Group no"},
+ { 0xbe, "F.69 Group no"},
+ { 0xbf, "F.69 Group no"},
+ { 0xc0, "E.163 Group no"},
+ { 0xc1, "E.163 Group no"},
+ { 0xc2, "E.164 Group no"},
+ { 0xc3, "E.164 Group no"},
+ { 0xc4, "ISO 6523-ICD Group no"},
+ { 0xc5, "ISO 6523-ICD Group no"},
+ { 0xc6, "Local Group no"},
+ { 0xc7, "Local Group no"},
+ { 0xc8, "Local ISO/IEC 646 character Group no"},
+ { 0xc9, "Local ( National character ) Group no"},
+ { 0xca, "X.121 Group no"},
+ { 0xcb, "X.121 Group no"},
+ { 0xcd, "F.69 Group no"},
+ { 0xce, "F.69 Group no"},
+ { 0xcf, "E.163 Group no"},
+ { 0xd0, "E.164 Group no"},
+ { 0xd1, "E.164 Group no"},
+ { 0xde, "E.163 Group no"},
+
+ { 0xe2, "ITU-T IND Group no"},
+ { 0xe3, "ITU-T IND Group no"},
+ { 0, NULL }
};
+value_string_ext x213_afi_value_ext = VALUE_STRING_EXT_INIT(x213_afi_value);
-/* Up-to-date information on the allocated ICP values can be found in */
-/*draft-gray-rfc1888bis-01 at */
-/*http://www.ietf.org/internet-drafts/draft-gray-rfc1888bis-01.txt */
+/* Up-to-date information on the allocated ICP values can be found in */
+/*draft-gray-rfc1888bis-01 at */
+/*http://www.ietf.org/internet-drafts/draft-gray-rfc1888bis-01.txt */
static const value_string iana_icp_values[] = {
- { 0x0, "IP Version 6 Address"},
- { 0x1, "IP Version 4 Address"},
- { 0, NULL }
+ { 0x0, "IP Version 6 Address"},
+ { 0x1, "IP Version 4 Address"},
+ { 0, NULL }
};
/*
@@ -2582,145 +2600,147 @@ static const value_string iana_icp_values[] = {
void
dissect_nsap(tvbuff_t *parameter_tvb,gint offset,gint len, proto_tree *parameter_tree)
{
- guint8 afi;
- guint8 length = 0;
- guint icp, cc_offset;
-
- afi = tvb_get_guint8(parameter_tvb, offset);
-
- switch ( afi ) {
- case 0x35: /* IANA ICP Binary fortmat*/
- proto_tree_add_text(parameter_tree, parameter_tvb, offset, 3,
- "IDP = %s", tvb_bytes_to_str(parameter_tvb, offset, 3));
-
- proto_tree_add_uint(parameter_tree, hf_afi, parameter_tvb, offset, 1, afi );
- offset = offset + 1;
- icp = tvb_get_ntohs(parameter_tvb, offset);
- proto_tree_add_uint(parameter_tree, hf_iana_icp, parameter_tvb, offset, 1, icp );
- if ( icp == 0 ){ /* IPv6 addr */
- proto_tree_add_text(parameter_tree, parameter_tvb, offset + 2 , 17,
- "DSP = %s", tvb_bytes_to_str(parameter_tvb, offset + 2, 17));
- proto_tree_add_item(parameter_tree, hf_nsap_ipv6_addr, parameter_tvb, offset + 2,
- 16, FALSE);
-
- }
- else { /* IPv4 addr */
- /* XXX - this is really only for ICP 1 */
- proto_tree_add_text(parameter_tree, parameter_tvb, offset + 2, 17,
- "DSP = %s", tvb_bytes_to_str(parameter_tvb, offset + 2, 17));
- proto_tree_add_item(parameter_tree, hf_nsap_ipv4_addr, parameter_tvb, offset + 2, 4, FALSE);
- }
-
- break;
- case 0x45: /* E.164 ATM format */
- case 0xC3: /* E.164 ATM group format */
- proto_tree_add_text(parameter_tree, parameter_tvb, offset, 9,
- "IDP = %s", tvb_bytes_to_str(parameter_tvb, offset, 9));
-
- proto_tree_add_uint(parameter_tree, hf_afi, parameter_tvb, offset, 1, afi );
-
- proto_tree_add_text(parameter_tree, parameter_tvb, offset + 1, 8,
- "IDI = %s", tvb_bytes_to_str(parameter_tvb, offset + 1, 8));
- offset = offset +1;
- /* Dissect country code */
- cc_offset = offset;
- dissect_e164_cc(parameter_tvb, parameter_tree, 3, TRUE);
-
- proto_tree_add_text(parameter_tree,parameter_tvb, cc_offset, length,"DSP length %u(len %u -9 )",(len-9),len );
-
- proto_tree_add_item(parameter_tree, hf_bicc_nsap_dsp, parameter_tvb, offset + 8, (len - 9),FALSE);
-
- break;
- default:
- proto_tree_add_uint(parameter_tree, hf_afi, parameter_tvb, offset, len, afi );
- }/* end switch afi */
+ guint8 afi;
+ guint8 length = 0;
+ guint icp, cc_offset;
+
+ afi = tvb_get_guint8(parameter_tvb, offset);
+
+ switch ( afi ) {
+ case 0x35: /* IANA ICP Binary fortmat*/
+ proto_tree_add_text(parameter_tree, parameter_tvb, offset, 3,
+ "IDP = %s", tvb_bytes_to_str(parameter_tvb, offset, 3));
+
+ proto_tree_add_uint(parameter_tree, hf_afi, parameter_tvb, offset, 1, afi );
+ offset = offset + 1;
+ icp = tvb_get_ntohs(parameter_tvb, offset);
+ proto_tree_add_uint(parameter_tree, hf_iana_icp, parameter_tvb, offset, 1, icp );
+ if ( icp == 0 ){ /* IPv6 addr */
+ proto_tree_add_text(parameter_tree, parameter_tvb, offset + 2 , 17,
+ "DSP = %s", tvb_bytes_to_str(parameter_tvb, offset + 2, 17));
+ proto_tree_add_item(parameter_tree, hf_nsap_ipv6_addr, parameter_tvb, offset + 2,
+ 16, FALSE);
+
+ }
+ else { /* IPv4 addr */
+ /* XXX - this is really only for ICP 1 */
+ proto_tree_add_text(parameter_tree, parameter_tvb, offset + 2, 17,
+ "DSP = %s", tvb_bytes_to_str(parameter_tvb, offset + 2, 17));
+ proto_tree_add_item(parameter_tree, hf_nsap_ipv4_addr, parameter_tvb, offset + 2, 4, FALSE);
+ }
+
+ break;
+ case 0x45: /* E.164 ATM format */
+ case 0xC3: /* E.164 ATM group format */
+ proto_tree_add_text(parameter_tree, parameter_tvb, offset, 9,
+ "IDP = %s", tvb_bytes_to_str(parameter_tvb, offset, 9));
+
+ proto_tree_add_uint(parameter_tree, hf_afi, parameter_tvb, offset, 1, afi );
+
+ proto_tree_add_text(parameter_tree, parameter_tvb, offset + 1, 8,
+ "IDI = %s", tvb_bytes_to_str(parameter_tvb, offset + 1, 8));
+ offset = offset +1;
+ /* Dissect country code */
+ cc_offset = offset;
+ dissect_e164_cc(parameter_tvb, parameter_tree, 3, TRUE);
+
+ proto_tree_add_text(parameter_tree,parameter_tvb, cc_offset, length,"DSP length %u(len %u -9 )",(len-9),len );
+
+ proto_tree_add_item(parameter_tree, hf_bicc_nsap_dsp, parameter_tvb, offset + 8, (len - 9),FALSE);
+
+ break;
+ default:
+ proto_tree_add_uint(parameter_tree, hf_afi, parameter_tvb, offset, len, afi );
+ }/* end switch afi */
}
-#define ACTION_INDICATOR 0x01
-#define BACKBONE_NETWORK_CONNECTION_IDENTIFIER 0x02
-#define INTERWORKING_FUNCTION_ADDRESS 0x03
-#define CODEC_LIST 0x04
-#define CODEC 0x05
-#define BAT_COMPATIBILITY_REPORT 0x06
-#define BEARER_NETWORK_CONNECTION_CHARACTERISTICS 0x07
-#define BEARER_CONTROL_INFORMATION 0x08
-#define BEARER_CONTROL_TUNNELLING 0x09
-#define BEARER_CONTROL_UNIT_IDENTIFIER 0x0A
-#define SIGNAL 0x0B
-#define BEARER_REDIRECTION_CAPABILITY 0x0C
-#define BEARER_REDIRECTION_INDICATORS 0x0D
-#define SIGNAL_TYPE 0x0E
-#define DURATION 0x0F
+#define ACTION_INDICATOR 0x01
+#define BACKBONE_NETWORK_CONNECTION_IDENTIFIER 0x02
+#define INTERWORKING_FUNCTION_ADDRESS 0x03
+#define CODEC_LIST 0x04
+#define CODEC 0x05
+#define BAT_COMPATIBILITY_REPORT 0x06
+#define BEARER_NETWORK_CONNECTION_CHARACTERISTICS 0x07
+#define BEARER_CONTROL_INFORMATION 0x08
+#define BEARER_CONTROL_TUNNELLING 0x09
+#define BEARER_CONTROL_UNIT_IDENTIFIER 0x0A
+#define SIGNAL 0x0B
+#define BEARER_REDIRECTION_CAPABILITY 0x0C
+#define BEARER_REDIRECTION_INDICATORS 0x0D
+#define SIGNAL_TYPE 0x0E
+#define DURATION 0x0F
static const value_string bat_ase_list_of_Identifiers_vals[] = {
- { 0x00 , "spare" },
- { ACTION_INDICATOR , "Action Indicator" },
- { BACKBONE_NETWORK_CONNECTION_IDENTIFIER , "Backbone Network Connection Identifier" },
- { INTERWORKING_FUNCTION_ADDRESS , "Interworking Function Address" },
- { CODEC_LIST , "Codec List" },
- { CODEC , "Codec" },
- { BAT_COMPATIBILITY_REPORT , "BAT Compatibility Report" },
- { BEARER_NETWORK_CONNECTION_CHARACTERISTICS , "Bearer Network Connection Characteristics" },
- { BEARER_CONTROL_INFORMATION , "Bearer Control Information"},
- { BEARER_CONTROL_TUNNELLING , "Bearer Control Tunnelling"},
- { BEARER_CONTROL_UNIT_IDENTIFIER , "Bearer Control Unit Identifier" },
- { SIGNAL , "Signal"},
- { BEARER_REDIRECTION_CAPABILITY , "Bearer Redirection Capability"},
- { BEARER_REDIRECTION_INDICATORS , "Bearer Redirection Indicators"},
- { SIGNAL_TYPE , "Signal Type"},
- { DURATION , "Duration" },
- { 0, NULL }
+ { 0x00 , "spare" },
+ { ACTION_INDICATOR , "Action Indicator" },
+ { BACKBONE_NETWORK_CONNECTION_IDENTIFIER , "Backbone Network Connection Identifier" },
+ { INTERWORKING_FUNCTION_ADDRESS , "Interworking Function Address" },
+ { CODEC_LIST , "Codec List" },
+ { CODEC , "Codec" },
+ { BAT_COMPATIBILITY_REPORT , "BAT Compatibility Report" },
+ { BEARER_NETWORK_CONNECTION_CHARACTERISTICS , "Bearer Network Connection Characteristics" },
+ { BEARER_CONTROL_INFORMATION , "Bearer Control Information"},
+ { BEARER_CONTROL_TUNNELLING , "Bearer Control Tunnelling"},
+ { BEARER_CONTROL_UNIT_IDENTIFIER , "Bearer Control Unit Identifier" },
+ { SIGNAL , "Signal"},
+ { BEARER_REDIRECTION_CAPABILITY , "Bearer Redirection Capability"},
+ { BEARER_REDIRECTION_INDICATORS , "Bearer Redirection Indicators"},
+ { SIGNAL_TYPE , "Signal Type"},
+ { DURATION , "Duration" },
+ { 0, NULL }
};
+static value_string_ext bat_ase_list_of_Identifiers_vals_ext = VALUE_STRING_EXT_INIT(bat_ase_list_of_Identifiers_vals);
/*ITU-T Q.765.5 (06/2000) 13*/
static const value_string Instruction_indicator_for_general_action_vals[] =
{
- { 0, "Pass on information element"},
- { 1, "Discard information element"},
- { 2, "Discard BICC data"},
- { 3, "Release call"},
- { 0, NULL}};
+ { 0, "Pass on information element"},
+ { 1, "Discard information element"},
+ { 2, "Discard BICC data"},
+ { 3, "Release call"},
+ { 0, NULL}};
static const value_string Instruction_indicator_for_pass_on_not_possible_vals[] = {
- { 0, "Release call"},
- { 1, "Discard information element"},
- { 2, "Discard BICC data"},
- { 3, "reserved (interpreted as 00)"},
- { 0, NULL}};
+ { 0, "Release call"},
+ { 1, "Discard information element"},
+ { 2, "Discard BICC data"},
+ { 3, "reserved (interpreted as 00)"},
+ { 0, NULL}};
static const value_string bat_ase_action_indicator_field_vals[] = {
- { 0x00, "no indication"},
- { 0x01, "connect backward"},
- { 0x02, "connect forward"},
- { 0x03, "connect forward, no notification"},
- { 0x04, "connect forward, plus notification"},
- { 0x05, "connect forward, no notification + selected codec"},
- { 0x06, "connect forward, plus notification + selected codec"},
- { 0x07, "use idle"},
- { 0x08, "connected"},
- { 0x09, "switched"},
- { 0x0a, "selected codec"},
- { 0x0b, "modify codec"},
- { 0x0c, "successful codec modification"},
- { 0x0d, "codec modification failure"},
- { 0x0e, "mid-call codec negotiation"},
- { 0x0f, "modify to selected codec information"},
- { 0x10, "mid-call codec negotiation failure"},
- { 0x11, "start signal, notify"},
- { 0x12, "start signal, no notify"},
- { 0x13, "stop signal, notify"},
- { 0x14, "stop signal, no notify"},
- { 0x15, "start signal acknowledge"},
- { 0x16, "start signal reject"},
- { 0x17, "stop signal acknowledge"},
- { 0x18, "bearer redirect"},
- { 0, NULL }
+ { 0x00, "no indication"},
+ { 0x01, "connect backward"},
+ { 0x02, "connect forward"},
+ { 0x03, "connect forward, no notification"},
+ { 0x04, "connect forward, plus notification"},
+ { 0x05, "connect forward, no notification + selected codec"},
+ { 0x06, "connect forward, plus notification + selected codec"},
+ { 0x07, "use idle"},
+ { 0x08, "connected"},
+ { 0x09, "switched"},
+ { 0x0a, "selected codec"},
+ { 0x0b, "modify codec"},
+ { 0x0c, "successful codec modification"},
+ { 0x0d, "codec modification failure"},
+ { 0x0e, "mid-call codec negotiation"},
+ { 0x0f, "modify to selected codec information"},
+ { 0x10, "mid-call codec negotiation failure"},
+ { 0x11, "start signal, notify"},
+ { 0x12, "start signal, no notify"},
+ { 0x13, "stop signal, notify"},
+ { 0x14, "stop signal, no notify"},
+ { 0x15, "start signal acknowledge"},
+ { 0x16, "start signal reject"},
+ { 0x17, "stop signal acknowledge"},
+ { 0x18, "bearer redirect"},
+ { 0, NULL }
};
+static value_string_ext bat_ase_action_indicator_field_vals_ext = VALUE_STRING_EXT_INIT(bat_ase_action_indicator_field_vals);
static const true_false_string BCTP_BVEI_value = {
"Version Error Indication, BCTP version not supported",
@@ -2729,10 +2749,10 @@ static const true_false_string BCTP_BVEI_value = {
static const value_string BCTP_Tunnelled_Protocol_Indicator_vals[] = {
- { 0x20, "IPBCP (text encoded)"},
- { 0x21, "spare (text encoded protocol)"},
- { 0x22, "not used"},
- { 0, NULL }
+ { 0x20, "IPBCP (text encoded)"},
+ { 0x21, "spare (text encoded protocol)"},
+ { 0x22, "not used"},
+ { 0, NULL }
};
static const true_false_string BCTP_TPEI_value = {
@@ -2741,97 +2761,100 @@ static const true_false_string BCTP_TPEI_value = {
};
-#define ITU_T 0x01
-#define ETSI 0x02
+#define ITU_T 0x01
+#define ETSI 0x02
static const value_string bat_ase_organization_identifier_subfield_vals[] = {
- { 0x00, "no indication"},
- { 0x01, "ITU-T"},
- { 0x02, "ETSI (refer to TS 26.103)"},
- { 0, NULL }
+ { 0x00, "no indication"},
+ { 0x01, "ITU-T"},
+ { 0x02, "ETSI (refer to TS 26.103)"},
+ { 0, NULL }
};
-#define G_711_64_A 0x01
-#define G_711_64_U 0x02
-#define G_711_56_A 0x03
-#define G_711_56_U 0x04
-#define G_722_SB_ADPCM 0x05
-#define G_723_1 0x06
-#define G_723_1_Annex_A 0x07
-#define G_726_ADPCM 0x08
-#define G_727_Embedded_ADPCM 0x09
-#define G_728 0x0a
-#define G_729_CS_ACELP 0x0b
-#define G_729_Annex_B 0x0c
+#define G_711_64_A 0x01
+#define G_711_64_U 0x02
+#define G_711_56_A 0x03
+#define G_711_56_U 0x04
+#define G_722_SB_ADPCM 0x05
+#define G_723_1 0x06
+#define G_723_1_Annex_A 0x07
+#define G_726_ADPCM 0x08
+#define G_727_Embedded_ADPCM 0x09
+#define G_728 0x0a
+#define G_729_CS_ACELP 0x0b
+#define G_729_Annex_B 0x0c
static const value_string ITU_T_codec_type_subfield_vals[] = {
- { 0x00, "no indication"},
- { G_711_64_A, "G.711 64 kbit/s A-law"},
- { G_711_64_U, "G.711 64 kbit/s -law"},
- { G_711_56_A, "G.711 56 kbit/s A-law"},
- { G_711_56_U, "G.711 56 kbit/s -law"},
- { G_722_SB_ADPCM, "G.722 (SB-ADPCM)"},
- { G_723_1, "G.723.1"},
- { G_723_1_Annex_A, "G.723.1 Annex A (silence suppression)"},
- { G_726_ADPCM, "G.726 (ADPCM)"},
- { G_727_Embedded_ADPCM, "G.727 (Embedded ADPCM)"},
- { G_728, "G.728"},
- { G_729_CS_ACELP, "G.729 (CS-ACELP)"},
- { G_729_Annex_B, "G.729 Annex B (silence suppression)"},
- { 0, NULL }
+ { 0x00, "no indication"},
+ { G_711_64_A, "G.711 64 kbit/s A-law"},
+ { G_711_64_U, "G.711 64 kbit/s -law"},
+ { G_711_56_A, "G.711 56 kbit/s A-law"},
+ { G_711_56_U, "G.711 56 kbit/s -law"},
+ { G_722_SB_ADPCM, "G.722 (SB-ADPCM)"},
+ { G_723_1, "G.723.1"},
+ { G_723_1_Annex_A, "G.723.1 Annex A (silence suppression)"},
+ { G_726_ADPCM, "G.726 (ADPCM)"},
+ { G_727_Embedded_ADPCM, "G.727 (Embedded ADPCM)"},
+ { G_728, "G.728"},
+ { G_729_CS_ACELP, "G.729 (CS-ACELP)"},
+ { G_729_Annex_B, "G.729 Annex B (silence suppression)"},
+ { 0, NULL }
};
+static value_string_ext ITU_T_codec_type_subfield_vals_ext = VALUE_STRING_EXT_INIT(ITU_T_codec_type_subfield_vals);
static const value_string ETSI_codec_type_subfield_vals[] = {
- { 0x00, "GSM Full Rate (13.0 kBit/s)( GSM FR )"},
- { 0x01, "GSM Half Rate (5.6 kBit/s) ( GSM HR )"},
- { 0x02, "GSM Enhanced Full Rate (12.2 kBit/s)( GSM EFR )"},
- { 0x03, "Full Rate Adaptive Multi-Rate ( FR AMR )"},
- { 0x04, "Half Rate Adaptive Multi-Rate ( HR AMR )"},
- { 0x05, "UMTS Adaptive Multi-Rate ( UMTS AMR )"},
- { 0x06, "UMTS Adaptive Multi-Rate 2 ( UMTS AMR 2 )"},
- { 0x07, "TDMA Enhanced Full Rate (7.4 kBit/s) ( TDMA EFR )"},
- { 0x08, "PDC Enhanced Full Rate (6.7 kBit/s) ( PDC EFR )"},
- { 0x09, "Full Rate Adaptive Multi-Rate WideBand ( FR AMR-WB )"},
- { 0x0a, "UMTS Adaptive Multi-Rate WideBand ( UMTS AMR-WB )"},
- { 0x0b, "8PSK Half Rate Adaptive Multi-Rate ( OHR AMR )"},
- { 0x0c, "8PSK Full Rate Adaptive Multi-Rate WideBand ( OFR AMR-WB )"},
- { 0x0d, "8PSK Half Rate Adaptive Multi-Rate WideBand ( OHR AMR-WB )"},
- { 0xfe, "Reserved for future use."},
- { 0xff, "Reserved for MuMe dummy Codec Type ( MuMe )"},
- { 0, NULL }
+ { 0x00, "GSM Full Rate (13.0 kBit/s)( GSM FR )"},
+ { 0x01, "GSM Half Rate (5.6 kBit/s) ( GSM HR )"},
+ { 0x02, "GSM Enhanced Full Rate (12.2 kBit/s)( GSM EFR )"},
+ { 0x03, "Full Rate Adaptive Multi-Rate ( FR AMR )"},
+ { 0x04, "Half Rate Adaptive Multi-Rate ( HR AMR )"},
+ { 0x05, "UMTS Adaptive Multi-Rate ( UMTS AMR )"},
+ { 0x06, "UMTS Adaptive Multi-Rate 2 ( UMTS AMR 2 )"},
+ { 0x07, "TDMA Enhanced Full Rate (7.4 kBit/s) ( TDMA EFR )"},
+ { 0x08, "PDC Enhanced Full Rate (6.7 kBit/s) ( PDC EFR )"},
+ { 0x09, "Full Rate Adaptive Multi-Rate WideBand ( FR AMR-WB )"},
+ { 0x0a, "UMTS Adaptive Multi-Rate WideBand ( UMTS AMR-WB )"},
+ { 0x0b, "8PSK Half Rate Adaptive Multi-Rate ( OHR AMR )"},
+ { 0x0c, "8PSK Full Rate Adaptive Multi-Rate WideBand ( OFR AMR-WB )"},
+ { 0x0d, "8PSK Half Rate Adaptive Multi-Rate WideBand ( OHR AMR-WB )"},
+ { 0xfe, "Reserved for future use."},
+ { 0xff, "Reserved for MuMe dummy Codec Type ( MuMe )"},
+ { 0, NULL }
};
+static value_string_ext ETSI_codec_type_subfield_vals_ext = VALUE_STRING_EXT_INIT(ETSI_codec_type_subfield_vals);
static const value_string bat_initial_codec_mode_vals[] = {
- {0x7, "12.2 kbps"},
- {0x6, "10.2 kbps"},
- {0x5, "7.95 kbps"},
- {0x4, "7.40 kbps"},
- {0x3, "6.70 kbps"},
- {0x2, "5.90 kbps"},
- {0x1, "5.15 kbps"},
- {0x0, "4.75 kbps"},
- {0, NULL}
+ {0x7, "12.2 kbps"},
+ {0x6, "10.2 kbps"},
+ {0x5, "7.95 kbps"},
+ {0x4, "7.40 kbps"},
+ {0x3, "6.70 kbps"},
+ {0x2, "5.90 kbps"},
+ {0x1, "5.15 kbps"},
+ {0x0, "4.75 kbps"},
+ {0, NULL}
};
static const value_string optimisation_mode_vals[] = {
- { 0, "Optimisation of the ACS not supported,"},
- { 1, "Optimisation of the ACS supported,"},
- { 0, NULL }
+ { 0, "Optimisation of the ACS not supported,"},
+ { 1, "Optimisation of the ACS supported,"},
+ { 0, NULL }
};
-const value_string bearer_network_connection_characteristics_vals[] = {
+static const value_string bearer_network_connection_characteristics_vals[] = {
- { 0x00, "no indication"},
- { 0x01, "AAL type 1"},
- { 0x02, "AAL type 2"},
- { 0x03, "Structured AAL type 1"},
- { 0x04, "IP/RTP"},
- { 0x05, "TDM (reserved for use by ITU-T Rec. Q.1950)"},
- { 0, NULL }
+ { 0x00, "no indication"},
+ { 0x01, "AAL type 1"},
+ { 0x02, "AAL type 2"},
+ { 0x03, "Structured AAL type 1"},
+ { 0x04, "IP/RTP"},
+ { 0x05, "TDM (reserved for use by ITU-T Rec. Q.1950)"},
+ { 0, NULL }
};
+value_string_ext bearer_network_connection_characteristics_vals_ext = VALUE_STRING_EXT_INIT(bearer_network_connection_characteristics_vals);
static const true_false_string Bearer_Control_Tunnelling_ind_value = {
"Tunnelling to be used",
@@ -2844,479 +2867,482 @@ static const true_false_string late_cut_trough_cap_ind_value = {
};
/* ITU-T Rec. Q.765.5/Amd.1 (07/2001) */
static const value_string Bearer_Redirection_Indicator_vals[] = {
- { 0x00, " no indication"},
- { 0x01, "late cut-through request"},
- { 0x02, "redirect temporary reject"},
- { 0x03, "redirect backwards request"},
- { 0x04, "redirect forwards request"},
- { 0x05, "redirect bearer release request"},
- { 0x06, "redirect bearer release proceed"},
- { 0x07, "redirect bearer release complete"},
- { 0x08, "redirect cut-through request"},
- { 0x09, "redirect bearer connected indication"},
- { 0x0a, "redirect failure"},
- { 0x0b, "new connection identifier"},
- { 0, NULL }
+ { 0x00, " no indication"},
+ { 0x01, "late cut-through request"},
+ { 0x02, "redirect temporary reject"},
+ { 0x03, "redirect backwards request"},
+ { 0x04, "redirect forwards request"},
+ { 0x05, "redirect bearer release request"},
+ { 0x06, "redirect bearer release proceed"},
+ { 0x07, "redirect bearer release complete"},
+ { 0x08, "redirect cut-through request"},
+ { 0x09, "redirect bearer connected indication"},
+ { 0x0a, "redirect failure"},
+ { 0x0b, "new connection identifier"},
+ { 0, NULL }
};
+static value_string_ext Bearer_Redirection_Indicator_vals_ext = VALUE_STRING_EXT_INIT(Bearer_Redirection_Indicator_vals);
/*26/Q.765.5 - Signal Type */
static const value_string BAt_ASE_Signal_Type_vals[] = {
- { 0x00, "DTMF 0"},
- { 0x01, "DTMF 1"},
- { 0x02, "DTMF 2"},
- { 0x03, "DTMF 3"},
- { 0x04, "DTMF 4"},
- { 0x05, "DTMF 5"},
- { 0x06, "DTMF 6"},
- { 0x07, "DTMF 7"},
- { 0x08, "DTMF 8"},
- { 0x09, "DTMF 9"},
- { 0x0a, "DTMF *"},
- { 0x0b, "DTMF #"},
- { 0x0c, "DTMF A"},
- { 0x0d, "DTMF B"},
- { 0x0e, "DTMF C"},
- { 0x1f, "DTMF D"},
- { 0x40, "dial tone"},
- { 0x41, "PABX internal dial tone"},
- { 0x42, "special dial tone"},
- { 0x43, "second dial tone"},
- { 0x44, "ringing tone"},
- { 0x45, "special ringing tone"},
- { 0x46, "busy tone"},
- { 0x47, "congestion tone"},
- { 0x48, "special information tone"},
- { 0x49, "warning tone"},
- { 0x4a, "intrusion tone"},
- { 0x4b, "call waiting tone"},
- { 0x4c, "pay tone"},
- { 0x4d, "payphone recognition tone"},
- { 0x4e, "comfort tone"},
- { 0x4f, "tone on hold"},
- { 0x50, "record tone"},
- { 0x51, "Caller waiting tone"},
- { 0x52, "positive indication tone"},
- { 0x53, "negative indication tone"},
- { 0, NULL }
+ { 0x00, "DTMF 0"},
+ { 0x01, "DTMF 1"},
+ { 0x02, "DTMF 2"},
+ { 0x03, "DTMF 3"},
+ { 0x04, "DTMF 4"},
+ { 0x05, "DTMF 5"},
+ { 0x06, "DTMF 6"},
+ { 0x07, "DTMF 7"},
+ { 0x08, "DTMF 8"},
+ { 0x09, "DTMF 9"},
+ { 0x0a, "DTMF *"},
+ { 0x0b, "DTMF #"},
+ { 0x0c, "DTMF A"},
+ { 0x0d, "DTMF B"},
+ { 0x0e, "DTMF C"},
+ { 0x1f, "DTMF D"},
+ { 0x40, "dial tone"},
+ { 0x41, "PABX internal dial tone"},
+ { 0x42, "special dial tone"},
+ { 0x43, "second dial tone"},
+ { 0x44, "ringing tone"},
+ { 0x45, "special ringing tone"},
+ { 0x46, "busy tone"},
+ { 0x47, "congestion tone"},
+ { 0x48, "special information tone"},
+ { 0x49, "warning tone"},
+ { 0x4a, "intrusion tone"},
+ { 0x4b, "call waiting tone"},
+ { 0x4c, "pay tone"},
+ { 0x4d, "payphone recognition tone"},
+ { 0x4e, "comfort tone"},
+ { 0x4f, "tone on hold"},
+ { 0x50, "record tone"},
+ { 0x51, "Caller waiting tone"},
+ { 0x52, "positive indication tone"},
+ { 0x53, "negative indication tone"},
+ { 0, NULL }
};
+static value_string_ext BAt_ASE_Signal_Type_vals_ext = VALUE_STRING_EXT_INIT(BAt_ASE_Signal_Type_vals);
static const value_string BAT_ASE_Report_Reason_vals[] = {
- { 0x00, "no indication"},
- { 0x01, "information element non-existent or not implemented"},
- { 0x02, "BICC data with unrecognized information element, discarded"},
- { 0, NULL }
+ { 0x00, "no indication"},
+ { 0x01, "information element non-existent or not implemented"},
+ { 0x02, "BICC data with unrecognized information element, discarded"},
+ { 0, NULL }
};
/* This routine should bve called with offset at Organization_Identifier not the lengh indicator
* because of use from other disectors.
*/
extern int dissect_codec_mode(proto_tree *tree, tvbuff_t *tvb, int offset, int len) {
- guint8 tempdata;
- proto_tree *scs_item, *acs_item;
- proto_tree *scs_tree, *acs_tree;
-
-
- tempdata = tvb_get_guint8(tvb, offset);
- proto_tree_add_uint(tree, hf_Organization_Identifier , tvb, offset, 1, tempdata );
- switch ( tempdata ){
- case ITU_T :
- offset = offset + 1;
- tempdata = tvb_get_guint8(tvb, offset);
- proto_tree_add_uint(tree, hf_codec_type , tvb, offset, 1, tempdata );
- offset = offset + 1;
- switch ( tempdata ) {
- case G_711_64_A :
- case G_711_64_U :
- case G_711_56_A :
- case G_711_56_U :
- case G_722_SB_ADPCM :
- case G_723_1 :
- case G_723_1_Annex_A :
- /* These codecs have no configuration data */
- break;
- case G_726_ADPCM :
- case G_727_Embedded_ADPCM :
- /* four bit config data, TODO decode config */
- if ( len > 2 ) {
- tempdata = tvb_get_guint8(tvb, offset);
- proto_tree_add_text(tree, tvb, offset, 1, "Configuration data : 0x%x", tempdata);
- offset = offset + 1;
- }
- break;
- case G_728 :
- case G_729_CS_ACELP :
- case G_729_Annex_B :
- /* three bit config data, TODO decode config */
- if ( len > 2 ) {
- tempdata = tvb_get_guint8(tvb, offset);
- proto_tree_add_text(tree, tvb, offset, 1 , "Configuration data : 0x%x", tempdata);
- offset = offset + 1;
- }
- break;
- default:
- break;
-
- }
- break;
- case ETSI:
- offset = offset + 1;
- tempdata = tvb_get_guint8(tvb, offset);
- proto_tree_add_uint(tree, hf_etsi_codec_type , tvb, offset, 1, tempdata );
- if ( len > 2 ) {
- offset = offset + 1;
- tempdata = tvb_get_guint8(tvb, offset);
-
- acs_item = proto_tree_add_item(tree, hf_active_code_set, tvb, offset, 1, TRUE);
- acs_tree = proto_item_add_subtree(acs_item,ett_acs);
- proto_tree_add_item(acs_tree, hf_active_code_set_12_2, tvb, offset, 1, TRUE);
- proto_tree_add_item(acs_tree, hf_active_code_set_10_2, tvb, offset, 1, TRUE);
- proto_tree_add_item(acs_tree, hf_active_code_set_7_95, tvb, offset, 1, TRUE);
- proto_tree_add_item(acs_tree, hf_active_code_set_7_40, tvb, offset, 1, TRUE);
- proto_tree_add_item(acs_tree, hf_active_code_set_6_70, tvb, offset, 1, TRUE);
- proto_tree_add_item(acs_tree, hf_active_code_set_5_90, tvb, offset, 1, TRUE);
- proto_tree_add_item(acs_tree, hf_active_code_set_5_15, tvb, offset, 1, TRUE);
- proto_tree_add_item(acs_tree, hf_active_code_set_4_75, tvb, offset, 1, TRUE);
-
- }
- if ( len > 3 ) {
- offset = offset + 1;
- tempdata = tvb_get_guint8(tvb, offset);
-
- scs_item = proto_tree_add_item(tree, hf_supported_code_set, tvb, offset, 1, TRUE);
- scs_tree = proto_item_add_subtree(scs_item,ett_scs);
- proto_tree_add_item(scs_tree, hf_supported_code_set_12_2, tvb, offset, 1, TRUE);
- proto_tree_add_item(scs_tree, hf_supported_code_set_10_2, tvb, offset, 1, TRUE);
- proto_tree_add_item(scs_tree, hf_supported_code_set_7_95, tvb, offset, 1, TRUE);
- proto_tree_add_item(scs_tree, hf_supported_code_set_7_40, tvb, offset, 1, TRUE);
- proto_tree_add_item(scs_tree, hf_supported_code_set_6_70, tvb, offset, 1, TRUE);
- proto_tree_add_item(scs_tree, hf_supported_code_set_5_90, tvb, offset, 1, TRUE);
- proto_tree_add_item(scs_tree, hf_supported_code_set_5_15, tvb, offset, 1, TRUE);
- proto_tree_add_item(scs_tree, hf_supported_code_set_4_75, tvb, offset, 1, TRUE);
- }
- if ( len > 4 ) {
- offset = offset + 1;
- proto_tree_add_item(tree, hf_optimisation_mode, tvb, offset, 1, TRUE);
- proto_tree_add_item(tree, hf_max_codec_modes, tvb, offset, 1, TRUE);
- }
- offset = offset + 1;
- break;
- default:
- offset = offset + 1;
- tempdata = tvb_get_guint8(tvb, offset);
- proto_tree_add_text(tree, tvb, offset, len ,
- "Unknown organisation Identifier ( Non ITU-T/ETSI codec ) %u", tempdata);
- offset = offset + len - 1;
- break;
- }
- /* switch OID */
-
- return offset;
+ guint8 tempdata;
+ proto_tree *scs_item, *acs_item;
+ proto_tree *scs_tree, *acs_tree;
+
+
+ tempdata = tvb_get_guint8(tvb, offset);
+ proto_tree_add_uint(tree, hf_Organization_Identifier , tvb, offset, 1, tempdata );
+ switch ( tempdata ){
+ case ITU_T :
+ offset = offset + 1;
+ tempdata = tvb_get_guint8(tvb, offset);
+ proto_tree_add_uint(tree, hf_codec_type , tvb, offset, 1, tempdata );
+ offset = offset + 1;
+ switch ( tempdata ) {
+ case G_711_64_A :
+ case G_711_64_U :
+ case G_711_56_A :
+ case G_711_56_U :
+ case G_722_SB_ADPCM :
+ case G_723_1 :
+ case G_723_1_Annex_A :
+ /* These codecs have no configuration data */
+ break;
+ case G_726_ADPCM :
+ case G_727_Embedded_ADPCM :
+ /* four bit config data, TODO decode config */
+ if ( len > 2 ) {
+ tempdata = tvb_get_guint8(tvb, offset);
+ proto_tree_add_text(tree, tvb, offset, 1, "Configuration data : 0x%x", tempdata);
+ offset = offset + 1;
+ }
+ break;
+ case G_728 :
+ case G_729_CS_ACELP :
+ case G_729_Annex_B :
+ /* three bit config data, TODO decode config */
+ if ( len > 2 ) {
+ tempdata = tvb_get_guint8(tvb, offset);
+ proto_tree_add_text(tree, tvb, offset, 1 , "Configuration data : 0x%x", tempdata);
+ offset = offset + 1;
+ }
+ break;
+ default:
+ break;
+
+ }
+ break;
+ case ETSI:
+ offset = offset + 1;
+ tempdata = tvb_get_guint8(tvb, offset);
+ proto_tree_add_uint(tree, hf_etsi_codec_type , tvb, offset, 1, tempdata );
+ if ( len > 2 ) {
+ offset = offset + 1;
+ tempdata = tvb_get_guint8(tvb, offset);
+
+ acs_item = proto_tree_add_item(tree, hf_active_code_set, tvb, offset, 1, TRUE);
+ acs_tree = proto_item_add_subtree(acs_item,ett_acs);
+ proto_tree_add_item(acs_tree, hf_active_code_set_12_2, tvb, offset, 1, TRUE);
+ proto_tree_add_item(acs_tree, hf_active_code_set_10_2, tvb, offset, 1, TRUE);
+ proto_tree_add_item(acs_tree, hf_active_code_set_7_95, tvb, offset, 1, TRUE);
+ proto_tree_add_item(acs_tree, hf_active_code_set_7_40, tvb, offset, 1, TRUE);
+ proto_tree_add_item(acs_tree, hf_active_code_set_6_70, tvb, offset, 1, TRUE);
+ proto_tree_add_item(acs_tree, hf_active_code_set_5_90, tvb, offset, 1, TRUE);
+ proto_tree_add_item(acs_tree, hf_active_code_set_5_15, tvb, offset, 1, TRUE);
+ proto_tree_add_item(acs_tree, hf_active_code_set_4_75, tvb, offset, 1, TRUE);
+
+ }
+ if ( len > 3 ) {
+ offset = offset + 1;
+ tempdata = tvb_get_guint8(tvb, offset);
+
+ scs_item = proto_tree_add_item(tree, hf_supported_code_set, tvb, offset, 1, TRUE);
+ scs_tree = proto_item_add_subtree(scs_item,ett_scs);
+ proto_tree_add_item(scs_tree, hf_supported_code_set_12_2, tvb, offset, 1, TRUE);
+ proto_tree_add_item(scs_tree, hf_supported_code_set_10_2, tvb, offset, 1, TRUE);
+ proto_tree_add_item(scs_tree, hf_supported_code_set_7_95, tvb, offset, 1, TRUE);
+ proto_tree_add_item(scs_tree, hf_supported_code_set_7_40, tvb, offset, 1, TRUE);
+ proto_tree_add_item(scs_tree, hf_supported_code_set_6_70, tvb, offset, 1, TRUE);
+ proto_tree_add_item(scs_tree, hf_supported_code_set_5_90, tvb, offset, 1, TRUE);
+ proto_tree_add_item(scs_tree, hf_supported_code_set_5_15, tvb, offset, 1, TRUE);
+ proto_tree_add_item(scs_tree, hf_supported_code_set_4_75, tvb, offset, 1, TRUE);
+ }
+ if ( len > 4 ) {
+ offset = offset + 1;
+ proto_tree_add_item(tree, hf_optimisation_mode, tvb, offset, 1, TRUE);
+ proto_tree_add_item(tree, hf_max_codec_modes, tvb, offset, 1, TRUE);
+ }
+ offset = offset + 1;
+ break;
+ default:
+ offset = offset + 1;
+ tempdata = tvb_get_guint8(tvb, offset);
+ proto_tree_add_text(tree, tvb, offset, len ,
+ "Unknown organisation Identifier ( Non ITU-T/ETSI codec ) %u", tempdata);
+ offset = offset + len - 1;
+ break;
+ }
+ /* switch OID */
+
+ return offset;
}
static int
dissect_codec(tvbuff_t *parameter_tvb, proto_tree *bat_ase_element_tree, gint length_indicator, gint offset,gint identifier)
{
/* offset is at length indicator e.g 1 step past identifier */
-guint8 compatibility_info;
-
- proto_tree_add_uint(bat_ase_element_tree , hf_bat_ase_identifier , parameter_tvb, offset - 1, 1, identifier );
- proto_tree_add_uint(bat_ase_element_tree , hf_length_indicator , parameter_tvb, offset, 1, length_indicator );
- offset = offset + 1;
- compatibility_info = tvb_get_guint8(parameter_tvb, offset);
- proto_tree_add_uint(bat_ase_element_tree, hf_Instruction_ind_for_general_action , parameter_tvb, offset, 1, compatibility_info );
- proto_tree_add_boolean(bat_ase_element_tree, hf_Send_notification_ind_for_general_action , parameter_tvb, offset, 1, compatibility_info );
- proto_tree_add_uint(bat_ase_element_tree, hf_Instruction_ind_for_pass_on_not_possible , parameter_tvb, offset, 1, compatibility_info );
- proto_tree_add_boolean(bat_ase_element_tree, hf_Send_notification_ind_for_pass_on_not_possible , parameter_tvb, offset, 1, compatibility_info );
- proto_tree_add_boolean(bat_ase_element_tree, hf_isup_extension_ind , parameter_tvb, offset, 1, compatibility_info );
-
- offset = dissect_codec_mode(bat_ase_element_tree, parameter_tvb, offset+1,length_indicator-1);
-return offset;
+ guint8 compatibility_info;
+
+ proto_tree_add_uint(bat_ase_element_tree , hf_bat_ase_identifier , parameter_tvb, offset - 1, 1, identifier );
+ proto_tree_add_uint(bat_ase_element_tree , hf_length_indicator , parameter_tvb, offset, 1, length_indicator );
+ offset = offset + 1;
+ compatibility_info = tvb_get_guint8(parameter_tvb, offset);
+ proto_tree_add_uint(bat_ase_element_tree, hf_Instruction_ind_for_general_action , parameter_tvb, offset, 1, compatibility_info );
+ proto_tree_add_boolean(bat_ase_element_tree, hf_Send_notification_ind_for_general_action , parameter_tvb, offset, 1, compatibility_info );
+ proto_tree_add_uint(bat_ase_element_tree, hf_Instruction_ind_for_pass_on_not_possible , parameter_tvb, offset, 1, compatibility_info );
+ proto_tree_add_boolean(bat_ase_element_tree, hf_Send_notification_ind_for_pass_on_not_possible , parameter_tvb, offset, 1, compatibility_info );
+ proto_tree_add_boolean(bat_ase_element_tree, hf_isup_extension_ind , parameter_tvb, offset, 1, compatibility_info );
+
+ offset = dissect_codec_mode(bat_ase_element_tree, parameter_tvb, offset+1,length_indicator-1);
+ return offset;
}
/* Dissect BAT ASE message according to Q.765.5 200006 and Amendment 1 200107
- * Layout of message Length Octet
- * Element name
- * Identifier 1 1
- * Length indicator 1 2
- * Compatibility information 1 3
- * Contents 1 4
- * Identifier n m
- * Length indicator n
- * Compatibility information n
- * Contents n p
+ * Layout of message Length Octet
+ * Element name
+ * Identifier 1 1
+ * Length indicator 1 2
+ * Compatibility information 1 3
+ * Contents 1 4
+ * Identifier n m
+ * Length indicator n
+ * Compatibility information n
+ * Contents n p
*/
static void
dissect_bat_ase_Encapsulated_Application_Information(tvbuff_t *parameter_tvb, packet_info *pinfo, proto_tree *parameter_tree, gint offset)
{
- gint length = tvb_reported_length_remaining(parameter_tvb, offset), list_end;
- tvbuff_t *next_tvb;
- proto_tree *bat_ase_tree, *bat_ase_element_tree, *bat_ase_iwfa_tree;
- proto_item *bat_ase_item, *bat_ase_element_item, *bat_ase_iwfa_item;
- guint8 identifier,content, BCTP_Indicator_field_1, BCTP_Indicator_field_2;
- guint8 tempdata, element_no, number_of_indicators;
- guint16 sdp_length;
- guint8 diagnostic_len;
- guint8 length_ind_len;
- guint tempdata16;
- guint content_len, length_indicator;
- guint duration;
- guint diagnostic;
- guint32 bncid, Local_BCU_ID;
- element_no = 0;
-
- bat_ase_item = proto_tree_add_text(parameter_tree,parameter_tvb, offset, -1,
- "Bearer Association Transport (BAT) Application Service Element (ASE) Encapsulated Application Information:");
- bat_ase_tree = proto_item_add_subtree(bat_ase_item , ett_bat_ase);
-
- proto_tree_add_text(bat_ase_tree, parameter_tvb, offset, -1,
- "BAT ASE Encapsulated Application Information, (%u byte%s length)", length, plurality(length, "", "s"));
- while(tvb_reported_length_remaining(parameter_tvb, offset) > 0){
- element_no = element_no + 1;
- identifier = tvb_get_guint8(parameter_tvb, offset);
-
- /* length indicator may be 11 bits long */
- offset = offset + 1;
- proto_tree_add_item( bat_ase_tree, hf_isup_extension_ind, parameter_tvb, offset, 1, FALSE );
- tempdata = tvb_get_guint8(parameter_tvb, offset);
- if ( tempdata & 0x80 ) {
- length_indicator = tempdata & 0x7f;
- length_ind_len = 1;
- }
- else {
- offset = offset + 1;
- tempdata16 = ( tempdata & 0x7f );
- length_indicator = tvb_get_guint8(parameter_tvb, offset)& 0x0f;
- length_indicator = length_indicator << 7;
- length_indicator = length_indicator + tempdata16;
- length_ind_len = 2;
- }
-
- bat_ase_element_item = proto_tree_add_text(bat_ase_tree,parameter_tvb,
- ( offset - length_ind_len),(length_indicator + 2),"BAT ASE Element %u, Identifier: %s",element_no,
- val_to_str(identifier,bat_ase_list_of_Identifiers_vals,"unknown (%u)"));
- bat_ase_element_tree = proto_item_add_subtree(bat_ase_element_item ,
- ett_bat_ase_element);
- if ( identifier != CODEC ) {
- /* identifier, length indicator and compabillity info must be printed inside CODEC */
- /* dissection in order to use dissect_codec routine for codec list */
- proto_tree_add_uint(bat_ase_element_tree , hf_bat_ase_identifier , parameter_tvb,
- offset - length_ind_len, 1, identifier );
- proto_tree_add_uint(bat_ase_element_tree , hf_length_indicator , parameter_tvb,
- offset - length_ind_len + 1, length_ind_len, length_indicator );
-
- offset = offset + 1;
- proto_tree_add_item( bat_ase_element_tree, hf_isup_extension_ind, parameter_tvb, offset, 1, FALSE );
- proto_tree_add_item( bat_ase_element_tree, hf_Send_notification_ind_for_pass_on_not_possible, parameter_tvb, offset, 1, FALSE );
- proto_tree_add_item( bat_ase_element_tree, hf_Instruction_ind_for_pass_on_not_possible, parameter_tvb, offset, 1, FALSE );
- proto_tree_add_item( bat_ase_element_tree, hf_Send_notification_ind_for_general_action, parameter_tvb, offset, 1, FALSE );
- proto_tree_add_item( bat_ase_element_tree, hf_Instruction_ind_for_general_action, parameter_tvb, offset, 1, FALSE );
- offset = offset + 1;
- }
- content_len = length_indicator - 1 ; /* exclude the treated Compatibility information */
-
- /* content will be different depending on identifier */
- switch ( identifier ){
-
- case ACTION_INDICATOR :
-
- content = tvb_get_guint8(parameter_tvb, offset);
- proto_tree_add_uint(bat_ase_element_tree, hf_Action_Indicator , parameter_tvb, offset, 1, content );
- proto_item_append_text(bat_ase_element_item, " - %s",
- val_to_str(content,bat_ase_action_indicator_field_vals, "unknown (%u)"));
- offset = offset + 1;
- break;
- case BACKBONE_NETWORK_CONNECTION_IDENTIFIER :
-
- bncid = tvb_get_ntohl(parameter_tvb, offset);
- switch ( content_len ){
- case 1:
- bncid = bncid & 0x000000ff;
- break;
- case 2:
- bncid = bncid & 0x0000ffff;
- break;
- case 3:
- bncid = bncid & 0x00ffffff;
- break;
- case 4:;
- default:;
- }
- proto_tree_add_uint_format(bat_ase_element_tree, hf_bncid, parameter_tvb, offset, content_len, bncid, "BNCId: 0x%08x", bncid);
- proto_item_append_text(bat_ase_element_item, " - 0x%08x",bncid);
- offset = offset + content_len;
-
- break;
- case INTERWORKING_FUNCTION_ADDRESS :
- bat_ase_iwfa_item = proto_tree_add_item(bat_ase_element_tree, hf_bat_ase_biwfa, parameter_tvb, offset, content_len,
- FALSE);
- bat_ase_iwfa_tree = proto_item_add_subtree(bat_ase_iwfa_item , ett_bat_ase_iwfa);
- dissect_nsap(parameter_tvb, offset, content_len, bat_ase_iwfa_tree);
-
- offset = offset + content_len;
- break;
- case CODEC_LIST :
- list_end = offset + content_len;
- while ( offset < ( list_end - 1 )) {
- identifier = tvb_get_guint8(parameter_tvb, offset);
- offset = offset + 1;
- tempdata = tvb_get_guint8(parameter_tvb, offset);
- if ( tempdata & 0x80 ) {
- length_indicator = tempdata & 0x7f;
- }
- else {
- offset = offset +1;
- length_indicator = tvb_get_guint8(parameter_tvb, offset);
- length_indicator = length_indicator << 7;
- length_indicator = length_indicator & ( tempdata & 0x7f );
- }
- offset = dissect_codec(parameter_tvb, bat_ase_element_tree, length_indicator , offset, identifier);
- }
- break;
- case CODEC :
- /* offset is at length indicator in this case */
- offset = dissect_codec(parameter_tvb, bat_ase_element_tree, length_indicator , offset, identifier);
- break;/* case codec */
- case BAT_COMPATIBILITY_REPORT :
- tempdata = tvb_get_guint8(parameter_tvb, offset);
- proto_tree_add_uint(bat_ase_element_tree, hf_BAT_ASE_Comp_Report_Reason, parameter_tvb, offset, 1, tempdata );
- offset = offset + 1;
-
- diagnostic_len = content_len - 1;
- while ( diagnostic_len > 0 ) {
- tempdata = tvb_get_guint8(parameter_tvb, offset);
- proto_tree_add_uint(bat_ase_element_tree, hf_BAT_ASE_Comp_Report_ident, parameter_tvb, offset, 1, tempdata );
- offset = offset + 1;
- diagnostic = tvb_get_letohs(parameter_tvb, offset);
- proto_tree_add_uint(bat_ase_element_tree, hf_BAT_ASE_Comp_Report_diagnostic, parameter_tvb, offset, 2, diagnostic);
- offset = offset + 2;
- diagnostic_len = diagnostic_len - 3;
- }
- break;
- case BEARER_NETWORK_CONNECTION_CHARACTERISTICS :
- tempdata = tvb_get_guint8(parameter_tvb, offset);
- proto_tree_add_uint(bat_ase_element_tree, hf_characteristics , parameter_tvb,
- offset, 1, tempdata );
- proto_item_append_text(bat_ase_element_item, " - %s",
- val_to_str(tempdata,bearer_network_connection_characteristics_vals, "unknown (%u)"));
-
- offset = offset + content_len;
- break;
+ gint length = tvb_reported_length_remaining(parameter_tvb, offset), list_end;
+ tvbuff_t *next_tvb;
+ proto_tree *bat_ase_tree, *bat_ase_element_tree, *bat_ase_iwfa_tree;
+ proto_item *bat_ase_item, *bat_ase_element_item, *bat_ase_iwfa_item;
+ guint8 identifier,content, BCTP_Indicator_field_1, BCTP_Indicator_field_2;
+ guint8 tempdata, element_no, number_of_indicators;
+ guint16 sdp_length;
+ guint8 diagnostic_len;
+ guint8 length_ind_len;
+ guint tempdata16;
+ guint content_len, length_indicator;
+ guint duration;
+ guint diagnostic;
+ guint32 bncid, Local_BCU_ID;
+
+ element_no = 0;
+
+ bat_ase_item = proto_tree_add_text(parameter_tree,parameter_tvb, offset, -1,
+ "Bearer Association Transport (BAT) Application Service Element (ASE) Encapsulated Application Information:");
+ bat_ase_tree = proto_item_add_subtree(bat_ase_item , ett_bat_ase);
+
+ proto_tree_add_text(bat_ase_tree, parameter_tvb, offset, -1,
+ "BAT ASE Encapsulated Application Information, (%u byte%s length)", length, plurality(length, "", "s"));
+ while(tvb_reported_length_remaining(parameter_tvb, offset) > 0){
+ element_no = element_no + 1;
+ identifier = tvb_get_guint8(parameter_tvb, offset);
+
+ /* length indicator may be 11 bits long */
+ offset = offset + 1;
+ proto_tree_add_item( bat_ase_tree, hf_isup_extension_ind, parameter_tvb, offset, 1, FALSE );
+ tempdata = tvb_get_guint8(parameter_tvb, offset);
+ if ( tempdata & 0x80 ) {
+ length_indicator = tempdata & 0x7f;
+ length_ind_len = 1;
+ }
+ else {
+ offset = offset + 1;
+ tempdata16 = ( tempdata & 0x7f );
+ length_indicator = tvb_get_guint8(parameter_tvb, offset)& 0x0f;
+ length_indicator = length_indicator << 7;
+ length_indicator = length_indicator + tempdata16;
+ length_ind_len = 2;
+ }
+
+ bat_ase_element_item = proto_tree_add_text(bat_ase_tree,parameter_tvb,
+ ( offset - length_ind_len),(length_indicator + 2),"BAT ASE Element %u, Identifier: %s",element_no,
+ val_to_str_ext(identifier,&bat_ase_list_of_Identifiers_vals_ext,"unknown (%u)"));
+ bat_ase_element_tree = proto_item_add_subtree(bat_ase_element_item ,
+ ett_bat_ase_element);
+ if ( identifier != CODEC ) {
+ /* identifier, length indicator and compabillity info must be printed inside CODEC */
+ /* dissection in order to use dissect_codec routine for codec list */
+ proto_tree_add_uint(bat_ase_element_tree , hf_bat_ase_identifier , parameter_tvb,
+ offset - length_ind_len, 1, identifier );
+ proto_tree_add_uint(bat_ase_element_tree , hf_length_indicator , parameter_tvb,
+ offset - length_ind_len + 1, length_ind_len, length_indicator );
+
+ offset = offset + 1;
+ proto_tree_add_item( bat_ase_element_tree, hf_isup_extension_ind, parameter_tvb, offset, 1, FALSE );
+ proto_tree_add_item( bat_ase_element_tree, hf_Send_notification_ind_for_pass_on_not_possible, parameter_tvb, offset, 1, FALSE );
+ proto_tree_add_item( bat_ase_element_tree, hf_Instruction_ind_for_pass_on_not_possible, parameter_tvb, offset, 1, FALSE );
+ proto_tree_add_item( bat_ase_element_tree, hf_Send_notification_ind_for_general_action, parameter_tvb, offset, 1, FALSE );
+ proto_tree_add_item( bat_ase_element_tree, hf_Instruction_ind_for_general_action, parameter_tvb, offset, 1, FALSE );
+ offset = offset + 1;
+ }
+ content_len = length_indicator - 1 ; /* exclude the treated Compatibility information */
+
+ /* content will be different depending on identifier */
+ switch ( identifier ){
+
+ case ACTION_INDICATOR :
+
+ content = tvb_get_guint8(parameter_tvb, offset);
+ proto_tree_add_uint(bat_ase_element_tree, hf_Action_Indicator , parameter_tvb, offset, 1, content );
+ proto_item_append_text(bat_ase_element_item, " - %s",
+ val_to_str_ext(content,&bat_ase_action_indicator_field_vals_ext, "unknown (%u)"));
+ offset = offset + 1;
+ break;
+ case BACKBONE_NETWORK_CONNECTION_IDENTIFIER :
+
+ bncid = tvb_get_ntohl(parameter_tvb, offset);
+ switch ( content_len ){
+ case 1:
+ bncid = bncid & 0x000000ff;
+ break;
+ case 2:
+ bncid = bncid & 0x0000ffff;
+ break;
+ case 3:
+ bncid = bncid & 0x00ffffff;
+ break;
+ case 4:;
+ default:;
+ }
+ proto_tree_add_uint_format(bat_ase_element_tree, hf_bncid, parameter_tvb, offset, content_len, bncid, "BNCId: 0x%08x", bncid);
+ proto_item_append_text(bat_ase_element_item, " - 0x%08x",bncid);
+ offset = offset + content_len;
+
+ break;
+ case INTERWORKING_FUNCTION_ADDRESS :
+ bat_ase_iwfa_item = proto_tree_add_item(bat_ase_element_tree, hf_bat_ase_biwfa, parameter_tvb, offset, content_len,
+ FALSE);
+ bat_ase_iwfa_tree = proto_item_add_subtree(bat_ase_iwfa_item , ett_bat_ase_iwfa);
+ dissect_nsap(parameter_tvb, offset, content_len, bat_ase_iwfa_tree);
+
+ offset = offset + content_len;
+ break;
+ case CODEC_LIST :
+ list_end = offset + content_len;
+ while ( offset < ( list_end - 1 )) {
+ identifier = tvb_get_guint8(parameter_tvb, offset);
+ offset = offset + 1;
+ tempdata = tvb_get_guint8(parameter_tvb, offset);
+ if ( tempdata & 0x80 ) {
+ length_indicator = tempdata & 0x7f;
+ }
+ else {
+ offset = offset +1;
+ length_indicator = tvb_get_guint8(parameter_tvb, offset);
+ length_indicator = length_indicator << 7;
+ length_indicator = length_indicator & ( tempdata & 0x7f );
+ }
+ offset = dissect_codec(parameter_tvb, bat_ase_element_tree, length_indicator , offset, identifier);
+ }
+ break;
+ case CODEC :
+ /* offset is at length indicator in this case */
+ offset = dissect_codec(parameter_tvb, bat_ase_element_tree, length_indicator , offset, identifier);
+ break;/* case codec */
+ case BAT_COMPATIBILITY_REPORT :
+ tempdata = tvb_get_guint8(parameter_tvb, offset);
+ proto_tree_add_uint(bat_ase_element_tree, hf_BAT_ASE_Comp_Report_Reason, parameter_tvb, offset, 1, tempdata );
+ offset = offset + 1;
+
+ diagnostic_len = content_len - 1;
+ while ( diagnostic_len > 0 ) {
+ tempdata = tvb_get_guint8(parameter_tvb, offset);
+ proto_tree_add_uint(bat_ase_element_tree, hf_BAT_ASE_Comp_Report_ident, parameter_tvb, offset, 1, tempdata );
+ offset = offset + 1;
+ diagnostic = tvb_get_letohs(parameter_tvb, offset);
+ proto_tree_add_uint(bat_ase_element_tree, hf_BAT_ASE_Comp_Report_diagnostic, parameter_tvb, offset, 2, diagnostic);
+ offset = offset + 2;
+ diagnostic_len = diagnostic_len - 3;
+ }
+ break;
+ case BEARER_NETWORK_CONNECTION_CHARACTERISTICS :
+ tempdata = tvb_get_guint8(parameter_tvb, offset);
+ proto_tree_add_uint(bat_ase_element_tree, hf_characteristics , parameter_tvb,
+ offset, 1, tempdata );
+ proto_item_append_text(bat_ase_element_item, " - %s",
+ val_to_str_ext(tempdata,&bearer_network_connection_characteristics_vals_ext, "unknown (%u)"));
+
+ offset = offset + content_len;
+ break;
/* The Bearer Control Information information element contains the bearer control tunnelling protocol */
/* ITU-T Q.1990 (2001), BICC bearer control tunnelling protocol. */
- case BEARER_CONTROL_INFORMATION :
- BCTP_Indicator_field_1 = tvb_get_guint8(parameter_tvb, offset);
- proto_tree_add_uint(bat_ase_element_tree, hf_BCTP_Version_Indicator,
- parameter_tvb, offset, 1, BCTP_Indicator_field_1 );
+ case BEARER_CONTROL_INFORMATION :
+ BCTP_Indicator_field_1 = tvb_get_guint8(parameter_tvb, offset);
+ proto_tree_add_uint(bat_ase_element_tree, hf_BCTP_Version_Indicator,
+ parameter_tvb, offset, 1, BCTP_Indicator_field_1 );
- proto_tree_add_boolean(bat_ase_element_tree, hf_BVEI,
- parameter_tvb, offset, 1, BCTP_Indicator_field_1 );
- offset = offset + 1;
+ proto_tree_add_boolean(bat_ase_element_tree, hf_BVEI,
+ parameter_tvb, offset, 1, BCTP_Indicator_field_1 );
+ offset = offset + 1;
- BCTP_Indicator_field_2 = tvb_get_guint8(parameter_tvb, offset);
+ BCTP_Indicator_field_2 = tvb_get_guint8(parameter_tvb, offset);
- proto_tree_add_uint(bat_ase_element_tree, hf_Tunnelled_Protocol_Indicator ,
- parameter_tvb, offset, 1, BCTP_Indicator_field_2 );
+ proto_tree_add_uint(bat_ase_element_tree, hf_Tunnelled_Protocol_Indicator ,
+ parameter_tvb, offset, 1, BCTP_Indicator_field_2 );
- proto_tree_add_boolean(bat_ase_element_tree, hf_TPEI,
- parameter_tvb, offset, 1, BCTP_Indicator_field_2 );
- offset = offset + 1;
+ proto_tree_add_boolean(bat_ase_element_tree, hf_TPEI,
+ parameter_tvb, offset, 1, BCTP_Indicator_field_2 );
+ offset = offset + 1;
- sdp_length = ( length_indicator ) - 3;
+ sdp_length = ( length_indicator ) - 3;
- if(sdp_length > tvb_length_remaining(parameter_tvb,offset)){
- /* If this is a segmented message we may not have all the data */
- next_tvb = tvb_new_subset_remaining(parameter_tvb, offset);
- }else{
- next_tvb = tvb_new_subset(parameter_tvb, offset, sdp_length, sdp_length);
- }
- call_dissector(sdp_handle, next_tvb, pinfo, bat_ase_element_tree);
- offset = offset + sdp_length;
+ if(sdp_length > tvb_length_remaining(parameter_tvb,offset)){
+ /* If this is a segmented message we may not have all the data */
+ next_tvb = tvb_new_subset_remaining(parameter_tvb, offset);
+ }else{
+ next_tvb = tvb_new_subset(parameter_tvb, offset, sdp_length, sdp_length);
+ }
+ call_dissector(sdp_handle, next_tvb, pinfo, bat_ase_element_tree);
+ offset = offset + sdp_length;
- break;
- case BEARER_CONTROL_TUNNELLING :
+ break;
+ case BEARER_CONTROL_TUNNELLING :
- tempdata = tvb_get_guint8(parameter_tvb, offset);
- proto_tree_add_boolean(bat_ase_element_tree, hf_bearer_control_tunneling , parameter_tvb, offset, 1, ( tempdata & 0x01 ) );
- if ( tempdata & 0x01 )
- proto_item_append_text(bat_ase_element_item, " - Tunnelling to be used ");
+ tempdata = tvb_get_guint8(parameter_tvb, offset);
+ proto_tree_add_boolean(bat_ase_element_tree, hf_bearer_control_tunneling , parameter_tvb, offset, 1, ( tempdata & 0x01 ) );
+ if ( tempdata & 0x01 )
+ proto_item_append_text(bat_ase_element_item, " - Tunnelling to be used ");
- offset = offset + content_len;
- break;
- case BEARER_CONTROL_UNIT_IDENTIFIER :
- tempdata = tvb_get_guint8(parameter_tvb, offset);
- proto_tree_add_text(bat_ase_element_tree, parameter_tvb, offset, 1, "Network ID Length indicator = %u",tempdata);
- offset = offset + 1;
- if ( tempdata > 0 ) {
+ offset = offset + content_len;
+ break;
+ case BEARER_CONTROL_UNIT_IDENTIFIER :
+ tempdata = tvb_get_guint8(parameter_tvb, offset);
+ proto_tree_add_text(bat_ase_element_tree, parameter_tvb, offset, 1, "Network ID Length indicator = %u",tempdata);
+ offset = offset + 1;
+ if ( tempdata > 0 ) {
/* Q.765.5 amd 1
- Network ID
- The coding of the Network ID field is identical to the coding of the Network ID field in the
- Global Call Reference parameter as specified in clause 6/Q.1902.3 (see [3]).
- NOTE .When used inside a network domain, the Network ID may be omitted by setting the
- Network ID Length indicator to the value "0".
- Q.1902.3
- The following codes are used in the subfields of the global call reference parameter field:
- a) Network ID
- The Network ID contains the value field (coded according to ASN.1 BER) of an object
- identifier identifying the network. This means that the tag and length fields are omitted.
- An example of such an object identifier can be the following:
- .{itu-t (0) administration (2) national regulatory authority (x) network (y)}
- The value for x is the value of the national regulatory authority (one of the Data Country
- Codes associated to the country as specified in ITU-T X.121 shall be used for "national
- regulatory authority"), the value for y is under the control of the national regulatory
- authority concerned.
- b) Node ID
- A binary number that uniquely identifies within the network the node which generates the
- call reference.
- c) Call Reference ID
- A binary number used for the call reference of the call. This is generated by the node for
- each call.
+ Network ID
+ The coding of the Network ID field is identical to the coding of the Network ID field in the
+ Global Call Reference parameter as specified in clause 6/Q.1902.3 (see [3]).
+ NOTE .When used inside a network domain, the Network ID may be omitted by setting the
+ Network ID Length indicator to the value "0".
+ Q.1902.3
+ The following codes are used in the subfields of the global call reference parameter field:
+ a) Network ID
+ The Network ID contains the value field (coded according to ASN.1 BER) of an object
+ identifier identifying the network. This means that the tag and length fields are omitted.
+ An example of such an object identifier can be the following:
+ .{itu-t (0) administration (2) national regulatory authority (x) network (y)}
+ The value for x is the value of the national regulatory authority (one of the Data Country
+ Codes associated to the country as specified in ITU-T X.121 shall be used for "national
+ regulatory authority"), the value for y is under the control of the national regulatory
+ authority concerned.
+ b) Node ID
+ A binary number that uniquely identifies within the network the node which generates the
+ call reference.
+ c) Call Reference ID
+ A binary number used for the call reference of the call. This is generated by the node for
+ each call.
*/
- proto_tree_add_text(bat_ase_element_tree, parameter_tvb, offset, tempdata , "Network ID: %s",
- tvb_bytes_to_str(parameter_tvb, offset, tempdata));
- offset = offset + tempdata;
- } /* end if */
-
- Local_BCU_ID = tvb_get_letohl(parameter_tvb, offset);
- proto_tree_add_uint_format(bat_ase_element_tree, hf_Local_BCU_ID , parameter_tvb, offset, 4, Local_BCU_ID , "Local BCU ID : 0x%08x", Local_BCU_ID );
- offset = offset + 4;
- break;
- case SIGNAL :
- /* As type is Constructor new elements follow, return to main loop */
- break;
- case BEARER_REDIRECTION_CAPABILITY :
- tempdata = tvb_get_guint8(parameter_tvb, offset);
- proto_tree_add_boolean(bat_ase_element_tree, hf_late_cut_trough_cap_ind , parameter_tvb, offset, 1, tempdata );
- offset = offset + content_len;
- break;
- case BEARER_REDIRECTION_INDICATORS :
- number_of_indicators = 0;
- while ( number_of_indicators < content_len ) {
- tempdata = tvb_get_guint8(parameter_tvb, offset);
- proto_tree_add_uint(bat_ase_element_tree, hf_bat_ase_bearer_redir_ind , parameter_tvb, offset, 1, tempdata );
- offset = offset + 1;
- number_of_indicators = number_of_indicators + 1;
- }
- break;
- case SIGNAL_TYPE :
- tempdata = tvb_get_guint8(parameter_tvb, offset);
- proto_tree_add_uint(bat_ase_element_tree, hf_bat_ase_signal , parameter_tvb, offset, 1, tempdata );
- offset = offset + content_len;
- break;
- case DURATION :
- duration = tvb_get_letohs(parameter_tvb, offset);
- proto_tree_add_uint(bat_ase_element_tree, hf_bat_ase_duration , parameter_tvb, offset, 2, duration );
- offset = offset + content_len;
- break;
- default :
- proto_tree_add_text(bat_ase_element_tree, parameter_tvb, offset,content_len , "Default ?, (%u byte%s length)", (content_len), plurality(content_len, "", "s"));
- offset = offset + content_len;
- }
- }
+ proto_tree_add_text(bat_ase_element_tree, parameter_tvb, offset, tempdata , "Network ID: %s",
+ tvb_bytes_to_str(parameter_tvb, offset, tempdata));
+ offset = offset + tempdata;
+ } /* end if */
+
+ Local_BCU_ID = tvb_get_letohl(parameter_tvb, offset);
+ proto_tree_add_uint_format(bat_ase_element_tree, hf_Local_BCU_ID , parameter_tvb, offset, 4, Local_BCU_ID , "Local BCU ID : 0x%08x", Local_BCU_ID );
+ offset = offset + 4;
+ break;
+ case SIGNAL :
+ /* As type is Constructor new elements follow, return to main loop */
+ break;
+ case BEARER_REDIRECTION_CAPABILITY :
+ tempdata = tvb_get_guint8(parameter_tvb, offset);
+ proto_tree_add_boolean(bat_ase_element_tree, hf_late_cut_trough_cap_ind , parameter_tvb, offset, 1, tempdata );
+ offset = offset + content_len;
+ break;
+ case BEARER_REDIRECTION_INDICATORS :
+ number_of_indicators = 0;
+ while ( number_of_indicators < content_len ) {
+ tempdata = tvb_get_guint8(parameter_tvb, offset);
+ proto_tree_add_uint(bat_ase_element_tree, hf_bat_ase_bearer_redir_ind , parameter_tvb, offset, 1, tempdata );
+ offset = offset + 1;
+ number_of_indicators = number_of_indicators + 1;
+ }
+ break;
+ case SIGNAL_TYPE :
+ tempdata = tvb_get_guint8(parameter_tvb, offset);
+ proto_tree_add_uint(bat_ase_element_tree, hf_bat_ase_signal , parameter_tvb, offset, 1, tempdata );
+ offset = offset + content_len;
+ break;
+ case DURATION :
+ duration = tvb_get_letohs(parameter_tvb, offset);
+ proto_tree_add_uint(bat_ase_element_tree, hf_bat_ase_duration , parameter_tvb, offset, 2, duration );
+ offset = offset + content_len;
+ break;
+ default :
+ proto_tree_add_text(bat_ase_element_tree, parameter_tvb, offset,content_len , "Default ?, (%u byte%s length)", (content_len), plurality(content_len, "", "s"));
+ offset = offset + content_len;
+ }
+ }
}
@@ -3324,187 +3350,187 @@ dissect_bat_ase_Encapsulated_Application_Information(tvbuff_t *parameter_tvb, pa
/*
Octet
- -------------------------------------------
-1 | ext. Application context identifier lsb
- -------------------------------------------
-1a | ext. msb
- -------------------------------------------
-2 | ext. spare SNI RCI
- -------------------------------------------
-3 | ext. SI APM segmentation indicator
- -------------------------------------------
-3a | ext. Segmentation local reference
- -------------------------------------------
-4a |
-: | APM-user information
-4n |
- +-------------------------------------------
-
- Figure 77/Q.763 . Application transport parameter field
- */
+ -------------------------------------------
+1 | ext. Application context identifier lsb
+ -------------------------------------------
+1a | ext. msb
+ -------------------------------------------
+2 | ext. spare SNI RCI
+ -------------------------------------------
+3 | ext. SI APM segmentation indicator
+ -------------------------------------------
+3a | ext. Segmentation local reference
+ -------------------------------------------
+4a |
+: | APM-user information
+4n |
+ +-------------------------------------------
+
+ Figure 77/Q.763 . Application transport parameter field
+*/
static void
dissect_isup_application_transport_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, proto_tree *parameter_tree, proto_item *parameter_item)
{
- guint8 application_transport_instruction_ind;
- guint8 si_and_apm_seg_ind;
- guint8 apm_Segmentation_local_ref = 0;
- guint16 aci16;
- gint offset = 0;
- guint8 octet;
- guint length = tvb_reported_length(parameter_tvb);
-
- gboolean more_frag;
- gboolean save_fragmented;
- tvbuff_t* new_tvb = NULL;
- tvbuff_t* next_tvb = NULL;
- fragment_data *frag_msg = NULL;
-
- proto_tree_add_text(parameter_tree, parameter_tvb, offset, -1, "Application transport parameter fields:");
- proto_item_set_text(parameter_item, "Application transport, (%u byte%s length)", length , plurality(length, "", "s"));
- aci16 = tvb_get_guint8(parameter_tvb, offset);
-
- if ( (aci16 & H_8BIT_MASK) == 0x80) {
- /* Octet 1 */
- aci16 = aci16 & 0x7f;
- proto_tree_add_item( parameter_tree, hf_isup_extension_ind, parameter_tvb, offset, 1, FALSE );
- proto_tree_add_uint(parameter_tree, hf_isup_app_cont_ident , parameter_tvb, offset, 1, aci16);
- offset = offset + 1;
- }
- /* Octet 1a */
- else {
- aci16 = (aci16<<8) | (tvb_get_guint8(parameter_tvb, offset) & 0x7f);
- proto_tree_add_uint(parameter_tree, hf_isup_app_cont_ident , parameter_tvb, offset, 2, aci16);
- offset = offset + 2;
- }
-
- /* Octet 2 */
- proto_tree_add_text(parameter_tree, parameter_tvb, offset, -1, "Application transport instruction indicators: ");
- application_transport_instruction_ind = tvb_get_guint8(parameter_tvb, offset);
- proto_tree_add_item( parameter_tree, hf_isup_extension_ind, parameter_tvb, offset, 1, FALSE );
- proto_tree_add_item( parameter_tree, hf_isup_app_Send_notification_ind, parameter_tvb, offset, 1, FALSE );
- proto_tree_add_item( parameter_tree, hf_isup_app_Release_call_ind, parameter_tvb, offset, 1, FALSE );
- offset = offset + 1;
-
- /* Octet 3*/
- proto_tree_add_text(parameter_tree, parameter_tvb, offset, 1, "APM segmentation indicator:");
- si_and_apm_seg_ind = tvb_get_guint8(parameter_tvb, offset);
- proto_tree_add_item( parameter_tree, hf_isup_extension_ind, parameter_tvb, offset, 1, FALSE );
- proto_tree_add_item( parameter_tree, hf_isup_apm_si_ind, parameter_tvb, offset, 1, FALSE );
- proto_tree_add_item( parameter_tree, hf_isup_apm_segmentation_ind, parameter_tvb, offset, 1, FALSE );
- offset = offset + 1;
-
- /* Octet 3a */
- if ( (si_and_apm_seg_ind & H_8BIT_MASK) == 0x00) {
- apm_Segmentation_local_ref = tvb_get_guint8(parameter_tvb, offset);
- proto_tree_add_item( parameter_tree, hf_isup_extension_ind, parameter_tvb, offset, 1, FALSE );
- proto_tree_add_item( parameter_tree, hf_isup_apm_slr, parameter_tvb, offset, 1, FALSE );
- offset = offset + 1;
- }
- /* For APM'98'-user applications. ( aci 0 - 3 ), APM-user information field starts at octet 4 */
- if (aci16 > 3) {
- /* Octet 4 Originating Address length */
- octet = tvb_get_guint8(parameter_tvb,offset);
- proto_tree_add_item( parameter_tree, hf_isup_orig_addr_len, parameter_tvb, offset, 1, FALSE );
- offset++;
- if ( octet != 0){
- /* 4b */
- proto_tree_add_item( parameter_tree, hf_isup_odd_even_indicator, parameter_tvb, offset, 1, FALSE );
- /* nature of address indicator */
- offset++;
- proto_tree_add_item( parameter_tree, hf_isup_inn_indicator, parameter_tvb, offset, 1, FALSE );
- proto_tree_add_item( parameter_tree, hf_isup_numbering_plan_indicator, parameter_tvb, offset, 1, FALSE );
- offset++;
- /* Address digits */
- proto_tree_add_text(parameter_tree, parameter_tvb, offset, octet - 2, "Address digits");
- offset = offset + octet - 2;
- }
- /* Octet 5 Destination Address length */
- octet = tvb_get_guint8(parameter_tvb,offset);
- proto_tree_add_item( parameter_tree, hf_isup_dest_addr_len, parameter_tvb, offset, 1, FALSE );
- offset++;
- if ( octet != 0){
- /* 4b */
- proto_tree_add_item( parameter_tree, hf_isup_odd_even_indicator, parameter_tvb, offset, 1, FALSE );
- /* nature of address indicator */
- offset++;
- proto_tree_add_item( parameter_tree, hf_isup_inn_indicator, parameter_tvb, offset, 1, FALSE );
- proto_tree_add_item( parameter_tree, hf_isup_numbering_plan_indicator, parameter_tvb, offset, 1, FALSE );
- offset++;
- /* Address digits */
- proto_tree_add_text(parameter_tree, parameter_tvb, offset, octet - 2, "Address digits");
- offset = offset + octet - 2;
- }
- }
- /*
- * Defragment ?
- *
- */
- if (isup_apm_desegment){
- if ((si_and_apm_seg_ind != 0xc0) && ((si_and_apm_seg_ind & H_8BIT_MASK)!=0x80)){
- /* debug g_warning("got here Frame %u",pinfo->fd->num); */
- /* Segmented message */
- save_fragmented = pinfo->fragmented;
- pinfo->fragmented = TRUE;
- more_frag = TRUE;
- if ((si_and_apm_seg_ind == 0))
- more_frag = FALSE;
-
- frag_msg = fragment_add_seq_next(parameter_tvb, offset, pinfo,
- (apm_Segmentation_local_ref & 0x7f), /* ID for fragments belonging together */
- isup_apm_msg_fragment_table, /* list of message fragments */
- isup_apm_msg_reassembled_table, /* list of reassembled messages */
- tvb_length_remaining(parameter_tvb, offset), /* fragment length - to the end */
- more_frag); /* More fragments? */
-
- if ((si_and_apm_seg_ind & 0x3f) !=0 && (si_and_apm_seg_ind &0x40) !=0){
- /* First fragment set number of fragments */
- fragment_set_tot_len(pinfo, apm_Segmentation_local_ref & 0x7f, isup_apm_msg_fragment_table, (si_and_apm_seg_ind & 0x3f));
- }
-
- new_tvb = process_reassembled_data(parameter_tvb, offset, pinfo,
- "Reassembled ISUP", frag_msg, &isup_apm_msg_frag_items,
- NULL, parameter_tree);
-
- if (frag_msg) { /* Reassembled */
- col_append_str(pinfo->cinfo, COL_INFO,
- " (Message Reassembled)");
- } else { /* Not last packet of reassembled Short Message */
- col_append_str(pinfo->cinfo, COL_INFO,
- " (Message fragment )");
- }
-
- pinfo->fragmented = save_fragmented;
- }
- }/*isup_apm_desegment*/
-
- if ( offset == (gint)length){
- /* No data */
- proto_tree_add_text(parameter_tree, parameter_tvb, offset, 0, "Empty APM-user information field" );
- return;
- }
- if (new_tvb) { /* take it all */
- next_tvb = new_tvb;
- } else { /* make a new subset */
- next_tvb = tvb_new_subset_remaining(parameter_tvb, offset);
- }
-
- proto_tree_add_text(parameter_tree, parameter_tvb, offset, -1,
- "APM-user information field (%u Bytes)",tvb_length_remaining(parameter_tvb, offset));
-
- switch(aci16 & 0x7fff){
- case 3:
- /* Charging ASE */
- dissect_charging_ase_ChargingMessageType_PDU(next_tvb, pinfo, parameter_tree);
- break;
- case 5:
- /* dissect BAT ASE element, without transparent data ( Q.765.5-200006) */
- dissect_bat_ase_Encapsulated_Application_Information(next_tvb, pinfo, parameter_tree, 0);
- break;
- default:
- proto_tree_add_text(parameter_tree, parameter_tvb, offset, -1, "No further dissection of APM-user information field");
- break;
- }
+ guint8 application_transport_instruction_ind;
+ guint8 si_and_apm_seg_ind;
+ guint8 apm_Segmentation_local_ref = 0;
+ guint16 aci16;
+ gint offset = 0;
+ guint8 octet;
+ guint length = tvb_reported_length(parameter_tvb);
+
+ gboolean more_frag;
+ gboolean save_fragmented;
+ tvbuff_t* new_tvb = NULL;
+ tvbuff_t* next_tvb = NULL;
+ fragment_data *frag_msg = NULL;
+
+ proto_tree_add_text(parameter_tree, parameter_tvb, offset, -1, "Application transport parameter fields:");
+ proto_item_set_text(parameter_item, "Application transport, (%u byte%s length)", length , plurality(length, "", "s"));
+ aci16 = tvb_get_guint8(parameter_tvb, offset);
+
+ if ( (aci16 & H_8BIT_MASK) == 0x80) {
+ /* Octet 1 */
+ aci16 = aci16 & 0x7f;
+ proto_tree_add_item( parameter_tree, hf_isup_extension_ind, parameter_tvb, offset, 1, FALSE );
+ proto_tree_add_uint(parameter_tree, hf_isup_app_cont_ident , parameter_tvb, offset, 1, aci16);
+ offset = offset + 1;
+ }
+ /* Octet 1a */
+ else {
+ aci16 = (aci16<<8) | (tvb_get_guint8(parameter_tvb, offset) & 0x7f);
+ proto_tree_add_uint(parameter_tree, hf_isup_app_cont_ident , parameter_tvb, offset, 2, aci16);
+ offset = offset + 2;
+ }
+
+ /* Octet 2 */
+ proto_tree_add_text(parameter_tree, parameter_tvb, offset, -1, "Application transport instruction indicators: ");
+ application_transport_instruction_ind = tvb_get_guint8(parameter_tvb, offset);
+ proto_tree_add_item( parameter_tree, hf_isup_extension_ind, parameter_tvb, offset, 1, FALSE );
+ proto_tree_add_item( parameter_tree, hf_isup_app_Send_notification_ind, parameter_tvb, offset, 1, FALSE );
+ proto_tree_add_item( parameter_tree, hf_isup_app_Release_call_ind, parameter_tvb, offset, 1, FALSE );
+ offset = offset + 1;
+
+ /* Octet 3*/
+ proto_tree_add_text(parameter_tree, parameter_tvb, offset, 1, "APM segmentation indicator:");
+ si_and_apm_seg_ind = tvb_get_guint8(parameter_tvb, offset);
+ proto_tree_add_item( parameter_tree, hf_isup_extension_ind, parameter_tvb, offset, 1, FALSE );
+ proto_tree_add_item( parameter_tree, hf_isup_apm_si_ind, parameter_tvb, offset, 1, FALSE );
+ proto_tree_add_item( parameter_tree, hf_isup_apm_segmentation_ind, parameter_tvb, offset, 1, FALSE );
+ offset = offset + 1;
+
+ /* Octet 3a */
+ if ( (si_and_apm_seg_ind & H_8BIT_MASK) == 0x00) {
+ apm_Segmentation_local_ref = tvb_get_guint8(parameter_tvb, offset);
+ proto_tree_add_item( parameter_tree, hf_isup_extension_ind, parameter_tvb, offset, 1, FALSE );
+ proto_tree_add_item( parameter_tree, hf_isup_apm_slr, parameter_tvb, offset, 1, FALSE );
+ offset = offset + 1;
+ }
+ /* For APM'98'-user applications. ( aci 0 - 3 ), APM-user information field starts at octet 4 */
+ if (aci16 > 3) {
+ /* Octet 4 Originating Address length */
+ octet = tvb_get_guint8(parameter_tvb,offset);
+ proto_tree_add_item( parameter_tree, hf_isup_orig_addr_len, parameter_tvb, offset, 1, FALSE );
+ offset++;
+ if ( octet != 0){
+ /* 4b */
+ proto_tree_add_item( parameter_tree, hf_isup_odd_even_indicator, parameter_tvb, offset, 1, FALSE );
+ /* nature of address indicator */
+ offset++;
+ proto_tree_add_item( parameter_tree, hf_isup_inn_indicator, parameter_tvb, offset, 1, FALSE );
+ proto_tree_add_item( parameter_tree, hf_isup_numbering_plan_indicator, parameter_tvb, offset, 1, FALSE );
+ offset++;
+ /* Address digits */
+ proto_tree_add_text(parameter_tree, parameter_tvb, offset, octet - 2, "Address digits");
+ offset = offset + octet - 2;
+ }
+ /* Octet 5 Destination Address length */
+ octet = tvb_get_guint8(parameter_tvb,offset);
+ proto_tree_add_item( parameter_tree, hf_isup_dest_addr_len, parameter_tvb, offset, 1, FALSE );
+ offset++;
+ if ( octet != 0){
+ /* 4b */
+ proto_tree_add_item( parameter_tree, hf_isup_odd_even_indicator, parameter_tvb, offset, 1, FALSE );
+ /* nature of address indicator */
+ offset++;
+ proto_tree_add_item( parameter_tree, hf_isup_inn_indicator, parameter_tvb, offset, 1, FALSE );
+ proto_tree_add_item( parameter_tree, hf_isup_numbering_plan_indicator, parameter_tvb, offset, 1, FALSE );
+ offset++;
+ /* Address digits */
+ proto_tree_add_text(parameter_tree, parameter_tvb, offset, octet - 2, "Address digits");
+ offset = offset + octet - 2;
+ }
+ }
+ /*
+ * Defragment ?
+ *
+ */
+ if (isup_apm_desegment){
+ if ((si_and_apm_seg_ind != 0xc0) && ((si_and_apm_seg_ind & H_8BIT_MASK)!=0x80)){
+ /* debug g_warning("got here Frame %u",pinfo->fd->num); */
+ /* Segmented message */
+ save_fragmented = pinfo->fragmented;
+ pinfo->fragmented = TRUE;
+ more_frag = TRUE;
+ if ((si_and_apm_seg_ind == 0))
+ more_frag = FALSE;
+
+ frag_msg = fragment_add_seq_next(parameter_tvb, offset, pinfo,
+ (apm_Segmentation_local_ref & 0x7f), /* ID for fragments belonging together */
+ isup_apm_msg_fragment_table, /* list of message fragments */
+ isup_apm_msg_reassembled_table, /* list of reassembled messages */
+ tvb_length_remaining(parameter_tvb, offset), /* fragment length - to the end */
+ more_frag); /* More fragments? */
+
+ if ((si_and_apm_seg_ind & 0x3f) !=0 && (si_and_apm_seg_ind &0x40) !=0){
+ /* First fragment set number of fragments */
+ fragment_set_tot_len(pinfo, apm_Segmentation_local_ref & 0x7f, isup_apm_msg_fragment_table, (si_and_apm_seg_ind & 0x3f));
+ }
+
+ new_tvb = process_reassembled_data(parameter_tvb, offset, pinfo,
+ "Reassembled ISUP", frag_msg, &isup_apm_msg_frag_items,
+ NULL, parameter_tree);
+
+ if (frag_msg) { /* Reassembled */
+ col_append_str(pinfo->cinfo, COL_INFO,
+ " (Message Reassembled)");
+ } else { /* Not last packet of reassembled Short Message */
+ col_append_str(pinfo->cinfo, COL_INFO,
+ " (Message fragment )");
+ }
+
+ pinfo->fragmented = save_fragmented;
+ }
+ }/*isup_apm_desegment*/
+
+ if ( offset == (gint)length){
+ /* No data */
+ proto_tree_add_text(parameter_tree, parameter_tvb, offset, 0, "Empty APM-user information field" );
+ return;
+ }
+ if (new_tvb) { /* take it all */
+ next_tvb = new_tvb;
+ } else { /* make a new subset */
+ next_tvb = tvb_new_subset_remaining(parameter_tvb, offset);
+ }
+
+ proto_tree_add_text(parameter_tree, parameter_tvb, offset, -1,
+ "APM-user information field (%u Bytes)",tvb_length_remaining(parameter_tvb, offset));
+
+ switch(aci16 & 0x7fff){
+ case 3:
+ /* Charging ASE */
+ dissect_charging_ase_ChargingMessageType_PDU(next_tvb, pinfo, parameter_tree);
+ break;
+ case 5:
+ /* dissect BAT ASE element, without transparent data ( Q.765.5-200006) */
+ dissect_bat_ase_Encapsulated_Application_Information(next_tvb, pinfo, parameter_tree, 0);
+ break;
+ default:
+ proto_tree_add_text(parameter_tree, parameter_tvb, offset, -1, "No further dissection of APM-user information field");
+ break;
+ }
}
@@ -3557,8 +3583,8 @@ dissect_isup_calling_party_number_parameter(tvbuff_t *parameter_tvb, proto_tree
length = tvb_length_remaining(parameter_tvb, offset);
if (length > 0) {
address_digits_item = proto_tree_add_text(parameter_tree, parameter_tvb,
- offset, -1,
- "Calling Party Number");
+ offset, -1,
+ "Calling Party Number");
address_digits_tree = proto_item_add_subtree(address_digits_item, ett_isup_address_digits);
while(length > 0){
@@ -3571,7 +3597,7 @@ dissect_isup_calling_party_number_parameter(tvbuff_t *parameter_tvb, proto_tree
proto_tree_add_uint(address_digits_tree, hf_isup_calling_party_even_address_signal_digit, parameter_tvb, offset, 1, address_digit_pair);
calling_number[i++] = number_to_char((address_digit_pair & ISUP_EVEN_ADDRESS_SIGNAL_DIGIT_MASK) / 0x10);
if (i > MAXDIGITS)
- THROW(ReportedBoundsError);
+ THROW(ReportedBoundsError);
}
offset++;
length = tvb_length_remaining(parameter_tvb, offset);
@@ -3581,7 +3607,7 @@ dissect_isup_calling_party_number_parameter(tvbuff_t *parameter_tvb, proto_tree
proto_tree_add_uint(address_digits_tree, hf_isup_calling_party_even_address_signal_digit, parameter_tvb, offset - 1, 1, address_digit_pair);
calling_number[i++] = number_to_char((address_digit_pair & ISUP_EVEN_ADDRESS_SIGNAL_DIGIT_MASK) / 0x10);
if (i > MAXDIGITS)
- THROW(ReportedBoundsError);
+ THROW(ReportedBoundsError);
}
proto_item_set_text(address_digits_item, "Calling Party Number: %s", calling_number);
calling_number[i++] = '\0';
@@ -3592,11 +3618,11 @@ dissect_isup_calling_party_number_parameter(tvbuff_t *parameter_tvb, proto_tree
e164_info.E164_number_length = i - 1;
dissect_e164_number(parameter_tvb, address_digits_tree, 2, (offset - 2), e164_info);
hidden_item = proto_tree_add_string(address_digits_tree, hf_isup_calling, parameter_tvb,
- offset - length, length, calling_number);
+ offset - length, length, calling_number);
PROTO_ITEM_SET_HIDDEN(hidden_item);
} else {
proto_tree_add_string(address_digits_tree, hf_isup_calling, parameter_tvb,
- offset - length, length, calling_number);
+ offset - length, length, calling_number);
}
}
proto_item_set_text(parameter_item, "Calling Party Number: %s", calling_number);
@@ -3634,8 +3660,8 @@ dissect_isup_original_called_number_parameter(tvbuff_t *parameter_tvb, proto_tre
}
address_digits_item = proto_tree_add_text(parameter_tree, parameter_tvb,
- offset, -1,
- "Original Called Number");
+ offset, -1,
+ "Original Called Number");
address_digits_tree = proto_item_add_subtree(address_digits_item, ett_isup_address_digits);
length = tvb_length_remaining(parameter_tvb, offset);
@@ -3649,7 +3675,7 @@ dissect_isup_original_called_number_parameter(tvbuff_t *parameter_tvb, proto_tre
proto_tree_add_uint(address_digits_tree, hf_isup_calling_party_even_address_signal_digit, parameter_tvb, offset, 1, address_digit_pair);
calling_number[i++] = number_to_char((address_digit_pair & ISUP_EVEN_ADDRESS_SIGNAL_DIGIT_MASK) / 0x10);
if (i > MAXDIGITS)
- THROW(ReportedBoundsError);
+ THROW(ReportedBoundsError);
}
offset++;
length = tvb_length_remaining(parameter_tvb, offset);
@@ -3659,7 +3685,7 @@ dissect_isup_original_called_number_parameter(tvbuff_t *parameter_tvb, proto_tre
proto_tree_add_uint(address_digits_tree, hf_isup_calling_party_even_address_signal_digit, parameter_tvb, offset - 1, 1, address_digit_pair);
calling_number[i++] = number_to_char((address_digit_pair & ISUP_EVEN_ADDRESS_SIGNAL_DIGIT_MASK) / 0x10);
if (i > MAXDIGITS)
- THROW(ReportedBoundsError);
+ THROW(ReportedBoundsError);
}
calling_number[i++] = '\0';
@@ -3695,12 +3721,12 @@ dissect_isup_redirecting_number_parameter(tvbuff_t *parameter_tvb, proto_tree *p
if (length == 0) {
proto_tree_add_text(parameter_tree, parameter_tvb, offset, 0, "Redirecting Number (empty)");
proto_item_set_text(parameter_item, "Redirecting Number: (empty)");
- return;
+ return;
}
address_digits_item = proto_tree_add_text(parameter_tree, parameter_tvb,
- offset, -1,
- "Redirecting Number");
+ offset, -1,
+ "Redirecting Number");
address_digits_tree = proto_item_add_subtree(address_digits_item, ett_isup_address_digits);
length = tvb_length_remaining(parameter_tvb, offset);
@@ -3714,7 +3740,7 @@ dissect_isup_redirecting_number_parameter(tvbuff_t *parameter_tvb, proto_tree *p
proto_tree_add_uint(address_digits_tree, hf_isup_calling_party_even_address_signal_digit, parameter_tvb, offset, 1, address_digit_pair);
calling_number[i++] = number_to_char((address_digit_pair & ISUP_EVEN_ADDRESS_SIGNAL_DIGIT_MASK) / 0x10);
if (i > MAXDIGITS)
- THROW(ReportedBoundsError);
+ THROW(ReportedBoundsError);
}
offset++;
length = tvb_length_remaining(parameter_tvb, offset);
@@ -3724,7 +3750,7 @@ dissect_isup_redirecting_number_parameter(tvbuff_t *parameter_tvb, proto_tree *p
proto_tree_add_uint(address_digits_tree, hf_isup_calling_party_even_address_signal_digit, parameter_tvb, offset - 1, 1, address_digit_pair);
calling_number[i++] = number_to_char((address_digit_pair & ISUP_EVEN_ADDRESS_SIGNAL_DIGIT_MASK) / 0x10);
if (i > MAXDIGITS)
- THROW(ReportedBoundsError);
+ THROW(ReportedBoundsError);
}
calling_number[i++] = '\0';
@@ -3756,8 +3782,8 @@ dissect_isup_redirection_number_parameter(tvbuff_t *parameter_tvb, proto_tree *p
offset = 2;
address_digits_item = proto_tree_add_text(parameter_tree, parameter_tvb,
- offset, -1,
- "Redirection Number");
+ offset, -1,
+ "Redirection Number");
address_digits_tree = proto_item_add_subtree(address_digits_item, ett_isup_address_digits);
length = tvb_length_remaining(parameter_tvb, offset);
@@ -3771,7 +3797,7 @@ dissect_isup_redirection_number_parameter(tvbuff_t *parameter_tvb, proto_tree *p
proto_tree_add_uint(address_digits_tree, hf_isup_called_party_even_address_signal_digit, parameter_tvb, offset, 1, address_digit_pair);
called_number[i++] = number_to_char((address_digit_pair & ISUP_EVEN_ADDRESS_SIGNAL_DIGIT_MASK) / 0x10);
if (i > MAXDIGITS)
- THROW(ReportedBoundsError);
+ THROW(ReportedBoundsError);
}
offset++;
length = tvb_length_remaining(parameter_tvb, offset);
@@ -3781,7 +3807,7 @@ dissect_isup_redirection_number_parameter(tvbuff_t *parameter_tvb, proto_tree *p
proto_tree_add_uint(address_digits_tree, hf_isup_called_party_even_address_signal_digit, parameter_tvb, offset - 1, 1, address_digit_pair);
called_number[i++] = number_to_char((address_digit_pair & ISUP_EVEN_ADDRESS_SIGNAL_DIGIT_MASK) / 0x10);
if (i > MAXDIGITS)
- THROW(ReportedBoundsError);
+ THROW(ReportedBoundsError);
}
called_number[i++] = '\0';
@@ -3865,12 +3891,12 @@ static void
dissect_isup_user_service_information_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{ guint length = tvb_length(parameter_tvb);
proto_tree_add_text(parameter_tree, parameter_tvb, 0, length,
- "User service information (-> Q.931 Bearer_capability)");
+ "User service information (-> Q.931 Bearer_capability)");
proto_item_set_text(parameter_item, "User service information, (%u byte%s length)",
- length , plurality(length, "", "s"));
+ length , plurality(length, "", "s"));
dissect_q931_bearer_capability_ie(parameter_tvb,
- 0, length,
- parameter_tree);
+ 0, length,
+ parameter_tree);
}
/* ------------------------------------------------------------------
Dissector Parameter Signalling point code
@@ -3911,10 +3937,10 @@ dissect_isup_connected_number_parameter(tvbuff_t *parameter_tvb, proto_tree *par
length = tvb_length_remaining(parameter_tvb, offset);
if (length == 0)
- return; /* empty connected number */
+ return; /* empty connected number */
address_digits_item = proto_tree_add_text(parameter_tree, parameter_tvb,
- offset, -1,
- "Connected Number");
+ offset, -1,
+ "Connected Number");
address_digits_tree = proto_item_add_subtree(address_digits_item, ett_isup_address_digits);
while(length > 0){
@@ -3927,7 +3953,7 @@ dissect_isup_connected_number_parameter(tvbuff_t *parameter_tvb, proto_tree *par
proto_tree_add_uint(address_digits_tree, hf_isup_calling_party_even_address_signal_digit, parameter_tvb, offset, 1, address_digit_pair);
calling_number[i++] = number_to_char((address_digit_pair & ISUP_EVEN_ADDRESS_SIGNAL_DIGIT_MASK) / 0x10);
if (i > MAXDIGITS)
- THROW(ReportedBoundsError);
+ THROW(ReportedBoundsError);
}
offset++;
length = tvb_length_remaining(parameter_tvb, offset);
@@ -3937,7 +3963,7 @@ dissect_isup_connected_number_parameter(tvbuff_t *parameter_tvb, proto_tree *par
proto_tree_add_uint(address_digits_tree, hf_isup_calling_party_even_address_signal_digit, parameter_tvb, offset - 1, 1, address_digit_pair);
calling_number[i++] = number_to_char((address_digit_pair & ISUP_EVEN_ADDRESS_SIGNAL_DIGIT_MASK) / 0x10);
if (i > MAXDIGITS)
- THROW(ReportedBoundsError);
+ THROW(ReportedBoundsError);
}
calling_number[i++] = '\0';
@@ -3967,8 +3993,8 @@ dissect_isup_transit_network_selection_parameter(tvbuff_t *parameter_tvb, proto_
offset = 1;
address_digits_item = proto_tree_add_text(parameter_tree, parameter_tvb,
- offset, -1,
- "Network identification");
+ offset, -1,
+ "Network identification");
address_digits_tree = proto_item_add_subtree(address_digits_item, ett_isup_address_digits);
length = tvb_length_remaining(parameter_tvb, offset);
@@ -3982,7 +4008,7 @@ dissect_isup_transit_network_selection_parameter(tvbuff_t *parameter_tvb, proto_
proto_tree_add_uint(address_digits_tree, hf_isup_calling_party_even_address_signal_digit, parameter_tvb, offset, 1, address_digit_pair);
network_id[i++] = number_to_char((address_digit_pair & ISUP_EVEN_ADDRESS_SIGNAL_DIGIT_MASK) / 0x10);
if (i > MAXDIGITS)
- THROW(ReportedBoundsError);
+ THROW(ReportedBoundsError);
}
offset++;
length = tvb_length_remaining(parameter_tvb, offset);
@@ -3992,7 +4018,7 @@ dissect_isup_transit_network_selection_parameter(tvbuff_t *parameter_tvb, proto_
proto_tree_add_uint(address_digits_tree, hf_isup_calling_party_even_address_signal_digit, parameter_tvb, offset - 1, 1, address_digit_pair);
network_id[i++] = number_to_char((address_digit_pair & ISUP_EVEN_ADDRESS_SIGNAL_DIGIT_MASK) / 0x10);
if (i > MAXDIGITS)
- THROW(ReportedBoundsError);
+ THROW(ReportedBoundsError);
}
network_id[i++] = '\0';
@@ -4048,19 +4074,19 @@ static const true_false_string isup_UUI_type_value = {
"Request"
};
static const value_string isup_UUI_request_service_values[] = {
- { 0, "No information"},
- { 1, "Spare"},
- { 2, "Request, not essential"},
- { 3, "Request,essential"},
- { 0, NULL}
+ { 0, "No information"},
+ { 1, "Spare"},
+ { 2, "Request, not essential"},
+ { 3, "Request,essential"},
+ { 0, NULL}
};
static const value_string isup_UUI_response_service_values[] = {
- { 0, "No information"},
- { 1, "Not provided"},
- { 2, "Provided"},
- { 3, "Spare"},
- { 0, NULL}
+ { 0, "No information"},
+ { 1, "Not provided"},
+ { 2, "Provided"},
+ { 3, "Spare"},
+ { 0, NULL}
};
static const true_false_string isup_UUI_network_discard_ind_value= {
"User-to-user information discarded by the network",
@@ -4069,25 +4095,25 @@ static const true_false_string isup_UUI_network_discard_ind_value= {
static void
dissect_isup_user_to_user_indicators_parameter(tvbuff_t *parameter_tvb,
- proto_tree *parameter_tree,
- proto_item *parameter_item)
+ proto_tree *parameter_tree,
+ proto_item *parameter_item)
{
guint8 indicators;
indicators = tvb_get_guint8(parameter_tvb, 0);
proto_tree_add_boolean(parameter_tree, hf_isup_UUI_type, parameter_tvb, 0, 1, indicators);
if ( (indicators & 0x01) == 0 ){
- /* Request */
- proto_tree_add_uint(parameter_tree, hf_isup_UUI_req_service1, parameter_tvb, 0, 1, indicators);
- proto_tree_add_uint(parameter_tree, hf_isup_UUI_req_service2, parameter_tvb, 0, 1, indicators);
- proto_tree_add_uint(parameter_tree, hf_isup_UUI_req_service3, parameter_tvb, 0, 1, indicators);
+ /* Request */
+ proto_tree_add_uint(parameter_tree, hf_isup_UUI_req_service1, parameter_tvb, 0, 1, indicators);
+ proto_tree_add_uint(parameter_tree, hf_isup_UUI_req_service2, parameter_tvb, 0, 1, indicators);
+ proto_tree_add_uint(parameter_tree, hf_isup_UUI_req_service3, parameter_tvb, 0, 1, indicators);
}
else {
- /* Response */
- proto_tree_add_uint(parameter_tree, hf_isup_UUI_res_service1, parameter_tvb, 0, 1, indicators);
- proto_tree_add_uint(parameter_tree, hf_isup_UUI_res_service2, parameter_tvb, 0, 1, indicators);
- proto_tree_add_uint(parameter_tree, hf_isup_UUI_res_service3, parameter_tvb, 0, 1, indicators);
- proto_tree_add_boolean(parameter_tree, hf_isup_UUI_network_discard_ind, parameter_tvb, 0, 1, indicators);
+ /* Response */
+ proto_tree_add_uint(parameter_tree, hf_isup_UUI_res_service1, parameter_tvb, 0, 1, indicators);
+ proto_tree_add_uint(parameter_tree, hf_isup_UUI_res_service2, parameter_tvb, 0, 1, indicators);
+ proto_tree_add_uint(parameter_tree, hf_isup_UUI_res_service3, parameter_tvb, 0, 1, indicators);
+ proto_tree_add_boolean(parameter_tree, hf_isup_UUI_network_discard_ind, parameter_tvb, 0, 1, indicators);
}
proto_item_set_text(parameter_item,"User-to-user indicators: 0x%x", indicators );
@@ -4156,13 +4182,13 @@ static void
dissect_isup_user_service_information_prime_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{ guint length = tvb_length(parameter_tvb);
proto_tree_add_text(parameter_tree, parameter_tvb, 0, length,
- "User service information prime (-> Q.931 Bearer capability information IE)");
+ "User service information prime (-> Q.931 Bearer capability information IE)");
dissect_q931_bearer_capability_ie(parameter_tvb,
- 0, length,
- parameter_tree);
+ 0, length,
+ parameter_tree);
proto_item_set_text(parameter_item, "User service information prime, (%u byte%s length)",
- length , plurality(length, "", "s"));
+ length , plurality(length, "", "s"));
}
/* ------------------------------------------------------------------
Dissector Parameter Propagation delay counter
@@ -4208,12 +4234,12 @@ dissect_isup_user_teleservice_information_parameter(tvbuff_t *parameter_tvb, pro
{
guint length = tvb_length(parameter_tvb);
proto_tree_add_text(parameter_tree, parameter_tvb, 0, length,
- "User teleservice information (-> Q.931 High Layer Compatibility IE)");
+ "User teleservice information (-> Q.931 High Layer Compatibility IE)");
dissect_q931_high_layer_compat_ie(parameter_tvb, 0, length, parameter_tree);
proto_item_set_text(parameter_item,
- "User teleservice information");
+ "User teleservice information");
}
/* ------------------------------------------------------------------
Dissector Parameter Transmission medium requirement used
@@ -4226,7 +4252,7 @@ dissect_isup_transmission_medium_used_parameter(tvbuff_t *parameter_tvb, proto_t
transmission_medium_requirement = tvb_get_guint8(parameter_tvb, 0);
proto_tree_add_uint(parameter_tree, hf_isup_transmission_medium_requirement_prime, parameter_tvb, 0, TRANSMISSION_MEDIUM_RQMT_PRIME_LENGTH,transmission_medium_requirement);
- proto_item_set_text(parameter_item, "Transmission medium used: %u (%s)", transmission_medium_requirement, val_to_str(transmission_medium_requirement, isup_transmission_medium_requirement_prime_value, "spare/reserved"));
+ proto_item_set_text(parameter_item, "Transmission medium used: %u (%s)", transmission_medium_requirement, val_to_str_ext_const(transmission_medium_requirement, &isup_transmission_medium_requirement_prime_value_ext, "spare/reserved"));
}
/* ------------------------------------------------------------------
Dissector Parameter Call diversion information
@@ -4243,34 +4269,34 @@ dissect_isup_call_diversion_information_parameter(tvbuff_t *parameter_tvb, proto
Dissector Parameter Echo control information
*/
static const value_string OECD_inf_ind_vals[] = {
- {0x00, "no information"},
- {0x01, "outgoing echo control device not included and not available"},
- {0x02, "outgoing echo control device included"},
- {0x03, "outgoing echo control device not included but available"},
- { 0, NULL }
+ {0x00, "no information"},
+ {0x01, "outgoing echo control device not included and not available"},
+ {0x02, "outgoing echo control device included"},
+ {0x03, "outgoing echo control device not included but available"},
+ { 0, NULL }
};
static const value_string IECD_inf_ind_vals[] = {
- {0x00, "no information"},
- {0x01, "incoming echo control device not included and not available"},
- {0x02, "incoming echo control device included"},
- {0x03, "incoming echo control device not included but available"},
- { 0, NULL }
+ {0x00, "no information"},
+ {0x01, "incoming echo control device not included and not available"},
+ {0x02, "incoming echo control device included"},
+ {0x03, "incoming echo control device not included but available"},
+ { 0, NULL }
};
static const value_string OECD_req_ind_vals[] = {
- {0x00, "no information"},
- {0x01, "outgoing echo control device activation request"},
- {0x02, "outgoing echo control device deactivation request"},
- {0x03, "spare"},
- { 0, NULL }
+ {0x00, "no information"},
+ {0x01, "outgoing echo control device activation request"},
+ {0x02, "outgoing echo control device deactivation request"},
+ {0x03, "spare"},
+ { 0, NULL }
};
static const value_string IECD_req_ind_vals[] = {
- {0x00, "no information"},
- {0x01, "incoming echo control device activation request"},
- {0x02, "incoming echo control device deactivation request"},
- {0x03, "spare"},
- { 0, NULL }
+ {0x00, "no information"},
+ {0x01, "incoming echo control device activation request"},
+ {0x02, "incoming echo control device deactivation request"},
+ {0x03, "spare"},
+ { 0, NULL }
};
static void
@@ -4279,16 +4305,16 @@ dissect_isup_echo_control_information_parameter(tvbuff_t *parameter_tvb, proto_t
gint offset = 0;
indicator = tvb_get_guint8(parameter_tvb, 0);
proto_tree_add_text(parameter_tree, parameter_tvb, 0, ECHO_CONTROL_INFO_LENGTH,
- "Echo control information: 0x%x", indicator);
+ "Echo control information: 0x%x", indicator);
proto_tree_add_uint(parameter_tree, hf_isup_OECD_inf_ind,
- parameter_tvb, offset, 1, indicator );
+ parameter_tvb, offset, 1, indicator );
proto_tree_add_uint(parameter_tree, hf_isup_IECD_inf_ind,
- parameter_tvb, offset, 1, indicator );
+ parameter_tvb, offset, 1, indicator );
proto_tree_add_uint(parameter_tree, hf_isup_OECD_req_ind,
- parameter_tvb, offset, 1, indicator );
+ parameter_tvb, offset, 1, indicator );
proto_tree_add_uint(parameter_tree, hf_isup_IECD_req_ind,
parameter_tvb, offset, 1, indicator );
@@ -4300,44 +4326,44 @@ dissect_isup_echo_control_information_parameter(tvbuff_t *parameter_tvb, proto_t
*/
static const true_false_string isup_pass_on_not_possible_indicator_value = {
- "discard information",
- "release call",
+ "discard information",
+ "release call",
};
static void
dissect_isup_message_compatibility_information_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
- guint length = tvb_length(parameter_tvb);
- guint instruction_indicators;
- gint offset = 0;
- instruction_indicators = tvb_get_guint8(parameter_tvb, offset);
+ guint length = tvb_length(parameter_tvb);
+ guint instruction_indicators;
+ gint offset = 0;
+ instruction_indicators = tvb_get_guint8(parameter_tvb, offset);
- proto_tree_add_text(parameter_tree, parameter_tvb, 0, length,
- "Message compatibility information");
+ proto_tree_add_text(parameter_tree, parameter_tvb, 0, length,
+ "Message compatibility information");
- proto_tree_add_boolean(parameter_tree, hf_isup_transit_at_intermediate_exchange_ind,
- parameter_tvb, offset, 1, instruction_indicators );
+ proto_tree_add_boolean(parameter_tree, hf_isup_transit_at_intermediate_exchange_ind,
+ parameter_tvb, offset, 1, instruction_indicators );
- proto_tree_add_boolean(parameter_tree, hf_isup_Release_call_ind,
- parameter_tvb, offset, 1, instruction_indicators );
+ proto_tree_add_boolean(parameter_tree, hf_isup_Release_call_ind,
+ parameter_tvb, offset, 1, instruction_indicators );
- proto_tree_add_boolean(parameter_tree, hf_isup_Send_notification_ind,
- parameter_tvb, offset, 1, instruction_indicators );
+ proto_tree_add_boolean(parameter_tree, hf_isup_Send_notification_ind,
+ parameter_tvb, offset, 1, instruction_indicators );
- proto_tree_add_boolean(parameter_tree, hf_isup_Discard_message_ind_value,
- parameter_tvb, offset, 1, instruction_indicators );
+ proto_tree_add_boolean(parameter_tree, hf_isup_Discard_message_ind_value,
+ parameter_tvb, offset, 1, instruction_indicators );
- proto_tree_add_boolean(parameter_tree, hf_isup_pass_on_not_possible_indicator2,
- parameter_tvb, offset, 1,instruction_indicators);
+ proto_tree_add_boolean(parameter_tree, hf_isup_pass_on_not_possible_indicator2,
+ parameter_tvb, offset, 1,instruction_indicators);
- proto_tree_add_uint(parameter_tree, hf_isup_Broadband_narrowband_interworking_ind2,
- parameter_tvb, offset, 1,instruction_indicators);
+ proto_tree_add_uint(parameter_tree, hf_isup_Broadband_narrowband_interworking_ind2,
+ parameter_tvb, offset, 1,instruction_indicators);
- proto_tree_add_boolean(parameter_tree, hf_isup_extension_ind ,
- parameter_tvb, offset, 1, instruction_indicators );
+ proto_tree_add_boolean(parameter_tree, hf_isup_extension_ind ,
+ parameter_tvb, offset, 1, instruction_indicators );
proto_item_set_text(parameter_item, "Message compatibility information (%u byte%s length)",
- length , plurality(length, "", "s"));
+ length , plurality(length, "", "s"));
}
/* ------------------------------------------------------------------
Dissector Parameter compatibility information
@@ -4349,28 +4375,28 @@ static const true_false_string isup_transit_at_intermediate_exchange_ind_value
static const true_false_string isup_Discard_message_ind_value = {
- "Discard message",
- "Do not discard message (pass on)",
+ "Discard message",
+ "Do not discard message (pass on)",
};
static const true_false_string isup_Discard_parameter_ind_value = {
- "Discard parameter",
- "Do not discard parameter (pass on)",
+ "Discard parameter",
+ "Do not discard parameter (pass on)",
};
static const value_string isup_Pass_on_not_possible_indicator_vals[] = {
- { 0x00, "Release call" },
- { 0x01, "Discard message" },
- { 0x02, "Discard parameter" },
- { 0x03, "Reserved (interpreted as 00)" },
- { 0, NULL },
+ { 0x00, "Release call" },
+ { 0x01, "Discard message" },
+ { 0x02, "Discard parameter" },
+ { 0x03, "Reserved (interpreted as 00)" },
+ { 0, NULL },
};
static const value_string ISUP_Broadband_narrowband_interworking_indicator_vals[] = {
- { 0x00, "Pass on" },
- { 0x01, "Discard message" },
- { 0x02, "Release call" },
- { 0x03, "Discard parameter" },
- { 0, NULL },
+ { 0x00, "Pass on" },
+ { 0x01, "Discard message" },
+ { 0x02, "Release call" },
+ { 0x03, "Discard parameter" },
+ { 0, NULL },
};
static void
@@ -4392,15 +4418,15 @@ dissect_isup_parameter_compatibility_information_parameter(tvbuff_t *parameter_t
upgraded_parameter = tvb_get_guint8(parameter_tvb, offset);
proto_tree_add_text(parameter_tree, parameter_tvb, offset, 1,
- "Upgraded parameter no: %u = %s", upgraded_parameter_no,
- val_to_str(upgraded_parameter, isup_parameter_type_value, "unknown (%u)"));
+ "Upgraded parameter no: %u = %s", upgraded_parameter_no,
+ val_to_str_ext(upgraded_parameter, &isup_parameter_type_value_ext, "unknown (%u)"));
offset += 1;
len -= 1;
instruction_indicators = tvb_get_guint8(parameter_tvb, offset);
proto_tree_add_text(parameter_tree, parameter_tvb, offset, 1,
- "Instruction indicators: 0x%x ",
- instruction_indicators);
+ "Instruction indicators: 0x%x ",
+ instruction_indicators);
proto_tree_add_boolean(parameter_tree, hf_isup_transit_at_intermediate_exchange_ind,
parameter_tvb, offset, 1, instruction_indicators );
@@ -4420,13 +4446,13 @@ dissect_isup_parameter_compatibility_information_parameter(tvbuff_t *parameter_t
offset += 1;
len -= 1;
if (!(instruction_indicators & H_8BIT_MASK)) {
- if (len == 0)
- return;
- instruction_indicators = tvb_get_guint8(parameter_tvb, offset);
- proto_tree_add_uint(parameter_tree, hf_isup_Broadband_narrowband_interworking_ind, parameter_tvb, offset, 1,instruction_indicators);
- offset += 1;
- len -= 1;
- }
+ if (len == 0)
+ return;
+ instruction_indicators = tvb_get_guint8(parameter_tvb, offset);
+ proto_tree_add_uint(parameter_tree, hf_isup_Broadband_narrowband_interworking_ind, parameter_tvb, offset, 1,instruction_indicators);
+ offset += 1;
+ len -= 1;
+ }
if (len == 0)
return;
;
@@ -4551,7 +4577,7 @@ dissect_isup_transmission_medium_requirement_prime_parameter(tvbuff_t *parameter
transmission_medium_requirement = tvb_get_guint8(parameter_tvb, 0);
proto_tree_add_uint(parameter_tree, hf_isup_transmission_medium_requirement_prime, parameter_tvb, 0, TRANSMISSION_MEDIUM_RQMT_PRIME_LENGTH,transmission_medium_requirement);
- proto_item_set_text(parameter_item, "Transmission medium requirement prime: %u (%s)", transmission_medium_requirement, val_to_str(transmission_medium_requirement, isup_transmission_medium_requirement_prime_value, "spare/reserved"));
+ proto_item_set_text(parameter_item, "Transmission medium requirement prime: %u (%s)", transmission_medium_requirement, val_to_str_ext_const(transmission_medium_requirement, &isup_transmission_medium_requirement_prime_value_ext, "spare/reserved"));
}
/* ------------------------------------------------------------------
@@ -4583,7 +4609,7 @@ dissect_isup_location_number_parameter(tvbuff_t *parameter_tvb, proto_tree *para
/* NOTE When the address presentation restricted indicator indicates address not available, the
* subfields in items a), b), c) and d) are coded with 0's, and the screening indicator is set to 11
* (network provided).
- * BUG 938 - Just check if there is someting more to dissect.
+ * BUG 938 - Just check if there is someting more to dissect.
*/
if (tvb_length_remaining(parameter_tvb, offset) < 3){
proto_tree_add_text(parameter_tree, parameter_tvb, 1, -1, "Location number: address not available");
@@ -4594,8 +4620,8 @@ dissect_isup_location_number_parameter(tvbuff_t *parameter_tvb, proto_tree *para
offset = 2;
address_digits_item = proto_tree_add_text(parameter_tree, parameter_tvb,
- offset, -1,
- "Location number");
+ offset, -1,
+ "Location number");
address_digits_tree = proto_item_add_subtree(address_digits_item, ett_isup_address_digits);
length = tvb_length_remaining(parameter_tvb, offset);
@@ -4609,7 +4635,7 @@ dissect_isup_location_number_parameter(tvbuff_t *parameter_tvb, proto_tree *para
proto_tree_add_uint(address_digits_tree, hf_isup_calling_party_even_address_signal_digit, parameter_tvb, offset, 1, address_digit_pair);
calling_number[i++] = number_to_char((address_digit_pair & ISUP_EVEN_ADDRESS_SIGNAL_DIGIT_MASK) / 0x10);
if (i > MAXDIGITS)
- THROW(ReportedBoundsError);
+ THROW(ReportedBoundsError);
}
offset++;
length = tvb_length_remaining(parameter_tvb, offset);
@@ -4619,7 +4645,7 @@ dissect_isup_location_number_parameter(tvbuff_t *parameter_tvb, proto_tree *para
proto_tree_add_uint(address_digits_tree, hf_isup_calling_party_even_address_signal_digit, parameter_tvb, offset - 1, 1, address_digit_pair);
calling_number[i++] = number_to_char((address_digit_pair & ISUP_EVEN_ADDRESS_SIGNAL_DIGIT_MASK) / 0x10);
if (i > MAXDIGITS)
- THROW(ReportedBoundsError);
+ THROW(ReportedBoundsError);
}
calling_number[i++] = '\0';
@@ -4637,15 +4663,15 @@ dissect_isup_redirection_number_restriction_parameter(tvbuff_t *parameter_tvb, p
indicator = tvb_get_guint8(parameter_tvb, 0);
switch (indicator & BA_8BIT_MASK) {
- case 0:
- proto_tree_add_text(parameter_tree, parameter_tvb, 0, REDIRECTION_NUMBER_RESTRICTION_LENGTH, "Presentation indicator: Presentation allowed");
- break;
- case 1:
- proto_tree_add_text(parameter_tree, parameter_tvb, 0, REDIRECTION_NUMBER_RESTRICTION_LENGTH, "Presentation indicator: Presentation restricted");
- break;
- default:
- proto_tree_add_text(parameter_tree, parameter_tvb, 0, REDIRECTION_NUMBER_RESTRICTION_LENGTH, "Presentation indicator: spare");
- break;
+ case 0:
+ proto_tree_add_text(parameter_tree, parameter_tvb, 0, REDIRECTION_NUMBER_RESTRICTION_LENGTH, "Presentation indicator: Presentation allowed");
+ break;
+ case 1:
+ proto_tree_add_text(parameter_tree, parameter_tvb, 0, REDIRECTION_NUMBER_RESTRICTION_LENGTH, "Presentation indicator: Presentation restricted");
+ break;
+ default:
+ proto_tree_add_text(parameter_tree, parameter_tvb, 0, REDIRECTION_NUMBER_RESTRICTION_LENGTH, "Presentation indicator: spare");
+ break;
}
proto_item_set_text(parameter_item, "Redirection number restriction: 0x%x ", indicator);
}
@@ -4706,8 +4732,8 @@ dissect_isup_call_transfer_number_parameter(tvbuff_t *parameter_tvb, proto_tree
offset = 2;
address_digits_item = proto_tree_add_text(parameter_tree, parameter_tvb,
- offset, -1,
- "Call transfer number");
+ offset, -1,
+ "Call transfer number");
address_digits_tree = proto_item_add_subtree(address_digits_item, ett_isup_address_digits);
length = tvb_length_remaining(parameter_tvb, offset);
@@ -4721,7 +4747,7 @@ dissect_isup_call_transfer_number_parameter(tvbuff_t *parameter_tvb, proto_tree
proto_tree_add_uint(address_digits_tree, hf_isup_calling_party_even_address_signal_digit, parameter_tvb, offset, 1, address_digit_pair);
calling_number[i++] = number_to_char((address_digit_pair & ISUP_EVEN_ADDRESS_SIGNAL_DIGIT_MASK) / 0x10);
if (i > MAXDIGITS)
- THROW(ReportedBoundsError);
+ THROW(ReportedBoundsError);
}
offset++;
length = tvb_length_remaining(parameter_tvb, offset);
@@ -4731,7 +4757,7 @@ dissect_isup_call_transfer_number_parameter(tvbuff_t *parameter_tvb, proto_tree
proto_tree_add_uint(address_digits_tree, hf_isup_calling_party_even_address_signal_digit, parameter_tvb, offset - 1, 1, address_digit_pair);
calling_number[i++] = number_to_char((address_digit_pair & ISUP_EVEN_ADDRESS_SIGNAL_DIGIT_MASK) / 0x10);
if (i > MAXDIGITS)
- THROW(ReportedBoundsError);
+ THROW(ReportedBoundsError);
}
calling_number[i++] = '\0';
@@ -4852,8 +4878,8 @@ dissect_isup_called_in_number_parameter(tvbuff_t *parameter_tvb, proto_tree *par
offset = 2;
address_digits_item = proto_tree_add_text(parameter_tree, parameter_tvb,
- offset, -1,
- "Called IN Number");
+ offset, -1,
+ "Called IN Number");
address_digits_tree = proto_item_add_subtree(address_digits_item, ett_isup_address_digits);
length = tvb_length_remaining(parameter_tvb, offset);
@@ -4867,7 +4893,7 @@ dissect_isup_called_in_number_parameter(tvbuff_t *parameter_tvb, proto_tree *par
proto_tree_add_uint(address_digits_tree, hf_isup_calling_party_even_address_signal_digit, parameter_tvb, offset, 1, address_digit_pair);
calling_number[i++] = number_to_char((address_digit_pair & ISUP_EVEN_ADDRESS_SIGNAL_DIGIT_MASK) / 0x10);
if (i > MAXDIGITS)
- THROW(ReportedBoundsError);
+ THROW(ReportedBoundsError);
}
offset++;
length = tvb_length_remaining(parameter_tvb, offset);
@@ -4877,7 +4903,7 @@ dissect_isup_called_in_number_parameter(tvbuff_t *parameter_tvb, proto_tree *par
proto_tree_add_uint(address_digits_tree, hf_isup_calling_party_even_address_signal_digit, parameter_tvb, offset - 1, 1, address_digit_pair);
calling_number[i++] = number_to_char((address_digit_pair & ISUP_EVEN_ADDRESS_SIGNAL_DIGIT_MASK) / 0x10);
if (i > MAXDIGITS)
- THROW(ReportedBoundsError);
+ THROW(ReportedBoundsError);
}
calling_number[i++] = '\0';
@@ -4938,9 +4964,9 @@ static void
dissect_isup_display_information_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{ guint length = tvb_length(parameter_tvb);
proto_tree_add_text(parameter_tree, parameter_tvb, 0, length,
- "Display information (-> Q.931)");
+ "Display information (-> Q.931)");
proto_item_set_text(parameter_item, "Display information (%u Byte%s)",
- length , plurality(length, "", "s"));
+ length , plurality(length, "", "s"));
}
/* ------------------------------------------------------------------
Parameter UID action indicators
@@ -5060,8 +5086,8 @@ dissect_isup_generic_number_parameter(tvbuff_t *parameter_tvb, proto_tree *param
offset = 3;
address_digits_item = proto_tree_add_text(parameter_tree, parameter_tvb,
- offset, -1,
- "Generic number");
+ offset, -1,
+ "Generic number");
address_digits_tree = proto_item_add_subtree(address_digits_item, ett_isup_address_digits);
length = tvb_length_remaining(parameter_tvb, offset);
@@ -5075,7 +5101,7 @@ dissect_isup_generic_number_parameter(tvbuff_t *parameter_tvb, proto_tree *param
proto_tree_add_uint(address_digits_tree, hf_isup_calling_party_even_address_signal_digit, parameter_tvb, offset, 1, address_digit_pair);
calling_number[i++] = number_to_char((address_digit_pair & ISUP_EVEN_ADDRESS_SIGNAL_DIGIT_MASK) / 0x10);
if (i > MAXDIGITS)
- THROW(ReportedBoundsError);
+ THROW(ReportedBoundsError);
}
offset++;
length = tvb_length_remaining(parameter_tvb, offset);
@@ -5085,18 +5111,18 @@ dissect_isup_generic_number_parameter(tvbuff_t *parameter_tvb, proto_tree *param
proto_tree_add_uint(address_digits_tree, hf_isup_calling_party_even_address_signal_digit, parameter_tvb, offset - 1, 1, address_digit_pair);
calling_number[i++] = number_to_char((address_digit_pair & ISUP_EVEN_ADDRESS_SIGNAL_DIGIT_MASK) / 0x10);
if (i > MAXDIGITS)
- THROW(ReportedBoundsError);
+ THROW(ReportedBoundsError);
}
calling_number[i++] = '\0';
- /*
- * Indicators1 = Nature of address
+ /*
+ * Indicators1 = Nature of address
* Indicators2 = Number plan indicator
*/
indicators1 = indicators1 & 0x7f;
- indicators2 = (indicators2 & 0x70)>>4;
+ indicators2 = (indicators2 & 0x70)>>4;
if ((indicators1 == ISUP_CALLED_PARTY_NATURE_INTERNATNL_NR)&&(indicators2==ISDN_NUMBERING_PLAN))
- dissect_e164_cc(parameter_tvb, address_digits_tree, 3, TRUE);
+ dissect_e164_cc(parameter_tvb, address_digits_tree, 3, TRUE);
proto_item_set_text(address_digits_item, "Generic number: %s", calling_number);
proto_item_set_text(parameter_item, "Generic number: %s", calling_number);
@@ -5119,8 +5145,8 @@ dissect_isup_jurisdiction_parameter(tvbuff_t *parameter_tvb, proto_tree *paramet
offset = 0;
address_digits_item = proto_tree_add_text(parameter_tree, parameter_tvb,
- offset, -1,
- "Jurisdiction");
+ offset, -1,
+ "Jurisdiction");
address_digits_tree = proto_item_add_subtree(address_digits_item, ett_isup_address_digits);
while((length = tvb_reported_length_remaining(parameter_tvb, offset)) > 0){
@@ -5133,7 +5159,7 @@ dissect_isup_jurisdiction_parameter(tvbuff_t *parameter_tvb, proto_tree *paramet
proto_tree_add_uint(address_digits_tree, hf_isup_called_party_even_address_signal_digit, parameter_tvb, offset, 1, address_digit_pair);
called_number[i++] = number_to_char((address_digit_pair & ISUP_EVEN_ADDRESS_SIGNAL_DIGIT_MASK) / 0x10);
if (i > MAXDIGITS)
- THROW(ReportedBoundsError);
+ THROW(ReportedBoundsError);
}
offset++;
}
@@ -5142,7 +5168,7 @@ dissect_isup_jurisdiction_parameter(tvbuff_t *parameter_tvb, proto_tree *paramet
proto_tree_add_uint(address_digits_tree, hf_isup_called_party_even_address_signal_digit, parameter_tvb, offset - 1, 1, address_digit_pair);
called_number[i++] = number_to_char((address_digit_pair & ISUP_EVEN_ADDRESS_SIGNAL_DIGIT_MASK) / 0x10);
if (i > MAXDIGITS)
- THROW(ReportedBoundsError);
+ THROW(ReportedBoundsError);
}
called_number[i++] = '\0';
@@ -5206,8 +5232,8 @@ dissect_isup_charge_number_parameter(tvbuff_t *parameter_tvb, proto_tree *parame
offset = 2;
address_digits_item = proto_tree_add_text(parameter_tree, parameter_tvb,
- offset, -1,
- "Charge Number");
+ offset, -1,
+ "Charge Number");
address_digits_tree = proto_item_add_subtree(address_digits_item, ett_isup_address_digits);
length = tvb_length_remaining(parameter_tvb, offset);
@@ -5221,7 +5247,7 @@ dissect_isup_charge_number_parameter(tvbuff_t *parameter_tvb, proto_tree *parame
proto_tree_add_uint(address_digits_tree, hf_isup_calling_party_even_address_signal_digit, parameter_tvb, offset, 1, address_digit_pair);
calling_number[i++] = number_to_char((address_digit_pair & ISUP_EVEN_ADDRESS_SIGNAL_DIGIT_MASK) / 0x10);
if (i > MAXDIGITS)
- THROW(ReportedBoundsError);
+ THROW(ReportedBoundsError);
}
offset++;
length = tvb_length_remaining(parameter_tvb, offset);
@@ -5231,7 +5257,7 @@ dissect_isup_charge_number_parameter(tvbuff_t *parameter_tvb, proto_tree *parame
proto_tree_add_uint(address_digits_tree, hf_isup_calling_party_even_address_signal_digit, parameter_tvb, offset - 1, 1, address_digit_pair);
calling_number[i++] = number_to_char((address_digit_pair & ISUP_EVEN_ADDRESS_SIGNAL_DIGIT_MASK) / 0x10);
if (i > MAXDIGITS)
- THROW(ReportedBoundsError);
+ THROW(ReportedBoundsError);
}
calling_number[i++] = '\0';
@@ -5269,282 +5295,287 @@ dissect_isup_optional_parameter(tvbuff_t *optional_parameters_tvb,packet_info *p
parameter_length = tvb_get_guint8(optional_parameters_tvb, offset + PARAMETER_TYPE_LENGTH);
parameter_item = proto_tree_add_text(isup_tree, optional_parameters_tvb,
- offset,
- parameter_length + PARAMETER_TYPE_LENGTH + PARAMETER_LENGTH_IND_LENGTH,
- "Parameter: type %u",
- parameter_type);
+ offset,
+ parameter_length + PARAMETER_TYPE_LENGTH + PARAMETER_LENGTH_IND_LENGTH,
+ "Parameter: type %u",
+ parameter_type);
parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter);
- proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, optional_parameters_tvb, offset, PARAMETER_TYPE_LENGTH, parameter_type, "Optional Parameter: %u (%s)", parameter_type, val_to_str(parameter_type, isup_parameter_type_value,"unknown"));
+ proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, optional_parameters_tvb, offset, PARAMETER_TYPE_LENGTH,
+ parameter_type,
+ "Optional Parameter: %u (%s)",
+ parameter_type,
+ val_to_str_ext_const(parameter_type, &isup_parameter_type_value_ext,"unknown"));
offset += PARAMETER_TYPE_LENGTH;
- octet = tvb_get_guint8(optional_parameters_tvb,offset);
+ octet = tvb_get_guint8(optional_parameters_tvb,offset);
proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_length, optional_parameters_tvb, offset, PARAMETER_LENGTH_IND_LENGTH, parameter_length, "Parameter length: %u", parameter_length);
offset += PARAMETER_LENGTH_IND_LENGTH;
- if ( octet == 0 )
- continue;
+ if ( octet == 0 )
+ continue;
actual_length = tvb_length_remaining(optional_parameters_tvb, offset);
if (actual_length > 0){
- parameter_tvb = tvb_new_subset(optional_parameters_tvb, offset, MIN(parameter_length, actual_length), parameter_length);
- switch (parameter_type) {
- case PARAM_TYPE_CALL_REF:
- dissect_isup_call_reference_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_TRANSM_MEDIUM_REQU:
- dissect_isup_transmission_medium_requirement_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_ACC_TRANSP:
- dissect_isup_access_transport_parameter(parameter_tvb, parameter_tree, parameter_item, pinfo);
- break;
- case PARAM_TYPE_CALLED_PARTY_NR:
- dissect_isup_called_party_number_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_SUBSQT_NR:
- dissect_isup_subsequent_number_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_NATURE_OF_CONN_IND:
- dissect_isup_nature_of_connection_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_FORW_CALL_IND:
- dissect_isup_forward_call_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_OPT_FORW_CALL_IND:
- dissect_isup_optional_forward_call_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_CALLING_PRTY_CATEG:
- dissect_isup_calling_partys_category_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_CALLING_PARTY_NR:
- dissect_isup_calling_party_number_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_REDIRECTING_NR:
- dissect_isup_redirecting_number_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_REDIRECTION_NR:
- dissect_isup_redirection_number_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_CONNECTION_REQ:
- dissect_isup_connection_request_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_INFO_REQ_IND:
- dissect_isup_information_request_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_INFO_IND:
- dissect_isup_information_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_CONTINUITY_IND:
- dissect_isup_continuity_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_BACKW_CALL_IND:
- dissect_isup_backward_call_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_CAUSE_INDICATORS:
- dissect_isup_cause_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_REDIRECTION_INFO:
- dissect_isup_redirection_information_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_CIRC_GRP_SV_MSG_TYPE:
- dissect_isup_circuit_group_supervision_message_type_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_RANGE_AND_STATUS:
- dissect_isup_range_and_status_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_FACILITY_IND:
- dissect_isup_facility_ind_parameter(parameter_tvb, parameter_item);
- break;
- case PARAM_TYPE_CLSD_USR_GRP_ILOCK_CD:
- dissect_isup_closed_user_group_interlock_code_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_USER_SERVICE_INFO:
- dissect_isup_user_service_information_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_SIGNALLING_POINT_CODE:
- dissect_isup_signalling_point_code_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_USER_TO_USER_INFO:
- dissect_isup_user_to_user_information_parameter(parameter_tvb, pinfo, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_CONNECTED_NR:
- dissect_isup_connected_number_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_SUSP_RESUME_IND:
- dissect_isup_suspend_resume_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_TRANSIT_NETW_SELECT:
- dissect_isup_transit_network_selection_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_EVENT_INFO:
- dissect_isup_event_information_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_CIRC_ASSIGN_MAP:
- dissect_isup_circuit_assignment_map_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_CIRC_STATE_IND:
- dissect_isup_circuit_state_ind_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_AUTO_CONG_LEVEL:
- dissect_isup_automatic_congestion_level_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_ORIG_CALLED_NR:
- dissect_isup_original_called_number_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_OPT_BACKW_CALL_IND:
- dissect_isup_optional_backward_call_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_USER_TO_USER_IND:
- dissect_isup_user_to_user_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_ORIG_ISC_POINT_CODE:
- dissect_isup_original_isc_point_code_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_GENERIC_NOTIF_IND:
- dissect_isup_generic_notification_indicator_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_CALL_HIST_INFO :
- dissect_isup_call_history_information_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_ACC_DELIV_INFO:
- dissect_isup_access_delivery_information_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_NETW_SPECIFIC_FACLTY:
- dissect_isup_network_specific_facility_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_USER_SERVICE_INFO_PR:
- dissect_isup_user_service_information_prime_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_PROPAG_DELAY_COUNTER:
- dissect_isup_propagation_delay_counter_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_REMOTE_OPERATIONS:
- dissect_isup_remote_operations_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_SERVICE_ACTIVATION:
- dissect_isup_service_activation_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_USER_TELESERV_INFO:
- dissect_isup_user_teleservice_information_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_TRANSM_MEDIUM_USED:
- dissect_isup_transmission_medium_used_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_CALL_DIV_INFO:
- dissect_isup_call_diversion_information_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_ECHO_CTRL_INFO:
- dissect_isup_echo_control_information_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_MSG_COMPAT_INFO:
- dissect_isup_message_compatibility_information_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_PARAM_COMPAT_INFO:
- dissect_isup_parameter_compatibility_information_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_MLPP_PRECEDENCE:
- dissect_isup_mlpp_precedence_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_MCID_REQ_IND:
- dissect_isup_mcid_request_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_MCID_RSP_IND:
- dissect_isup_mcid_response_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_HOP_COUNTER:
- dissect_isup_hop_counter_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_TRANSM_MEDIUM_RQUR_PR:
- dissect_isup_transmission_medium_requirement_prime_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_LOCATION_NR:
- dissect_isup_location_number_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_REDIR_NR_RSTRCT:
- dissect_isup_redirection_number_restriction_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_CALL_TRANS_REF:
- dissect_isup_call_transfer_reference_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_LOOP_PREV_IND:
- dissect_isup_loop_prevention_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_CALL_TRANS_NR:
- dissect_isup_call_transfer_number_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_CCSS:
- dissect_isup_ccss_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_FORW_GVNS:
- dissect_isup_forward_gvns_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_BACKW_GVNS:
- dissect_isup_backward_gvns_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_REDIRECT_CAPAB:
- dissect_isup_redirect_capability_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_NETW_MGMT_CTRL:
- dissect_isup_network_management_controls_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_CORRELATION_ID:
- dissect_isup_correlation_id_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_SCF_ID:
- dissect_isup_scf_id_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_CALL_DIV_TREAT_IND:
- dissect_isup_call_diversion_treatment_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_CALLED_IN_NR:
- dissect_isup_called_in_number_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_CALL_OFF_TREAT_IND:
- dissect_isup_call_offering_treatment_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_CHARGED_PARTY_IDENT:
- dissect_isup_charged_party_identification_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_CONF_TREAT_IND:
- dissect_isup_conference_treatment_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_DISPLAY_INFO:
- dissect_isup_display_information_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_UID_ACTION_IND:
- dissect_isup_uid_action_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_UID_CAPAB_IND:
- dissect_isup_uid_capability_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_REDIRECT_COUNTER:
- dissect_isup_redirect_counter_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_COLLECT_CALL_REQ:
- dissect_isup_collect_call_request_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_GENERIC_NR:
- dissect_isup_generic_number_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_GENERIC_DIGITS:
- dissect_isup_generic_digits_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_APPLICATON_TRANS:
- dissect_isup_application_transport_parameter(parameter_tvb, pinfo, parameter_tree, parameter_item);
- break;
-
- default:
- dissect_isup_unknown_parameter(parameter_tvb, parameter_item);
- break;
- }
-
-
- offset += MIN(parameter_length, actual_length);
- }
-
- }
+ parameter_tvb = tvb_new_subset(optional_parameters_tvb, offset, MIN(parameter_length, actual_length), parameter_length);
+ switch (parameter_type) {
+ case PARAM_TYPE_CALL_REF:
+ dissect_isup_call_reference_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_TRANSM_MEDIUM_REQU:
+ dissect_isup_transmission_medium_requirement_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_ACC_TRANSP:
+ dissect_isup_access_transport_parameter(parameter_tvb, parameter_tree, parameter_item, pinfo);
+ break;
+ case PARAM_TYPE_CALLED_PARTY_NR:
+ dissect_isup_called_party_number_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_SUBSQT_NR:
+ dissect_isup_subsequent_number_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_NATURE_OF_CONN_IND:
+ dissect_isup_nature_of_connection_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_FORW_CALL_IND:
+ dissect_isup_forward_call_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_OPT_FORW_CALL_IND:
+ dissect_isup_optional_forward_call_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_CALLING_PRTY_CATEG:
+ dissect_isup_calling_partys_category_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_CALLING_PARTY_NR:
+ dissect_isup_calling_party_number_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_REDIRECTING_NR:
+ dissect_isup_redirecting_number_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_REDIRECTION_NR:
+ dissect_isup_redirection_number_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_CONNECTION_REQ:
+ dissect_isup_connection_request_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_INFO_REQ_IND:
+ dissect_isup_information_request_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_INFO_IND:
+ dissect_isup_information_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_CONTINUITY_IND:
+ dissect_isup_continuity_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_BACKW_CALL_IND:
+ dissect_isup_backward_call_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_CAUSE_INDICATORS:
+ dissect_isup_cause_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_REDIRECTION_INFO:
+ dissect_isup_redirection_information_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_CIRC_GRP_SV_MSG_TYPE:
+ dissect_isup_circuit_group_supervision_message_type_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_RANGE_AND_STATUS:
+ dissect_isup_range_and_status_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_FACILITY_IND:
+ dissect_isup_facility_ind_parameter(parameter_tvb, parameter_item);
+ break;
+ case PARAM_TYPE_CLSD_USR_GRP_ILOCK_CD:
+ dissect_isup_closed_user_group_interlock_code_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_USER_SERVICE_INFO:
+ dissect_isup_user_service_information_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_SIGNALLING_POINT_CODE:
+ dissect_isup_signalling_point_code_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_USER_TO_USER_INFO:
+ dissect_isup_user_to_user_information_parameter(parameter_tvb, pinfo, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_CONNECTED_NR:
+ dissect_isup_connected_number_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_SUSP_RESUME_IND:
+ dissect_isup_suspend_resume_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_TRANSIT_NETW_SELECT:
+ dissect_isup_transit_network_selection_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_EVENT_INFO:
+ dissect_isup_event_information_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_CIRC_ASSIGN_MAP:
+ dissect_isup_circuit_assignment_map_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_CIRC_STATE_IND:
+ dissect_isup_circuit_state_ind_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_AUTO_CONG_LEVEL:
+ dissect_isup_automatic_congestion_level_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_ORIG_CALLED_NR:
+ dissect_isup_original_called_number_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_OPT_BACKW_CALL_IND:
+ dissect_isup_optional_backward_call_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_USER_TO_USER_IND:
+ dissect_isup_user_to_user_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_ORIG_ISC_POINT_CODE:
+ dissect_isup_original_isc_point_code_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_GENERIC_NOTIF_IND:
+ dissect_isup_generic_notification_indicator_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_CALL_HIST_INFO :
+ dissect_isup_call_history_information_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_ACC_DELIV_INFO:
+ dissect_isup_access_delivery_information_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_NETW_SPECIFIC_FACLTY:
+ dissect_isup_network_specific_facility_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_USER_SERVICE_INFO_PR:
+ dissect_isup_user_service_information_prime_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_PROPAG_DELAY_COUNTER:
+ dissect_isup_propagation_delay_counter_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_REMOTE_OPERATIONS:
+ dissect_isup_remote_operations_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_SERVICE_ACTIVATION:
+ dissect_isup_service_activation_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_USER_TELESERV_INFO:
+ dissect_isup_user_teleservice_information_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_TRANSM_MEDIUM_USED:
+ dissect_isup_transmission_medium_used_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_CALL_DIV_INFO:
+ dissect_isup_call_diversion_information_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_ECHO_CTRL_INFO:
+ dissect_isup_echo_control_information_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_MSG_COMPAT_INFO:
+ dissect_isup_message_compatibility_information_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_PARAM_COMPAT_INFO:
+ dissect_isup_parameter_compatibility_information_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_MLPP_PRECEDENCE:
+ dissect_isup_mlpp_precedence_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_MCID_REQ_IND:
+ dissect_isup_mcid_request_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_MCID_RSP_IND:
+ dissect_isup_mcid_response_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_HOP_COUNTER:
+ dissect_isup_hop_counter_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_TRANSM_MEDIUM_RQUR_PR:
+ dissect_isup_transmission_medium_requirement_prime_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_LOCATION_NR:
+ dissect_isup_location_number_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_REDIR_NR_RSTRCT:
+ dissect_isup_redirection_number_restriction_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_CALL_TRANS_REF:
+ dissect_isup_call_transfer_reference_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_LOOP_PREV_IND:
+ dissect_isup_loop_prevention_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_CALL_TRANS_NR:
+ dissect_isup_call_transfer_number_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_CCSS:
+ dissect_isup_ccss_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_FORW_GVNS:
+ dissect_isup_forward_gvns_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_BACKW_GVNS:
+ dissect_isup_backward_gvns_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_REDIRECT_CAPAB:
+ dissect_isup_redirect_capability_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_NETW_MGMT_CTRL:
+ dissect_isup_network_management_controls_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_CORRELATION_ID:
+ dissect_isup_correlation_id_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_SCF_ID:
+ dissect_isup_scf_id_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_CALL_DIV_TREAT_IND:
+ dissect_isup_call_diversion_treatment_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_CALLED_IN_NR:
+ dissect_isup_called_in_number_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_CALL_OFF_TREAT_IND:
+ dissect_isup_call_offering_treatment_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_CHARGED_PARTY_IDENT:
+ dissect_isup_charged_party_identification_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_CONF_TREAT_IND:
+ dissect_isup_conference_treatment_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_DISPLAY_INFO:
+ dissect_isup_display_information_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_UID_ACTION_IND:
+ dissect_isup_uid_action_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_UID_CAPAB_IND:
+ dissect_isup_uid_capability_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_REDIRECT_COUNTER:
+ dissect_isup_redirect_counter_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_COLLECT_CALL_REQ:
+ dissect_isup_collect_call_request_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_GENERIC_NR:
+ dissect_isup_generic_number_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_GENERIC_DIGITS:
+ dissect_isup_generic_digits_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_APPLICATON_TRANS:
+ dissect_isup_application_transport_parameter(parameter_tvb, pinfo, parameter_tree, parameter_item);
+ break;
+
+ default:
+ dissect_isup_unknown_parameter(parameter_tvb, parameter_item);
+ break;
+ }
+
+
+ offset += MIN(parameter_length, actual_length);
+ }
+
+ }
else {
- /* End of optional parameters is reached */
- proto_tree_add_uint_format(isup_tree, hf_isup_parameter_type, optional_parameters_tvb , offset, PARAMETER_TYPE_LENGTH, parameter_type, "End of optional parameters (%u)", parameter_type);
+ /* End of optional parameters is reached */
+ proto_tree_add_uint_format(isup_tree, hf_isup_parameter_type, optional_parameters_tvb , offset, PARAMETER_TYPE_LENGTH,
+ parameter_type, "End of optional parameters (%u)", parameter_type);
}
}
}
@@ -5572,297 +5603,300 @@ dissect_ansi_isup_optional_parameter(tvbuff_t *optional_parameters_tvb,packet_in
parameter_length = tvb_get_guint8(optional_parameters_tvb, offset + PARAMETER_TYPE_LENGTH);
parameter_item = proto_tree_add_text(isup_tree, optional_parameters_tvb,
- offset,
- parameter_length + PARAMETER_TYPE_LENGTH + PARAMETER_LENGTH_IND_LENGTH,
- "Parameter: type %u",
- parameter_type);
+ offset,
+ parameter_length + PARAMETER_TYPE_LENGTH + PARAMETER_LENGTH_IND_LENGTH,
+ "Parameter: type %u",
+ parameter_type);
parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter);
- proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, optional_parameters_tvb, offset, PARAMETER_TYPE_LENGTH, parameter_type, "Optional Parameter: %u (%s)", parameter_type, val_to_str(parameter_type, ansi_isup_parameter_type_value,"unknown"));
+ proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, optional_parameters_tvb, offset, PARAMETER_TYPE_LENGTH, parameter_type,
+ "Optional Parameter: %u (%s)", parameter_type,
+ val_to_str_ext_const(parameter_type, &ansi_isup_parameter_type_value_ext,"unknown"));
offset += PARAMETER_TYPE_LENGTH;
- octet = tvb_get_guint8(optional_parameters_tvb,offset);
+ octet = tvb_get_guint8(optional_parameters_tvb,offset);
- proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_length, optional_parameters_tvb, offset, PARAMETER_LENGTH_IND_LENGTH, parameter_length, "Parameter length: %u", parameter_length);
+ proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_length, optional_parameters_tvb, offset, PARAMETER_LENGTH_IND_LENGTH, parameter_length,
+ "Parameter length: %u", parameter_length);
offset += PARAMETER_LENGTH_IND_LENGTH;
- if ( octet == 0 )
- continue;
+ if ( octet == 0 )
+ continue;
actual_length = tvb_length_remaining(optional_parameters_tvb, offset);
if (actual_length > 0){
- parameter_tvb = tvb_new_subset(optional_parameters_tvb, offset, MIN(parameter_length, actual_length), parameter_length);
- switch (parameter_type) {
- case PARAM_TYPE_CALL_REF:
- dissect_isup_call_reference_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_TRANSM_MEDIUM_REQU:
- dissect_isup_transmission_medium_requirement_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_ACC_TRANSP:
- dissect_isup_access_transport_parameter(parameter_tvb, parameter_tree, parameter_item, pinfo);
- break;
- case PARAM_TYPE_CALLED_PARTY_NR:
- dissect_isup_called_party_number_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_SUBSQT_NR:
- dissect_isup_subsequent_number_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_NATURE_OF_CONN_IND:
- dissect_isup_nature_of_connection_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_FORW_CALL_IND:
- dissect_isup_forward_call_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_OPT_FORW_CALL_IND:
- dissect_isup_optional_forward_call_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_CALLING_PRTY_CATEG:
- dissect_isup_calling_partys_category_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_CALLING_PARTY_NR:
- dissect_isup_calling_party_number_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_REDIRECTING_NR:
- dissect_isup_redirecting_number_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_REDIRECTION_NR:
- dissect_isup_redirection_number_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_CONNECTION_REQ:
- dissect_isup_connection_request_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_INFO_REQ_IND:
- dissect_isup_information_request_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_INFO_IND:
- dissect_isup_information_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_CONTINUITY_IND:
- dissect_isup_continuity_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_BACKW_CALL_IND:
- dissect_isup_backward_call_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_CAUSE_INDICATORS:
- dissect_ansi_isup_cause_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_REDIRECTION_INFO:
- dissect_isup_redirection_information_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_CIRC_GRP_SV_MSG_TYPE:
- dissect_isup_circuit_group_supervision_message_type_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_RANGE_AND_STATUS:
- dissect_isup_range_and_status_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_FACILITY_IND:
- dissect_isup_facility_ind_parameter(parameter_tvb, parameter_item);
- break;
- case PARAM_TYPE_CLSD_USR_GRP_ILOCK_CD:
- dissect_isup_closed_user_group_interlock_code_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_USER_SERVICE_INFO:
- dissect_isup_user_service_information_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_SIGNALLING_POINT_CODE:
- dissect_isup_signalling_point_code_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_USER_TO_USER_INFO:
- dissect_isup_user_to_user_information_parameter(parameter_tvb, pinfo, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_CONNECTED_NR:
- dissect_isup_connected_number_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_SUSP_RESUME_IND:
- dissect_isup_suspend_resume_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_TRANSIT_NETW_SELECT:
- dissect_isup_transit_network_selection_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_EVENT_INFO:
- dissect_isup_event_information_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_CIRC_ASSIGN_MAP:
- dissect_isup_circuit_assignment_map_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_CIRC_STATE_IND:
- dissect_isup_circuit_state_ind_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_AUTO_CONG_LEVEL:
- dissect_isup_automatic_congestion_level_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_ORIG_CALLED_NR:
- dissect_isup_original_called_number_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_OPT_BACKW_CALL_IND:
- dissect_isup_optional_backward_call_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_USER_TO_USER_IND:
- dissect_isup_user_to_user_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_ORIG_ISC_POINT_CODE:
- dissect_isup_original_isc_point_code_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_GENERIC_NOTIF_IND:
- dissect_isup_generic_notification_indicator_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_CALL_HIST_INFO :
- dissect_isup_call_history_information_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_ACC_DELIV_INFO:
- dissect_isup_access_delivery_information_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_NETW_SPECIFIC_FACLTY:
- dissect_isup_network_specific_facility_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_USER_SERVICE_INFO_PR:
- dissect_isup_user_service_information_prime_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_PROPAG_DELAY_COUNTER:
- dissect_isup_propagation_delay_counter_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_REMOTE_OPERATIONS:
- dissect_isup_remote_operations_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_SERVICE_ACTIVATION:
- dissect_isup_service_activation_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_USER_TELESERV_INFO:
- dissect_isup_user_teleservice_information_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_TRANSM_MEDIUM_USED:
- dissect_isup_transmission_medium_used_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_CALL_DIV_INFO:
- dissect_isup_call_diversion_information_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_ECHO_CTRL_INFO:
- dissect_isup_echo_control_information_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_MSG_COMPAT_INFO:
- dissect_isup_message_compatibility_information_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_PARAM_COMPAT_INFO:
- dissect_isup_parameter_compatibility_information_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_MLPP_PRECEDENCE:
- dissect_isup_mlpp_precedence_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_MCID_REQ_IND:
- dissect_isup_mcid_request_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_MCID_RSP_IND:
- dissect_isup_mcid_response_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_HOP_COUNTER:
- dissect_isup_hop_counter_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_ORIG_LINE_INFO:
- dissect_isup_orig_line_info_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_TRANSM_MEDIUM_RQUR_PR:
- dissect_isup_transmission_medium_requirement_prime_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_LOCATION_NR:
- dissect_isup_location_number_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_REDIR_NR_RSTRCT:
- dissect_isup_redirection_number_restriction_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_CALL_TRANS_REF:
- dissect_isup_call_transfer_reference_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_LOOP_PREV_IND:
- dissect_isup_loop_prevention_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_CALL_TRANS_NR:
- dissect_isup_call_transfer_number_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_CCSS:
- dissect_isup_ccss_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_FORW_GVNS:
- dissect_isup_forward_gvns_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_BACKW_GVNS:
- dissect_isup_backward_gvns_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_REDIRECT_CAPAB:
- dissect_isup_redirect_capability_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_NETW_MGMT_CTRL:
- dissect_isup_network_management_controls_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_CORRELATION_ID:
- dissect_isup_correlation_id_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_SCF_ID:
- dissect_isup_scf_id_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_CALL_DIV_TREAT_IND:
- dissect_isup_call_diversion_treatment_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_CALLED_IN_NR:
- dissect_isup_called_in_number_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_CALL_OFF_TREAT_IND:
- dissect_isup_call_offering_treatment_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_CHARGED_PARTY_IDENT:
- dissect_isup_charged_party_identification_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_CONF_TREAT_IND:
- dissect_isup_conference_treatment_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_DISPLAY_INFO:
- dissect_isup_display_information_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_UID_ACTION_IND:
- dissect_isup_uid_action_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_UID_CAPAB_IND:
- dissect_isup_uid_capability_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_REDIRECT_COUNTER:
- dissect_isup_redirect_counter_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_COLLECT_CALL_REQ:
- dissect_isup_collect_call_request_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_CALLING_GEODETIC_LOCATION:
- dissect_isup_calling_geodetic_location_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_GENERIC_NR:
- dissect_isup_generic_number_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_JURISDICTION:
- dissect_isup_jurisdiction_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_GENERIC_NAME:
- dissect_isup_generic_name_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_GENERIC_DIGITS:
- dissect_isup_generic_digits_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_CHARGE_NR:
- dissect_isup_charge_number_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case PARAM_TYPE_APPLICATON_TRANS:
- dissect_isup_application_transport_parameter(parameter_tvb, pinfo, parameter_tree, parameter_item);
- break;
-
- default:
- dissect_isup_unknown_parameter(parameter_tvb, parameter_item);
- break;
- }
-
-
- offset += MIN(parameter_length, actual_length);
- }
-
- }
+ parameter_tvb = tvb_new_subset(optional_parameters_tvb, offset, MIN(parameter_length, actual_length), parameter_length);
+ switch (parameter_type) {
+ case PARAM_TYPE_CALL_REF:
+ dissect_isup_call_reference_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_TRANSM_MEDIUM_REQU:
+ dissect_isup_transmission_medium_requirement_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_ACC_TRANSP:
+ dissect_isup_access_transport_parameter(parameter_tvb, parameter_tree, parameter_item, pinfo);
+ break;
+ case PARAM_TYPE_CALLED_PARTY_NR:
+ dissect_isup_called_party_number_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_SUBSQT_NR:
+ dissect_isup_subsequent_number_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_NATURE_OF_CONN_IND:
+ dissect_isup_nature_of_connection_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_FORW_CALL_IND:
+ dissect_isup_forward_call_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_OPT_FORW_CALL_IND:
+ dissect_isup_optional_forward_call_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_CALLING_PRTY_CATEG:
+ dissect_isup_calling_partys_category_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_CALLING_PARTY_NR:
+ dissect_isup_calling_party_number_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_REDIRECTING_NR:
+ dissect_isup_redirecting_number_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_REDIRECTION_NR:
+ dissect_isup_redirection_number_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_CONNECTION_REQ:
+ dissect_isup_connection_request_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_INFO_REQ_IND:
+ dissect_isup_information_request_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_INFO_IND:
+ dissect_isup_information_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_CONTINUITY_IND:
+ dissect_isup_continuity_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_BACKW_CALL_IND:
+ dissect_isup_backward_call_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_CAUSE_INDICATORS:
+ dissect_ansi_isup_cause_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_REDIRECTION_INFO:
+ dissect_isup_redirection_information_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_CIRC_GRP_SV_MSG_TYPE:
+ dissect_isup_circuit_group_supervision_message_type_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_RANGE_AND_STATUS:
+ dissect_isup_range_and_status_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_FACILITY_IND:
+ dissect_isup_facility_ind_parameter(parameter_tvb, parameter_item);
+ break;
+ case PARAM_TYPE_CLSD_USR_GRP_ILOCK_CD:
+ dissect_isup_closed_user_group_interlock_code_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_USER_SERVICE_INFO:
+ dissect_isup_user_service_information_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_SIGNALLING_POINT_CODE:
+ dissect_isup_signalling_point_code_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_USER_TO_USER_INFO:
+ dissect_isup_user_to_user_information_parameter(parameter_tvb, pinfo, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_CONNECTED_NR:
+ dissect_isup_connected_number_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_SUSP_RESUME_IND:
+ dissect_isup_suspend_resume_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_TRANSIT_NETW_SELECT:
+ dissect_isup_transit_network_selection_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_EVENT_INFO:
+ dissect_isup_event_information_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_CIRC_ASSIGN_MAP:
+ dissect_isup_circuit_assignment_map_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_CIRC_STATE_IND:
+ dissect_isup_circuit_state_ind_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_AUTO_CONG_LEVEL:
+ dissect_isup_automatic_congestion_level_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_ORIG_CALLED_NR:
+ dissect_isup_original_called_number_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_OPT_BACKW_CALL_IND:
+ dissect_isup_optional_backward_call_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_USER_TO_USER_IND:
+ dissect_isup_user_to_user_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_ORIG_ISC_POINT_CODE:
+ dissect_isup_original_isc_point_code_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_GENERIC_NOTIF_IND:
+ dissect_isup_generic_notification_indicator_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_CALL_HIST_INFO :
+ dissect_isup_call_history_information_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_ACC_DELIV_INFO:
+ dissect_isup_access_delivery_information_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_NETW_SPECIFIC_FACLTY:
+ dissect_isup_network_specific_facility_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_USER_SERVICE_INFO_PR:
+ dissect_isup_user_service_information_prime_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_PROPAG_DELAY_COUNTER:
+ dissect_isup_propagation_delay_counter_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_REMOTE_OPERATIONS:
+ dissect_isup_remote_operations_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_SERVICE_ACTIVATION:
+ dissect_isup_service_activation_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_USER_TELESERV_INFO:
+ dissect_isup_user_teleservice_information_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_TRANSM_MEDIUM_USED:
+ dissect_isup_transmission_medium_used_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_CALL_DIV_INFO:
+ dissect_isup_call_diversion_information_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_ECHO_CTRL_INFO:
+ dissect_isup_echo_control_information_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_MSG_COMPAT_INFO:
+ dissect_isup_message_compatibility_information_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_PARAM_COMPAT_INFO:
+ dissect_isup_parameter_compatibility_information_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_MLPP_PRECEDENCE:
+ dissect_isup_mlpp_precedence_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_MCID_REQ_IND:
+ dissect_isup_mcid_request_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_MCID_RSP_IND:
+ dissect_isup_mcid_response_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_HOP_COUNTER:
+ dissect_isup_hop_counter_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_ORIG_LINE_INFO:
+ dissect_isup_orig_line_info_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_TRANSM_MEDIUM_RQUR_PR:
+ dissect_isup_transmission_medium_requirement_prime_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_LOCATION_NR:
+ dissect_isup_location_number_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_REDIR_NR_RSTRCT:
+ dissect_isup_redirection_number_restriction_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_CALL_TRANS_REF:
+ dissect_isup_call_transfer_reference_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_LOOP_PREV_IND:
+ dissect_isup_loop_prevention_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_CALL_TRANS_NR:
+ dissect_isup_call_transfer_number_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_CCSS:
+ dissect_isup_ccss_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_FORW_GVNS:
+ dissect_isup_forward_gvns_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_BACKW_GVNS:
+ dissect_isup_backward_gvns_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_REDIRECT_CAPAB:
+ dissect_isup_redirect_capability_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_NETW_MGMT_CTRL:
+ dissect_isup_network_management_controls_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_CORRELATION_ID:
+ dissect_isup_correlation_id_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_SCF_ID:
+ dissect_isup_scf_id_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_CALL_DIV_TREAT_IND:
+ dissect_isup_call_diversion_treatment_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_CALLED_IN_NR:
+ dissect_isup_called_in_number_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_CALL_OFF_TREAT_IND:
+ dissect_isup_call_offering_treatment_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_CHARGED_PARTY_IDENT:
+ dissect_isup_charged_party_identification_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_CONF_TREAT_IND:
+ dissect_isup_conference_treatment_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_DISPLAY_INFO:
+ dissect_isup_display_information_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_UID_ACTION_IND:
+ dissect_isup_uid_action_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_UID_CAPAB_IND:
+ dissect_isup_uid_capability_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_REDIRECT_COUNTER:
+ dissect_isup_redirect_counter_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_COLLECT_CALL_REQ:
+ dissect_isup_collect_call_request_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_CALLING_GEODETIC_LOCATION:
+ dissect_isup_calling_geodetic_location_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_GENERIC_NR:
+ dissect_isup_generic_number_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_JURISDICTION:
+ dissect_isup_jurisdiction_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_GENERIC_NAME:
+ dissect_isup_generic_name_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_GENERIC_DIGITS:
+ dissect_isup_generic_digits_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_CHARGE_NR:
+ dissect_isup_charge_number_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case PARAM_TYPE_APPLICATON_TRANS:
+ dissect_isup_application_transport_parameter(parameter_tvb, pinfo, parameter_tree, parameter_item);
+ break;
+
+ default:
+ dissect_isup_unknown_parameter(parameter_tvb, parameter_item);
+ break;
+ }
+
+
+ offset += MIN(parameter_length, actual_length);
+ }
+
+ }
else {
- /* End of optional parameters is reached */
- proto_tree_add_uint_format(isup_tree, hf_isup_parameter_type, optional_parameters_tvb , offset, PARAMETER_TYPE_LENGTH, parameter_type, "End of optional parameters (%u)", parameter_type);
+ /* End of optional parameters is reached */
+ proto_tree_add_uint_format(isup_tree, hf_isup_parameter_type, optional_parameters_tvb , offset, PARAMETER_TYPE_LENGTH, parameter_type, "End of optional parameters (%u)", parameter_type);
}
}
}
@@ -5888,7 +5922,10 @@ dissect_ansi_isup_circuit_validation_test_resp_message(tvbuff_t *message_tvb, pr
parameter_item = proto_tree_add_text(isup_tree, message_tvb, offset, CVR_RESP_IND_LENGTH, "CVR Response Indicator");
parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter);
- proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, val_to_str(parameter_type, isup_parameter_type_value,"CVR Response Indicator"));
+ proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type,
+ "Mandatory Parameter: %u (%s)",
+ parameter_type,
+ val_to_str_ext_const(parameter_type, &isup_parameter_type_value_ext,"CVR Response Indicator"));
actual_length = tvb_ensure_length_remaining(message_tvb, offset);
@@ -5899,10 +5936,13 @@ dissect_ansi_isup_circuit_validation_test_resp_message(tvbuff_t *message_tvb, pr
/* Do stuff for second mandatory fixed parameter: CG Characteristics Indicator */
parameter_type = ANSI_ISUP_PARAM_TYPE_CG_CHAR_IND;
parameter_item = proto_tree_add_text(isup_tree, message_tvb, offset,
- CG_CHAR_IND_LENGTH,
- "Circuit Group Characteristics Indicators");
+ CG_CHAR_IND_LENGTH,
+ "Circuit Group Characteristics Indicators");
parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter);
- proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, val_to_str(parameter_type, isup_parameter_type_value,"Circuit Group Characters"));
+ proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type,
+ "Mandatory Parameter: %u (%s)",
+ parameter_type,
+ val_to_str_ext_const(parameter_type, &isup_parameter_type_value_ext, "Circuit Group Characters"));
actual_length = tvb_ensure_length_remaining(message_tvb, offset);
parameter_tvb = tvb_new_subset(message_tvb, offset, MIN(CG_CHAR_IND_LENGTH, actual_length), CG_CHAR_IND_LENGTH);
dissect_isup_circuit_group_char_ind_parameter(parameter_tvb, parameter_tree, parameter_item);
@@ -5924,10 +5964,13 @@ dissect_ansi_isup_circuit_reservation_message(tvbuff_t *message_tvb, proto_tree
/* Do stuff for mandatory fixed parameter: Nature of Connection Indicators */
parameter_type = PARAM_TYPE_NATURE_OF_CONN_IND;
parameter_item = proto_tree_add_text(isup_tree, message_tvb, offset,
- NATURE_OF_CONNECTION_IND_LENGTH,
- "Nature of Connection Indicators");
+ NATURE_OF_CONNECTION_IND_LENGTH,
+ "Nature of Connection Indicators");
parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter);
- proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, val_to_str(parameter_type, isup_parameter_type_value,"unknown"));
+ proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type,
+ "Mandatory Parameter: %u (%s)",
+ parameter_type,
+ val_to_str_ext_const(parameter_type, &isup_parameter_type_value_ext,"unknown"));
actual_length = tvb_ensure_length_remaining(message_tvb, offset);
parameter_tvb = tvb_new_subset(message_tvb, offset, MIN(NATURE_OF_CONNECTION_IND_LENGTH, actual_length), NATURE_OF_CONNECTION_IND_LENGTH);
dissect_isup_nature_of_connection_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
@@ -5949,10 +5992,13 @@ dissect_isup_initial_address_message(tvbuff_t *message_tvb, proto_tree *isup_tre
/* Do stuff for first mandatory fixed parameter: Nature of Connection Indicators */
parameter_type = PARAM_TYPE_NATURE_OF_CONN_IND;
parameter_item = proto_tree_add_text(isup_tree, message_tvb, offset,
- NATURE_OF_CONNECTION_IND_LENGTH,
- "Nature of Connection Indicators");
+ NATURE_OF_CONNECTION_IND_LENGTH,
+ "Nature of Connection Indicators");
parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter);
- proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, val_to_str(parameter_type, isup_parameter_type_value,"unknown"));
+ proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type,
+ "Mandatory Parameter: %u (%s)",
+ parameter_type,
+ val_to_str_ext_const(parameter_type, &isup_parameter_type_value_ext, "unknown"));
actual_length = tvb_ensure_length_remaining(message_tvb, offset);
parameter_tvb = tvb_new_subset(message_tvb, offset, MIN(NATURE_OF_CONNECTION_IND_LENGTH, actual_length), NATURE_OF_CONNECTION_IND_LENGTH);
dissect_isup_nature_of_connection_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
@@ -5961,10 +6007,13 @@ dissect_isup_initial_address_message(tvbuff_t *message_tvb, proto_tree *isup_tre
/* Do stuff for 2nd mandatory fixed parameter: Forward Call Indicators */
parameter_type = PARAM_TYPE_FORW_CALL_IND;
parameter_item = proto_tree_add_text(isup_tree, message_tvb, offset,
- FORWARD_CALL_IND_LENGTH,
- "Forward Call Indicators");
+ FORWARD_CALL_IND_LENGTH,
+ "Forward Call Indicators");
parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter);
- proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, val_to_str(parameter_type, isup_parameter_type_value,"unknown"));
+ proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type,
+ "Mandatory Parameter: %u (%s)",
+ parameter_type,
+ val_to_str_ext_const(parameter_type, &isup_parameter_type_value_ext, "unknown"));
actual_length = tvb_ensure_length_remaining(message_tvb, offset);
parameter_tvb = tvb_new_subset(message_tvb, offset, MIN(FORWARD_CALL_IND_LENGTH, actual_length), FORWARD_CALL_IND_LENGTH );
dissect_isup_forward_call_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
@@ -5973,47 +6022,56 @@ dissect_isup_initial_address_message(tvbuff_t *message_tvb, proto_tree *isup_tre
/* Do stuff for 3nd mandatory fixed parameter: Calling party's category */
parameter_type = PARAM_TYPE_CALLING_PRTY_CATEG;
parameter_item = proto_tree_add_text(isup_tree, message_tvb, offset,
- CALLING_PRTYS_CATEGORY_LENGTH,
- "Calling Party's category");
+ CALLING_PRTYS_CATEGORY_LENGTH,
+ "Calling Party's category");
parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter);
- proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, val_to_str(parameter_type, isup_parameter_type_value,"unknown"));
+ proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type,
+ "Mandatory Parameter: %u (%s)",
+ parameter_type,
+ val_to_str_ext_const(parameter_type, &isup_parameter_type_value_ext, "unknown"));
actual_length = tvb_ensure_length_remaining(message_tvb, offset);
parameter_tvb = tvb_new_subset(message_tvb, offset, MIN(CALLING_PRTYS_CATEGORY_LENGTH, actual_length),CALLING_PRTYS_CATEGORY_LENGTH );
dissect_isup_calling_partys_category_parameter(parameter_tvb, parameter_tree, parameter_item);
offset += CALLING_PRTYS_CATEGORY_LENGTH;
switch (isup_standard){
- case ITU_STANDARD:
- /* If ITU, do stuff for 4th mandatory fixed parameter: Transmission medium requirement */
- parameter_type = PARAM_TYPE_TRANSM_MEDIUM_REQU;
- parameter_item = proto_tree_add_text(isup_tree, message_tvb, offset,
- TRANSMISSION_MEDIUM_REQUIREMENT_LENGTH,
- "Transmission medium requirement");
- parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter);
- proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, val_to_str(parameter_type, isup_parameter_type_value,"unknown"));
- actual_length = tvb_ensure_length_remaining(message_tvb, offset);
- parameter_tvb = tvb_new_subset(message_tvb, offset, MIN(TRANSMISSION_MEDIUM_REQUIREMENT_LENGTH, actual_length), TRANSMISSION_MEDIUM_REQUIREMENT_LENGTH);
- dissect_isup_transmission_medium_requirement_parameter(parameter_tvb, parameter_tree, parameter_item);
- offset += TRANSMISSION_MEDIUM_REQUIREMENT_LENGTH;
- break;
- case ANSI_STANDARD:
- /* If ANSI, do stuff for the first mandatory variable parameter, USER_SERVICE_INFORMATION */
- parameter_type = PARAM_TYPE_USER_SERVICE_INFO;
- parameter_pointer = tvb_get_guint8(message_tvb, offset);
- parameter_length = tvb_get_guint8(message_tvb, offset + parameter_pointer);
- parameter_item = proto_tree_add_text(isup_tree, message_tvb,
- offset + parameter_pointer,
- parameter_length + PARAMETER_LENGTH_IND_LENGTH,
- "User Service Information");
- parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter);
- proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, val_to_str(parameter_type, isup_parameter_type_value,"unknown"));
- proto_tree_add_uint_format(parameter_tree, hf_isup_mandatory_variable_parameter_pointer, message_tvb, offset, PARAMETER_POINTER_LENGTH, parameter_pointer, "Pointer to Parameter: %u", parameter_pointer);
- proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_length, message_tvb, offset + parameter_pointer, PARAMETER_LENGTH_IND_LENGTH, parameter_length, "Parameter length: %u", parameter_length);
- actual_length = tvb_ensure_length_remaining(message_tvb, offset);
- parameter_tvb = tvb_new_subset(message_tvb, offset + parameter_pointer + PARAMETER_LENGTH_IND_LENGTH, MIN(parameter_length, actual_length), parameter_length );
- dissect_isup_user_service_information_parameter(parameter_tvb, parameter_tree, parameter_item);
- offset += PARAMETER_POINTER_LENGTH;
- break;
+ case ITU_STANDARD:
+ /* If ITU, do stuff for 4th mandatory fixed parameter: Transmission medium requirement */
+ parameter_type = PARAM_TYPE_TRANSM_MEDIUM_REQU;
+ parameter_item = proto_tree_add_text(isup_tree, message_tvb, offset,
+ TRANSMISSION_MEDIUM_REQUIREMENT_LENGTH,
+ "Transmission medium requirement");
+ parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter);
+ proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type,
+ "Mandatory Parameter: %u (%s)",
+ parameter_type,
+ val_to_str_ext_const(parameter_type, &isup_parameter_type_value_ext, "unknown"));
+ actual_length = tvb_ensure_length_remaining(message_tvb, offset);
+ parameter_tvb = tvb_new_subset(message_tvb, offset, MIN(TRANSMISSION_MEDIUM_REQUIREMENT_LENGTH, actual_length), TRANSMISSION_MEDIUM_REQUIREMENT_LENGTH);
+ dissect_isup_transmission_medium_requirement_parameter(parameter_tvb, parameter_tree, parameter_item);
+ offset += TRANSMISSION_MEDIUM_REQUIREMENT_LENGTH;
+ break;
+ case ANSI_STANDARD:
+ /* If ANSI, do stuff for the first mandatory variable parameter, USER_SERVICE_INFORMATION */
+ parameter_type = PARAM_TYPE_USER_SERVICE_INFO;
+ parameter_pointer = tvb_get_guint8(message_tvb, offset);
+ parameter_length = tvb_get_guint8(message_tvb, offset + parameter_pointer);
+ parameter_item = proto_tree_add_text(isup_tree, message_tvb,
+ offset + parameter_pointer,
+ parameter_length + PARAMETER_LENGTH_IND_LENGTH,
+ "User Service Information");
+ parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter);
+ proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type,
+ "Mandatory Parameter: %u (%s)",
+ parameter_type,
+ val_to_str_ext_const(parameter_type, &isup_parameter_type_value_ext, "unknown"));
+ proto_tree_add_uint_format(parameter_tree, hf_isup_mandatory_variable_parameter_pointer, message_tvb, offset, PARAMETER_POINTER_LENGTH, parameter_pointer, "Pointer to Parameter: %u", parameter_pointer);
+ proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_length, message_tvb, offset + parameter_pointer, PARAMETER_LENGTH_IND_LENGTH, parameter_length, "Parameter length: %u", parameter_length);
+ actual_length = tvb_ensure_length_remaining(message_tvb, offset);
+ parameter_tvb = tvb_new_subset(message_tvb, offset + parameter_pointer + PARAMETER_LENGTH_IND_LENGTH, MIN(parameter_length, actual_length), parameter_length );
+ dissect_isup_user_service_information_parameter(parameter_tvb, parameter_tree, parameter_item);
+ offset += PARAMETER_POINTER_LENGTH;
+ break;
}
/* Do stuff for mandatory variable parameter Called party number */
@@ -6022,11 +6080,14 @@ dissect_isup_initial_address_message(tvbuff_t *message_tvb, proto_tree *isup_tre
parameter_length = tvb_get_guint8(message_tvb, offset + parameter_pointer);
parameter_item = proto_tree_add_text(isup_tree, message_tvb,
- offset + parameter_pointer,
- parameter_length + PARAMETER_LENGTH_IND_LENGTH,
- "Called Party Number");
+ offset + parameter_pointer,
+ parameter_length + PARAMETER_LENGTH_IND_LENGTH,
+ "Called Party Number");
parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter);
- proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, val_to_str(parameter_type, isup_parameter_type_value,"unknown"));
+ proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type,
+ "Mandatory Parameter: %u (%s)",
+ parameter_type,
+ val_to_str_ext_const(parameter_type, &isup_parameter_type_value_ext, "unknown"));
proto_tree_add_uint_format(parameter_tree, hf_isup_mandatory_variable_parameter_pointer, message_tvb, offset, PARAMETER_POINTER_LENGTH, parameter_pointer, "Pointer to Parameter: %u", parameter_pointer);
proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_length, message_tvb, offset + parameter_pointer, PARAMETER_LENGTH_IND_LENGTH, parameter_length, "Parameter length: %u", parameter_length);
actual_length = tvb_ensure_length_remaining(message_tvb, offset);
@@ -6053,11 +6114,14 @@ static gint dissect_isup_subsequent_address_message(tvbuff_t *message_tvb, proto
parameter_length = tvb_get_guint8(message_tvb, offset + parameter_pointer);
parameter_item = proto_tree_add_text(isup_tree, message_tvb,
- offset + parameter_pointer,
- parameter_length + PARAMETER_LENGTH_IND_LENGTH,
- "Subsequent Number");
+ offset + parameter_pointer,
+ parameter_length + PARAMETER_LENGTH_IND_LENGTH,
+ "Subsequent Number");
parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter);
- proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, val_to_str(parameter_type, isup_parameter_type_value,"unknown"));
+ proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type,
+ "Mandatory Parameter: %u (%s)",
+ parameter_type,
+ val_to_str_ext_const(parameter_type, &isup_parameter_type_value_ext, "unknown"));
proto_tree_add_uint_format(parameter_tree, hf_isup_mandatory_variable_parameter_pointer, message_tvb, offset, PARAMETER_POINTER_LENGTH, parameter_pointer, "Pointer to Parameter: %u", parameter_pointer);
proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_length, message_tvb, offset + parameter_pointer, PARAMETER_LENGTH_IND_LENGTH, parameter_length, "Parameter length: %u", parameter_length);
actual_length = tvb_ensure_length_remaining(message_tvb, offset);
@@ -6082,10 +6146,13 @@ dissect_isup_information_request_message(tvbuff_t *message_tvb, proto_tree *isup
/* Do stuff for first mandatory fixed parameter: Information request indicators*/
parameter_type = PARAM_TYPE_INFO_REQ_IND;
parameter_item = proto_tree_add_text(isup_tree, message_tvb, offset,
- INFO_REQUEST_IND_LENGTH,
- "Information request indicators");
+ INFO_REQUEST_IND_LENGTH,
+ "Information request indicators");
parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter);
- proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, val_to_str(parameter_type, isup_parameter_type_value,"unknown"));
+ proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type,
+ "Mandatory Parameter: %u (%s)",
+ parameter_type,
+ val_to_str_ext_const(parameter_type, &isup_parameter_type_value_ext, "unknown"));
actual_length = tvb_ensure_length_remaining(message_tvb, offset);
parameter_tvb = tvb_new_subset(message_tvb, offset, MIN(INFO_REQUEST_IND_LENGTH, actual_length), INFO_REQUEST_IND_LENGTH);
dissect_isup_information_request_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
@@ -6106,10 +6173,13 @@ dissect_isup_information_message(tvbuff_t *message_tvb, proto_tree *isup_tree)
/* Do stuff for first mandatory fixed parameter: Information indicators*/
parameter_type = PARAM_TYPE_INFO_IND;
parameter_item = proto_tree_add_text(isup_tree, message_tvb, offset,
- INFO_IND_LENGTH,
- "Information indicators");
+ INFO_IND_LENGTH,
+ "Information indicators");
parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter);
- proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, val_to_str(parameter_type, isup_parameter_type_value,"unknown"));
+ proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type,
+ "Mandatory Parameter: %u (%s)",
+ parameter_type,
+ val_to_str_ext_const(parameter_type, &isup_parameter_type_value_ext, "unknown"));
actual_length = tvb_ensure_length_remaining(message_tvb, offset);
parameter_tvb = tvb_new_subset(message_tvb, offset, MIN(INFO_IND_LENGTH, actual_length), INFO_IND_LENGTH);
dissect_isup_information_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
@@ -6130,10 +6200,13 @@ dissect_isup_continuity_message(tvbuff_t *message_tvb, proto_tree *isup_tree)
/* Do stuff for first mandatory fixed parameter: Continuity indicators*/
parameter_type = PARAM_TYPE_CONTINUITY_IND;
parameter_item = proto_tree_add_text(isup_tree, message_tvb, offset,
- CONTINUITY_IND_LENGTH,
- "Continuity indicators");
+ CONTINUITY_IND_LENGTH,
+ "Continuity indicators");
parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter);
- proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, val_to_str(parameter_type, isup_parameter_type_value,"unknown"));
+ proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type,
+ "Mandatory Parameter: %u (%s)",
+ parameter_type,
+ val_to_str_ext_const(parameter_type, &isup_parameter_type_value_ext, "unknown"));
actual_length = tvb_ensure_length_remaining(message_tvb, offset);
parameter_tvb = tvb_new_subset(message_tvb, offset, MIN(CONTINUITY_IND_LENGTH, actual_length), CONTINUITY_IND_LENGTH);
dissect_isup_continuity_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
@@ -6154,10 +6227,13 @@ dissect_isup_address_complete_message(tvbuff_t *message_tvb, proto_tree *isup_tr
/* Do stuff for first mandatory fixed parameter: backward call indicators*/
parameter_type = PARAM_TYPE_BACKW_CALL_IND;
parameter_item = proto_tree_add_text(isup_tree, message_tvb, offset,
- BACKWARD_CALL_IND_LENGTH,
- "Backward Call Indicators");
+ BACKWARD_CALL_IND_LENGTH,
+ "Backward Call Indicators");
parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter);
- proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, val_to_str(parameter_type, isup_parameter_type_value,"unknown"));
+ proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type,
+ "Mandatory Parameter: %u (%s)",
+ parameter_type,
+ val_to_str_ext_const(parameter_type, &isup_parameter_type_value_ext, "unknown"));
actual_length = tvb_ensure_length_remaining(message_tvb, offset);
parameter_tvb = tvb_new_subset(message_tvb, offset, MIN(BACKWARD_CALL_IND_LENGTH, actual_length), BACKWARD_CALL_IND_LENGTH);
dissect_isup_backward_call_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
@@ -6178,10 +6254,13 @@ dissect_isup_connect_message(tvbuff_t *message_tvb, proto_tree *isup_tree)
/* Do stuff for first mandatory fixed parameter: backward call indicators*/
parameter_type = PARAM_TYPE_BACKW_CALL_IND;
parameter_item = proto_tree_add_text(isup_tree, message_tvb, offset,
- BACKWARD_CALL_IND_LENGTH,
- "Backward Call Indicators");
+ BACKWARD_CALL_IND_LENGTH,
+ "Backward Call Indicators");
parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter);
- proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, val_to_str(parameter_type, isup_parameter_type_value,"unknown"));
+ proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type,
+ "Mandatory Parameter: %u (%s)",
+ parameter_type,
+ val_to_str_ext_const(parameter_type, &isup_parameter_type_value_ext, "unknown"));
actual_length = tvb_ensure_length_remaining(message_tvb, offset);
parameter_tvb = tvb_new_subset(message_tvb, offset, MIN(BACKWARD_CALL_IND_LENGTH, actual_length), BACKWARD_CALL_IND_LENGTH);
dissect_isup_backward_call_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
@@ -6206,22 +6285,25 @@ dissect_isup_release_message(tvbuff_t *message_tvb, proto_tree *isup_tree)
parameter_length = tvb_get_guint8(message_tvb, offset + parameter_pointer);
parameter_item = proto_tree_add_text(isup_tree, message_tvb,
- offset + parameter_pointer,
- parameter_length + PARAMETER_LENGTH_IND_LENGTH,
- "Cause indicators");
+ offset + parameter_pointer,
+ parameter_length + PARAMETER_LENGTH_IND_LENGTH,
+ "Cause indicators");
parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter);
- proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, val_to_str(parameter_type, isup_parameter_type_value,"unknown"));
+ proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type,
+ "Mandatory Parameter: %u (%s)",
+ parameter_type,
+ val_to_str_ext_const(parameter_type, &isup_parameter_type_value_ext, "unknown"));
proto_tree_add_uint_format(parameter_tree, hf_isup_mandatory_variable_parameter_pointer, message_tvb, offset, PARAMETER_POINTER_LENGTH, parameter_pointer, "Pointer to Parameter: %u", parameter_pointer);
proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_length, message_tvb, offset + parameter_pointer, PARAMETER_LENGTH_IND_LENGTH, parameter_length, "Parameter length: %u", parameter_length);
actual_length = tvb_ensure_length_remaining(message_tvb, offset);
parameter_tvb = tvb_new_subset(message_tvb, offset + parameter_pointer + PARAMETER_LENGTH_IND_LENGTH, MIN(parameter_length, actual_length), parameter_length );
switch (isup_standard){
- case ITU_STANDARD:
- dissect_isup_cause_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case ANSI_STANDARD:
- dissect_ansi_isup_cause_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
+ case ITU_STANDARD:
+ dissect_isup_cause_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case ANSI_STANDARD:
+ dissect_ansi_isup_cause_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
}
offset += PARAMETER_POINTER_LENGTH;
@@ -6241,10 +6323,13 @@ dissect_isup_suspend_resume_message(tvbuff_t *message_tvb, proto_tree *isup_tree
/* Do stuff for first mandatory fixed parameter: backward call indicators*/
parameter_type = PARAM_TYPE_SUSP_RESUME_IND;
parameter_item = proto_tree_add_text(isup_tree, message_tvb, offset,
- SUSPEND_RESUME_IND_LENGTH,
- "Suspend/Resume indicator");
+ SUSPEND_RESUME_IND_LENGTH,
+ "Suspend/Resume indicator");
parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter);
- proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, val_to_str(parameter_type, isup_parameter_type_value,"unknown"));
+ proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type,
+ "Mandatory Parameter: %u (%s)",
+ parameter_type,
+ val_to_str_ext_const(parameter_type, &isup_parameter_type_value_ext, "unknown"));
actual_length = tvb_ensure_length_remaining(message_tvb, offset);
parameter_tvb = tvb_new_subset(message_tvb, offset, MIN(SUSPEND_RESUME_IND_LENGTH, actual_length), SUSPEND_RESUME_IND_LENGTH);
dissect_isup_suspend_resume_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
@@ -6269,11 +6354,14 @@ dissect_isup_circuit_group_reset_query_message(tvbuff_t *message_tvb, proto_tree
parameter_length = tvb_get_guint8(message_tvb, offset + parameter_pointer);
parameter_item = proto_tree_add_text(isup_tree, message_tvb,
- offset + parameter_pointer,
- parameter_length + PARAMETER_LENGTH_IND_LENGTH,
- "Range and status");
+ offset + parameter_pointer,
+ parameter_length + PARAMETER_LENGTH_IND_LENGTH,
+ "Range and status");
parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter);
- proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, val_to_str(parameter_type, isup_parameter_type_value,"unknown"));
+ proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type,
+ "Mandatory Parameter: %u (%s)",
+ parameter_type,
+ val_to_str_ext_const(parameter_type, &isup_parameter_type_value_ext, "unknown"));
proto_tree_add_uint_format(parameter_tree, hf_isup_mandatory_variable_parameter_pointer, message_tvb, offset, PARAMETER_POINTER_LENGTH, parameter_pointer, "Pointer to Parameter: %u", parameter_pointer);
proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_length, message_tvb, offset + parameter_pointer, PARAMETER_LENGTH_IND_LENGTH, parameter_length, "Parameter length: %u", parameter_length);
actual_length = tvb_ensure_length_remaining(message_tvb, offset);
@@ -6297,10 +6385,13 @@ dissect_isup_circuit_group_blocking_messages(tvbuff_t *message_tvb, proto_tree *
/* Do stuff for first mandatory fixed parameter: circuit group supervision message type*/
parameter_type = PARAM_TYPE_CIRC_GRP_SV_MSG_TYPE;
parameter_item = proto_tree_add_text(isup_tree, message_tvb, offset,
- CIRC_GRP_SV_MSG_TYPE_LENGTH,
- "Circuit group supervision message type");
+ CIRC_GRP_SV_MSG_TYPE_LENGTH,
+ "Circuit group supervision message type");
parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter);
- proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, val_to_str(parameter_type, isup_parameter_type_value,"unknown"));
+ proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type,
+ "Mandatory Parameter: %u (%s)",
+ parameter_type,
+ val_to_str_ext_const(parameter_type, &isup_parameter_type_value_ext, "unknown"));
actual_length = tvb_ensure_length_remaining(message_tvb, offset);
parameter_tvb = tvb_new_subset(message_tvb, offset, MIN(CIRC_GRP_SV_MSG_TYPE_LENGTH, actual_length), CIRC_GRP_SV_MSG_TYPE_LENGTH);
dissect_isup_circuit_group_supervision_message_type_parameter(parameter_tvb, parameter_tree, parameter_item);
@@ -6313,11 +6404,14 @@ dissect_isup_circuit_group_blocking_messages(tvbuff_t *message_tvb, proto_tree *
parameter_length = tvb_get_guint8(message_tvb, offset + parameter_pointer);
parameter_item = proto_tree_add_text(isup_tree, message_tvb,
- offset + parameter_pointer,
- parameter_length + PARAMETER_LENGTH_IND_LENGTH,
- "Range and status");
+ offset + parameter_pointer,
+ parameter_length + PARAMETER_LENGTH_IND_LENGTH,
+ "Range and status");
parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter);
- proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, val_to_str(parameter_type, isup_parameter_type_value,"unknown"));
+ proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type,
+ "Mandatory Parameter: %u (%s)",
+ parameter_type,
+ val_to_str_ext_const(parameter_type, &isup_parameter_type_value_ext, "unknown"));
proto_tree_add_uint_format(parameter_tree, hf_isup_mandatory_variable_parameter_pointer, message_tvb, offset, PARAMETER_POINTER_LENGTH, parameter_pointer, "Pointer to Parameter: %u", parameter_pointer);
proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_length, message_tvb, offset + parameter_pointer, PARAMETER_LENGTH_IND_LENGTH, parameter_length, "Parameter length: %u", parameter_length);
actual_length = tvb_ensure_length_remaining(message_tvb, offset);
@@ -6342,10 +6436,13 @@ dissect_isup_facility_request_accepted_message(tvbuff_t *message_tvb, proto_tree
/* Do stuff for first mandatory fixed parameter: facility indicators*/
parameter_type = PARAM_TYPE_FACILITY_IND;
parameter_item = proto_tree_add_text(isup_tree, message_tvb, offset,
- FACILITY_IND_LENGTH,
- "Facility indicator");
+ FACILITY_IND_LENGTH,
+ "Facility indicator");
parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter);
- proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, val_to_str(parameter_type, isup_parameter_type_value,"unknown"));
+ proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type,
+ "Mandatory Parameter: %u (%s)",
+ parameter_type,
+ val_to_str_ext_const(parameter_type, &isup_parameter_type_value_ext, "unknown"));
actual_length = tvb_ensure_length_remaining(message_tvb, offset);
parameter_tvb = tvb_new_subset(message_tvb, offset, MIN(FACILITY_IND_LENGTH, actual_length), FACILITY_IND_LENGTH);
dissect_isup_facility_ind_parameter(parameter_tvb, parameter_item);
@@ -6366,10 +6463,13 @@ dissect_isup_facility_reject_message(tvbuff_t *message_tvb, proto_tree *isup_tre
/* Do stuff for first mandatory fixed parameter: facility indicators*/
parameter_type = PARAM_TYPE_FACILITY_IND;
parameter_item = proto_tree_add_text(isup_tree, message_tvb, offset,
- FACILITY_IND_LENGTH,
- "Facility indicator");
+ FACILITY_IND_LENGTH,
+ "Facility indicator");
parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter);
- proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, val_to_str(parameter_type, isup_parameter_type_value,"unknown"));
+ proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type,
+ "Mandatory Parameter: %u (%s)",
+ parameter_type,
+ val_to_str_ext_const(parameter_type, &isup_parameter_type_value_ext, "unknown"));
actual_length = tvb_ensure_length_remaining(message_tvb, offset);
parameter_tvb = tvb_new_subset(message_tvb, offset, MIN(FACILITY_IND_LENGTH, actual_length), FACILITY_IND_LENGTH);
dissect_isup_facility_ind_parameter(parameter_tvb, parameter_item);
@@ -6382,22 +6482,25 @@ dissect_isup_facility_reject_message(tvbuff_t *message_tvb, proto_tree *isup_tre
parameter_length = tvb_get_guint8(message_tvb, offset + parameter_pointer);
parameter_item = proto_tree_add_text(isup_tree, message_tvb,
- offset + parameter_pointer,
- parameter_length + PARAMETER_LENGTH_IND_LENGTH,
- "Cause indicators, see Q.850");
+ offset + parameter_pointer,
+ parameter_length + PARAMETER_LENGTH_IND_LENGTH,
+ "Cause indicators, see Q.850");
parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter);
- proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, val_to_str(parameter_type, isup_parameter_type_value,"unknown"));
+ proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type,
+ "Mandatory Parameter: %u (%s)",
+ parameter_type,
+ val_to_str_ext_const(parameter_type, &isup_parameter_type_value_ext, "unknown"));
proto_tree_add_uint_format(parameter_tree, hf_isup_mandatory_variable_parameter_pointer, message_tvb, offset, PARAMETER_POINTER_LENGTH, parameter_pointer, "Pointer to Parameter: %u", parameter_pointer);
proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_length, message_tvb, offset + parameter_pointer, PARAMETER_LENGTH_IND_LENGTH, parameter_length, "Parameter length: %u", parameter_length);
actual_length = tvb_ensure_length_remaining(message_tvb, offset);
parameter_tvb = tvb_new_subset(message_tvb, offset + parameter_pointer + PARAMETER_LENGTH_IND_LENGTH, MIN(parameter_length, actual_length), parameter_length );
switch (isup_standard){
- case ITU_STANDARD:
- dissect_isup_cause_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case ANSI_STANDARD:
- dissect_ansi_isup_cause_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
+ case ITU_STANDARD:
+ dissect_isup_cause_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case ANSI_STANDARD:
+ dissect_ansi_isup_cause_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
}
offset += PARAMETER_POINTER_LENGTH;
@@ -6421,11 +6524,14 @@ dissect_isup_circuit_group_reset_acknowledgement_message(tvbuff_t *message_tvb,
parameter_length = tvb_get_guint8(message_tvb, offset + parameter_pointer);
parameter_item = proto_tree_add_text(isup_tree, message_tvb,
- offset + parameter_pointer,
- parameter_length + PARAMETER_LENGTH_IND_LENGTH,
- "Range and status");
+ offset + parameter_pointer,
+ parameter_length + PARAMETER_LENGTH_IND_LENGTH,
+ "Range and status");
parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter);
- proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, val_to_str(parameter_type, isup_parameter_type_value,"unknown"));
+ proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type,
+ "Mandatory Parameter: %u (%s)",
+ parameter_type,
+ val_to_str_ext_const(parameter_type, &isup_parameter_type_value_ext, "unknown"));
proto_tree_add_uint_format(parameter_tree, hf_isup_mandatory_variable_parameter_pointer, message_tvb, offset, PARAMETER_POINTER_LENGTH, parameter_pointer, "Pointer to Parameter: %u", parameter_pointer);
proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_length, message_tvb, offset + parameter_pointer, PARAMETER_LENGTH_IND_LENGTH, parameter_length, "Parameter length: %u", parameter_length);
actual_length = tvb_ensure_length_remaining(message_tvb, offset);
@@ -6453,11 +6559,14 @@ dissect_isup_circuit_group_query_response_message(tvbuff_t *message_tvb, proto_t
parameter_length = tvb_get_guint8(message_tvb, offset + parameter_pointer);
parameter_item = proto_tree_add_text(isup_tree, message_tvb,
- offset + parameter_pointer,
- parameter_length + PARAMETER_LENGTH_IND_LENGTH,
- "Range and status");
+ offset + parameter_pointer,
+ parameter_length + PARAMETER_LENGTH_IND_LENGTH,
+ "Range and status");
parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter);
- proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, val_to_str(parameter_type, isup_parameter_type_value,"unknown"));
+ proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type,
+ "Mandatory Parameter: %u (%s)",
+ parameter_type,
+ val_to_str_ext_const(parameter_type, &isup_parameter_type_value_ext, "unknown"));
proto_tree_add_uint_format(parameter_tree, hf_isup_mandatory_variable_parameter_pointer, message_tvb, offset, PARAMETER_POINTER_LENGTH, parameter_pointer, "Pointer to Parameter: %u", parameter_pointer);
proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_length, message_tvb, offset + parameter_pointer, PARAMETER_LENGTH_IND_LENGTH, parameter_length, "Parameter length: %u", parameter_length);
actual_length = tvb_ensure_length_remaining(message_tvb, offset);
@@ -6472,11 +6581,14 @@ dissect_isup_circuit_group_query_response_message(tvbuff_t *message_tvb, proto_t
parameter_length = tvb_get_guint8(message_tvb, offset + parameter_pointer);
parameter_item = proto_tree_add_text(isup_tree, message_tvb,
- offset + parameter_pointer,
- parameter_length + PARAMETER_LENGTH_IND_LENGTH,
- "Circuit state indicator (national use)");
+ offset + parameter_pointer,
+ parameter_length + PARAMETER_LENGTH_IND_LENGTH,
+ "Circuit state indicator (national use)");
parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter);
- proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, val_to_str(parameter_type, isup_parameter_type_value,"unknown"));
+ proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type,
+ "Mandatory Parameter: %u (%s)",
+ parameter_type,
+ val_to_str_ext_const(parameter_type, &isup_parameter_type_value_ext, "unknown"));
proto_tree_add_uint_format(parameter_tree, hf_isup_mandatory_variable_parameter_pointer, message_tvb, offset, PARAMETER_POINTER_LENGTH, parameter_pointer, "Pointer to Parameter: %u", parameter_pointer);
proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_length, message_tvb, offset + parameter_pointer, PARAMETER_LENGTH_IND_LENGTH, parameter_length, "Parameter length: %u", parameter_length);
actual_length = tvb_ensure_length_remaining(message_tvb, offset);
@@ -6500,10 +6612,13 @@ dissect_isup_call_progress_message(tvbuff_t *message_tvb, proto_tree *isup_tree)
/* Do stuff for first mandatory fixed parameter: Event information*/
parameter_type = PARAM_TYPE_EVENT_INFO;
parameter_item = proto_tree_add_text(isup_tree, message_tvb, offset,
- EVENT_INFO_LENGTH,
- "Event information");
+ EVENT_INFO_LENGTH,
+ "Event information");
parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter);
- proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, val_to_str(parameter_type, isup_parameter_type_value,"unknown"));
+ proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type,
+ "Mandatory Parameter: %u (%s)",
+ parameter_type,
+ val_to_str_ext_const(parameter_type, &isup_parameter_type_value_ext, "unknown"));
actual_length = tvb_ensure_length_remaining(message_tvb, offset);
parameter_tvb = tvb_new_subset(message_tvb, offset, MIN(EVENT_INFO_LENGTH, actual_length), EVENT_INFO_LENGTH);
dissect_isup_event_information_parameter(parameter_tvb, parameter_tree, parameter_item);
@@ -6528,11 +6643,14 @@ dissect_isup_user_to_user_information_message(tvbuff_t *message_tvb, packet_info
parameter_length = tvb_get_guint8(message_tvb, offset + parameter_pointer);
parameter_item = proto_tree_add_text(isup_tree, message_tvb,
- offset + parameter_pointer,
- parameter_length + PARAMETER_LENGTH_IND_LENGTH,
- "User-to-user information, see Q.931");
+ offset + parameter_pointer,
+ parameter_length + PARAMETER_LENGTH_IND_LENGTH,
+ "User-to-user information, see Q.931");
parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter);
- proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, val_to_str(parameter_type, isup_parameter_type_value,"unknown"));
+ proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type,
+ "Mandatory Parameter: %u (%s)",
+ parameter_type,
+ val_to_str_ext_const(parameter_type, &isup_parameter_type_value_ext, "unknown"));
proto_tree_add_uint_format(parameter_tree, hf_isup_mandatory_variable_parameter_pointer, message_tvb, offset, PARAMETER_POINTER_LENGTH, parameter_pointer, "Pointer to Parameter: %u", parameter_pointer);
proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_length, message_tvb, offset + parameter_pointer, PARAMETER_LENGTH_IND_LENGTH, parameter_length, "Parameter length: %u", parameter_length);
actual_length = tvb_ensure_length_remaining(message_tvb, offset);
@@ -6560,23 +6678,26 @@ dissect_isup_confusion_message(tvbuff_t *message_tvb, proto_tree *isup_tree)
parameter_length = tvb_get_guint8(message_tvb, offset + parameter_pointer);
parameter_item = proto_tree_add_text(isup_tree, message_tvb,
- offset + parameter_pointer,
- parameter_length + PARAMETER_LENGTH_IND_LENGTH,
- "Cause indicators, see Q.850");
+ offset + parameter_pointer,
+ parameter_length + PARAMETER_LENGTH_IND_LENGTH,
+ "Cause indicators, see Q.850");
parameter_tree = proto_item_add_subtree(parameter_item, ett_isup_parameter);
- proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type, "Mandatory Parameter: %u (%s)", parameter_type, val_to_str(parameter_type, isup_parameter_type_value,"unknown"));
+ proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_type, message_tvb, 0, 0, parameter_type,
+ "Mandatory Parameter: %u (%s)",
+ parameter_type,
+ val_to_str_ext_const(parameter_type, &isup_parameter_type_value_ext, "unknown"));
proto_tree_add_uint_format(parameter_tree, hf_isup_mandatory_variable_parameter_pointer, message_tvb, offset, PARAMETER_POINTER_LENGTH, parameter_pointer, "Pointer to Parameter: %u", parameter_pointer);
proto_tree_add_uint_format(parameter_tree, hf_isup_parameter_length, message_tvb, offset + parameter_pointer, PARAMETER_LENGTH_IND_LENGTH, parameter_length, "Parameter length: %u", parameter_length);
actual_length = tvb_ensure_length_remaining(message_tvb, offset);
parameter_tvb = tvb_new_subset(message_tvb, offset + parameter_pointer + PARAMETER_LENGTH_IND_LENGTH, MIN(parameter_length, actual_length), parameter_length );
switch (isup_standard){
- case ITU_STANDARD:
- dissect_isup_cause_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
- case ANSI_STANDARD:
- dissect_ansi_isup_cause_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
- break;
+ case ITU_STANDARD:
+ dissect_isup_cause_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
+ case ANSI_STANDARD:
+ dissect_ansi_isup_cause_indicators_parameter(parameter_tvb, parameter_tree, parameter_item);
+ break;
}
offset += PARAMETER_POINTER_LENGTH;
@@ -6594,7 +6715,7 @@ dissect_isup_message(tvbuff_t *message_tvb, packet_info *pinfo, proto_tree *isup
gint offset, bufferlength;
guint8 message_type, opt_parameter_pointer;
gint opt_part_possible = FALSE; /* default setting - for message types allowing optional
- params explicitely set to TRUE in case statement */
+ params explicitely set to TRUE in case statement */
tap_calling_number = NULL;
offset = 0;
@@ -6602,12 +6723,16 @@ dissect_isup_message(tvbuff_t *message_tvb, packet_info *pinfo, proto_tree *isup
message_type = tvb_get_guint8(message_tvb,0);
switch (isup_standard){
- case ITU_STANDARD:
- proto_tree_add_uint_format(isup_tree, hf_isup_message_type, message_tvb, 0, MESSAGE_TYPE_LENGTH, message_type, "Message type: %s (%u)", val_to_str(message_type, isup_message_type_value, "reserved"), message_type);
- break;
- case ANSI_STANDARD:
- proto_tree_add_uint_format(isup_tree, hf_isup_message_type, message_tvb, 0, MESSAGE_TYPE_LENGTH, message_type, "Message type: %s (%u)", val_to_str(message_type, ansi_isup_message_type_value, "reserved"), message_type);
- break;
+ case ITU_STANDARD:
+ proto_tree_add_uint_format(isup_tree, hf_isup_message_type, message_tvb, 0, MESSAGE_TYPE_LENGTH, message_type,
+ "Message type: %s (%u)",
+ val_to_str_ext_const(message_type, &isup_message_type_value_ext, "reserved"),
+ message_type);
+ break;
+ case ANSI_STANDARD:
+ proto_tree_add_uint_format(isup_tree, hf_isup_message_type, message_tvb, 0, MESSAGE_TYPE_LENGTH, message_type, "Message type: %s (%u)",
+ val_to_str_ext_const(message_type, &ansi_isup_message_type_value_ext, "reserved"), message_type);
+ break;
}
offset += MESSAGE_TYPE_LENGTH;
@@ -6618,414 +6743,422 @@ dissect_isup_message(tvbuff_t *message_tvb, packet_info *pinfo, proto_tree *isup
parameter_tvb = tvb_new_subset_remaining(message_tvb, offset);
/* distinguish between message types:*/
- switch (isup_standard){
- case ITU_STANDARD:
- switch (message_type) {
- case MESSAGE_TYPE_INITIAL_ADDR:
- offset += dissect_isup_initial_address_message(parameter_tvb, isup_tree);
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_SUBSEQ_ADDR:
- offset += dissect_isup_subsequent_address_message(parameter_tvb, isup_tree);
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_INFO_REQ:
- offset += dissect_isup_information_request_message(parameter_tvb, isup_tree);
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_INFO:
- offset += dissect_isup_information_message(parameter_tvb, isup_tree);
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_CONTINUITY:
- offset += dissect_isup_continuity_message(parameter_tvb, isup_tree);
- break;
- case MESSAGE_TYPE_ADDR_CMPL:
- offset += dissect_isup_address_complete_message(parameter_tvb, isup_tree);
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_CONNECT:
- offset += dissect_isup_connect_message(parameter_tvb, isup_tree);
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_FORW_TRANS:
- /* no dissector necessary since no mandatory parameters included */
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_ANSWER:
- /* no dissector necessary since no mandatory parameters included */
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_RELEASE:
- offset += dissect_isup_release_message(parameter_tvb, isup_tree);
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_SUSPEND:
- offset += dissect_isup_suspend_resume_message(parameter_tvb, isup_tree);
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_RESUME:
- offset += dissect_isup_suspend_resume_message(parameter_tvb, isup_tree);
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_REL_CMPL:
- /* no dissector necessary since no mandatory parameters included */
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_CONT_CHECK_REQ:
- /* no dissector necessary since no mandatory parameters included */
- break;
- case MESSAGE_TYPE_RESET_CIRCUIT:
- /* no dissector necessary since no mandatory parameters included */
- break;
- case MESSAGE_TYPE_BLOCKING:
- /* no dissector necessary since no mandatory parameters included */
- break;
- case MESSAGE_TYPE_UNBLOCKING:
- /* no dissector necessary since no mandatory parameters included */
- break;
- case MESSAGE_TYPE_BLOCK_ACK:
- /* no dissector necessary since no mandatory parameters included */
- break;
- case MESSAGE_TYPE_UNBLOCK_ACK:
- /* no dissector necessary since no mandatory parameters included */
- break;
- case MESSAGE_TYPE_CIRC_GRP_RST:
- offset += dissect_isup_circuit_group_reset_query_message(parameter_tvb, isup_tree);
- break;
- case MESSAGE_TYPE_CIRC_GRP_BLCK:
- offset += dissect_isup_circuit_group_blocking_messages(parameter_tvb, isup_tree);
- break;
- case MESSAGE_TYPE_CIRC_GRP_UNBL:
- offset += dissect_isup_circuit_group_blocking_messages(parameter_tvb, isup_tree);
- break;
- case MESSAGE_TYPE_CIRC_GRP_BL_ACK:
- offset += dissect_isup_circuit_group_blocking_messages(parameter_tvb, isup_tree);
- break;
- case MESSAGE_TYPE_CIRC_GRP_UNBL_ACK:
- offset += dissect_isup_circuit_group_blocking_messages(parameter_tvb, isup_tree);
- break;
- case MESSAGE_TYPE_FACILITY_REQ:
- offset += dissect_isup_facility_request_accepted_message(parameter_tvb, isup_tree);
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_FACILITY_ACC:
- offset += dissect_isup_facility_request_accepted_message(parameter_tvb, isup_tree);
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_FACILITY_REJ:
- offset += dissect_isup_facility_reject_message(parameter_tvb, isup_tree);
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_LOOP_BACK_ACK:
- /* no dissector necessary since no mandatory parameters included */
- break;
- case MESSAGE_TYPE_PASS_ALONG:
- /* call dissect_isup_message recursively */
- { guint8 pa_message_type;
- pa_message_type = tvb_get_guint8(parameter_tvb, 0);
- pass_along_item = proto_tree_add_text(isup_tree, parameter_tvb, offset, -1, "Pass-along: %s Message (%u)", val_to_str(pa_message_type, isup_message_type_value_acro, "reserved"), pa_message_type);
- pass_along_tree = proto_item_add_subtree(pass_along_item, ett_isup_pass_along_message);
- dissect_isup_message(parameter_tvb, pinfo, pass_along_tree);
- break;
- }
- case MESSAGE_TYPE_CIRC_GRP_RST_ACK:
- offset += dissect_isup_circuit_group_reset_acknowledgement_message(parameter_tvb, isup_tree);
- break;
- case MESSAGE_TYPE_CIRC_GRP_QRY:
- offset += dissect_isup_circuit_group_reset_query_message(parameter_tvb, isup_tree);
- break;
- case MESSAGE_TYPE_CIRC_GRP_QRY_RSP:
- offset += dissect_isup_circuit_group_query_response_message(parameter_tvb, isup_tree);
- break;
- case MESSAGE_TYPE_CALL_PROGRSS:
- offset += dissect_isup_call_progress_message(parameter_tvb, isup_tree);
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_USER2USER_INFO:
- offset += dissect_isup_user_to_user_information_message(parameter_tvb, pinfo, isup_tree);
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_UNEQUIPPED_CIC:
- /* no dissector necessary since no mandatory parameters included */
- break;
- case MESSAGE_TYPE_CONFUSION:
- offset += dissect_isup_confusion_message(parameter_tvb, isup_tree);
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_OVERLOAD:
- /* no dissector necessary since no mandatory parameters included */
- break;
- case MESSAGE_TYPE_CHARGE_INFO:
- /* do nothing since format is a national matter */
- bufferlength = tvb_length_remaining(message_tvb, offset);
- if (bufferlength != 0)
- proto_tree_add_text(isup_tree, parameter_tvb, 0, bufferlength, "Format is a national matter");
- break;
- case MESSAGE_TYPE_NETW_RESRC_MGMT:
- /* no dissector necessary since no mandatory parameters included */
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_FACILITY:
- /* no dissector necessary since no mandatory parameters included */
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_USER_PART_TEST:
- /* no dissector necessary since no mandatory parameters included */
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_USER_PART_AVAIL:
- /* no dissector necessary since no mandatory parameters included */
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_IDENT_REQ:
- /* no dissector necessary since no mandatory parameters included */
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_IDENT_RSP:
- /* no dissector necessary since no mandatory parameters included */
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_SEGMENTATION:
- /* no dissector necessary since no mandatory parameters included */
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_LOOP_PREVENTION:
- /* no dissector necessary since no mandatory parameters included */
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_APPLICATION_TRANS:
- /* no dissector necessary since no mandatory parameters included */
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_PRE_RELEASE_INFO:
- /* no dissector necessary since no mandatory parameters included */
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_SUBSEQUENT_DIR_NUM:
- /* do nothing since format is a national matter */
- bufferlength = tvb_length_remaining(message_tvb, offset);
- if (bufferlength != 0)
- proto_tree_add_text(isup_tree, parameter_tvb, 0, bufferlength, "Format is a national matter");
- break;
- default:
- bufferlength = tvb_length_remaining(message_tvb, offset);
- if (bufferlength != 0)
- proto_tree_add_text(isup_tree, parameter_tvb, 0, bufferlength, "Unknown Message type (possibly reserved/used in former ISUP version)");
- break;
- }
- break;
- case ANSI_STANDARD:
- /* TODO if neccessary make new "dissect_ansi_isup_xxx() routines or add branches in the current ones.
- */
- switch (message_type) {
- case MESSAGE_TYPE_INITIAL_ADDR:
- offset += dissect_isup_initial_address_message(parameter_tvb, isup_tree);
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_SUBSEQ_ADDR:
- offset += dissect_isup_subsequent_address_message(parameter_tvb, isup_tree);
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_INFO_REQ:
- offset += dissect_isup_information_request_message(parameter_tvb, isup_tree);
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_INFO:
- offset += dissect_isup_information_message(parameter_tvb, isup_tree);
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_CONTINUITY:
- offset += dissect_isup_continuity_message(parameter_tvb, isup_tree);
- break;
- case MESSAGE_TYPE_ADDR_CMPL:
- offset += dissect_isup_address_complete_message(parameter_tvb, isup_tree);
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_CONNECT:
- offset += dissect_isup_connect_message(parameter_tvb, isup_tree);
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_FORW_TRANS:
- /* no dissector necessary since no mandatory parameters included */
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_ANSWER:
- /* no dissector necessary since no mandatory parameters included */
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_RELEASE:
- offset += dissect_isup_release_message(parameter_tvb, isup_tree);
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_SUSPEND:
- offset += dissect_isup_suspend_resume_message(parameter_tvb, isup_tree);
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_RESUME:
- offset += dissect_isup_suspend_resume_message(parameter_tvb, isup_tree);
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_REL_CMPL:
- /* no dissector necessary since no mandatory parameters included */
- break;
- case MESSAGE_TYPE_CONT_CHECK_REQ:
- /* no dissector necessary since no mandatory parameters included */
- break;
- case MESSAGE_TYPE_RESET_CIRCUIT:
- /* no dissector necessary since no mandatory parameters included */
- break;
- case MESSAGE_TYPE_BLOCKING:
- /* no dissector necessary since no mandatory parameters included */
- break;
- case MESSAGE_TYPE_UNBLOCKING:
- /* no dissector necessary since no mandatory parameters included */
- break;
- case MESSAGE_TYPE_BLOCK_ACK:
- /* no dissector necessary since no mandatory parameters included */
- break;
- case MESSAGE_TYPE_UNBLOCK_ACK:
- /* no dissector necessary since no mandatory parameters included */
- break;
- case MESSAGE_TYPE_CIRC_GRP_RST:
- offset += dissect_isup_circuit_group_reset_query_message(parameter_tvb, isup_tree);
- break;
- case MESSAGE_TYPE_CIRC_GRP_BLCK:
- offset += dissect_isup_circuit_group_blocking_messages(parameter_tvb, isup_tree);
- break;
- case MESSAGE_TYPE_CIRC_GRP_UNBL:
- offset += dissect_isup_circuit_group_blocking_messages(parameter_tvb, isup_tree);
- break;
- case MESSAGE_TYPE_CIRC_GRP_BL_ACK:
- offset += dissect_isup_circuit_group_blocking_messages(parameter_tvb, isup_tree);
- break;
- case MESSAGE_TYPE_CIRC_GRP_UNBL_ACK:
- offset += dissect_isup_circuit_group_blocking_messages(parameter_tvb, isup_tree);
- break;
- case MESSAGE_TYPE_FACILITY_REQ:
- offset += dissect_isup_facility_request_accepted_message(parameter_tvb, isup_tree);
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_FACILITY_ACC:
- offset += dissect_isup_facility_request_accepted_message(parameter_tvb, isup_tree);
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_FACILITY_REJ:
- offset += dissect_isup_facility_reject_message(parameter_tvb, isup_tree);
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_LOOP_BACK_ACK:
- /* no dissector necessary since no mandatory parameters included */
- break;
- case MESSAGE_TYPE_PASS_ALONG:
- /* call dissect_isup_message recursively */
- { guint8 pa_message_type;
- pa_message_type = tvb_get_guint8(parameter_tvb, 0);
- pass_along_item = proto_tree_add_text(isup_tree, parameter_tvb, offset, -1, "Pass-along: %s Message (%u)", val_to_str(pa_message_type, isup_message_type_value_acro, "reserved"), pa_message_type);
- pass_along_tree = proto_item_add_subtree(pass_along_item, ett_isup_pass_along_message);
- dissect_isup_message(parameter_tvb, pinfo, pass_along_tree);
- break;
- }
- case MESSAGE_TYPE_CIRC_GRP_RST_ACK:
- offset += dissect_isup_circuit_group_reset_acknowledgement_message(parameter_tvb, isup_tree);
- break;
- case MESSAGE_TYPE_CIRC_GRP_QRY:
- offset += dissect_isup_circuit_group_reset_query_message(parameter_tvb, isup_tree);
- break;
- case MESSAGE_TYPE_CIRC_GRP_QRY_RSP:
- offset += dissect_isup_circuit_group_query_response_message(parameter_tvb, isup_tree);
- break;
- case MESSAGE_TYPE_CALL_PROGRSS:
- offset += dissect_isup_call_progress_message(parameter_tvb, isup_tree);
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_USER2USER_INFO:
- offset += dissect_isup_user_to_user_information_message(parameter_tvb, pinfo, isup_tree);
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_UNEQUIPPED_CIC:
- /* no dissector necessary since no mandatory parameters included */
- break;
- case MESSAGE_TYPE_CONFUSION:
- offset += dissect_isup_confusion_message(parameter_tvb, isup_tree);
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_OVERLOAD:
- /* no dissector necessary since no mandatory parameters included */
- break;
- case MESSAGE_TYPE_CHARGE_INFO:
- /* do nothing since format is a national matter */
- bufferlength = tvb_length_remaining(message_tvb, offset);
- if (bufferlength != 0)
- proto_tree_add_text(isup_tree, parameter_tvb, 0, bufferlength, "Format is a national matter");
- break;
- case MESSAGE_TYPE_NETW_RESRC_MGMT:
- /* no dissector necessary since no mandatory parameters included */
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_FACILITY:
- /* no dissector necessary since no mandatory parameters included */
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_USER_PART_TEST:
- /* no dissector necessary since no mandatory parameters included */
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_USER_PART_AVAIL:
- /* no dissector necessary since no mandatory parameters included */
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_IDENT_REQ:
- /* no dissector necessary since no mandatory parameters included */
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_IDENT_RSP:
- /* no dissector necessary since no mandatory parameters included */
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_SEGMENTATION:
- /* no dissector necessary since no mandatory parameters included */
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_LOOP_PREVENTION:
- /* no dissector necessary since no mandatory parameters included */
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_APPLICATION_TRANS:
- /* no dissector necessary since no mandatory parameters included */
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_PRE_RELEASE_INFO:
- /* no dissector necessary since no mandatory parameters included */
- opt_part_possible = TRUE;
- break;
- case MESSAGE_TYPE_SUBSEQUENT_DIR_NUM:
- /* do nothing since format is a national matter */
- bufferlength = tvb_length_remaining(message_tvb, offset);
- if (bufferlength != 0)
- proto_tree_add_text(isup_tree, parameter_tvb, 0, bufferlength, "Format is a national matter");
- break;
- case ANSI_ISUP_MESSAGE_TYPE_CIRCUIT_RES_ACK:
- /* no dissector necessary since no mandatory parameters included */
- break;
- case ANSI_ISUP_MESSAGE_TYPE_CIRCUIT_RES:
- offset += dissect_ansi_isup_circuit_reservation_message( parameter_tvb, isup_tree );
- break;
- case ANSI_ISUP_MESSAGE_TYPE_CCT_VAL_TEST_RSP:
- opt_part_possible = TRUE;
- offset += dissect_ansi_isup_circuit_validation_test_resp_message( parameter_tvb, isup_tree );
- break;
- case ANSI_ISUP_MESSAGE_TYPE_CCT_VAL_TEST:
- /* no dissector necessary since no mandatory parameters included */
- break;
- default:
- bufferlength = tvb_length_remaining(message_tvb, offset);
- if (bufferlength != 0)
- proto_tree_add_text(isup_tree, parameter_tvb, 0, bufferlength, "Unknown Message type (possibly reserved/used in former ISUP version)");
- break;
- }
- break;
- }
+ switch (isup_standard){
+ case ITU_STANDARD:
+ switch (message_type) {
+ case MESSAGE_TYPE_INITIAL_ADDR:
+ offset += dissect_isup_initial_address_message(parameter_tvb, isup_tree);
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_SUBSEQ_ADDR:
+ offset += dissect_isup_subsequent_address_message(parameter_tvb, isup_tree);
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_INFO_REQ:
+ offset += dissect_isup_information_request_message(parameter_tvb, isup_tree);
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_INFO:
+ offset += dissect_isup_information_message(parameter_tvb, isup_tree);
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_CONTINUITY:
+ offset += dissect_isup_continuity_message(parameter_tvb, isup_tree);
+ break;
+ case MESSAGE_TYPE_ADDR_CMPL:
+ offset += dissect_isup_address_complete_message(parameter_tvb, isup_tree);
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_CONNECT:
+ offset += dissect_isup_connect_message(parameter_tvb, isup_tree);
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_FORW_TRANS:
+ /* no dissector necessary since no mandatory parameters included */
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_ANSWER:
+ /* no dissector necessary since no mandatory parameters included */
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_RELEASE:
+ offset += dissect_isup_release_message(parameter_tvb, isup_tree);
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_SUSPEND:
+ offset += dissect_isup_suspend_resume_message(parameter_tvb, isup_tree);
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_RESUME:
+ offset += dissect_isup_suspend_resume_message(parameter_tvb, isup_tree);
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_REL_CMPL:
+ /* no dissector necessary since no mandatory parameters included */
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_CONT_CHECK_REQ:
+ /* no dissector necessary since no mandatory parameters included */
+ break;
+ case MESSAGE_TYPE_RESET_CIRCUIT:
+ /* no dissector necessary since no mandatory parameters included */
+ break;
+ case MESSAGE_TYPE_BLOCKING:
+ /* no dissector necessary since no mandatory parameters included */
+ break;
+ case MESSAGE_TYPE_UNBLOCKING:
+ /* no dissector necessary since no mandatory parameters included */
+ break;
+ case MESSAGE_TYPE_BLOCK_ACK:
+ /* no dissector necessary since no mandatory parameters included */
+ break;
+ case MESSAGE_TYPE_UNBLOCK_ACK:
+ /* no dissector necessary since no mandatory parameters included */
+ break;
+ case MESSAGE_TYPE_CIRC_GRP_RST:
+ offset += dissect_isup_circuit_group_reset_query_message(parameter_tvb, isup_tree);
+ break;
+ case MESSAGE_TYPE_CIRC_GRP_BLCK:
+ offset += dissect_isup_circuit_group_blocking_messages(parameter_tvb, isup_tree);
+ break;
+ case MESSAGE_TYPE_CIRC_GRP_UNBL:
+ offset += dissect_isup_circuit_group_blocking_messages(parameter_tvb, isup_tree);
+ break;
+ case MESSAGE_TYPE_CIRC_GRP_BL_ACK:
+ offset += dissect_isup_circuit_group_blocking_messages(parameter_tvb, isup_tree);
+ break;
+ case MESSAGE_TYPE_CIRC_GRP_UNBL_ACK:
+ offset += dissect_isup_circuit_group_blocking_messages(parameter_tvb, isup_tree);
+ break;
+ case MESSAGE_TYPE_FACILITY_REQ:
+ offset += dissect_isup_facility_request_accepted_message(parameter_tvb, isup_tree);
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_FACILITY_ACC:
+ offset += dissect_isup_facility_request_accepted_message(parameter_tvb, isup_tree);
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_FACILITY_REJ:
+ offset += dissect_isup_facility_reject_message(parameter_tvb, isup_tree);
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_LOOP_BACK_ACK:
+ /* no dissector necessary since no mandatory parameters included */
+ break;
+ case MESSAGE_TYPE_PASS_ALONG:
+ /* call dissect_isup_message recursively */
+ {
+ guint8 pa_message_type;
+ pa_message_type = tvb_get_guint8(parameter_tvb, 0);
+ pass_along_item = proto_tree_add_text(isup_tree, parameter_tvb, offset, -1,
+ "Pass-along: %s Message (%u)",
+ val_to_str_ext_const(pa_message_type, &isup_message_type_value_acro_ext, "reserved"),
+ pa_message_type);
+ pass_along_tree = proto_item_add_subtree(pass_along_item, ett_isup_pass_along_message);
+ dissect_isup_message(parameter_tvb, pinfo, pass_along_tree);
+ break;
+ }
+ case MESSAGE_TYPE_CIRC_GRP_RST_ACK:
+ offset += dissect_isup_circuit_group_reset_acknowledgement_message(parameter_tvb, isup_tree);
+ break;
+ case MESSAGE_TYPE_CIRC_GRP_QRY:
+ offset += dissect_isup_circuit_group_reset_query_message(parameter_tvb, isup_tree);
+ break;
+ case MESSAGE_TYPE_CIRC_GRP_QRY_RSP:
+ offset += dissect_isup_circuit_group_query_response_message(parameter_tvb, isup_tree);
+ break;
+ case MESSAGE_TYPE_CALL_PROGRSS:
+ offset += dissect_isup_call_progress_message(parameter_tvb, isup_tree);
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_USER2USER_INFO:
+ offset += dissect_isup_user_to_user_information_message(parameter_tvb, pinfo, isup_tree);
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_UNEQUIPPED_CIC:
+ /* no dissector necessary since no mandatory parameters included */
+ break;
+ case MESSAGE_TYPE_CONFUSION:
+ offset += dissect_isup_confusion_message(parameter_tvb, isup_tree);
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_OVERLOAD:
+ /* no dissector necessary since no mandatory parameters included */
+ break;
+ case MESSAGE_TYPE_CHARGE_INFO:
+ /* do nothing since format is a national matter */
+ bufferlength = tvb_length_remaining(message_tvb, offset);
+ if (bufferlength != 0)
+ proto_tree_add_text(isup_tree, parameter_tvb, 0, bufferlength, "Format is a national matter");
+ break;
+ case MESSAGE_TYPE_NETW_RESRC_MGMT:
+ /* no dissector necessary since no mandatory parameters included */
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_FACILITY:
+ /* no dissector necessary since no mandatory parameters included */
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_USER_PART_TEST:
+ /* no dissector necessary since no mandatory parameters included */
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_USER_PART_AVAIL:
+ /* no dissector necessary since no mandatory parameters included */
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_IDENT_REQ:
+ /* no dissector necessary since no mandatory parameters included */
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_IDENT_RSP:
+ /* no dissector necessary since no mandatory parameters included */
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_SEGMENTATION:
+ /* no dissector necessary since no mandatory parameters included */
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_LOOP_PREVENTION:
+ /* no dissector necessary since no mandatory parameters included */
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_APPLICATION_TRANS:
+ /* no dissector necessary since no mandatory parameters included */
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_PRE_RELEASE_INFO:
+ /* no dissector necessary since no mandatory parameters included */
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_SUBSEQUENT_DIR_NUM:
+ /* do nothing since format is a national matter */
+ bufferlength = tvb_length_remaining(message_tvb, offset);
+ if (bufferlength != 0)
+ proto_tree_add_text(isup_tree, parameter_tvb, 0, bufferlength, "Format is a national matter");
+ break;
+ default:
+ bufferlength = tvb_length_remaining(message_tvb, offset);
+ if (bufferlength != 0)
+ proto_tree_add_text(isup_tree, parameter_tvb, 0, bufferlength, "Unknown Message type (possibly reserved/used in former ISUP version)");
+ break;
+ }
+ break;
+ case ANSI_STANDARD:
+ /* TODO if neccessary make new "dissect_ansi_isup_xxx() routines or add branches in the current ones.
+ */
+ switch (message_type) {
+ case MESSAGE_TYPE_INITIAL_ADDR:
+ offset += dissect_isup_initial_address_message(parameter_tvb, isup_tree);
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_SUBSEQ_ADDR:
+ offset += dissect_isup_subsequent_address_message(parameter_tvb, isup_tree);
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_INFO_REQ:
+ offset += dissect_isup_information_request_message(parameter_tvb, isup_tree);
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_INFO:
+ offset += dissect_isup_information_message(parameter_tvb, isup_tree);
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_CONTINUITY:
+ offset += dissect_isup_continuity_message(parameter_tvb, isup_tree);
+ break;
+ case MESSAGE_TYPE_ADDR_CMPL:
+ offset += dissect_isup_address_complete_message(parameter_tvb, isup_tree);
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_CONNECT:
+ offset += dissect_isup_connect_message(parameter_tvb, isup_tree);
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_FORW_TRANS:
+ /* no dissector necessary since no mandatory parameters included */
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_ANSWER:
+ /* no dissector necessary since no mandatory parameters included */
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_RELEASE:
+ offset += dissect_isup_release_message(parameter_tvb, isup_tree);
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_SUSPEND:
+ offset += dissect_isup_suspend_resume_message(parameter_tvb, isup_tree);
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_RESUME:
+ offset += dissect_isup_suspend_resume_message(parameter_tvb, isup_tree);
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_REL_CMPL:
+ /* no dissector necessary since no mandatory parameters included */
+ break;
+ case MESSAGE_TYPE_CONT_CHECK_REQ:
+ /* no dissector necessary since no mandatory parameters included */
+ break;
+ case MESSAGE_TYPE_RESET_CIRCUIT:
+ /* no dissector necessary since no mandatory parameters included */
+ break;
+ case MESSAGE_TYPE_BLOCKING:
+ /* no dissector necessary since no mandatory parameters included */
+ break;
+ case MESSAGE_TYPE_UNBLOCKING:
+ /* no dissector necessary since no mandatory parameters included */
+ break;
+ case MESSAGE_TYPE_BLOCK_ACK:
+ /* no dissector necessary since no mandatory parameters included */
+ break;
+ case MESSAGE_TYPE_UNBLOCK_ACK:
+ /* no dissector necessary since no mandatory parameters included */
+ break;
+ case MESSAGE_TYPE_CIRC_GRP_RST:
+ offset += dissect_isup_circuit_group_reset_query_message(parameter_tvb, isup_tree);
+ break;
+ case MESSAGE_TYPE_CIRC_GRP_BLCK:
+ offset += dissect_isup_circuit_group_blocking_messages(parameter_tvb, isup_tree);
+ break;
+ case MESSAGE_TYPE_CIRC_GRP_UNBL:
+ offset += dissect_isup_circuit_group_blocking_messages(parameter_tvb, isup_tree);
+ break;
+ case MESSAGE_TYPE_CIRC_GRP_BL_ACK:
+ offset += dissect_isup_circuit_group_blocking_messages(parameter_tvb, isup_tree);
+ break;
+ case MESSAGE_TYPE_CIRC_GRP_UNBL_ACK:
+ offset += dissect_isup_circuit_group_blocking_messages(parameter_tvb, isup_tree);
+ break;
+ case MESSAGE_TYPE_FACILITY_REQ:
+ offset += dissect_isup_facility_request_accepted_message(parameter_tvb, isup_tree);
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_FACILITY_ACC:
+ offset += dissect_isup_facility_request_accepted_message(parameter_tvb, isup_tree);
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_FACILITY_REJ:
+ offset += dissect_isup_facility_reject_message(parameter_tvb, isup_tree);
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_LOOP_BACK_ACK:
+ /* no dissector necessary since no mandatory parameters included */
+ break;
+ case MESSAGE_TYPE_PASS_ALONG:
+ /* call dissect_isup_message recursively */
+ {
+ guint8 pa_message_type;
+ pa_message_type = tvb_get_guint8(parameter_tvb, 0);
+ pass_along_item = proto_tree_add_text(isup_tree, parameter_tvb, offset, -1,
+ "Pass-along: %s Message (%u)",
+ val_to_str_ext_const(pa_message_type, &isup_message_type_value_acro_ext, "reserved"),
+ pa_message_type);
+ pass_along_tree = proto_item_add_subtree(pass_along_item, ett_isup_pass_along_message);
+ dissect_isup_message(parameter_tvb, pinfo, pass_along_tree);
+ break;
+ }
+ case MESSAGE_TYPE_CIRC_GRP_RST_ACK:
+ offset += dissect_isup_circuit_group_reset_acknowledgement_message(parameter_tvb, isup_tree);
+ break;
+ case MESSAGE_TYPE_CIRC_GRP_QRY:
+ offset += dissect_isup_circuit_group_reset_query_message(parameter_tvb, isup_tree);
+ break;
+ case MESSAGE_TYPE_CIRC_GRP_QRY_RSP:
+ offset += dissect_isup_circuit_group_query_response_message(parameter_tvb, isup_tree);
+ break;
+ case MESSAGE_TYPE_CALL_PROGRSS:
+ offset += dissect_isup_call_progress_message(parameter_tvb, isup_tree);
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_USER2USER_INFO:
+ offset += dissect_isup_user_to_user_information_message(parameter_tvb, pinfo, isup_tree);
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_UNEQUIPPED_CIC:
+ /* no dissector necessary since no mandatory parameters included */
+ break;
+ case MESSAGE_TYPE_CONFUSION:
+ offset += dissect_isup_confusion_message(parameter_tvb, isup_tree);
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_OVERLOAD:
+ /* no dissector necessary since no mandatory parameters included */
+ break;
+ case MESSAGE_TYPE_CHARGE_INFO:
+ /* do nothing since format is a national matter */
+ bufferlength = tvb_length_remaining(message_tvb, offset);
+ if (bufferlength != 0)
+ proto_tree_add_text(isup_tree, parameter_tvb, 0, bufferlength, "Format is a national matter");
+ break;
+ case MESSAGE_TYPE_NETW_RESRC_MGMT:
+ /* no dissector necessary since no mandatory parameters included */
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_FACILITY:
+ /* no dissector necessary since no mandatory parameters included */
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_USER_PART_TEST:
+ /* no dissector necessary since no mandatory parameters included */
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_USER_PART_AVAIL:
+ /* no dissector necessary since no mandatory parameters included */
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_IDENT_REQ:
+ /* no dissector necessary since no mandatory parameters included */
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_IDENT_RSP:
+ /* no dissector necessary since no mandatory parameters included */
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_SEGMENTATION:
+ /* no dissector necessary since no mandatory parameters included */
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_LOOP_PREVENTION:
+ /* no dissector necessary since no mandatory parameters included */
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_APPLICATION_TRANS:
+ /* no dissector necessary since no mandatory parameters included */
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_PRE_RELEASE_INFO:
+ /* no dissector necessary since no mandatory parameters included */
+ opt_part_possible = TRUE;
+ break;
+ case MESSAGE_TYPE_SUBSEQUENT_DIR_NUM:
+ /* do nothing since format is a national matter */
+ bufferlength = tvb_length_remaining(message_tvb, offset);
+ if (bufferlength != 0)
+ proto_tree_add_text(isup_tree, parameter_tvb, 0, bufferlength, "Format is a national matter");
+ break;
+ case ANSI_ISUP_MESSAGE_TYPE_CIRCUIT_RES_ACK:
+ /* no dissector necessary since no mandatory parameters included */
+ break;
+ case ANSI_ISUP_MESSAGE_TYPE_CIRCUIT_RES:
+ offset += dissect_ansi_isup_circuit_reservation_message( parameter_tvb, isup_tree );
+ break;
+ case ANSI_ISUP_MESSAGE_TYPE_CCT_VAL_TEST_RSP:
+ opt_part_possible = TRUE;
+ offset += dissect_ansi_isup_circuit_validation_test_resp_message( parameter_tvb, isup_tree );
+ break;
+ case ANSI_ISUP_MESSAGE_TYPE_CCT_VAL_TEST:
+ /* no dissector necessary since no mandatory parameters included */
+ break;
+ default:
+ bufferlength = tvb_length_remaining(message_tvb, offset);
+ if (bufferlength != 0)
+ proto_tree_add_text(isup_tree, parameter_tvb, 0, bufferlength, "Unknown Message type (possibly reserved/used in former ISUP version)");
+ break;
+ }
+ break;
+ }
/* extract pointer to start of optional part (if any) */
if (opt_part_possible == TRUE){
@@ -7034,14 +7167,14 @@ dissect_isup_message(tvbuff_t *message_tvb, packet_info *pinfo, proto_tree *isup
proto_tree_add_uint_format(isup_tree, hf_isup_pointer_to_start_of_optional_part, message_tvb, offset, PARAMETER_POINTER_LENGTH, opt_parameter_pointer, "Pointer to start of optional part: %u", opt_parameter_pointer);
offset += opt_parameter_pointer;
optional_parameter_tvb = tvb_new_subset_remaining(message_tvb, offset);
- switch(isup_standard){
- case ITU_STANDARD:
- dissect_isup_optional_parameter(optional_parameter_tvb, pinfo, isup_tree);
- break;
- case ANSI_STANDARD:
- dissect_ansi_isup_optional_parameter(optional_parameter_tvb, pinfo, isup_tree);
- break;
- }
+ switch(isup_standard){
+ case ITU_STANDARD:
+ dissect_isup_optional_parameter(optional_parameter_tvb, pinfo, isup_tree);
+ break;
+ case ANSI_STANDARD:
+ dissect_ansi_isup_optional_parameter(optional_parameter_tvb, pinfo, isup_tree);
+ break;
+ }
}
else
proto_tree_add_uint_format(isup_tree, hf_isup_pointer_to_start_of_optional_part, message_tvb, offset, PARAMETER_POINTER_LENGTH, opt_parameter_pointer, "No optional parameter present (Pointer: %u)", opt_parameter_pointer);
@@ -7062,75 +7195,81 @@ dissect_isup(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
/* Set up structures needed to add the protocol subtree and manage it */
- proto_item *ti;
- proto_tree *isup_tree = NULL;
- tvbuff_t *message_tvb;
- guint16 cic;
- guint8 message_type;
-
- switch(mtp3_standard){
- case ANSI_STANDARD:
- isup_standard = ANSI_STANDARD;
- break;
- default:
- isup_standard = ITU_STANDARD;
- }
+ proto_item *ti;
+ proto_tree *isup_tree = NULL;
+ tvbuff_t *message_tvb;
+ guint16 cic;
+ guint8 message_type;
+
+ switch(mtp3_standard){
+ case ANSI_STANDARD:
+ isup_standard = ANSI_STANDARD;
+ break;
+ default:
+ isup_standard = ITU_STANDARD;
+ }
/* Make entries in Protocol column and Info column on summary display */
- switch (isup_standard){
- case ITU_STANDARD:
- col_set_str(pinfo->cinfo, COL_PROTOCOL, "ISUP(ITU)");
- break;
- case ANSI_STANDARD:
- col_set_str(pinfo->cinfo, COL_PROTOCOL, "ISUP(ANSI)");
- break;
- }
+ switch (isup_standard){
+ case ITU_STANDARD:
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "ISUP(ITU)");
+ break;
+ case ANSI_STANDARD:
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "ISUP(ANSI)");
+ break;
+ }
/* Extract message type field */
- message_type = tvb_get_guint8(tvb, CIC_OFFSET + CIC_LENGTH);
- /* dissect CIC in main dissector since pass-along message type carrying complete IUSP message w/o CIC needs
- recursive message dissector call */
- if (mtp3_standard == ANSI_STANDARD)
- cic = tvb_get_letohs(tvb, CIC_OFFSET) & 0x3FFF; /*since upper 2 bits spare */
- else /* ITU, China, and Japan; yes, J7's CICs are a different size */
- cic = tvb_get_letohs(tvb, CIC_OFFSET) & 0x0FFF; /*since upper 4 bits spare */
-
- pinfo->ctype = CT_ISUP;
- pinfo->circuit_id = cic;
-
- if (isup_show_cic_in_info){
- switch (isup_standard){
- case ITU_STANDARD:
- col_add_fstr(pinfo->cinfo, COL_INFO, "%s (CIC %u) ", val_to_str(message_type, isup_message_type_value_acro, "reserved"), cic);
- break;
- case ANSI_STANDARD:
- col_add_fstr(pinfo->cinfo, COL_INFO, "%s (CIC %u) ", val_to_str(message_type, ansi_isup_message_type_value_acro, "reserved"), cic);
- break;
- }
- }else{
- switch (isup_standard){
- case ITU_STANDARD:
- col_add_fstr(pinfo->cinfo, COL_INFO, "%s ", val_to_str(message_type, isup_message_type_value_acro, "reserved"));
- break;
- case ANSI_STANDARD:
- col_add_fstr(pinfo->cinfo, COL_INFO, "%s ", val_to_str(message_type, ansi_isup_message_type_value_acro, "reserved"));
- break;
- }
- }
-
- /* In the interest of speed, if "tree" is NULL, don't do any work not
- * necessary to generate protocol tree items.
- */
- if (tree) {
- ti = proto_tree_add_item(tree, proto_isup, tvb, 0, -1, FALSE);
- isup_tree = proto_item_add_subtree(ti, ett_isup);
-
-
- proto_tree_add_uint_format(isup_tree, hf_isup_cic, tvb, CIC_OFFSET, CIC_LENGTH, cic, "CIC: %u", cic);
- }
-
- message_tvb = tvb_new_subset_remaining(tvb, CIC_LENGTH);
- dissect_isup_message(message_tvb, pinfo, isup_tree);
+ message_type = tvb_get_guint8(tvb, CIC_OFFSET + CIC_LENGTH);
+ /* dissect CIC in main dissector since pass-along message type carrying complete IUSP message w/o CIC needs
+ recursive message dissector call */
+ if (mtp3_standard == ANSI_STANDARD)
+ cic = tvb_get_letohs(tvb, CIC_OFFSET) & 0x3FFF; /*since upper 2 bits spare */
+ else /* ITU, China, and Japan; yes, J7's CICs are a different size */
+ cic = tvb_get_letohs(tvb, CIC_OFFSET) & 0x0FFF; /*since upper 4 bits spare */
+
+ pinfo->ctype = CT_ISUP;
+ pinfo->circuit_id = cic;
+
+ if (isup_show_cic_in_info){
+ switch (isup_standard){
+ case ITU_STANDARD:
+ col_add_fstr(pinfo->cinfo, COL_INFO,
+ "%s (CIC %u) ",
+ val_to_str_ext_const(message_type, &isup_message_type_value_acro_ext, "reserved"),
+ cic);
+ break;
+ case ANSI_STANDARD:
+ col_add_fstr(pinfo->cinfo, COL_INFO,
+ "%s (CIC %u) ",
+ val_to_str_ext_const(message_type, &ansi_isup_message_type_value_acro_ext, "reserved"),
+ cic);
+ break;
+ }
+ }else{
+ switch (isup_standard){
+ case ITU_STANDARD:
+ col_add_fstr(pinfo->cinfo, COL_INFO, "%s ", val_to_str_ext_const(message_type, &isup_message_type_value_acro_ext, "reserved"));
+ break;
+ case ANSI_STANDARD:
+ col_add_fstr(pinfo->cinfo, COL_INFO, "%s ", val_to_str_ext_const(message_type, &ansi_isup_message_type_value_acro_ext, "reserved"));
+ break;
+ }
+ }
+
+ /* In the interest of speed, if "tree" is NULL, don't do any work not
+ * necessary to generate protocol tree items.
+ */
+ if (tree) {
+ ti = proto_tree_add_item(tree, proto_isup, tvb, 0, -1, FALSE);
+ isup_tree = proto_item_add_subtree(ti, ett_isup);
+
+
+ proto_tree_add_uint_format(isup_tree, hf_isup_cic, tvb, CIC_OFFSET, CIC_LENGTH, cic, "CIC: %u", cic);
+ }
+
+ message_tvb = tvb_new_subset_remaining(tvb, CIC_LENGTH);
+ dissect_isup_message(message_tvb, pinfo, isup_tree);
}
/* ------------------------------------------------------------------ */
@@ -7139,75 +7278,82 @@ dissect_bicc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
/* Set up structures needed to add the protocol subtree and manage it */
- proto_item *ti;
- proto_tree *bicc_tree = NULL;
- tvbuff_t *message_tvb;
- guint32 bicc_cic;
- guint8 message_type;
+ proto_item *ti;
+ proto_tree *bicc_tree = NULL;
+ tvbuff_t *message_tvb;
+ guint32 bicc_cic;
+ guint8 message_type;
- /*circuit_t *circuit;*/
+ /*circuit_t *circuit;*/
/* Make entries in Protocol column and Info column on summary display */
- col_set_str(pinfo->cinfo, COL_PROTOCOL, "BICC");
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "BICC");
/* Extract message type field */
- message_type = tvb_get_guint8(tvb, BICC_CIC_OFFSET + BICC_CIC_LENGTH);
+ message_type = tvb_get_guint8(tvb, BICC_CIC_OFFSET + BICC_CIC_LENGTH);
- bicc_cic = tvb_get_letohl(tvb, BICC_CIC_OFFSET);
+ bicc_cic = tvb_get_letohl(tvb, BICC_CIC_OFFSET);
- pinfo->ctype = CT_BICC;
- pinfo->circuit_id = bicc_cic;
+ pinfo->ctype = CT_BICC;
+ pinfo->circuit_id = bicc_cic;
- if (isup_show_cic_in_info) {
- col_add_fstr(pinfo->cinfo, COL_INFO, "%s (CIC %u) ", val_to_str(message_type, isup_message_type_value_acro, "reserved"), bicc_cic);
- } else {
- col_add_fstr(pinfo->cinfo, COL_INFO, "%s ", val_to_str(message_type, isup_message_type_value_acro, "reserved"));
- }
- /* dissect CIC in main dissector since pass-along message type carrying complete BICC/ISUP message w/o CIC needs
- * recursive message dissector call
- */
- /* In the interest of speed, if "tree" is NULL, don't do any work not
- * necessary to generate protocol tree items.
- */
- if (tree) {
- ti = proto_tree_add_item(tree, proto_bicc, tvb, 0, -1, FALSE);
- bicc_tree = proto_item_add_subtree(ti, ett_bicc);
+ if (isup_show_cic_in_info) {
+ col_add_fstr(pinfo->cinfo, COL_INFO,
+ "%s (CIC %u) ",
+ val_to_str_ext_const(message_type, &isup_message_type_value_acro_ext, "reserved"),
+ bicc_cic);
+ } else {
+ col_add_fstr(pinfo->cinfo, COL_INFO,
+ "%s ",
+ val_to_str_ext_const(message_type, &isup_message_type_value_acro_ext, "reserved"));
+ }
+ /* dissect CIC in main dissector since pass-along message type carrying complete BICC/ISUP message w/o CIC needs
+ * recursive message dissector call
+ */
+ /* In the interest of speed, if "tree" is NULL, don't do any work not
+ * necessary to generate protocol tree items.
+ */
+ if (tree) {
+ ti = proto_tree_add_item(tree, proto_bicc, tvb, 0, -1, FALSE);
+ bicc_tree = proto_item_add_subtree(ti, ett_bicc);
- proto_tree_add_uint_format(bicc_tree, hf_bicc_cic, tvb, BICC_CIC_OFFSET, BICC_CIC_LENGTH, bicc_cic, "CIC: %u", bicc_cic);
- }
+ proto_tree_add_uint_format(bicc_tree, hf_bicc_cic, tvb, BICC_CIC_OFFSET, BICC_CIC_LENGTH, bicc_cic, "CIC: %u", bicc_cic);
+ }
- message_tvb = tvb_new_subset_remaining(tvb, BICC_CIC_LENGTH);
- dissect_isup_message(message_tvb, pinfo, bicc_tree);
+ message_tvb = tvb_new_subset_remaining(tvb, BICC_CIC_LENGTH);
+ dissect_isup_message(message_tvb, pinfo, bicc_tree);
}
static void
dissect_application_isup(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
/* Set up structures needed to add the protocol subtree and manage it */
- proto_item *ti;
- proto_tree *isup_tree = NULL;
- tvbuff_t *message_tvb;
- guint8 message_type;
+ proto_item *ti;
+ proto_tree *isup_tree = NULL;
+ tvbuff_t *message_tvb;
+ guint8 message_type;
/* Make entries in Protocol column and Info column on summary display */
- col_append_str(pinfo->cinfo, COL_PROTOCOL, "/ISUP(ITU)");
+ col_append_str(pinfo->cinfo, COL_PROTOCOL, "/ISUP(ITU)");
/* Extract message type field */
- message_type = tvb_get_guint8(tvb, 0);
- /* application/ISUP has no CIC */
- col_append_sep_fstr(pinfo->cinfo, COL_INFO, ", ", "ISUP:%s", val_to_str(message_type, isup_message_type_value_acro, "reserved"));
+ message_type = tvb_get_guint8(tvb, 0);
+ /* application/ISUP has no CIC */
+ col_append_sep_fstr(pinfo->cinfo, COL_INFO, ", ",
+ "ISUP:%s",
+ val_to_str_ext_const(message_type, &isup_message_type_value_acro_ext, "reserved"));
/* In the interest of speed, if "tree" is NULL, don't do any work not
necessary to generate protocol tree items. */
- if (tree) {
- ti = proto_tree_add_item(tree, proto_isup, tvb, 0, -1, FALSE);
- isup_tree = proto_item_add_subtree(ti, ett_isup);
- }
+ if (tree) {
+ ti = proto_tree_add_item(tree, proto_isup, tvb, 0, -1, FALSE);
+ isup_tree = proto_item_add_subtree(ti, ett_isup);
+ }
- message_tvb = tvb_new_subset_remaining(tvb, 0);
- dissect_isup_message(message_tvb, pinfo, isup_tree);
+ message_tvb = tvb_new_subset_remaining(tvb, 0);
+ dissect_isup_message(message_tvb, pinfo, isup_tree);
}
/* ---------------------------------------------------- stats tree
*/
@@ -7217,31 +7363,31 @@ static int st_node_dir = -1;
static void
msg_stats_tree_init(stats_tree* st)
{
- st_node_msg = stats_tree_create_node(st, "Messages by Type", 0, TRUE);
- st_node_dir = stats_tree_create_node(st, "Messages by Direction", 0, TRUE);
+ st_node_msg = stats_tree_create_node(st, "Messages by Type", 0, TRUE);
+ st_node_dir = stats_tree_create_node(st, "Messages by Direction", 0, TRUE);
}
static int
msg_stats_tree_packet(stats_tree *st, packet_info *pinfo, epan_dissect_t *edt _U_, const void *p )
{
- const gchar* msg = match_strval(((const isup_tap_rec_t*)p)->message_type, isup_message_type_value_acro);
- gchar src[MAX_ADDR_STR_LEN];
- gchar dst[MAX_ADDR_STR_LEN];
- gchar dir[MAX_ADDR_STR_LEN];
- int msg_node;
- int dir_node;
+ const gchar* msg = match_strval_ext(((const isup_tap_rec_t*)p)->message_type, &isup_message_type_value_acro_ext);
+ gchar src[MAX_ADDR_STR_LEN];
+ gchar dst[MAX_ADDR_STR_LEN];
+ gchar dir[MAX_ADDR_STR_LEN];
+ int msg_node;
+ int dir_node;
- address_to_str_buf(&(pinfo->src), src, sizeof src);
- address_to_str_buf(&(pinfo->dst), dst, sizeof dst);
- g_snprintf(dir,sizeof(dir),"%s->%s",src,dst);
+ address_to_str_buf(&(pinfo->src), src, sizeof src);
+ address_to_str_buf(&(pinfo->dst), dst, sizeof dst);
+ g_snprintf(dir,sizeof(dir),"%s->%s",src,dst);
- msg_node = tick_stat_node(st, msg, st_node_msg, TRUE);
- tick_stat_node(st, dir, msg_node, FALSE);
+ msg_node = tick_stat_node(st, msg, st_node_msg, TRUE);
+ tick_stat_node(st, dir, msg_node, FALSE);
- dir_node = tick_stat_node(st, dir, st_node_dir, TRUE);
- tick_stat_node(st, msg, dir_node, FALSE);
+ dir_node = tick_stat_node(st, dir, st_node_dir, TRUE);
+ tick_stat_node(st, msg, dir_node, FALSE);
- return 1;
+ return 1;
}
/*---------------------------------------------------------------------*/
@@ -7250,1011 +7396,1011 @@ void
proto_register_isup(void)
{
/* Setup list of header fields See Section 1.6.1 for details*/
- static hf_register_info hf[] = {
- { &hf_isup_cic,
- { "CIC", "isup.cic",
- FT_UINT16, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
-
- { &hf_isup_message_type,
- { "Message Type", "isup.message_type",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
-
- { &hf_isup_parameter_type,
- { "Parameter Type", "isup.parameter_type",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
-
- { &hf_isup_parameter_length,
- { "Parameter Length", "isup.parameter_length",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
-
- { &hf_isup_mandatory_variable_parameter_pointer,
- { "Pointer to Parameter", "isup.mandatory_variable_parameter_pointer",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
-
- { &hf_isup_pointer_to_start_of_optional_part,
- { "Pointer to optional parameter part", "isup.optional_parameter_part_pointer",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
-
- { &hf_isup_satellite_indicator,
- { "Satellite Indicator", "isup.satellite_indicator",
- FT_UINT8, BASE_HEX, VALS(isup_satellite_ind_value), BA_8BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_continuity_check_indicator,
- { "Continuity Check Indicator", "isup.continuity_check_indicator",
- FT_UINT8, BASE_HEX, VALS(isup_continuity_check_ind_value), DC_8BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_echo_control_device_indicator,
- { "Echo Control Device Indicator", "isup.echo_control_device_indicator",
- FT_BOOLEAN, 8, TFS(&isup_echo_control_device_ind_value),E_8BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_forw_call_natnl_inatnl_call_indicator,
- { "National/international call indicator", "isup.forw_call_natnl_inatnl_call_indicator",
- FT_BOOLEAN, 16, TFS(&isup_natnl_inatnl_call_ind_value),A_16BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_forw_call_end_to_end_method_indicator,
- { "End-to-end method indicator", "isup.forw_call_end_to_end_method_indicator",
- FT_UINT16, BASE_HEX, VALS(isup_end_to_end_method_ind_value), CB_16BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_forw_call_interworking_indicator,
- { "Interworking indicator", "isup.forw_call_interworking_indicator",
- FT_BOOLEAN, 16, TFS(&isup_interworking_ind_value), D_16BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_forw_call_end_to_end_info_indicator,
- { "End-to-end information indicator", "isup.forw_call_end_to_end_information_indicator",
- FT_BOOLEAN, 16, TFS(&isup_end_to_end_info_ind_value), E_16BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_forw_call_isdn_user_part_indicator,
- { "ISDN user part indicator", "isup.forw_call_isdn_user_part_indicator",
- FT_BOOLEAN, 16, TFS(&isup_ISDN_user_part_ind_value), F_16BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_forw_call_preferences_indicator,
- { "ISDN user part preference indicator", "isup.forw_call_preferences_indicator",
- FT_UINT16, BASE_HEX, VALS(isup_preferences_ind_value), HG_16BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_forw_call_isdn_access_indicator,
- { "ISDN access indicator", "isup.forw_call_isdn_access_indicator",
- FT_BOOLEAN, 16, TFS(&isup_ISDN_originating_access_ind_value), I_16BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_forw_call_sccp_method_indicator,
- { "SCCP method indicator", "isup.forw_call_sccp_method_indicator",
- FT_UINT16, BASE_HEX, VALS(isup_SCCP_method_ind_value), KJ_16BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_forw_call_ported_num_trans_indicator,
- { "Ported number translation indicator", "isup.forw_call_ported_num_trans_indicator",
- FT_BOOLEAN, 16, TFS(&isup_ISDN_ported_num_trans_ind_value), M_16BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_forw_call_qor_attempt_indicator,
- { "Query on Release attempt indicator", "isup.forw_call_isdn_access_indicator",
- FT_BOOLEAN, 16, TFS(&isup_ISDN_qor_attempt_ind_value), N_16BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_calling_partys_category,
- { "Calling Party's category", "isup.calling_partys_category",
- FT_UINT8, BASE_HEX, VALS(isup_calling_partys_category_value), 0x0,
- NULL, HFILL }},
-
- { &hf_isup_transmission_medium_requirement,
- { "Transmission medium requirement", "isup.transmission_medium_requirement",
- FT_UINT8, BASE_DEC, VALS(isup_transmission_medium_requirement_value), 0x0,
- NULL, HFILL }},
-
- { &hf_isup_odd_even_indicator,
- { "Odd/even indicator", "isup.isdn_odd_even_indicator",
- FT_BOOLEAN, 8, TFS(&isup_odd_even_ind_value), ISUP_ODD_EVEN_MASK,
- NULL, HFILL }},
-
- { &hf_isup_generic_name_presentation,
- { "Presentation indicator", "isup.isdn_generic_name_presentation",
- FT_UINT8, BASE_DEC, VALS(isup_generic_name_presentation_value), BA_8BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_generic_name_availability,
- { "Availability indicator", "isup.isdn_generic_name_availability",
- FT_BOOLEAN, 8, TFS(&isup_generic_name_availability_value), E_8BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_generic_name_type,
- { "Type indicator", "isup.isdn_generic_name_type",
- FT_UINT8, BASE_DEC, VALS(isup_generic_name_type_value), HGF_8BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_generic_name_ia5,
- { "Generic Name", "isup.isdn_generic_name_ia5",
- FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
-
- { &hf_isup_called_party_nature_of_address_indicator,
- { "Nature of address indicator", "isup.called_party_nature_of_address_indicator",
- FT_UINT8, BASE_DEC, VALS(isup_called_party_nature_of_address_ind_value), ISUP_NATURE_OF_ADDRESS_IND_MASK,
- NULL, HFILL }},
-
- { &hf_isup_calling_party_nature_of_address_indicator,
- { "Nature of address indicator", "isup.calling_party_nature_of_address_indicator",
- FT_UINT8, BASE_DEC, VALS(isup_calling_party_nature_of_address_ind_value), ISUP_NATURE_OF_ADDRESS_IND_MASK,
- NULL, HFILL }},
-
- { &hf_isup_charge_number_nature_of_address_indicator,
- { "Nature of address indicator", "isup.charge_number_nature_of_address_indicator",
- FT_UINT8, BASE_DEC, VALS(isup_charge_number_nature_of_address_ind_value), ISUP_NATURE_OF_ADDRESS_IND_MASK,
- NULL, HFILL }},
-
- { &hf_isup_inn_indicator,
- { "INN indicator", "isup.inn_indicator",
- FT_BOOLEAN, 8, TFS(&isup_INN_ind_value), ISUP_INN_MASK,
- NULL, HFILL }},
-
- { &hf_isup_ni_indicator,
- { "NI indicator", "isup.ni_indicator",
- FT_BOOLEAN, 8, TFS(&isup_NI_ind_value), ISUP_NI_MASK,
- NULL, HFILL }},
-
- { &hf_isup_numbering_plan_indicator,
- { "Numbering plan indicator", "isup.numbering_plan_indicator",
- FT_UINT8, BASE_DEC, VALS(isup_numbering_plan_ind_value), ISUP_NUMBERING_PLAN_IND_MASK,
- NULL, HFILL }},
-
- { &hf_isup_address_presentation_restricted_indicator,
- { "Address presentation restricted indicator", "isup.address_presentation_restricted_indicator",
- FT_UINT8, BASE_DEC, VALS(isup_address_presentation_restricted_ind_value), ISUP_ADDRESS_PRESENTATION_RESTR_IND_MASK,
- NULL, HFILL }},
-
- { &hf_isup_screening_indicator,
- { "Screening indicator", "isup.screening_indicator",
- FT_UINT8, BASE_DEC, VALS(isup_screening_ind_value), ISUP_SCREENING_IND_MASK,
- NULL, HFILL }},
-
- { &hf_isup_screening_indicator_enhanced,
- { "Screening indicator", "isup.screening_indicator_enhanced",
- FT_UINT8, BASE_DEC, VALS(isup_screening_ind_enhanced_value), ISUP_SCREENING_IND_MASK,
- NULL, HFILL }},
-
- { &hf_isup_called_party_odd_address_signal_digit,
- { "Address signal digit", "isup.called_party_odd_address_signal_digit",
- FT_UINT8, BASE_DEC, VALS(isup_called_party_address_digit_value), ISUP_ODD_ADDRESS_SIGNAL_DIGIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_calling_party_odd_address_signal_digit,
- { "Address signal digit", "isup.calling_party_odd_address_signal_digit",
- FT_UINT8, BASE_DEC, VALS(isup_calling_party_address_digit_value), ISUP_ODD_ADDRESS_SIGNAL_DIGIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_called_party_even_address_signal_digit,
- { "Address signal digit", "isup.called_party_even_address_signal_digit",
- FT_UINT8, BASE_DEC, VALS(isup_called_party_address_digit_value), ISUP_EVEN_ADDRESS_SIGNAL_DIGIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_calling_party_even_address_signal_digit,
- { "Address signal digit", "isup.calling_party_even_address_signal_digit",
- FT_UINT8, BASE_DEC, VALS(isup_calling_party_address_digit_value), ISUP_EVEN_ADDRESS_SIGNAL_DIGIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_calling_party_address_request_indicator,
- { "Calling party address request indicator", "isup.calling_party_address_request_indicator",
- FT_BOOLEAN, 16, TFS(&isup_calling_party_address_request_ind_value), A_16BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_info_req_holding_indicator,
- { "Holding indicator", "isup.info_req_holding_indicator",
- FT_BOOLEAN, 16, TFS(&isup_holding_ind_value), B_16BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_calling_partys_category_request_indicator,
- { "Calling party's category request indicator", "isup.calling_partys_category_request_indicator",
- FT_BOOLEAN, 16, TFS(&isup_calling_partys_category_request_ind_value), D_16BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_charge_information_request_indicator,
- { "Charge information request indicator", "isup.charge_information_request_indicator",
- FT_BOOLEAN, 16, TFS(&isup_charge_information_request_ind_value), E_16BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_malicious_call_identification_request_indicator,
- { "Malicious call identification request indicator (ISUP'88)", "isup.malicious_call_ident_request_indicator",
- FT_BOOLEAN, 16, TFS(&isup_malicious_call_identification_request_ind_value), H_16BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_calling_party_address_response_indicator,
- { "Calling party address response indicator", "isup.calling_party_address_response_indicator",
- FT_UINT16, BASE_HEX, VALS(isup_calling_party_address_response_ind_value), BA_16BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_OECD_inf_ind,
- { "OECD information indicator", "isup.OECD_inf_ind_vals",
- FT_UINT8, BASE_HEX, VALS(OECD_inf_ind_vals), BA_8BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_IECD_inf_ind,
- { "IECD information indicator", "isup.IECD_inf_ind_vals",
- FT_UINT8, BASE_HEX, VALS(IECD_inf_ind_vals), DC_8BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_OECD_req_ind,
- { "OECD request indicator", "isup.OECD_req_ind_vals",
- FT_UINT8, BASE_HEX, VALS(OECD_req_ind_vals), FE_8BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_IECD_req_ind,
- { "IECD request indicator", "isup.IECD_req_ind_vals",
- FT_UINT8, BASE_HEX, VALS(IECD_req_ind_vals), HG_8BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_hold_provided_indicator,
- { "Hold provided indicator", "isup.hold_provided_indicator",
- FT_BOOLEAN, 16, TFS(&isup_hold_provided_ind_value), C_16BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_calling_partys_category_response_indicator,
- { "Calling party's category response indicator", "isup.calling_partys_category_response_indicator",
- FT_BOOLEAN, 16, TFS(&isup_calling_partys_category_response_ind_value), F_16BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_charge_information_response_indicator,
- { "Charge information response indicator", "isup.charge_information_response_indicator",
- FT_BOOLEAN, 16, TFS(&isup_charge_information_response_ind_value), G_16BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_solicited_indicator,
- { "Solicited indicator", "isup.solicided_indicator",
- FT_BOOLEAN, 16, TFS(&isup_solicited_information_ind_value), H_16BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_continuity_indicator,
- { "Continuity indicator", "isup.continuity_indicator",
- FT_BOOLEAN, 8, TFS(&isup_continuity_ind_value), A_8BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_backw_call_charge_ind,
- { "Charge indicator", "isup.charge_indicator",
- FT_UINT16, BASE_HEX, VALS(isup_charge_ind_value), BA_16BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_backw_call_called_partys_status_ind,
- { "Called party's status indicator", "isup.called_partys_status_indicator",
- FT_UINT16, BASE_HEX, VALS(isup_called_partys_status_ind_value), DC_16BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_backw_call_called_partys_category_ind,
- { "Called party's category indicator", "isup.called_partys_category_indicator",
- FT_UINT16, BASE_HEX, VALS(isup_called_partys_category_ind_value), FE_16BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_backw_call_end_to_end_method_ind,
- { "End-to-end method indicator", "isup.backw_call_end_to_end_method_indicator",
- FT_UINT16, BASE_HEX, VALS(isup_end_to_end_method_ind_value), HG_16BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_backw_call_interworking_ind,
- { "Interworking indicator", "isup.backw_call_interworking_indicator",
- FT_BOOLEAN, 16, TFS(&isup_interworking_ind_value), I_16BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_backw_call_end_to_end_info_ind,
- { "End-to-end information indicator", "isup.backw_call_end_to_end_information_indicator",
- FT_BOOLEAN, 16, TFS(&isup_end_to_end_info_ind_value), J_16BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_backw_call_isdn_user_part_ind,
- { "ISDN user part indicator", "isup.backw_call_isdn_user_part_indicator",
- FT_BOOLEAN, 16, TFS(&isup_ISDN_user_part_ind_value), K_16BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_backw_call_holding_ind,
- { "Holding indicator", "isup.backw_call_holding_indicator",
- FT_BOOLEAN, 16, TFS(&isup_holding_ind_value), L_16BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_backw_call_isdn_access_ind,
- { "ISDN access indicator", "isup.backw_call_isdn_access_indicator",
- FT_BOOLEAN, 16, TFS(&isup_ISDN_terminating_access_ind_value), M_16BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_backw_call_echo_control_device_ind,
- { "Echo Control Device Indicator", "isup.backw_call_echo_control_device_indicator",
- FT_BOOLEAN, 16, TFS(&isup_echo_control_device_ind_value), N_16BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_backw_call_sccp_method_ind,
- { "SCCP method indicator", "isup.backw_call_sccp_method_indicator",
- FT_UINT16, BASE_HEX, VALS(isup_SCCP_method_ind_value), PO_16BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_cause_indicator,
- { "Cause indicator", "isup.cause_indicator",
- FT_UINT8, BASE_DEC, VALS(q850_cause_code_vals), 0x7f,
- NULL, HFILL }},
-
- { &hf_ansi_isup_cause_indicator,
- { "Cause indicator", "ansi_isup.cause_indicator",
- FT_UINT8, BASE_DEC, VALS(ansi_isup_cause_code_vals), 0x7f,
- NULL, HFILL }},
-
- { &hf_isup_suspend_resume_indicator,
- { "Suspend/Resume indicator", "isup.suspend_resume_indicator",
- FT_BOOLEAN, 8, TFS(&isup_suspend_resume_ind_value), A_8BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_range_indicator,
- { "Range indicator", "isup.range_indicator",
- FT_UINT8, BASE_DEC, NULL , 0x0,
- NULL, HFILL }},
-
- { &hf_isup_cgs_message_type,
- { "Circuit group supervision message type", "isup.cgs_message_type",
- FT_UINT8, BASE_DEC, VALS(isup_cgs_message_type_value), BA_8BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_mtc_blocking_state1,
- { "Maintenance blocking state", "isup.mtc_blocking_state",
- FT_UINT8, BASE_DEC, VALS(isup_mtc_blocking_state_DC00_value), BA_8BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_mtc_blocking_state2,
- { "Maintenance blocking state", "isup.mtc_blocking_state",
- FT_UINT8, BASE_DEC, VALS(isup_mtc_blocking_state_DCnot00_value), BA_8BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_call_proc_state,
- { "Call processing state", "isup.call_processing_state",
- FT_UINT8, BASE_DEC, VALS(isup_call_processing_state_value), DC_8BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_hw_blocking_state,
- { "HW blocking state", "isup.hw_blocking_state",
- FT_UINT8, BASE_DEC, VALS(isup_HW_blocking_state_value), FE_8BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_event_ind,
- { "Event indicator", "isup.event_ind",
- FT_UINT8, BASE_DEC, VALS(isup_event_ind_value), GFEDCBA_8BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_event_presentation_restricted_ind,
- { "Event presentation restricted indicator", "isup.event_presentatiation_restr_ind",
- FT_BOOLEAN, 8, TFS(&isup_event_presentation_restricted_ind_value), H_8BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_cug_call_ind,
- { "Closed user group call indicator", "isup.clg_call_ind",
- FT_UINT8, BASE_DEC, VALS(isup_CUG_call_ind_value), BA_8BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_simple_segmentation_ind,
- { "Simple segmentation indicator", "isup.simple_segmentation_ind",
- FT_BOOLEAN, 8, TFS(&isup_simple_segmentation_ind_value), C_8BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_connected_line_identity_request_ind,
- { "Connected line identity request indicator", "isup.connected_line_identity_request_ind",
- FT_BOOLEAN, 8, TFS(&isup_connected_line_identity_request_ind_value), H_8BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_redirecting_ind,
- { "Redirection indicator", "isup.redirecting_ind",
- FT_UINT16, BASE_DEC, VALS(isup_redirecting_ind_value), CBA_16BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_original_redirection_reason,
- { "Original redirection reason", "isup.original_redirection_reason",
- FT_UINT16, BASE_DEC, VALS(isup_original_redirection_reason_value), HGFE_16BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_redirection_counter,
- { "Redirection counter", "isup.redirection_counter",
- FT_UINT16, BASE_DEC, NULL, KJI_16BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_redirection_reason,
- { "Redirection reason", "isup.redirection_reason",
- FT_UINT16, BASE_DEC, VALS(isup_redirection_reason_value), PONM_16BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_type_of_network_identification,
- { "Type of network identification", "isup.type_of_network_identification",
- FT_UINT8, BASE_DEC, VALS(isup_type_of_network_identification_value), GFE_8BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_network_identification_plan,
- { "Network identification plan", "isup.network_identification_plan",
- FT_UINT8, BASE_DEC, VALS(isup_network_identification_plan_value), DCBA_8BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_map_type,
- { "Map Type", "isup.map_type",
- FT_UINT8, BASE_DEC, VALS(isup_map_type_value), FEDCBA_8BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_automatic_congestion_level,
- { "Automatic congestion level", "isup.automatic_congestion_level",
- FT_UINT8, BASE_DEC, VALS(isup_auto_congestion_level_value), 0x0,
- NULL, HFILL }},
-
- { &hf_isup_inband_information_ind,
- { "In-band information indicator", "isup.inband_information_ind",
- FT_BOOLEAN, 8, TFS(&isup_inband_information_ind_value), A_8BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_call_diversion_may_occur_ind,
- { "Call diversion may occur indicator", "isup.call_diversion_may_occur_ind",
- FT_BOOLEAN, 8, TFS(&isup_call_diversion_may_occur_ind_value), B_8BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_mlpp_user_ind,
- { "MLPP user indicator", "isup.mlpp_user",
- FT_BOOLEAN, 8, TFS(&isup_MLPP_user_ind_value), D_8BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_UUI_type,
- { "User-to-User indicator type", "isup.UUI_type",
- FT_BOOLEAN, 8, TFS(&isup_UUI_type_value), A_8BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_UUI_req_service1,
- { "User-to-User indicator request service 1", "isup.UUI_req_service1",
- FT_UINT8, BASE_DEC, VALS(isup_UUI_request_service_values), CB_8BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_UUI_req_service2,
- { "User-to-User indicator request service 2", "isup.UUI_req_service2",
- FT_UINT8, BASE_DEC, VALS(isup_UUI_request_service_values), ED_8BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_UUI_req_service3,
- { "User-to-User indicator request service 3", "isup.UUI_req_service3",
- FT_UINT8, BASE_DEC, VALS(isup_UUI_request_service_values), GF_8BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_UUI_res_service1,
- { "User-to-User indicator response service 1", "isup.UUI_res_service1",
- FT_UINT8, BASE_DEC, VALS(isup_UUI_response_service_values), CB_8BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_UUI_res_service2,
- { "User-to-User indicator response service 2", "isup.UUI_res_service2",
- FT_UINT8, BASE_DEC, VALS(isup_UUI_response_service_values), ED_8BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_UUI_res_service3,
- { "User-to-User response service 3", "isup.UUI_res_service3",
- FT_UINT8, BASE_DEC, VALS(isup_UUI_response_service_values), GF_8BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_UUI_network_discard_ind,
- { "User-to-User indicator network discard indicator", "isup.UUI_network_discard_ind",
- FT_BOOLEAN, 8, TFS(&isup_UUI_network_discard_ind_value), H_8BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_access_delivery_ind,
- { "Access delivery indicator", "isup.access_delivery_ind",
- FT_BOOLEAN, 8, TFS(&isup_access_delivery_ind_value), A_8BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_transmission_medium_requirement_prime,
- { "Transmission medium requirement prime", "isup.transmission_medium_requirement_prime",
- FT_UINT8, BASE_DEC, VALS(isup_transmission_medium_requirement_prime_value), 0x0,
- NULL, HFILL }},
-
- { &hf_isup_loop_prevention_response_ind,
- { "Response indicator", "isup.loop_prevention_response_ind",
- FT_UINT8, BASE_DEC, VALS(isup_loop_prevention_response_ind_value), CB_8BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_temporary_alternative_routing_ind,
- { "Temporary alternative routing indicator", "isup.temporary_alternative_routing_ind",
- FT_BOOLEAN, 8, TFS(&isup_temporary_alternative_routing_ind_value), A_8BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_extension_ind,
- { "Extension indicator", "isup.extension_ind",
- FT_BOOLEAN, 8, TFS(&isup_extension_ind_value), H_8BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_call_to_be_diverted_ind,
- { "Call to be diverted indicator", "isup.call_to_be_diverted_ind",
- FT_UINT8, BASE_DEC, VALS(isup_call_to_be_diverted_ind_value), BA_8BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_call_to_be_offered_ind,
- { "Call to be offered indicator", "isup.call_to_be_offered_ind",
- FT_UINT8, BASE_DEC, VALS(isup_call_to_be_offered_ind_value), BA_8BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_conference_acceptance_ind,
- { "Conference acceptance indicator", "isup.conference_acceptance_ind",
- FT_UINT8, BASE_DEC, VALS(isup_conference_acceptance_ind_value), BA_8BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_transit_at_intermediate_exchange_ind,
- { "Transit at intermediate exchange indicator", "isup.transit_at_intermediate_exchange_ind",
- FT_BOOLEAN, 8, TFS(&isup_transit_at_intermediate_exchange_ind_value), A_8BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_Release_call_ind,
- { "Release call indicator", "isup.Release_call_ind",
- FT_BOOLEAN, 8, TFS(&isup_Release_call_indicator_value), B_8BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_Send_notification_ind,
- { "Send notification indicator", "isup.Send_notification_ind",
- FT_BOOLEAN, 8, TFS(&isup_Send_notification_ind_value),C_8BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_Discard_message_ind_value,
- { "Discard message indicator","isup.Discard_message_ind_value",
- FT_BOOLEAN, 8, TFS(&isup_Discard_message_ind_value), D_8BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_Discard_parameter_ind,
- { "Discard parameter indicator","isup.Discard_parameter_ind",
- FT_BOOLEAN, 8, TFS(&isup_Discard_parameter_ind_value), E_8BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_Pass_on_not_possible_indicator,
- { "Pass on not possible indicator", "isup_Pass_on_not_possible_ind",
- FT_UINT8, BASE_HEX, VALS(isup_Pass_on_not_possible_indicator_vals),GF_8BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_pass_on_not_possible_indicator2,
- { "Pass on not possible indicator", "isup_Pass_on_not_possible_val",
- FT_BOOLEAN, 8, TFS(&isup_pass_on_not_possible_indicator_value),E_8BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_Broadband_narrowband_interworking_ind,
- { "Broadband narrowband interworking indicator Bits JF", "isup_broadband-narrowband_interworking_ind",
- FT_UINT8, BASE_HEX, VALS(ISUP_Broadband_narrowband_interworking_indicator_vals),BA_8BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_Broadband_narrowband_interworking_ind2,
- { "Broadband narrowband interworking indicator Bits GF", "isup_broadband-narrowband_interworking_ind2",
- FT_UINT8, BASE_HEX, VALS(ISUP_Broadband_narrowband_interworking_indicator_vals),GF_8BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_app_cont_ident,
- { "Application context identifier", "isup.app_context_identifier",
- FT_UINT16, BASE_DEC, VALS(isup_application_transport_parameter_value),GFEDCBA_8BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_app_Release_call_ind,
- { "Release call indicator (RCI)", "isup.app_Release_call_indicator",
- FT_BOOLEAN, 8, TFS(&isup_Release_call_indicator_value), A_8BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_app_Send_notification_ind,
- { "Send notification indicator (SNI)", "isup.app_Send_notification_ind",
- FT_BOOLEAN, 8, TFS(&isup_Send_notification_ind_value), B_8BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_apm_segmentation_ind,
- { "APM segmentation indicator", "isup.apm_segmentation_ind",
- FT_UINT8, BASE_DEC, VALS(isup_APM_segmentation_ind_value), FEDCBA_8BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_apm_si_ind,
- { "Sequence indicator (SI)", "isup.APM_Sequence_ind",
- FT_BOOLEAN, 8, TFS(&isup_Sequence_ind_value), G_8BIT_MASK,
- NULL, HFILL }},
-
- { &hf_isup_orig_addr_len,
- { "Originating Address length", "isup.orig_addr_len",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
-
- { &hf_isup_dest_addr_len,
- { "Destination Address length", "isup.orig_addr_len",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
-
- { &hf_isup_apm_slr,
- { "Segmentation local reference (SLR)", "isup.APM_slr",
- FT_UINT8, BASE_DEC, NULL,GFEDCBA_8BIT_MASK,
- NULL, HFILL }},
- { &hf_isup_cause_location,
- { "Cause location", "isup.cause_location",
- FT_UINT8, BASE_DEC, VALS(q931_cause_location_vals), 0x0f,
- NULL, HFILL }},
-
- { &hf_ansi_isup_coding_standard,
- { "Coding standard", "ansi_isup.coding_standard", FT_UINT8, BASE_HEX,
- VALS(ansi_isup_coding_standard_vals), 0x60,NULL, HFILL }},
-
- { &hf_bat_ase_identifier,
- { "BAT ASE Identifiers", "bicc.bat_ase_identifier",
- FT_UINT8, BASE_HEX, VALS(bat_ase_list_of_Identifiers_vals),0x0,
- NULL, HFILL }},
-
- { &hf_length_indicator,
- { "BAT ASE Element length indicator", "bicc.bat_ase_length_indicator",
- FT_UINT16, BASE_DEC, NULL,0x0,
- NULL, HFILL }},
-
- { &hf_Action_Indicator,
- { "BAT ASE action indicator field", "bicc.bat_ase_bat_ase_action_indicator_field",
- FT_UINT8, BASE_HEX, VALS(bat_ase_action_indicator_field_vals),0x00,
- NULL, HFILL }},
-
- { &hf_Instruction_ind_for_general_action,
- { "BAT ASE Instruction indicator for general action", "bicc.bat_ase_Instruction_ind_for_general_action",
- FT_UINT8, BASE_HEX, VALS(Instruction_indicator_for_general_action_vals),0x03,
- NULL, HFILL }},
-
- { &hf_Send_notification_ind_for_general_action,
- { "Send notification indicator for general action", "bicc.bat_ase_Send_notification_ind_for_general_action",
- FT_BOOLEAN, 8, TFS(&isup_Send_notification_ind_value), 0x04,
- NULL, HFILL }},
-
- { &hf_Instruction_ind_for_pass_on_not_possible,
- { "Instruction ind for pass-on not possible", "bicc.bat_ase_Instruction_ind_for_pass_on_not_possible",
- FT_UINT8, BASE_HEX, VALS(Instruction_indicator_for_pass_on_not_possible_vals),0x30,
- NULL, HFILL }},
-
- { &hf_Send_notification_ind_for_pass_on_not_possible,
- { "Send notification indication for pass-on not possible", "bicc.bat_ase_Send_notification_ind_for_pass_on_not_possible",
- FT_BOOLEAN, 8, TFS(&isup_Send_notification_ind_value), 0x40,
- NULL, HFILL }},
-
- { &hf_BCTP_Version_Indicator,
- { "BCTP Version Indicator", "bicc.bat_ase_BCTP_Version_Indicator",
- FT_UINT8, BASE_DEC, NULL,0x1f,
- NULL, HFILL }},
-
- { &hf_BVEI,
- { "BVEI", "bicc.bat_ase_BCTP_BVEI",
- FT_BOOLEAN, 8, TFS(&BCTP_BVEI_value), 0x40,
- NULL, HFILL }},
-
- { &hf_Tunnelled_Protocol_Indicator,
- { "Tunnelled Protocol Indicator", "bicc.bat_ase_BCTP_Tunnelled_Protocol_Indicator",
- FT_UINT8, BASE_DEC, VALS(BCTP_Tunnelled_Protocol_Indicator_vals),0x3f,
- NULL, HFILL }},
-
- { &hf_TPEI,
- { "TPEI", "bicc.bat_ase_BCTP_tpei",
- FT_BOOLEAN, 8, TFS(&BCTP_TPEI_value), 0x40,
- NULL, HFILL }},
-
- { &hf_bncid,
- { "Backbone Network Connection Identifier (BNCId)", "bat_ase.bncid",
- FT_UINT32, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
-
- { &hf_bat_ase_biwfa,
- { "Interworking Function Address( X.213 NSAP encoded)", "bat_ase_biwfa",
- FT_BYTES, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
-
- { &hf_afi,
- { "X.213 Address Format Information ( AFI )", "x213.afi",
- FT_UINT8, BASE_HEX, VALS(x213_afi_value),0x0,
- NULL, HFILL }},
-
- { &hf_bicc_nsap_dsp,
- { "X.213 Address Format Information ( DSP )", "x213.dsp",
- FT_BYTES, BASE_NONE, NULL,0x0,
- NULL, HFILL }},
- { &hf_characteristics,
- { "Backbone network connection characteristics", "bat_ase.char",
- FT_UINT8, BASE_HEX, VALS(bearer_network_connection_characteristics_vals),0x0,
- NULL, HFILL }},
-
- { &hf_Organization_Identifier,
- { "Organization identifier subfield", "bat_ase.organization_identifier_subfield",
- FT_UINT8, BASE_DEC, VALS(bat_ase_organization_identifier_subfield_vals),0x0,
- NULL, HFILL }},
-
- { &hf_codec_type,
- { "ITU-T codec type subfield", "bat_ase.ITU_T_codec_type_subfield",
- FT_UINT8, BASE_HEX, VALS(ITU_T_codec_type_subfield_vals),0x0,
- NULL, HFILL }},
-
- { &hf_etsi_codec_type,
- { "ETSI codec type subfield", "bat_ase.ETSI_codec_type_subfield",
- FT_UINT8, BASE_HEX, VALS(ETSI_codec_type_subfield_vals),0x0,
- NULL, HFILL }},
-
- { &hf_active_code_set,
- { "Active Code Set", "bat_ase.acs",
- FT_UINT8, BASE_HEX, NULL,0x0,
- NULL, HFILL }},
-
- { &hf_active_code_set_12_2,
- { "12.2 kbps rate", "bat_ase.acs.12_2",
- FT_UINT8, BASE_HEX, NULL,0x80,
- NULL, HFILL }},
-
- { &hf_active_code_set_10_2,
- { "10.2 kbps rate", "bat_ase.acs.10_2",
- FT_UINT8, BASE_HEX, NULL,0x40,
- NULL, HFILL }},
-
- { &hf_active_code_set_7_95,
- { "7.95 kbps rate", "bat_ase.acs.7_95",
- FT_UINT8, BASE_HEX, NULL,0x20,
- NULL, HFILL }},
-
- { &hf_active_code_set_7_40,
- { "7.40 kbps rate", "bat_ase.acs.7_40",
- FT_UINT8, BASE_HEX, NULL,0x10,
- NULL, HFILL }},
-
- { &hf_active_code_set_6_70,
- { "6.70 kbps rate", "bat_ase.acs.6_70",
- FT_UINT8, BASE_HEX, NULL,0x08,
- NULL, HFILL }},
-
- { &hf_active_code_set_5_90,
- { "5.90 kbps rate", "bat_ase.acs.5_90",
- FT_UINT8, BASE_HEX, NULL,0x04,
- NULL, HFILL }},
-
- { &hf_active_code_set_5_15,
- { "5.15 kbps rate", "bat_ase.acs.5_15",
- FT_UINT8, BASE_HEX, NULL,0x02,
- NULL, HFILL }},
-
- { &hf_active_code_set_4_75,
- { "4.75 kbps rate", "bat_ase.acs.4_75",
- FT_UINT8, BASE_HEX, NULL,0x01,
- NULL, HFILL }},
-
- { &hf_supported_code_set,
- { "Supported Code Set", "bat_ase.scs",
- FT_UINT8, BASE_HEX, NULL,0x0,
- NULL, HFILL }},
-
- { &hf_supported_code_set_12_2,
- { "12.2 kbps rate", "bat_ase.scs.12_2",
- FT_UINT8, BASE_HEX, NULL,0x80,
- NULL, HFILL }},
-
- { &hf_supported_code_set_10_2,
- { "10.2 kbps rate", "bat_ase.scs.10_2",
- FT_UINT8, BASE_HEX, NULL,0x40,
- NULL, HFILL }},
-
- { &hf_supported_code_set_7_95,
- { "7.95 kbps rate", "bat_ase.scs.7_95",
- FT_UINT8, BASE_HEX, NULL,0x20,
- NULL, HFILL }},
-
- { &hf_supported_code_set_7_40,
- { "7.40 kbps rate", "bat_ase.scs.7_40",
- FT_UINT8, BASE_HEX, NULL,0x10,
- NULL, HFILL }},
-
- { &hf_supported_code_set_6_70,
- { "6.70 kbps rate", "bat_ase.scs.6_70",
- FT_UINT8, BASE_HEX, NULL,0x08,
- NULL, HFILL }},
-
- { &hf_supported_code_set_5_90,
- { "5.90 kbps rate", "bat_ase.scs.5_90",
- FT_UINT8, BASE_HEX, NULL,0x04,
- NULL, HFILL }},
-
- { &hf_supported_code_set_5_15,
- { "5.15 kbps rate", "bat_ase.scs.5_15",
- FT_UINT8, BASE_HEX, NULL,0x02,
- NULL, HFILL }},
-
- { &hf_supported_code_set_4_75,
- { "4.75 kbps rate", "bat_ase.scs.4_75",
- FT_UINT8, BASE_HEX, NULL,0x01,
- NULL, HFILL }},
-
- { &hf_optimisation_mode,
- { "Optimisation Mode for ACS , OM", "bat_ase.optimisation_mode",
- FT_UINT8, BASE_HEX, VALS(optimisation_mode_vals),0x8,
- NULL, HFILL }},
-
- { &hf_max_codec_modes,
- { "Maximal number of Codec Modes, MACS", "bat_ase.macs",
- FT_UINT8, BASE_DEC, NULL,0x07,
- NULL, HFILL }},
-
-
- { &hf_bearer_control_tunneling,
- { "Bearer control tunneling", "bat_ase.bearer_control_tunneling",
- FT_BOOLEAN, 8, TFS(&Bearer_Control_Tunnelling_ind_value),0x01,
- NULL, HFILL }},
-
- { &hf_BAT_ASE_Comp_Report_Reason,
- { "Compatibility report reason", "bat_ase.Comp_Report_Reason",
- FT_UINT8, BASE_HEX, VALS(BAT_ASE_Report_Reason_vals),0x0,
- NULL, HFILL }},
-
-
- { &hf_BAT_ASE_Comp_Report_ident,
- { "Bearer control tunneling", "bat_ase.bearer_control_tunneling",
- FT_UINT8, BASE_HEX, VALS(bat_ase_list_of_Identifiers_vals),0x0,
- NULL, HFILL }},
-
- { &hf_BAT_ASE_Comp_Report_diagnostic,
- { "Diagnostics", "bat_ase.Comp_Report_diagnostic",
- FT_UINT16, BASE_HEX, NULL,0x0,
- NULL, HFILL }},
-
- { &hf_Local_BCU_ID,
- { "Local BCU ID", "bat_ase.Local_BCU_ID",
- FT_UINT32, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
-
- { &hf_late_cut_trough_cap_ind,
- { "Late Cut-through capability indicator", "bat_ase.late_cut_trough_cap_ind",
- FT_BOOLEAN, 8, TFS(&late_cut_trough_cap_ind_value),0x01,
- NULL, HFILL }},
-
- { &hf_bat_ase_signal,
- { "Q.765.5 - Signal Type", "bat_ase.signal_type",
- FT_UINT8, BASE_HEX, VALS(BAt_ASE_Signal_Type_vals),0x0,
- NULL, HFILL }},
-
- { &hf_bat_ase_duration,
- { "Duration in ms", "bat_ase.signal_type",
- FT_UINT16, BASE_DEC, NULL,0x0,
- NULL, HFILL }},
-
- { &hf_bat_ase_bearer_redir_ind,
- { "Redirection Indicator", "bat_ase.bearer_redir_ind",
- FT_UINT8, BASE_HEX, VALS(Bearer_Redirection_Indicator_vals),0x0,
- NULL, HFILL }},
-
- { &hf_nsap_ipv4_addr,
- { "IWFA IPv4 Address", "nsap.ipv4_addr",
- FT_IPv4, BASE_NONE, NULL, 0x0,
- "IPv4 address", HFILL }},
-
- { &hf_nsap_ipv6_addr,
- { "IWFA IPv6 Address", "nsap.ipv6_addr",
- FT_IPv6, BASE_NONE, NULL, 0x0,
- "IPv6 address", HFILL}},
-
- { &hf_iana_icp,
- { "IANA ICP", "nsap.iana_icp",
- FT_UINT16, BASE_HEX, VALS(iana_icp_values),0x0,
- NULL, HFILL }},
-
- { &hf_isup_called,
- { "ISUP Called Number", "isup.called",
- FT_STRING, BASE_NONE, NULL,0x0,
- NULL, HFILL }},
-
- { &hf_isup_calling,
- { "ISUP Calling Number", "isup.calling",
- FT_STRING, BASE_NONE, NULL,0x0,
- NULL, HFILL }},
-
- { &hf_isup_redirecting,
- { "ISUP Redirecting Number", "isup.redirecting",
- FT_STRING, BASE_NONE, NULL,0x0,
- NULL, HFILL }},
- {&hf_isup_apm_msg_fragments,
- {"Message fragments", "isup_apm.msg.fragments",
- FT_NONE, BASE_NONE, NULL, 0x00, NULL, HFILL }
- },
- {&hf_isup_apm_msg_fragment,
- {"Message fragment", "isup_apm.msg.fragment",
- FT_FRAMENUM, BASE_NONE, NULL, 0x00, NULL, HFILL }
- },
- {&hf_isup_apm_msg_fragment_overlap,
- {"Message fragment overlap", "isup_apm.msg.fragment.overlap",
- FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL }
- },
- {&hf_isup_apm_msg_fragment_overlap_conflicts,
- {"Message fragment overlapping with conflicting data","isup_apm.msg.fragment.overlap.conflicts",
- FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL }
- },
- {&hf_isup_apm_msg_fragment_multiple_tails,
- {"Message has multiple tail fragments", "isup_apm.msg.fragment.multiple_tails",
- FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL }
- },
- {&hf_isup_apm_msg_fragment_too_long_fragment,
- {"Message fragment too long", "isup_apm.msg.fragment.too_long_fragment",
- FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL }
- },
- {&hf_isup_apm_msg_fragment_error,
- {"Message defragmentation error", "isup_apm.msg.fragment.error",
- FT_FRAMENUM, BASE_NONE, NULL, 0x00, NULL, HFILL }
- },
- {&hf_isup_apm_msg_reassembled_in,
- {"Reassembled in", "isup_apm.msg.reassembled.in",
- FT_FRAMENUM, BASE_NONE, NULL, 0x00, NULL, HFILL }
- },
- {&hf_isup_apm_msg_reassembled_length,
- {"Reassembled ISUP length", "isup_apm.msg.reassembled.length",
- FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
- },
- {&hf_isup_cvr_rsp_ind,
- {"CVR Response Ind", "conn_rsp_ind",
- FT_UINT8, BASE_DEC, VALS(isup_cvr_rsp_ind_value), BA_8BIT_MASK,
- NULL, HFILL }},
- {&hf_isup_cvr_cg_car_ind,
- {"CVR Circuit Group Carrier","cg_carrier_ind",
- FT_UINT8, BASE_HEX, VALS(isup_cvr_cg_car_ind_value), BA_8BIT_MASK,
- NULL, HFILL }},
- {&hf_isup_cvr_cg_double_seize,
- {"Double Seize Control", "cg_char_ind.doubleSeize",
- FT_UINT8, BASE_HEX, VALS(isup_cvr_cg_double_seize_value), DC_8BIT_MASK,
- NULL, HFILL }},
- {&hf_isup_cvr_cg_alarm_car_ind,
- {"Alarm Carrier Indicator", "cg_alarm_car_ind",
- FT_UINT8, BASE_HEX, VALS(isup_cvr_alarm_car_ind_value), FE_8BIT_MASK,
- NULL, HFILL }},
- {&hf_isup_cvr_cont_chk_ind,
- {"Continuity Check Indicator","cg_alarm_cnt_chk",
- FT_UINT8, BASE_HEX, VALS(isup_cvr_cont_chk_ind_value), HG_8BIT_MASK,
- NULL,HFILL }},
-
- { &hf_isup_geo_loc_presentation_restricted_ind,
- { "Calling Geodetic Location presentation restricted indicator", "isup.location_presentation_restr_ind",
- FT_UINT8, BASE_DEC, VALS(isup_location_presentation_restricted_ind_value), DC_8BIT_MASK,
- NULL, HFILL }},
- { &hf_isup_geo_loc_screening_ind,
- { "Calling Geodetic Location screening indicator", "isup.location_screening_ind",
- FT_UINT8, BASE_DEC, VALS(isup_screening_ind_enhanced_value), BA_8BIT_MASK, /* using previously defined screening values */
- NULL, HFILL }}
- };
+ static hf_register_info hf[] = {
+ { &hf_isup_cic,
+ { "CIC", "isup.cic",
+ FT_UINT16, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_isup_message_type,
+ { "Message Type", "isup.message_type",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_isup_parameter_type,
+ { "Parameter Type", "isup.parameter_type",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_isup_parameter_length,
+ { "Parameter Length", "isup.parameter_length",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_isup_mandatory_variable_parameter_pointer,
+ { "Pointer to Parameter", "isup.mandatory_variable_parameter_pointer",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_isup_pointer_to_start_of_optional_part,
+ { "Pointer to optional parameter part", "isup.optional_parameter_part_pointer",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_isup_satellite_indicator,
+ { "Satellite Indicator", "isup.satellite_indicator",
+ FT_UINT8, BASE_HEX, VALS(isup_satellite_ind_value), BA_8BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_continuity_check_indicator,
+ { "Continuity Check Indicator", "isup.continuity_check_indicator",
+ FT_UINT8, BASE_HEX, VALS(isup_continuity_check_ind_value), DC_8BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_echo_control_device_indicator,
+ { "Echo Control Device Indicator", "isup.echo_control_device_indicator",
+ FT_BOOLEAN, 8, TFS(&isup_echo_control_device_ind_value),E_8BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_forw_call_natnl_inatnl_call_indicator,
+ { "National/international call indicator", "isup.forw_call_natnl_inatnl_call_indicator",
+ FT_BOOLEAN, 16, TFS(&isup_natnl_inatnl_call_ind_value),A_16BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_forw_call_end_to_end_method_indicator,
+ { "End-to-end method indicator", "isup.forw_call_end_to_end_method_indicator",
+ FT_UINT16, BASE_HEX, VALS(isup_end_to_end_method_ind_value), CB_16BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_forw_call_interworking_indicator,
+ { "Interworking indicator", "isup.forw_call_interworking_indicator",
+ FT_BOOLEAN, 16, TFS(&isup_interworking_ind_value), D_16BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_forw_call_end_to_end_info_indicator,
+ { "End-to-end information indicator", "isup.forw_call_end_to_end_information_indicator",
+ FT_BOOLEAN, 16, TFS(&isup_end_to_end_info_ind_value), E_16BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_forw_call_isdn_user_part_indicator,
+ { "ISDN user part indicator", "isup.forw_call_isdn_user_part_indicator",
+ FT_BOOLEAN, 16, TFS(&isup_ISDN_user_part_ind_value), F_16BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_forw_call_preferences_indicator,
+ { "ISDN user part preference indicator", "isup.forw_call_preferences_indicator",
+ FT_UINT16, BASE_HEX, VALS(isup_preferences_ind_value), HG_16BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_forw_call_isdn_access_indicator,
+ { "ISDN access indicator", "isup.forw_call_isdn_access_indicator",
+ FT_BOOLEAN, 16, TFS(&isup_ISDN_originating_access_ind_value), I_16BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_forw_call_sccp_method_indicator,
+ { "SCCP method indicator", "isup.forw_call_sccp_method_indicator",
+ FT_UINT16, BASE_HEX, VALS(isup_SCCP_method_ind_value), KJ_16BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_forw_call_ported_num_trans_indicator,
+ { "Ported number translation indicator", "isup.forw_call_ported_num_trans_indicator",
+ FT_BOOLEAN, 16, TFS(&isup_ISDN_ported_num_trans_ind_value), M_16BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_forw_call_qor_attempt_indicator,
+ { "Query on Release attempt indicator", "isup.forw_call_isdn_access_indicator",
+ FT_BOOLEAN, 16, TFS(&isup_ISDN_qor_attempt_ind_value), N_16BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_calling_partys_category,
+ { "Calling Party's category", "isup.calling_partys_category",
+ FT_UINT8, BASE_HEX|BASE_EXT_STRING, &isup_calling_partys_category_value_ext, 0x0,
+ NULL, HFILL }},
+
+ { &hf_isup_transmission_medium_requirement,
+ { "Transmission medium requirement", "isup.transmission_medium_requirement",
+ FT_UINT8, BASE_DEC|BASE_EXT_STRING, &isup_transmission_medium_requirement_value_ext, 0x0,
+ NULL, HFILL }},
+
+ { &hf_isup_odd_even_indicator,
+ { "Odd/even indicator", "isup.isdn_odd_even_indicator",
+ FT_BOOLEAN, 8, TFS(&isup_odd_even_ind_value), ISUP_ODD_EVEN_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_generic_name_presentation,
+ { "Presentation indicator", "isup.isdn_generic_name_presentation",
+ FT_UINT8, BASE_DEC, VALS(isup_generic_name_presentation_value), BA_8BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_generic_name_availability,
+ { "Availability indicator", "isup.isdn_generic_name_availability",
+ FT_BOOLEAN, 8, TFS(&isup_generic_name_availability_value), E_8BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_generic_name_type,
+ { "Type indicator", "isup.isdn_generic_name_type",
+ FT_UINT8, BASE_DEC, VALS(isup_generic_name_type_value), HGF_8BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_generic_name_ia5,
+ { "Generic Name", "isup.isdn_generic_name_ia5",
+ FT_STRING, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_isup_called_party_nature_of_address_indicator,
+ { "Nature of address indicator", "isup.called_party_nature_of_address_indicator",
+ FT_UINT8, BASE_DEC, VALS(isup_called_party_nature_of_address_ind_value), ISUP_NATURE_OF_ADDRESS_IND_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_calling_party_nature_of_address_indicator,
+ { "Nature of address indicator", "isup.calling_party_nature_of_address_indicator",
+ FT_UINT8, BASE_DEC, VALS(isup_calling_party_nature_of_address_ind_value), ISUP_NATURE_OF_ADDRESS_IND_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_charge_number_nature_of_address_indicator,
+ { "Nature of address indicator", "isup.charge_number_nature_of_address_indicator",
+ FT_UINT8, BASE_DEC, VALS(isup_charge_number_nature_of_address_ind_value), ISUP_NATURE_OF_ADDRESS_IND_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_inn_indicator,
+ { "INN indicator", "isup.inn_indicator",
+ FT_BOOLEAN, 8, TFS(&isup_INN_ind_value), ISUP_INN_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_ni_indicator,
+ { "NI indicator", "isup.ni_indicator",
+ FT_BOOLEAN, 8, TFS(&isup_NI_ind_value), ISUP_NI_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_numbering_plan_indicator,
+ { "Numbering plan indicator", "isup.numbering_plan_indicator",
+ FT_UINT8, BASE_DEC, VALS(isup_numbering_plan_ind_value), ISUP_NUMBERING_PLAN_IND_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_address_presentation_restricted_indicator,
+ { "Address presentation restricted indicator", "isup.address_presentation_restricted_indicator",
+ FT_UINT8, BASE_DEC, VALS(isup_address_presentation_restricted_ind_value), ISUP_ADDRESS_PRESENTATION_RESTR_IND_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_screening_indicator,
+ { "Screening indicator", "isup.screening_indicator",
+ FT_UINT8, BASE_DEC, VALS(isup_screening_ind_value), ISUP_SCREENING_IND_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_screening_indicator_enhanced,
+ { "Screening indicator", "isup.screening_indicator_enhanced",
+ FT_UINT8, BASE_DEC, VALS(isup_screening_ind_enhanced_value), ISUP_SCREENING_IND_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_called_party_odd_address_signal_digit,
+ { "Address signal digit", "isup.called_party_odd_address_signal_digit",
+ FT_UINT8, BASE_DEC, VALS(isup_called_party_address_digit_value), ISUP_ODD_ADDRESS_SIGNAL_DIGIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_calling_party_odd_address_signal_digit,
+ { "Address signal digit", "isup.calling_party_odd_address_signal_digit",
+ FT_UINT8, BASE_DEC, VALS(isup_calling_party_address_digit_value), ISUP_ODD_ADDRESS_SIGNAL_DIGIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_called_party_even_address_signal_digit,
+ { "Address signal digit", "isup.called_party_even_address_signal_digit",
+ FT_UINT8, BASE_DEC, VALS(isup_called_party_address_digit_value), ISUP_EVEN_ADDRESS_SIGNAL_DIGIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_calling_party_even_address_signal_digit,
+ { "Address signal digit", "isup.calling_party_even_address_signal_digit",
+ FT_UINT8, BASE_DEC, VALS(isup_calling_party_address_digit_value), ISUP_EVEN_ADDRESS_SIGNAL_DIGIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_calling_party_address_request_indicator,
+ { "Calling party address request indicator", "isup.calling_party_address_request_indicator",
+ FT_BOOLEAN, 16, TFS(&isup_calling_party_address_request_ind_value), A_16BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_info_req_holding_indicator,
+ { "Holding indicator", "isup.info_req_holding_indicator",
+ FT_BOOLEAN, 16, TFS(&isup_holding_ind_value), B_16BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_calling_partys_category_request_indicator,
+ { "Calling party's category request indicator", "isup.calling_partys_category_request_indicator",
+ FT_BOOLEAN, 16, TFS(&isup_calling_partys_category_request_ind_value), D_16BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_charge_information_request_indicator,
+ { "Charge information request indicator", "isup.charge_information_request_indicator",
+ FT_BOOLEAN, 16, TFS(&isup_charge_information_request_ind_value), E_16BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_malicious_call_identification_request_indicator,
+ { "Malicious call identification request indicator (ISUP'88)", "isup.malicious_call_ident_request_indicator",
+ FT_BOOLEAN, 16, TFS(&isup_malicious_call_identification_request_ind_value), H_16BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_calling_party_address_response_indicator,
+ { "Calling party address response indicator", "isup.calling_party_address_response_indicator",
+ FT_UINT16, BASE_HEX, VALS(isup_calling_party_address_response_ind_value), BA_16BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_OECD_inf_ind,
+ { "OECD information indicator", "isup.OECD_inf_ind_vals",
+ FT_UINT8, BASE_HEX, VALS(OECD_inf_ind_vals), BA_8BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_IECD_inf_ind,
+ { "IECD information indicator", "isup.IECD_inf_ind_vals",
+ FT_UINT8, BASE_HEX, VALS(IECD_inf_ind_vals), DC_8BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_OECD_req_ind,
+ { "OECD request indicator", "isup.OECD_req_ind_vals",
+ FT_UINT8, BASE_HEX, VALS(OECD_req_ind_vals), FE_8BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_IECD_req_ind,
+ { "IECD request indicator", "isup.IECD_req_ind_vals",
+ FT_UINT8, BASE_HEX, VALS(IECD_req_ind_vals), HG_8BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_hold_provided_indicator,
+ { "Hold provided indicator", "isup.hold_provided_indicator",
+ FT_BOOLEAN, 16, TFS(&isup_hold_provided_ind_value), C_16BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_calling_partys_category_response_indicator,
+ { "Calling party's category response indicator", "isup.calling_partys_category_response_indicator",
+ FT_BOOLEAN, 16, TFS(&isup_calling_partys_category_response_ind_value), F_16BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_charge_information_response_indicator,
+ { "Charge information response indicator", "isup.charge_information_response_indicator",
+ FT_BOOLEAN, 16, TFS(&isup_charge_information_response_ind_value), G_16BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_solicited_indicator,
+ { "Solicited indicator", "isup.solicided_indicator",
+ FT_BOOLEAN, 16, TFS(&isup_solicited_information_ind_value), H_16BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_continuity_indicator,
+ { "Continuity indicator", "isup.continuity_indicator",
+ FT_BOOLEAN, 8, TFS(&isup_continuity_ind_value), A_8BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_backw_call_charge_ind,
+ { "Charge indicator", "isup.charge_indicator",
+ FT_UINT16, BASE_HEX, VALS(isup_charge_ind_value), BA_16BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_backw_call_called_partys_status_ind,
+ { "Called party's status indicator", "isup.called_partys_status_indicator",
+ FT_UINT16, BASE_HEX, VALS(isup_called_partys_status_ind_value), DC_16BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_backw_call_called_partys_category_ind,
+ { "Called party's category indicator", "isup.called_partys_category_indicator",
+ FT_UINT16, BASE_HEX, VALS(isup_called_partys_category_ind_value), FE_16BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_backw_call_end_to_end_method_ind,
+ { "End-to-end method indicator", "isup.backw_call_end_to_end_method_indicator",
+ FT_UINT16, BASE_HEX, VALS(isup_end_to_end_method_ind_value), HG_16BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_backw_call_interworking_ind,
+ { "Interworking indicator", "isup.backw_call_interworking_indicator",
+ FT_BOOLEAN, 16, TFS(&isup_interworking_ind_value), I_16BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_backw_call_end_to_end_info_ind,
+ { "End-to-end information indicator", "isup.backw_call_end_to_end_information_indicator",
+ FT_BOOLEAN, 16, TFS(&isup_end_to_end_info_ind_value), J_16BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_backw_call_isdn_user_part_ind,
+ { "ISDN user part indicator", "isup.backw_call_isdn_user_part_indicator",
+ FT_BOOLEAN, 16, TFS(&isup_ISDN_user_part_ind_value), K_16BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_backw_call_holding_ind,
+ { "Holding indicator", "isup.backw_call_holding_indicator",
+ FT_BOOLEAN, 16, TFS(&isup_holding_ind_value), L_16BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_backw_call_isdn_access_ind,
+ { "ISDN access indicator", "isup.backw_call_isdn_access_indicator",
+ FT_BOOLEAN, 16, TFS(&isup_ISDN_terminating_access_ind_value), M_16BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_backw_call_echo_control_device_ind,
+ { "Echo Control Device Indicator", "isup.backw_call_echo_control_device_indicator",
+ FT_BOOLEAN, 16, TFS(&isup_echo_control_device_ind_value), N_16BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_backw_call_sccp_method_ind,
+ { "SCCP method indicator", "isup.backw_call_sccp_method_indicator",
+ FT_UINT16, BASE_HEX, VALS(isup_SCCP_method_ind_value), PO_16BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_cause_indicator,
+ { "Cause indicator", "isup.cause_indicator",
+ FT_UINT8, BASE_DEC|BASE_EXT_STRING, &q850_cause_code_vals_ext, 0x7f,
+ NULL, HFILL }},
+
+ { &hf_ansi_isup_cause_indicator,
+ { "Cause indicator", "ansi_isup.cause_indicator",
+ FT_UINT8, BASE_DEC|BASE_EXT_STRING, &ansi_isup_cause_code_vals_ext, 0x7f,
+ NULL, HFILL }},
+
+ { &hf_isup_suspend_resume_indicator,
+ { "Suspend/Resume indicator", "isup.suspend_resume_indicator",
+ FT_BOOLEAN, 8, TFS(&isup_suspend_resume_ind_value), A_8BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_range_indicator,
+ { "Range indicator", "isup.range_indicator",
+ FT_UINT8, BASE_DEC, NULL , 0x0,
+ NULL, HFILL }},
+
+ { &hf_isup_cgs_message_type,
+ { "Circuit group supervision message type", "isup.cgs_message_type",
+ FT_UINT8, BASE_DEC, VALS(isup_cgs_message_type_value), BA_8BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_mtc_blocking_state1,
+ { "Maintenance blocking state", "isup.mtc_blocking_state",
+ FT_UINT8, BASE_DEC, VALS(isup_mtc_blocking_state_DC00_value), BA_8BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_mtc_blocking_state2,
+ { "Maintenance blocking state", "isup.mtc_blocking_state",
+ FT_UINT8, BASE_DEC, VALS(isup_mtc_blocking_state_DCnot00_value), BA_8BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_call_proc_state,
+ { "Call processing state", "isup.call_processing_state",
+ FT_UINT8, BASE_DEC, VALS(isup_call_processing_state_value), DC_8BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_hw_blocking_state,
+ { "HW blocking state", "isup.hw_blocking_state",
+ FT_UINT8, BASE_DEC, VALS(isup_HW_blocking_state_value), FE_8BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_event_ind,
+ { "Event indicator", "isup.event_ind",
+ FT_UINT8, BASE_DEC, VALS(isup_event_ind_value), GFEDCBA_8BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_event_presentation_restricted_ind,
+ { "Event presentation restricted indicator", "isup.event_presentatiation_restr_ind",
+ FT_BOOLEAN, 8, TFS(&isup_event_presentation_restricted_ind_value), H_8BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_cug_call_ind,
+ { "Closed user group call indicator", "isup.clg_call_ind",
+ FT_UINT8, BASE_DEC, VALS(isup_CUG_call_ind_value), BA_8BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_simple_segmentation_ind,
+ { "Simple segmentation indicator", "isup.simple_segmentation_ind",
+ FT_BOOLEAN, 8, TFS(&isup_simple_segmentation_ind_value), C_8BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_connected_line_identity_request_ind,
+ { "Connected line identity request indicator", "isup.connected_line_identity_request_ind",
+ FT_BOOLEAN, 8, TFS(&isup_connected_line_identity_request_ind_value), H_8BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_redirecting_ind,
+ { "Redirection indicator", "isup.redirecting_ind",
+ FT_UINT16, BASE_DEC, VALS(isup_redirecting_ind_value), CBA_16BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_original_redirection_reason,
+ { "Original redirection reason", "isup.original_redirection_reason",
+ FT_UINT16, BASE_DEC, VALS(isup_original_redirection_reason_value), HGFE_16BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_redirection_counter,
+ { "Redirection counter", "isup.redirection_counter",
+ FT_UINT16, BASE_DEC, NULL, KJI_16BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_redirection_reason,
+ { "Redirection reason", "isup.redirection_reason",
+ FT_UINT16, BASE_DEC, VALS(isup_redirection_reason_value), PONM_16BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_type_of_network_identification,
+ { "Type of network identification", "isup.type_of_network_identification",
+ FT_UINT8, BASE_DEC, VALS(isup_type_of_network_identification_value), GFE_8BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_network_identification_plan,
+ { "Network identification plan", "isup.network_identification_plan",
+ FT_UINT8, BASE_DEC, VALS(isup_network_identification_plan_value), DCBA_8BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_map_type,
+ { "Map Type", "isup.map_type",
+ FT_UINT8, BASE_DEC, VALS(isup_map_type_value), FEDCBA_8BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_automatic_congestion_level,
+ { "Automatic congestion level", "isup.automatic_congestion_level",
+ FT_UINT8, BASE_DEC, VALS(isup_auto_congestion_level_value), 0x0,
+ NULL, HFILL }},
+
+ { &hf_isup_inband_information_ind,
+ { "In-band information indicator", "isup.inband_information_ind",
+ FT_BOOLEAN, 8, TFS(&isup_inband_information_ind_value), A_8BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_call_diversion_may_occur_ind,
+ { "Call diversion may occur indicator", "isup.call_diversion_may_occur_ind",
+ FT_BOOLEAN, 8, TFS(&isup_call_diversion_may_occur_ind_value), B_8BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_mlpp_user_ind,
+ { "MLPP user indicator", "isup.mlpp_user",
+ FT_BOOLEAN, 8, TFS(&isup_MLPP_user_ind_value), D_8BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_UUI_type,
+ { "User-to-User indicator type", "isup.UUI_type",
+ FT_BOOLEAN, 8, TFS(&isup_UUI_type_value), A_8BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_UUI_req_service1,
+ { "User-to-User indicator request service 1", "isup.UUI_req_service1",
+ FT_UINT8, BASE_DEC, VALS(isup_UUI_request_service_values), CB_8BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_UUI_req_service2,
+ { "User-to-User indicator request service 2", "isup.UUI_req_service2",
+ FT_UINT8, BASE_DEC, VALS(isup_UUI_request_service_values), ED_8BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_UUI_req_service3,
+ { "User-to-User indicator request service 3", "isup.UUI_req_service3",
+ FT_UINT8, BASE_DEC, VALS(isup_UUI_request_service_values), GF_8BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_UUI_res_service1,
+ { "User-to-User indicator response service 1", "isup.UUI_res_service1",
+ FT_UINT8, BASE_DEC, VALS(isup_UUI_response_service_values), CB_8BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_UUI_res_service2,
+ { "User-to-User indicator response service 2", "isup.UUI_res_service2",
+ FT_UINT8, BASE_DEC, VALS(isup_UUI_response_service_values), ED_8BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_UUI_res_service3,
+ { "User-to-User response service 3", "isup.UUI_res_service3",
+ FT_UINT8, BASE_DEC, VALS(isup_UUI_response_service_values), GF_8BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_UUI_network_discard_ind,
+ { "User-to-User indicator network discard indicator", "isup.UUI_network_discard_ind",
+ FT_BOOLEAN, 8, TFS(&isup_UUI_network_discard_ind_value), H_8BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_access_delivery_ind,
+ { "Access delivery indicator", "isup.access_delivery_ind",
+ FT_BOOLEAN, 8, TFS(&isup_access_delivery_ind_value), A_8BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_transmission_medium_requirement_prime,
+ { "Transmission medium requirement prime", "isup.transmission_medium_requirement_prime",
+ FT_UINT8, BASE_DEC|BASE_EXT_STRING, &isup_transmission_medium_requirement_prime_value_ext, 0x0,
+ NULL, HFILL }},
+
+ { &hf_isup_loop_prevention_response_ind,
+ { "Response indicator", "isup.loop_prevention_response_ind",
+ FT_UINT8, BASE_DEC, VALS(isup_loop_prevention_response_ind_value), CB_8BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_temporary_alternative_routing_ind,
+ { "Temporary alternative routing indicator", "isup.temporary_alternative_routing_ind",
+ FT_BOOLEAN, 8, TFS(&isup_temporary_alternative_routing_ind_value), A_8BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_extension_ind,
+ { "Extension indicator", "isup.extension_ind",
+ FT_BOOLEAN, 8, TFS(&isup_extension_ind_value), H_8BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_call_to_be_diverted_ind,
+ { "Call to be diverted indicator", "isup.call_to_be_diverted_ind",
+ FT_UINT8, BASE_DEC, VALS(isup_call_to_be_diverted_ind_value), BA_8BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_call_to_be_offered_ind,
+ { "Call to be offered indicator", "isup.call_to_be_offered_ind",
+ FT_UINT8, BASE_DEC, VALS(isup_call_to_be_offered_ind_value), BA_8BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_conference_acceptance_ind,
+ { "Conference acceptance indicator", "isup.conference_acceptance_ind",
+ FT_UINT8, BASE_DEC, VALS(isup_conference_acceptance_ind_value), BA_8BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_transit_at_intermediate_exchange_ind,
+ { "Transit at intermediate exchange indicator", "isup.transit_at_intermediate_exchange_ind",
+ FT_BOOLEAN, 8, TFS(&isup_transit_at_intermediate_exchange_ind_value), A_8BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_Release_call_ind,
+ { "Release call indicator", "isup.Release_call_ind",
+ FT_BOOLEAN, 8, TFS(&isup_Release_call_indicator_value), B_8BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_Send_notification_ind,
+ { "Send notification indicator", "isup.Send_notification_ind",
+ FT_BOOLEAN, 8, TFS(&isup_Send_notification_ind_value),C_8BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_Discard_message_ind_value,
+ { "Discard message indicator","isup.Discard_message_ind_value",
+ FT_BOOLEAN, 8, TFS(&isup_Discard_message_ind_value), D_8BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_Discard_parameter_ind,
+ { "Discard parameter indicator","isup.Discard_parameter_ind",
+ FT_BOOLEAN, 8, TFS(&isup_Discard_parameter_ind_value), E_8BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_Pass_on_not_possible_indicator,
+ { "Pass on not possible indicator", "isup_Pass_on_not_possible_ind",
+ FT_UINT8, BASE_HEX, VALS(isup_Pass_on_not_possible_indicator_vals),GF_8BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_pass_on_not_possible_indicator2,
+ { "Pass on not possible indicator", "isup_Pass_on_not_possible_val",
+ FT_BOOLEAN, 8, TFS(&isup_pass_on_not_possible_indicator_value),E_8BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_Broadband_narrowband_interworking_ind,
+ { "Broadband narrowband interworking indicator Bits JF", "isup_broadband-narrowband_interworking_ind",
+ FT_UINT8, BASE_HEX, VALS(ISUP_Broadband_narrowband_interworking_indicator_vals),BA_8BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_Broadband_narrowband_interworking_ind2,
+ { "Broadband narrowband interworking indicator Bits GF", "isup_broadband-narrowband_interworking_ind2",
+ FT_UINT8, BASE_HEX, VALS(ISUP_Broadband_narrowband_interworking_indicator_vals),GF_8BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_app_cont_ident,
+ { "Application context identifier", "isup.app_context_identifier",
+ FT_UINT16, BASE_DEC, VALS(isup_application_transport_parameter_value),GFEDCBA_8BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_app_Release_call_ind,
+ { "Release call indicator (RCI)", "isup.app_Release_call_indicator",
+ FT_BOOLEAN, 8, TFS(&isup_Release_call_indicator_value), A_8BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_app_Send_notification_ind,
+ { "Send notification indicator (SNI)", "isup.app_Send_notification_ind",
+ FT_BOOLEAN, 8, TFS(&isup_Send_notification_ind_value), B_8BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_apm_segmentation_ind,
+ { "APM segmentation indicator", "isup.apm_segmentation_ind",
+ FT_UINT8, BASE_DEC, VALS(isup_APM_segmentation_ind_value), FEDCBA_8BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_apm_si_ind,
+ { "Sequence indicator (SI)", "isup.APM_Sequence_ind",
+ FT_BOOLEAN, 8, TFS(&isup_Sequence_ind_value), G_8BIT_MASK,
+ NULL, HFILL }},
+
+ { &hf_isup_orig_addr_len,
+ { "Originating Address length", "isup.orig_addr_len",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_isup_dest_addr_len,
+ { "Destination Address length", "isup.orig_addr_len",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_isup_apm_slr,
+ { "Segmentation local reference (SLR)", "isup.APM_slr",
+ FT_UINT8, BASE_DEC, NULL,GFEDCBA_8BIT_MASK,
+ NULL, HFILL }},
+ { &hf_isup_cause_location,
+ { "Cause location", "isup.cause_location",
+ FT_UINT8, BASE_DEC|BASE_EXT_STRING, &q931_cause_location_vals_ext, 0x0f,
+ NULL, HFILL }},
+
+ { &hf_ansi_isup_coding_standard,
+ { "Coding standard", "ansi_isup.coding_standard", FT_UINT8, BASE_HEX,
+ VALS(ansi_isup_coding_standard_vals), 0x60,NULL, HFILL }},
+
+ { &hf_bat_ase_identifier,
+ { "BAT ASE Identifiers", "bicc.bat_ase_identifier",
+ FT_UINT8, BASE_HEX|BASE_EXT_STRING, &bat_ase_list_of_Identifiers_vals_ext,0x0,
+ NULL, HFILL }},
+
+ { &hf_length_indicator,
+ { "BAT ASE Element length indicator", "bicc.bat_ase_length_indicator",
+ FT_UINT16, BASE_DEC, NULL,0x0,
+ NULL, HFILL }},
+
+ { &hf_Action_Indicator,
+ { "BAT ASE action indicator field", "bicc.bat_ase_bat_ase_action_indicator_field",
+ FT_UINT8, BASE_HEX|BASE_EXT_STRING, &bat_ase_action_indicator_field_vals_ext,0x00,
+ NULL, HFILL }},
+
+ { &hf_Instruction_ind_for_general_action,
+ { "BAT ASE Instruction indicator for general action", "bicc.bat_ase_Instruction_ind_for_general_action",
+ FT_UINT8, BASE_HEX, VALS(Instruction_indicator_for_general_action_vals),0x03,
+ NULL, HFILL }},
+
+ { &hf_Send_notification_ind_for_general_action,
+ { "Send notification indicator for general action", "bicc.bat_ase_Send_notification_ind_for_general_action",
+ FT_BOOLEAN, 8, TFS(&isup_Send_notification_ind_value), 0x04,
+ NULL, HFILL }},
+
+ { &hf_Instruction_ind_for_pass_on_not_possible,
+ { "Instruction ind for pass-on not possible", "bicc.bat_ase_Instruction_ind_for_pass_on_not_possible",
+ FT_UINT8, BASE_HEX, VALS(Instruction_indicator_for_pass_on_not_possible_vals),0x30,
+ NULL, HFILL }},
+
+ { &hf_Send_notification_ind_for_pass_on_not_possible,
+ { "Send notification indication for pass-on not possible", "bicc.bat_ase_Send_notification_ind_for_pass_on_not_possible",
+ FT_BOOLEAN, 8, TFS(&isup_Send_notification_ind_value), 0x40,
+ NULL, HFILL }},
+
+ { &hf_BCTP_Version_Indicator,
+ { "BCTP Version Indicator", "bicc.bat_ase_BCTP_Version_Indicator",
+ FT_UINT8, BASE_DEC, NULL,0x1f,
+ NULL, HFILL }},
+
+ { &hf_BVEI,
+ { "BVEI", "bicc.bat_ase_BCTP_BVEI",
+ FT_BOOLEAN, 8, TFS(&BCTP_BVEI_value), 0x40,
+ NULL, HFILL }},
+
+ { &hf_Tunnelled_Protocol_Indicator,
+ { "Tunnelled Protocol Indicator", "bicc.bat_ase_BCTP_Tunnelled_Protocol_Indicator",
+ FT_UINT8, BASE_DEC, VALS(BCTP_Tunnelled_Protocol_Indicator_vals),0x3f,
+ NULL, HFILL }},
+
+ { &hf_TPEI,
+ { "TPEI", "bicc.bat_ase_BCTP_tpei",
+ FT_BOOLEAN, 8, TFS(&BCTP_TPEI_value), 0x40,
+ NULL, HFILL }},
+
+ { &hf_bncid,
+ { "Backbone Network Connection Identifier (BNCId)", "bat_ase.bncid",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_bat_ase_biwfa,
+ { "Interworking Function Address( X.213 NSAP encoded)", "bat_ase_biwfa",
+ FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_afi,
+ { "X.213 Address Format Information ( AFI )", "x213.afi",
+ FT_UINT8, BASE_HEX|BASE_EXT_STRING, &x213_afi_value_ext,0x0,
+ NULL, HFILL }},
+
+ { &hf_bicc_nsap_dsp,
+ { "X.213 Address Format Information ( DSP )", "x213.dsp",
+ FT_BYTES, BASE_NONE, NULL,0x0,
+ NULL, HFILL }},
+ { &hf_characteristics,
+ { "Backbone network connection characteristics", "bat_ase.char",
+ FT_UINT8, BASE_HEX|BASE_EXT_STRING, &bearer_network_connection_characteristics_vals_ext,0x0,
+ NULL, HFILL }},
+
+ { &hf_Organization_Identifier,
+ { "Organization identifier subfield", "bat_ase.organization_identifier_subfield",
+ FT_UINT8, BASE_DEC, VALS(bat_ase_organization_identifier_subfield_vals),0x0,
+ NULL, HFILL }},
+
+ { &hf_codec_type,
+ { "ITU-T codec type subfield", "bat_ase.ITU_T_codec_type_subfield",
+ FT_UINT8, BASE_HEX|BASE_EXT_STRING, &ITU_T_codec_type_subfield_vals_ext,0x0,
+ NULL, HFILL }},
+
+ { &hf_etsi_codec_type,
+ { "ETSI codec type subfield", "bat_ase.ETSI_codec_type_subfield",
+ FT_UINT8, BASE_HEX|BASE_EXT_STRING, &ETSI_codec_type_subfield_vals_ext,0x0,
+ NULL, HFILL }},
+
+ { &hf_active_code_set,
+ { "Active Code Set", "bat_ase.acs",
+ FT_UINT8, BASE_HEX, NULL,0x0,
+ NULL, HFILL }},
+
+ { &hf_active_code_set_12_2,
+ { "12.2 kbps rate", "bat_ase.acs.12_2",
+ FT_UINT8, BASE_HEX, NULL,0x80,
+ NULL, HFILL }},
+
+ { &hf_active_code_set_10_2,
+ { "10.2 kbps rate", "bat_ase.acs.10_2",
+ FT_UINT8, BASE_HEX, NULL,0x40,
+ NULL, HFILL }},
+
+ { &hf_active_code_set_7_95,
+ { "7.95 kbps rate", "bat_ase.acs.7_95",
+ FT_UINT8, BASE_HEX, NULL,0x20,
+ NULL, HFILL }},
+
+ { &hf_active_code_set_7_40,
+ { "7.40 kbps rate", "bat_ase.acs.7_40",
+ FT_UINT8, BASE_HEX, NULL,0x10,
+ NULL, HFILL }},
+
+ { &hf_active_code_set_6_70,
+ { "6.70 kbps rate", "bat_ase.acs.6_70",
+ FT_UINT8, BASE_HEX, NULL,0x08,
+ NULL, HFILL }},
+
+ { &hf_active_code_set_5_90,
+ { "5.90 kbps rate", "bat_ase.acs.5_90",
+ FT_UINT8, BASE_HEX, NULL,0x04,
+ NULL, HFILL }},
+
+ { &hf_active_code_set_5_15,
+ { "5.15 kbps rate", "bat_ase.acs.5_15",
+ FT_UINT8, BASE_HEX, NULL,0x02,
+ NULL, HFILL }},
+
+ { &hf_active_code_set_4_75,
+ { "4.75 kbps rate", "bat_ase.acs.4_75",
+ FT_UINT8, BASE_HEX, NULL,0x01,
+ NULL, HFILL }},
+
+ { &hf_supported_code_set,
+ { "Supported Code Set", "bat_ase.scs",
+ FT_UINT8, BASE_HEX, NULL,0x0,
+ NULL, HFILL }},
+
+ { &hf_supported_code_set_12_2,
+ { "12.2 kbps rate", "bat_ase.scs.12_2",
+ FT_UINT8, BASE_HEX, NULL,0x80,
+ NULL, HFILL }},
+
+ { &hf_supported_code_set_10_2,
+ { "10.2 kbps rate", "bat_ase.scs.10_2",
+ FT_UINT8, BASE_HEX, NULL,0x40,
+ NULL, HFILL }},
+
+ { &hf_supported_code_set_7_95,
+ { "7.95 kbps rate", "bat_ase.scs.7_95",
+ FT_UINT8, BASE_HEX, NULL,0x20,
+ NULL, HFILL }},
+
+ { &hf_supported_code_set_7_40,
+ { "7.40 kbps rate", "bat_ase.scs.7_40",
+ FT_UINT8, BASE_HEX, NULL,0x10,
+ NULL, HFILL }},
+
+ { &hf_supported_code_set_6_70,
+ { "6.70 kbps rate", "bat_ase.scs.6_70",
+ FT_UINT8, BASE_HEX, NULL,0x08,
+ NULL, HFILL }},
+
+ { &hf_supported_code_set_5_90,
+ { "5.90 kbps rate", "bat_ase.scs.5_90",
+ FT_UINT8, BASE_HEX, NULL,0x04,
+ NULL, HFILL }},
+
+ { &hf_supported_code_set_5_15,
+ { "5.15 kbps rate", "bat_ase.scs.5_15",
+ FT_UINT8, BASE_HEX, NULL,0x02,
+ NULL, HFILL }},
+
+ { &hf_supported_code_set_4_75,
+ { "4.75 kbps rate", "bat_ase.scs.4_75",
+ FT_UINT8, BASE_HEX, NULL,0x01,
+ NULL, HFILL }},
+
+ { &hf_optimisation_mode,
+ { "Optimisation Mode for ACS , OM", "bat_ase.optimisation_mode",
+ FT_UINT8, BASE_HEX, VALS(optimisation_mode_vals),0x8,
+ NULL, HFILL }},
+
+ { &hf_max_codec_modes,
+ { "Maximal number of Codec Modes, MACS", "bat_ase.macs",
+ FT_UINT8, BASE_DEC, NULL,0x07,
+ NULL, HFILL }},
+
+
+ { &hf_bearer_control_tunneling,
+ { "Bearer control tunneling", "bat_ase.bearer_control_tunneling",
+ FT_BOOLEAN, 8, TFS(&Bearer_Control_Tunnelling_ind_value),0x01,
+ NULL, HFILL }},
+
+ { &hf_BAT_ASE_Comp_Report_Reason,
+ { "Compatibility report reason", "bat_ase.Comp_Report_Reason",
+ FT_UINT8, BASE_HEX, VALS(BAT_ASE_Report_Reason_vals),0x0,
+ NULL, HFILL }},
+
+
+ { &hf_BAT_ASE_Comp_Report_ident,
+ { "Bearer control tunneling", "bat_ase.bearer_control_tunneling",
+ FT_UINT8, BASE_HEX|BASE_EXT_STRING, &bat_ase_list_of_Identifiers_vals_ext,0x0,
+ NULL, HFILL }},
+
+ { &hf_BAT_ASE_Comp_Report_diagnostic,
+ { "Diagnostics", "bat_ase.Comp_Report_diagnostic",
+ FT_UINT16, BASE_HEX, NULL,0x0,
+ NULL, HFILL }},
+
+ { &hf_Local_BCU_ID,
+ { "Local BCU ID", "bat_ase.Local_BCU_ID",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }},
+
+ { &hf_late_cut_trough_cap_ind,
+ { "Late Cut-through capability indicator", "bat_ase.late_cut_trough_cap_ind",
+ FT_BOOLEAN, 8, TFS(&late_cut_trough_cap_ind_value),0x01,
+ NULL, HFILL }},
+
+ { &hf_bat_ase_signal,
+ { "Q.765.5 - Signal Type", "bat_ase.signal_type",
+ FT_UINT8, BASE_HEX|BASE_EXT_STRING, &BAt_ASE_Signal_Type_vals_ext,0x0,
+ NULL, HFILL }},
+
+ { &hf_bat_ase_duration,
+ { "Duration in ms", "bat_ase.signal_type",
+ FT_UINT16, BASE_DEC, NULL,0x0,
+ NULL, HFILL }},
+
+ { &hf_bat_ase_bearer_redir_ind,
+ { "Redirection Indicator", "bat_ase.bearer_redir_ind",
+ FT_UINT8, BASE_HEX|BASE_EXT_STRING, &Bearer_Redirection_Indicator_vals_ext,0x0,
+ NULL, HFILL }},
+
+ { &hf_nsap_ipv4_addr,
+ { "IWFA IPv4 Address", "nsap.ipv4_addr",
+ FT_IPv4, BASE_NONE, NULL, 0x0,
+ "IPv4 address", HFILL }},
+
+ { &hf_nsap_ipv6_addr,
+ { "IWFA IPv6 Address", "nsap.ipv6_addr",
+ FT_IPv6, BASE_NONE, NULL, 0x0,
+ "IPv6 address", HFILL}},
+
+ { &hf_iana_icp,
+ { "IANA ICP", "nsap.iana_icp",
+ FT_UINT16, BASE_HEX, VALS(iana_icp_values),0x0,
+ NULL, HFILL }},
+
+ { &hf_isup_called,
+ { "ISUP Called Number", "isup.called",
+ FT_STRING, BASE_NONE, NULL,0x0,
+ NULL, HFILL }},
+
+ { &hf_isup_calling,
+ { "ISUP Calling Number", "isup.calling",
+ FT_STRING, BASE_NONE, NULL,0x0,
+ NULL, HFILL }},
+
+ { &hf_isup_redirecting,
+ { "ISUP Redirecting Number", "isup.redirecting",
+ FT_STRING, BASE_NONE, NULL,0x0,
+ NULL, HFILL }},
+ {&hf_isup_apm_msg_fragments,
+ {"Message fragments", "isup_apm.msg.fragments",
+ FT_NONE, BASE_NONE, NULL, 0x00, NULL, HFILL }
+ },
+ {&hf_isup_apm_msg_fragment,
+ {"Message fragment", "isup_apm.msg.fragment",
+ FT_FRAMENUM, BASE_NONE, NULL, 0x00, NULL, HFILL }
+ },
+ {&hf_isup_apm_msg_fragment_overlap,
+ {"Message fragment overlap", "isup_apm.msg.fragment.overlap",
+ FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL }
+ },
+ {&hf_isup_apm_msg_fragment_overlap_conflicts,
+ {"Message fragment overlapping with conflicting data","isup_apm.msg.fragment.overlap.conflicts",
+ FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL }
+ },
+ {&hf_isup_apm_msg_fragment_multiple_tails,
+ {"Message has multiple tail fragments", "isup_apm.msg.fragment.multiple_tails",
+ FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL }
+ },
+ {&hf_isup_apm_msg_fragment_too_long_fragment,
+ {"Message fragment too long", "isup_apm.msg.fragment.too_long_fragment",
+ FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL }
+ },
+ {&hf_isup_apm_msg_fragment_error,
+ {"Message defragmentation error", "isup_apm.msg.fragment.error",
+ FT_FRAMENUM, BASE_NONE, NULL, 0x00, NULL, HFILL }
+ },
+ {&hf_isup_apm_msg_reassembled_in,
+ {"Reassembled in", "isup_apm.msg.reassembled.in",
+ FT_FRAMENUM, BASE_NONE, NULL, 0x00, NULL, HFILL }
+ },
+ {&hf_isup_apm_msg_reassembled_length,
+ {"Reassembled ISUP length", "isup_apm.msg.reassembled.length",
+ FT_UINT32, BASE_DEC, NULL, 0x00, NULL, HFILL }
+ },
+ {&hf_isup_cvr_rsp_ind,
+ {"CVR Response Ind", "conn_rsp_ind",
+ FT_UINT8, BASE_DEC, VALS(isup_cvr_rsp_ind_value), BA_8BIT_MASK,
+ NULL, HFILL }},
+ {&hf_isup_cvr_cg_car_ind,
+ {"CVR Circuit Group Carrier","cg_carrier_ind",
+ FT_UINT8, BASE_HEX, VALS(isup_cvr_cg_car_ind_value), BA_8BIT_MASK,
+ NULL, HFILL }},
+ {&hf_isup_cvr_cg_double_seize,
+ {"Double Seize Control", "cg_char_ind.doubleSeize",
+ FT_UINT8, BASE_HEX, VALS(isup_cvr_cg_double_seize_value), DC_8BIT_MASK,
+ NULL, HFILL }},
+ {&hf_isup_cvr_cg_alarm_car_ind,
+ {"Alarm Carrier Indicator", "cg_alarm_car_ind",
+ FT_UINT8, BASE_HEX, VALS(isup_cvr_alarm_car_ind_value), FE_8BIT_MASK,
+ NULL, HFILL }},
+ {&hf_isup_cvr_cont_chk_ind,
+ {"Continuity Check Indicator","cg_alarm_cnt_chk",
+ FT_UINT8, BASE_HEX, VALS(isup_cvr_cont_chk_ind_value), HG_8BIT_MASK,
+ NULL,HFILL }},
+
+ { &hf_isup_geo_loc_presentation_restricted_ind,
+ { "Calling Geodetic Location presentation restricted indicator", "isup.location_presentation_restr_ind",
+ FT_UINT8, BASE_DEC, VALS(isup_location_presentation_restricted_ind_value), DC_8BIT_MASK,
+ NULL, HFILL }},
+ { &hf_isup_geo_loc_screening_ind,
+ { "Calling Geodetic Location screening indicator", "isup.location_screening_ind",
+ FT_UINT8, BASE_DEC, VALS(isup_screening_ind_enhanced_value), BA_8BIT_MASK, /* using previously defined screening values */
+ NULL, HFILL }}
+ };
/* Setup protocol subtree array */
- static gint *ett[] = {
- &ett_isup,
- &ett_isup_parameter,
- &ett_isup_address_digits,
- &ett_isup_pass_along_message,
- &ett_isup_circuit_state_ind,
- &ett_bat_ase,
- &ett_bat_ase_element,
- &ett_bat_ase_iwfa,
- &ett_scs,
- &ett_acs,
- &ett_isup_apm_msg_fragment,
- &ett_isup_apm_msg_fragments,
- };
+ static gint *ett[] = {
+ &ett_isup,
+ &ett_isup_parameter,
+ &ett_isup_address_digits,
+ &ett_isup_pass_along_message,
+ &ett_isup_circuit_state_ind,
+ &ett_bat_ase,
+ &ett_bat_ase_element,
+ &ett_bat_ase_iwfa,
+ &ett_scs,
+ &ett_acs,
+ &ett_isup_apm_msg_fragment,
+ &ett_isup_apm_msg_fragments,
+ };
/* Register the protocol name and description */
- proto_isup = proto_register_protocol("ISDN User Part",
- "ISUP", "isup");
+ proto_isup = proto_register_protocol("ISDN User Part",
+ "ISUP", "isup");
- register_dissector("isup", dissect_isup, proto_isup);
+ register_dissector("isup", dissect_isup, proto_isup);
/* Required function calls to register the header fields and subtrees used */
- proto_register_field_array(proto_isup, hf, array_length(hf));
- proto_register_subtree_array(ett, array_length(ett));
+ proto_register_field_array(proto_isup, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
- isup_tap = register_tap("isup");
+ isup_tap = register_tap("isup");
- isup_module = prefs_register_protocol(proto_isup, NULL);
+ isup_module = prefs_register_protocol(proto_isup, NULL);
- prefs_register_bool_preference(isup_module, "show_cic_in_info", "Show CIC in Info column",
- "Show the CIC value (in addition to the message type) in the Info column",
- (gint *)&isup_show_cic_in_info);
+ prefs_register_bool_preference(isup_module, "show_cic_in_info", "Show CIC in Info column",
+ "Show the CIC value (in addition to the message type) in the Info column",
+ (gint *)&isup_show_cic_in_info);
- prefs_register_bool_preference(isup_module, "defragment_apm",
- "Reassemble APM messages",
- "Whether APM messages datagrams should be reassembled",
- &isup_apm_desegment);
+ prefs_register_bool_preference(isup_module, "defragment_apm",
+ "Reassemble APM messages",
+ "Whether APM messages datagrams should be reassembled",
+ &isup_apm_desegment);
- /* Register the stats_tree */
- stats_tree_register_with_group("isup", "isup_msg", "_ISUP Messages",
- 0, msg_stats_tree_packet, msg_stats_tree_init,
- NULL, REGISTER_STAT_GROUP_TELEPHONY);
+ /* Register the stats_tree */
+ stats_tree_register_with_group("isup", "isup_msg", "_ISUP Messages",
+ 0, msg_stats_tree_packet, msg_stats_tree_init,
+ NULL, REGISTER_STAT_GROUP_TELEPHONY);
}
@@ -8278,24 +8424,24 @@ void
proto_register_bicc(void)
{
/* Setup list of header fields See Section 1.6.1 for details*/
- static hf_register_info hf[] = {
- { &hf_bicc_cic,
- { "Call identification Code (CIC)", "bicc.cic",
- FT_UINT32, BASE_HEX, NULL, 0x0,
- NULL, HFILL }},
- };
+ static hf_register_info hf[] = {
+ { &hf_bicc_cic,
+ { "Call identification Code (CIC)", "bicc.cic",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }},
+ };
/* Setup protocol subtree array */
- static gint *ett[] = {
- &ett_bicc
- };
- proto_bicc = proto_register_protocol("Bearer Independent Call Control",
- "BICC", "bicc");
+ static gint *ett[] = {
+ &ett_bicc
+ };
+ proto_bicc = proto_register_protocol("Bearer Independent Call Control",
+ "BICC", "bicc");
/* Required function calls to register the header fields and subtrees used */
- proto_register_field_array(proto_bicc, hf, array_length(hf));
- proto_register_subtree_array(ett, array_length(ett));
+ proto_register_field_array(proto_bicc, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
- register_init_routine(isup_apm_defragment_init);
+ register_init_routine(isup_apm_defragment_init);
}
/* Register isup with the sub-laying MTP L3 dissector */
diff --git a/epan/dissectors/packet-isup.h b/epan/dissectors/packet-isup.h
index 136a28edd1..436721f458 100644
--- a/epan/dissectors/packet-isup.h
+++ b/epan/dissectors/packet-isup.h
@@ -27,144 +27,145 @@
#ifndef PACKET_ISUP_H
#define PACKET_ISUP_H
-#define ISUP_MAX_NUM_MESSAGE_TYPES 256
+#define ISUP_MAX_NUM_MESSAGE_TYPES 256
typedef struct _isup_tap_rec_t {
- guint8 message_type;
+ guint8 message_type;
/* added for VoIP calls analysis, see gtk/voip_calls.c*/
gchar *called_number;
gchar *calling_number;
- guint8 cause_value;
+ guint8 cause_value;
} isup_tap_rec_t;
/*
* the following allows TAP code access to the messages
- * without having to duplicate it. With MSVC and a
+ * without having to duplicate it. With MSVC and a
* libwireshark.dll, we need a special declaration.
*/
-WS_VAR_IMPORT const value_string isup_message_type_value[];
-WS_VAR_IMPORT const value_string isup_message_type_value_acro[];
-WS_VAR_IMPORT const value_string q850_cause_code_vals[];
+WS_VAR_IMPORT value_string_ext isup_message_type_value_acro_ext;
+WS_VAR_IMPORT value_string_ext q850_cause_code_vals_ext;
/*
* Export some definitions and value_string tables for other dissectors
*/
/* Definition of Parameter Types */
-#define PARAM_TYPE_END_OF_OPT_PARAMS 0
-#define PARAM_TYPE_CALL_REF 1
-#define PARAM_TYPE_TRANSM_MEDIUM_REQU 2
-#define PARAM_TYPE_ACC_TRANSP 3
-#define PARAM_TYPE_CALLED_PARTY_NR 4
-#define PARAM_TYPE_SUBSQT_NR 5
-#define PARAM_TYPE_NATURE_OF_CONN_IND 6
-#define PARAM_TYPE_FORW_CALL_IND 7
-#define PARAM_TYPE_OPT_FORW_CALL_IND 8
-#define PARAM_TYPE_CALLING_PRTY_CATEG 9
-#define PARAM_TYPE_CALLING_PARTY_NR 10
-#define PARAM_TYPE_REDIRECTING_NR 11
-#define PARAM_TYPE_REDIRECTION_NR 12
-#define PARAM_TYPE_CONNECTION_REQ 13
-#define PARAM_TYPE_INFO_REQ_IND 14
-#define PARAM_TYPE_INFO_IND 15
-#define PARAM_TYPE_CONTINUITY_IND 16
-#define PARAM_TYPE_BACKW_CALL_IND 17
-#define PARAM_TYPE_CAUSE_INDICATORS 18
-#define PARAM_TYPE_REDIRECTION_INFO 19
-#define PARAM_TYPE_CIRC_GRP_SV_MSG_TYPE 21
-#define PARAM_TYPE_RANGE_AND_STATUS 22
-#define PARAM_TYPE_FACILITY_IND 24
-#define PARAM_TYPE_CLSD_USR_GRP_ILOCK_CD 26
-#define PARAM_TYPE_USER_SERVICE_INFO 29
-#define PARAM_TYPE_SIGNALLING_POINT_CODE 30
-#define PARAM_TYPE_USER_TO_USER_INFO 32
-#define PARAM_TYPE_CONNECTED_NR 33
-#define PARAM_TYPE_SUSP_RESUME_IND 34
-#define PARAM_TYPE_TRANSIT_NETW_SELECT 35
-#define PARAM_TYPE_EVENT_INFO 36
-#define PARAM_TYPE_CIRC_ASSIGN_MAP 37
-#define PARAM_TYPE_CIRC_STATE_IND 38
-#define PARAM_TYPE_AUTO_CONG_LEVEL 39
-#define PARAM_TYPE_ORIG_CALLED_NR 40
-#define PARAM_TYPE_OPT_BACKW_CALL_IND 41
-#define PARAM_TYPE_USER_TO_USER_IND 42
-#define PARAM_TYPE_ORIG_ISC_POINT_CODE 43
-#define PARAM_TYPE_GENERIC_NOTIF_IND 44
-#define PARAM_TYPE_CALL_HIST_INFO 45
-#define PARAM_TYPE_ACC_DELIV_INFO 46
-#define PARAM_TYPE_NETW_SPECIFIC_FACLTY 47
-#define PARAM_TYPE_USER_SERVICE_INFO_PR 48
-#define PARAM_TYPE_PROPAG_DELAY_COUNTER 49
-#define PARAM_TYPE_REMOTE_OPERATIONS 50
-#define PARAM_TYPE_SERVICE_ACTIVATION 51
-#define PARAM_TYPE_USER_TELESERV_INFO 52
-#define PARAM_TYPE_TRANSM_MEDIUM_USED 53
-#define PARAM_TYPE_CALL_DIV_INFO 54
-#define PARAM_TYPE_ECHO_CTRL_INFO 55
-#define PARAM_TYPE_MSG_COMPAT_INFO 56
-#define PARAM_TYPE_PARAM_COMPAT_INFO 57
-#define PARAM_TYPE_MLPP_PRECEDENCE 58
-#define PARAM_TYPE_MCID_REQ_IND 59
-#define PARAM_TYPE_MCID_RSP_IND 60
-#define PARAM_TYPE_HOP_COUNTER 61
-#define PARAM_TYPE_TRANSM_MEDIUM_RQUR_PR 62
-#define PARAM_TYPE_LOCATION_NR 63
-#define PARAM_TYPE_REDIR_NR_RSTRCT 64
-#define PARAM_TYPE_CALL_TRANS_REF 67
-#define PARAM_TYPE_LOOP_PREV_IND 68
-#define PARAM_TYPE_CALL_TRANS_NR 69
-#define PARAM_TYPE_CCSS 75
-#define PARAM_TYPE_FORW_GVNS 76
-#define PARAM_TYPE_BACKW_GVNS 77
-#define PARAM_TYPE_REDIRECT_CAPAB 78
-#define PARAM_TYPE_NETW_MGMT_CTRL 91
-#define PARAM_TYPE_CORRELATION_ID 101
-#define PARAM_TYPE_SCF_ID 102
-#define PARAM_TYPE_CALL_DIV_TREAT_IND 110
-#define PARAM_TYPE_CALLED_IN_NR 111
-#define PARAM_TYPE_CALL_OFF_TREAT_IND 112
-#define PARAM_TYPE_CHARGED_PARTY_IDENT 113
-#define PARAM_TYPE_CONF_TREAT_IND 114
-#define PARAM_TYPE_DISPLAY_INFO 115
-#define PARAM_TYPE_UID_ACTION_IND 116
-#define PARAM_TYPE_UID_CAPAB_IND 117
-#define PARAM_TYPE_REDIRECT_COUNTER 119
-#define PARAM_TYPE_APPLICATON_TRANS 120
-#define PARAM_TYPE_COLLECT_CALL_REQ 121
-#define PARAM_TYPE_CALLING_GEODETIC_LOCATION 129 /* ANSI is the same */
-#define PARAM_TYPE_GENERIC_NR 192
-#define PARAM_TYPE_GENERIC_DIGITS 193
-#define PARAM_TYPE_JURISDICTION 196
-#define PARAM_TYPE_GENERIC_NAME 199
-#define PARAM_TYPE_ORIG_LINE_INFO 234
-#define PARAM_TYPE_CHARGE_NR 235
-
-#define ANSI_ISUP_PARAM_TYPE_OPER_SERV_INF 0xC2
-#define ANSI_ISUP_PARAM_TYPE_EGRESS 0xC3
-#define ANSI_ISUP_PARAM_TYPE_JURISDICTION 0xC4
-#define ANSI_ISUP_PARAM_TYPE_CARRIER_ID 0xC5
-#define ANSI_ISUP_PARAM_TYPE_BUSINESS_GRP 0xC6
-#define ANSI_ISUP_PARAM_TYPE_GENERIC_NAME 0xC7
-#define ANSI_ISUP_PARAM_TYPE_NOTIF_IND 0xE1
-
-#define ANSI_ISUP_PARAM_TYPE_CG_CHAR_IND 229
-#define ANSI_ISUP_PARAM_TYPE_CVR_RESP_IND 230
-#define ANSI_ISUP_PARAM_TYPE_OUT_TRK_GRP_NM 231
-#define ANSI_ISUP_PARAM_TYPE_CI_NAME_IND 232
-#define ANSI_ISUP_PARAM_CLLI_CODE 233
-
-#define ANSI_ISUP_PARAM_ORIG_LINE_INF 0xEA
-#define ANSI_ISUP_PARAM_CHRG_NO 0xEB
-#define ANSI_ISUP_PARAM_SERV_CODE_IND 0xEC
-#define ANSI_ISUP_PARAM_SPEC_PROC_REQ 0xED
-#define ANSI_ISUP_PARAM_CARRIER_SEL_INF 0xEE
-#define ANSI_ISUP_PARAM_NET_TRANS 0xEF
-
-extern const value_string isup_parameter_type_value[];
-extern const value_string isup_transmission_medium_requirement_value[];
-WS_VAR_IMPORT const value_string isup_calling_partys_category_value[];
-extern const value_string bearer_network_connection_characteristics_vals[];
-extern const value_string x213_afi_value[];
+#define PARAM_TYPE_END_OF_OPT_PARAMS 0
+#define PARAM_TYPE_CALL_REF 1
+#define PARAM_TYPE_TRANSM_MEDIUM_REQU 2
+#define PARAM_TYPE_ACC_TRANSP 3
+#define PARAM_TYPE_CALLED_PARTY_NR 4
+#define PARAM_TYPE_SUBSQT_NR 5
+#define PARAM_TYPE_NATURE_OF_CONN_IND 6
+#define PARAM_TYPE_FORW_CALL_IND 7
+#define PARAM_TYPE_OPT_FORW_CALL_IND 8
+#define PARAM_TYPE_CALLING_PRTY_CATEG 9
+#define PARAM_TYPE_CALLING_PARTY_NR 10
+#define PARAM_TYPE_REDIRECTING_NR 11
+#define PARAM_TYPE_REDIRECTION_NR 12
+#define PARAM_TYPE_CONNECTION_REQ 13
+#define PARAM_TYPE_INFO_REQ_IND 14
+#define PARAM_TYPE_INFO_IND 15
+#define PARAM_TYPE_CONTINUITY_IND 16
+#define PARAM_TYPE_BACKW_CALL_IND 17
+#define PARAM_TYPE_CAUSE_INDICATORS 18
+#define PARAM_TYPE_REDIRECTION_INFO 19
+#define PARAM_TYPE_CIRC_GRP_SV_MSG_TYPE 21
+#define PARAM_TYPE_RANGE_AND_STATUS 22
+#define PARAM_TYPE_FACILITY_IND 24
+#define PARAM_TYPE_CLSD_USR_GRP_ILOCK_CD 26
+#define PARAM_TYPE_USER_SERVICE_INFO 29
+#define PARAM_TYPE_SIGNALLING_POINT_CODE 30
+#define PARAM_TYPE_USER_TO_USER_INFO 32
+#define PARAM_TYPE_CONNECTED_NR 33
+#define PARAM_TYPE_SUSP_RESUME_IND 34
+#define PARAM_TYPE_TRANSIT_NETW_SELECT 35
+#define PARAM_TYPE_EVENT_INFO 36
+#define PARAM_TYPE_CIRC_ASSIGN_MAP 37
+#define PARAM_TYPE_CIRC_STATE_IND 38
+#define PARAM_TYPE_AUTO_CONG_LEVEL 39
+#define PARAM_TYPE_ORIG_CALLED_NR 40
+#define PARAM_TYPE_OPT_BACKW_CALL_IND 41
+#define PARAM_TYPE_USER_TO_USER_IND 42
+#define PARAM_TYPE_ORIG_ISC_POINT_CODE 43
+#define PARAM_TYPE_GENERIC_NOTIF_IND 44
+#define PARAM_TYPE_CALL_HIST_INFO 45
+#define PARAM_TYPE_ACC_DELIV_INFO 46
+#define PARAM_TYPE_NETW_SPECIFIC_FACLTY 47
+#define PARAM_TYPE_USER_SERVICE_INFO_PR 48
+#define PARAM_TYPE_PROPAG_DELAY_COUNTER 49
+#define PARAM_TYPE_REMOTE_OPERATIONS 50
+#define PARAM_TYPE_SERVICE_ACTIVATION 51
+#define PARAM_TYPE_USER_TELESERV_INFO 52
+#define PARAM_TYPE_TRANSM_MEDIUM_USED 53
+#define PARAM_TYPE_CALL_DIV_INFO 54
+#define PARAM_TYPE_ECHO_CTRL_INFO 55
+#define PARAM_TYPE_MSG_COMPAT_INFO 56
+#define PARAM_TYPE_PARAM_COMPAT_INFO 57
+#define PARAM_TYPE_MLPP_PRECEDENCE 58
+#define PARAM_TYPE_MCID_REQ_IND 59
+#define PARAM_TYPE_MCID_RSP_IND 60
+#define PARAM_TYPE_HOP_COUNTER 61
+#define PARAM_TYPE_TRANSM_MEDIUM_RQUR_PR 62
+#define PARAM_TYPE_LOCATION_NR 63
+#define PARAM_TYPE_REDIR_NR_RSTRCT 64
+#define PARAM_TYPE_CALL_TRANS_REF 67
+#define PARAM_TYPE_LOOP_PREV_IND 68
+#define PARAM_TYPE_CALL_TRANS_NR 69
+#define PARAM_TYPE_CCSS 75
+#define PARAM_TYPE_FORW_GVNS 76
+#define PARAM_TYPE_BACKW_GVNS 77
+#define PARAM_TYPE_REDIRECT_CAPAB 78
+#define PARAM_TYPE_NETW_MGMT_CTRL 91
+#define PARAM_TYPE_CORRELATION_ID 101
+#define PARAM_TYPE_SCF_ID 102
+#define PARAM_TYPE_CALL_DIV_TREAT_IND 110
+#define PARAM_TYPE_CALLED_IN_NR 111
+#define PARAM_TYPE_CALL_OFF_TREAT_IND 112
+#define PARAM_TYPE_CHARGED_PARTY_IDENT 113
+#define PARAM_TYPE_CONF_TREAT_IND 114
+#define PARAM_TYPE_DISPLAY_INFO 115
+#define PARAM_TYPE_UID_ACTION_IND 116
+#define PARAM_TYPE_UID_CAPAB_IND 117
+#define PARAM_TYPE_REDIRECT_COUNTER 119
+#define PARAM_TYPE_APPLICATON_TRANS 120
+#define PARAM_TYPE_COLLECT_CALL_REQ 121
+#define PARAM_TYPE_CALLING_GEODETIC_LOCATION 129 /* ANSI is the same */
+#define PARAM_TYPE_GENERIC_NR 192
+#define PARAM_TYPE_GENERIC_DIGITS 193
+#define PARAM_TYPE_JURISDICTION 196
+#define PARAM_TYPE_GENERIC_NAME 199
+#define PARAM_TYPE_ORIG_LINE_INFO 234
+#define PARAM_TYPE_CHARGE_NR 235
+
+#define ANSI_ISUP_PARAM_TYPE_OPER_SERV_INF 0xC2 /* 194 */
+#define ANSI_ISUP_PARAM_TYPE_EGRESS 0xC3 /* 195 */
+#define ANSI_ISUP_PARAM_TYPE_JURISDICTION 0xC4 /* 196 */
+#define ANSI_ISUP_PARAM_TYPE_CARRIER_ID 0xC5 /* 197 */
+#define ANSI_ISUP_PARAM_TYPE_BUSINESS_GRP 0xC6 /* 198 */
+#define ANSI_ISUP_PARAM_TYPE_GENERIC_NAME 0xC7 /* 199*/
+#define ANSI_ISUP_PARAM_TYPE_NOTIF_IND 0xE1 /* 225 */
+
+#define ANSI_ISUP_PARAM_TYPE_CG_CHAR_IND 229
+#define ANSI_ISUP_PARAM_TYPE_CVR_RESP_IND 230
+#define ANSI_ISUP_PARAM_TYPE_OUT_TRK_GRP_NM 231
+#define ANSI_ISUP_PARAM_TYPE_CI_NAME_IND 232
+#define ANSI_ISUP_PARAM_CLLI_CODE 233
+
+#define ANSI_ISUP_PARAM_ORIG_LINE_INF 0xEA /* 234 */
+#define ANSI_ISUP_PARAM_CHRG_NO 0xEB /* 235 */
+#define ANSI_ISUP_PARAM_SERV_CODE_IND 0xEC /* 236 */
+#define ANSI_ISUP_PARAM_SPEC_PROC_REQ 0xED /* 237 */
+#define ANSI_ISUP_PARAM_CARRIER_SEL_INF 0xEE /* 238 */
+#define ANSI_ISUP_PARAM_NET_TRANS 0xEF /* 239 */
+
+extern const value_string isup_parameter_type_value[];
+
+extern value_string_ext isup_transmission_medium_requirement_value_ext;
+extern value_string_ext bearer_network_connection_characteristics_vals_ext;
+extern value_string_ext x213_afi_value_ext;
+
+WS_VAR_IMPORT value_string_ext isup_calling_partys_category_value_ext;
/*
* Export dissection of some parameters
*/
diff --git a/epan/dissectors/packet-q931.c b/epan/dissectors/packet-q931.c
index eece2c054a..4518060272 100644
--- a/epan/dissectors/packet-q931.c
+++ b/epan/dissectors/packet-q931.c
@@ -112,8 +112,8 @@ static int hf_q931_segment_overlap_conflict = -1;
static int hf_q931_segment_multiple_tails = -1;
static int hf_q931_segment_too_long_segment = -1;
static int hf_q931_segment_error = -1;
-static int hf_q931_reassembled_in = -1;
-static int hf_q931_reassembled_length = -1;
+static int hf_q931_reassembled_in = -1;
+static int hf_q931_reassembled_length = -1;
static gint ett_q931 = -1;
static gint ett_q931_ie = -1;
@@ -154,7 +154,7 @@ static gboolean q931_desegment = TRUE;
static dissector_handle_t h225_handle;
static dissector_handle_t q931_tpkt_handle;
static dissector_handle_t q931_tpkt_pdu_handle;
-static dissector_handle_t data_handle = NULL;
+static dissector_handle_t data_handle = NULL;
static heur_dissector_list_t q931_user_heur_subdissector_list;
@@ -166,50 +166,52 @@ const value_string q931_message_type_vals[] = {
{ Q931_ESCAPE, "ESCAPE" },
{ Q931_ALERTING, "ALERTING" },
{ Q931_CALL_PROCEEDING, "CALL PROCEEDING" },
- { Q931_CONNECT, "CONNECT" },
- { Q931_CONNECT_ACK, "CONNECT ACKNOWLEDGE" },
{ Q931_PROGRESS, "PROGRESS" },
{ Q931_SETUP, "SETUP" },
+ { Q931_GROUIP_SERVICE, "GROUP SERVICE" },
+ { Q931_CONNECT, "CONNECT" },
+ { Q931_RESYNC_REQ, "RESYNC REQ" },
+ { Q931_RESYNC_RESP, "RESYNC RESP" },
+ { Q931_VERSION, "VERSION" },
+ { Q931_GROUIP_SERVICE_ACK, "GROUP SERVICE ACK" },
{ Q931_SETUP_ACK, "SETUP ACKNOWLEDGE" },
+ { Q931_CONNECT_ACK, "CONNECT ACKNOWLEDGE" },
+ { Q931_USER_INFORMATION, "USER INFORMATION" },
+ { Q931_SUSPEND_REJECT, "SUSPEND REJECT" },
+ { Q931_RESUME_REJECT, "RESUME REJECT" },
{ Q931_HOLD, "HOLD" },
- { Q931_HOLD_ACK, "HOLD_ACKNOWLEDGE" },
- { Q931_HOLD_REJECT, "HOLD_REJECT" },
+ { Q931_SUSPEND, "SUSPEND" },
{ Q931_RESUME, "RESUME" },
+ { Q931_HOLD_ACK, "HOLD_ACKNOWLEDGE" },
+ { Q931_SUSPEND_ACK, "SUSPEND ACKNOWLEDGE" },
{ Q931_RESUME_ACK, "RESUME ACKNOWLEDGE" },
- { Q931_RESUME_REJECT, "RESUME REJECT" },
+ { Q931_HOLD_REJECT, "HOLD_REJECT" },
{ Q931_RETRIEVE, "RETRIEVE" },
{ Q931_RETRIEVE_ACK, "RETRIEVE ACKNOWLEDGE" },
{ Q931_RETRIEVE_REJECT, "RETRIEVE REJECT" },
- { Q931_SUSPEND, "SUSPEND" },
- { Q931_SUSPEND_ACK, "SUSPEND ACKNOWLEDGE" },
- { Q931_SUSPEND_REJECT, "SUSPEND REJECT" },
- { Q931_USER_INFORMATION, "USER INFORMATION" },
{ Q931_DETACH, "DETACH" },
- { Q931_DETACH_ACKNOWLEDGE, "DETACH ACKNOWLEDGE" },
{ Q931_DISCONNECT, "DISCONNECT" },
- { Q931_RELEASE, "RELEASE" },
- { Q931_RELEASE_COMPLETE, "RELEASE COMPLETE" },
{ Q931_RESTART, "RESTART" },
+ { Q931_DETACH_ACKNOWLEDGE, "DETACH ACKNOWLEDGE" },
+ { Q931_RELEASE, "RELEASE" },
{ Q931_RESTART_ACK, "RESTART ACKNOWLEDGE" },
- { Q931_CONGESTION_CONTROL, "CONGESTION CONTROL" },
+ { Q931_RELEASE_COMPLETE, "RELEASE COMPLETE" },
+ { Q931_SEGMENT, "SEGMENT" },
{ Q931_FACILITY, "FACILITY" },
- { Q931_FACILITY_ACKNOWLEDGE, "FACILITY ACKNOWLEDGE" },
- { Q931_FACILITY_REJECT, "FACILITY REJECT" },
- { Q931_INFORMATION, "INFORMATION" },
- { Q931_NOTIFY, "NOTIFY" },
{ Q931_REGISTER, "REGISTER" },
- { Q931_SEGMENT, "SEGMENT" },
- { Q931_STATUS, "STATUS" },
+ { Q931_FACILITY_ACKNOWLEDGE, "FACILITY ACKNOWLEDGE" },
+ { Q931_NOTIFY, "NOTIFY" },
+ { Q931_FACILITY_REJECT, "FACILITY REJECT" },
{ Q931_STATUS_ENQUIRY, "STATUS ENQUIRY" },
- { Q931_VERSION, "VERSION" },
- { Q931_GROUIP_SERVICE, "GROUP SERVICE" },
- { Q931_GROUIP_SERVICE_ACK, "GROUP SERVICE ACK" },
- { Q931_RESYNC_REQ, "RESYNC REQ" },
- { Q931_RESYNC_RESP, "RESYNC RESP" },
+ { Q931_CONGESTION_CONTROL, "CONGESTION CONTROL" },
+ { Q931_INFORMATION, "INFORMATION" },
+ { Q931_STATUS, "STATUS" },
+
{ 0, NULL }
};
+static value_string_ext q931_message_type_vals_ext = VALUE_STRING_EXT_INIT(q931_message_type_vals);
-const value_string dms_message_type_vals[] = {
+static const value_string dms_message_type_vals[] = {
{ DMS_SERVICE_ACKNOWLEDGE, "SERVICE ACKNOWLEDGE" },
{ DMS_SERVICE, "SERVICE" },
{ 0, NULL }
@@ -426,6 +428,7 @@ static const value_string q931_info_element_vals0[] = {
{ Q931_IE_CONNECTED_SUBADDR, "Connected subaddress" },
{ 0, NULL }
};
+
/* Codeset 1 */
static const value_string q931_info_element_vals1[] = {
{ 0, NULL }
@@ -572,6 +575,7 @@ static const value_string q931_uil1_vals[] = {
{ 0x0b, "Recommendation G.729 CS-ACELP" },
{ 0, NULL }
};
+static value_string_ext q931_uil1_vals_ext = VALUE_STRING_EXT_INIT(q931_uil1_vals);
static const value_string q931_l1_user_rate_vals[] = {
{ 0x00, "Rate indicated by E-bits" },
@@ -603,6 +607,7 @@ static const value_string q931_l1_user_rate_vals[] = {
{ 0x1F, "12 kbit/s" },
{ 0, NULL }
};
+static value_string_ext q931_l1_user_rate_vals_ext = VALUE_STRING_EXT_INIT(q931_l1_user_rate_vals);
static const value_string q931_l1_intermediate_rate_vals[] = {
{ 0x20, "8 kbit/s" },
@@ -650,6 +655,7 @@ static const value_string q931_l1_modem_type_vals[] = {
{ 0x1E, "V.34" },
{ 0, NULL }
};
+static value_string_ext q931_l1_modem_type_vals_ext = VALUE_STRING_EXT_INIT(q931_l1_modem_type_vals);
#define Q931_UIL2_USER_SPEC 0x10
@@ -670,6 +676,7 @@ static const value_string q931_uil2_vals[] = {
{ 0x11, "ISO 7776 DTE-DTE operation" },
{ 0, NULL }
};
+static value_string_ext q931_uil2_vals_ext = VALUE_STRING_EXT_INIT(q931_uil2_vals);
static const value_string q931_mode_vals[] = {
{ 0x20, "Normal mode" },
@@ -736,7 +743,7 @@ static const value_string q931_bearer_capability_layer_ident_vals[] = {
{ 0x02, "Layer 2 identifier" },
{ 0x03, "Layer 3 identifier" },
{ 0x00, NULL }
-};
+};
void
dissect_q931_bearer_capability_ie(tvbuff_t *tvb, int offset, int len,
@@ -830,7 +837,7 @@ dissect_q931_bearer_capability_ie(tvbuff_t *tvb, int offset, int len,
(octet & 0x20) ? "" : "not ");
proto_tree_add_text(tree, tvb, offset, 1,
"User rate: %s",
- val_to_str(octet & 0x1F, q931_l1_user_rate_vals,
+ val_to_str_ext(octet & 0x1F, &q931_l1_user_rate_vals_ext,
"Unknown (0x%02X)"));
offset += 1;
len -= 1;
@@ -922,7 +929,7 @@ dissect_q931_bearer_capability_ie(tvbuff_t *tvb, int offset, int len,
} else {
proto_tree_add_text(tree, tvb, offset, 1,
"Modem type: %s",
- val_to_str(modem_type, q931_l1_modem_type_vals,
+ val_to_str_ext(modem_type, &q931_l1_modem_type_vals_ext,
"Unknown (0x%02X)"));
}
offset += 1;
@@ -943,7 +950,7 @@ l1_done:
uil2_protocol = octet & 0x1F;
proto_tree_add_text(tree, tvb, offset, 1,
"User information layer 2 protocol: %s",
- val_to_str(uil2_protocol, q931_uil2_vals,
+ val_to_str_ext(uil2_protocol, &q931_uil2_vals_ext,
"Unknown (0x%02X)"));
offset += 1;
len -= 1;
@@ -1075,7 +1082,7 @@ l3_done:
*/
-const value_string q931_cause_location_vals[] = {
+static const value_string q931_cause_location_vals[] = {
{ 0x00, "User (U)" },
{ 0x01, "Private network serving the local user (LPN)" },
{ 0x02, "Public network serving the local user (LN)" },
@@ -1086,6 +1093,7 @@ const value_string q931_cause_location_vals[] = {
{ 0x0A, "Network beyond interworking point (BI)" },
{ 0, NULL }
};
+value_string_ext q931_cause_location_vals_ext = VALUE_STRING_EXT_INIT(q931_cause_location_vals);
static const value_string q931_cause_recommendation_vals[] = {
{ 0x00, "Q.931" },
@@ -1113,7 +1121,7 @@ static const value_string q931_cause_recommendation_vals[] = {
#define Q931_CAUSE_MSG_INCOMPAT_W_CS 0x65
#define Q931_CAUSE_REC_TIMER_EXP 0x66
-const value_string q931_cause_code_vals[] = {
+static const value_string q931_cause_code_vals[] = {
{ 0x00, "Valid cause code not yet received" },
{ Q931_CAUSE_UNALLOC_NUMBER, "Unallocated (unassigned) number" },
{ 0x02, "No route to specified transit network" },
@@ -1211,6 +1219,7 @@ const value_string q931_cause_code_vals[] = {
{ 0x7F, "Internetworking, unspecified" },
{ 0, NULL }
};
+value_string_ext q931_cause_code_vals_ext = VALUE_STRING_EXT_INIT(q931_cause_code_vals);
static const value_string q931_cause_condition_vals[] = {
{ 0x00, "Unknown" },
@@ -1234,7 +1243,7 @@ static const gchar *get_message_name(guint8 prot_discr, guint8 message_type) {
if (prot_discr == NLPID_DMS)
return val_to_str(message_type, dms_message_type_vals, "Unknown (0x%02X)");
else
- return val_to_str(message_type, q931_message_type_vals, "Unknown (0x%02X)");
+ return val_to_str_ext(message_type, &q931_message_type_vals_ext, "Unknown (0x%02X)");
}
static void
@@ -1378,7 +1387,7 @@ dissect_q931_cause_ie_unsafe(tvbuff_t *tvb, int offset, int len,
case Q931_CAUSE_MSG_INCOMPAT_W_CS:
proto_tree_add_text(tree, tvb, offset, 1,
"Message type: %s",
- val_to_str(tvb_get_guint8(tvb, offset), q931_message_type_vals,
+ val_to_str_ext(tvb_get_guint8(tvb, offset), &q931_message_type_vals_ext,
"Unknown (0x%02X)"));
break;
@@ -1441,7 +1450,7 @@ dissect_q931_change_status_ie(tvbuff_t *tvb, int offset, int len _U_, proto_tree
/*
* Dissect a Call state information element.
*/
-const value_string q931_call_state_vals[] = {
+static const value_string q931_call_state_vals[] = {
{ 0x00, "Null" },
{ 0x01, "Call initiated" },
{ 0x02, "Overlap sending" },
@@ -1463,6 +1472,7 @@ const value_string q931_call_state_vals[] = {
{ 0x3E, "Restart" },
{ 0, NULL }
};
+value_string_ext q931_call_state_vals_ext = VALUE_STRING_EXT_INIT(q931_call_state_vals);
static void
dissect_q931_call_state_ie(tvbuff_t *tvb, int offset, int len,
@@ -1488,7 +1498,7 @@ dissect_q931_call_state_ie(tvbuff_t *tvb, int offset, int len,
}
proto_tree_add_text(tree, tvb, offset, 1,
"Call state: %s",
- val_to_str(octet & 0x3F, q931_call_state_vals,
+ val_to_str_ext(octet & 0x3F, &q931_call_state_vals_ext,
"Unknown (0x%02X)"));
}
@@ -1539,7 +1549,7 @@ dissect_q931_channel_identification_ie(tvbuff_t *tvb, int offset, int len,
proto_tree_add_item(tree, hf_q931_channel_interface_type, tvb, offset, 1, FALSE);
proto_tree_add_item(tree, hf_q931_channel_exclusive, tvb, offset, 1, FALSE);
proto_tree_add_item(tree, hf_q931_channel_dchan, tvb, offset, 1, FALSE);
-
+
if (octet & Q931_NOT_BASIC_CHANNEL) {
proto_tree_add_item(tree, hf_q931_channel_selection_pri, tvb, offset, 1, FALSE);
} else {
@@ -1590,7 +1600,7 @@ dissect_q931_channel_identification_ie(tvbuff_t *tvb, int offset, int len,
}
proto_tree_add_item(tree, hf_q931_channel_map, tvb, offset, 1, FALSE);
proto_tree_add_item(tree, hf_q931_channel_element_type, tvb, offset, 1, FALSE);
-
+
offset += 1;
len -= 1;
@@ -1602,7 +1612,7 @@ dissect_q931_channel_identification_ie(tvbuff_t *tvb, int offset, int len,
"Slot map: 0x%02x", octet2);
offset += 1;
len -= 1;
- }
+ }
} else {
guint8 octet2;
do {
@@ -1623,7 +1633,7 @@ dissect_q931_channel_identification_ie(tvbuff_t *tvb, int offset, int len,
/*
* Dissect a Progress indicator information element.
*/
-const value_string q931_progress_description_vals[] = {
+static const value_string q931_progress_description_vals[] = {
{ 0x01, "Call is not end-to-end ISDN - progress information available in-band" },
{ 0x02, "Destination address is non-ISDN" },
{ 0x03, "Origination address is non-ISDN" },
@@ -1632,6 +1642,7 @@ const value_string q931_progress_description_vals[] = {
{ 0x08, "In-band information or an appropriate pattern is now available" },
{ 0, NULL }
};
+value_string_ext q931_progress_description_vals_ext = VALUE_STRING_EXT_INIT(q931_progress_description_vals);
void
dissect_q931_progress_indicator_ie(tvbuff_t *tvb, int offset, int len,
@@ -1657,7 +1668,7 @@ dissect_q931_progress_indicator_ie(tvbuff_t *tvb, int offset, int len,
}
proto_tree_add_text(tree, tvb, offset, 1,
"Location: %s",
- val_to_str(octet & 0x0F, q931_cause_location_vals,
+ val_to_str_ext(octet & 0x0F, &q931_cause_location_vals_ext,
"Unknown (0x%X)"));
offset += 1;
len -= 1;
@@ -1667,7 +1678,7 @@ dissect_q931_progress_indicator_ie(tvbuff_t *tvb, int offset, int len,
octet = tvb_get_guint8(tvb, offset);
proto_tree_add_text(tree, tvb, offset, 1,
"Progress description: %s",
- val_to_str(octet & 0x7F, q931_progress_description_vals,
+ val_to_str_ext(octet & 0x7F, &q931_progress_description_vals_ext,
"Unknown (0x%02X)"));
}
@@ -1823,6 +1834,7 @@ static const value_string q931_signal_vals[] = {
{ 0x4F, "Alerting off" },
{ 0, NULL }
};
+static value_string_ext q931_signal_vals_ext = VALUE_STRING_EXT_INIT(q931_signal_vals);
static void
dissect_q931_signal_ie(tvbuff_t *tvb, int offset, int len,
@@ -1835,7 +1847,7 @@ dissect_q931_signal_ie(tvbuff_t *tvb, int offset, int len,
}
proto_tree_add_text(tree, tvb, offset, 1,
"Signal: %s",
- val_to_str(tvb_get_guint8(tvb, offset), q931_signal_vals,
+ val_to_str_ext(tvb_get_guint8(tvb, offset), &q931_signal_vals_ext,
"Unknown (0x%02X)"));
}
@@ -1856,6 +1868,7 @@ static const value_string q931_throughput_class_vals[] = {
{ 0x0D, "64000 bit/s" },
{ 0, NULL }
};
+static value_string_ext q931_throughput_class_vals_ext = VALUE_STRING_EXT_INIT(q931_throughput_class_vals);
static void
dissect_q931_information_rate_ie(tvbuff_t *tvb, int offset, int len,
@@ -1868,20 +1881,20 @@ dissect_q931_information_rate_ie(tvbuff_t *tvb, int offset, int len,
}
proto_tree_add_text(tree, tvb, offset + 0, 1,
"Incoming information rate: %s",
- val_to_str(tvb_get_guint8(tvb, offset + 0) & 0x1F,
- q931_throughput_class_vals, "Unknown (0x%02X)"));
+ val_to_str_ext(tvb_get_guint8(tvb, offset + 0) & 0x1F,
+ &q931_throughput_class_vals_ext, "Unknown (0x%02X)"));
proto_tree_add_text(tree, tvb, offset + 1, 1,
"Outgoing information rate: %s",
- val_to_str(tvb_get_guint8(tvb, offset + 1) & 0x1F,
- q931_throughput_class_vals, "Unknown (0x%02X)"));
+ val_to_str_ext(tvb_get_guint8(tvb, offset + 1) & 0x1F,
+ &q931_throughput_class_vals_ext, "Unknown (0x%02X)"));
proto_tree_add_text(tree, tvb, offset + 2, 1,
"Minimum incoming information rate: %s",
- val_to_str(tvb_get_guint8(tvb, offset + 2) & 0x1F,
- q931_throughput_class_vals, "Unknown (0x%02X)"));
+ val_to_str_ext(tvb_get_guint8(tvb, offset + 2) & 0x1F,
+ &q931_throughput_class_vals_ext, "Unknown (0x%02X)"));
proto_tree_add_text(tree, tvb, offset + 3, 1,
"Minimum outgoing information rate: %s",
- val_to_str(tvb_get_guint8(tvb, offset + 3) & 0x1F,
- q931_throughput_class_vals, "Unknown (0x%02X)"));
+ val_to_str_ext(tvb_get_guint8(tvb, offset + 3) & 0x1F,
+ &q931_throughput_class_vals_ext, "Unknown (0x%02X)"));
}
static int
@@ -2189,7 +2202,7 @@ dissect_q931_number_ie(tvbuff_t *tvb, int offset, int len,
proto_tree_add_uint(tree, hf_q931_numbering_plan, tvb, offset, 1, octet);
proto_tree_add_uint(tree, hf_q931_number_type, tvb, offset, 1, octet);
proto_tree_add_boolean(tree, hf_q931_extension_ind, tvb, offset, 1, octet);
-
+
offset += 1;
len -= 1;
@@ -2330,9 +2343,10 @@ static const value_string q931_high_layer_characteristics_vals[] = {
{ Q931_AUDIOVISUAL, "F.720/F.821 and F.731 Profile 1a videotelephony" },
{ 0x61, "F.702 and F.731 Profile 1b videoconferencing" },
{ 0x62, "F.702 and F.731 audiographic conferencing" },
- { 0x68, "F.700-series Multimedia services" },
+ { 0x68, "F.700-series Multimedia services" },
{ 0, NULL }
};
+static value_string_ext q931_high_layer_characteristics_vals_ext = VALUE_STRING_EXT_INIT(q931_high_layer_characteristics_vals);
static const value_string q931_extended_high_layer_characteristics_vals[] = {
{ 0x01, "Telephony" },
@@ -2352,9 +2366,10 @@ static const value_string q931_extended_high_layer_characteristics_vals[] = {
{ Q931_AUDIOVISUAL, "F.720/F.821 and F.731 Profile 1a videotelephony" },
{ 0x61, "F.702 and F.731 Profile 1b videoconferencing" },
{ 0x62, "F.702 and F.731 audiographic conferencing" },
- { 0x68, "F.700-series Multimedia services" },
+ { 0x68, "F.700-series Multimedia services" },
{ 0, NULL }
};
+static value_string_ext q931_extended_high_layer_characteristics_vals_ext = VALUE_STRING_EXT_INIT(q931_extended_high_layer_characteristics_vals);
static const value_string q931_audiovisual_characteristics_vals[] = {
{ 0x01, "Capability set of initial channel of H.221" },
@@ -2430,11 +2445,11 @@ dissect_q931_high_layer_compat_ie(tvbuff_t *tvb, int offset, int len,
(characteristics == 0x68)) {
proto_tree_add_item(tree, hf_q931_extension_ind, tvb, offset, 1, FALSE);
proto_tree_add_uint(tree, hf_q931_extended_audiovisual_characteristics, tvb, offset, 1, octet);
- }
+ }
else if ((characteristics == Q931_MANAGEMENT) || (characteristics == Q931_MAINTENANCE)) {
proto_tree_add_item(tree, hf_q931_extension_ind, tvb, offset, 1, FALSE);
proto_tree_add_uint(tree, hf_q931_extended_high_layer_characteristics, tvb, offset, 1, octet);
- }
+ }
}
}
@@ -2446,7 +2461,7 @@ dissect_q931_high_layer_compat_ie(tvbuff_t *tvb, int offset, int len,
#define Q931_PROTOCOL_DISCRIMINATOR_IA5 0x04
#define Q931_PROTOCOL_DISCRIMINATOR_ASN1 0x05
-const value_string q931_protocol_discriminator_vals[] = {
+static const value_string q931_protocol_discriminator_vals[] = {
{ Q931_PROTOCOL_DISCRIMINATOR_USER, "User-specific protocol" },
{ 0x01, "OSI high layer protocols" },
{ 0x02, "X.244" },
@@ -2456,6 +2471,7 @@ const value_string q931_protocol_discriminator_vals[] = {
{ 0x08, "Q.931/I.451 user-network call control messages" },
{ 0, NULL }
};
+value_string_ext q931_protocol_discriminator_vals_ext = VALUE_STRING_EXT_INIT(q931_protocol_discriminator_vals);
void
dissect_q931_user_user_ie(tvbuff_t *tvb, packet_info *pinfo, int offset, int len,
@@ -2469,7 +2485,7 @@ dissect_q931_user_user_ie(tvbuff_t *tvb, packet_info *pinfo, int offset, int len
octet = tvb_get_guint8(tvb, offset);
proto_tree_add_text(tree, tvb, offset, 1,
"Protocol discriminator: %s",
- val_to_str(octet, q931_protocol_discriminator_vals,
+ val_to_str_ext(octet, &q931_protocol_discriminator_vals_ext,
"Unknown (0x%02x)"));
offset += 1;
len -= 1;
@@ -2556,7 +2572,7 @@ dissect_q931_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
guint8 message_type, segmented_message_type;
guint8 info_element;
guint16 info_element_len;
- gboolean first_frag, more_frags;
+ gboolean first_frag, more_frags;
guint32 frag_len;
fragment_data *fd_head;
tvbuff_t *next_tvb = NULL;
@@ -2588,7 +2604,7 @@ dissect_q931_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
case 2: call_ref_val = tvb_get_ntohs(tvb, offset); break;
case 3: call_ref_val = tvb_get_ntoh24(tvb, offset); break;
default: call_ref_val = tvb_get_ntohl(tvb, offset);
- }
+ }
if (call_ref_len != 0) {
tvb_memcpy(tvb, call_ref, offset, call_ref_len);
if (q931_tree != NULL) {
@@ -2623,7 +2639,7 @@ dissect_q931_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
/*
* And now for the information elements....
*/
- if ((message_type != Q931_SEGMENT) || !q931_reassembly ||
+ if ((message_type != Q931_SEGMENT) || !q931_reassembly ||
(tvb_reported_length_remaining(tvb, offset) <= 4)) {
dissect_q931_IEs(tvb, pinfo, tree, q931_tree, is_over_ip, offset, 0);
return;
@@ -2646,8 +2662,8 @@ dissect_q931_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
more_frags = (tvb_get_guint8(tvb, offset + 2) & 0x7F) != 0;
segmented_message_type = tvb_get_guint8(tvb, offset + 3);
if (check_col(pinfo->cinfo, COL_INFO)) {
- col_append_fstr(pinfo->cinfo, COL_INFO, " of %s",
- val_to_str(segmented_message_type, q931_message_type_vals, "Unknown message type (0x%02X)"));
+ col_append_fstr(pinfo->cinfo, COL_INFO, " of %s",
+ val_to_str_ext(segmented_message_type, &q931_message_type_vals_ext, "Unknown message type (0x%02X)"));
}
offset += 1 + 1 + info_element_len;
/* Reassembly */
@@ -2674,7 +2690,7 @@ dissect_q931_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
}
if (check_col(pinfo->cinfo, COL_INFO)) {
col_add_fstr(pinfo->cinfo, COL_INFO, "%s [reassembled]",
- val_to_str(segmented_message_type, q931_message_type_vals, "Unknown message type (0x%02X)"));
+ val_to_str_ext(segmented_message_type, &q931_message_type_vals_ext, "Unknown message type (0x%02X)"));
}
} else {
if (tree) proto_tree_add_uint(q931_tree, hf_q931_reassembled_in, tvb, offset, frag_len, fd_head->reassembled_in);
@@ -2755,7 +2771,7 @@ dissect_q931_IEs(tvbuff_t *tvb, packet_info *pinfo, proto_tree *root_tree,
switch ((codeset << 8) | (info_element & Q931_IE_SO_IDENTIFIER_MASK)) {
case CS0 | Q931_IE_MORE_DATA_OR_SEND_COMP:
- switch (info_element) {
+ switch (info_element) {
case Q931_IE_MORE_DATA:
if (q931_tree != NULL) {
@@ -2845,14 +2861,14 @@ dissect_q931_IEs(tvbuff_t *tvb, packet_info *pinfo, proto_tree *root_tree,
2, "Length: %u", info_element_len);
proto_tree_add_text(ie_tree, tvb, offset + 3,
1, "Protocol discriminator: %s",
- val_to_str(tvb_get_guint8(tvb, offset + 3),
- q931_protocol_discriminator_vals,
+ val_to_str_ext(tvb_get_guint8(tvb, offset + 3),
+ &q931_protocol_discriminator_vals_ext,
"Unknown (0x%02x)"));
}
if (info_element_len > 1) {
/*
- * If we don't desegment limit the length
+ * If we don't desegment limit the length
* to the actual size in the frame
*/
if (!pinfo->can_desegment) {
@@ -2921,7 +2937,7 @@ dissect_q931_IEs(tvbuff_t *tvb, packet_info *pinfo, proto_tree *root_tree,
dissect_q931_segmented_message_ie(tvb, offset + 2, info_element_len, ie_tree);
if (check_col(pinfo->cinfo, COL_INFO)) {
col_append_fstr(pinfo->cinfo, COL_INFO, " of %s",
- val_to_str(tvb_get_guint8(tvb, offset + 3), q931_message_type_vals, "Unknown message type (0x%02X)"));
+ val_to_str_ext(tvb_get_guint8(tvb, offset + 3), &q931_message_type_vals_ext, "Unknown message type (0x%02X)"));
}
if (tvb_get_guint8(tvb, offset + 2) & 0x80) { /* the 1st segment */
first_segment = TRUE;
@@ -3317,7 +3333,7 @@ dissect_q931_ie_cs7(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
dissect_q931_IEs(tvb, pinfo, NULL, tree, FALSE, 0, 7);
}
-static void
+static void
q931_init(void) {
/* Initialize the fragment and reassembly tables */
fragment_table_init(&q931_fragment_table);
@@ -3345,7 +3361,7 @@ proto_register_q931(void)
NULL, HFILL }},
{ &hf_q931_message_type,
- { "Message type", "q931.message_type", FT_UINT8, BASE_HEX, VALS(q931_message_type_vals), 0x0,
+ { "Message type", "q931.message_type", FT_UINT8, BASE_HEX|BASE_EXT_STRING, &q931_message_type_vals_ext, 0x0,
NULL, HFILL }},
{ &hf_q931_maintenance_message_type,
@@ -3353,7 +3369,7 @@ proto_register_q931(void)
NULL, HFILL }},
{ &hf_q931_segment_type,
- { "Segmented message type", "q931.segment_type", FT_UINT8, BASE_HEX, VALS(q931_message_type_vals), 0x0,
+ { "Segmented message type", "q931.segment_type", FT_UINT8, BASE_HEX|BASE_EXT_STRING, &q931_message_type_vals_ext, 0x0,
NULL, HFILL }},
{ &hf_q931_coding_standard,
@@ -3369,12 +3385,12 @@ proto_register_q931(void)
VALS(q931_pres_meth_prot_prof_vals), 0x03, NULL, HFILL}},
{ &hf_q931_high_layer_characteristics,
- { "High layer characteristics identification", "q931.high_layer_characteristics", FT_UINT8, BASE_HEX,
- VALS(q931_high_layer_characteristics_vals), 0x7f, NULL, HFILL }},
+ { "High layer characteristics identification", "q931.high_layer_characteristics", FT_UINT8, BASE_HEX|BASE_EXT_STRING,
+ &q931_high_layer_characteristics_vals_ext, 0x7f, NULL, HFILL }},
{ &hf_q931_extended_high_layer_characteristics,
- { "Extended high layer characteristics identification", "q931.extended_high_layer_characteristics", FT_UINT8, BASE_HEX,
- VALS(q931_extended_high_layer_characteristics_vals), 0x7f, NULL, HFILL }},
+ { "Extended high layer characteristics identification", "q931.extended_high_layer_characteristics", FT_UINT8, BASE_HEX|BASE_EXT_STRING,
+ &q931_extended_high_layer_characteristics_vals_ext, 0x7f, NULL, HFILL }},
{ &hf_q931_extended_audiovisual_characteristics,
{ "Extended audiovisual characteristics identification", "q931.extended_audiovisual_characteristics", FT_UINT8, BASE_HEX,
@@ -3397,15 +3413,15 @@ proto_register_q931(void)
VALS(q931_bearer_capability_layer_ident_vals), 0x60, NULL, HFILL }},
{ &hf_q931_uil1,
- { "User information layer 1 protocol", "q931.uil1", FT_UINT8, BASE_HEX,
- VALS(q931_uil1_vals), 0x1f,NULL, HFILL }},
+ { "User information layer 1 protocol", "q931.uil1", FT_UINT8, BASE_HEX|BASE_EXT_STRING,
+ &q931_uil1_vals_ext, 0x1f,NULL, HFILL }},
{ &hf_q931_cause_location,
- { "Cause location", "q931.cause_location", FT_UINT8, BASE_DEC, VALS(q931_cause_location_vals), 0x0f,
+ { "Cause location", "q931.cause_location", FT_UINT8, BASE_DEC|BASE_EXT_STRING, &q931_cause_location_vals_ext, 0x0f,
NULL, HFILL }},
{ &hf_q931_cause_value,
- { "Cause value", "q931.cause_value", FT_UINT8, BASE_DEC, VALS(q931_cause_code_vals), 0x7f,
+ { "Cause value", "q931.cause_value", FT_UINT8, BASE_DEC|BASE_EXT_STRING, &q931_cause_code_vals_ext, 0x7f,
NULL, HFILL }},
{ &hf_q931_number_type,
@@ -3517,11 +3533,11 @@ proto_register_q931(void)
{ &hf_q931_reassembled_in,
{ "Reassembled Q.931 in frame", "q931.reassembled_in", FT_FRAMENUM, BASE_NONE, NULL, 0x0,
- "This Q.931 message is reassembled in this frame", HFILL}},
+ "This Q.931 message is reassembled in this frame", HFILL}},
{ &hf_q931_reassembled_length,
{ "Reassembled Q.931 length", "q931.reassembled.length", FT_UINT32, BASE_DEC, NULL, 0x0,
- "The total length of the reassembled payload", HFILL}},
+ "The total length of the reassembled payload", HFILL}},
};
static gint *ett[] = {
&ett_q931,
diff --git a/epan/dissectors/packet-q931.h b/epan/dissectors/packet-q931.h
index 1485ec2b68..fc234d69b6 100644
--- a/epan/dissectors/packet-q931.h
+++ b/epan/dissectors/packet-q931.h
@@ -42,14 +42,14 @@ extern void dissect_q931_high_layer_compat_ie(tvbuff_t *, int, int,
extern void dissect_q931_user_user_ie(tvbuff_t *tvb, packet_info *pinfo, int offset, int len,
proto_tree *tree);
-extern const value_string q931_cause_location_vals[];
+extern value_string_ext q931_cause_location_vals_ext;
typedef struct _q931_packet_info {
gchar *calling_number;
gchar *called_number;
guint8 cause_value;
gint32 crv;
- guint8 message_type;
+ guint8 message_type;
} q931_packet_info;
/*
@@ -57,65 +57,65 @@ typedef struct _q931_packet_info {
* without having to duplicate it. With MSVC and a
* libwireshark.dll, we need a special declaration.
*/
-WS_VAR_IMPORT const value_string q931_cause_code_vals[];
+WS_VAR_IMPORT value_string_ext q931_cause_code_vals_ext;
WS_VAR_IMPORT const value_string q931_message_type_vals[];
-extern const value_string q931_protocol_discriminator_vals[];
-extern const value_string q931_progress_description_vals[];
-extern const value_string q931_call_state_vals[];
+extern value_string_ext q931_protocol_discriminator_vals_ext;
+extern value_string_ext q931_progress_description_vals_ext;
+extern value_string_ext q931_call_state_vals_ext;
/*
* Q.931 message types.
*/
-#define Q931_ESCAPE 0x00
-#define Q931_ALERTING 0x01
-#define Q931_CALL_PROCEEDING 0x02
-#define Q931_CONNECT 0x07
-#define Q931_CONNECT_ACK 0x0F
-#define Q931_PROGRESS 0x03
-#define Q931_SETUP 0x05
-#define Q931_SETUP_ACK 0x0D
-#define Q931_HOLD 0x24
-#define Q931_HOLD_ACK 0x28
-#define Q931_HOLD_REJECT 0x30
-#define Q931_RESUME 0x26
-#define Q931_RESUME_ACK 0x2E
-#define Q931_RESUME_REJECT 0x22
-#define Q931_RETRIEVE 0x31
-#define Q931_RETRIEVE_ACK 0x33
-#define Q931_RETRIEVE_REJECT 0x37
-#define Q931_SUSPEND 0x25
-#define Q931_SUSPEND_ACK 0x2D
-#define Q931_SUSPEND_REJECT 0x21
-#define Q931_USER_INFORMATION 0x20
-#define Q931_DETACH 0x40
-#define Q931_DETACH_ACKNOWLEDGE 0x48
-#define Q931_DISCONNECT 0x45
-#define Q931_RELEASE 0x4D
-#define Q931_RELEASE_COMPLETE 0x5A
-#define Q931_RESTART 0x46
-#define Q931_RESTART_ACK 0x4E
-#define Q931_CONGESTION_CONTROL 0x79
-#define Q931_FACILITY 0x62
-#define Q931_FACILITY_ACKNOWLEDGE 0x6A
-#define Q931_FACILITY_REJECT 0x72
-#define Q931_INFORMATION 0x7B
-#define Q931_NOTIFY 0x6E
-#define Q931_REGISTER 0x64
-#define Q931_SEGMENT 0x60
-#define Q931_STATUS 0x7D
-#define Q931_STATUS_ENQUIRY 0x75
-#define Q931_VERSION 0x0a
-#define Q931_GROUIP_SERVICE 0x06
-#define Q931_GROUIP_SERVICE_ACK 0x0b
-#define Q931_RESYNC_REQ 0x08
-#define Q931_RESYNC_RESP 0x09
+#define Q931_ESCAPE 0x00
+#define Q931_ALERTING 0x01
+#define Q931_CALL_PROCEEDING 0x02
+#define Q931_PROGRESS 0x03
+#define Q931_SETUP 0x05
+#define Q931_GROUIP_SERVICE 0x06
+#define Q931_CONNECT 0x07
+#define Q931_RESYNC_REQ 0x08
+#define Q931_RESYNC_RESP 0x09
+#define Q931_VERSION 0x0A
+#define Q931_GROUIP_SERVICE_ACK 0x0B
+#define Q931_SETUP_ACK 0x0D
+#define Q931_CONNECT_ACK 0x0F
+#define Q931_USER_INFORMATION 0x20
+#define Q931_SUSPEND_REJECT 0x21
+#define Q931_RESUME_REJECT 0x22
+#define Q931_HOLD 0x24
+#define Q931_SUSPEND 0x25
+#define Q931_RESUME 0x26
+#define Q931_HOLD_ACK 0x28
+#define Q931_SUSPEND_ACK 0x2D
+#define Q931_RESUME_ACK 0x2E
+#define Q931_HOLD_REJECT 0x30
+#define Q931_RETRIEVE 0x31
+#define Q931_RETRIEVE_ACK 0x33
+#define Q931_RETRIEVE_REJECT 0x37
+#define Q931_DETACH 0x40
+#define Q931_DISCONNECT 0x45
+#define Q931_RESTART 0x46
+#define Q931_DETACH_ACKNOWLEDGE 0x48
+#define Q931_RELEASE 0x4D
+#define Q931_RESTART_ACK 0x4E
+#define Q931_RELEASE_COMPLETE 0x5A
+#define Q931_SEGMENT 0x60
+#define Q931_FACILITY 0x62
+#define Q931_REGISTER 0x64
+#define Q931_FACILITY_ACKNOWLEDGE 0x6A
+#define Q931_NOTIFY 0x6E
+#define Q931_FACILITY_REJECT 0x72
+#define Q931_STATUS_ENQUIRY 0x75
+#define Q931_CONGESTION_CONTROL 0x79
+#define Q931_INFORMATION 0x7B
+#define Q931_STATUS 0x7D
/*
* Maintenance message types.
* AT&T TR41459, Nortel NIS A211-1, Telcordia SR-4994, ...
*/
-#define DMS_SERVICE_ACKNOWLEDGE 0x07
-#define DMS_SERVICE 0x0F
+#define DMS_SERVICE_ACKNOWLEDGE 0x07
+#define DMS_SERVICE 0x0F
#endif
diff --git a/epan/dissectors/packet-sip.c b/epan/dissectors/packet-sip.c
index 05763db2ed..52c6ce1123 100644
--- a/epan/dissectors/packet-sip.c
+++ b/epan/dissectors/packet-sip.c
@@ -1414,7 +1414,7 @@ dissect_sip_reason_header(tvbuff_t *tvb, proto_tree *tree, gint start_offset, gi
cause_value = atoi(tvb_get_ephemeral_string(tvb, current_offset, length));
proto_tree_add_text(tree, tvb, current_offset, length,
"Cause: %u(0x%x)[%s]", cause_value,cause_value,
- val_to_str(cause_value, q850_cause_code_vals, "Unknown (%d)" ));
+ val_to_str_ext(cause_value, &q850_cause_code_vals_ext, "Unknown (%d)" ));
}
diff --git a/epan/libwireshark.def b/epan/libwireshark.def
index 3f493758b2..beca4ce082 100644
--- a/epan/libwireshark.def
+++ b/epan/libwireshark.def
@@ -622,9 +622,8 @@ ipv4_get_net_order_addr
is_big_endian
is_default_profile
is_tpkt
-isup_calling_partys_category_value DATA
-isup_message_type_value_acro DATA
-isup_message_type_value DATA
+isup_calling_partys_category_value_ext DATA
+isup_message_type_value_acro_ext DATA
list_stat_cmd_args
llc_add_oui
LocationRejectReason_vals DATA
@@ -845,8 +844,8 @@ ptvcursor_pop_subtree
ptvcursor_add_with_subtree
ptvcursor_add_text_with_subtree
ptvcursor_set_subtree
-q850_cause_code_vals DATA
-q931_cause_code_vals DATA
+q850_cause_code_vals_ext DATA
+q931_cause_code_vals_ext DATA
q931_message_type_vals DATA
range_convert_range
range_convert_str