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
This commit is contained in:
Bill Meier 2010-11-05 22:44:03 +00:00
parent 76bc0e537b
commit b78ec52693
13 changed files with 4634 additions and 4479 deletions

View File

@ -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",

View File

@ -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,

View File

@ -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",

View File

@ -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",

View File

@ -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 */

View File

@ -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",

View File

@ -124,7 +124,7 @@ static gint isup_standard = ITU_STANDARD;
#define ANSI_ISUP_MESSAGE_TYPE_CCT_VAL_TEST 0xEC
#define ANSI_ISUP_MESSAGE_TYPE_EXIT 0xED
const value_string isup_message_type_value[] = {
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)"},
@ -175,6 +175,7 @@ const value_string isup_message_type_value[] = {
{ MESSAGE_TYPE_PRE_RELEASE_INFO, "Pre-release information"},
{ MESSAGE_TYPE_SUBSEQUENT_DIR_NUM, "Subsequent Directory Number (national use)"},
{ 0, NULL}};
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"},
@ -232,8 +233,10 @@ const value_string isup_message_type_value[] = {
{ 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[] = {
static const value_string isup_message_type_value_acro[] = {
{ MESSAGE_TYPE_INITIAL_ADDR, "IAM"},
{ MESSAGE_TYPE_SUBSEQ_ADDR, "SAM"},
{ MESSAGE_TYPE_INFO_REQ, "INR"},
@ -284,6 +287,7 @@ const value_string isup_message_type_value_acro[] = {
{ 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[] = {
@ -342,6 +346,7 @@ static const value_string ansi_isup_message_type_value_acro[] = {
{ 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"},
@ -422,11 +427,12 @@ const value_string isup_parameter_type_value[] = {
{ 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)"},
{ PARAM_TYPE_APPLICATON_TRANS, "Application transport"},
{ 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"},
@ -485,7 +491,6 @@ static const value_string ansi_isup_parameter_type_value[] = {
{ 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"},
@ -508,13 +513,16 @@ static const value_string ansi_isup_parameter_type_value[] = {
{ 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_GENERIC_DIGITS, "Generic digits (national use)"},
{ PARAM_TYPE_APPLICATON_TRANS, "Application transport"},
{ 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"},
@ -534,6 +542,7 @@ static const value_string ansi_isup_parameter_type_value[] = {
{ 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
@ -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"},
@ -735,6 +744,7 @@ const value_string isup_calling_partys_category_value[] = {
{ 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
@ -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 */
@ -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
@ -2111,7 +2124,7 @@ 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[] = {
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" },
@ -2188,6 +2201,7 @@ const value_string q850_cause_code_vals[] = {
{ 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" },
@ -2269,6 +2283,7 @@ static const value_string ansi_isup_cause_code_vals[] = {
{ 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" },
@ -2311,7 +2326,7 @@ dissect_ansi_isup_cause_indicators_parameter(tvbuff_t *parameter_tvb, proto_tree
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 );
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;
}
@ -2330,7 +2345,9 @@ dissect_ansi_isup_cause_indicators_parameter(tvbuff_t *parameter_tvb, proto_tree
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 );
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) {
@ -2501,7 +2518,7 @@ dissect_isup_access_transport_parameter(tvbuff_t *parameter_tvb, proto_tree *par
/* dissect x.213 NSAP coded Address */
const value_string x213_afi_value[] = {
static const value_string x213_afi_value[] = {
{ 0x34, "IANA ICP"},
{ 0x35, "IANA ICP"},
{ 0x36, "X.121"},
@ -2555,14 +2572,15 @@ const value_string x213_afi_value[] = {
{ 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"},
{ 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 */
@ -2675,6 +2693,7 @@ static const value_string bat_ase_list_of_Identifiers_vals[] = {
{ 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[] =
@ -2721,6 +2740,7 @@ static const value_string bat_ase_action_indicator_field_vals[] = {
{ 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",
@ -2782,6 +2802,7 @@ static const value_string ITU_T_codec_type_subfield_vals[] = {
{ 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[] = {
@ -2803,6 +2824,7 @@ static const value_string ETSI_codec_type_subfield_vals[] = {
{ 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"},
@ -2822,7 +2844,7 @@ static const value_string optimisation_mode_vals[] = {
{ 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"},
@ -2832,6 +2854,7 @@ const value_string bearer_network_connection_characteristics_vals[] = {
{ 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",
@ -2858,6 +2881,7 @@ static const value_string Bearer_Redirection_Indicator_vals[] = {
{ 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[] = {
@ -2899,6 +2923,7 @@ static const value_string BAt_ASE_Signal_Type_vals[] = {
{ 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[] = {
@ -3063,6 +3088,7 @@ dissect_bat_ase_Encapsulated_Application_Information(tvbuff_t *parameter_tvb, pa
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,
@ -3094,7 +3120,7 @@ dissect_bat_ase_Encapsulated_Application_Information(tvbuff_t *parameter_tvb, pa
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)"));
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 ) {
@ -3123,7 +3149,7 @@ dissect_bat_ase_Encapsulated_Application_Information(tvbuff_t *parameter_tvb, pa
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)"));
val_to_str_ext(content,&bat_ase_action_indicator_field_vals_ext, "unknown (%u)"));
offset = offset + 1;
break;
case BACKBONE_NETWORK_CONNECTION_IDENTIFIER :
@ -3198,7 +3224,7 @@ dissect_bat_ase_Encapsulated_Application_Information(tvbuff_t *parameter_tvb, pa
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)"));
val_to_str_ext(tempdata,&bearer_network_connection_characteristics_vals_ext, "unknown (%u)"));
offset = offset + content_len;
break;
@ -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
@ -4393,7 +4419,7 @@ dissect_isup_parameter_compatibility_information_parameter(tvbuff_t *parameter_t
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)"));
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);
@ -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"));
}
/* ------------------------------------------------------------------
@ -5274,7 +5300,11 @@ dissect_isup_optional_parameter(tvbuff_t *optional_parameters_tvb,packet_info *p
"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);
@ -5544,7 +5574,8 @@ dissect_isup_optional_parameter(tvbuff_t *optional_parameters_tvb,packet_info *p
}
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);
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);
}
}
}
@ -5577,12 +5608,15 @@ dissect_ansi_isup_optional_parameter(tvbuff_t *optional_parameters_tvb,packet_in
"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);
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;
@ -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);
@ -5902,7 +5939,10 @@ dissect_ansi_isup_circuit_validation_test_resp_message(tvbuff_t *message_tvb, pr
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);
@ -5927,7 +5967,10 @@ dissect_ansi_isup_circuit_reservation_message(tvbuff_t *message_tvb, proto_tree
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);
@ -5952,7 +5995,10 @@ dissect_isup_initial_address_message(tvbuff_t *message_tvb, proto_tree *isup_tre
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);
@ -5964,7 +6010,10 @@ dissect_isup_initial_address_message(tvbuff_t *message_tvb, proto_tree *isup_tre
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);
@ -5976,7 +6025,10 @@ dissect_isup_initial_address_message(tvbuff_t *message_tvb, proto_tree *isup_tre
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);
@ -5990,7 +6042,10 @@ dissect_isup_initial_address_message(tvbuff_t *message_tvb, proto_tree *isup_tre
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"));
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);
@ -6006,7 +6061,10 @@ dissect_isup_initial_address_message(tvbuff_t *message_tvb, proto_tree *isup_tre
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_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);
@ -6026,7 +6084,10 @@ dissect_isup_initial_address_message(tvbuff_t *message_tvb, proto_tree *isup_tre
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);
@ -6057,7 +6118,10 @@ static gint dissect_isup_subsequent_address_message(tvbuff_t *message_tvb, proto
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);
@ -6085,7 +6149,10 @@ dissect_isup_information_request_message(tvbuff_t *message_tvb, proto_tree *isup
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);
@ -6109,7 +6176,10 @@ dissect_isup_information_message(tvbuff_t *message_tvb, proto_tree *isup_tree)
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);
@ -6133,7 +6203,10 @@ dissect_isup_continuity_message(tvbuff_t *message_tvb, proto_tree *isup_tree)
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);
@ -6157,7 +6230,10 @@ dissect_isup_address_complete_message(tvbuff_t *message_tvb, proto_tree *isup_tr
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);
@ -6181,7 +6257,10 @@ dissect_isup_connect_message(tvbuff_t *message_tvb, proto_tree *isup_tree)
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);
@ -6210,7 +6289,10 @@ dissect_isup_release_message(tvbuff_t *message_tvb, proto_tree *isup_tree)
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);
@ -6244,7 +6326,10 @@ dissect_isup_suspend_resume_message(tvbuff_t *message_tvb, proto_tree *isup_tree
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);
@ -6273,7 +6358,10 @@ dissect_isup_circuit_group_reset_query_message(tvbuff_t *message_tvb, proto_tree
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);
@ -6300,7 +6388,10 @@ dissect_isup_circuit_group_blocking_messages(tvbuff_t *message_tvb, proto_tree *
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);
@ -6317,7 +6408,10 @@ dissect_isup_circuit_group_blocking_messages(tvbuff_t *message_tvb, proto_tree *
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);
@ -6345,7 +6439,10 @@ dissect_isup_facility_request_accepted_message(tvbuff_t *message_tvb, proto_tree
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);
@ -6369,7 +6466,10 @@ dissect_isup_facility_reject_message(tvbuff_t *message_tvb, proto_tree *isup_tre
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);
@ -6386,7 +6486,10 @@ dissect_isup_facility_reject_message(tvbuff_t *message_tvb, proto_tree *isup_tre
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);
@ -6425,7 +6528,10 @@ dissect_isup_circuit_group_reset_acknowledgement_message(tvbuff_t *message_tvb,
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);
@ -6457,7 +6563,10 @@ dissect_isup_circuit_group_query_response_message(tvbuff_t *message_tvb, proto_t
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);
@ -6476,7 +6585,10 @@ dissect_isup_circuit_group_query_response_message(tvbuff_t *message_tvb, proto_t
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);
@ -6503,7 +6615,10 @@ dissect_isup_call_progress_message(tvbuff_t *message_tvb, proto_tree *isup_tree)
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);
@ -6532,7 +6647,10 @@ dissect_isup_user_to_user_information_message(tvbuff_t *message_tvb, packet_info
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);
@ -6564,7 +6682,10 @@ dissect_isup_confusion_message(tvbuff_t *message_tvb, proto_tree *isup_tree)
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);
@ -6603,10 +6724,14 @@ dissect_isup_message(tvbuff_t *message_tvb, packet_info *pinfo, proto_tree *isup
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);
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(message_type, ansi_isup_message_type_value, "reserved"), message_type);
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;
@ -6722,9 +6847,13 @@ dissect_isup_message(tvbuff_t *message_tvb, packet_info *pinfo, proto_tree *isup
break;
case MESSAGE_TYPE_PASS_ALONG:
/* call dissect_isup_message recursively */
{ guint8 pa_message_type;
{
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_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;
@ -6919,9 +7048,13 @@ dissect_isup_message(tvbuff_t *message_tvb, packet_info *pinfo, proto_tree *isup
break;
case MESSAGE_TYPE_PASS_ALONG:
/* call dissect_isup_message recursively */
{ guint8 pa_message_type;
{
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_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;
@ -7101,19 +7234,25 @@ dissect_isup(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
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);
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(message_type, ansi_isup_message_type_value_acro, "reserved"), cic);
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(message_type, isup_message_type_value_acro, "reserved"));
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(message_type, ansi_isup_message_type_value_acro, "reserved"));
col_add_fstr(pinfo->cinfo, COL_INFO, "%s ", val_to_str_ext_const(message_type, &ansi_isup_message_type_value_acro_ext, "reserved"));
break;
}
}
@ -7160,9 +7299,14 @@ dissect_bicc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
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);
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(message_type, isup_message_type_value_acro, "reserved"));
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
@ -7197,7 +7341,9 @@ dissect_application_isup(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
/* 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"));
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. */
@ -7224,7 +7370,7 @@ msg_stats_tree_init(stats_tree* st)
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);
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];
@ -7348,12 +7494,12 @@ proto_register_isup(void)
{ &hf_isup_calling_partys_category,
{ "Calling Party's category", "isup.calling_partys_category",
FT_UINT8, BASE_HEX, VALS(isup_calling_partys_category_value), 0x0,
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, VALS(isup_transmission_medium_requirement_value), 0x0,
FT_UINT8, BASE_DEC|BASE_EXT_STRING, &isup_transmission_medium_requirement_value_ext, 0x0,
NULL, HFILL }},
{ &hf_isup_odd_even_indicator,
@ -7578,12 +7724,12 @@ proto_register_isup(void)
{ &hf_isup_cause_indicator,
{ "Cause indicator", "isup.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_ansi_isup_cause_indicator,
{ "Cause indicator", "ansi_isup.cause_indicator",
FT_UINT8, BASE_DEC, VALS(ansi_isup_cause_code_vals), 0x7f,
FT_UINT8, BASE_DEC|BASE_EXT_STRING, &ansi_isup_cause_code_vals_ext, 0x7f,
NULL, HFILL }},
{ &hf_isup_suspend_resume_indicator,
@ -7748,7 +7894,7 @@ proto_register_isup(void)
{ &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,
FT_UINT8, BASE_DEC|BASE_EXT_STRING, &isup_transmission_medium_requirement_prime_value_ext, 0x0,
NULL, HFILL }},
{ &hf_isup_loop_prevention_response_ind,
@ -7867,7 +8013,7 @@ proto_register_isup(void)
NULL, HFILL }},
{ &hf_isup_cause_location,
{ "Cause location", "isup.cause_location",
FT_UINT8, BASE_DEC, VALS(q931_cause_location_vals), 0x0f,
FT_UINT8, BASE_DEC|BASE_EXT_STRING, &q931_cause_location_vals_ext, 0x0f,
NULL, HFILL }},
{ &hf_ansi_isup_coding_standard,
@ -7876,7 +8022,7 @@ proto_register_isup(void)
{ &hf_bat_ase_identifier,
{ "BAT ASE Identifiers", "bicc.bat_ase_identifier",
FT_UINT8, BASE_HEX, VALS(bat_ase_list_of_Identifiers_vals),0x0,
FT_UINT8, BASE_HEX|BASE_EXT_STRING, &bat_ase_list_of_Identifiers_vals_ext,0x0,
NULL, HFILL }},
{ &hf_length_indicator,
@ -7886,7 +8032,7 @@ proto_register_isup(void)
{ &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,
FT_UINT8, BASE_HEX|BASE_EXT_STRING, &bat_ase_action_indicator_field_vals_ext,0x00,
NULL, HFILL }},
{ &hf_Instruction_ind_for_general_action,
@ -7941,7 +8087,7 @@ proto_register_isup(void)
{ &hf_afi,
{ "X.213 Address Format Information ( AFI )", "x213.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_bicc_nsap_dsp,
@ -7950,7 +8096,7 @@ proto_register_isup(void)
NULL, HFILL }},
{ &hf_characteristics,
{ "Backbone network connection characteristics", "bat_ase.char",
FT_UINT8, BASE_HEX, VALS(bearer_network_connection_characteristics_vals),0x0,
FT_UINT8, BASE_HEX|BASE_EXT_STRING, &bearer_network_connection_characteristics_vals_ext,0x0,
NULL, HFILL }},
{ &hf_Organization_Identifier,
@ -7960,12 +8106,12 @@ proto_register_isup(void)
{ &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,
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, VALS(ETSI_codec_type_subfield_vals),0x0,
FT_UINT8, BASE_HEX|BASE_EXT_STRING, &ETSI_codec_type_subfield_vals_ext,0x0,
NULL, HFILL }},
{ &hf_active_code_set,
@ -8082,7 +8228,7 @@ proto_register_isup(void)
{ &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,
FT_UINT8, BASE_HEX|BASE_EXT_STRING, &bat_ase_list_of_Identifiers_vals_ext,0x0,
NULL, HFILL }},
{ &hf_BAT_ASE_Comp_Report_diagnostic,
@ -8102,7 +8248,7 @@ proto_register_isup(void)
{ &hf_bat_ase_signal,
{ "Q.765.5 - Signal Type", "bat_ase.signal_type",
FT_UINT8, BASE_HEX, VALS(BAt_ASE_Signal_Type_vals),0x0,
FT_UINT8, BASE_HEX|BASE_EXT_STRING, &BAt_ASE_Signal_Type_vals_ext,0x0,
NULL, HFILL }},
{ &hf_bat_ase_duration,
@ -8112,7 +8258,7 @@ proto_register_isup(void)
{ &hf_bat_ase_bearer_redir_ind,
{ "Redirection Indicator", "bat_ase.bearer_redir_ind",
FT_UINT8, BASE_HEX, VALS(Bearer_Redirection_Indicator_vals),0x0,
FT_UINT8, BASE_HEX|BASE_EXT_STRING, &Bearer_Redirection_Indicator_vals_ext,0x0,
NULL, HFILL }},
{ &hf_nsap_ipv4_addr,

View File

@ -43,9 +43,8 @@ typedef struct _isup_tap_rec_t {
* 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
*/
@ -139,13 +138,13 @@ WS_VAR_IMPORT const value_string q850_cause_code_vals[];
#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_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
@ -153,18 +152,20 @@ WS_VAR_IMPORT const value_string q850_cause_code_vals[];
#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
#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 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[];
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
*/

View File

@ -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_HOLD, "HOLD" },
{ Q931_HOLD_ACK, "HOLD_ACKNOWLEDGE" },
{ Q931_HOLD_REJECT, "HOLD_REJECT" },
{ Q931_RESUME, "RESUME" },
{ Q931_RESUME_ACK, "RESUME 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_SUSPEND, "SUSPEND" },
{ Q931_RESUME, "RESUME" },
{ Q931_HOLD_ACK, "HOLD_ACKNOWLEDGE" },
{ Q931_SUSPEND_ACK, "SUSPEND ACKNOWLEDGE" },
{ Q931_RESUME_ACK, "RESUME ACKNOWLEDGE" },
{ 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_FACILITY, "FACILITY" },
{ Q931_FACILITY_ACKNOWLEDGE, "FACILITY ACKNOWLEDGE" },
{ Q931_FACILITY_REJECT, "FACILITY REJECT" },
{ Q931_INFORMATION, "INFORMATION" },
{ Q931_NOTIFY, "NOTIFY" },
{ Q931_REGISTER, "REGISTER" },
{ Q931_RELEASE_COMPLETE, "RELEASE COMPLETE" },
{ Q931_SEGMENT, "SEGMENT" },
{ Q931_STATUS, "STATUS" },
{ Q931_FACILITY, "FACILITY" },
{ Q931_REGISTER, "REGISTER" },
{ 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" },
@ -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)"));
}
@ -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
@ -2333,6 +2346,7 @@ static const value_string q931_high_layer_characteristics_vals[] = {
{ 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" },
@ -2355,6 +2369,7 @@ static const value_string q931_extended_high_layer_characteristics_vals[] = {
{ 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" },
@ -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;
@ -2647,7 +2663,7 @@ dissect_q931_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
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)"));
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);
@ -2845,8 +2861,8 @@ 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)"));
}
@ -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;
@ -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,

View File

@ -42,7 +42,7 @@ 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;
@ -57,12 +57,12 @@ 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.
@ -70,46 +70,46 @@ extern const value_string q931_call_state_vals[];
#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_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_HOLD 0x24
#define Q931_HOLD_ACK 0x28
#define Q931_HOLD_REJECT 0x30
#define Q931_RESUME 0x26
#define Q931_RESUME_ACK 0x2E
#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_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_DETACH_ACKNOWLEDGE 0x48
#define Q931_RELEASE 0x4D
#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_RELEASE_COMPLETE 0x5A
#define Q931_SEGMENT 0x60
#define Q931_STATUS 0x7D
#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_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_CONGESTION_CONTROL 0x79
#define Q931_INFORMATION 0x7B
#define Q931_STATUS 0x7D
/*
* Maintenance message types.

View File

@ -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)" ));
}

View File

@ -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

View File

@ -632,7 +632,11 @@ static void RTP_packet_draw(void *prs _U_)
new_gai->port_src = rtp_listinfo->src_port;
new_gai->port_dst = rtp_listinfo->dest_port;
duration = (guint32)(nstime_to_msec(&rtp_listinfo->stop_rel) - nstime_to_msec(&rtp_listinfo->start_rel));
new_gai->frame_label = g_strdup_printf("%s (%s) %s", (rtp_listinfo->is_srtp)?"SRTP":"RTP", rtp_listinfo->pt_str, (rtp_listinfo->rtp_event == -1)?"":val_to_str(rtp_listinfo->rtp_event, rtp_event_type_values, "Unknown RTP Event"));
new_gai->frame_label = g_strdup_printf("%s (%s) %s",
(rtp_listinfo->is_srtp)?"SRTP":"RTP",
rtp_listinfo->pt_str,
(rtp_listinfo->rtp_event == -1)?
"":val_to_str_const(rtp_listinfo->rtp_event, rtp_event_type_values, "Unknown RTP Event"));
new_gai->comment = g_strdup_printf("%s Num packets:%u Duration:%u.%03us SSRC:0x%X",
(rtp_listinfo->is_srtp)?"SRTP":"RTP", rtp_listinfo->npackets,
duration/1000,(duration%1000), rtp_listinfo->ssrc);
@ -1086,7 +1090,6 @@ isup_calls_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, co
GList *list;
gchar *frame_label = NULL;
gchar *comment = NULL;
int i;
/*voip_calls_tapinfo_t *tapinfo = &the_tapinfo_struct; unused */
const isup_tap_rec_t *pi = isup_info;
@ -1173,15 +1176,7 @@ isup_calls_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, co
/* Let's analyze the call state */
for (i=0;(isup_message_type_value[i].strptr!=NULL)&& (isup_message_type_value[i].value!=pi->message_type);i++);
if (isup_message_type_value[i].value==pi->message_type){
frame_label = g_strdup(isup_message_type_value_acro[i].strptr);
}
else{
frame_label = g_strdup("Unknown");
}
frame_label = g_strdup(val_to_str_ext_const(pi->message_type, &isup_message_type_value_acro_ext, "Unknown"));
if (callsinfo->npackets == 1){ /* this is the first packet, that must be an IAM */
@ -1224,13 +1219,9 @@ isup_calls_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, co
callsinfo->call_state = VOIP_COMPLETED;
tapinfo->completed_calls++;
}
for (i=0;(q931_cause_code_vals[i].strptr!=NULL)&& (q931_cause_code_vals[i].value!=pi->cause_value);i++);
if (q931_cause_code_vals[i].value==pi->cause_value){
comment = g_strdup_printf("Cause %i - %s",pi->cause_value, q931_cause_code_vals[i].strptr);
}
else{
comment = g_strdup_printf("Cause %i",pi->cause_value);
}
comment = g_strdup_printf("Cause %i - %s",
pi->cause_value,
val_to_str_ext_const(pi->cause_value, &q931_cause_code_vals_ext, "(Unknown)"));
break;
}
@ -1515,7 +1506,8 @@ q931_calls_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, co
} else if (h225_cstype == H225_RELEASE_COMPLET) {
/* get the Q931 Release cause code */
if (q931_cause_value != 0xFF){
comment = g_strdup_printf("H225 Q931 Rel Cause (%i):%s", q931_cause_value, val_to_str(q931_cause_value, q931_cause_code_vals, "<unknown>"));
comment = g_strdup_printf("H225 Q931 Rel Cause (%i):%s", q931_cause_value,
val_to_str_ext_const(q931_cause_value, &q931_cause_code_vals_ext, "<unknown>"));
} else { /* Cause not set */
comment = g_strdup("H225 No Q931 Rel Cause");
}
@ -1635,7 +1627,8 @@ q931_calls_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, co
tapinfo->completed_calls++;
}
if (q931_cause_value != 0xFF){
comment = g_strdup_printf("AC_ISDN trunk:%u Q931 Rel Cause (%i):%s", actrace_trunk, q931_cause_value, val_to_str(q931_cause_value, q931_cause_code_vals, "<unknown>"));
comment = g_strdup_printf("AC_ISDN trunk:%u Q931 Rel Cause (%i):%s", actrace_trunk, q931_cause_value,
val_to_str_ext_const(q931_cause_value, &q931_cause_code_vals_ext, "<unknown>"));
} else { /* Cause not set */
comment = g_strdup("AC_ISDN No Q931 Rel Cause");
}
@ -1927,7 +1920,7 @@ H225calls_packet(void *ptr _U_, packet_info *pinfo, epan_dissect_t *edt _U_, con
default:
comment = g_strdup("H225 RAS");
}
frame_label = g_strdup(val_to_str(pi->msg_tag, h225_RasMessage_vals, "<unknown>"));
frame_label = g_strdup(val_to_str_const(pi->msg_tag, h225_RasMessage_vals, "<unknown>"));
} else {
frame_label = g_strdup("H225: Unknown");
comment = NULL;