diff options
author | Bill Meier <wmeier@newsguy.com> | 2010-11-03 22:08:49 +0000 |
---|---|---|
committer | Bill Meier <wmeier@newsguy.com> | 2010-11-03 22:08:49 +0000 |
commit | 9675740701929afcd6b3096ab6a3fc05ac5255e5 (patch) | |
tree | 7b47ecf6461cc13314377477689d79ba3949f285 /epan | |
parent | c093ff0bfce5ef8ade99e6fab8ef82d30ac4bcf2 (diff) | |
download | wireshark-9675740701929afcd6b3096ab6a3fc05ac5255e5.tar.gz wireshark-9675740701929afcd6b3096ab6a3fc05ac5255e5.tar.bz2 wireshark-9675740701929afcd6b3096ab6a3fc05ac5255e5.zip |
Use value_string_ext fcns to access certain value_string arrays;
Sort several value_string arrays to be in ascending order.
Also: Minor whitespace cleanup.
svn path=/trunk/; revision=34766
Diffstat (limited to 'epan')
-rw-r--r-- | epan/dissectors/packet-actrace.c | 85 | ||||
-rw-r--r-- | epan/dissectors/packet-bthci_cmd.c | 163 | ||||
-rw-r--r-- | epan/dissectors/packet-bthci_evt.c | 24 | ||||
-rw-r--r-- | epan/dissectors/packet-hci_h4.h | 15 | ||||
-rw-r--r-- | epan/dissectors/packet-ip.c | 5 | ||||
-rw-r--r-- | epan/dissectors/packet-netflow.c | 25 | ||||
-rw-r--r-- | epan/dissectors/packet-scsi.c | 2 | ||||
-rw-r--r-- | epan/dissectors/packet-skinny.c | 102 | ||||
-rw-r--r-- | epan/dissectors/packet-uma.c | 156 |
9 files changed, 318 insertions, 259 deletions
diff --git a/epan/dissectors/packet-actrace.c b/epan/dissectors/packet-actrace.c index 985934404c..5381328fc0 100644 --- a/epan/dissectors/packet-actrace.c +++ b/epan/dissectors/packet-actrace.c @@ -124,6 +124,7 @@ static const value_string actrace_cas_mf_vals[] = { {46, "#"}, {0, NULL} }; +static value_string_ext actrace_cas_mf_vals_ext = VALUE_STRING_EXT_INIT(actrace_cas_mf_vals); static const value_string actrace_cas_event_vals[] = { {0, "FUNCTION0"}, @@ -173,21 +174,21 @@ static const value_string actrace_cas_event_vals[] = { {44, "EV_MFRn_13"}, {45, "EV_MFRn_14"}, {46, "EV_MFRn_15"}, - {47, "EV_MFRn_1_STOPED"}, - {48, "EV_MFRn_2_STOPED"}, - {49, "EV_MFRn_3_STOPED"}, - {50, "EV_MFRn_4_STOPED"}, - {51, "EV_MFRn_5_STOPED"}, - {52, "EV_MFRn_6_STOPED"}, - {53, "EV_MFRn_7_STOPED"}, - {54, "EV_MFRn_8_STOPED"}, - {55, "EV_MFRn_9_STOPED"}, - {56, "EV_MFRn_10_STOPED"}, - {57, "EV_MFRn_11_STOPED"}, - {58, "EV_MFRn_12_STOPED"}, - {59, "EV_MFRn_13_STOPED"}, - {60, "EV_MFRn_14_STOPED"}, - {61, "EV_MFRn_15_STOPED"}, + {47, "EV_MFRn_1_STOPPED"}, + {48, "EV_MFRn_2_STOPPED"}, + {49, "EV_MFRn_3_STOPPED"}, + {50, "EV_MFRn_4_STOPPED"}, + {51, "EV_MFRn_5_STOPPED"}, + {52, "EV_MFRn_6_STOPPED"}, + {53, "EV_MFRn_7_STOPPED"}, + {54, "EV_MFRn_8_STOPPED"}, + {55, "EV_MFRn_9_STOPPED"}, + {56, "EV_MFRn_10_STOPPED"}, + {57, "EV_MFRn_11_STOPPED"}, + {58, "EV_MFRn_12_STOPPED"}, + {59, "EV_MFRn_13_STOPPED"}, + {60, "EV_MFRn_14_STOPPED"}, + {61, "EV_MFRn_15_STOPPED"}, {62, "EV_ANI_NUM_DETECTED"}, {ACTRACE_CAS_EV_FIRST_DIGIT, "EV_FIRST_DIGIT"}, {64, "EV_END_OF_MF_DIGIT"}, @@ -198,9 +199,6 @@ static const value_string actrace_cas_event_vals[] = { {69, "EV_REJECT_RESERVE1"}, {70, "EV_REJECT_RESERVE2"}, {71, "EV_NO_ANI"}, - {1010, "EV_TIMER_EXPIRED10"}, - {1020, "EV_DEBOUNCE_TIMER_EXPIRED"}, - {1030, "EV_INTER_DIGIT_TIMER_EXPIRED"}, {100, "EV_INIT_CHANNEL"}, {101, "EV_BUSY_TONE_STOPPED"}, {102, "EV_FAST_BUSY_TONE_STOPPED"}, @@ -212,8 +210,12 @@ static const value_string actrace_cas_event_vals[] = { {113, "EV_FAIL_SEND_CAS"}, {114, "EV_ALARM"}, {ACTRACE_CAS_EV_DTMF, "EV_DTMF"}, + {1010, "EV_TIMER_EXPIRED10"}, + {1020, "EV_DEBOUNCE_TIMER_EXPIRED"}, + {1030, "EV_INTER_DIGIT_TIMER_EXPIRED"}, {0, NULL} }; +static value_string_ext actrace_cas_event_vals_ext = VALUE_STRING_EXT_INIT(actrace_cas_event_vals); #define SEND_CAS 2 #define SEND_EVENT 3 @@ -239,6 +241,7 @@ static const value_string actrace_cas_function_vals[] = { {14, "GENERATE_CAS_EV"}, {0, NULL} }; +static value_string_ext actrace_cas_function_vals_ext = VALUE_STRING_EXT_INIT(actrace_cas_function_vals); static const value_string actrace_cas_pstn_event_vals[] = { {64, "acEV_PSTN_INTERNAL_ERROR"}, @@ -265,6 +268,7 @@ static const value_string actrace_cas_pstn_event_vals[] = { {132, "acEV_CAS_SEIZURE_ACK"}, {0, NULL} }; +static value_string_ext actrace_cas_pstn_event_vals_ext = VALUE_STRING_EXT_INIT(actrace_cas_pstn_event_vals); static const value_string actrace_cas_collect_type_vals[] = { {0, "COLLECT_TYPE_ADDRESS"}, @@ -315,22 +319,22 @@ static const value_string actrace_cas_cause_vals[] = { {33, "USER_CONGESTION"}, {34, "NO_CIRCUIT_AVAILABLE"}, {38, "NETWORK_OUT_OF_ORDER"}, + {39, "PERM_FR_MODE_CONN_OUT_OF_S"}, + {40, "PERM_FR_MODE_CONN_OPERATIONAL"}, {41, "NETWORK_TEMPORARY_FAILURE"}, {42, "NETWORK_CONGESTION"}, {43, "ACCESS_INFORMATION_DISCARDED"}, {44, "REQUESTED_CIRCUIT_NOT_AVAILABLE"}, - {47, "RESOURCE_UNAVAILABLE_UNSPECIFIED"}, - {39, "PERM_FR_MODE_CONN_OUT_OF_S"}, - {40, "PERM_FR_MODE_CONN_OPERATIONAL"}, {46, "PRECEDENCE_CALL_BLOCKED"}, + {47, "RESOURCE_UNAVAILABLE_UNSPECIFIED"}, {49, "QUALITY_OF_SERVICE_UNAVAILABLE"}, {50, "REQUESTED_FAC_NOT_SUBSCRIBED"}, - {57, "BC_NOT_AUTHORIZED"}, - {58, "BC_NOT_PRESENTLY_AVAILABLE"}, - {63, "SERVICE_NOT_AVAILABLE"}, {53, "CUG_OUT_CALLS_BARRED"}, {55, "CUG_INC_CALLS_BARRED"}, + {57, "BC_NOT_AUTHORIZED"}, + {58, "BC_NOT_PRESENTLY_AVAILABLE"}, {62, "ACCES_INFO_SUBS_CLASS_INCONS"}, + {63, "SERVICE_NOT_AVAILABLE"}, {65, "BC_NOT_IMPLEMENTED"}, {66, "CHANNEL_TYPE_NOT_IMPLEMENTED"}, {69, "REQUESTED_FAC_NOT_IMPLEMENTED"}, @@ -342,11 +346,11 @@ static const value_string actrace_cas_cause_vals[] = { {84, "CALL_ID_IN_USE"}, {85, "NO_CALL_SUSPENDED"}, {86, "CALL_HAVING_CALL_ID_CLEARED"}, + {87, "NOT_CUG_MEMBER"}, {88, "INCOMPATIBLE_DESTINATION"}, + {90, "CUG_NON_EXISTENT"}, {91, "INVALID_TRANSIT_NETWORK_SELECTION"}, {95, "INVALID_MESSAGE_UNSPECIFIED"}, - {87, "NOT_CUG_MEMBER"}, - {90, "CUG_NON_EXISTENT"}, {96, "MANDATORY_IE_MISSING"}, {97, "MESSAGE_TYPE_NON_EXISTENT"}, {98, "MESSAGE_STATE_INCONSISTENCY"}, @@ -360,12 +364,12 @@ static const value_string actrace_cas_cause_vals[] = { {129, "ACU_CAUSE_ACU_BAD_SERVICE"}, {130, "ACU_CAUSE_ACU_COLLISION"}, {131, "ACU_CAUSE_ACU_FAC_REJECTED"}, - {255, "ACU_NETWORK_CAUSE_NIL"}, {200, "C_ALREADY_BLOCKED"}, {201, "C_CHANNEL_BLOCKED"}, {202, "C_BLOCKING_DONE"}, {203, "C_ALREADY_UNBLOCKED"}, {204, "C_UNBLOCKING_DONE"}, + {255, "ACU_NETWORK_CAUSE_NIL"}, {260, "CLRN_MFRn_A4"}, {261, "CLRN_MFRn_B1"}, {262, "CLRN_MFRn_B2"}, @@ -403,6 +407,7 @@ static const value_string actrace_cas_cause_vals[] = { {318, "ACURC_CLEAR_RQ"}, {0, NULL} }; +static value_string_ext actrace_cas_cause_vals_ext = VALUE_STRING_EXT_INIT(actrace_cas_cause_vals); /* ISDN */ #define PSTN_TO_BLADE 0x49446463 @@ -527,21 +532,21 @@ static void dissect_actrace_cas(tvbuff_t *tvb, packet_info *pinfo, proto_tree *a offset += 4; col_append_fstr(pinfo->cinfo, COL_INFO, "%s|%d|%s|%d|%s|", - val_to_str(source, actrace_cas_source_vals_short, "ukn"), + val_to_str_const(source, actrace_cas_source_vals_short, "ukn"), curr_state, - val_to_str(event, actrace_cas_event_vals, "%d"), + val_to_str_ext(event, &actrace_cas_event_vals_ext, "%d"), next_state, - val_to_str(function, actrace_cas_function_vals, "%d")); + val_to_str_ext(function, &actrace_cas_function_vals_ext, "%d")); par0 = tvb_get_ntohl(tvb, offset); switch (function) { case SEND_EVENT: proto_tree_add_text(actrace_tree, tvb, offset, 4, - "Parameter 0: %s", val_to_str(par0, - actrace_cas_pstn_event_vals, "Unknown (%d)")); + "Parameter 0: %s", val_to_str_ext(par0, + &actrace_cas_pstn_event_vals_ext, "Unknown (%d)")); col_append_fstr(pinfo->cinfo, COL_INFO, "%s|", - val_to_str(par0, actrace_cas_pstn_event_vals, "%d")); + val_to_str_ext(par0, &actrace_cas_pstn_event_vals_ext, "%d")); break; case CHANGE_COLLECT_TYPE: proto_tree_add_text(actrace_tree, tvb, offset, 4, @@ -567,9 +572,9 @@ static void dissect_actrace_cas(tvbuff_t *tvb, packet_info *pinfo, proto_tree *a par1 = tvb_get_ntohl(tvb, offset); if (function == SEND_EVENT) { proto_tree_add_text(actrace_tree, tvb, offset, 4, - "Parameter 1: %s", val_to_str(par1, actrace_cas_cause_vals, "Unknown (%d)")); + "Parameter 1: %s", val_to_str_ext(par1, &actrace_cas_cause_vals_ext, "Unknown (%d)")); col_append_fstr(pinfo->cinfo, COL_INFO, "%s|", - val_to_str(par1, actrace_cas_cause_vals, "%d")); + val_to_str_ext(par1, &actrace_cas_cause_vals_ext, "%d")); } else { proto_tree_add_int(actrace_tree, hf_actrace_cas_par1, tvb, offset, 4, par1); col_append_fstr(pinfo->cinfo, COL_INFO, "%d|", par1); @@ -599,9 +604,9 @@ static void dissect_actrace_cas(tvbuff_t *tvb, packet_info *pinfo, proto_tree *a if (source == ACTRACE_CAS_SOURCE_DSP) { direction = 1; if ( (event >= ACTRACE_CAS_EV_11) && (event <= ACTRACE_CAS_EV_00 ) ) { - frame_label = ep_strdup_printf("AB: %s", val_to_str(event, actrace_cas_event_ab_vals, "ERROR") ); + frame_label = ep_strdup_printf("AB: %s", val_to_str_const(event, actrace_cas_event_ab_vals, "ERROR") ); } else if ( (event >= 32) && (event <= 46 ) ) { /* is an MF tone */ - frame_label = ep_strdup_printf("MF: %s", val_to_str(event, actrace_cas_mf_vals, "ERROR") ); + frame_label = ep_strdup_printf("MF: %s", val_to_str_ext_const(event, &actrace_cas_mf_vals_ext, "ERROR") ); } else if ( (event == ACTRACE_CAS_EV_DTMF ) || (event == ACTRACE_CAS_EV_FIRST_DIGIT ) ) { /* DTMF digit */ frame_label = ep_strdup_printf("DTMF: %u", par0 ); } @@ -622,7 +627,7 @@ static void dissect_actrace_cas(tvbuff_t *tvb, packet_info *pinfo, proto_tree *a frame_label = ep_strdup("MF: inter_exch_sw"); } } else if (function == SEND_CAS) { - frame_label = ep_strdup_printf("AB: %s", val_to_str(ACTRACE_CAS_EV_00-par0, actrace_cas_event_ab_vals, "ERROR")); + frame_label = ep_strdup_printf("AB: %s", val_to_str_const(ACTRACE_CAS_EV_00-par0, actrace_cas_event_ab_vals, "ERROR")); } else if (function == SEND_DEST_NUM) { if (par0 == SEND_TYPE_ADDRESS ) { frame_label = ep_strdup("DTMF/MF: sending DNIS"); @@ -745,13 +750,13 @@ void proto_register_actrace(void) { "Current State", "actrace.cas.curr_state", FT_INT32, BASE_DEC, NULL, 0x0, NULL, HFILL }}, { &hf_actrace_cas_event, - { "Event", "actrace.cas.event", FT_INT32, BASE_DEC, VALS(actrace_cas_event_vals), 0x0, + { "Event", "actrace.cas.event", FT_INT32, BASE_DEC|BASE_EXT_STRING, &actrace_cas_event_vals_ext, 0x0, "New Event", HFILL }}, { &hf_actrace_cas_next_state, { "Next State", "actrace.cas.next_state", FT_INT32, BASE_DEC, NULL, 0x0, NULL, HFILL }}, { &hf_actrace_cas_function, - { "Function", "actrace.cas.function", FT_INT32, BASE_DEC, VALS(actrace_cas_function_vals), 0x0, + { "Function", "actrace.cas.function", FT_INT32, BASE_DEC|BASE_EXT_STRING, &actrace_cas_function_vals_ext, 0x0, NULL, HFILL }}, { &hf_actrace_cas_par0, { "Parameter 0", "actrace.cas.par0", FT_INT32, BASE_DEC, NULL, 0x0, diff --git a/epan/dissectors/packet-bthci_cmd.c b/epan/dissectors/packet-bthci_cmd.c index 4e4174d399..fa1e8c257b 100644 --- a/epan/dissectors/packet-bthci_cmd.c +++ b/epan/dissectors/packet-bthci_cmd.c @@ -238,7 +238,7 @@ static gint ett_opcode = -1; static gint ett_eir_subtree = -1; static gint ett_eir_struct_subtree = -1; -const value_string bthci_cmd_opcode_vals[] = { +static const value_string bthci_cmd_opcode_vals[] = { {0x0000, "No Operation"}, {0x0401, "Inquiry"}, {0x0402, "Inquiry Cancel"}, @@ -382,8 +382,9 @@ const value_string bthci_cmd_opcode_vals[] = { {0xfc00, "Vendor-Specific"}, {0, NULL} }; +value_string_ext bthci_cmd_opcode_vals_ext = VALUE_STRING_EXT_INIT(bthci_cmd_opcode_vals); -const value_string bthci_ogf_vals[] = { +static const value_string bthci_ogf_vals[] = { { HCI_OGF_LINK_CONTROL, "Link Control Commands" }, { HCI_OGF_LINK_POLICY, "Link Policy Commands" }, { HCI_OGF_HOST_CONTROLLER,"Host Controller & Baseband Commands" }, @@ -394,8 +395,9 @@ const value_string bthci_ogf_vals[] = { { HCI_OGF_VENDOR_SPECIFIC, "Vendor-Specific Commands" }, { 0, NULL } }; +value_string_ext bthci_ogf_vals_ext = VALUE_STRING_EXT_INIT(bthci_ogf_vals); -const value_string bthci_cmd_status_vals[] = { +static const value_string bthci_cmd_status_vals[] = { {0x00, "Success"}, {0x01, "Unknown HCI Command"}, {0x02, "No Connection"}, @@ -452,8 +454,9 @@ const value_string bthci_cmd_status_vals[] = { {0x38, "Host Busy - Pairing"}, {0, NULL } }; +value_string_ext bthci_cmd_status_vals_ext = VALUE_STRING_EXT_INIT(bthci_cmd_status_vals); -const value_string bthci_cmd_major_dev_class_vals[] = { +static const value_string bthci_cmd_major_dev_class_vals[] = { {0x00, "Miscellaneous"}, {0x01, "Computer"}, {0x02, "Phone"}, @@ -465,8 +468,9 @@ const value_string bthci_cmd_major_dev_class_vals[] = { {0x08, "Toy"}, {0, NULL } }; +value_string_ext bthci_cmd_major_dev_class_vals_ext = VALUE_STRING_EXT_INIT(bthci_cmd_major_dev_class_vals); -const value_string bthci_cmd_service_class_type_vals[] = { +static const value_string bthci_cmd_service_class_type_vals[] = { {0x1000, "Service Discovery Server Service"}, {0x1001, "Browse Group Descriptor Service"}, {0x1002, "Public Browse Group"}, @@ -533,50 +537,53 @@ const value_string bthci_cmd_service_class_type_vals[] = { {0x1305, "Video Distribution"}, {0, NULL} }; - -const value_string bthci_cmd_eir_data_type_vals[] = { - {0x01, "Flags" }, - {0x02, "16-bit Service Class UUIDs (incomplete)" }, - {0x03, "16-bit Service Class UUIDs" }, - {0x04, "32-bit Service Class UUIDs (incomplete)" }, - {0x05, "32-bit Service Class UUIDs" }, - {0x06, "128-bit Service Class UUIDs (incomplete)" }, - {0x07, "128-bit Service Class UUIDs" }, - {0x08, "Device Name (shortened)" }, - {0x09, "Device Name" }, - {0x0A, "Tx Power Level" }, - {0x0B, "OOB Optional Data Length" }, - {0x0C, "BD_ADDR" }, - {0x0D, "Class Of Device" }, - {0x0E, "Simple Pairing Hash C" }, - {0x0F, "Simple Pairing Randomizer R" }, - {0xFF, "Manufacturer Specific" }, - { 0, NULL } +value_string_ext bthci_cmd_service_class_type_vals_ext = VALUE_STRING_EXT_INIT(bthci_cmd_service_class_type_vals); + +static const value_string bthci_cmd_eir_data_type_vals[] = { + {0x01, "Flags" }, + {0x02, "16-bit Service Class UUIDs (incomplete)" }, + {0x03, "16-bit Service Class UUIDs" }, + {0x04, "32-bit Service Class UUIDs (incomplete)" }, + {0x05, "32-bit Service Class UUIDs" }, + {0x06, "128-bit Service Class UUIDs (incomplete)" }, + {0x07, "128-bit Service Class UUIDs" }, + {0x08, "Device Name (shortened)" }, + {0x09, "Device Name" }, + {0x0A, "Tx Power Level" }, + {0x0B, "OOB Optional Data Length" }, + {0x0C, "BD_ADDR" }, + {0x0D, "Class Of Device" }, + {0x0E, "Simple Pairing Hash C" }, + {0x0F, "Simple Pairing Randomizer R" }, + {0xFF, "Manufacturer Specific" }, + { 0, NULL } }; +value_string_ext bthci_cmd_eir_data_type_vals_ext = VALUE_STRING_EXT_INIT(bthci_cmd_eir_data_type_vals); const value_string bthci_cmd_io_capability_vals[] = { - {0x00, "Display Only" }, - {0x01, "Display Yes/No" }, - {0x02, "Keyboard Only" }, - {0x03, "No Input, No Output" }, - { 0, NULL } + {0x00, "Display Only" }, + {0x01, "Display Yes/No" }, + {0x02, "Keyboard Only" }, + {0x03, "No Input, No Output" }, + { 0, NULL } }; const value_string bthci_cmd_oob_data_present_vals[] = { - {0x00, "OOB Authentication Data Not Present" }, - {0x01, "OOB Authentication Data From Remote Device Present" }, - { 0, NULL } + {0x00, "OOB Authentication Data Not Present" }, + {0x01, "OOB Authentication Data From Remote Device Present" }, + { 0, NULL } }; -const value_string bthci_cmd_auth_req_vals[] = { - {0x00, "MITM Protection Not Required - No Bonding. Numeric Comparison, Automatic Accept Allowed" }, - {0x01, "MITM Protection Required - No Bonding. Use IO Capabilty To Determine Procedure" }, - {0x02, "MITM Protection Not Required - Dedicated Bonding. Numeric Comparison, Automatic Accept Allowed" }, - {0x03, "MITM Protection Required - Dedicated Bonding. Use IO Capabilty To Determine Procedure" }, - {0x04, "MITM Protection Not Required - General Bonding. Numeric Comparison, Automatic Accept Allowed" }, - {0x05, "MITM Protection Required - General Bonding. Use IO Capabilty To Determine Procedure" }, - { 0, NULL } +static const value_string bthci_cmd_auth_req_vals[] = { + {0x00, "MITM Protection Not Required - No Bonding. Numeric Comparison, Automatic Accept Allowed" }, + {0x01, "MITM Protection Required - No Bonding. Use IO Capabilty To Determine Procedure" }, + {0x02, "MITM Protection Not Required - Dedicated Bonding. Numeric Comparison, Automatic Accept Allowed" }, + {0x03, "MITM Protection Required - Dedicated Bonding. Use IO Capabilty To Determine Procedure" }, + {0x04, "MITM Protection Not Required - General Bonding. Numeric Comparison, Automatic Accept Allowed" }, + {0x05, "MITM Protection Required - General Bonding. Use IO Capabilty To Determine Procedure" }, + { 0, NULL } }; +value_string_ext bthci_cmd_auth_req_vals_ext = VALUE_STRING_EXT_INIT(bthci_cmd_auth_req_vals); static const value_string cmd_role_vals[] = { {0x00, "Become Master"}, @@ -759,44 +766,44 @@ static const value_string cmd_role_switch_modes[] = { }; static const value_string cmd_rtx_effort[] = { - {0x00, "No Retransmission" }, - {0x01, "At least 1 retransmission, optimize for consumption" }, - {0x02, "At least 1 retransmission, optimize for link quality" }, - {0xFF, "Don't Care" }, - { 0, NULL } + {0x00, "No Retransmission" }, + {0x01, "At least 1 retransmission, optimize for consumption" }, + {0x02, "At least 1 retransmission, optimize for link quality" }, + {0xFF, "Don't Care" }, + { 0, NULL } }; static const value_string cmd_scan_types[] = { - {0x00, "Standard Scan" }, - {0x01, "Interlaced Scan" }, - { 0, NULL } + {0x00, "Standard Scan" }, + {0x01, "Interlaced Scan" }, + { 0, NULL } }; static const value_string cmd_inq_modes[] = { - {0x00, "Standard Results" }, - {0x01, "Results With RSSI" }, - {0x02, "Results With RSSI or Extended Results" }, - { 0, NULL } + {0x00, "Standard Results" }, + {0x01, "Results With RSSI" }, + {0x02, "Results With RSSI or Extended Results" }, + { 0, NULL } }; static const value_string cmd_flush_pkt_type[] = { - {0x00, "Automatically Flushable Only" }, - { 0, NULL } + {0x00, "Automatically Flushable Only" }, + { 0, NULL } }; static const value_string cmd_which_clock[] = { - {0x00, "Local" }, - {0x01, "Piconet" }, - { 0, NULL } + {0x00, "Local" }, + {0x01, "Piconet" }, + { 0, NULL } }; static const value_string cmd_notification_types[] = { - {0x00, "Passkey Entry Started" }, - {0x01, "Passkey Digit Entered" }, - {0x02, "Passkey Digit Erased" }, - {0x03, "Passkey Cleared" }, - {0x04, "Passkey Entry Completed" }, - { 0, NULL } + {0x00, "Passkey Entry Started" }, + {0x01, "Passkey Digit Entered" }, + {0x02, "Passkey Digit Erased" }, + {0x03, "Passkey Cleared" }, + {0x04, "Passkey Entry Completed" }, + { 0, NULL } }; @@ -836,7 +843,7 @@ dissect_bthci_cmd_cod(int type, tvbuff_t *tvb, int offset, packet_info *pinfo _U buf[0] = '\0'; - proto_item_append_text(item, " (%s - services:", val_to_str(cod1 & 0x1f, bthci_cmd_major_dev_class_vals, "???")); + proto_item_append_text(item, " (%s - services:", val_to_str_ext_const(cod1 & 0x1f, &bthci_cmd_major_dev_class_vals_ext, "???")); if (cod2 & 0x80) g_strlcat(buf, " Information,", sizeof(buf)); if (cod2 & 0x40) g_strlcat(buf, " Telephony,", sizeof(buf)); if (cod2 & 0x20) g_strlcat(buf, " Audio,", sizeof(buf)); @@ -854,7 +861,7 @@ dissect_bthci_cmd_cod(int type, tvbuff_t *tvb, int offset, packet_info *pinfo _U } else { - proto_item_append_text(item, " (%s - no major services)", val_to_str(cod1 & 0x1f, bthci_cmd_major_dev_class_vals, "???")); + proto_item_append_text(item, " (%s - no major services)", val_to_str_ext_const(cod1 & 0x1f, &bthci_cmd_major_dev_class_vals_ext, "???")); } return offset+3; @@ -885,7 +892,7 @@ dissect_bthci_ext_inquiry_response(tvbuff_t *tvb, int offset, packet_info *pinfo type = tvb_get_guint8(tvb, offset+i+1); - proto_item_append_text(ti_eir_struct,"%s", val_to_str(type, bthci_cmd_eir_data_type_vals, "Unknown")); + proto_item_append_text(ti_eir_struct,"%s", val_to_str_ext_const(type, &bthci_cmd_eir_data_type_vals_ext, "Unknown")); proto_tree_add_item(ti_eir_struct_subtree,hf_bthci_cmd_eir_struct_length, tvb, offset+i, 1, TRUE); proto_tree_add_item(ti_eir_struct_subtree,hf_bthci_cmd_eir_struct_type, tvb, offset+i+1, 1, TRUE); @@ -1889,12 +1896,12 @@ dissect_bthci_cmd(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) ocf = opcode & 0x03ff; ogf = (guint8) (opcode >> 10); - proto_item_append_text(ti_cmd," - %s", val_to_str(opcode, bthci_cmd_opcode_vals, "Unknown 0x%04x")); + proto_item_append_text(ti_cmd," - %s", val_to_str_ext(opcode, &bthci_cmd_opcode_vals_ext, "Unknown 0x%04x")); col_set_str(pinfo->cinfo, COL_PROTOCOL, "HCI_CMD"); if((check_col(pinfo->cinfo, COL_INFO))){ - col_append_fstr(pinfo->cinfo, COL_INFO, " %s", val_to_str(opcode, bthci_cmd_opcode_vals, "Unknown 0x%04x")); + col_append_fstr(pinfo->cinfo, COL_INFO, " %s", val_to_str_ext(opcode, &bthci_cmd_opcode_vals_ext, "Unknown 0x%04x")); } @@ -1955,12 +1962,12 @@ proto_register_bthci_cmd(void) /* Setup list of header fields See Section 1.6.1 for details*/ static hf_register_info hf[] = { { &hf_bthci_cmd_opcode, - { "Command Opcode","bthci_cmd.opcode", FT_UINT16, BASE_HEX, - VALS(bthci_cmd_opcode_vals), 0x0, "HCI Command Opcode", HFILL } + { "Command Opcode","bthci_cmd.opcode", FT_UINT16, BASE_HEX|BASE_EXT_STRING, + &bthci_cmd_opcode_vals_ext, 0x0, "HCI Command Opcode", HFILL } }, { &hf_bthci_cmd_ogf, { "ogf", "bthci_cmd.ogf", - FT_UINT16, BASE_HEX, VALS(bthci_ogf_vals), 0xfc00, + FT_UINT16, BASE_HEX|BASE_EXT_STRING, &bthci_ogf_vals_ext, 0xfc00, "Opcode Group Field", HFILL } }, { &hf_bthci_cmd_ocf, @@ -2095,7 +2102,7 @@ proto_register_bthci_cmd(void) }, { &hf_bthci_cmd_status, { "Status", "bthci_cmd.status", - FT_UINT8, BASE_HEX, VALS(bthci_cmd_status_vals), 0x0, + FT_UINT8, BASE_HEX|BASE_EXT_STRING, &bthci_cmd_status_vals_ext, 0x0, NULL, HFILL } }, @@ -2116,7 +2123,7 @@ proto_register_bthci_cmd(void) }, { &hf_bthci_cmd_reason, { "Reason", "bthci_cmd.reason", - FT_UINT8, BASE_HEX, VALS(bthci_cmd_status_vals), 0x0, + FT_UINT8, BASE_HEX|BASE_EXT_STRING, &bthci_cmd_status_vals_ext, 0x0, NULL, HFILL } }, { &hf_bthci_cmd_num_link_keys, @@ -2812,17 +2819,17 @@ proto_register_bthci_cmd(void) }, { &hf_bthci_cmd_io_capability, {"IO Capability", "bthci_cmd.io_capability", - FT_UINT8, BASE_DEC, VALS(bthci_cmd_io_capability_vals), 0x0, + FT_UINT8, BASE_DEC, VALS(bthci_cmd_io_capability_vals), 0x0, NULL, HFILL} }, { &hf_bthci_cmd_oob_data_present, {"OOB Data Present", "bthci_cmd.oob_data_present", - FT_UINT8, BASE_DEC, VALS(bthci_cmd_oob_data_present_vals), 0x0, + FT_UINT8, BASE_DEC, VALS(bthci_cmd_oob_data_present_vals), 0x0, NULL, HFILL} }, { &hf_bthci_cmd_auth_requirements, {"Authentication Requirements", "bthci_cmd.auth_requirements", - FT_UINT8, BASE_DEC, VALS(bthci_cmd_auth_req_vals), 0x0, + FT_UINT8, BASE_DEC|BASE_EXT_STRING, &bthci_cmd_auth_req_vals_ext, 0x0, NULL, HFILL} }, { &hf_bthci_cmd_passkey, @@ -2867,12 +2874,12 @@ proto_register_bthci_cmd(void) }, { &hf_bthci_cmd_eir_struct_type, { "Type", "bthci_cmd.eir_data_type", - FT_UINT8, BASE_HEX, VALS(bthci_cmd_eir_data_type_vals), 0x0, + FT_UINT8, BASE_HEX|BASE_EXT_STRING, &bthci_cmd_eir_data_type_vals_ext, 0x0, "Data Type", HFILL } }, { &hf_bthci_cmd_sc_uuid16, { "UUID", "bthci_cmd.service_class_uuid16", - FT_UINT16, BASE_HEX, VALS(bthci_cmd_service_class_type_vals), 0x0, + FT_UINT16, BASE_HEX|BASE_EXT_STRING, &bthci_cmd_service_class_type_vals_ext, 0x0, "16-bit Service Class UUID", HFILL } }, { &hf_bthci_cmd_sc_uuid32, diff --git a/epan/dissectors/packet-bthci_evt.c b/epan/dissectors/packet-bthci_evt.c index 2500bfee10..164e4eda77 100644 --- a/epan/dissectors/packet-bthci_evt.c +++ b/epan/dissectors/packet-bthci_evt.c @@ -640,7 +640,7 @@ dissect_bthci_evt_cod(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_t buf[0] = 0; - proto_item_append_text(item, " (%s - services:", val_to_str(cod1 & 0x1f, bthci_cmd_major_dev_class_vals, "???")); + proto_item_append_text(item, " (%s - services:", val_to_str_ext_const(cod1 & 0x1f, &bthci_cmd_major_dev_class_vals_ext, "???")); if (cod2 & 0x80) g_strlcat(buf, " Information,", sizeof(buf)); if (cod2 & 0x40) g_strlcat(buf, " Telephony,", sizeof(buf)); if (cod2 & 0x20) g_strlcat(buf, " Audio,", sizeof(buf)); @@ -658,7 +658,7 @@ dissect_bthci_evt_cod(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_t } else { - proto_item_append_text(item, " (%s - no major services)", val_to_str(cod1 & 0x1f, bthci_cmd_major_dev_class_vals, "???")); + proto_item_append_text(item, " (%s - no major services)", val_to_str_ext_const(cod1 & 0x1f, &bthci_cmd_major_dev_class_vals_ext, "???")); } return offset+3; @@ -1147,7 +1147,7 @@ dissect_bthci_evt_command_status(tvbuff_t *tvb, int offset, packet_info *pinfo, offset+=2; col_append_fstr(pinfo->cinfo, COL_INFO, " (%s)", - val_to_str(opcode, bthci_cmd_opcode_vals, "Unknown 0x%08x")); + val_to_str_ext(opcode, &bthci_cmd_opcode_vals_ext, "Unknown 0x%08x")); return offset; } @@ -1230,7 +1230,7 @@ dissect_bthci_evt_ext_inquiry_response(tvbuff_t *tvb, int offset, packet_info *p type = tvb_get_guint8(tvb, offset+i+1); - proto_item_append_text(ti_eir_struct,"%s", val_to_str(type, bthci_cmd_eir_data_type_vals, "Unknown")); + proto_item_append_text(ti_eir_struct,"%s", val_to_str_ext_const(type, &bthci_cmd_eir_data_type_vals_ext, "Unknown")); proto_tree_add_item(ti_eir_struct_subtree,hf_bthci_evt_eir_struct_length, tvb, offset+i, 1, TRUE); proto_tree_add_item(ti_eir_struct_subtree,hf_bthci_evt_eir_struct_type, tvb, offset+i+1, 1, TRUE); @@ -1403,7 +1403,7 @@ dissect_bthci_evt_command_complete(tvbuff_t *tvb, int offset, packet_info *pinfo offset+=2; col_append_fstr(pinfo->cinfo, COL_INFO, " (%s)", - val_to_str(com_opcode, bthci_cmd_opcode_vals, "Unknown 0x%08x")); + val_to_str_ext(com_opcode, &bthci_cmd_opcode_vals_ext, "Unknown 0x%08x")); switch(com_opcode) { /* This is a list of Commands that all return just the status */ @@ -2598,12 +2598,12 @@ proto_register_bthci_evt(void) { &hf_bthci_evt_com_opcode, { "Command Opcode", "bthci_evt.com_opcode", - FT_UINT16, BASE_HEX, VALS(bthci_cmd_opcode_vals), 0x0, + FT_UINT16, BASE_HEX|BASE_EXT_STRING, &bthci_cmd_opcode_vals_ext, 0x0, NULL, HFILL } }, { &hf_bthci_evt_ogf, { "ogf", "bthci_evt.ogf", - FT_UINT16, BASE_HEX, VALS(bthci_ogf_vals), 0xfc00, + FT_UINT16, BASE_HEX|BASE_EXT_STRING, &bthci_ogf_vals_ext, 0xfc00, "Opcode Group Field", HFILL } }, { &hf_bthci_evt_ocf, @@ -2618,7 +2618,7 @@ proto_register_bthci_evt(void) }, { &hf_bthci_evt_status, { "Status", "bthci_evt.status", - FT_UINT8, BASE_HEX, VALS(bthci_cmd_status_vals), 0x0, + FT_UINT8, BASE_HEX|BASE_EXT_STRING, &bthci_cmd_status_vals_ext, 0x0, NULL, HFILL } }, { &hf_bthci_evt_status_pending, @@ -2648,7 +2648,7 @@ proto_register_bthci_evt(void) }, { &hf_bthci_evt_reason, { "Reason", "bthci_evt.reason", - FT_UINT8, BASE_HEX, VALS(bthci_cmd_status_vals), 0x0, + FT_UINT8, BASE_HEX|BASE_EXT_STRING, &bthci_cmd_status_vals_ext, 0x0, NULL, HFILL } }, { &hf_bthci_evt_remote_name, @@ -3458,7 +3458,7 @@ proto_register_bthci_evt(void) }, { &hf_bthci_evt_auth_requirements, {"Authentication Requirements", "bthci_evt.auth_requirements", - FT_UINT8, BASE_DEC, VALS(bthci_cmd_auth_req_vals), 0x0, + FT_UINT8, BASE_DEC|BASE_EXT_STRING, &bthci_cmd_auth_req_vals_ext, 0x0, NULL, HFILL} }, { &hf_bthci_evt_numeric_value, @@ -3488,12 +3488,12 @@ proto_register_bthci_evt(void) }, { &hf_bthci_evt_eir_struct_type, { "Type", "bthci_cmd.eir_data_type", - FT_UINT8, BASE_HEX, VALS(bthci_cmd_eir_data_type_vals), 0x0, + FT_UINT8, BASE_HEX|BASE_EXT_STRING, &bthci_cmd_eir_data_type_vals_ext, 0x0, "Data Type", HFILL } }, { &hf_bthci_evt_sc_uuid16, { "UUID", "bthci_cmd.service_class_uuid16", - FT_UINT16, BASE_HEX, VALS(bthci_cmd_service_class_type_vals), 0x0, + FT_UINT16, BASE_HEX|BASE_EXT_STRING, &bthci_cmd_service_class_type_vals_ext, 0x0, "16-bit Service Class UUID", HFILL } }, { &hf_bthci_evt_sc_uuid32, diff --git a/epan/dissectors/packet-hci_h4.h b/epan/dissectors/packet-hci_h4.h index 5f403665a0..a2f4aa9df3 100644 --- a/epan/dissectors/packet-hci_h4.h +++ b/epan/dissectors/packet-hci_h4.h @@ -29,7 +29,7 @@ #define HCI_H4_TYPE_SCO 0x03 #define HCI_H4_TYPE_EVT 0x04 -extern const value_string bthci_cmd_opcode_vals[]; +extern value_string_ext bthci_cmd_opcode_vals_ext; #define HCI_OGF_LINK_CONTROL 0x01 #define HCI_OGF_LINK_POLICY 0x02 @@ -39,14 +39,15 @@ extern const value_string bthci_cmd_opcode_vals[]; #define HCI_OGF_TESTING 0x06 #define HCI_OGF_LOGO_TESTING 0x3e #define HCI_OGF_VENDOR_SPECIFIC 0x3f -extern const value_string bthci_ogf_vals[]; +extern value_string_ext bthci_ogf_vals_ext; + +extern value_string_ext bthci_cmd_status_vals_ext; +extern value_string_ext bthci_cmd_service_class_type_vals_ext; +extern value_string_ext bthci_cmd_major_dev_class_vals_ext; +extern value_string_ext bthci_cmd_eir_data_type_vals_ext; +extern value_string_ext bthci_cmd_auth_req_vals_ext; -extern const value_string bthci_cmd_status_vals[]; -extern const value_string bthci_cmd_service_class_type_vals[]; -extern const value_string bthci_cmd_major_dev_class_vals[]; -extern const value_string bthci_cmd_eir_data_type_vals[]; extern const value_string bthci_cmd_io_capability_vals[]; extern const value_string bthci_cmd_oob_data_present_vals[]; -extern const value_string bthci_cmd_auth_req_vals[]; #endif diff --git a/epan/dissectors/packet-ip.c b/epan/dissectors/packet-ip.c index dd5c66ebde..48accf696d 100644 --- a/epan/dissectors/packet-ip.c +++ b/epan/dissectors/packet-ip.c @@ -997,6 +997,7 @@ dissect_ipopt_qs(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset, {15, "1.31072 Gbit/s"}, {0, NULL} }; + static value_string_ext qs_rates_ext = VALUE_STRING_EXT_INIT(qs_rates); guint8 command = tvb_get_guint8(tvb, offset + 2); guint8 function = command >> 4; @@ -1006,13 +1007,13 @@ dissect_ipopt_qs(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset, case 0x00: /* rate request */ proto_tree_add_text(opt_tree, tvb, offset, optlen, "%s: Rate request, %s, QS TTL %u", optp->name, - val_to_str(rate, qs_rates, "Unknown"), + val_to_str_ext_const(rate, &qs_rates_ext, "Unknown"), tvb_get_guint8(tvb, offset + 3)); break; case 0x08: /* rate report */ proto_tree_add_text(opt_tree, tvb, offset, optlen, "%s: Rate report, %s", optp->name, - val_to_str(rate, qs_rates, "Unknown")); + val_to_str_ext_const(rate, &qs_rates_ext, "Unknown")); break; default: proto_tree_add_text(opt_tree, tvb, offset, optlen, diff --git a/epan/dissectors/packet-netflow.c b/epan/dissectors/packet-netflow.c index 30bcd5a5a3..a6b7feef71 100644 --- a/epan/dissectors/packet-netflow.c +++ b/epan/dissectors/packet-netflow.c @@ -233,6 +233,7 @@ static const value_string v8_agg[] = { {V8PDU_PREPORTPROTOCOL_METHOD, "V8 Port+Protocol aggregation"}, {0, NULL} }; +static value_string_ext v8_agg_ext = VALUE_STRING_EXT_INIT(v8_agg); /* Version 9 template cache structures */ /* This was 100, but this gives a horrible hash distribution. */ @@ -567,7 +568,6 @@ static const value_string v9_v10_template_types[] = { { 40005, "FW_EVENT" }, { 0, NULL } }; - static value_string_ext v9_v10_template_types_ext = VALUE_STRING_EXT_INIT(v9_v10_template_types); static const value_string v9_scope_field_types[] = { @@ -578,7 +578,6 @@ static const value_string v9_scope_field_types[] = { { 5, "Template" }, { 0, NULL } }; - static value_string_ext v9_scope_field_types_ext = VALUE_STRING_EXT_INIT(v9_scope_field_types); static const value_string v9_sampler_mode[] = { @@ -587,11 +586,13 @@ static const value_string v9_sampler_mode[] = { { 2, "Random" }, { 0, NULL } }; + static const value_string v9_direction[] = { { 0, "Ingress" }, { 1, "Egress" }, { 0, NULL } }; + static const value_string v9_forwarding_status[] = { { 0, "Unknown"}, /* Observed on IOS-XR 3.2 */ { 1, "Forward"}, /* Observed on 7200 12.4(9)T */ @@ -599,6 +600,7 @@ static const value_string v9_forwarding_status[] = { { 3, "Consume"}, /* Observed on 7200 12.4(9)T */ { 0, NULL } }; + static const value_string v9_forwarding_status_code[] = { { 64, "Forwarded (Unknown)" }, { 65, "Forwarded Fragmented" }, @@ -625,6 +627,8 @@ static const value_string v9_forwarding_status_code[] = { { 195, "Terminate For us" }, { 0, NULL } }; +static value_string_ext v9_forwarding_status_code_ext = VALUE_STRING_EXT_INIT(v9_forwarding_status_code); + static const value_string v9_firewall_event[] = { { 0, "Default (ignore)"}, { 1, "Flow created"}, @@ -642,12 +646,14 @@ static const value_string v9_extended_firewall_event[] = { { 1004, "Flow denied (TCP flow beginning with not TCP SYN)"}, { 0, NULL } }; + static const value_string engine_type[] = { { 0, "RP"}, { 1, "VIP/Linecard"}, { 2, "PFC/DFC" }, { 0, NULL } }; + static const value_string v9_flow_end_reason[] = { { 0, "Unknown"}, { 1, "Idle timeout"}, @@ -657,6 +663,7 @@ static const value_string v9_flow_end_reason[] = { { 5, "Lack of resources" }, { 0, NULL } }; + static const value_string v9_biflow_direction[] = { { 0, "Arbitrary"}, { 1, "Initiator"}, @@ -664,6 +671,7 @@ static const value_string v9_biflow_direction[] = { { 3, "Perimeter" }, { 0, NULL } }; + static const value_string selector_algorithm[] = { { 0, "Reserved"}, { 1, "Systematic count-based Sampling"}, @@ -676,6 +684,7 @@ static const value_string selector_algorithm[] = { { 8, "Hash based Filtering using CRC"}, { 0, NULL } }; +static value_string_ext selector_algorithm_ext = VALUE_STRING_EXT_INIT(selector_algorithm); @@ -1186,7 +1195,7 @@ dissect_netflow(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) ipfix_debug0("dissect_netflow: start"); ver = tvb_get_ntohs(tvb, offset); - + ipfix_debug1("dissect_netflow: found version %d", ver); switch (ver) { @@ -2745,8 +2754,8 @@ dissect_v9_v10_pdu_data(tvbuff_t *tvb, packet_info *pinfo, proto_tree *pdutree, if (length==1) { proto_item_append_text(ti, ": %s", val_to_str((tvb_get_guint8(tvb, offset)>>6), v9_forwarding_status, "Unknown(%d)")); - proto_item_append_text(ti, ": %s", val_to_str((tvb_get_guint8(tvb, offset)&0x3F), - v9_forwarding_status_code, "Unknown(%d)")); + proto_item_append_text(ti, ": %s", val_to_str_ext((tvb_get_guint8(tvb, offset)&0x3F), + &v9_forwarding_status_code_ext, "Unknown(%d)")); }; break; @@ -4644,7 +4653,7 @@ proto_register_netflow(void) }, {&hf_cflow_aggmethod, {"AggMethod", "cflow.aggmethod", - FT_UINT8, BASE_DEC, VALS(v8_agg), 0x0, + FT_UINT8, BASE_DEC|BASE_EXT_STRING, &v8_agg_ext, 0x0, "CFlow V8 Aggregation Method", HFILL} }, {&hf_cflow_aggversion, @@ -5046,7 +5055,7 @@ proto_register_netflow(void) }, {&hf_cflow_forwarding_code, {"ForwdCode", "cflow.forwarding_code", - FT_UINT8, BASE_DEC, VALS(v9_forwarding_status_code), 0x3F, + FT_UINT8, BASE_DEC|BASE_EXT_STRING, &v9_forwarding_status_code_ext, 0x3F, "Forwarding Code", HFILL} }, {&hf_cflow_nbar_appl_desc, @@ -5892,7 +5901,7 @@ proto_register_netflow(void) }, {&hf_cflow_selector_algorithm, {"Selector Algorithm", "cflow.selector_algorithm", - FT_UINT16, BASE_DEC, VALS(selector_algorithm), 0x0, + FT_UINT16, BASE_DEC|BASE_EXT_STRING, &selector_algorithm_ext, 0x0, NULL, HFILL} }, {&hf_cflow_sampling_packet_interval, diff --git a/epan/dissectors/packet-scsi.c b/epan/dissectors/packet-scsi.c index 92a82d1ec8..bf23fe02b3 100644 --- a/epan/dissectors/packet-scsi.c +++ b/epan/dissectors/packet-scsi.c @@ -4270,7 +4270,7 @@ dissect_scsi_rsp (tvbuff_t *tvb, packet_info *pinfo, cdata->type=SCSI_PDU_TYPE_RSP; tap_queue_packet(scsi_tap, pinfo, cdata); - csdata=get_cmdset_data(itlq, itl); /* will gassert if itlq is null */ + csdata=get_cmdset_data(itlq, itl); /* will g_assert if itlq is null */ /* Nothing really to do here, just print some stuff passed to us */ diff --git a/epan/dissectors/packet-skinny.c b/epan/dissectors/packet-skinny.c index ad6211e23c..c6261b8732 100644 --- a/epan/dissectors/packet-skinny.c +++ b/epan/dissectors/packet-skinny.c @@ -226,6 +226,7 @@ static const value_string message_id[] = { {0 , NULL} /* terminator */ }; +static value_string_ext message_id_ext = VALUE_STRING_EXT_INIT(message_id); /* * Device type to text conversion table @@ -286,6 +287,7 @@ static const value_string deviceTypes[] = { {255, "NotDefined"}, { 0 , NULL} }; +static value_string_ext deviceTypes_ext = VALUE_STRING_EXT_INIT(deviceTypes); /* * keypad button -> text conversion @@ -309,6 +311,7 @@ static const value_string keypadButtons[] = { {0xf , "Pound"}, {0 , NULL} }; +static value_string_ext keypadButtons_ext = VALUE_STRING_EXT_INIT(keypadButtons); static const value_string deviceStimuli[] = { {0x1 , "LastNumberRedial"}, @@ -344,6 +347,7 @@ static const value_string deviceStimuli[] = { {0x80 , "GroupCallPickup"}, {0,NULL} }; +static value_string_ext deviceStimuli_ext = VALUE_STRING_EXT_INIT(deviceStimuli); /* Note i'm only using 7 later on cuz i'm lazy ;) */ @@ -387,6 +391,7 @@ static const value_string mediaPayloads[] = { {257 , "RFC2833_DynPayload"}, {0 , NULL} }; +static value_string_ext mediaPayloads_ext = VALUE_STRING_EXT_INIT(mediaPayloads); static const value_string alarmSeverities[] = { {0 , "Critical"}, @@ -399,6 +404,7 @@ static const value_string alarmSeverities[] = { {20 , "TraceInfo"}, {0 , NULL} }; +static value_string_ext alarmSeverities_ext = VALUE_STRING_EXT_INIT(alarmSeverities); static const value_string multicastMediaReceptionStatus[] = { {0 , "Ok"}, @@ -441,6 +447,7 @@ static const value_string softKeyEvents[] = { {18 , "GrpCallPickUp"}, {0 , NULL} }; +static value_string_ext softKeyEvents_ext = VALUE_STRING_EXT_INIT(softKeyEvents); /* Define info index for each softkey event for Telecaster station. */ static const value_string softKeyIndexes[] = { @@ -464,6 +471,7 @@ static const value_string softKeyIndexes[] = { {318 , "GrpCallPickUpInfoIndex"}, {0 , NULL} }; +static value_string_ext softKeyIndexes_ext = VALUE_STRING_EXT_INIT(softKeyIndexes); static const value_string buttonDefinitions[] = { @@ -487,6 +495,7 @@ static const value_string buttonDefinitions[] = { {0xff , "Undefined"}, {0 , NULL} }; +static value_string_ext buttonDefinitions_ext = VALUE_STRING_EXT_INIT(buttonDefinitions); #define StationTotalSoftKeySets 10 /* total number of the soft key sets */ static const value_string keySetNames[] = { @@ -502,7 +511,9 @@ static const value_string keySetNames[] = { {9 , "OffHook with features"}, {0 , NULL} }; +static value_string_ext keySetNames_ext = VALUE_STRING_EXT_INIT(keySetNames); +#if 0 /* Define soft key labels for the Telecaster station */ static const value_string softKeyLabel[] _U_ = { {0 , "undefined"}, @@ -526,7 +537,7 @@ static const value_string softKeyLabel[] _U_ = { {18 , "GPickUp"}, {0 , NULL} }; - +#endif /* * define lamp modes; @@ -545,6 +556,7 @@ static const value_string stationLampModes[] = { {0x5 , "Blink"}, {0 , NULL} }; +static value_string_ext stationLampModes_ext = VALUE_STRING_EXT_INIT(stationLampModes); /* Defined the Call States to be sent to the Telecaste station. * These are NOT the call states used in CM internally. Instead, @@ -567,6 +579,7 @@ static const value_string skinny_stationCallStates[] = { {14 , "InvalidNumber"}, {0 , NULL} }; +static value_string_ext skinny_stationCallStates_ext = VALUE_STRING_EXT_INIT(skinny_stationCallStates); /* Defined Call Type */ static const value_string skinny_callTypes[] = { @@ -666,6 +679,7 @@ static const value_string skinny_deviceTones[] = { {0x7f , "NoTone"}, {0 , NULL} }; +static value_string_ext skinny_deviceTones_ext = VALUE_STRING_EXT_INIT(skinny_deviceTones); /* define ring types */ static const value_string skinny_ringTypes[] = { @@ -677,6 +691,8 @@ static const value_string skinny_ringTypes[] = { {0x6 , "PrecedenceRing"}, {0 , NULL} }; +static value_string_ext skinny_ringTypes_ext = VALUE_STRING_EXT_INIT(skinny_ringTypes); + static const value_string skinny_ringModes[] = { {0x1 , "RingForever"}, {0x2 , "RingOnce"}, @@ -739,6 +755,7 @@ static const value_string skinny_modifyConfResults[] = { {6 , "SystemErr"}, {0 , NULL} }; +static value_string_ext skinny_modifyConfResults_ext = VALUE_STRING_EXT_INIT(skinny_modifyConfResults); static const value_string skinny_deleteConfResults[] = { {0 , "Ok"}, @@ -755,6 +772,7 @@ static const value_string skinny_addParticipantResults[] = { {4 , "SystemErr"}, {0 , NULL} }; +static value_string_ext skinny_addParticipantResults_ext = VALUE_STRING_EXT_INIT(skinny_addParticipantResults); static const value_string skinny_auditParticipantResults[] = { {0 , "Ok"}, @@ -796,6 +814,7 @@ static const value_string skinny_sessionTypes[] = { {10 , "Video"}, {0 , NULL} }; +static value_string_ext skinny_sessionTypes_ext = VALUE_STRING_EXT_INIT(skinny_sessionTypes); static const value_string skinny_mediaEnunciationTypes[] = { {1 , "None"}, @@ -830,6 +849,7 @@ static const value_string skinny_Layouts[] = { {10 , "ThreeByThree4Alt2"}, {0 , NULL} }; +static value_string_ext skinny_Layouts_ext = VALUE_STRING_EXT_INIT(skinny_Layouts); static const value_string skinny_transmitOrReceive[] = { {1 , "Station_Receive_only"}, @@ -868,6 +888,7 @@ static const value_string skinny_miscCommandType[] = { {7 , "temporalSpatialTradeOff"}, {0 , NULL} }; +static value_string_ext skinny_miscCommandType_ext = VALUE_STRING_EXT_INIT(skinny_miscCommandType); static const value_string skinny_formatTypes[] = { {1 , "sqcif (128x96)"}, @@ -878,6 +899,7 @@ static const value_string skinny_formatTypes[] = { {6 , "custom_base"}, {0 , NULL} }; +static value_string_ext skinny_formatTypes_ext = VALUE_STRING_EXT_INIT(skinny_formatTypes); static const value_string cast_callSecurityStatusTypes[] = { {0 , "CallSecurityStatusUnknown"}, @@ -907,23 +929,23 @@ static const value_string cast_callSecurityStatusTypes[] = { #define StationMaxDisplayPromptStatusSize 32 /* max status text size in the display status message */ #define StationMaxDisplayNotifySize 32 /* max prompt text size in the display prompt message */ #define StationMaxAlarmMessageSize 80 /* max size for an alarm message */ -#define StationMaxUserDeviceDataSize 2000 /* max size of user data between application and device */ -#define StationMaxConference 32 -#define AppConferenceIDSize 32 -#define AppDataSize 24 -#define MAX_CUSTOM_PICTURES 6 -#define MAX_LAYOUT_WITH_SAME_SERVICE 5 -#define MAX_SERVICE_TYPE 4 -#define DeviceMaxCapabilities 18 /* max capabilities allowed in Cap response message */ +#define StationMaxUserDeviceDataSize 2000 /* max size of user data between application and device */ +#define StationMaxConference 32 +#define AppConferenceIDSize 32 +#define AppDataSize 24 +#define MAX_CUSTOM_PICTURES 6 +#define MAX_LAYOUT_WITH_SAME_SERVICE 5 +#define MAX_SERVICE_TYPE 4 +#define DeviceMaxCapabilities 18 /* max capabilities allowed in Cap response message */ #define StationMaxCapabilities DeviceMaxCapabilities -#define StationMaxVideoCapabilities 10 -#define StationMaxDataCapabilities 5 -#define MAX_LEVEL_PREFERENCE 4 -#define MaxAnnouncementList 32 -#define StationMaxMonitorParties 16 /* Max Monitor Bridge whisper matrix parties, rm, M&R in Parche */ -#define StationMaxServiceURLSize 256 /* max number of service URLs length */ -#define MAX_PICTURE_FORMAT 5 -#define MAX_REFERENCE_PICTURE 4 +#define StationMaxVideoCapabilities 10 +#define StationMaxDataCapabilities 5 +#define MAX_LEVEL_PREFERENCE 4 +#define MaxAnnouncementList 32 +#define StationMaxMonitorParties 16 /* Max Monitor Bridge whisper matrix parties, rm, M&R in Parche */ +#define StationMaxServiceURLSize 256 /* max number of service URLs length */ +#define MAX_PICTURE_FORMAT 5 +#define MAX_REFERENCE_PICTURE 4 /* Initialize the protocol and registered fields */ static int proto_skinny = -1; @@ -1249,7 +1271,7 @@ dissect_skinny_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) } si = &pi_arr[pi_current]; si->messId = data_messageid; - si->messageName = val_to_str(data_messageid, message_id, "0x%08X (Unknown)"); + si->messageName = val_to_str_ext(data_messageid, &message_id_ext, "0x%08X (Unknown)"); si->callId = 0; si->lineId = 0; si->passThruId = 0; @@ -2758,7 +2780,7 @@ proto_register_skinny(void) /* FIXME: Enable use of message name ??? */ { &hf_skinny_messageid, { "Message ID", "skinny.messageid", - FT_UINT32, BASE_HEX, VALS(message_id), 0x0, + FT_UINT32, BASE_HEX|BASE_EXT_STRING, &message_id_ext, 0x0, "The function requested/done with this message.", HFILL } }, @@ -2786,7 +2808,7 @@ proto_register_skinny(void) { &hf_skinny_deviceType, { "DeviceType", "skinny.deviceType", - FT_UINT32, BASE_DEC, VALS(deviceTypes), 0x0, + FT_UINT32, BASE_DEC|BASE_EXT_STRING, &deviceTypes_ext, 0x0, "DeviceType of the station.", HFILL } }, @@ -2807,7 +2829,7 @@ proto_register_skinny(void) { &hf_skinny_stationKeypadButton, { "KeypadButton", "skinny.stationKeypadButton", - FT_UINT32, BASE_HEX, VALS(keypadButtons), 0x0, + FT_UINT32, BASE_HEX|BASE_EXT_STRING, &keypadButtons_ext, 0x0, "The button pressed on the phone.", HFILL } }, @@ -2821,7 +2843,7 @@ proto_register_skinny(void) { &hf_skinny_stimulus, { "Stimulus", "skinny.stimulus", - FT_UINT32, BASE_HEX, VALS(deviceStimuli), 0x0, + FT_UINT32, BASE_HEX|BASE_EXT_STRING, &deviceStimuli_ext, 0x0, "Reason for the device stimulus message.", HFILL } }, @@ -2856,7 +2878,7 @@ proto_register_skinny(void) { &hf_skinny_payloadCapability, { "PayloadCapability", "skinny.payloadCapability", - FT_UINT32, BASE_DEC, VALS(mediaPayloads), 0x0, + FT_UINT32, BASE_DEC|BASE_EXT_STRING, &mediaPayloads_ext, 0x0, "The payload capability for this media capability structure.", HFILL } }, @@ -2870,7 +2892,7 @@ proto_register_skinny(void) { &hf_skinny_alarmSeverity, { "AlarmSeverity", "skinny.alarmSeverity", - FT_UINT32, BASE_DEC, VALS(alarmSeverities), 0x0, + FT_UINT32, BASE_DEC|BASE_EXT_STRING, &alarmSeverities_ext, 0x0, "The severity of the reported alarm.", HFILL } }, @@ -3003,7 +3025,7 @@ proto_register_skinny(void) { &hf_skinny_softKeyEvent, { "SoftKeyEvent", "skinny.softKeyEvent", - FT_UINT32, BASE_DEC, VALS(softKeyEvents), 0x0, + FT_UINT32, BASE_DEC|BASE_EXT_STRING, &softKeyEvents_ext, 0x0, "Which softkey event is being reported.", HFILL } }, @@ -3052,14 +3074,14 @@ proto_register_skinny(void) { &hf_skinny_buttonInstanceNumber, { "InstanceNumber", "skinny.buttonInstanceNumber", - FT_UINT8, BASE_HEX, VALS(keypadButtons), 0x0, + FT_UINT8, BASE_HEX|BASE_EXT_STRING, &keypadButtons_ext, 0x0, "The button instance number for a button or the StationKeyPad value, repeats allowed.", HFILL } }, { &hf_skinny_buttonDefinition, { "ButtonDefinition", "skinny.buttonDefinition", - FT_UINT8, BASE_HEX, VALS(buttonDefinitions), 0x0, + FT_UINT8, BASE_HEX|BASE_EXT_STRING, &buttonDefinitions_ext, 0x0, "The button type for this instance (ie line, speed dial, ....", HFILL } }, @@ -3115,21 +3137,21 @@ proto_register_skinny(void) { &hf_skinny_softKeyTemplateIndex, { "SoftKeyTemplateIndex", "skinny.softKeyTemplateIndex", - FT_UINT8, BASE_DEC, VALS(softKeyEvents), 0x0, + FT_UINT8, BASE_DEC|BASE_EXT_STRING, &softKeyEvents_ext, 0x0, "Array of size 16 8-bit unsigned ints containing an index into the softKeyTemplate.", HFILL } }, { &hf_skinny_softKeyInfoIndex, { "SoftKeyInfoIndex", "skinny.softKeyInfoIndex", - FT_UINT16, BASE_DEC, VALS(softKeyIndexes), 0x0, + FT_UINT16, BASE_DEC|BASE_EXT_STRING, &softKeyIndexes_ext, 0x0, "Array of size 16 16-bit unsigned integers containing an index into the soft key description information.", HFILL } }, { &hf_skinny_softKeySetDescription, { "SoftKeySet", "skinny.softKeySetDescription", - FT_UINT8, BASE_DEC, VALS(keySetNames), 0x0, + FT_UINT8, BASE_DEC|BASE_EXT_STRING, &keySetNames_ext, 0x0, "A text description of what this softkey when this softkey set is displayed", HFILL } }, @@ -3255,7 +3277,7 @@ proto_register_skinny(void) { &hf_skinny_lampMode, { "LampMode", "skinny.lampMode", - FT_UINT32, BASE_DEC, VALS(stationLampModes), 0x0, + FT_UINT32, BASE_DEC|BASE_EXT_STRING, &stationLampModes_ext, 0x0, "The lamp mode", HFILL } }, @@ -3373,14 +3395,14 @@ proto_register_skinny(void) }, { &hf_skinny_callState, { "CallState", "skinny.callState", - FT_UINT32, BASE_DEC, VALS(skinny_stationCallStates), 0x0, + FT_UINT32, BASE_DEC|BASE_EXT_STRING, &skinny_stationCallStates_ext, 0x0, "The D channel call state of the call", HFILL } }, { &hf_skinny_deviceTone, { "Tone", "skinny.deviceTone", - FT_UINT32, BASE_HEX, VALS(skinny_deviceTones), 0x0, + FT_UINT32, BASE_HEX|BASE_EXT_STRING, &skinny_deviceTones_ext, 0x0, "Which tone to play", HFILL } }, @@ -3429,7 +3451,7 @@ proto_register_skinny(void) { &hf_skinny_ringType, { "Ring Type", "skinny.ringType", - FT_UINT32, BASE_HEX, VALS(skinny_ringTypes), 0x0, + FT_UINT32, BASE_HEX|BASE_EXT_STRING, &skinny_ringTypes_ext, 0x0, "What type of ring to play", HFILL } }, @@ -3611,7 +3633,7 @@ proto_register_skinny(void) { &hf_skinny_sessionType, { "Session Type", "skinny.sessionType", - FT_UINT32, BASE_DEC, VALS(skinny_sessionTypes), 0x0, + FT_UINT32, BASE_DEC|BASE_EXT_STRING, &skinny_sessionTypes_ext, 0x0, "The type of this session.", HFILL } }, @@ -3751,7 +3773,7 @@ proto_register_skinny(void) { &hf_skinny_modifyConfResults, { "ModifyConfResults", "skinny.modifyConfResults", - FT_UINT32, BASE_DEC, VALS(skinny_modifyConfResults), 0x0, + FT_UINT32, BASE_DEC|BASE_EXT_STRING, &skinny_modifyConfResults_ext, 0x0, "The modify conference results", HFILL } }, @@ -3765,7 +3787,7 @@ proto_register_skinny(void) { &hf_skinny_addParticipantResults, { "AddParticipantResults", "skinny.addParticipantResults", - FT_UINT32, BASE_DEC, VALS(skinny_addParticipantResults), 0x0, + FT_UINT32, BASE_DEC|BASE_EXT_STRING, &skinny_addParticipantResults_ext, 0x0, "The add conference participant results", HFILL } }, @@ -3975,7 +3997,7 @@ proto_register_skinny(void) { &hf_skinny_layout, { "Layout", "skinny.layout", - FT_UINT32, BASE_DEC, VALS(skinny_Layouts), 0x0, + FT_UINT32, BASE_DEC|BASE_EXT_STRING, &skinny_Layouts_ext, 0x0, NULL, HFILL } }, @@ -4017,7 +4039,7 @@ proto_register_skinny(void) { &hf_skinny_format, { "Format", "skinny.format", - FT_UINT32, BASE_DEC, VALS(skinny_formatTypes), 0x0, + FT_UINT32, BASE_DEC|BASE_EXT_STRING, &skinny_formatTypes_ext, 0x0, "Format.", HFILL } }, @@ -4262,7 +4284,7 @@ proto_register_skinny(void) { &hf_skinny_miscCommandType, { "MiscCommandType", "skinny.miscCommandType", - FT_UINT32, BASE_DEC, VALS(skinny_miscCommandType), 0x0, + FT_UINT32, BASE_DEC|BASE_EXT_STRING, &skinny_miscCommandType_ext, 0x0, NULL, HFILL } }, diff --git a/epan/dissectors/packet-uma.c b/epan/dissectors/packet-uma.c index b5c1bc0357..917107c9f5 100644 --- a/epan/dissectors/packet-uma.c +++ b/epan/dissectors/packet-uma.c @@ -89,25 +89,25 @@ static dissector_handle_t llc_handle; /* Initialize the protocol and registered fields */ static int proto_uma = -1; -static int hf_uma_length_indicator = -1; +static int hf_uma_length_indicator = -1; static int hf_uma_pd = -1; static int hf_uma_skip_ind = -1; -static int hf_uma_urr_msg_type = -1; -static int hf_uma_urlc_msg_type = -1; +static int hf_uma_urr_msg_type = -1; +static int hf_uma_urlc_msg_type = -1; static int hf_uma_urlc_TLLI = -1; -static int hf_uma_urlc_seq_nr = -1; +static int hf_uma_urlc_seq_nr = -1; static int hf_uma_urr_IE = -1; -static int hf_uma_urr_IE_len = -1; +static int hf_uma_urr_IE_len = -1; static int hf_uma_urr_mobile_identity_type = -1; -static int hf_uma_urr_odde_even_ind = -1; +static int hf_uma_urr_odde_even_ind = -1; static int hf_uma_urr_imsi = -1; static int hf_uma_urr_imei = -1; -static int hf_uma_urr_imeisv = -1; -static int hf_uma_urr_tmsi_p_tmsi = -1; +static int hf_uma_urr_imeisv = -1; +static int hf_uma_urr_tmsi_p_tmsi = -1; static int hf_uma_urr_uri = -1; static int hf_uma_urr_radio_type_of_id = -1; -static int hf_uma_urr_radio_id = -1; -static int hf_uma_urr_cell_id = -1; +static int hf_uma_urr_radio_id = -1; +static int hf_uma_urr_cell_id = -1; static int hf_uma_urr_mcc = -1; static int hf_uma_urr_mnc = -1; static int hf_uma_urr_lac = -1; @@ -118,11 +118,11 @@ static int hf_uma_urr_uc = -1; static int hf_uma_urr_rrs = -1; static int hf_uma_urr_gmsi = -1; static int hf_uma_urr_psho = -1; -static int hf_uma_urr_IP_Address_type = -1; +static int hf_uma_urr_IP_Address_type = -1; static int hf_uma_urr_FQDN = -1; -static int hf_uma_urr_sgw_ipv4 = -1; -static int hf_uma_urr_redirection_counter = -1; -static int hf_uma_urr_dis_rej_cau = -1; +static int hf_uma_urr_sgw_ipv4 = -1; +static int hf_uma_urr_redirection_counter = -1; +static int hf_uma_urr_dis_rej_cau = -1; static int hf_uma_urr_MSCR = -1; static int hf_uma_urr_ATT = -1; static int hf_uma_urr_DTM = -1; @@ -158,7 +158,7 @@ static int hf_uma_urr_TU3920_timer = -1; static int hf_uma_urr_peak_tpt_cls = -1; static int hf_uma_urr_radio_pri = -1; static int hf_uma_urr_rlc_mode = -1; -static int hf_uma_urr_ga_psr_cause = -1; +static int hf_uma_urr_ga_psr_cause = -1; static int hf_uma_urr_udr = -1; static int hf_uma_urr_TU4001_timer = -1; static int hf_uma_urr_LS = -1; @@ -275,6 +275,7 @@ static const value_string uma_urr_msg_type_vals[] = { { 130, "GA-CSR REQUEST REJECT"}, { 0, NULL } }; +static value_string_ext uma_urr_msg_type_vals_ext = VALUE_STRING_EXT_INIT(uma_urr_msg_type_vals); /* * Message types for URLC signaling */ @@ -291,6 +292,8 @@ static const value_string uma_urlc_msg_type_vals[] = { { 12, "URLC STATUS"}, { 0, NULL } }; +static value_string_ext uma_urlc_msg_type_vals_ext = VALUE_STRING_EXT_INIT(uma_urlc_msg_type_vals); + /* * IE type and identifiers for Unlicensed Radio Resources management */ @@ -368,6 +371,28 @@ static const value_string uma_urr_IE_type_vals[] = { { 71, "Required GAN Services"}, { 72, "Broadcast Container"}, { 73, "3G Cell Identity"}, + { 74, "3G Security Capability"}, /* 11.2.108 */ + { 75, "NAS Synchronisation Indicator"}, /* 11.2.109 */ + { 76, "GANC TEID"}, /* 11.2.110 */ + { 77, "MS TEID"}, /* 11.2.110 */ + { 78, "UTRAN RRC Message"}, /* 11.2.111 */ + { 79, "GAN Mode Indicator"}, /* 11.2.79 */ + { 80, "CN Domain Identity"}, /* 11.2.80 */ + { 81, "GAN Iu Mode Cell Description"}, /* 11.2.81 */ + { 82, "3G UARFCN"}, /* 11.2.82 */ + { 83, "RAB ID"}, /* 11.2.83 */ + { 84, "RAB ID List"}, /* 11.2.84 */ + { 85, "GA-RRC Establishment Cause"}, /* 11.2.85 */ + { 86, "GA-RRC Cause"}, /* 11.2.86 */ + { 87, "GA-RRC Paging Cause"}, /* 11.2.87 */ + { 88, "Intra Domain NAS Node Selector"}, /* 11.2.88 */ + { 89, "CTC Activation List"}, /* 11.2.89 */ + { 90, "CTC Description"}, /* 11.2.90 */ + { 91, "CTC Activation Ack List"}, /* 11.2.91 */ + { 92, "CTC Activation Ack Description"}, /* 11.2.92 */ + { 93, "CTC Modification List"}, /* 11.2.93 */ + { 94, "CTC Modification Ack List"}, /* 11.2.94 */ + { 95, "CTC Modification Ack Description"}, /* 11.2.95 */ { 96, "MS Radio Identity"}, { 97, "GANC IP Address"}, { 98, "GANC Fully Qualified Domain/Host Name"}, @@ -378,47 +403,26 @@ static const value_string uma_urr_IE_type_vals[] = { { 105, "RTCP UDP port"}, { 106, "GERAN Received Signal Level List"}, { 107, "UTRAN Received Signal Level List"}, - { 108, "PS Handover to GERAN Command"}, /* 11.2.74 */ - { 109, "PS Handover to UTRAN Command"}, /* 11.2.75 */ - { 110, "PS Handover to GERAN PSI"}, /* 11.2.76 */ - { 111, "PS Handover to GERAN SI"}, /* 11.2.77 */ - { 112, "TU4004 Timer"}, /* 11.2.78 */ - { 79, "GAN Mode Indicator"}, /* 11.2.79 */ - { 80, "CN Domain Identity"}, /* 11.2.80 */ - { 81, "GAN Iu Mode Cell Description"}, /* 11.2.81 */ - { 82, "3G UARFCN"}, /* 11.2.82 */ - { 83, "RAB ID"}, /* 11.2.83 */ - { 84, "RAB ID List"}, /* 11.2.84 */ - { 85, "GA-RRC Establishment Cause"}, /* 11.2.85 */ - { 86, "GA-RRC Cause"}, /* 11.2.86 */ - { 87, "GA-RRC Paging Cause"}, /* 11.2.87 */ - { 88, "Intra Domain NAS Node Selector"}, /* 11.2.88 */ - { 89, "CTC Activation List"}, /* 11.2.89 */ - { 90, "CTC Description"}, /* 11.2.90 */ - { 91, "CTC Activation Ack List"}, /* 11.2.91 */ - { 92, "CTC Activation Ack Description"}, /* 11.2.92 */ - { 93, "CTC Modification List"}, /* 11.2.93 */ - { 94, "CTC Modification Ack List"}, /* 11.2.94 */ - { 95, "CTC Modification Ack Description"}, /* 11.2.95 */ - { 115, "PTC Activation List"}, /* 11.2.96 */ - { 116, "PTC Description"}, /* 11.2.97 */ - { 117, "PTC Activation Ack List"}, /* 11.2.98 */ - { 118, "PTC Activation Ack Description"}, /* 11.2.99 */ - { 119, "PTC Modification List"}, /* 11.2.100 */ - { 120, "PTC Modification Ack List"}, /* 11.2.101 */ + { 108, "PS Handover to GERAN Command"}, /* 11.2.74 */ + { 109, "PS Handover to UTRAN Command"}, /* 11.2.75 */ + { 110, "PS Handover to GERAN PSI"}, /* 11.2.76 */ + { 111, "PS Handover to GERAN SI"}, /* 11.2.77 */ + { 112, "TU4004 Timer"}, /* 11.2.78 */ + { 115, "PTC Activation List"}, /* 11.2.96 */ + { 116, "PTC Description"}, /* 11.2.97 */ + { 117, "PTC Activation Ack List"}, /* 11.2.98 */ + { 118, "PTC Activation Ack Description"}, /* 11.2.99 */ + { 119, "PTC Modification List"}, /* 11.2.100 */ + { 120, "PTC Modification Ack List"}, /* 11.2.101 */ { 121, "PTC Modification Ack Description"}, /* 11.2.102 */ - { 122, "RAB Configuration"}, /* 11.2.103 */ - { 123, "Multi-rate Configuration 2"}, /* 11.2.104 */ + { 122, "RAB Configuration"}, /* 11.2.103 */ + { 123, "Multi-rate Configuration 2"}, /* 11.2.104 */ { 124, "Selected Integrity Protection Algorithm"}, /* 11.2.105 */ - { 125, "Selected Encryption Algorithm"}, /* 11.2.106 */ - { 126, "CN Domains to Handover"}, /* 11.2.107 */ - { 74, "3G Security Capability"}, /* 11.2.108 */ - { 75, "NAS Synchronisation Indicator"}, /* 11.2.109 */ - { 76, "GANC TEID"}, /* 11.2.110 */ - { 77, "MS TEID"}, /* 11.2.110 */ - { 78, "UTRAN RRC Message"}, /* 11.2.111 */ + { 125, "Selected Encryption Algorithm"}, /* 11.2.106 */ + { 126, "CN Domains to Handover"}, /* 11.2.107 */ { 0, NULL } }; +static value_string_ext uma_urr_IE_type_vals_ext = VALUE_STRING_EXT_INIT(uma_urr_IE_type_vals); static const value_string uma_urr_mobile_identity_type_vals[] = { { 1, "IMSI"}, @@ -605,6 +609,8 @@ static const value_string uma_GRS_GSM_RR_State_vals[] = { { 7, "Unknown"}, { 0, NULL } }; +static value_string_ext uma_GRS_GSM_RR_State_vals_ext = VALUE_STRING_EXT_INIT(uma_GRS_GSM_RR_State_vals); + /* UMA Band (4 bit field) */ static const value_string uma_gan_band_vals[] = { { 0, "E-GSM is supported"}, @@ -617,6 +623,8 @@ static const value_string uma_gan_band_vals[] = { { 7, "GSM 700 is supported"}, { 0, NULL } }; +static value_string_ext uma_gan_band_vals_ext = VALUE_STRING_EXT_INIT(uma_gan_band_vals); + /*URS, URR State (octet 3) */ static const value_string URR_state_vals[] = { { 0, "GA-CSR is in GA-CSR-IDLE state"}, @@ -661,6 +669,7 @@ static const value_string register_reject_cause_vals[] = { /* 12 to 255 Reserved for future use. */ { 0, NULL } }; +static value_string_ext register_reject_cause_vals_ext = VALUE_STRING_EXT_INIT(register_reject_cause_vals); /* L3 Protocol discriminator values according to TS 24 007 (640) */ #if 0 /** See packet-gms_a-dtap.c **/ @@ -690,7 +699,7 @@ static const value_string protocol_discriminator_vals[] = { * bits * 4 3 2 */ - static const value_string algorithm_identifier_vals[] = { +static const value_string algorithm_identifier_vals[] = { { 0, "Cipher with algorithm A5/1"}, { 1, "Cipher with algorithm A5/2"}, { 2, "Cipher with algorithm A5/3"}, @@ -701,8 +710,10 @@ static const value_string protocol_discriminator_vals[] = { { 7, "Reserved"}, { 0, NULL } }; +static value_string_ext algorithm_identifier_vals_ext = VALUE_STRING_EXT_INIT(algorithm_identifier_vals); + /* GPRS Resumption */ - static const value_string GPRS_resumption_vals[] = { +static const value_string GPRS_resumption_vals[] = { { 0, "Resumption of GPRS services not successfully acknowledged"}, { 1, "Resumption of GPRS services successfully acknowledged"}, { 0, NULL } @@ -728,7 +739,7 @@ static const value_string radio_pri_vals[] = { { 1, "Radio priority 2"}, { 2, "Radio priority 3"}, { 3, "Radio priority 4"}, - { 3, "Radio Priority Unknown"}, + { 3, "Radio Priority Unknown"}, /* XX: ?? */ { 0, NULL } }; @@ -758,6 +769,7 @@ static const value_string uma_ga_psr_cause_vals[] = { { 17, "PS handover failure - no uplink TBF allocation"}, { 0, NULL } }; +static value_string_ext uma_ga_psr_cause_vals_ext = VALUE_STRING_EXT_INIT(uma_ga_psr_cause_vals); /* LS, Location Status (octet 3) */ static const value_string LS_vals[] = { @@ -825,20 +837,22 @@ static const value_string uma_service_zone_icon_ind_vals[] = { }; /*Establishment Cause (octet 3)*/ static const value_string establishment_cause_vals[] = { - { 0xa0, "Emergency"}, - { 0xc0, "Call re-establishment"}, { 0x00, "Location Update"}, { 0x10, "Other SDCCH procedures including IMSI Detach, SMS, SS, paging response"}, /* note: Paging response for SDCCH needed is using codepoint 0001 0000 */ { 0x20, "Paging response (TCH/F needed)"}, { 0x30, "Paging response (TCH/F or TCH/H needed)"}, - { 0x80, "Paging response (any channel needed)"}, { 0x40, "Originating speech call from dual-rate mobile station when TCH/H is sufficient"}, { 0x50, "Originating data call from dual-rate mobile station when TCH/H is sufficient"}, + { 0x80, "Paging response (any channel needed)"}, + { 0xa0, "Emergency"}, + { 0xc0, "Call re-establishment"}, { 0xe0, "Originating speech call and TCH/F is needed"}, { 0xf0, "Originating data call and TCH/F is needed"}, { 0, NULL } }; +static value_string_ext establishment_cause_vals_ext = VALUE_STRING_EXT_INIT(establishment_cause_vals); + /*CHANNEL (octet 3) */ static const value_string channel_vals[] = { { 0, "Any channel"}, @@ -902,7 +916,7 @@ dissect_uma_IE(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset) ie_value = tvb_get_guint8(tvb,offset); urr_ie_item = proto_tree_add_text(tree,tvb,offset,-1,"%s", - val_to_str(ie_value, uma_urr_IE_type_vals, "Unknown IE (%u)")); + val_to_str_ext(ie_value, &uma_urr_IE_type_vals_ext, "Unknown IE (%u)")); urr_ie_tree = proto_item_add_subtree(urr_ie_item, ett_urr_ie); proto_tree_add_item(urr_ie_tree, hf_uma_urr_IE, tvb, offset, 1, FALSE); @@ -1694,7 +1708,7 @@ dissect_uma(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) octet = tvb_get_guint8(tvb,offset); proto_tree_add_item(uma_tree, hf_uma_urr_msg_type, tvb, offset, 1, FALSE); if (check_col(pinfo->cinfo, COL_INFO)) - col_add_str(pinfo->cinfo, COL_INFO, val_to_str(octet, uma_urr_msg_type_vals, "Unknown URR (%u)")); + col_add_str(pinfo->cinfo, COL_INFO, val_to_str_ext(octet, &uma_urr_msg_type_vals_ext, "Unknown URR (%u)")); while ((msg_len + 1) > offset ){ offset++; offset = dissect_uma_IE(tvb, pinfo, uma_tree, offset); @@ -1705,7 +1719,7 @@ dissect_uma(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) octet = tvb_get_guint8(tvb,offset); proto_tree_add_item(uma_tree, hf_uma_urlc_msg_type, tvb, offset, 1, FALSE); if (check_col(pinfo->cinfo, COL_INFO)){ - col_add_str(pinfo->cinfo, COL_INFO, val_to_str(octet, uma_urlc_msg_type_vals, "Unknown URLC (%u)")); + col_add_str(pinfo->cinfo, COL_INFO, val_to_str_ext(octet, &uma_urlc_msg_type_vals_ext, "Unknown URLC (%u)")); col_set_fence(pinfo->cinfo,COL_INFO); } offset++; @@ -1758,7 +1772,7 @@ dissect_uma_urlc_udp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) octet = tvb_get_guint8(tvb,offset); proto_tree_add_item(uma_tree, hf_uma_urlc_msg_type, tvb, offset, 1, FALSE); if (check_col(pinfo->cinfo, COL_INFO)){ - col_add_fstr(pinfo->cinfo, COL_INFO, "%s ",val_to_str(octet, uma_urlc_msg_type_vals, "Unknown URLC (%u)")); + col_add_fstr(pinfo->cinfo, COL_INFO, "%s ",val_to_str_ext(octet, &uma_urlc_msg_type_vals_ext, "Unknown URLC (%u)")); col_set_fence(pinfo->cinfo,COL_INFO); } msg_len = tvb_length_remaining(tvb,offset) - 1; @@ -1857,12 +1871,12 @@ proto_register_uma(void) }, { &hf_uma_urr_msg_type, { "URR Message Type", "uma.urr.msg.type", - FT_UINT16, BASE_DEC, VALS(uma_urr_msg_type_vals), 0x0, + FT_UINT16, BASE_DEC|BASE_EXT_STRING, &uma_urr_msg_type_vals_ext, 0x0, NULL, HFILL } }, { &hf_uma_urlc_msg_type, { "URLC Message Type", "uma.urlc.msg.type", - FT_UINT8, BASE_DEC, VALS(uma_urlc_msg_type_vals), 0x0, + FT_UINT8, BASE_DEC|BASE_EXT_STRING, &uma_urlc_msg_type_vals_ext, 0x0, NULL, HFILL } }, { &hf_uma_urlc_TLLI, @@ -1877,7 +1891,7 @@ proto_register_uma(void) }, { &hf_uma_urr_IE, { "URR Information Element","uma.urr.ie.type", - FT_UINT8, BASE_DEC, VALS(uma_urr_IE_type_vals), 0x0, + FT_UINT8, BASE_DEC|BASE_EXT_STRING, &uma_urr_IE_type_vals_ext, 0x0, NULL, HFILL } }, { &hf_uma_urr_IE_len, @@ -2099,12 +2113,12 @@ proto_register_uma(void) }, { &hf_uma_urr_GSM_RR_state, { "GSM RR State value","uma.urr.gsmrrstate", - FT_UINT8,BASE_DEC, VALS(uma_GRS_GSM_RR_State_vals), 0x7, + FT_UINT8,BASE_DEC|BASE_EXT_STRING, &uma_GRS_GSM_RR_State_vals_ext, 0x7, NULL, HFILL } }, { &hf_uma_urr_gan_band, { "UMA Band","uma.urr.umaband", - FT_UINT8,BASE_DEC, VALS(uma_gan_band_vals), 0x0f, + FT_UINT8,BASE_DEC|BASE_EXT_STRING, &uma_gan_band_vals_ext, 0x0f, NULL, HFILL } }, { &hf_uma_urr_URR_state, @@ -2114,7 +2128,7 @@ proto_register_uma(void) }, { &hf_uma_urr_register_reject_cause, { "Register Reject Cause","uma.urr.state", - FT_UINT8,BASE_DEC, VALS(register_reject_cause_vals), 0x0, + FT_UINT8,BASE_DEC|BASE_EXT_STRING, ®ister_reject_cause_vals_ext, 0x0, NULL, HFILL } }, { &hf_uma_urr_TU3906_timer, @@ -2154,7 +2168,7 @@ proto_register_uma(void) }, { &hf_uma_urr_algorithm_id, { "Algorithm identifier","uma.urr.algorithm_identifier", - FT_UINT8,BASE_DEC, VALS(algorithm_identifier_vals), 0xe, + FT_UINT8,BASE_DEC|BASE_EXT_STRING, &algorithm_identifier_vals_ext, 0xe, "Algorithm_identifier", HFILL } }, { &hf_uma_urr_GPRS_resumption, @@ -2189,7 +2203,7 @@ proto_register_uma(void) }, { &hf_uma_urr_ga_psr_cause, { "GA-PSR Cause","uma.urr.ga_psr_cause", - FT_UINT8,BASE_DEC, VALS(uma_ga_psr_cause_vals), 0x0, + FT_UINT8,BASE_DEC|BASE_EXT_STRING, &uma_ga_psr_cause_vals_ext, 0x0, NULL, HFILL } }, { &hf_uma_urr_udr, @@ -2234,7 +2248,7 @@ proto_register_uma(void) }, { &hf_uma_urr_establishment_cause, { "Establishment Cause","uma.urr.establishment_cause", - FT_UINT8,BASE_DEC, VALS(establishment_cause_vals), 0x0, + FT_UINT8,BASE_DEC|BASE_EXT_STRING, &establishment_cause_vals_ext, 0x0, NULL, HFILL } }, { &hf_uma_urr_channel, |