diff options
Diffstat (limited to 'epan/dissectors')
35 files changed, 1004 insertions, 423 deletions
diff --git a/epan/dissectors/asn1/nr-rrc/nr-rrc.cnf b/epan/dissectors/asn1/nr-rrc/nr-rrc.cnf index 5df5e1d2..c9181191 100644 --- a/epan/dissectors/asn1/nr-rrc/nr-rrc.cnf +++ b/epan/dissectors/asn1/nr-rrc/nr-rrc.cnf @@ -207,27 +207,27 @@ SchedulingRequestResourceConfig SDT-MAC-PHY-CG-Config-r17 SidelinkParametersNR-r16 SidelinkUEInformationNR-r16 -SIB1 -SIB2 -SIB3 -SIB4 -SIB5 -SIB6 -SIB7 -SIB8 -SIB9 -SIB10-r16 -SIB11-r16 -SIB12-r16 -SIB13-r16 -SIB14-r16 -SIB15-r17 -SIB16-r17 -SIB17-r17 -SIB18-r17 -SIB19-r17 -SIB20-r17 -SIB21-r17 +SIB1 @sib1 +SIB2 @sib2 +SIB3 @sib3 +SIB4 @sib4 +SIB5 @sib5 +SIB6 @sib6 +SIB7 @sib7 +SIB8 @sib8 +SIB9 @sib9 +SIB10-r16 @sib10 +SIB11-r16 @sib11 +SIB12-r16 @sib12 +SIB13-r16 @sib13 +SIB14-r16 @sib14 +SIB15-r17 @sib15 +SIB16-r17 @sib16 +SIB17-r17 @sib17 +SIB18-r17 @sib18 +SIB19-r17 @sib21 +SIB20-r17 @sib22 +SIB21-r17 @sib23 SL-ConfigDedicatedEUTRA-Info-r16 SL-ConfigDedicatedNR-r16 SL-MeasResultListRelay-r17 @@ -724,73 +724,73 @@ RAT-Type TYPE_PREFIX col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "MIB"); #.FN_HDR SystemInformation - col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "System Information ["); + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "System Information [ "); #.FN_FTR SystemInformation - col_append_str(actx->pinfo->cinfo, COL_INFO, " ]"); + col_append_str(actx->pinfo->cinfo, COL_INFO, "]"); #.FN_HDR SIB2 - col_append_str(actx->pinfo->cinfo, COL_INFO, " SIB2"); + col_append_str(actx->pinfo->cinfo, COL_INFO, "SIB2 "); #.FN_HDR SIB3 - col_append_str(actx->pinfo->cinfo, COL_INFO, " SIB3"); + col_append_str(actx->pinfo->cinfo, COL_INFO, "SIB3 "); #.FN_HDR SIB4 - col_append_str(actx->pinfo->cinfo, COL_INFO, " SIB4"); + col_append_str(actx->pinfo->cinfo, COL_INFO, "SIB4 "); #.FN_HDR SIB5 - col_append_str(actx->pinfo->cinfo, COL_INFO, " SIB5"); + col_append_str(actx->pinfo->cinfo, COL_INFO, "SIB5 "); #.FN_HDR SIB6 - col_append_str(actx->pinfo->cinfo, COL_INFO, " SIB6"); + col_append_str(actx->pinfo->cinfo, COL_INFO, "SIB6 "); #.FN_HDR SIB7 - col_append_str(actx->pinfo->cinfo, COL_INFO, " SIB7"); + col_append_str(actx->pinfo->cinfo, COL_INFO, "SIB7 "); #.FN_HDR SIB8 - col_append_str(actx->pinfo->cinfo, COL_INFO, " SIB8"); + col_append_str(actx->pinfo->cinfo, COL_INFO, "SIB8 "); #.FN_HDR SIB9 - col_append_str(actx->pinfo->cinfo, COL_INFO, " SIB9"); + col_append_str(actx->pinfo->cinfo, COL_INFO, "SIB9 "); #.FN_HDR SIB10-r16 - col_append_str(actx->pinfo->cinfo, COL_INFO, " SIB10"); + col_append_str(actx->pinfo->cinfo, COL_INFO, "SIB10 "); #.FN_HDR SIB11-r16 - col_append_str(actx->pinfo->cinfo, COL_INFO, " SIB11"); + col_append_str(actx->pinfo->cinfo, COL_INFO, "SIB11"); #.FN_HDR SIB12-r16 - col_append_str(actx->pinfo->cinfo, COL_INFO, " SIB12"); + col_append_str(actx->pinfo->cinfo, COL_INFO, "SIB12 "); #.FN_HDR SIB13-r16 - col_append_str(actx->pinfo->cinfo, COL_INFO, " SIB13"); + col_append_str(actx->pinfo->cinfo, COL_INFO, "SIB13 "); #.FN_HDR SIB14-r16 - col_append_str(actx->pinfo->cinfo, COL_INFO, " SIB14"); + col_append_str(actx->pinfo->cinfo, COL_INFO, "SIB14 "); #.FN_HDR SIB15-r17 - col_append_str(actx->pinfo->cinfo, COL_INFO, " SIB15"); + col_append_str(actx->pinfo->cinfo, COL_INFO, "SIB15 "); #.FN_HDR SIB16-r17 - col_append_str(actx->pinfo->cinfo, COL_INFO, " SIB16"); + col_append_str(actx->pinfo->cinfo, COL_INFO, "SIB16 "); #.FN_HDR SIB17-r17 - col_append_str(actx->pinfo->cinfo, COL_INFO, " SIB17"); + col_append_str(actx->pinfo->cinfo, COL_INFO, "SIB17 "); #.FN_HDR SIB18-r17 - col_append_str(actx->pinfo->cinfo, COL_INFO, " SIB18"); + col_append_str(actx->pinfo->cinfo, COL_INFO, "SIB18 "); #.FN_HDR SIB19-r17 - col_append_str(actx->pinfo->cinfo, COL_INFO, " SIB19"); + col_append_str(actx->pinfo->cinfo, COL_INFO, "SIB19 "); #.FN_HDR SIB20-r17 - col_append_str(actx->pinfo->cinfo, COL_INFO, " SIB20"); + col_append_str(actx->pinfo->cinfo, COL_INFO, "SIB20 "); #.FN_HDR SIB21-r17 - col_append_str(actx->pinfo->cinfo, COL_INFO, " SIB21"); + col_append_str(actx->pinfo->cinfo, COL_INFO, "SIB21 "); #.FN_HDR SIB1 - col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "SIB1"); + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "SIB1 "); #.FN_HDR RRCReject col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RRC Reject"); diff --git a/epan/dissectors/asn1/nr-rrc/packet-nr-rrc-template.c b/epan/dissectors/asn1/nr-rrc/packet-nr-rrc-template.c index cbfb67cc..88f72f7a 100644 --- a/epan/dissectors/asn1/nr-rrc/packet-nr-rrc-template.c +++ b/epan/dissectors/asn1/nr-rrc/packet-nr-rrc-template.c @@ -1061,7 +1061,7 @@ proto_register_nr_rrc(void) { register_dissector("nr-rrc.measgapconfig_msg", dissect_nr_rrc_measgapconfig_msg, proto_nr_rrc); register_dissector("nr-rrc.handoverpreparationinformation_msg", dissect_nr_rrc_handoverpreparationinformation_msg, proto_nr_rrc); register_dissector("nr-rrc.handovercommand_msg", dissect_nr_rrc_handovercommand_msg, proto_nr_rrc); - + /*#include "packet-nr-rrc-dis-reg.c" */ #include "packet-nr-rrc-dis-reg.c" nr_rrc_etws_cmas_dcs_hash = wmem_map_new_autoreset(wmem_epan_scope(), wmem_file_scope(), diff --git a/epan/dissectors/packet-5co-legacy.c b/epan/dissectors/packet-5co-legacy.c index 273d2a69..5558cf03 100644 --- a/epan/dissectors/packet-5co-legacy.c +++ b/epan/dissectors/packet-5co-legacy.c @@ -857,7 +857,7 @@ dispType( gchar *result, guint32 type) { int nValueH = (type>>16) & 0xFFFF; int nValueL = (type & 0xFFFF); - snprintf( result, 18, "%d.%d (%.4X.%.4X)", nValueH, nValueL, nValueH, nValueL); + snprintf( result, ITEM_LABEL_LENGTH, "%d.%d (%.4X.%.4X)", nValueH, nValueL, nValueH, nValueL); } static void @@ -867,7 +867,7 @@ dispVersion( gchar *result, guint32 version) { int nValueH = (version>>16) & 0xFFFF; int nValueL = (version & 0xFFFF); - snprintf( result, 11, "FW: %d.%d", nValueH, nValueL); + snprintf( result, ITEM_LABEL_LENGTH, "FW: %d.%d", nValueH, nValueL); } else { @@ -875,7 +875,7 @@ dispVersion( gchar *result, guint32 version) int nHWLow = (version>>16) & 0xFF; int nFWHigh = (version>>8) & 0xFF; int nFWLow = (version>>8) & 0xFF; - snprintf( result, 25, "HW: %d.%d / FW: %d.%d", nHWHigh, nHWLow, nFWHigh, nFWLow); + snprintf( result, ITEM_LABEL_LENGTH, "HW: %d.%d / FW: %d.%d", nHWHigh, nHWLow, nFWHigh, nFWLow); } } @@ -883,7 +883,7 @@ static void dispMAC( gchar *result, guint64 mac) { guint8 *pData = (guint8*)(&mac); - snprintf( result, 18, "%.2X-%.2X-%.2X-%.2X-%.2X-%.2X", pData[5], pData[4], pData[3], pData[2], + snprintf( result, ITEM_LABEL_LENGTH, "%.2X-%.2X-%.2X-%.2X-%.2X-%.2X", pData[5], pData[4], pData[3], pData[2], pData[1], pData[0]); } @@ -891,22 +891,22 @@ static void dispIP( gchar *result, guint32 ip) { guint8 *pData = (guint8*)(&ip); - snprintf( result, 15, "%d.%d.%d.%d", pData[3], pData[2], pData[1], pData[0]); + snprintf( result, ITEM_LABEL_LENGTH, "%d.%d.%d.%d", pData[3], pData[2], pData[1], pData[0]); } static void dispMask( gchar *result, guint32 mask) { guint8 *pData = (guint8*)(&mask); - snprintf( result, 15, "%d.%d.%d.%d", pData[3], pData[2], pData[1], pData[0]); + snprintf( result, ITEM_LABEL_LENGTH, "%d.%d.%d.%d", pData[3], pData[2], pData[1], pData[0]); } static void dispTimeout( gchar *result, guint32 timeout) { if (timeout != 0) - snprintf( result, 12, "%d secondes", timeout); + snprintf( result, ITEM_LABEL_LENGTH, "%d seconds", timeout); else - snprintf( result, 8, "Disabled"); + snprintf( result, ITEM_LABEL_LENGTH, "Disabled"); } /* diff --git a/epan/dissectors/packet-5co-rap.c b/epan/dissectors/packet-5co-rap.c index 06aae10f..4aaabed6 100644 --- a/epan/dissectors/packet-5co-rap.c +++ b/epan/dissectors/packet-5co-rap.c @@ -891,7 +891,7 @@ disp_type( gchar *result, guint32 type) { guint nValueH = (type>>16) & 0xFFFF; guint nValueL = (type & 0xFFFF); - snprintf( result, 18, "%u.%u (%.4X.%.4X)", nValueH, nValueL, nValueH, nValueL); + snprintf( result, ITEM_LABEL_LENGTH, "%u.%u (%.4X.%.4X)", nValueH, nValueL, nValueH, nValueL); } static void @@ -901,7 +901,7 @@ disp_version( gchar *result, guint32 version) { guint nValueH = (version>>16) & 0xFFFF; guint nValueL = (version & 0xFFFF); - snprintf( result, 11, "FW: %u.%u", nValueH, nValueL); + snprintf( result, ITEM_LABEL_LENGTH, "FW: %u.%u", nValueH, nValueL); } else { @@ -909,7 +909,7 @@ disp_version( gchar *result, guint32 version) guint nHWLow = (version>>16) & 0xFF; guint nFWHigh = (version>>8) & 0xFF; guint nFWLow = version & 0xFF; - snprintf( result, 25, "HW: %u.%u / FW: %u.%u", nHWHigh, nHWLow, nFWHigh, nFWLow); + snprintf( result, ITEM_LABEL_LENGTH, "HW: %u.%u / FW: %u.%u", nHWHigh, nHWLow, nFWHigh, nFWLow); } } @@ -917,14 +917,14 @@ static void disp_voltage(gchar *result, guint32 voltage) { guint nValueH = (voltage>>16) & 0xFFFF; guint nValueL = (voltage & 0xFFFF); - snprintf( result, 11, "%u.%u V", nValueH, nValueL); + snprintf( result, ITEM_LABEL_LENGTH, "%u.%u V", nValueH, nValueL); } static void disp_mac( gchar *result, guint64 mac) { guint8 *pData = (guint8*)(&mac); - snprintf( result, 18, "%.2X-%.2X-%.2X-%.2X-%.2X-%.2X", pData[5], pData[4], pData[3], pData[2], + snprintf( result, ITEM_LABEL_LENGTH, "%.2X-%.2X-%.2X-%.2X-%.2X-%.2X", pData[5], pData[4], pData[3], pData[2], pData[1], pData[0]); } @@ -932,23 +932,23 @@ static void disp_ip( gchar *result, guint32 ip) { guint8 *pData = (guint8*)(&ip); - snprintf( result, 15, "%u.%u.%u.%u", pData[3], pData[2], pData[1], pData[0]); + snprintf( result, ITEM_LABEL_LENGTH, "%u.%u.%u.%u", pData[3], pData[2], pData[1], pData[0]); } static void disp_mask( gchar *result, guint32 mask) { guint8 *pData = (guint8*)(&mask); - snprintf( result, 15, "%u.%u.%u.%u", pData[3], pData[2], pData[1], pData[0]); + snprintf( result, ITEM_LABEL_LENGTH, "%u.%u.%u.%u", pData[3], pData[2], pData[1], pData[0]); } static void disp_timeout( gchar *result, guint32 timeout) { if (timeout != 0) - snprintf( result, 12, "%u%s", + snprintf( result, ITEM_LABEL_LENGTH, "%u%s", timeout, unit_name_string_get_value(timeout, &units_second_seconds)); else - snprintf( result, 8, "Disabled"); + snprintf( result, ITEM_LABEL_LENGTH, "Disabled"); } /* diff --git a/epan/dissectors/packet-btmesh.c b/epan/dissectors/packet-btmesh.c index 8aa913d2..a0d930fc 100644 --- a/epan/dissectors/packet-btmesh.c +++ b/epan/dissectors/packet-btmesh.c @@ -4779,6 +4779,7 @@ dissect_btmesh_model_layer(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_tree *manufacturer_property_ids_tree; proto_tree *generic_client_property_ids_tree; proto_tree *sensor_setting_property_ids_tree; + proto_tree *root_tree = proto_tree_get_parent_tree(tree); guint32 netkeyindexes, appkeyindexes; guint32 nums, numv, element; @@ -4794,17 +4795,17 @@ dissect_btmesh_model_layer(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, if (opcode & 0x40) { /* Vendor opcode */ proto_tree_add_item(sub_tree, hf_btmesh_model_layer_vendor_opcode, tvb, offset, 1, ENC_NA); - vendor = tvb_get_guint16(tvb, offset + 1, ENC_BIG_ENDIAN); + vendor = tvb_get_guint16(tvb, offset + 1, ENC_LITTLE_ENDIAN); proto_tree_add_item(sub_tree, hf_btmesh_model_layer_vendor, tvb, offset + 1, 2, ENC_LITTLE_ENDIAN); payload_tvb = tvb_new_subset_remaining(tvb, offset); - dissector_try_uint_new(btmesh_model_vendor_dissector_table, vendor, payload_tvb, pinfo, tree, TRUE, GUINT_TO_POINTER(vendor)); col_set_str(pinfo->cinfo, COL_INFO, "Access Message - Vendor Opcode"); + dissector_try_uint_new(btmesh_model_vendor_dissector_table, vendor, payload_tvb, pinfo, root_tree, TRUE, GUINT_TO_POINTER(vendor)); offset+=3; } else { - /* Two octet opcode */ - proto_tree_add_item_ret_uint(sub_tree, hf_btmesh_model_layer_opcode, tvb, offset, 2, ENC_NA, &opcode); - col_set_str(pinfo->cinfo, COL_INFO, val_to_str_const(opcode, btmesh_models_opcode_vals, "Access Message Unknown")); - offset+=2; + /* Two octet opcode */ + proto_tree_add_item_ret_uint(sub_tree, hf_btmesh_model_layer_opcode, tvb, offset, 2, ENC_NA, &opcode); + col_set_str(pinfo->cinfo, COL_INFO, val_to_str_const(opcode, btmesh_models_opcode_vals, "Access Message Unknown")); + offset+=2; } } else { /* One octet opcode */ diff --git a/epan/dissectors/packet-cql.c b/epan/dissectors/packet-cql.c index 32b03ec2..668ba722 100644 --- a/epan/dissectors/packet-cql.c +++ b/epan/dissectors/packet-cql.c @@ -147,6 +147,7 @@ static int ett_cql_protocol = -1; static int ett_cql_version = -1; static int ett_cql_message = -1; static int ett_cql_result_columns = -1; +static int ett_cql_results_no_metadata = -1; static int ett_cql_result_map = -1; static int ett_cql_result_set = -1; static int ett_cql_result_metadata = -1; @@ -1430,6 +1431,16 @@ dissect_cql_tcp_pdu(tvbuff_t* raw_tvb, packet_info* pinfo, proto_tree* tree, voi } offset += 4; + if (result_rows_flags & CQL_RESULT_ROWS_FLAG_HAS_MORE_PAGES) { + /* show paging state */ + proto_tree_add_item_ret_int(metadata_subtree, hf_cql_bytes_length, tvb, offset, 4, ENC_BIG_ENDIAN, &bytes_length); + offset += 4; + if (bytes_length > 0) { + proto_tree_add_item(metadata_subtree, hf_cql_paging_state, tvb, offset, bytes_length, ENC_NA); + offset += bytes_length; + } + } + if ((result_rows_flags & (CQL_RESULT_ROWS_FLAG_GLOBAL_TABLES_SPEC | CQL_RESULT_ROWS_FLAG_NO_METADATA)) == CQL_RESULT_ROWS_FLAG_GLOBAL_TABLES_SPEC) { proto_tree_add_item_ret_uint(metadata_subtree, hf_cql_string_length, tvb, offset, 2, ENC_BIG_ENDIAN, &string_length); offset += 2; @@ -1442,16 +1453,6 @@ dissect_cql_tcp_pdu(tvbuff_t* raw_tvb, packet_info* pinfo, proto_tree* tree, voi offset += string_length; } - if (result_rows_flags & CQL_RESULT_ROWS_FLAG_HAS_MORE_PAGES) { - /* show paging state */ - proto_tree_add_item_ret_int(metadata_subtree, hf_cql_bytes_length, tvb, offset, 4, ENC_BIG_ENDIAN, &bytes_length); - offset += 4; - if (bytes_length > 0) { - proto_tree_add_item(metadata_subtree, hf_cql_paging_state, tvb, offset, bytes_length, ENC_NA); - offset += bytes_length; - } - } - if (result_rows_flags & CQL_RESULT_ROWS_FLAG_NO_METADATA) { /* There will be no col_spec elements. */ } else { @@ -1504,12 +1505,19 @@ dissect_cql_tcp_pdu(tvbuff_t* raw_tvb, packet_info* pinfo, proto_tree* tree, voi offset = parse_row(columns_subtree, pinfo, tvb, offset_row_metadata, offset, result_rows_columns_count); } else { for (k = 0; k < result_rows_columns_count; ++k) { - single_column_subtree = proto_tree_add_item_ret_int(columns_subtree, hf_cql_bytes_length, tvb, offset, 4, ENC_BIG_ENDIAN, &bytes_length); - proto_item_append_text(single_column_subtree, " for column # %" PRId64, k + 1); - offset += 4; + proto_tree_add_item_ret_int(columns_subtree, hf_cql_bytes_length, tvb, offset, 4, ENC_BIG_ENDIAN, &bytes_length); + single_column_subtree = proto_tree_add_subtree(columns_subtree, tvb, offset, bytes_length > 0 ? bytes_length : 0, ett_cql_results_no_metadata, &ti, "Column data"); if (bytes_length > 0) { + proto_item_append_text(single_column_subtree, " for column # %" PRId64, k + 1); proto_tree_add_item(single_column_subtree, hf_cql_bytes, tvb, offset, bytes_length, ENC_NA); offset += bytes_length; + } else if (bytes_length == -1) { + proto_item_append_text(single_column_subtree, " is NULL for column # %" PRId64, k + 1); + } else if (bytes_length == -2) { + proto_item_append_text(single_column_subtree, " is not set for column # %" PRId64, k + 1); + } else { + expert_add_info(pinfo, ti, &ei_cql_unexpected_negative_value); + return tvb_reported_length(tvb); } } } @@ -2503,6 +2511,7 @@ proto_register_cql(void) &ett_cql_version, &ett_cql_message, &ett_cql_result_columns, + &ett_cql_results_no_metadata, &ett_cql_result_map, &ett_cql_result_set, &ett_cql_result_metadata, diff --git a/epan/dissectors/packet-docsis-macmgmt.c b/epan/dissectors/packet-docsis-macmgmt.c index e3bf924a..de21249a 100644 --- a/epan/dissectors/packet-docsis-macmgmt.c +++ b/epan/dissectors/packet-docsis-macmgmt.c @@ -3844,6 +3844,7 @@ dissect_attrs (tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree) tvbuff_t *attr_tvb; total_len = tvb_reported_length_remaining (tvb, 0); + increment_dissection_depth(pinfo); while (pos < total_len) { type = tvb_get_guint8 (tvb, pos); @@ -3884,7 +3885,6 @@ dissect_attrs (tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree) ti = proto_tree_add_item (attr_tree, hf_docsis_bpkmattr_cm_id, tvb, pos, length, ENC_NA); attr_subtree = proto_item_add_subtree(ti, ett_docsis_bpkmattr_cmid); attr_tvb = tvb_new_subset_length (tvb, pos, length); - // We recurse here, but we're limited by our packet length and the depth check in proto_tree_add_node. dissect_attrs (attr_tvb, pinfo, attr_subtree); break; case BPKM_DISPLAY_STR: @@ -4019,6 +4019,7 @@ dissect_attrs (tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree) pos += length; /* switch */ } /* while */ + decrement_dissection_depth(pinfo); } static int diff --git a/epan/dissectors/packet-e212.c b/epan/dissectors/packet-e212.c index 4030a3c4..a51328c4 100644 --- a/epan/dissectors/packet-e212.c +++ b/epan/dissectors/packet-e212.c @@ -26,7 +26,7 @@ void proto_register_e212(void); /* * Annexes to ITU Operational Bulletin * No. 1117 - 1.II.2017 (List of Mobile Country Codes) - * No. 1162 - 15.XII.2018 (Mobile Network Codes) + * No. 1280 - 15.XI.2023 (Mobile Network Codes) * * With Amendment No. 1 (T-SP-OB 1164 - 15.I.2019) up to and * including Amendment No. 34 (T-SP-OB 1198 - 15.VI.2020) @@ -874,54 +874,71 @@ static const value_string mcc_mnc_2digits_codes[] = { { 20214, "CYTA (HELLAS)" }, { 20215, "BWS" }, { 20216, "INTER TELECOM" }, + { 20400, "Intovoice B.V." }, { 20401, "RadioAccess Network Services B.V." }, - { 20402, "Tele2 Nederland B.V." }, + { 20402, "T-Mobile Netherlands B.V." }, { 20403, "Voiceworks B.V." }, { 20404, "Vodafone Libertel B.V." }, { 20405, "Elephant Talk Communications Premium Rate Services" }, - { 20406, "Mundio Mobile (Netherlands) Ltd" }, - { 20407, "Teleena Holding B.V." }, - { 20408, "KPN Mobile The Netherlands B.V." }, + { 20406, "Private Mobility Nederland B.V." }, + { 20407, "Tata Communications MOVE B.V." }, + { 20408, "KPN B.V." }, { 20409, "Lycamobile Netherlands Limited" }, { 20410, "KPN B.V." }, + { 20411, "Greenet Netwerk B.V." }, { 20412, "KPN B.V." }, { 20413, "Unica Installatietechniek B.V." }, + { 20414, "Venus & Mercury Telecom" }, { 20415, "Ziggo B.V." }, { 20416, "T-Mobile Netherlands B.V." }, - { 20417, "Intercity Mobile Communications B.V." }, - { 20418, "UPC Nederland B.V." }, + { 20417, "Lebara Ltd" }, + { 20418, "Ziggo Services B.V." }, { 20419, "Mixe Communication Solutions B.V." }, { 20420, "T-Mobile Netherlands B.V." }, { 20421, "ProRail B.V." }, { 20422, "Ministerie van Defensie" }, - { 20423, "ASpider Solutions Nederland B.V." }, - { 20424, "Private Mobility Nederland B.V." }, - { 20425, "CAPX B.V." }, + { 20423, "KORE Wireless Nederland B.V." }, + { 20424, "PM Factory B.V." }, + { 20425, "CapX Nederland" }, { 20426, "SpeakUp B.V." }, + { 20427, "L-Mobi Mobile B.V." }, { 20428, "Lancelot B.V." }, - { 20429, "Private Mobile Ltd" }, + { 20429, "Tismi B.V." }, + { 20430, "ASpider Solutions Nederland B.V." }, + { 20432, "Cubic Telecom Limited" }, + { 20433, "Truphone B.V." }, { 20460, "Nextgen Mobile Ltd" }, - { 20461, "BodyTrace Netherlands B.V." }, + { 20461, "Alcadis B.V." }, + { 20462, "RGTN Wholesale Netherlands B.V." }, + { 20463, "Messagebird BV" }, { 20464, "Zetacom B.V." }, { 20465, "AGMS Nederland B.V." }, { 20466, "Utility Connect B.V." }, { 20467, "RadioAccess B.V." }, { 20468, "Roamware (Netherlands) B.V." }, - { 20469, "KPN Mobile The Netherlands B.V." }, + { 20469, "KPN B.V." }, + { 20491, "Enexis Netbeheer B.V." }, { 20601, "Proximus" }, { 20602, "N.M.B.S" }, + { 20603, "Citymesh" }, + { 20604, "MWINGZ (Proximus/Orange Belgium)" }, { 20605, "Telenet" }, { 20606, "Lycamobile sprl" }, { 20607, "Mundio Mobile Belgium nv" }, { 20608, "Nethys" }, { 20610, "Orange Belgium" }, + { 20611, "L-Mobi Mobile" }, { 20620, "Telenet Group" }, + { 20622, "FEBO Telecom" }, { 20625, "Voyacom" }, { 20628, "BICS SA" }, + { 20629, "TISMI" }, { 20630, "Unleashed" }, { 20633, "Ericsson *test use only*" }, + { 20634, "ONOFFAPP" }, { 20650, "IP Nexia" }, - { 20801, "Orange" }, + { 20699, "e-BO Enterprises" }, + { 20801, "Orange" }, /* Annex E: MSIN range 0100000000-0199999999 are Orange/Monoco Télécom */ { 20802, "Orange" }, { 20803, "MobiquiThings" }, { 20804, "Sisteer" }, @@ -932,35 +949,42 @@ static const value_string mcc_mnc_2digits_codes[] = { { 20809, "Société Française du Radiotéléphone" }, { 20810, "Société Française du Radiotéléphone" }, { 20811, "Société Française du Radiotéléphone" }, + { 20812, "Truphone France" }, { 20813, "Société Française du Radiotéléphone" }, { 20814, "RFF" }, { 20815, "Free Mobile" }, { 20816, "Free Mobile" }, { 20817, "Legos" }, - { 20819, "Altitude Infrastructure" }, + { 20819, "Haute-Garonne numérique" }, { 20820, "Bouygues Telecom" }, { 20821, "Bouygues Telecom" }, { 20822, "Transatel" }, { 20823, "Syndicat mixte ouvert Charente Numérique" }, { 20824, "MobiquiThings" }, { 20825, "Lycamobile" }, - { 20826, "Euro-Information telecom" }, + { 20826, "Bouygues Telecom Business - Distribution" }, { 20827, "Coriolis Telecom" }, - { 20828, "Airbus defense ans space SAS" }, + { 20828, "Airmob Infra Full" }, { 20829, "Cubic télécom France" }, { 20830, "Syma Mobile" }, { 20831, "Vectone Mobile" }, { 20832, "Orange" }, - { 20833, "Département des Pyrénées Atlantiques" }, + { 20833, "Syndicat mixte La Fibre64" }, + { 20834, "Cellhire (France)" }, + { 20835, "Free mobile" }, + { 20836, "Free mobile" }, + { 20837, "IP Directions" }, + { 20838, "Lebara France Limited" }, + { 20839, "Netwo" }, { 20886, "SEM@FOR77" }, - { 20887, "Régie Autonome des Transports Parisiens" }, + { 20887, "AIRBUS DEFENCE AND SPACE SAS" }, { 20888, "Bouygues Telecom" }, - { 20889, "Fondation b-com" }, + { 20889, "Hub One" }, { 20891, "Orange" }, { 20893, "Thales communications & Security" }, { 20894, "Halys" }, { 20895, "Orange" }, - { 20896, "Axione" }, + { 20896, "Région Bourgogne-Franche-Comté" }, { 20897, "Thales communications & Security" }, { 20898, "Société Air France" }, { 21210, "Monaco Telecom" }, @@ -976,8 +1000,9 @@ static const value_string mcc_mnc_2digits_codes[] = { { 21409, "France Telecom España, SA" }, { 21410, "ZINNIA TELECOMUNICACIONES, S.L.U." }, { 21411, "TELECOM CASTILLA-LA MANCHA, S.A." }, - { 21412, "SAC CONVERGENT AGGREGATION SERVICES, S.L.U." }, + { 21412, "VENUS MOVIL, S.L. UNIPERSONAL" }, { 21413, "SYMA MOBILE ESPAÑA, S.L." }, + { 21414, "AVATEL MÓVIL, S.L.U." }, { 21416, "R CABLE Y TELECOMUNICACIONES GALICIA, S.A." }, { 21417, "R Cable y Telecomunicaciones Galicia, SA" }, { 21419, "E-Plus Móviles, SL" }, @@ -985,7 +1010,7 @@ static const value_string mcc_mnc_2digits_codes[] = { { 21422, "Best Spain Telecom, SL" }, { 21423, "Xfera Móviles, S.A.U." }, { 21424, "VODAFONE ESPAÑA, S.A.U." }, - { 21425, "Lycamobile, SL" }, + { 21425, "XFERA MÓVILES, S.A. UNIPERSONAL" }, { 21426, "Lleida Networks Serveis Telemátics, SL" }, { 21427, "SCN Truphone SL" }, { 21428, "Consorcio de Telecomunicaciones Avanzadas, S.A." }, @@ -996,14 +1021,17 @@ static const value_string mcc_mnc_2digits_codes[] = { { 21434, "AIRE NETWORKS DEL MEDITERRÁNEO, S.L. UNIPERSONAL" }, { 21435, "INGENIUM OUTSOURCING SERVICES, S.L." }, { 21436, "ALAI OPERADOR DE TELECOMUNICACIONES, S.L." }, + { 21437, "VODAFONE ESPAÑA, S.A.U." }, { 21438, "Telefónica Móviles España, SAU" }, { 21451, "ENTIDAD PÚBLICA EMPRESARIAL ADMINISTRADOR DE INFRAESTRUCTURAS FERROVIARIAS" }, { 21601, "Telenor Hungary Ltd" }, { 21602, "MVM NET Ltd." }, { 21603, "DIGI Telecommunication Ltd." }, + { 21604, "Pro-M PrCo. Ltd." }, + { 21620, "Yettel Hungary Ltd." }, { 21630, "Magyar Telecom Plc" }, { 21670, "Vodafone" }, - { 21671, "UPC Hungary Ltd" }, + { 21671, "Vodafone Hungary Ltd" }, { 21699, "MÁV Co." }, { 21803, "Eronet Mobile Communications Ltd." }, { 21805, "MOBI'S (Mobilina Srpske)" }, @@ -1041,7 +1069,7 @@ static const value_string mcc_mnc_2digits_codes[] = { { 22803, "Salt Mobile SA" }, { 22805, "Comfone AG" }, { 22806, "SBB AG" }, - { 22808, "TelCommunication Services AG" }, + { 22808, "Sunrise Communications AG" }, { 22809, "Comfone AG" }, { 22811, "Swisscom Broadcast AG" }, { 22812, "Sunrise Communications AG" }, @@ -1051,18 +1079,28 @@ static const value_string mcc_mnc_2digits_codes[] = { { 22855, "WeMobile SA" }, { 22857, "Mitto AG" }, { 22858, "Beeone Communications SA" }, + { 22858, "Vectone Mobile Limited, London" }, { 22860, "Sunrise Communications AG" }, { 22862, "Telecom26 AG" }, { 22863, "Fink Telecom Services" }, { 22864, "NTH AG" }, + { 22866, "Inovia Services SA" }, + { 22867, "Datatrade Managed AG" }, + { 22868, "Intellico AG" }, + { 22869, "MTEL Schweiz GmbH" }, + { 22870, "Tismi BV" }, + { 22871, "Spusu AG" }, { 23001, "T-Mobile Czech Republic a.s." }, - { 23002, "Telefónica O2 Czech Republic a.s." }, + { 23002, "O2 Czech Republic a.s." }, { 23003, "Vodafone Czech Republic a.s." }, - { 23004, "Air Telecom a.s." }, + { 23004, "Nordic Telecom Regional s.r.o." }, { 23005, "PODA a.s." }, { 23006, "Nordic Telecom 5G a.s." }, + { 23007, "T-Mobile Czech Republic a.s." }, { 23008, "Compatel s.r.o" }, - { 23098, "Sprava Zeleznicni Dopravni Cesty" }, + { 23009, "Uniphone, s.r.o" }, + { 23011, "incrate s.r.o" }, + { 23098, "Sprava zeleznic, statni organizace" }, { 23101, "Orange, GSM" }, { 23102, "Eurotel, GSM & NMT" }, { 23104, "Eurotel, UMTS" }, @@ -1088,7 +1126,7 @@ static const value_string mcc_mnc_2digits_codes[] = { { 23220, "Mtel Austrija GmbH" }, { 23291, "ÖBB - Infrastruktur AG" }, { 23400, "British Telecom" }, - { 23401, "Mundio Mobile Limited" }, + { 23401, "Vectone Mobile Limited" }, { 23402, "Telefonica UK Limited" }, { 23403, "Jersey Airtel Limited" }, { 23404, "FMS Solutions Limited" }, @@ -1101,51 +1139,62 @@ static const value_string mcc_mnc_2digits_codes[] = { { 23411, "Telefonica UK Limited" }, { 23412, "Network Rail Infrastructure Limited" }, { 23413, "Network Rail Infrastructure Limited" }, - { 23414, "HAY SYSTEMS LIMITED" }, - { 23415, "Vodafone Uk Ltd" }, + { 23414, "LINK MOBILITY UK LTD" }, + { 23415, "Vodafone Limited" }, { 23416, "TalkTalk Communications Limited" }, { 23417, "FleXtel Limited" }, { 23418, "Cloud9 Communications Limited" }, - { 23419, "TeleWare PLC" }, + { 23419, "TeleWare Group PLC" }, { 23420, "Hutchison 3G UK Limited" }, { 23422, "Telesign Mobile Limited" }, { 23423, "Icron Network Limited" }, { 23424, "Stour Marine Limited" }, { 23425, "Truphone Limited" }, { 23426, "Lycamobile UK Limited" }, - { 23427, "Teleena UK Limited" }, + { 23427, "Tata Communications Move UK Ltd" }, { 23428, "Marathon Telecom Limited" }, - { 23429, "(aq) Limited trading as aql" }, + { 23429, "(AQ) LIMITED" }, { 23430, "EE Limited ( TM)" }, { 23431, "EE Limited ( TM)" }, { 23432, "EE Limited ( TM)" }, - { 23433, "Orange" }, - { 23434, "Orange" }, + { 23433, "EE Limited (Orange)" }, + { 23434, "EE Limited (Orange)" }, { 23436, "Sure (Isle of Man) Limited" }, { 23437, "Synectiv Ltd" }, { 23438, "Virgin Mobile Telecoms Limited" }, { 23439, "Gamma Telecom Holdings Ltd" }, - { 23450, "Jersey Telecom" }, + { 23440, "Mass Response Service GmbH" }, + { 23450, "JT (Jersey) Limited" }, { 23451, "UK Broadband Limited" }, { 23452, "Shyam Telecom UK Ltd" }, - { 23453, "Limitless Mobile Ltd" }, + { 23453, "Tango Networks UK Ltd" }, { 23454, "The Carphone Warehouse Limited" }, { 23455, "Sure (Guernsey) Limited" }, - { 23456, "CESG" }, + { 23456, "The National Cyber Security Centre" }, { 23457, "Sky UK Limited" }, - { 23458, "Manx Telecom" }, + { 23458, "MANX TELECOM TRADING LIMITED" }, { 23459, "Limitless Mobile Ltd" }, { 23470, "AMSUK Limited" }, { 23471, "Home Office" }, + { 23472, "Hanhaa Limited" }, + { 23473, "BlueWave Communications" }, + { 23474, "Pareteum Europe B.V." }, { 23476, "British Telecom" }, + { 23477, "Vodafone Limited" }, { 23478, "Airwave Solutions Ltd" }, { 23486, "EE Limited ( TM)" }, - { 23500, "Mundio Mobile Limited" }, + { 23488, "Telet Research (N.I.) Limited" }, + { 23500, "Vectone Mobile Limited" }, { 23501, "EE Limited ( TM)" }, { 23502, "EE Limited ( TM)" }, { 23503, "UK Broadband Limited" }, + { 23504, "University Of Strathclyde" }, + { 23506, "University Of Strathclyde" }, + { 23507, "University Of Strathclyde" }, + { 23508, "Spitfire Network Services Limited" }, { 23577, "British Telecom" }, - { 23591, "Vodafone Uk Ltd" }, + { 23588, "Telet Research (N.I.) Limited" }, + { 23591, "Vodafone Limited" }, { 23592, "Vodafone Ltd (C&W)" }, { 23594, "Hutchison 3G UK Limited" }, { 23595, "Network Rail Infrastructure Limited" }, @@ -1174,6 +1223,7 @@ static const value_string mcc_mnc_2digits_codes[] = { { 23866, "TT-Netvaerket P/S" }, { 23873, "Onomondo ApS" }, { 23877, "Telenor" }, + { 23888, "Cobira ApS" }, { 23896, "Telia Danmark" }, { 24001, "Telia Sverige AB" }, { 24002, "Hi3G Access AB" }, @@ -1187,33 +1237,34 @@ static const value_string mcc_mnc_2digits_codes[] = { { 24010, "Tele2 Sverige AB" }, { 24011, "ComHem AB" }, { 24012, "Lycamobile Sweden Limited" }, - { 24013, "A3 Företag AB" }, + { 24013, "Bredband2 Allmänna IT AB" }, { 24014, "Tele2 Business AB" }, { 24015, "Sierra Wireless Sweden AB" }, { 24016, "42 Telecom AB" }, { 24017, "Götalandsnätet AB" }, { 24018, "Generic Mobile Systems Sweden AB" }, { 24019, "Vecton Mobile (Sweden) Ltd" }, - { 24020, "Wireless Maingate Messaging Services AB" }, + { 24020, "Sierra Wireless Messaging AB" }, { 24021, "Trafikverket centralfunktion IT" }, { 24022, "EuTel AB" }, { 24023, "Infobip LTD (UK)" }, { 24024, "Net4Mobility HB" }, { 24025, "Monty UK Global Limited" }, - { 24026, "Twilio Sweden AB" }, + { 24026, "Twilio Ireland Ltd." }, { 24027, "GlobeTouch AB" }, { 24028, "LINK Mobile A/S" }, - { 24029, "Mercury International Carrier Services" }, + { 24029, "MI Carrier Services AB" }, { 24031, "RebTel Networks AB" }, { 24032, "Compatel Limited" }, { 24033, "Mobile Arts AB" }, { 24034, "Trafikverket centralfunktion IT" }, { 24035, "42 Telecom LTD" }, { 24036, "interactive digital media GmbH" }, - { 24037, "CLX Networks AB" }, + { 24037, "Sinch Sweden AB" }, { 24038, "Voxbone SA" }, { 24039, "Primlight AB" }, - { 24040, "North net connect AB" }, + { 24040, "Netmore Group AB" }, + { 24041, "Telenor Sverige AB" }, { 24042, "Telenor Connexion AB" }, { 24043, "MobiWeb Ltd." }, { 24044, "Telenabler AB" }, @@ -1221,7 +1272,8 @@ static const value_string mcc_mnc_2digits_codes[] = { { 24046, "SMS Provider Corp." }, { 24047, "Viatel Sweden AB" }, { 24048, "Tismi BV" }, - { 24060, "Telefonaktiebolaget LM Ericsson (MNC assigned for test purpose. Temporary license until 2019-12-31)" }, + { 24049, "Telia Sverige AB" }, + { 24060, "Västra Götalandsregionen (temporary assigned until 2026-12-31)" }, { 24061, "MessageBird B.V." }, { 24063, "Fink Telecom Services" }, { 24065, "shared use for closed networks" }, @@ -1303,6 +1355,18 @@ static const value_string mcc_mnc_2digits_codes[] = { { 24814, "Estonian Crafts OÜ" }, { 24816, "SmartTel Plus OÜ" }, { 24817, "Baltergo OÜ" }, + { 24818, "CLOUD COMMUNICATIONS OÜ" }, + { 24819, "OkTelecom OÜ" }, + { 24820, "DOTT Telecom OÜ" }, + { 24821, "Tismi B.V." }, + { 24822, "M2MConnect OÜ" }, + { 24824, "Novametro OÜ" }, + { 24826, "It-Decision Telecom OÜ" }, + { 24828, "Nord Connect OÜ" }, + { 24829, "SkyTel OÜ" }, + { 24830, "Mediafon Carrier Services OÜ" }, + { 24831, "YATECO OÜ" }, + { 24832, "Narayana OÜ" }, { 24871, "Siseministeerium (Ministry of Interior)" }, { 25001, "Mobile Telesystems" }, { 25002, "Megafon" }, @@ -1423,7 +1487,7 @@ static const value_string mcc_mnc_2digits_codes[] = { { 27002, "MTX Connect S.à r.l." }, { 27007, "Bouygues Telecom S.A." }, { 27010, "Join Experience S.A." }, - { 27077, "Tango S.A." }, + { 27077, "Proximus Luxembourgh S.A." }, { 27078, "Interactive Digital Media GmbH" }, { 27079, "Mitto A.G." }, { 27080, "Syniverse Technologies S.à r.l." }, @@ -1442,8 +1506,9 @@ static const value_string mcc_mnc_2digits_codes[] = { { 27217, "Three Ireland (Hutchison) Ltd" }, { 27218, "Cubic Telecom Limited" }, { 27221, "Net Feasa Limited" }, + { 27268, "Office of the Government Chief Information Officer" }, { 27401, "Iceland Telecom Ltd." }, - { 27402, "Og fjarskipti hf (Vodafone Iceland)" }, + { 27402, "Og fjarskipti hf (Vodafone Iceland)" }, /* Annex E: MSIN beginning with 9 are P/F Kall, reg. No 2868 (Vodafone FO) in Faroe Islands */ { 27403, "Og fjarskipti hf (Vodafone Iceland)" }, { 27404, "IMC Islande ehf" }, { 27407, "IceCell ehf" }, @@ -1451,11 +1516,11 @@ static const value_string mcc_mnc_2digits_codes[] = { { 27602, "Vodafone Albania" }, { 27603, "Eagle Mobile" }, { 27604, "Mobile 4 AL" }, - { 27801, "Vodafone Malta" }, + { 27801, "Epic Communications Ltd" }, { 27811, "YOM" }, - { 27821, "go mobile" }, + { 27821, "GO mobile" }, { 27830, "GO Mobile" }, - { 27877, "3G Telecommunications Ltd" }, + { 27877, "Melita Ltd" }, { 28001, "CYTA" }, { 28002, "CYTA" }, { 28010, "Scancom (Cyprus) Ltd." }, @@ -1475,6 +1540,8 @@ static const value_string mcc_mnc_2digits_codes[] = { { 28212, "\"Telecom1\" LTD" }, { 28213, "\"Asanet\" LTD" }, { 28214, "\"Datahouseglobal” LTD" }, + { 28215, "\"Servicebox\" LTD" }, + { 28222, "\"Myphone\" LTD" }, { 28401, "Mobiltel EAD" }, { 28405, "Globul" }, { 28601, "Turkcell" }, @@ -1484,11 +1551,15 @@ static const value_string mcc_mnc_2digits_codes[] = { { 28801, "Faroese Telecom - GSM" }, { 28802, "Kall GSM" }, { 28803, "Sp/f Tosa" }, + { 28810, "Faroese Telecom" }, { 29001, "Tele Greenland" }, { 29002, "inu:it a/s" }, + { 29003, "GTV" }, { 29201, "Prima San Marino / San Marino Telecom" }, { 29310, "Slovenske železnice – Infrastruktura d.o.o." }, + { 29311, "BeeIN d.o.o." }, { 29320, "Compatel Limited" }, + { 29321, "Novatel d.o.o." }, { 29340, "A1 Slovenija d.d." }, { 29341, "Telekom Slovenije d.d." }, { 29364, "T-2 d.o.o." }, @@ -1499,18 +1570,21 @@ static const value_string mcc_mnc_2digits_codes[] = { { 29404, "Company for telecommunications LYCAMOBILE LLC-Skopje" }, { 29410, "WTI Macedonia" }, { 29411, "MOBIK TELEKOMUNIKACII DOOEL- Skopje" }, + { 29412, "MTEL DOOEL Skopje" }, { 29501, "Swisscom Schweiz AG" }, { 29502, "Salt (Liechtenstein) AG" }, { 29505, "Telecom Liechtenstein AG" }, { 29506, "Cubic AG" }, { 29507, "First Mobile AG" }, { 29509, "Emnify GmbH" }, - { 29510, "SORACOM LI, LTD." }, + { 29510, "SORACOM CORPORATION, LTD." }, + { 29511, "DIMOCO Messaging AG" }, { 29701, "Telenor Montenegro" }, { 29702, "Crnogorski Telekom" }, { 29703, "Mtel Montenegro" }, { 30801, "SAS SPM Telecom" }, { 30802, "Globaltel" }, + { 30803, "SAS SPM Telecom" }, { 34001, "Orange Caraïbe" }, { 34002, "Outremer Telecom" }, { 34003, "United telecommunications services Caraïbe" }, @@ -1545,13 +1619,14 @@ static const value_string mcc_mnc_2digits_codes[] = { { 40004, "\"Azerfon\" LLC" }, { 40005, "Special State Protection Service of the Republic of Azerbaijan" }, { 40006, "\"Nakhtel\" LLC" }, - { 40101, "Beeline / K-Mobile" }, - { 40102, "Kcell / Activ" }, + { 40101, "Kar-Tel llc" }, + { 40102, "TSC Kazak Telecom" }, { 40107, "Altel / Dalacom" }, { 40108, "Kazakhtelecom CDMA2000" }, { 40177, "Tele2 / NEO" }, - { 40211, "Bhutan Telecom Ltd" }, - { 40217, "B-Mobile of Bhutan Telecom" }, + { 40211, "Bhutan Telecom Limited (Bmobile)" }, + { 40217, "Bhutan Telecom Limited (Bmobile)" }, + { 40277, "Tashi InfoComm Limited (Tashi Cell)" }, { 40400, "Dishnet Wireless Ltd, Madhya Pradesh" }, { 40401, "Aircell Digilink India Ltd., Haryana" }, { 40402, "Bharti Airtel Ltd., Punjab" }, @@ -1712,7 +1787,8 @@ static const value_string mcc_mnc_2digits_codes[] = { { 41603, "Umniah" }, { 41677, "MobileCom" }, { 41701, "Syriatel" }, - { 41702, "Spacetel Syria / MTN Syria" }, + { 41702, "MTN Syria" }, + { 41703, "WAFA Telecom" }, { 41709, "Syrian Telecom" }, { 41805, "Asia Cell" }, { 41820, "Zain Iraq (previously Atheer)" }, @@ -1747,6 +1823,7 @@ static const value_string mcc_mnc_2digits_codes[] = { { 42202, "Oman Mobile Telecommunications Company (Oman Mobile)" }, { 42203, "Oman Qatari Telecommunications Company (Nawras)" }, { 42204, "Oman Telecommunications Company (Omantel)" }, + { 42206, "Vodafone Oman" }, { 42402, "Etisalat" }, { 42501, "Partner Communications Co. Ltd." }, { 42502, "Cellcom Israel Ltd" }, @@ -1767,10 +1844,12 @@ static const value_string mcc_mnc_2digits_codes[] = { { 42519, "Azi Communications Ltd" }, { 42520, "Bezeq Ltd" }, { 42521, "B.I.P Communications Ltd." }, + { 42522, "Maskyoo Telephonia Ltd." }, { 42523, "Beezz Communication Solutions Ltd." }, { 42524, "012 Telecom Ltd." }, { 42525, "IMOD" }, { 42526, "LB Annatel Ltd." }, + { 42527, "BITIT Ltd." }, { 42528, "PHI Networks" }, { 42529, "CG Networks" }, { 42601, "Bahrain Telecommunications Company (BATELCO)" }, @@ -1778,19 +1857,39 @@ static const value_string mcc_mnc_2digits_codes[] = { { 42603, "Civil Aviation Authority" }, { 42604, "STC Bahrain" }, { 42605, "Royal Court" }, + { 42606, "STC Bahrain" }, + { 42607, "TAIF" }, { 42701, "QATARNET" }, { 42706, "Ooredoo Q.S.C./MOI LTE" }, { 42899, "Mobicom" }, { 42901, "Nepal Telecommunications" }, - { 43208, "Shatel Mobile" }, - { 43211, "Telecommunication Company of Iran (TCI)" }, - { 43214, "Telecommunication Kish Co. (KIFZO)" }, + { 43201, "KISH CELL PARS" }, + { 43202, "NEGIN ERTEBATAT AVA" }, + { 43203, "PARSIAN HAMRAH LOTUS" }, + { 43204, "TOSE E FANAVARI ERTEBATAT NOVIN HAMRAH" }, + { 43205, "HAMRAH HOSHMAND AYANDEH" }, + { 43206, "ERTEBATAT ARYANTEL" }, + { 43207, "HOOSHMAND AMIN MOBILE" }, + { 43208, "TOSE-E ERTEBATAT HAMRAH SHATEL" }, + { 43209, "HIWEB" }, + { 43211, "MCI (Mobile Communications of Iran)" }, + { 43212, "HIWEB" }, + { 43213, "HIWEB" }, + { 43214, "Kish Free Zone Organization" }, { 43219, "Telecommunication Company of Iran (TCI) - Isfahan Celcom GSM" }, { 43220, "Rightel" }, - { 43232, "Taliya" }, - { 43235, "MTN/IranCell" }, - { 43250, "Arya Resaneh Tadbir (Shatel)" }, - { 43270, "MTCE" }, + { 43232, "TCI (Telecommunication Company of Iran)" }, + { 43235, "IRANCELL" }, + { 43244, "ERTEBATAT MOBIN NET" }, + { 43245, "FARABORD DADEHAYE IRANIAN" }, + { 43246, "HIWEB" }, + { 43249, "GOSTARESH ERTEBATAT MABNA" }, + { 43250, "SHATEL" }, + { 43251, "PISHGAMAN TOSE-E ERTEBATAT" }, + { 43252, "ASIATECH" }, + { 43270, "TCI (Telecommunication Company of Iran)" }, + { 43271, "ERTEBATAT KOOHE NOOR" }, + { 43293, "ERTEBATAT FARZANEGAN PARS" }, { 43401, "Buztel" }, { 43402, "Uzmacom" }, { 43404, "Daewoo Unitel" }, @@ -1811,20 +1910,29 @@ static const value_string mcc_mnc_2digits_codes[] = { { 43801, "Barash Communication Technologies (BCTI)" }, { 43802, "TM-Cell" }, { 44000, "SoftBank Corp." }, - { 44001, "UQ Communications Inc." }, + { 44001, "KDDI Corporation" }, { 44002, "Hanshin Cable Engineering Co. Ltd." }, { 44003, "Internet Initiative Japan Inc." }, { 44004, "Japan Radio Co., Ltd." }, { 44005, "Wireless City Planning Inc." }, { 44006, "SAKURA Internet Inc." }, - { 44007, "LTE-X, Inc." }, - { 44008, "Panasonic Systems Solutions Japan Co., Ltd" }, - { 44009, "Marubeni Wireless Communications Inc." }, + { 44007, "closip, Inc." }, + { 44008, "Panasonic Connect Co., Ltd" }, + { 44009, "Marubeni Network Solutions Inc." }, { 44010, "NTT DOCOMO, INC." }, { 44011, "Rakuten Mobile Network, Inc." }, { 44012, "CABLE MEDIA WAIWAI CORPORATION" }, + { 44013, "NTT Communications Corporation" }, + { 44014, "GRAPE ONE LTD." }, + { 44015, "BB Backbone Corp." }, + { 44016, "Nokia Innovations Japan G.K." }, + { 44017, "OSAKA GAS BUSINESS CREATE CORPORATION" }, + { 44018, "Kintetsu Cable Network, Ltd" }, + { 44019, "NEC Networks & System Integration Corporation" }, { 44020, "SoftBank Corp." }, { 44021, "SoftBank Corp." }, + { 44022, "JTOWER Inc." }, + { 44023, "FUJITSU LIMITED" }, { 44050, "KDDI Corporation" }, { 44051, "KDDI Corporation" }, { 44052, "KDDI Corporation" }, @@ -1891,6 +1999,8 @@ static const value_string mcc_mnc_2digits_codes[] = { { 45430, "China Data Enterprises Ltd" }, { 45431, "China Telecom Global Limited" }, { 45432, "Hong Kong Broadband Network Ltd" }, + { 45435, "Webbing Hong Kong Limited" }, + { 45436, "Easco Telecommunications Limited" }, { 45500, "SmarTone – Comunicações Móveis, S.A." }, { 45501, "Companhia de Telecomunicações de Macau, S.A.R.L." }, { 45502, "China Telecom (Macau) Limitada" }, @@ -1907,9 +2017,11 @@ static const value_string mcc_mnc_2digits_codes[] = { { 45606, "Smart" }, { 45608, "Viettel" }, { 45618, "Mfone" }, - { 45701, "Lao Telecommunications" }, - { 45702, "ETL Mobile" }, - { 45708, "Millicom" }, + { 45701, "Lao Telecommunication Public Company" }, + { 45702, "ETL Company Limited" }, + { 45703, "Star Telecom Co., Ltd" }, + { 45707, "Best Telecom Co., Ltd" }, + { 45708, "TPLUS Digital Sole Company Limited" }, { 46000, "China Mobile" }, { 46001, "China Unicom" }, { 46002, "China Mobile" }, @@ -1978,14 +2090,21 @@ static const value_string mcc_mnc_2digits_codes[] = { { 50546, "ANGLOGOLD ASHANTI AUSTRALIA LTD" }, { 50547, "Woodside Energy Limited" }, { 50548, "Titan ICT Pty Ltd" }, + { 50549, "Field Solutions Group Pty Ltd" }, { 50550, "Pivotel Group Pty Limited" }, + { 50551, "Fortescue Metals Group Ltd" }, + { 50552, "Optitel Pty Ltd" }, + { 50553, "Shell Australia Pty Ltd" }, + { 50555, "New South Wales Government Telecommunications Authority" }, + { 50556, "Nokia Solutions and Networks Pty Ltd" }, + { 50557, "CiFi Pty Ltd" }, { 50561, "Commtel Network Solutions Pty Ltd" }, { 50562, "NBNCo Limited" }, { 50568, "NBNCo Limited" }, { 50571, "Telstra Corporation Ltd." }, { 50572, "Telstra Corporation Ltd." }, { 50588, "Pivotel Group Pty Limited" }, - { 50590, "Optus Ltd." }, + { 50590, "UE Access Pty Ltd" }, { 50599, "One.Tel GSM 1800 Pty. Ltd." }, { 51000, "PSN" }, { 51001, "Satelindo" }, @@ -2026,17 +2145,19 @@ static const value_string mcc_mnc_2digits_codes[] = { { 52803, "Unified National Networks Sdn Bhd (UNN)" }, { 52811, "DST Com" }, { 53000, "Reserved for AMPS MIN based IMSI's" }, - { 53001, "Vodafone New Zealand GSM Network" }, + { 53001, "One New Zealand Group Limited" }, { 53002, "Teleom New Zealand CDMA Network" }, { 53003, "Woosh Wireless - CDMA Network" }, - { 53004, "TelstraClear - GSM Network" }, + { 53004, "One New Zealand Group Limited" }, { 53005, "Telecom New Zealand - UMTS Ntework" }, { 53006, "FX Networks Ltd" }, - { 53007, "Bluereach Limited" }, + { 53007, "Dense Air New Zealand Ltd" }, + { 53011, "Interim Māori Spectrum Commission" }, { 53024, "NZ Communications - UMTS Network" }, { 53701, "Bmobile" }, { 53702, "Telikom PNG Ltd" }, { 53703, "Digicel Ltd" }, + { 53704, "Digitec Communication Limited" }, { 53901, "Tonga Communications Corporation" }, { 53943, "Digicel" }, { 53988, "Digicel (Tonga) Ltd" }, @@ -2169,6 +2290,7 @@ static const value_string mcc_mnc_2digits_codes[] = { { 63090, "Africell RDC" }, { 63102, "Unitel" }, { 63104, "Movicel" }, + { 63105, "AFRICELL" }, { 63201, "Guinétel S.A." }, { 63202, "Spacetel Guinea-Bissau S.A." }, { 63301, "Cable and wireless (Seychelles) Ltd" }, @@ -2195,10 +2317,13 @@ static const value_string mcc_mnc_2digits_codes[] = { { 63907, "Telkom Kenya Limited" }, { 63909, "Homeland Media Group Limited" }, { 63910, "Jamii Telecommunications Limited" }, + { 63911, "Jambo Telecoms Limited" }, + { 63912, "Infura Limited" }, { 64002, "MIC Tanzania Limited (Tigo)" }, { 64003, "Zanzibar Telecom Limited (Zantel)" }, { 64004, "Vodacom Tanzania Limited" }, { 64005, "Airtel Tanzania Limited" }, + { 64006, "WIA Company Limited" }, { 64007, "Tanzania Telecommunications Company Limited" }, { 64009, "Viettel Tanzania Limited (Halotel)" }, { 64011, "Smile Communications Tanzania Ltd" }, @@ -2206,6 +2331,7 @@ static const value_string mcc_mnc_2digits_codes[] = { { 64014, "MO Mobile Holding Limited" }, { 64101, "Airtel Uganda Limited" }, { 64104, "Tangerine Uganda Limited" }, + { 64108, "Talkio Mobile Limited" }, { 64110, "MTN Uganda Limited" }, { 64111, "Uganda Telecom Limited" }, { 64116, "SimbaNET Uganda Limited" }, @@ -2226,6 +2352,7 @@ static const value_string mcc_mnc_2digits_codes[] = { { 64501, "Celtel Zambia Ltd." }, { 64502, "Telecel Zambia Ltd." }, { 64503, "Zamtel" }, + { 64507, "Liquid Telecom Zambia Limited" }, { 64601, "Celtel Madagascar (Zain), GSM" }, { 64602, "Orange Madagascar, GSM" }, { 64604, "Telecom Malagasy Mobile, GSM" }, @@ -2260,6 +2387,7 @@ static const value_string mcc_mnc_2digits_codes[] = { { 65402, "TELMA / TELCO SA" }, { 65501, "Vodacom (Pty) Ltd." }, { 65502, "Telkom SA Ltd" }, + { 65503, "Telkom SA SOC Ltd" }, { 65505, "Telkom SA Ltd" }, { 65506, "Sentech (Pty) Ltd." }, { 65507, "Cell C (Pty) Ltd." }, @@ -2287,6 +2415,8 @@ static const value_string mcc_mnc_2digits_codes[] = { { 65565, "Vodacom Pty Ltd" }, { 65573, "Wireless Business Solutions (Pty) Ltd" }, { 65574, "Wireless Business Solutions (Pty) Ltd" }, + { 65576, "Comsol Networks (Pty) Ltd" }, + { 65577, "K2015315513 (Pty) Ltd t\\a One Telecom (Pty) Ltd" }, { 65801, "Sure South Atlantic Ltd. (Ascension)" }, { 65912, "Sudani/Sudatel" }, { 65991, "Zain-South Sudan" }, @@ -2295,6 +2425,7 @@ static const value_string mcc_mnc_2digits_codes[] = { { 65997, "Gemtel" }, { 70267, "Belize Telecommunications Ltd., GSM 1900" }, { 70269, "SMART/Speednet Communications Ltd." }, + { 70401, "Servicios de Comunicaciones Personales Inalámbricas, S.A. (SERCOM, S.A" }, { 70402, "Comunicaciones Celulares S.A." }, { 70403, "Telefónica Centroamérica Guatemala S.A." }, { 70601, "CTE Telecom Personal, S.A. de C.V." }, @@ -2308,9 +2439,10 @@ static const value_string mcc_mnc_2digits_codes[] = { { 71204, "Telefónica de Costa Rica TC, S.A." }, { 71220, "Virtualis" }, { 71401, "Cable & Wireless Panama S.A." }, - { 71402, "BSC de Panama S.A." }, + { 71402, "Grupo de Comunicaciones Digitales, S.A. (TIGO)" }, { 71403, "Claro Panamá, S.A." }, { 71404, "Digicel (Panamá), S.A." }, + { 71405, "Cable & Wireless Panamá, S.A." }, { 71610, "TIM Peru" }, { 72400, "NEXTEL" }, { 72401, "SISTEER DO BRASIL TELECOMUNICAÇÔES (MVNO)" }, @@ -2323,7 +2455,9 @@ static const value_string mcc_mnc_2digits_codes[] = { { 72411, "Telefônica Brasil S.A." }, { 72415, "SERCOMTEL" }, { 72416, "BRT CELULAR" }, + { 72417, "SURF TELECOM S.A." }, { 72418, "DATORA (MVNO)" }, + { 72421, "LIGUE" }, { 72423, "Telefônica Brasil S.A." }, { 72424, "AMAZONIA CELULAR" }, { 72430, "TNL PCS Oi" }, @@ -2367,14 +2501,17 @@ static const value_string mcc_mnc_2digits_codes[] = { { 73403, "GALAXY ENTERTAINMENT DE VENEZUELA C.A." }, { 73404, "Telcel, C.A." }, { 73406, "Telecomunicaciones Movilnet, C.A." }, + { 73408, "PATRIACELL C.A." }, { 73601, "Nuevatel S.A." }, { 73602, "ENTEL S.A." }, { 73603, "Telecel S.A." }, + { 73800, "E-Networks Inc." }, { 73801, "U-Mobile (Cellular) Inc." }, { 73805, "eGovernment Unit, Ministry of the Presidency" }, { 74000, "Otecel S.A. - Bellsouth" }, { 74001, "Porta GSM" }, { 74002, "Telecsa S.A." }, + { 74204, "Free Caraïbe" }, { 74401, "Hóla Paraguay S.A." }, { 74402, "Hutchison Telecom S.A." }, { 74403, "Compañia Privada de Comunicaciones S.A." }, @@ -2384,7 +2521,11 @@ static const value_string mcc_mnc_2digits_codes[] = { { 74801, "Administración Nacional de Telecomunicaciones (ANTEL)" }, { 74807, "Telefónica Móviles del Uruguay S.A. (Movistar)" }, { 74810, "AM Wireless Uruguay S.A. (Claro)" }, + { 74815, "ENALUR S.A." }, + { 90101, "Webbing" }, + { 90102, "GlobalmatiX AG" }, { 90103, "Iridium Communications Inc" }, + { 90104, "BBIX Singapore Pte. Ltd." }, { 90105, "Thuraya RMSS Network" }, { 90106, "Thuraya Satellite Telecommunications Company" }, { 90111, "Inmarsat Ltd." }, @@ -2395,7 +2536,7 @@ static const value_string mcc_mnc_2digits_codes[] = { { 90116, "Cisco Systems, Inc." }, { 90117, "Jersey Telecom" }, { 90118, "Cingular Wireless" }, - { 90119, "Vodafone Malta (Monaco Telecom)" }, + { 90119, "Epic Communications Limited (Monaco Telecom)" }, { 90120, "Intermatica" }, { 90121, "Wins Limited (Formerly Seanet Maritime Communications AB)" }, { 90122, "MediaLincc Ltd" }, @@ -2422,11 +2563,11 @@ static const value_string mcc_mnc_2digits_codes[] = { { 90146, "Telecom26 AG" }, { 90147, "Ooredoo" }, { 90148, "Com4 Sweden AB" }, - { 90149, "Zain Kuwait" }, + { 90149, "Mobile Telecommunications Company K.S.C.P. (Formerly Zain Kuwait)" }, { 90150, "Sawatch Limited/EchoStar Mobile Limited" }, { 90151, "VisionNG" }, { 90152, "Manx Telecom Trading Ltd." }, - { 90153, "Deutsche Telekom AG" }, + { 90153, "Inmarsat Ltd. (replacing Deutsche Telekom AG)" }, { 90154, "Teleena Holding B.V." }, { 90155, "Beezz Communication Solutions Ltd." }, { 90156, "European Telecommunications Standards Institute (ETSI)" }, @@ -2445,9 +2586,34 @@ static const value_string mcc_mnc_2digits_codes[] = { { 90169, "Legos" }, { 90170, "Clementvale Baltic OÜ" }, { 90171, "Tampnet AS" }, - { 90172, "Tele2 IoT" }, + { 90172, "Tele2 Sverige Aktiebolag (Formerly Tele2 IoT)" }, { 90173, "Cubic Telecom Limited" }, + { 90174, "Etisalat" }, + { 90175, "Podsystem Ltd." }, + { 90176, "A1 Telekom Austria AG" }, + { 90177, "Bouygues Telecom" }, + { 90178, "Telecom Italia Sparkle S.p.A." }, + { 90179, "Nokia Corporation" }, + { 90180, "Flo Live Limited" }, + { 90181, "Airnity SAS" }, + { 90182, "Eseye Limited" }, + { 90183, "iBasis Netherlands BV" }, + { 90184, "TELEFONICA MOVILES ESPAÑA, S.A. UNIPERSONAL (TME)" }, + { 90185, "Telefónica Germany GmbH & Co. OHG" }, + { 90186, "BJT PARTNERS SAS" }, + { 90187, "Cisco Systems, Inc." }, { 90188, "UN Office for the Coordination of Humanitarian Affairs (OCHA)" }, + { 90189, "DIDWW Ireland Limited" }, + { 90190, "Truphone Limited" }, + { 90191, "World Mobile Group Limited" }, + { 90192, "Phonegroup SA" }, + { 90193, "SkyFive AG" }, + { 90194, "Intelsat US LLC" }, + { 90195, "HMD Global Oy" }, + { 90196, "KORE Wireless" }, + { 90197, "Satelio IoT Services S.L." }, + { 90198, "Skylo Technologies, Inc." }, + { 90199, "Athalos Global Services BV" }, { 90201, "MulteFire Alliance" }, { 99101, "World's Global Telecom (temporary assignment for trial until 14.I.2021)" }, { 99999, "Internal use, example, testing" }, @@ -2459,13 +2625,33 @@ value_string_ext mcc_mnc_2digits_codes_ext = VALUE_STRING_EXT_INIT(mcc_mnc_2digi static const value_string mcc_mnc_3digits_codes[] = { { 208500, "EDF" }, { 208700, "Weaccess group" }, + { 208701, "GIP Vendée numérique" }, + { 208702, "17-Numérique" }, + { 208703, "Nivertel" }, + { 208704, "Axione Limousin" }, + { 208705, "Hautes-Pyrénées Numérique" }, + { 208706, "Tours Métropole Numérique" }, + { 208707, "Sartel THD" }, + { 208708, "Melis@ territoires ruraux" }, + { 208709, "Quimper communauté télécom" }, + { 208710, "Losange" }, + { 208711, "Nomotech" }, + { 208712, "Syndicat Audois d'énergies et du Numérique" }, + { 208713, "SD NUM SAS" }, + { 208714, "Département de l'Isère" }, + { 214700, "IBERDROLA ESPAÑA, S.A.UNIPERSONAL" }, + { 214701, "ENDESA DISTRIBUCIÓN ELÉCTRICA, S.L." }, { 302100, "Data on Tap Inc." }, { 302130, "Xplornet Communications" }, { 302131, "Xplornet Communications" }, + { 302140, "Fibernetics Corporation" }, { 302150, "Cogeco Connexion Inc." }, + { 302151, "Cogeco Connexion Inc." }, + { 302152, "Cogeco Connexion Inc." }, { 302220, "Telus Mobility" }, { 302221, "Telus Mobility" }, { 302222, "Telus Mobility" }, + { 302230, "ISP Telecom" }, { 302250, "ALO Mobile Inc" }, { 302270, "Bragg Communications" }, { 302290, "Airtel Wireless" }, @@ -2485,7 +2671,7 @@ static const value_string mcc_mnc_3digits_codes[] = { { 302530, "Keewatinook Okimacinac" }, { 302550, "Star Solutions International Inc." }, { 302560, "Lynx Mobility" }, - { 302570, "Light Squared" }, + { 302570, "Ligado Networks Corp." }, { 302590, "Quadro Communication" }, { 302600, "Iristel Inc." }, { 302610, "Bell Mobility" }, @@ -2496,19 +2682,25 @@ static const value_string mcc_mnc_3digits_codes[] = { { 302660, "MTS Mobility" }, { 302670, "CityTel Mobility" }, { 302680, "Sask Tel Mobility" }, + { 302681, "SaskTel Mobility" }, { 302690, "Bell Mobility" }, { 302710, "Globalstar" }, { 302720, "Rogers Wireless" }, { 302721, "Rogers Communications Canada Inc. (Wireless)" }, { 302730, "TerreStar Solutions" }, - { 302740, "Shaw Telecom G.P." }, + { 302740, "Rogers Communications Canada Inc." }, + { 302741, "Rogers Communications Canada Inc." }, { 302760, "Public Mobile Inc" }, { 302770, "Rural Com" }, { 302780, "Sask Tel Mobility" }, + { 302781, "SaskTel Mobility" }, + { 302848, "Vocom International Telecommunications, Inc" }, { 302860, "Telus Mobility" }, { 302880, "Telus/Bell shared" }, { 302940, "Wightman Telecom" }, { 302990, "Test" }, + { 302996, "Powertech Labs (experimental)" }, + { 302998, "Institu de Recherche d’Hydro-Québec (experimental)" }, { 310010, "Verizon Wireless" }, { 310012, "Verizon Wireless" }, { 310013, "Verizon Wireless" }, @@ -2517,13 +2709,14 @@ static const value_string mcc_mnc_3digits_codes[] = { { 310020, "Union Telephone Company" }, { 310030, "AT&T Mobility" }, { 310035, "ETEX Communications, LP (d/b/a) ETEX Wireless" }, + { 310040, "Mobi" }, { 310050, "Alaska Wireless Networks" }, { 310070, "AT&T Mobility" }, { 310080, "AT&T Mobility" }, { 310090, "AT&T Mobility" }, - { 310100, "New Mexico RSA 4 East Ltd. Partnership" }, - { 310110, "Pacific Telecom Inc" }, - { 310120, "Sprint" }, + { 310100, "New Mexico RSA 4 East Limited Partnership" }, + { 310110, "PTI Pacifica, Inc." }, + { 310120, "T-Mobile USA" }, { 310130, "Carolina West Wireless" }, { 310140, "GTA Wireless LLC" }, { 310150, "AT&T Mobility" }, @@ -2552,17 +2745,18 @@ static const value_string mcc_mnc_3digits_codes[] = { { 310390, "TX-11 Acquistion LLC" }, { 310400, "Wave Runner LLC" }, { 310410, "AT&T Mobility" }, + { 310420, "World Mobile Networks, Inc" }, { 310430, "GCI Communications Corp" }, { 310440, "Numerex Corp" }, { 310450, "North East Cellular Inc." }, - { 310460, "Newcore Wireless" }, + { 310460, "Eseye" }, { 310470, "Docomo Pacific Inc" }, - { 310480, "Wave Runner LLC" }, + { 310480, "PTI Pacifica, Inc." }, { 310490, "T-Mobile USA" }, { 310500, "Public Service Cellular, Inc." }, { 310510, "Nsight" }, { 310520, "Transactions Network Services (TNS)" }, - { 310530, "Iowa Wireless Services LLC dba | Wireless" }, + { 310530, "T-Mobile" }, { 310540, "Oklahoma Western Telephone Company" }, { 310550, "Syniverse Technologies" }, { 310570, "Broadpoint, LLC (former PetroCom, LLC) c/o MTPCS, LLC dba CellularOne" }, @@ -2579,7 +2773,7 @@ static const value_string mcc_mnc_3digits_codes[] = { { 310599, "Verizon Wireless" }, { 310600, "NewCell dba Cellcom" }, { 310620, "Nsighttel Wireless, LLC" }, - { 310630, "Agri-Valley Broadband, Inc" }, + { 310630, "Choice Wireless" }, { 310640, "Numerex Corp" }, { 310650, "JASPER TECHNOLOGIES INC." }, { 310660, "T-Mobile USA" }, @@ -2593,12 +2787,12 @@ static const value_string mcc_mnc_3digits_codes[] = { { 310740, "Viaero Wireless" }, { 310750, "East Kentucky Network LLC dba Appalachian Wireless" }, { 310760, "Lynch 3G Communications Corporation" }, - { 310770, "Iowa Wireless Services LLC dba I Wireless" }, + { 310770, "T-Mobile" }, { 310790, "PinPoint Communications Inc." }, { 310800, "T-Mobile USA" }, { 310810, "Pacific Lightwave Inc." }, { 310820, "Verizon Wireless" }, - { 310830, "Sprint" }, + { 310830, "T-Mobile USA" }, { 310840, "Telecom North America Mobile Inc" }, { 310850, "Aeris Communications, Inc." }, { 310860, "West Central Wireless" }, @@ -2617,7 +2811,7 @@ static const value_string mcc_mnc_3digits_codes[] = { { 310910, "Verizon Wireless" }, { 310920, "James Valley Wireless LLC" }, { 310930, "Copper Valley Wireless" }, - { 310940, "Tyntec Inc." }, + { 310940, "Tyntec Limited" }, { 310950, "AT&T Mobility" }, { 310960, "UBET Wireless" }, { 310970, "Globalstar USA" }, @@ -2634,7 +2828,7 @@ static const value_string mcc_mnc_3digits_codes[] = { { 311090, "AT&T Mobility" }, { 311100, "Nex-Tech Wireless LLC" }, { 311110, "Verizon Wireless" }, - { 311120, "Wave Runner LLC" }, + { 311120, "PTI Pacifica, Inc." }, { 311140, "Cross Telephone Company" }, { 311150, "Wilkes Cellular Inc." }, { 311170, "Tampnet (formerly Broadpoint, LLC (former PetroCom, LLC) c/o MTPCS, LL" }, @@ -2642,6 +2836,9 @@ static const value_string mcc_mnc_3digits_codes[] = { { 311190, "AT&T Mobility" }, { 311210, "Telnyx LLC" }, { 311220, "United States Cellular" }, + { 311225, "U.S. Cellular" }, + { 311228, "U.S. Cellular" }, + { 311229, "U.S. Cellular" }, { 311230, "Cellular South Inc." }, { 311240, "Cordova Wireless Communications Inc" }, { 311250, "Wave Runner LLC" }, @@ -2680,7 +2877,7 @@ static const value_string mcc_mnc_3digits_codes[] = { { 311410, "Iowa RSA No. 2 Limited Partnership" }, { 311420, "Northwest Cell" }, { 311430, "RSA 1 Limited Partnership dba Cellular 29 Plus" }, - { 311440, "Bluegrass Cellular LLC" }, + { 311440, "Verizon Wireless" }, { 311450, "Panhandle Telecommunication Systems Inc." }, { 311460, "ELECTRIC IMP INCORPORATED" }, { 311470, "Vitelcom Cellular D/B/A Innovative Wireless" }, @@ -2694,12 +2891,17 @@ static const value_string mcc_mnc_3digits_codes[] = { { 311487, "Verizon Wireless" }, { 311488, "Verizon Wireless" }, { 311489, "Verizon Wireless" }, - { 311490, "Sprint" }, + { 311490, "T-Mobile USA" }, + { 311500, "Mobi" }, { 311510, "Ligado Networks" }, - { 311530, "Newcore Wireless LLC" }, + { 311530, "WorldCell Solutions LLC" }, + { 311540, "Coeur Rochester, Inc" }, { 311550, "Commnet Midwest, LLC" }, { 311560, "OTZ Communications Inc" }, + { 311570, "Medicom" }, { 311580, "U.S. Cellular" }, + { 311588, "U.S. Cellular" }, + { 311589, "U.S. Cellular" }, { 311590, "Verizon Wireless" }, { 311600, "Limitless Mobile, LLC" }, { 311610, "North Dakota Network Co." }, @@ -2721,21 +2923,22 @@ static const value_string mcc_mnc_3digits_codes[] = { { 311770, "Altiostar Networks, Inc." }, { 311780, "The American Samoa Telecommunications Authority" }, { 311790, "Coleman County Telephone Cooperative, Inc." }, - { 311800, "Bluegrass Cellular LLC" }, - { 311810, "Blegrass Cellular LLC" }, - { 311820, "Sonus Networks" }, + { 311800, "Verizon Wireless" }, + { 311810, "Verizon Wireless" }, + { 311820, "Ribbon Communications" }, { 311830, "Thumb Cellular LLC" }, { 311840, "Nsight" }, { 311850, "Nsight" }, { 311860, "Uintah Basin Electronic Telecommunications" }, - { 311870, "Sprint" }, - { 311880, "Sprint" }, - { 311882, "Sprint" }, + { 311870, "T-Mobile USA" }, + { 311880, "T-Mobile USA" }, + { 311882, "T-Mobile" }, { 311890, "Globecomm Network Services Corporation" }, { 311900, "Gigsky Inc." }, { 311910, "SI Wireless LLC" }, { 311920, "Missouri RSA No 5 Partnership" }, - { 311940, "Sprint" }, + { 311930, "Cox Communications" }, + { 311940, "T-Mobile USA" }, { 311950, "Sunman Telecommunications corp." }, { 311970, "Big River Broadband LLC" }, { 311980, "LigTel Communications" }, @@ -2754,13 +2957,13 @@ static const value_string mcc_mnc_3digits_codes[] = { { 312160, "RSA1 Limited Partnership dba Chat Mobility" }, { 312170, "Iowa RSA No. 2 Limited Partnership" }, { 312180, "Limitless Mobile, LLC" }, - { 312190, "Sprint" }, + { 312190, "T-Mobile USA" }, { 312210, "ASPENTA, LLC" }, { 312220, "Chariton Valley Communications Corporation" }, { 312230, "SRT Communications Inc." }, { 312240, "Sprint" }, - { 312250, "Sprint" }, - { 312260, "Central LTE Holdings" }, + { 312250, "T-Mobile USA" }, + { 312260, "WorldCell Solutions LLC" }, { 312270, "Cellular Network Partnership dba Pioneer Cellular" }, { 312280, "Cellular Network Partnership dba Pioneer Cellular" }, { 312290, "Uintah Basin Electronic Telecommunications" }, @@ -2783,10 +2986,10 @@ static const value_string mcc_mnc_3digits_codes[] = { { 312480, "Sagebrush Cellular, Inc." }, { 312490, "TrustComm, Inc" }, { 312510, "Wue" }, - { 312530, "Sprint" }, + { 312530, "T-Mobile USA" }, { 312550, "Great Plains Communications, Inc" }, { 312570, "Buffalo-Lake Erie Wireless Systems Co., LLC" }, - { 312580, "Morgan, Lewis & Bockius LLP" }, + { 312580, "Google LLC" }, { 312590, "Northern Michigan University" }, { 312600, "Sagebrush Cellular, Inc." }, { 312620, "GlobeTouch Inc." }, @@ -2815,6 +3018,7 @@ static const value_string mcc_mnc_3digits_codes[] = { { 312880, "Albemarle County Public Schools" }, { 312890, "Circle Gx" }, { 312900, "Flat West Wireless, LLC" }, + { 312910, "East Kentucky Network LLC dba Appalachian Wireless" }, { 312920, "Northeast Wireless Networks" }, { 312930, "Hewlett-Packard Communication Services, LLC" }, { 312940, "Webformix" }, @@ -2824,9 +3028,9 @@ static const value_string mcc_mnc_3digits_codes[] = { { 312980, "Mark Twain Communications Company" }, { 312990, "PREMIER HOLDINGS, LLC" }, { 313000, "Tennessee Wireless" }, - { 313010, "Cross Wireless LLC dba Sprocket Wireless" }, + { 313010, "Cross Wireless LLC dba Bravado Wireless" }, { 313020, "CTC Telecom, INC. dba CTC Wireless" }, - { 313030, "Eagle Telephone System, INC dba Snake River PCS" }, + { 313030, "AT&T Mobility" }, { 313040, "Nucla-Naturita Telephone Company" }, { 313050, "Manti Tele Communications Company, Inc. dba Breakaway Wireless" }, { 313060, "Country Wireless" }, @@ -2853,7 +3057,7 @@ static const value_string mcc_mnc_3digits_codes[] = { { 313260, "Expeto Wireless Inc." }, { 313280, "King Street Wireless, LP" }, { 313290, "Gulf Coast Broadband LLC" }, - { 313300, "Cambio WiFi of Delmarva, LLC." }, + { 313300, "Southern California Edison" }, { 313310, "CAL.NET, INC" }, { 313320, "Paladin Wireless" }, { 313330, "CenturyTel Broadband Services LLC" }, @@ -2864,11 +3068,11 @@ static const value_string mcc_mnc_3digits_codes[] = { { 313380, "OptimERA Inc." }, { 313390, "Altice USA Wireless, Inc." }, { 313400, "Texoma Communications, LLC" }, - { 313410, "pdvWireless" }, + { 313410, "Anterix Inc." }, { 313420, "Hudson Valley Wireless" }, { 313440, "Arvig Enterprises INC" }, { 313450, "Spectrum Wireless Holdings, LLC" }, - { 313460, "Mobi, Inc." }, + { 313460, "Mobi" }, { 313470, "San Diego Gas & Electric Company" }, { 313480, "Ready Wireless, LLC" }, { 313490, "Puloli, Inc" }, @@ -2877,13 +3081,13 @@ static const value_string mcc_mnc_3digits_codes[] = { { 313520, "Florida Broadband, Inc" }, { 313540, "Nokia Innovations US LLC" }, { 313550, "Mile High Networks LLC" }, - { 313560, "Transit Wireless, LLC" }, + { 313560, "Boldyn Networks Transit US LLC" }, { 313570, "Celular Network Partnership" }, { 313580, "Telecall Telecommuncations Corp." }, { 313590, "Southern Communications Services, Inc. D/B/A Southern Linc" }, { 313600, "ST Engineering iDirect" }, - { 313610, "Crystal Automation Systems, Inc." }, - { 313620, "Screened Images" }, + { 313610, "Point Broadband Fiber Holding, LLC" }, + { 313620, "Omniprophis Corporation" }, { 313630, "LICT Corporation" }, { 313640, "Geoverse" }, { 313650, "Chevron USA INC" }, @@ -2895,13 +3099,37 @@ static const value_string mcc_mnc_3digits_codes[] = { { 313710, "Extent Systems" }, { 313720, "1st Point Communications, LLC" }, { 313730, "TruAccess Networks" }, - { 313740, "RTO Wireless, LLC" }, - { 313750, "313-CellTex Networks, LLC" }, - { 313760, "Hologram, Inc." }, + { 313740, "RTO Wireless" }, + { 313750, "CellTex Networks, LLC" }, + { 313760, "Hologram" }, { 313770, "Tango Networks" }, + { 313780, "Windstream Services LLC" }, + { 313790, "Liberty Cablevision of Puerto Rico LLC" }, + { 313810, "W.A.T.C.H. TV Co. dba Watch Communications" }, + { 313820, "Inland Cellular Telephone Company" }, + { 313830, "360 communications INC" }, + { 313840, "Celblox Acquisitions" }, + { 313850, "Softcom Internet Communications, Inc." }, + { 313860, "AMG Technology Investment Group dba Nextlink Internet" }, + { 313870, "Elektrafi LLC" }, + { 313880, "Shuttle Wireless Solutions Inc." }, + { 313890, "Tulare County Office of Education" }, + { 313900, "All Tribal Networks" }, + { 313910, "San Diego Gas and Electric" }, + { 313920, "JCI US INC" }, + { 313930, "Standing Rock Telecom" }, + { 313940, "Motorola Solutions, Inc" }, + { 313950, "Cheyenne and Arapaho Development Group" }, + { 313960, "Townes 5G, LLC" }, + { 313970, "Tychron Corporation" }, + { 313990, "Ericsson US" }, { 314010, "Boingo Wireless Inc" }, { 314020, "Spectrum Wireless Holdings, LLC" }, { 314030, "Baicells Technologies North America Inc." }, + { 314060, "Texas A&M University System – RELLIS Campus" }, + { 314070, "Texas A&M University System – RELLIS Campus" }, + { 314080, "Texas A&M University System – RELLIS Campus" }, + { 314090, "Southern Communications Services, Inc. D/B/A Southern Linc" }, { 314100, "RESERVED FOR PUBLIC SAFETY" }, { 314110, "RESERVED FOR PUBLIC SAFETY" }, { 314120, "RESERVED FOR PUBLIC SAFETY" }, @@ -2912,24 +3140,71 @@ static const value_string mcc_mnc_3digits_codes[] = { { 314170, "RESERVED FOR PUBLIC SAFETY" }, { 314180, "RESERVED FOR PUBLIC SAFETY" }, { 314190, "RESERVED FOR PUBLIC SAFETY" }, + { 314200, "XF Wireless Investments" }, + { 314210, "Telecom Resource Center" }, + { 314220, "Secrus Technologies" }, + { 314230, "Trace-Tek" }, + { 314240, "XF Wireless Investments" }, + { 314260, "AT&T Mobility" }, + { 314270, "AT&T Mobility" }, + { 314280, "Pollen Mobile LLC" }, + { 314290, "Wave" }, + { 314310, "Terranet" }, + { 314320, "Agri-Valley Communications, Inc" }, + { 314330, "Nova Labs Inc." }, + { 314340, "E-MARCONI LLC" }, + { 314350, "Evergy" }, + { 314360, "Oceus Networks, LLC" }, + { 314370, "Texas A&M University – ITEC" }, + { 314380, "Circle Computer Resources, Inc." }, + { 314390, "AT&T" }, + { 314400, "Cellular South Inc. dba C Spire" }, + { 314410, "Peeringhub Inc" }, + { 314420, "Cox Communications, Inc" }, + { 314430, "Highway9 Networks, Inc." }, + { 314440, "Tecore Global Services, LLC" }, + { 314450, "NUWAVE Communications, Inc." }, + { 314460, "Texas A&M University" }, + { 314470, "Manhattan Telecommunications Corporation LLC" }, + { 314480, "Xcel Energy Services Inc." }, + { 314490, "Utah Education and Telehealth Network (UETN)" }, + { 314500, "Aetheros Inc" }, + { 314510, "SI Wireless LLC" }, + { 314520, "Oklahoma Gas & Electric Company (OG&E)" }, + { 314530, "Agile Networks" }, + { 314540, "RGTN USA, Inc." }, { 316010, "Sprint" }, { 316011, "Southern Communications Services Inc." }, + { 316700, "Mile High Networks LLC" }, { 334001, "COMUNICACIONES DIGITALES DEL NORTE, S.A. DE C.V" }, - { 334010, "NII DIGITAL, S. DE R.L. DE C.V." }, + { 334010, "AT&T COMUNICACIONES DIGITALES, S. DE R.L. DE C.V." }, { 334020, "RADIOMOVIL DIPSA, S.A. DE C.V." }, - { 334030, "PEGASO COMUNICACIONES Y SISTEMAS, S.A. DE C.V." }, - { 334040, "IUSACELL PCS DE MEXICO, S.A. DE C.V." }, - { 334050, "COMUNICACIONES CELULARES DE OCCIDENTE, S.A. DE C.V. / SISTEMAS TELEFONICOS PORTATILES CELULARES, S.A. DE C.V. / TELECOMUNICACIONES DEL GOLFO, S.A. DE C.V. / SOS TELECOMUNICACIONES, S.A. DE C.V. / PORTATEL DEL SURESTE, S.A. DE C.V." }, + { 334030, "PEGASO PCS, S.A. DE C.V." }, + { 334040, "AT&T NORTE, S. DE R.L. DE C.V. Y AT&T DESARROLLO EN COMUNICACIONES DE MÉXICO, S. DE R.L. DE C.V." }, + { 334050, "GRUPO AT&T CELULLAR, S. DE R.L. DE C.V." }, { 334060, "SERVICIOS DE ACCESO INALAMBRICO, S.A DE C.V." }, { 334066, "TELÉFONOS DE MÉXICO, S.A.B. DE C.V" }, - { 334070, "OPERADORA UNEFON, S. A. DE C.V." }, - { 334080, "OPERADORA UNEFON, S. A. DE C.V." }, - { 334090, "NII DIGITAL, S. DE R.L. DE C.V." }, + { 334070, "AT&T COMERCIALIZACIÓN MÓVIL, S. DE R.L. DE C.V." }, + { 334080, "AT&T COMERCIALIZACIÓN MÓVIL, S. DE R.L. DE C.V." }, + { 334090, "AT&T COMUNICACIONES DIGITALES, S. DE R.L. DE C.V." }, + { 334100, "TELECOMUNICACIONES DE MÉXICO" }, + { 334110, "MAXCOM TELECOMUNICACIONES, S.A.B. DE C.V." }, + { 334120, "QUICKLY PHONE, S.A. DE C.V." }, + { 334130, "AXTEL, S.A.B. DE C.V." }, + { 334140, "ALTÁN REDES, S.A.P.I. DE C.V." }, + { 334150, "ULTRAVISIÓN, S.A. DE C.V." }, + { 334160, "CABLEVISIÓN RED, S.A. DE C.V." }, + { 334170, "OXIO MOBILE, S.A. DE C.V." }, + { 334180, "FREEDOMPOP MÉXICO, S.A. DE C.V." }, + { 334190, "VIASAT TECNOLOGÍA, S.A. DE C.V." }, { 338040, "Symbiote Investment Limited" }, { 338050, "Digicel (Jamaica) Ltd" }, + { 338080, "Rock Mobile Limited" }, { 338110, "Cable and Wireless Jamaica Ltd" }, { 342600, "Cable & Wireless (Barbados) Ltd. trading as Lime" }, - { 342820, "Sunbeach Communications" }, + { 342646, "KW Telecommunications Inc." }, + { 342800, "Ozone" }, + { 342820, "Neptune Communications Inc." }, { 344030, "APUA PCS" }, { 344920, "Cable & Wireless (Antigua) trading as Lime" }, { 344930, "AT&T Wireless (Antigua)" }, @@ -2940,6 +3215,7 @@ static const value_string mcc_mnc_3digits_codes[] = { { 348570, "Caribbean Cellular Telephone Ltd." }, { 348770, "Digicel (BVI) Ltd" }, { 350000, "Bermuda Digital Communications Ltd (CellOne)" }, + { 350007, "Paradise Mobile" }, { 352110, "Cable & Wireless Grenada ltd trading as lime" }, { 354860, "Cable & Wireless (West Indies) Ltd trading as Lime" }, { 356110, "Cable & Wireless St Kitts & Nevis Ltd trading as Lime" }, @@ -2961,6 +3237,7 @@ static const value_string mcc_mnc_3digits_codes[] = { { 405011, "Reliance Communications Ltd/GSM, Kerala" }, { 405012, "Reliance Infocomm Ltd, Andhra Pradesh" }, { 405013, "Reliance Communications Ltd/GSM, Maharashtra" }, + { 405014, "Reliance Communications Ltd/GSM, Madhya Pradesh" }, { 405018, "Reliance Communications Ltd/GSM, Punjab" }, { 405020, "Reliance Communications Ltd/GSM, Tamilnadu" }, { 405021, "Reliance Communications Ltd/GSM, UP (East)" }, @@ -3003,10 +3280,24 @@ static const value_string mcc_mnc_3digits_codes[] = { { 405807, "Dishnet Wireless Ltd, Haryana" }, { 405808, "Dishnet Wireless Ltd, Madhya Pradesh" }, { 405809, "Dishnet Wireless Ltd, Kerala" }, + { 441200, "SORACOM, Inc." }, + { 441201, "Aurens Co.,Ltd." }, + { 441202, "Sony Wireless Communications Inc." }, + { 441203, "GujoCity" }, + { 441204, "Wicom Inc." }, + { 441205, "KATCH NETWORK INC." }, + { 441206, "MITSUBISHI ELECTRIC CORPORATION" }, + { 441207, "Mitsui Knowledge Industry Co., Ltd." }, + { 441208, "CHUDENKO CORPORATION" }, + { 441209, "Cable Television TOYAMA Inc." }, + { 441210, "NIPPON TELEGRAPH AND TELEPHONE EAST CORPORATION" }, + { 441211, "STARCAT CABLE NETWORK Co., LTD." }, + { 441212, "I-TEC Solutions Co., Ltd." }, + { 441213, "Hokkaido Telecommunication Network Co., Inc." }, { 708001, "Megatel" }, { 708002, "Celtel" }, { 708040, "Digicel Honduras" }, - { 714020, "Telefónica Móviles Panamá S.A." }, + { 714020, "Grupo de Comunicaciones Digitales, S.A. (TIGO)" }, { 722010, "Compañia de Radiocomunicaciones Moviles S.A." }, { 722020, "Nextel Argentina srl" }, { 722070, "Telefónica Comunicaciones Personales S.A." }, @@ -3026,6 +3317,7 @@ static const value_string mcc_mnc_3digits_codes[] = { { 732130, "Avantel" }, { 738002, "Guyana Telephone & Telegraph Company Limited (Cellink)" }, { 738003, "Quark Communications Inc." }, + { 738040, "E-Networks Inc." }, { 750001, "Touch" }, { 999999, "Internal use, example, testing" }, { 1666665, "Unset" }, diff --git a/epan/dissectors/packet-epl.c b/epan/dissectors/packet-epl.c index 4dbc5156..4dcd4195 100644 --- a/epan/dissectors/packet-epl.c +++ b/epan/dissectors/packet-epl.c @@ -3870,18 +3870,15 @@ dissect_epl_sdo_command(proto_tree *epl_tree, tvbuff_t *tvb, packet_info *pinfo, proto_tree_add_item(sdo_cmd_tree, hf_epl_asnd_sdo_cmd_segmentation, tvb, offset, 1, ENC_LITTLE_ENDIAN); - if (segment_size != 0) - { - offset += 1; - proto_tree_add_item(sdo_cmd_tree, hf_epl_asnd_sdo_cmd_command_id, tvb, offset, 1, ENC_LITTLE_ENDIAN); - offset += 1; + offset += 1; + proto_tree_add_item(sdo_cmd_tree, hf_epl_asnd_sdo_cmd_command_id, tvb, offset, 1, ENC_LITTLE_ENDIAN); + offset += 1; - item = proto_tree_add_item(sdo_cmd_tree, hf_epl_asnd_sdo_cmd_segment_size, tvb, offset, 2, ENC_LITTLE_ENDIAN); - offset += 4; - if ( tvb_reported_length_remaining(tvb, offset) < segment_size ) - expert_add_info_format(pinfo, item, &ei_real_length_differs, - "Captured length differs, only %d octets will be displayed", tvb_reported_length_remaining(tvb, offset) - 4 ); - } + item = proto_tree_add_item(sdo_cmd_tree, hf_epl_asnd_sdo_cmd_segment_size, tvb, offset, 2, ENC_LITTLE_ENDIAN); + offset += 4; + if ( tvb_reported_length_remaining(tvb, offset) < segment_size ) + expert_add_info_format(pinfo, item, &ei_real_length_differs, + "Captured length differs, only %d octets will be displayed", tvb_reported_length_remaining(tvb, offset) - 4 ); if (segmented == EPL_ASND_SDO_CMD_SEGMENTATION_INITIATE_TRANSFER) { diff --git a/epan/dissectors/packet-fcfzs.c b/epan/dissectors/packet-fcfzs.c index 4cbf5193..82a55f70 100644 --- a/epan/dissectors/packet-fcfzs.c +++ b/epan/dissectors/packet-fcfzs.c @@ -116,9 +116,13 @@ dissect_fcfzs_zoneset(tvbuff_t *tvb, packet_info* pinfo, proto_tree *tree, int o len = tvb_get_guint8(tvb, offset); proto_tree_add_item(tree, hf_fcfzs_zonesetnmlen, tvb, offset, 1, ENC_BIG_ENDIAN); - proto_tree_add_item(tree, hf_fcfzs_zonesetname, tvb, offset+4, + offset += 4; + proto_tree_add_item(tree, hf_fcfzs_zonesetname, tvb, offset, len, ENC_ASCII); - offset += 4 + len + (4-(len % 4)); + offset += len; + /* Fill Bytes */ + if (len % 4) + offset += 4 - (len % 4); /* Number of zones */ @@ -131,9 +135,13 @@ dissect_fcfzs_zoneset(tvbuff_t *tvb, packet_info* pinfo, proto_tree *tree, int o len = tvb_get_guint8(tvb, offset); proto_tree_add_item(tree, hf_fcfzs_zonenmlen, tvb, offset, 1, ENC_BIG_ENDIAN); - proto_tree_add_item(tree, hf_fcfzs_zonename, tvb, offset+4, + offset += 4; + proto_tree_add_item(tree, hf_fcfzs_zonename, tvb, offset, len, ENC_ASCII); - offset += 4 + len + (4-(len % 4)); + offset += len; + /* Fill Bytes */ + if (len % 4) + offset += 4 - (len % 4); nummbrs = tvb_get_ntohl(tvb, offset); proto_tree_add_item(tree, hf_fcfzs_nummbrentries, tvb, offset, diff --git a/epan/dissectors/packet-gquic.c b/epan/dissectors/packet-gquic.c index 372bd405..c6aea314 100644 --- a/epan/dissectors/packet-gquic.c +++ b/epan/dissectors/packet-gquic.c @@ -1435,6 +1435,7 @@ dissect_gquic_tag(tvbuff_t *tvb, packet_info *pinfo, proto_tree *gquic_tree, gui proto_tree_add_item(tag_tree, hf_gquic_tag_value, tvb, tag_offset_start + tag_offset, tag_len, ENC_NA); + increment_dissection_depth(pinfo); switch(tag){ case TAG_PAD: proto_tree_add_item(tag_tree, hf_gquic_tag_pad, tvb, tag_offset_start + tag_offset, tag_len, ENC_NA); @@ -1491,7 +1492,6 @@ dissect_gquic_tag(tvbuff_t *tvb, packet_info *pinfo, proto_tree *gquic_tree, gui scfg_tag_number = tvb_get_guint32(tvb, tag_offset_start + tag_offset, ENC_LITTLE_ENDIAN); tag_offset += 4; - // We recurse here, but we're limited by tree depth checks in epan dissect_gquic_tag(tvb, pinfo, tag_tree, tag_offset_start + tag_offset, scfg_tag_number); tag_offset += tag_len - 4 - 4; } @@ -1714,6 +1714,8 @@ dissect_gquic_tag(tvbuff_t *tvb, packet_info *pinfo, proto_tree *gquic_tree, gui tag_offset += tag_len; break; } + decrement_dissection_depth(pinfo); + if(tag_offset != offset_end){ /* Wrong Tag len... */ proto_tree_add_expert(tag_tree, pinfo, &ei_gquic_tag_unknown, tvb, tag_offset_start + tag_offset, tag_len); diff --git a/epan/dissectors/packet-grpc.c b/epan/dissectors/packet-grpc.c index a459fde2..b71a272b 100644 --- a/epan/dissectors/packet-grpc.c +++ b/epan/dissectors/packet-grpc.c @@ -136,11 +136,14 @@ static int ett_grpc_message = -1; static int ett_grpc_encoded_entity = -1; static dissector_handle_t grpc_handle; +static dissector_handle_t grpc_web_handle; +static dissector_handle_t grpc_web_text_handle; static dissector_handle_t data_text_lines_handle; /* the information used during dissecting a grpc message */ typedef struct { gboolean is_request; /* is request or response message */ + grpc_protocol_type_t proto_type; const gchar* path; /* is http2 ":path" or http request_uri, format: "/" Service-Name "/" {method name} */ const gchar* content_type; /* is http2 or http content-type, like: application/grpc */ const gchar* encoding; /* is grpc-encoding header containing compressed method, for example "gzip" */ @@ -158,18 +161,6 @@ typedef struct { */ static dissector_table_t grpc_message_type_subdissector_table; -static grpc_protocol_type_t -get_grpc_protocol_type(const gchar* content_type) { - if (content_type != NULL) { - if (g_str_has_prefix(content_type, "application/grpc-web-text")) { - return GRPC_PTYPE_GRPC_WEB_TEXT; - } else if (g_str_has_prefix(content_type, "application/grpc-web")) { - return GRPC_PTYPE_GRPC_WEB; - } - } - return GRPC_PTYPE_GRPC; -} - /* Try to dissect grpc message according to grpc message info or http2 content_type. */ static void dissect_body_data(proto_tree *grpc_tree, packet_info *pinfo, tvbuff_t *tvb, const gint offset, @@ -335,13 +326,11 @@ dissect_grpc_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, grpc_co guint32 message_length; guint offset = 0; guint tvb_len = tvb_reported_length(tvb); - grpc_protocol_type_t proto_type; const gchar* proto_name; - DISSECTOR_ASSERT_HINT(grpc_ctx && grpc_ctx->content_type && grpc_ctx->path, "The content_type and path of grpc context must be set."); + DISSECTOR_ASSERT(grpc_ctx != NULL); - proto_type = get_grpc_protocol_type(grpc_ctx->content_type); - proto_name = val_to_str_const(proto_type, grpc_protocol_type_vals, "GRPC"); + proto_name = val_to_str_const(grpc_ctx->proto_type, grpc_protocol_type_vals, "GRPC"); if (!grpc_embedded_under_http2 && proto_tree_get_parent_tree(tree)) { tree = proto_tree_get_parent_tree(tree); @@ -395,41 +384,31 @@ dissect_grpc_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, grpc_co return tvb_captured_length(tvb); } -static int -dissect_grpc(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tree, void* data) +static grpc_context_info_t* +get_grpc_context(packet_info *pinfo, const media_content_info_t *content_info) { - int ret; http_req_res_t* curr_req_res; - tvbuff_t* real_data_tvb; - grpc_context_info_t grpc_ctx = { 0 }; - media_content_info_t* content_info = (media_content_info_t*)data; - gboolean is_grpc_web_text = g_str_has_prefix(pinfo->match_string, "application/grpc-web-text"); - - if (is_grpc_web_text) { - real_data_tvb = base64_tvb_to_new_tvb(tvb, 0, tvb_reported_length(tvb)); - add_new_data_source(pinfo, real_data_tvb, "Decoded base64 body"); - } else { - real_data_tvb = tvb; - } + grpc_context_info_t* grpc_ctx = wmem_new0(pinfo->pool, grpc_context_info_t); if (proto_is_frame_protocol(pinfo->layers, "http2")) { - grpc_ctx.path = http2_get_header_value(pinfo, HTTP2_HEADER_PATH, FALSE); - grpc_ctx.is_request = (grpc_ctx.path != NULL); - if (grpc_ctx.path == NULL) { + grpc_ctx->path = http2_get_header_value(pinfo, HTTP2_HEADER_PATH, FALSE); + grpc_ctx->is_request = (grpc_ctx->path != NULL); + if (grpc_ctx->path == NULL) { /* this must be response, so we get it from http2 request stream */ - grpc_ctx.path = http2_get_header_value(pinfo, HTTP2_HEADER_PATH, TRUE); + /* XXX - Not necessarily true if the data has errors. */ + grpc_ctx->path = http2_get_header_value(pinfo, HTTP2_HEADER_PATH, TRUE); } - grpc_ctx.content_type = http2_get_header_value(pinfo, HTTP2_HEADER_CONTENT_TYPE, FALSE); - grpc_ctx.encoding = http2_get_header_value(pinfo, HTTP2_HEADER_GRPC_ENCODING, FALSE); + grpc_ctx->content_type = http2_get_header_value(pinfo, HTTP2_HEADER_CONTENT_TYPE, FALSE); + grpc_ctx->encoding = http2_get_header_value(pinfo, HTTP2_HEADER_GRPC_ENCODING, FALSE); } else if (proto_is_frame_protocol(pinfo->layers, "http")) { curr_req_res = (http_req_res_t*)p_get_proto_data(wmem_file_scope(), pinfo, proto_http, 0); DISSECTOR_ASSERT_HINT(curr_req_res && content_info, "Unexpected error: HTTP request/reply or HTTP message info not available."); - grpc_ctx.is_request = (content_info->type == MEDIA_CONTAINER_HTTP_REQUEST); - grpc_ctx.path = curr_req_res->request_uri; - grpc_ctx.content_type = pinfo->match_string; /* only for grpc-web(-text) over http1.1 */ + grpc_ctx->is_request = (content_info->type == MEDIA_CONTAINER_HTTP_REQUEST); + grpc_ctx->path = curr_req_res->request_uri; + grpc_ctx->content_type = pinfo->match_string; /* only for grpc-web(-text) over http1.1 */ if (content_info->data) { - grpc_ctx.encoding = (const gchar*)wmem_map_lookup((wmem_map_t *)content_info->data, HTTP2_HEADER_GRPC_ENCODING); + grpc_ctx->encoding = (const gchar*)wmem_map_lookup((wmem_map_t *)content_info->data, HTTP2_HEADER_GRPC_ENCODING); } } else { @@ -437,13 +416,52 @@ dissect_grpc(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tree, void* data) DISSECTOR_ASSERT_NOT_REACHED(); } - ret = dissect_grpc_common(real_data_tvb, pinfo, tree, &grpc_ctx); + return grpc_ctx; +} - if (is_grpc_web_text) { - /* convert reassembly the lengths of offset and remaining bytes back to the base64 lengths */ - pinfo->desegment_offset = BASE64_ENCODE_SIZE(pinfo->desegment_offset); - pinfo->desegment_len = BASE64_ENCODE_SIZE(pinfo->desegment_len); - } +static int +dissect_grpc(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tree, void* data) +{ + grpc_context_info_t* grpc_ctx; + media_content_info_t* content_info = (media_content_info_t*)data; + + grpc_ctx = get_grpc_context(pinfo, content_info); + grpc_ctx->proto_type = GRPC_PTYPE_GRPC; + + return dissect_grpc_common(tvb, pinfo, tree, grpc_ctx); +} + +static int +dissect_grpc_web(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tree, void* data) +{ + grpc_context_info_t* grpc_ctx; + media_content_info_t* content_info = (media_content_info_t*)data; + + grpc_ctx = get_grpc_context(pinfo, content_info); + grpc_ctx->proto_type = GRPC_PTYPE_GRPC_WEB; + + return dissect_grpc_common(tvb, pinfo, tree, grpc_ctx); +} + +static int +dissect_grpc_web_text(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tree, void* data) +{ + int ret; + tvbuff_t* real_data_tvb; + grpc_context_info_t* grpc_ctx; + media_content_info_t* content_info = (media_content_info_t*)data; + + real_data_tvb = base64_tvb_to_new_tvb(tvb, 0, tvb_reported_length(tvb)); + add_new_data_source(pinfo, real_data_tvb, "Decoded base64 body"); + + grpc_ctx = get_grpc_context(pinfo, content_info); + grpc_ctx->proto_type = GRPC_PTYPE_GRPC_WEB_TEXT; + + ret = dissect_grpc_common(real_data_tvb, pinfo, tree, grpc_ctx); + + /* convert reassembly the lengths of offset and remaining bytes back to the base64 lengths */ + pinfo->desegment_offset = BASE64_ENCODE_SIZE(pinfo->desegment_offset); + pinfo->desegment_len = BASE64_ENCODE_SIZE(pinfo->desegment_len); return ret; } @@ -525,7 +543,9 @@ proto_register_grpc(void) expert_grpc = expert_register_protocol(proto_grpc); expert_register_field_array(expert_grpc, ei, array_length(ei)); - grpc_handle = register_dissector("grpc", dissect_grpc, proto_grpc); + grpc_handle = register_dissector_with_description("grpc", "gRPC", dissect_grpc, proto_grpc); + grpc_web_handle = register_dissector_with_description("grpc_web", "gRPC Web", dissect_grpc_web, proto_grpc); + grpc_web_text_handle = register_dissector_with_description("grpc_web_text", "gRPC Web Text", dissect_grpc_web_text, proto_grpc); /* * Dissectors can register themselves in this table as grpc message @@ -539,17 +559,26 @@ proto_register_grpc(void) void proto_reg_handoff_grpc(void) { + int i; + char *content_types[] = { "application/grpc", "application/grpc+proto", "application/grpc+json", + NULL /* end flag */ + }; + + char *content_types_web[] = { "application/grpc-web", "application/grpc-web+proto", + NULL /* end flag */ + }; + + char *content_types_web_text[] = { "application/grpc-web-text", "application/grpc-web-text+proto", NULL /* end flag */ }; - int i; /* register native grpc handler */ for (i = 0; content_types[i]; i++) { @@ -557,6 +586,18 @@ proto_reg_handoff_grpc(void) dissector_add_string("media_type", content_types[i], grpc_handle); } + /* register gRPC Web handler */ + for (i = 0; content_types_web[i]; i++) { + dissector_add_string("streaming_content_type", content_types_web[i], grpc_web_handle); + dissector_add_string("media_type", content_types_web[i], grpc_web_handle); + } + + /* register gRPC Web Text handler */ + for (i = 0; content_types_web_text[i]; i++) { + dissector_add_string("streaming_content_type", content_types_web_text[i], grpc_web_text_handle); + dissector_add_string("media_type", content_types_web_text[i], grpc_web_text_handle); + } + proto_http = proto_get_id_by_filter_name("http"); data_text_lines_handle = find_dissector_add_dependency("data-text-lines", proto_grpc); } diff --git a/epan/dissectors/packet-gsm_a_rp.c b/epan/dissectors/packet-gsm_a_rp.c index 66c02b2f..f20e8a77 100644 --- a/epan/dissectors/packet-gsm_a_rp.c +++ b/epan/dissectors/packet-gsm_a_rp.c @@ -26,6 +26,7 @@ #include <wsutil/wsjson.h> #include "packet-gsm_a_common.h" +#include "packet-media-type.h" void proto_register_gsm_a_rp(void); void proto_reg_handoff_gsm_a_rp(void); @@ -488,7 +489,7 @@ dissect_rp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_) } static int -dissect_nf_media_type(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) +dissect_nf_media_type(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, media_content_info_t *content_info) { tvbuff_t* json_tvb; int ret; @@ -496,6 +497,8 @@ dissect_nf_media_type(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) char *json_data; const char *content_id; + if (!gsm_a_dtap_handle || !content_info || content_info->type > MEDIA_CONTAINER_HTTP_OTHERS || !content_info->content_id) + return 0; json_tvb = (tvbuff_t*)p_get_proto_data(pinfo->pool, pinfo, proto_json, 0); if (!json_tvb) return 0; @@ -510,18 +513,19 @@ dissect_nf_media_type(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) if (!cur_tok) return 0; content_id = json_get_string(json_data, cur_tok, "contentId"); - if (content_id && !strcmp(content_id, "sms") && gsm_a_dtap_handle) + if (content_id && !strcmp(content_id, content_info->content_id)) return call_dissector_only(gsm_a_dtap_handle, tvb, pinfo, tree, NULL); return 0; } static int -dissect_rp_media_type(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) +dissect_rp_media_type(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) { int ret; + media_content_info_t *content_info = (media_content_info_t *)data; - ret = dissect_nf_media_type(tvb, pinfo, tree); + ret = dissect_nf_media_type(tvb, pinfo, tree, content_info); if (!ret) ret = dissect_rp(tvb, pinfo, tree, NULL); return ret; diff --git a/epan/dissectors/packet-http2.c b/epan/dissectors/packet-http2.c index 5def945a..fa51d447 100644 --- a/epan/dissectors/packet-http2.c +++ b/epan/dissectors/packet-http2.c @@ -38,6 +38,7 @@ #ifdef HAVE_NGHTTP2 #include <epan/uat.h> +#include <epan/charsets.h> #include <epan/decode_as.h> #include <nghttp2/nghttp2.h> #include <epan/export_object.h> @@ -1187,6 +1188,7 @@ http2_cleanup_protocol(void) { } static dissector_handle_t http2_handle; +static dissector_handle_t data_handle; static reassembly_table http2_body_reassembly_table; static reassembly_table http2_streaming_reassembly_table; @@ -3157,6 +3159,21 @@ reassemble_http2_data_according_to_subdissector(tvbuff_t* tvb, packet_info* pinf streaming_reassembly_info_t* reassembly_info = get_streaming_reassembly_info(pinfo, http2_session); dissector_handle_t subdissector_handle = dissector_get_string_handle(streaming_content_type_dissector_table, content_type); + if (subdissector_handle == NULL) { + /* We didn't get the content type, possibly because of byte errors. + * Note that the content type is per direction (as it should be) + * but reassembly_mode is set the same for *both* directions. + * + * We could try to set it to the content type used in the other + * direction, but among other things, if this is the request, + * we might be getting here for the first time on the second pass, + * and reassemble_streaming_data_and_call_subdissector() asserts in + * + * Just set it to data for now to avoid an assert from a NULL handle. + */ + subdissector_handle = data_handle; + } + /* XXX - Do we still need to set this? */ pinfo->match_string = content_type; reassemble_streaming_data_and_call_subdissector( @@ -3238,7 +3255,7 @@ get_real_header_value(packet_info* pinfo, const gchar* name, gboolean the_other_ value_len = pntoh32(data + 4 + name_len); if (4 + name_len + 4 + value_len == hdr->table.data.datalen) { /* return value */ - return wmem_strndup(pinfo->pool, data + 4 + name_len + 4, value_len); + return get_ascii_string(pinfo->pool, data + 4 + name_len + 4, value_len); } else { return NULL; /* unexpected error */ @@ -4867,6 +4884,8 @@ proto_reg_handoff_http2(void) media_type_dissector_table = find_dissector_table("media_type"); #endif + data_handle = find_dissector("data"); + dissector_add_uint_range_with_preference("tcp.port", "", http2_handle); dissector_add_for_decode_as("tcp.port", http2_handle); diff --git a/epan/dissectors/packet-http2.h b/epan/dissectors/packet-http2.h index f3b961de..e7d188ba 100644 --- a/epan/dissectors/packet-http2.h +++ b/epan/dissectors/packet-http2.h @@ -41,6 +41,14 @@ int dissect_http2_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* * @param the_other_direction FALSE means from current direction stream, TRUE from the other. * @return NULL if header was not found. Or header value. Note: the value is allocated * by pinfo->pool. + * @note The returned field value is decoded from US-ASCII and characters outside + * that range, i.e. obs-text, are replaced with UTF-8 REPLACEMENT CHARACTERS. + * Dissectors may need to perform additional decoding (e.g., percent decoding or + * the more robust decoding per RFC 8187.) + * @warning Don't call this if HTTP but not HTTP/2 is present in the packet + * (e.g. test with proto_is_frame_protocol() first). This ultimately calls + * get_http2_session, creating a HTTP/2 session on the current conversation, + * which can confuse the HTTP dissector. (This should be fixed.) */ const gchar* http2_get_header_value(packet_info *pinfo, const gchar* name, gboolean the_other_direction); diff --git a/epan/dissectors/packet-icmpv6.c b/epan/dissectors/packet-icmpv6.c index 08b29344..4a085f5f 100644 --- a/epan/dissectors/packet-icmpv6.c +++ b/epan/dissectors/packet-icmpv6.c @@ -1349,20 +1349,22 @@ static const value_string mpl_seed_id_lengths[] = { }; static const guint8 mpl_seed_id_code_to_length[] = { 0, 2, 8, 16 }; /* bytes */ +#define LIFETIME_INFINITY 0xFFFFFFFF + static const value_string unique_infinity[] = { - { 0xffffffff, "Infinity" }, + { LIFETIME_INFINITY, "Infinity" }, { 0, NULL} }; static const value_string dnssl_infinity[] = { { 0, "DNSSL domain name MUST no longer be used" }, - { 0xffffffff, "Infinity" }, + { LIFETIME_INFINITY, "Infinity" }, { 0, NULL} }; static const value_string rdnss_infinity[] = { { 0, "RDNSS address MUST no longer be used" }, - { 0xffffffff, "Infinity" }, + { LIFETIME_INFINITY, "Infinity" }, { 0, NULL} }; @@ -1820,12 +1822,16 @@ static int dissect_icmpv6_nd_opt(tvbuff_t *tvb, int offset, packet_info *pinfo, /* Prefix Valid Lifetime */ ti_opt = proto_tree_add_item_ret_uint(icmp6opt_tree, hf_icmpv6_opt_prefix_valid_lifetime, tvb, opt_offset, 4, ENC_BIG_ENDIAN, &lifetime); - proto_item_append_text(ti_opt, " (%s)", unsigned_time_secs_to_str(wmem_packet_scope(), lifetime)); + if (lifetime != LIFETIME_INFINITY) { + proto_item_append_text(ti_opt, " (%s)", unsigned_time_secs_to_str(wmem_packet_scope(), lifetime)); + } opt_offset += 4; /* Prefix Preferred Lifetime */ ti_opt = proto_tree_add_item_ret_uint(icmp6opt_tree, hf_icmpv6_opt_prefix_preferred_lifetime, tvb, opt_offset, 4, ENC_BIG_ENDIAN, &lifetime); - proto_item_append_text(ti_opt, " (%s)", unsigned_time_secs_to_str(wmem_packet_scope(), lifetime)); + if (lifetime != LIFETIME_INFINITY) { + proto_item_append_text(ti_opt, " (%s)", unsigned_time_secs_to_str(wmem_packet_scope(), lifetime)); + } opt_offset += 4; proto_tree_add_item(icmp6opt_tree, hf_icmpv6_opt_reserved, tvb, opt_offset, 4, ENC_NA); @@ -2228,7 +2234,9 @@ static int dissect_icmpv6_nd_opt(tvbuff_t *tvb, int offset, packet_info *pinfo, /* Route Lifetime */ ti_opt = proto_tree_add_item_ret_uint(icmp6opt_tree, hf_icmpv6_opt_route_lifetime, tvb, opt_offset, 4, ENC_BIG_ENDIAN, &lifetime); - proto_item_append_text(ti_opt, " (%s)", unsigned_time_secs_to_str(wmem_packet_scope(), lifetime)); + if (lifetime != LIFETIME_INFINITY) { + proto_item_append_text(ti_opt, " (%s)", unsigned_time_secs_to_str(wmem_packet_scope(), lifetime)); + } opt_offset += 4; /* Prefix */ @@ -2267,7 +2275,9 @@ static int dissect_icmpv6_nd_opt(tvbuff_t *tvb, int offset, packet_info *pinfo, /* RDNSS Lifetime */ ti_opt = proto_tree_add_item_ret_uint(icmp6opt_tree, hf_icmpv6_opt_rdnss_lifetime, tvb, opt_offset, 4, ENC_BIG_ENDIAN, &lifetime); - proto_item_append_text(ti_opt, " (%s)", unsigned_time_secs_to_str(wmem_packet_scope(), lifetime)); + if (lifetime != LIFETIME_INFINITY) { + proto_item_append_text(ti_opt, " (%s)", unsigned_time_secs_to_str(wmem_packet_scope(), lifetime)); + } opt_offset += 4; while(opt_offset < (offset + opt_len) ) { @@ -2415,7 +2425,9 @@ static int dissect_icmpv6_nd_opt(tvbuff_t *tvb, int offset, packet_info *pinfo, /* DNSSL Lifetime */ ti_opt = proto_tree_add_item_ret_uint(icmp6opt_tree, hf_icmpv6_opt_dnssl_lifetime, tvb, opt_offset, 4, ENC_BIG_ENDIAN, &lifetime); - proto_item_append_text(ti_opt, " (%s)", unsigned_time_secs_to_str(wmem_packet_scope(), lifetime)); + if (lifetime != LIFETIME_INFINITY) { + proto_item_append_text(ti_opt, " (%s)", unsigned_time_secs_to_str(wmem_packet_scope(), lifetime)); + } opt_offset += 4; while(opt_offset < (offset + opt_len) ) { @@ -2903,6 +2915,8 @@ dissect_icmpv6_rpl_opt(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree guint8 prefix_len; ws_in6_addr prefix; address prefix_addr; + uint32_t lifetime; + static int * const rpl_flags[] = { &hf_icmpv6_rpl_opt_route_pref, &hf_icmpv6_rpl_opt_route_reserved, @@ -2920,7 +2934,10 @@ dissect_icmpv6_rpl_opt(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree opt_offset +=1; /* Prefix lifetime. */ - proto_tree_add_item(icmp6opt_tree, hf_icmpv6_rpl_opt_route_lifetime, tvb, opt_offset, 4, ENC_BIG_ENDIAN); + ti_opt = proto_tree_add_item_ret_uint(icmp6opt_tree, hf_icmpv6_rpl_opt_route_lifetime, tvb, opt_offset, 4, ENC_BIG_ENDIAN, &lifetime); + if (lifetime != LIFETIME_INFINITY) { + proto_item_append_text(ti_opt, " (%s)", unsigned_time_secs_to_str(wmem_packet_scope(), lifetime)); + } opt_offset += 4; switch(opt_len){ @@ -3128,12 +3145,16 @@ dissect_icmpv6_rpl_opt(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree /* Valid Lifetime */ ti_opt = proto_tree_add_item_ret_uint(icmp6opt_tree, hf_icmpv6_rpl_opt_prefix_vlifetime, tvb, opt_offset, 4, ENC_BIG_ENDIAN, &lifetime); - proto_item_append_text(ti_opt, " (%s)", unsigned_time_secs_to_str(wmem_packet_scope(), lifetime)); + if (lifetime != LIFETIME_INFINITY) { + proto_item_append_text(ti_opt, " (%s)", unsigned_time_secs_to_str(wmem_packet_scope(), lifetime)); + } opt_offset += 4; /* Preferred Lifetime */ ti_opt = proto_tree_add_item_ret_uint(icmp6opt_tree, hf_icmpv6_rpl_opt_prefix_plifetime, tvb, opt_offset, 4, ENC_BIG_ENDIAN, &lifetime); - proto_item_append_text(ti_opt, " (%s)", unsigned_time_secs_to_str(wmem_packet_scope(), lifetime)); + if (lifetime != LIFETIME_INFINITY) { + proto_item_append_text(ti_opt, " (%s)", unsigned_time_secs_to_str(wmem_packet_scope(), lifetime)); + } opt_offset += 4; /* 4 reserved bytes. */ @@ -3852,12 +3873,16 @@ dissect_rrenum(tvbuff_t *tvb, int rr_offset, packet_info *pinfo _U_, proto_tree /* Valid Lifetime */ ti = proto_tree_add_item_ret_uint(up_tree, hf_icmpv6_rr_pco_up_validlifetime, tvb, rr_offset, 4, ENC_BIG_ENDIAN, &lifetime); - proto_item_append_text(ti, " (%s)", unsigned_time_secs_to_str(wmem_packet_scope(), lifetime)); + if (lifetime != LIFETIME_INFINITY) { + proto_item_append_text(ti, " (%s)", unsigned_time_secs_to_str(wmem_packet_scope(), lifetime)); + } rr_offset += 4; /* Preferred Lifetime */ ti = proto_tree_add_item_ret_uint(up_tree, hf_icmpv6_rr_pco_up_preferredlifetime, tvb, rr_offset, 4, ENC_BIG_ENDIAN, &lifetime); - proto_item_append_text(ti, " (%s)", unsigned_time_secs_to_str(wmem_packet_scope(), lifetime)); + if (lifetime != LIFETIME_INFINITY) { + proto_item_append_text(ti, " (%s)", unsigned_time_secs_to_str(wmem_packet_scope(), lifetime)); + } rr_offset += 4; /* Flags */ diff --git a/epan/dissectors/packet-ieee1905.c b/epan/dissectors/packet-ieee1905.c index e26da6f3..2c98c4de 100644 --- a/epan/dissectors/packet-ieee1905.c +++ b/epan/dissectors/packet-ieee1905.c @@ -3280,26 +3280,26 @@ static const value_string max_he_mcs_8_ss_vals[] = { }; static int * const rx_he_mcs_map_headers[] = { - &hf_ieee1905_ap_he_rx_mcs_map_1ss, - &hf_ieee1905_ap_he_rx_mcs_map_2ss, - &hf_ieee1905_ap_he_rx_mcs_map_3ss, - &hf_ieee1905_ap_he_rx_mcs_map_4ss, - &hf_ieee1905_ap_he_rx_mcs_map_5ss, - &hf_ieee1905_ap_he_rx_mcs_map_6ss, - &hf_ieee1905_ap_he_rx_mcs_map_7ss, &hf_ieee1905_ap_he_rx_mcs_map_8ss, + &hf_ieee1905_ap_he_rx_mcs_map_7ss, + &hf_ieee1905_ap_he_rx_mcs_map_6ss, + &hf_ieee1905_ap_he_rx_mcs_map_5ss, + &hf_ieee1905_ap_he_rx_mcs_map_4ss, + &hf_ieee1905_ap_he_rx_mcs_map_3ss, + &hf_ieee1905_ap_he_rx_mcs_map_2ss, + &hf_ieee1905_ap_he_rx_mcs_map_1ss, NULL }; static int * const tx_he_mcs_map_headers[] = { - &hf_ieee1905_ap_he_tx_mcs_map_1ss, - &hf_ieee1905_ap_he_tx_mcs_map_2ss, - &hf_ieee1905_ap_he_tx_mcs_map_3ss, - &hf_ieee1905_ap_he_tx_mcs_map_4ss, - &hf_ieee1905_ap_he_tx_mcs_map_5ss, - &hf_ieee1905_ap_he_tx_mcs_map_6ss, - &hf_ieee1905_ap_he_tx_mcs_map_7ss, &hf_ieee1905_ap_he_tx_mcs_map_8ss, + &hf_ieee1905_ap_he_tx_mcs_map_7ss, + &hf_ieee1905_ap_he_tx_mcs_map_6ss, + &hf_ieee1905_ap_he_tx_mcs_map_5ss, + &hf_ieee1905_ap_he_tx_mcs_map_4ss, + &hf_ieee1905_ap_he_tx_mcs_map_3ss, + &hf_ieee1905_ap_he_tx_mcs_map_2ss, + &hf_ieee1905_ap_he_tx_mcs_map_1ss, NULL }; @@ -9589,49 +9589,49 @@ proto_register_ieee1905(void) { "Max Tx HE-MCS for 1 SS", "ieee1905.ap_he_capability.max_tx_he_mcs_1_ss", FT_UINT16, BASE_DEC, VALS(max_he_mcs_1_ss_vals), - 0xC000, NULL, HFILL }}, + 0x0003, NULL, HFILL }}, { &hf_ieee1905_ap_he_tx_mcs_map_2ss, { "Max Tx HE-MCS for 2 SS", "ieee1905.ap_he_capability.max_tx_he_mcs_2_ss", FT_UINT16, BASE_DEC, VALS(max_he_mcs_2_ss_vals), - 0x3000, NULL, HFILL }}, + 0x000C, NULL, HFILL }}, { &hf_ieee1905_ap_he_tx_mcs_map_3ss, { "Max Tx HE-MCS for 3 SS", "ieee1905.ap_he_capability.max_tx_he_mcs_3_ss", FT_UINT16, BASE_DEC, VALS(max_he_mcs_3_ss_vals), - 0x0C00, NULL, HFILL }}, + 0x0030, NULL, HFILL }}, { &hf_ieee1905_ap_he_tx_mcs_map_4ss, { "Max Tx HE-MCS for 4 SS", "ieee1905.ap_he_capability.max_tx_he_mcs_4_ss", FT_UINT16, BASE_DEC, VALS(max_he_mcs_4_ss_vals), - 0x0300, NULL, HFILL }}, + 0x00C0, NULL, HFILL }}, { &hf_ieee1905_ap_he_tx_mcs_map_5ss, { "Max Tx HE-MCS for 5 SS", "ieee1905.ap_he_capability.max_tx_he_mcs_5_ss", FT_UINT16, BASE_DEC, VALS(max_he_mcs_5_ss_vals), - 0x00C0, NULL, HFILL }}, + 0x0300, NULL, HFILL }}, { &hf_ieee1905_ap_he_tx_mcs_map_6ss, { "Max Tx HE-MCS for 6 SS", "ieee1905.ap_he_capability.max_tx_he_mcs_6_ss", FT_UINT16, BASE_DEC, VALS(max_he_mcs_6_ss_vals), - 0x0030, NULL, HFILL }}, + 0x0C00, NULL, HFILL }}, { &hf_ieee1905_ap_he_tx_mcs_map_7ss, { "Max Tx HE-MCS for 7 SS", "ieee1905.ap_he_capability.max_tx_he_mcs_7_ss", FT_UINT16, BASE_DEC, VALS(max_he_mcs_7_ss_vals), - 0x000C, NULL, HFILL }}, + 0x3000, NULL, HFILL }}, { &hf_ieee1905_ap_he_tx_mcs_map_8ss, { "Max Tx HE-MCS for 8 SS", "ieee1905.ap_he_capability.max_tx_he_mcs_8_ss", FT_UINT16, BASE_DEC, VALS(max_he_mcs_8_ss_vals), - 0x0003, NULL, HFILL }}, + 0xC000, NULL, HFILL }}, { &hf_ieee1905_ap_he_cap_rx_mcs_le_80_mhz, { "Supported Rx HE-MCS <= 80 MHz", @@ -9642,49 +9642,49 @@ proto_register_ieee1905(void) { "Max Rx HE-MCS for 1 SS", "ieee1905.ap_he_capability.max_rx_he_mcs_1_ss", FT_UINT16, BASE_DEC, VALS(max_he_mcs_1_ss_vals), - 0xC000, NULL, HFILL }}, + 0x0003, NULL, HFILL }}, { &hf_ieee1905_ap_he_rx_mcs_map_2ss, { "Max Rx HE-MCS for 2 SS", "ieee1905.ap_he_capability.max_rx_he_mcs_2_ss", FT_UINT16, BASE_DEC, VALS(max_he_mcs_2_ss_vals), - 0x3000, NULL, HFILL }}, + 0x000C, NULL, HFILL }}, { &hf_ieee1905_ap_he_rx_mcs_map_3ss, { "Max Rx HE-MCS for 3 SS", "ieee1905.ap_he_capability.max_rx_he_mcs_3_ss", FT_UINT16, BASE_DEC, VALS(max_he_mcs_3_ss_vals), - 0x0C00, NULL, HFILL }}, + 0x0030, NULL, HFILL }}, { &hf_ieee1905_ap_he_rx_mcs_map_4ss, { "Max Rx HE-MCS for 4 SS", "ieee1905.ap_he_capability.max_rx_he_mcs_4_ss", FT_UINT16, BASE_DEC, VALS(max_he_mcs_4_ss_vals), - 0x0300, NULL, HFILL }}, + 0x00C0, NULL, HFILL }}, { &hf_ieee1905_ap_he_rx_mcs_map_5ss, { "Max Rx HE-MCS for 5 SS", "ieee1905.ap_he_capability.max_rx_he_mcs_5_ss", FT_UINT16, BASE_DEC, VALS(max_he_mcs_5_ss_vals), - 0x00C0, NULL, HFILL }}, + 0x0300, NULL, HFILL }}, { &hf_ieee1905_ap_he_rx_mcs_map_6ss, { "Max Rx HE-MCS for 6 SS", "ieee1905.ap_he_capability.max_rx_he_mcs_6_ss", FT_UINT16, BASE_DEC, VALS(max_he_mcs_6_ss_vals), - 0x0030, NULL, HFILL }}, + 0x0C00, NULL, HFILL }}, { &hf_ieee1905_ap_he_rx_mcs_map_7ss, { "Max Rx HE-MCS for 7 SS", "ieee1905.ap_he_capability.max_rx_he_mcs_7_ss", FT_UINT16, BASE_DEC, VALS(max_he_mcs_7_ss_vals), - 0x000C, NULL, HFILL }}, + 0x3000, NULL, HFILL }}, { &hf_ieee1905_ap_he_rx_mcs_map_8ss, { "Max Rx HE-MCS for 8 SS", "ieee1905.ap_he_capability.max_rx_he_mcs_8_ss", FT_UINT16, BASE_DEC, VALS(max_he_mcs_8_ss_vals), - 0x0003, NULL, HFILL }}, + 0xC000, NULL, HFILL }}, { &hf_ieee1905_ap_he_cap_tx_mcs_160_mhz, { "Supported Tx HE-MCS 160 MHz", diff --git a/epan/dissectors/packet-ieee80211.c b/epan/dissectors/packet-ieee80211.c index 15e43f8e..67d4be52 100644 --- a/epan/dissectors/packet-ieee80211.c +++ b/epan/dissectors/packet-ieee80211.c @@ -49971,11 +49971,11 @@ proto_register_ieee80211(void) NULL, HFILL }}, {&hf_ieee80211_vht_mcsset_extended_nss_bw_capable, - {"Extended NSS BW Capable", "wlan.vht.ncsset.ext_nss_bw_cap", + {"VHT Extended NSS BW Capable", "wlan.vht.mcsset.vht_ext_nss_bw_capable", FT_BOOLEAN, 16, TFS(&tfs_capable_not_capable), 0x2000, NULL, HFILL }}, {&hf_ieee80211_vht_mcsset_reserved, - {"Reserved", "wlan.vht.ncsset.reserved", + {"Reserved", "wlan.vht.mcsset.reserved", FT_UINT16, BASE_HEX, NULL, 0xc000, NULL, HFILL }}, {&hf_ieee80211_vht_op, @@ -51071,12 +51071,12 @@ proto_register_ieee80211(void) "(not interpreted)", HFILL }}, {&hf_ieee80211_tag_measure_report_measurement_token, - {"Measurement Token", "wlan.measure.req.token", + {"Measurement Token", "wlan.measure.rep.token", FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, {&hf_ieee80211_tag_measure_report_mode, - {"Measurement Report Mode", "wlan.measure.req.mode", + {"Measurement Report Mode", "wlan.measure.rep.mode", FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, @@ -51341,12 +51341,12 @@ proto_register_ieee80211(void) NULL, HFILL }}, {&hf_ieee80211_tag_measure_report_subelement_length, - {"Length", "wlan.measure.req.sub.length", + {"Length", "wlan.measure.rep.sub.length", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, {&hf_ieee80211_tag_measure_report_beacon_sub_id, - {"SubElement ID", "wlan.measure.req.beacon.sub.id", + {"SubElement ID", "wlan.measure.rep.beacon.sub.id", FT_UINT8, BASE_DEC, VALS(ieee80211_tag_measure_report_beacon_sub_id_vals), 0, NULL, HFILL }}, diff --git a/epan/dissectors/packet-ipars.c b/epan/dissectors/packet-ipars.c index 4b3a4bbd..3115ec0a 100644 --- a/epan/dissectors/packet-ipars.c +++ b/epan/dissectors/packet-ipars.c @@ -31,7 +31,7 @@ static gint ett_ipars = -1; #define EOMu (0x12) #define EOMi (0x13) -#define MAX_EOM_MSG_SIZE (16) /* max size of an EOMx indicator string */ +#define MAX_EOM_MSG_SIZE (24) /* max size of an EOMx indicator string */ static int dissect_ipars(tvbuff_t *tvb, packet_info *pinfo _U_ , proto_tree *tree, void* data _U_) diff --git a/epan/dissectors/packet-json_3gpp.c b/epan/dissectors/packet-json_3gpp.c index 8cb4cadb..d44f9198 100644 --- a/epan/dissectors/packet-json_3gpp.c +++ b/epan/dissectors/packet-json_3gpp.c @@ -30,11 +30,14 @@ #include "packet-gtpv2.h" #include "packet-gsm_a_common.h" #include "packet-json.h" +#include "packet-http.h" #include "packet-http2.h" void proto_register_json_3gpp(void); +void proto_reg_handoff_json_3gpp(void); static int proto_json_3gpp = -1; +static int proto_http = -1; static gint ett_json_base64decoded_eps_ie = -1; static gint ett_json_base64decoded_nas5g_ie = -1; @@ -237,7 +240,7 @@ dissect_base64decoded_nas5g_ie(tvbuff_t* tvb, proto_tree* tree, packet_info* pin static void dissect_3gpp_supportfeatures(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo, int offset, int len, const char* key_str _U_, gboolean use_compact) { - const char *path; + const char *path = NULL; /* TS 29.571 ch5.2.2 * A string used to indicate the features supported by an API that is used as defined in clause 6.6 in 3GPP TS 29.500 [25]. @@ -252,9 +255,20 @@ dissect_3gpp_supportfeatures(tvbuff_t* tvb, proto_tree* tree, packet_info* pinfo */ /* Exptect to have :path from HTTP2 here, if not return */ - path = http2_get_header_value(pinfo, HTTP2_HEADER_PATH, FALSE); - if (!path) { - path = http2_get_header_value(pinfo, HTTP2_HEADER_PATH, TRUE); + if (proto_is_frame_protocol(pinfo->layers, "http2")) { + path = http2_get_header_value(pinfo, HTTP2_HEADER_PATH, FALSE); + if (!path) { + path = http2_get_header_value(pinfo, HTTP2_HEADER_PATH, TRUE); + } + } else if (proto_is_frame_protocol(pinfo->layers, "http")) { + /* 3GPP TS 29.500 says the service based interfaces use HTTP/2, + * but that doesn't stop implementations like OAI from using + * HTTP/1.1 with a 2.0 version string. + */ + http_req_res_t* curr_req_res = (http_req_res_t*)p_get_proto_data(wmem_file_scope(), pinfo, proto_http, 0); + if (curr_req_res) { + path = curr_req_res->request_uri; + } } if (!path) { return; @@ -1287,6 +1301,12 @@ proto_register_json_3gpp(void) register_static_headers(); } +void +proto_reg_handoff_json_3gpp(void) +{ + proto_http = proto_get_id_by_filter_name("http"); +} + /* * Editor modelines - https://www.wireshark.org/tools/modelines.html * diff --git a/epan/dissectors/packet-lapd.c b/epan/dissectors/packet-lapd.c index fcae4e19..cea2b3e6 100644 --- a/epan/dissectors/packet-lapd.c +++ b/epan/dissectors/packet-lapd.c @@ -567,10 +567,10 @@ dissect_lapd_full(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint32 f } } } - set_address(&pinfo->dst, AT_STRINGZ, (int)strlen(dstname) + 1, dstname); - set_address(&pinfo->src, AT_STRINGZ, (int)strlen(dstname) + 1, dstname); - col_set_str(pinfo->cinfo, COL_RES_DL_SRC, srcname); - col_set_str(pinfo->cinfo, COL_RES_DL_DST, dstname); + set_address(&pinfo->dl_dst, AT_STRINGZ, (int)strlen(dstname) + 1, dstname); + set_address(&pinfo->dl_src, AT_STRINGZ, (int)strlen(srcname) + 1, srcname); + copy_address_shallow(&pinfo->dst, &pinfo->dl_dst); + copy_address_shallow(&pinfo->src, &pinfo->dl_src); if (tree) { proto_item *direction_ti; diff --git a/epan/dissectors/packet-lldp.c b/epan/dissectors/packet-lldp.c index d70c379d..307a1d3f 100644 --- a/epan/dissectors/packet-lldp.c +++ b/epan/dissectors/packet-lldp.c @@ -1974,9 +1974,9 @@ dissect_lldp_system_capabilities(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tr proto_tree_add_item(capabilities_enabled_tree, hf_lldp_tlv_enable_system_cap_telephone, tvb, offset, 2, ENC_BIG_ENDIAN); proto_tree_add_item(capabilities_enabled_tree, hf_lldp_tlv_enable_system_cap_docsis_cable_device, tvb, offset, 2, ENC_BIG_ENDIAN); proto_tree_add_item(capabilities_enabled_tree, hf_lldp_tlv_enable_system_cap_station_only, tvb, offset, 2, ENC_BIG_ENDIAN); - proto_tree_add_item(capabilities_summary_tree, hf_lldp_tlv_enable_system_cap_cvlan_component, tvb, offset, 2, ENC_BIG_ENDIAN); - proto_tree_add_item(capabilities_summary_tree, hf_lldp_tlv_enable_system_cap_svlan_component, tvb, offset, 2, ENC_BIG_ENDIAN); - proto_tree_add_item(capabilities_summary_tree, hf_lldp_tlv_enable_system_cap_tpmr_component, tvb, offset, 2, ENC_BIG_ENDIAN); + proto_tree_add_item(capabilities_enabled_tree, hf_lldp_tlv_enable_system_cap_cvlan_component, tvb, offset, 2, ENC_BIG_ENDIAN); + proto_tree_add_item(capabilities_enabled_tree, hf_lldp_tlv_enable_system_cap_svlan_component, tvb, offset, 2, ENC_BIG_ENDIAN); + proto_tree_add_item(capabilities_enabled_tree, hf_lldp_tlv_enable_system_cap_tpmr_component, tvb, offset, 2, ENC_BIG_ENDIAN); offset += 2; diff --git a/epan/dissectors/packet-mongo.c b/epan/dissectors/packet-mongo.c index db23a063..346b1324 100644 --- a/epan/dissectors/packet-mongo.c +++ b/epan/dissectors/packet-mongo.c @@ -831,7 +831,10 @@ dissect_op_msg_section(tvbuff_t *tvb, packet_info *pinfo, guint offset, proto_tr switch (e_type) { case KIND_BODY: - dissect_bson_document(tvb, pinfo, offset, section_tree, hf_mongo_msg_sections_section_body); + section_len = dissect_bson_document(tvb, pinfo, offset, section_tree, hf_mongo_msg_sections_section_body); + /* If section_len is bogus (e.g., negative), dissect_bson_document sets + * an expert info and can return a different value than read above. + */ break; case KIND_DOCUMENT_SEQUENCE: { gint32 dsi_length; @@ -840,6 +843,9 @@ dissect_op_msg_section(tvbuff_t *tvb, packet_info *pinfo, guint offset, proto_tr proto_tree *documents_tree; proto_tree_add_item(section_tree, hf_mongo_msg_sections_section_size, tvb, offset, 4, ENC_LITTLE_ENDIAN); + /* This is redundant with the lengths in the documents, we don't use this + * size at all. We could still report an expert info if it's bogus. + */ offset += 4; to_read -= 4; diff --git a/epan/dissectors/packet-nas_5gs.c b/epan/dissectors/packet-nas_5gs.c index 915ae1c0..26bb927f 100644 --- a/epan/dissectors/packet-nas_5gs.c +++ b/epan/dissectors/packet-nas_5gs.c @@ -849,6 +849,7 @@ static const value_string nas_5gs_epd_vals[] = { }; struct nas5gs_private_data { + guint8 sec_hdr_type; guint32 payload_container_type; }; @@ -2580,9 +2581,14 @@ de_nas_5gs_mm_nas_msg_cont(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, gchar *add_string _U_, int string_len _U_) { /* The purpose of the NAS message container IE is to encapsulate a plain 5GS NAS message. */ - /* a NAS message without NAS security heade */ + /* a NAS message without NAS security header */ + struct nas5gs_private_data *nas5gs_data = nas5gs_get_private_data(pinfo); - dissect_nas_5gs(tvb_new_subset_length(tvb, offset, len), pinfo, tree, NULL); + if (nas5gs_data->sec_hdr_type == NAS_5GS_PLAIN_NAS_MSG || g_nas_5gs_null_decipher) { + dissect_nas_5gs(tvb_new_subset_length(tvb, offset, len), pinfo, tree, NULL); + } else { + proto_tree_add_subtree(tree, tvb, offset, len, ett_nas_5gs_enc, NULL, "Encrypted data"); + } return len; } @@ -10292,7 +10298,8 @@ dissect_nas_5gs(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data) proto_item *item; proto_tree *nas_5gs_tree, *sub_tree; int offset = 0; - guint8 seq_hdr_type, ext_pd; + guint8 sec_hdr_type, ext_pd; + struct nas5gs_private_data *nas5gs_data = nas5gs_get_private_data(pinfo); /* make entry in the Protocol column on summary display */ col_append_sep_str(pinfo->cinfo, COL_PROTOCOL, "/", "NAS-5GS"); @@ -10308,8 +10315,9 @@ dissect_nas_5gs(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data) /* Security header type associated with a spare half octet; or * PDU session identity octet 2 */ /* Determine if it's a plain 5GS NAS Message or not */ - seq_hdr_type = tvb_get_guint8(tvb, offset + 1); - if (seq_hdr_type == NAS_5GS_PLAIN_NAS_MSG) { + sec_hdr_type = tvb_get_guint8(tvb, offset + 1); + nas5gs_data->sec_hdr_type = sec_hdr_type; + if (sec_hdr_type == NAS_5GS_PLAIN_NAS_MSG) { return dissect_nas_5gs_common(tvb, pinfo, nas_5gs_tree, offset, data); } /* Security protected NAS 5GS message*/ @@ -10329,7 +10337,7 @@ dissect_nas_5gs(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data) proto_tree_add_item(sub_tree, hf_nas_5gs_seq_no, tvb, offset, 1, ENC_BIG_ENDIAN); offset++; - if ((seq_hdr_type != NAS_5GS_INTEG_CIPH_NAS_MSG && seq_hdr_type != NAS_5GS_INTEG_CIPH_NEW_NAS_MSG) || + if ((sec_hdr_type != NAS_5GS_INTEG_CIPH_NAS_MSG && sec_hdr_type != NAS_5GS_INTEG_CIPH_NEW_NAS_MSG) || g_nas_5gs_null_decipher) { return dissect_nas_5gs_common(tvb, pinfo, nas_5gs_tree, offset, data); } else { diff --git a/epan/dissectors/packet-nr-rrc.c b/epan/dissectors/packet-nr-rrc.c index 1086fac9..6f2eb414 100644 --- a/epan/dissectors/packet-nr-rrc.c +++ b/epan/dissectors/packet-nr-rrc.c @@ -22803,7 +22803,7 @@ static int dissect_nr_rrc_SIB2(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { proto_item *prot_ti = proto_tree_add_item(tree, proto_nr_rrc, tvb, 0, -1, ENC_NA); proto_item_set_hidden(prot_ti); - col_append_str(actx->pinfo->cinfo, COL_INFO, " SIB2"); + col_append_str(actx->pinfo->cinfo, COL_INFO, "SIB2 "); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_nr_rrc_SIB2, SIB2_sequence); @@ -23111,7 +23111,7 @@ static int dissect_nr_rrc_SIB3(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { proto_item *prot_ti = proto_tree_add_item(tree, proto_nr_rrc, tvb, 0, -1, ENC_NA); proto_item_set_hidden(prot_ti); - col_append_str(actx->pinfo->cinfo, COL_INFO, " SIB3"); + col_append_str(actx->pinfo->cinfo, COL_INFO, "SIB3 "); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_nr_rrc_SIB3, SIB3_sequence); @@ -23576,7 +23576,7 @@ static int dissect_nr_rrc_SIB4(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { proto_item *prot_ti = proto_tree_add_item(tree, proto_nr_rrc, tvb, 0, -1, ENC_NA); proto_item_set_hidden(prot_ti); - col_append_str(actx->pinfo->cinfo, COL_INFO, " SIB4"); + col_append_str(actx->pinfo->cinfo, COL_INFO, "SIB4 "); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_nr_rrc_SIB4, SIB4_sequence); @@ -24046,7 +24046,7 @@ static int dissect_nr_rrc_SIB5(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { proto_item *prot_ti = proto_tree_add_item(tree, proto_nr_rrc, tvb, 0, -1, ENC_NA); proto_item_set_hidden(prot_ti); - col_append_str(actx->pinfo->cinfo, COL_INFO, " SIB5"); + col_append_str(actx->pinfo->cinfo, COL_INFO, "SIB5 "); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_nr_rrc_SIB5, SIB5_sequence); @@ -24126,7 +24126,7 @@ static int dissect_nr_rrc_SIB6(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { proto_item *prot_ti = proto_tree_add_item(tree, proto_nr_rrc, tvb, 0, -1, ENC_NA); proto_item_set_hidden(prot_ti); - col_append_str(actx->pinfo->cinfo, COL_INFO, " SIB6"); + col_append_str(actx->pinfo->cinfo, COL_INFO, "SIB6 "); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_nr_rrc_SIB6, SIB6_sequence); @@ -24283,7 +24283,7 @@ static int dissect_nr_rrc_SIB7(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { proto_item *prot_ti = proto_tree_add_item(tree, proto_nr_rrc, tvb, 0, -1, ENC_NA); proto_item_set_hidden(prot_ti); - col_append_str(actx->pinfo->cinfo, COL_INFO, " SIB7"); + col_append_str(actx->pinfo->cinfo, COL_INFO, "SIB7 "); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_nr_rrc_SIB7, SIB7_sequence); @@ -24441,7 +24441,7 @@ static int dissect_nr_rrc_SIB8(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { proto_item *prot_ti = proto_tree_add_item(tree, proto_nr_rrc, tvb, 0, -1, ENC_NA); proto_item_set_hidden(prot_ti); - col_append_str(actx->pinfo->cinfo, COL_INFO, " SIB8"); + col_append_str(actx->pinfo->cinfo, COL_INFO, "SIB8 "); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_nr_rrc_SIB8, SIB8_sequence); @@ -24650,7 +24650,7 @@ static int dissect_nr_rrc_SIB9(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { proto_item *prot_ti = proto_tree_add_item(tree, proto_nr_rrc, tvb, 0, -1, ENC_NA); proto_item_set_hidden(prot_ti); - col_append_str(actx->pinfo->cinfo, COL_INFO, " SIB9"); + col_append_str(actx->pinfo->cinfo, COL_INFO, "SIB9 "); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_nr_rrc_SIB9, SIB9_sequence); @@ -24705,7 +24705,7 @@ static const per_sequence_t SIB10_r16_sequence[] = { static int dissect_nr_rrc_SIB10_r16(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - col_append_str(actx->pinfo->cinfo, COL_INFO, " SIB10"); + col_append_str(actx->pinfo->cinfo, COL_INFO, "SIB10 "); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_nr_rrc_SIB10_r16, SIB10_r16_sequence); @@ -24968,7 +24968,7 @@ static const per_sequence_t SIB11_r16_sequence[] = { static int dissect_nr_rrc_SIB11_r16(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - col_append_str(actx->pinfo->cinfo, COL_INFO, " SIB11"); + col_append_str(actx->pinfo->cinfo, COL_INFO, "SIB11"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_nr_rrc_SIB11_r16, SIB11_r16_sequence); @@ -25002,7 +25002,7 @@ static const per_sequence_t SIB12_r16_sequence[] = { static int dissect_nr_rrc_SIB12_r16(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - col_append_str(actx->pinfo->cinfo, COL_INFO, " SIB12"); + col_append_str(actx->pinfo->cinfo, COL_INFO, "SIB12 "); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_nr_rrc_SIB12_r16, SIB12_r16_sequence); @@ -25057,7 +25057,7 @@ static const per_sequence_t SIB13_r16_sequence[] = { static int dissect_nr_rrc_SIB13_r16(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - col_append_str(actx->pinfo->cinfo, COL_INFO, " SIB13"); + col_append_str(actx->pinfo->cinfo, COL_INFO, "SIB13 "); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_nr_rrc_SIB13_r16, SIB13_r16_sequence); @@ -25074,7 +25074,7 @@ static const per_sequence_t SIB14_r16_sequence[] = { static int dissect_nr_rrc_SIB14_r16(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - col_append_str(actx->pinfo->cinfo, COL_INFO, " SIB14"); + col_append_str(actx->pinfo->cinfo, COL_INFO, "SIB14 "); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_nr_rrc_SIB14_r16, SIB14_r16_sequence); @@ -25132,7 +25132,7 @@ static const per_sequence_t SIB15_r17_sequence[] = { static int dissect_nr_rrc_SIB15_r17(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - col_append_str(actx->pinfo->cinfo, COL_INFO, " SIB15"); + col_append_str(actx->pinfo->cinfo, COL_INFO, "SIB15 "); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_nr_rrc_SIB15_r17, SIB15_r17_sequence); @@ -25280,7 +25280,7 @@ static const per_sequence_t SIB16_r17_sequence[] = { static int dissect_nr_rrc_SIB16_r17(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - col_append_str(actx->pinfo->cinfo, COL_INFO, " SIB16"); + col_append_str(actx->pinfo->cinfo, COL_INFO, "SIB16 "); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_nr_rrc_SIB16_r17, SIB16_r17_sequence); @@ -25314,7 +25314,7 @@ static const per_sequence_t SIB17_r17_sequence[] = { static int dissect_nr_rrc_SIB17_r17(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - col_append_str(actx->pinfo->cinfo, COL_INFO, " SIB17"); + col_append_str(actx->pinfo->cinfo, COL_INFO, "SIB17 "); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_nr_rrc_SIB17_r17, SIB17_r17_sequence); @@ -25413,7 +25413,7 @@ static const per_sequence_t SIB18_r17_sequence[] = { static int dissect_nr_rrc_SIB18_r17(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - col_append_str(actx->pinfo->cinfo, COL_INFO, " SIB18"); + col_append_str(actx->pinfo->cinfo, COL_INFO, "SIB18 "); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_nr_rrc_SIB18_r17, SIB18_r17_sequence); @@ -25780,7 +25780,7 @@ static const per_sequence_t SIB19_r17_sequence[] = { static int dissect_nr_rrc_SIB19_r17(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - col_append_str(actx->pinfo->cinfo, COL_INFO, " SIB19"); + col_append_str(actx->pinfo->cinfo, COL_INFO, "SIB19 "); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_nr_rrc_SIB19_r17, SIB19_r17_sequence); @@ -26929,7 +26929,7 @@ static const per_sequence_t SIB20_r17_sequence[] = { static int dissect_nr_rrc_SIB20_r17(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - col_append_str(actx->pinfo->cinfo, COL_INFO, " SIB20"); + col_append_str(actx->pinfo->cinfo, COL_INFO, "SIB20 "); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_nr_rrc_SIB20_r17, SIB20_r17_sequence); @@ -27000,7 +27000,7 @@ static const per_sequence_t SIB21_r17_sequence[] = { static int dissect_nr_rrc_SIB21_r17(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - col_append_str(actx->pinfo->cinfo, COL_INFO, " SIB21"); + col_append_str(actx->pinfo->cinfo, COL_INFO, "SIB21 "); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_nr_rrc_SIB21_r17, SIB21_r17_sequence); @@ -27843,12 +27843,12 @@ static const per_sequence_t SystemInformation_sequence[] = { static int dissect_nr_rrc_SystemInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "System Information ["); + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "System Information [ "); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_nr_rrc_SystemInformation, SystemInformation_sequence); - col_append_str(actx->pinfo->cinfo, COL_INFO, " ]"); + col_append_str(actx->pinfo->cinfo, COL_INFO, "]"); return offset; } @@ -35379,7 +35379,7 @@ static int dissect_nr_rrc_SIB1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { proto_item *prot_ti = proto_tree_add_item(tree, proto_nr_rrc, tvb, 0, -1, ENC_NA); proto_item_set_hidden(prot_ti); - col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "SIB1"); + col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "SIB1 "); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_nr_rrc_SIB1, SIB1_sequence); @@ -175579,7 +175579,7 @@ proto_register_nr_rrc(void) { register_dissector("nr-rrc.measgapconfig_msg", dissect_nr_rrc_measgapconfig_msg, proto_nr_rrc); register_dissector("nr-rrc.handoverpreparationinformation_msg", dissect_nr_rrc_handoverpreparationinformation_msg, proto_nr_rrc); register_dissector("nr-rrc.handovercommand_msg", dissect_nr_rrc_handovercommand_msg, proto_nr_rrc); - + /*#include "packet-nr-rrc-dis-reg.c" */ register_dissector("nr-rrc.ue_radio_paging_info", dissect_nr_rrc_UERadioPagingInformation_PDU, proto_nr_rrc); register_dissector("nr-rrc.ue_radio_access_cap_info", dissect_UERadioAccessCapabilityInformation_PDU, proto_nr_rrc); register_dissector("nr-rrc.bcch.bch", dissect_BCCH_BCH_Message_PDU, proto_nr_rrc); @@ -175593,6 +175593,27 @@ proto_register_nr_rrc(void) { register_dissector("nr-rrc.ul.dcch", dissect_nr_rrc_UL_DCCH_Message_PDU, proto_nr_rrc); register_dissector("nr-rrc.rrc_reconf", dissect_nr_rrc_RRCReconfiguration_PDU, proto_nr_rrc); register_dissector("nr-rrc.rrc_reconf_compl", dissect_nr_rrc_RRCReconfigurationComplete_PDU, proto_nr_rrc); + register_dissector("nr-rrc.sib1", dissect_nr_rrc_SIB1_PDU, proto_nr_rrc); + register_dissector("nr-rrc.sib2", dissect_nr_rrc_SIB2_PDU, proto_nr_rrc); + register_dissector("nr-rrc.sib3", dissect_nr_rrc_SIB3_PDU, proto_nr_rrc); + register_dissector("nr-rrc.sib4", dissect_nr_rrc_SIB4_PDU, proto_nr_rrc); + register_dissector("nr-rrc.sib5", dissect_nr_rrc_SIB5_PDU, proto_nr_rrc); + register_dissector("nr-rrc.sib6", dissect_nr_rrc_SIB6_PDU, proto_nr_rrc); + register_dissector("nr-rrc.sib7", dissect_nr_rrc_SIB7_PDU, proto_nr_rrc); + register_dissector("nr-rrc.sib8", dissect_nr_rrc_SIB8_PDU, proto_nr_rrc); + register_dissector("nr-rrc.sib9", dissect_nr_rrc_SIB9_PDU, proto_nr_rrc); + register_dissector("nr-rrc.sib10", dissect_nr_rrc_SIB10_r16_PDU, proto_nr_rrc); + register_dissector("nr-rrc.sib11", dissect_nr_rrc_SIB11_r16_PDU, proto_nr_rrc); + register_dissector("nr-rrc.sib12", dissect_nr_rrc_SIB12_r16_PDU, proto_nr_rrc); + register_dissector("nr-rrc.sib13", dissect_nr_rrc_SIB13_r16_PDU, proto_nr_rrc); + register_dissector("nr-rrc.sib14", dissect_nr_rrc_SIB14_r16_PDU, proto_nr_rrc); + register_dissector("nr-rrc.sib15", dissect_nr_rrc_SIB15_r17_PDU, proto_nr_rrc); + register_dissector("nr-rrc.sib16", dissect_nr_rrc_SIB16_r17_PDU, proto_nr_rrc); + register_dissector("nr-rrc.sib17", dissect_nr_rrc_SIB17_r17_PDU, proto_nr_rrc); + register_dissector("nr-rrc.sib18", dissect_nr_rrc_SIB18_r17_PDU, proto_nr_rrc); + register_dissector("nr-rrc.sib21", dissect_nr_rrc_SIB19_r17_PDU, proto_nr_rrc); + register_dissector("nr-rrc.sib22", dissect_nr_rrc_SIB20_r17_PDU, proto_nr_rrc); + register_dissector("nr-rrc.sib23", dissect_nr_rrc_SIB21_r17_PDU, proto_nr_rrc); register_dissector("nr-rrc.ue_mrdc_cap", dissect_nr_rrc_UE_MRDC_Capability_PDU, proto_nr_rrc); register_dissector("nr-rrc.ue_nr_cap", dissect_nr_rrc_UE_NR_Capability_PDU, proto_nr_rrc); register_dissector("nr-rrc.sbcch.sl.bch", dissect_SBCCH_SL_BCH_Message_PDU, proto_nr_rrc); diff --git a/epan/dissectors/packet-per.c b/epan/dissectors/packet-per.c index 4a4ac7c8..1a0f3ee3 100644 --- a/epan/dissectors/packet-per.c +++ b/epan/dissectors/packet-per.c @@ -61,6 +61,8 @@ static int hf_per_internal_range = -1; static int hf_per_internal_num_bits = -1; static int hf_per_internal_min = -1; static int hf_per_internal_value = -1; +static int hf_per_internal_min_int = -1; +static int hf_per_internal_value_int = -1; static int hf_per_encoding_boiler_plate = -1; static gint ett_per_open_type = -1; @@ -1419,10 +1421,18 @@ DEBUG_ENTRY("dissect_per_constrained_integer"); if (display_internal_per_fields){ str = decode_bits_in_field(actx->pinfo->pool, (offset&0x07),num_bits,val,ENC_BIG_ENDIAN); - proto_tree_add_uint(tree, hf_per_internal_min, tvb, val_start,val_length, min); + if (FT_IS_INT(hfi->type)) { + proto_tree_add_int(tree, hf_per_internal_min_int, tvb, val_start, val_length, min); + } else { + proto_tree_add_uint(tree, hf_per_internal_min, tvb, val_start, val_length, min); + } proto_tree_add_uint64(tree, hf_per_internal_range, tvb, val_start, val_length, range); proto_tree_add_uint(tree, hf_per_internal_num_bits, tvb, val_start, val_length, num_bits); - proto_tree_add_uint64_format_value(tree, hf_per_internal_value, tvb, val_start, val_length, val+min, "%s decimal value: %u", str, val+min); + if (FT_IS_INT(hfi->type)) { + proto_tree_add_int64_format_value(tree, hf_per_internal_value_int, tvb, val_start, val_length, val + min, "%s decimal value: %i", str, val + min); + } else { + proto_tree_add_uint64_format_value(tree, hf_per_internal_value, tvb, val_start, val_length, val + min, "%s decimal value: %u", str, val + min); + } } /* The actual value */ val+=min; @@ -2927,6 +2937,14 @@ proto_register_per(void) { "Bits", "per.internal.value", FT_UINT64, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_per_internal_min_int, + { "Min", "per.internal.min_int", + FT_INT32, BASE_DEC, NULL, 0, + NULL, HFILL } }, + { &hf_per_internal_value_int, + { "Bits", "per.internal.value_int", + FT_INT64, BASE_DEC, NULL, 0, + NULL, HFILL } }, { &hf_per_encoding_boiler_plate, { "PER encoded protocol, to see PER internal fields set protocol PER preferences", "per.encoding_boiler_plate", FT_NONE, BASE_NONE, NULL, 0x0, diff --git a/epan/dissectors/packet-pfcp.c b/epan/dissectors/packet-pfcp.c index 6a57c584..6565bfb3 100644 --- a/epan/dissectors/packet-pfcp.c +++ b/epan/dissectors/packet-pfcp.c @@ -187,7 +187,18 @@ static int hf_pfcp_redirect_server_address = -1; static int hf_pfcp_other_redirect_server_addr_len = -1; static int hf_pfcp_other_redirect_server_address = -1; static int hf_pfcp_redirect_port = -1; -static int hf_pfcp_outer_hdr_desc = -1; +static int hf_pfcp_outer_hdr_desc_o5_b0_gtp_udp_ipv4 = -1; +static int hf_pfcp_outer_hdr_desc_o5_b1_gtp_udp_ipv6 = -1; +static int hf_pfcp_outer_hdr_desc_o5_b2_udp_ipv4 = -1; +static int hf_pfcp_outer_hdr_desc_o5_b3_udp_ipv6 = -1; +static int hf_pfcp_outer_hdr_desc_o5_b4_ipv4 = -1; +static int hf_pfcp_outer_hdr_desc_o5_b5_ipv6 = -1; +static int hf_pfcp_outer_hdr_desc_o5_b6_ctag = -1; +static int hf_pfcp_outer_hdr_desc_o5_b7_stag = -1; +static int hf_pfcp_outer_hdr_desc_o6_b0_n19 = -1; +static int hf_pfcp_outer_hdr_desc_o6_b1_n6 = -1; +static int hf_pfcp_outer_hdr_desc_o6_b2_ssm_cteid = -1; +static int hf_pfcp_outer_hdr_desc_o6_spare = -1; static int hf_pfcp_outer_hdr_creation_teid = -1; static int hf_pfcp_outer_hdr_creation_ipv4 = -1; static int hf_pfcp_outer_hdr_creation_ipv6 = -1; @@ -4472,41 +4483,38 @@ dissect_pfcp_linked_urr_id(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, /* * 8.2.56 Outer Header Creation */ - -static const value_string pfcp_outer_hdr_desc_vals[] = { - - { 0x0001, "GTP-U/UDP/IPv4 " }, - { 0x0002, "GTP-U/UDP/IPv6 " }, - { 0x0003, "GTP-U/UDP/IPv4/IPv6 " }, - { 0x0004, "UDP/IPv4 " }, - { 0x0008, "UDP/IPv6 " }, - { 0x000C, "UDP/IPv4/IPv6 " }, - { 0x0010, "IPv4 " }, - { 0x0020, "IPv6 " }, - { 0x0030, "IPv4/IPv6 " }, - { 0x0040, "C-TAG " }, - { 0x0080, "S-TAG " }, - { 0x0100, "N19 Indication " }, - { 0x0200, "N6 Indication " }, - { 0x0400, "Low Layer SSM and C-TEID " }, - { 0, NULL } -}; - static void dissect_pfcp_outer_header_creation(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_item *item _U_, guint16 length, guint8 message_type _U_, pfcp_session_args_t *args _U_) { int offset = 0; - guint32 value; + guint64 value; + + static int * const outer_hdr_desc[] = { + &hf_pfcp_outer_hdr_desc_o5_b7_stag, + &hf_pfcp_outer_hdr_desc_o5_b6_ctag, + &hf_pfcp_outer_hdr_desc_o5_b5_ipv6, + &hf_pfcp_outer_hdr_desc_o5_b4_ipv4, + &hf_pfcp_outer_hdr_desc_o5_b3_udp_ipv6, + &hf_pfcp_outer_hdr_desc_o5_b2_udp_ipv4, + &hf_pfcp_outer_hdr_desc_o5_b1_gtp_udp_ipv6, + &hf_pfcp_outer_hdr_desc_o5_b0_gtp_udp_ipv4, + &hf_pfcp_outer_hdr_desc_o6_spare, + &hf_pfcp_outer_hdr_desc_o6_b2_ssm_cteid, + &hf_pfcp_outer_hdr_desc_o6_b1_n6, + &hf_pfcp_outer_hdr_desc_o6_b0_n19, + NULL + }; - /* Octet 5 Outer Header Creation Description */ - proto_tree_add_item_ret_uint(tree, hf_pfcp_outer_hdr_desc, tvb, offset, 2, ENC_BIG_ENDIAN, &value); + /* Octet 5-6 Outer Header Creation Description */ + proto_tree_add_bitmask_list_ret_uint64(tree, tvb, offset, 2, outer_hdr_desc, ENC_BIG_ENDIAN, &value); offset += 2; + /* m to (m+3) TEID * The TEID field shall be present if the Outer Header Creation Description requests the creation of a GTP-U header. * Otherwise it shall not be present */ - if ((value & 0x000100) || (value & 0x000200)) { + if ((value & 0x0100) || (value & 0x0200)) { proto_tree_add_item(tree, hf_pfcp_outer_hdr_creation_teid, tvb, offset, 4, ENC_BIG_ENDIAN); offset += 4; } @@ -4515,7 +4523,7 @@ dissect_pfcp_outer_header_creation(tvbuff_t *tvb, packet_info *pinfo, proto_tree * p to (p+3) IPv4 * The IPv4 Address field shall be present if the Outer Header Creation Description requests the creation of a IPv4 header */ - if ((value & 0x000100) || (value & 0x000400) || (value & 0x001000)) { + if ((value & 0x0100) || (value & 0x0400) || (value & 0x1000)) { proto_tree_add_item(tree, hf_pfcp_outer_hdr_creation_ipv4, tvb, offset, 4, ENC_BIG_ENDIAN); offset += 4; } @@ -4524,7 +4532,7 @@ dissect_pfcp_outer_header_creation(tvbuff_t *tvb, packet_info *pinfo, proto_tree * q to (q+15) IPv6 * The IPv6 Address field shall be present if the Outer Header Creation Description requests the creation of a IPv6 header */ - if ((value & 0x000200) || (value & 0x000800) || (value & 0x002000)) { + if ((value & 0x0200) || (value & 0x0800) || (value & 0x2000)) { proto_tree_add_item(tree, hf_pfcp_outer_hdr_creation_ipv6, tvb, offset, 16, ENC_NA); offset += 16; } @@ -4533,7 +4541,7 @@ dissect_pfcp_outer_header_creation(tvbuff_t *tvb, packet_info *pinfo, proto_tree * r to (r+1) Port Number * The Port Number field shall be present if the Outer Header Creation Description requests the creation of a UDP/IP header */ - if ((value & 0x000400) || (value & 0x000800)) { + if ((value & 0x0400) || (value & 0x0800)) { proto_tree_add_item(tree, hf_pfcp_outer_hdr_creation_port, tvb, offset, 2, ENC_BIG_ENDIAN); offset += 2; } @@ -4542,7 +4550,7 @@ dissect_pfcp_outer_header_creation(tvbuff_t *tvb, packet_info *pinfo, proto_tree * t to (t+2) C-TAG * The C-TAG field shall be present if the Outer Header Creation Description requests the setting of the C-Tag in Ethernet packet */ - if (value & 0x004000) { + if (value & 0x4000) { offset = decode_pfcp_c_tag(tvb, pinfo, tree, item, offset); } @@ -4550,7 +4558,7 @@ dissect_pfcp_outer_header_creation(tvbuff_t *tvb, packet_info *pinfo, proto_tree * u to (u+2) S-TAG * The S-TAG field shall be present if the Outer Header Creation Description requests the setting of the S-Tag in Ethernet packet */ - if (value & 0x008000) { + if (value & 0x8000) { offset = decode_pfcp_s_tag(tvb, pinfo, tree, item, offset); } @@ -12606,9 +12614,64 @@ proto_register_pfcp(void) FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL } }, - { &hf_pfcp_outer_hdr_desc, - { "Outer Header Creation Description", "pfcp.outer_hdr_desc", - FT_UINT16, BASE_DEC, VALS(pfcp_outer_hdr_desc_vals), 0x0, + { &hf_pfcp_outer_hdr_desc_o5_b0_gtp_udp_ipv4, + { "GTP-U/UDP/IPv4", "pfcp.pfcp_outer_hdr_desc.gtpu_udp_ipv4", + FT_BOOLEAN, 16, NULL, 0x0100, + NULL, HFILL } + }, + { &hf_pfcp_outer_hdr_desc_o5_b1_gtp_udp_ipv6, + { "GTP-U/UDP/IPv6", "pfcp.pfcp_outer_hdr_desc.gtpu_udp_ipv6", + FT_BOOLEAN, 16, NULL, 0x0200, + NULL, HFILL } + }, + { &hf_pfcp_outer_hdr_desc_o5_b2_udp_ipv4, + { "UDP/IPv4", "pfcp.pfcp_outer_hdr_desc.udp_ipv4", + FT_BOOLEAN, 16, NULL, 0x0400, + NULL, HFILL } + }, + { &hf_pfcp_outer_hdr_desc_o5_b3_udp_ipv6, + { "UDP/IPv6", "pfcp.pfcp_outer_hdr_desc.udp_ipv6", + FT_BOOLEAN, 16, NULL, 0x0800, + NULL, HFILL } + }, + { &hf_pfcp_outer_hdr_desc_o5_b4_ipv4, + { "IPv4", "pfcp.pfcp_outer_hdr_desc.ipv4", + FT_BOOLEAN, 16, NULL, 0x1000, + NULL, HFILL } + }, + { &hf_pfcp_outer_hdr_desc_o5_b5_ipv6, + { "IPv6", "pfcp.pfcp_outer_hdr_desc.ipv6", + FT_BOOLEAN, 16, NULL, 0x2000, + NULL, HFILL } + }, + { &hf_pfcp_outer_hdr_desc_o5_b6_ctag, + { "C-TAG", "pfcp.pfcp_outer_hdr_desc.ctag", + FT_BOOLEAN, 16, NULL, 0x4000, + NULL, HFILL } + }, + { &hf_pfcp_outer_hdr_desc_o5_b7_stag, + { "S-TAG", "pfcp.pfcp_outer_hdr_desc.stag", + FT_BOOLEAN, 16, NULL, 0x8000, + NULL, HFILL } + }, + { &hf_pfcp_outer_hdr_desc_o6_b0_n19, + { "N19 Indication", "pfcp.pfcp_outer_hdr_desc.n19", + FT_BOOLEAN, 16, NULL, 0x0001, + NULL, HFILL } + }, + { &hf_pfcp_outer_hdr_desc_o6_b1_n6, + { "N6 Indication", "pfcp.pfcp_outer_hdr_desc.n6", + FT_BOOLEAN, 16, NULL, 0x0002, + NULL, HFILL } + }, + { &hf_pfcp_outer_hdr_desc_o6_b2_ssm_cteid, + { "Low Layer SSM and C-TEID", "pfcp.pfcp_outer_hdr_desc.ssm_cteid", + FT_BOOLEAN, 16, NULL, 0x0004, + NULL, HFILL } + }, + { &hf_pfcp_outer_hdr_desc_o6_spare, + { "Spare", "pfcp.pfcp_outer_hdr_desc.spare", + FT_UINT16, BASE_DEC, NULL, 0x00f8, NULL, HFILL } }, { &hf_pfcp_outer_hdr_creation_teid, diff --git a/epan/dissectors/packet-ptp.c b/epan/dissectors/packet-ptp.c index 09d499b8..c87fc521 100644 --- a/epan/dissectors/packet-ptp.c +++ b/epan/dissectors/packet-ptp.c @@ -3730,7 +3730,7 @@ dissect_ptp_v2(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gboolean ptp for(path_seq_total_length = 0; path_seq_total_length < tlv_length; path_seq_total_length+=8) { proto_tree_add_item(ptp_tlv_tree, hf_ptp_v2_an_tlv_pathsequence, tvb, - PTP_V2_AN_TLV_OFFSET + PTP_AS_AN_TLV_PATH_TRACE_OFFSET + path_seq_total_length, + PTP_V2_AN_TLV_OFFSET + tlv_total_length + PTP_AS_AN_TLV_PATH_TRACE_OFFSET + path_seq_total_length, 8, ENC_BIG_ENDIAN); } diff --git a/epan/dissectors/packet-quic.c b/epan/dissectors/packet-quic.c index a41ce9cc..cabc2c50 100644 --- a/epan/dissectors/packet-quic.c +++ b/epan/dissectors/packet-quic.c @@ -1257,6 +1257,14 @@ quic_connection_find(packet_info *pinfo, guint8 long_packet_type, // No match found, truncate DCID (not really needed, but this // ensures that debug prints clearly show that DCID is invalid). dcid->len = 0; + } else if (quic_connection_from_conv(pinfo) == NULL) { + // Connection information might not be attached to the conversation, + // because of connection migration. + conversation_t *conv = find_conversation_pinfo(pinfo, 0); + if (conv) { + // attach the connection information to the conversation. + conversation_add_proto_data(conv, proto_quic, conn); + } } } return conn; diff --git a/epan/dissectors/packet-ssh.c b/epan/dissectors/packet-ssh.c index 1b919590..4f2b0ff5 100644 --- a/epan/dissectors/packet-ssh.c +++ b/epan/dissectors/packet-ssh.c @@ -2131,6 +2131,8 @@ ssh_kex_hash_type(gchar *type_string) return SSH_KEX_HASH_SHA1; }else if (type_string && g_str_has_suffix(type_string, "sha256")) { return SSH_KEX_HASH_SHA256; + }else if (type_string && g_str_has_suffix(type_string, "sha256@libssh.org")) { + return SSH_KEX_HASH_SHA256; }else if (type_string && g_str_has_suffix(type_string, "sha512")) { return SSH_KEX_HASH_SHA512; } else { @@ -2751,7 +2753,6 @@ ssh_decryption_set_mac_id(struct ssh_peer_data *peer) } else if (0 == strcmp(mac_name, "hmac-sha2-256")) { peer->mac_id = CIPHER_MAC_SHA2_256; } else { - peer->mac = NULL; ws_debug("decryption MAC not supported: %s", mac_name); } } diff --git a/epan/dissectors/packet-tipc.c b/epan/dissectors/packet-tipc.c index fb41797d..a556ed6a 100644 --- a/epan/dissectors/packet-tipc.c +++ b/epan/dissectors/packet-tipc.c @@ -1099,13 +1099,16 @@ dissect_tipc_v2_internal_msg(tvbuff_t *tipc_tvb, proto_tree *tipc_tree, packet_i /* the bearer instance string is padded with \0 to the next word boundry */ b_inst_strlen = tvb_strsize(tipc_tvb, offset); offset += b_inst_strlen; - if ((padlen = (4-b_inst_strlen%4)) > 0) { + if ((padlen = ((b_inst_strlen%4)?(4-(b_inst_strlen%4)):0)) > 0) { proto_tree_add_bytes_format_value(tipc_tree, hf_tipcv2_padding, tipc_tvb, offset, padlen, NULL, "%d byte%c", padlen, (padlen!=1?'s':0)); offset += padlen; } if ((offset-msg_size) > 0) { + int filler_len; + + filler_len = tvb_reported_length_remaining(tipc_tvb, offset); proto_tree_add_bytes_format_value(tipc_tree, hf_tipcv2_filler_mtu_discovery, tipc_tvb, offset, -1, NULL, - "%d byte%c", tvb_reported_length_remaining(tipc_tvb, offset), (padlen!=1?'s':0)); + "%d byte%c", filler_len, (filler_len!=1?'s':0)); } } break; diff --git a/epan/dissectors/packet-tls-utils.c b/epan/dissectors/packet-tls-utils.c index a2572b7b..2a60d835 100644 --- a/epan/dissectors/packet-tls-utils.c +++ b/epan/dissectors/packet-tls-utils.c @@ -1403,6 +1403,18 @@ const value_string tls13_key_update_request[] = { }; /* RFC 5246 7.4.1.4.1 */ +/* https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml */ +/* Note that the TLS 1.3 SignatureScheme registry reserves all values + * with first octet 0x00-0x06 and all values with second octet 0x00-0x03 + * for backwards compatiblilty with TLS 1.2 SignatureAndHashAlgorithm. + * + * RFC 8422 and RFC 9189 add official support in TLS 1.2 for some algorithms + * originally defined for TLS 1.3, and extend the TLS SignatureAlgorithm + * and TLS HashAlgorithm registries, but the new values are not compatible + * with all of the TLS 1.3-only SignatureSchemes. Adding those values could + * cause confusion if used to interpret one of those schemes in a + * signature_algorithms extension offered in a TLS 1.3 ClientHello. + */ const value_string tls_hash_algorithm[] = { { 0, "None" }, { 1, "MD5" }, @@ -1411,7 +1423,14 @@ const value_string tls_hash_algorithm[] = { { 4, "SHA256" }, { 5, "SHA384" }, { 6, "SHA512" }, - { 7, "SM3" }, +#if 0 + /* RFC 8422 adds this to the HashAlgorithm registry, but it really + * only applies to 0x0807 and 0x0808, not for other TLS 1.3 + * SignatureSchemes with 0x08 in the octet used for Hash in TLS 1.2. + * E.g., we don't want to display this for 0x0806 rsa_pss_rsae_sha512. + */ + { 8, "Intrinsic" }, +#endif { 0, NULL } }; @@ -1420,7 +1439,13 @@ const value_string tls_signature_algorithm[] = { { 1, "RSA" }, { 2, "DSA" }, { 3, "ECDSA" }, - { 4, "SM2" }, +#if 0 + /* As above. */ + { 7, "ED25519" }, + { 8, "ED448" }, + { 64, "GOSTR34102012_256" }, + { 65, "GOSTR34102012_512" }, +#endif { 0, NULL } }; diff --git a/epan/dissectors/packet-zbee-direct.c b/epan/dissectors/packet-zbee-direct.c index 971eb9bc..e8e8eda6 100644 --- a/epan/dissectors/packet-zbee-direct.c +++ b/epan/dissectors/packet-zbee-direct.c @@ -1883,9 +1883,9 @@ void proto_reg_handoff_zb_direct(void) /* 7.7.2.3. Zigbee Direct Commissioning Service characteristics */ { "7072377d-0001-421c-b163-491c27333a61", dissect_zb_direct_formation }, - { "7072377d-0002-421c-b163-491c27333a61", dissect_zb_direct_leave }, - { "7072377d-0003-421c-b163-491c27333a61", dissect_zb_direct_join }, - { "7072377d-0004-421c-b163-491c27333a61", dissect_zb_direct_permit_join }, + { "7072377d-0002-421c-b163-491c27333a61", dissect_zb_direct_join }, + { "7072377d-0003-421c-b163-491c27333a61", dissect_zb_direct_permit_join }, + { "7072377d-0004-421c-b163-491c27333a61", dissect_zb_direct_leave }, { "7072377d-0005-421c-b163-491c27333a61", dissect_zb_direct_status }, { "7072377d-0006-421c-b163-491c27333a61", dissect_zb_direct_manage_joiners }, { "7072377d-0007-421c-b163-491c27333a61", dissect_zb_direct_identify }, diff --git a/epan/dissectors/packet-zbee-tlv.c b/epan/dissectors/packet-zbee-tlv.c index 77abd2a7..1ba6e49a 100644 --- a/epan/dissectors/packet-zbee-tlv.c +++ b/epan/dissectors/packet-zbee-tlv.c @@ -2790,12 +2790,12 @@ dissect_zbee_tlvs(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, guint guint8 length; unsigned recursion_depth = p_get_proto_depth(pinfo, proto_zbee_tlv); - if (++recursion_depth >= ZBEE_TLV_MAX_RECURSION_DEPTH) { - proto_tree_add_expert(tree, pinfo, &ei_zbee_tlv_max_recursion_depth_reached, tvb, 0, 0); - return tvb_reported_length_remaining(tvb, offset); - } + if (++recursion_depth >= ZBEE_TLV_MAX_RECURSION_DEPTH) { + proto_tree_add_expert(tree, pinfo, &ei_zbee_tlv_max_recursion_depth_reached, tvb, 0, 0); + return offset; + } - p_set_proto_depth(pinfo, proto_zbee_tlv, recursion_depth); + p_set_proto_depth(pinfo, proto_zbee_tlv, recursion_depth); while (tvb_bytes_exist(tvb, offset, ZBEE_TLV_HEADER_LENGTH)) { length = tvb_get_guint8(tvb, offset + 1) + 1; diff --git a/epan/dissectors/usb.c b/epan/dissectors/usb.c index 1f830e38..0c76303e 100644 --- a/epan/dissectors/usb.c +++ b/epan/dissectors/usb.c @@ -8175,6 +8175,7 @@ static const value_string usb_products_vals[] = { { 0x04b00450, "Nikon Z9" }, { 0x04b00451, "Nikon Z8" }, { 0x04b00452, "Nikon Z30" }, + { 0x04b00453, "Nikon Zf" }, { 0x04b00601, "Nikon V1" }, { 0x04b00602, "Nikon J1" }, { 0x04b00603, "Nikon J2" }, |