summaryrefslogtreecommitdiffstats
path: root/epan/dissectors
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-17 15:00:51 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-17 15:00:51 +0000
commite27759aa56732ec1423a104333c1d88f5ddd7efb (patch)
tree489b146d4effcec44f246eb0b4d1c9f269c94b43 /epan/dissectors
parentAdding upstream version 4.2.4. (diff)
downloadwireshark-upstream.tar.xz
wireshark-upstream.zip
Adding upstream version 4.2.5.upstream/4.2.5upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'epan/dissectors')
-rw-r--r--epan/dissectors/asn1/nr-rrc/nr-rrc.cnf88
-rw-r--r--epan/dissectors/asn1/nr-rrc/packet-nr-rrc-template.c2
-rw-r--r--epan/dissectors/packet-5co-legacy.c16
-rw-r--r--epan/dissectors/packet-5co-rap.c18
-rw-r--r--epan/dissectors/packet-btmesh.c13
-rw-r--r--epan/dissectors/packet-cql.c35
-rw-r--r--epan/dissectors/packet-docsis-macmgmt.c3
-rw-r--r--epan/dissectors/packet-e212.c554
-rw-r--r--epan/dissectors/packet-epl.c19
-rw-r--r--epan/dissectors/packet-fcfzs.c16
-rw-r--r--epan/dissectors/packet-gquic.c4
-rw-r--r--epan/dissectors/packet-grpc.c137
-rw-r--r--epan/dissectors/packet-gsm_a_rp.c12
-rw-r--r--epan/dissectors/packet-http2.c21
-rw-r--r--epan/dissectors/packet-http2.h8
-rw-r--r--epan/dissectors/packet-icmpv6.c51
-rw-r--r--epan/dissectors/packet-ieee1905.c60
-rw-r--r--epan/dissectors/packet-ieee80211.c12
-rw-r--r--epan/dissectors/packet-ipars.c2
-rw-r--r--epan/dissectors/packet-json_3gpp.c28
-rw-r--r--epan/dissectors/packet-lapd.c8
-rw-r--r--epan/dissectors/packet-lldp.c6
-rw-r--r--epan/dissectors/packet-mongo.c8
-rw-r--r--epan/dissectors/packet-nas_5gs.c20
-rw-r--r--epan/dissectors/packet-nr-rrc.c69
-rw-r--r--epan/dissectors/packet-per.c22
-rw-r--r--epan/dissectors/packet-pfcp.c129
-rw-r--r--epan/dissectors/packet-ptp.c2
-rw-r--r--epan/dissectors/packet-quic.c8
-rw-r--r--epan/dissectors/packet-ssh.c3
-rw-r--r--epan/dissectors/packet-tipc.c7
-rw-r--r--epan/dissectors/packet-tls-utils.c29
-rw-r--r--epan/dissectors/packet-zbee-direct.c6
-rw-r--r--epan/dissectors/packet-zbee-tlv.c10
-rw-r--r--epan/dissectors/usb.c1
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 5df5e1d..c918119 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 cbfb67c..88f72f7 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 273d2a6..5558cf0 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 06aae10..4aaabed 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 8aa913d..a0d930f 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 32b03ec..668ba72 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 e3bf924..de21249 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 4030a3c..a51328c 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 4dbc515..4dcd419 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 4cbf519..82a55f7 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 372bd40..c6aea31 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 a459fde..b71a272 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 66c02b2..f20e8a7 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 5def945..fa51d44 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 f3b961d..e7d188b 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 08b2934..4a085f5 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 e26da6f..2c98c4d 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 15e43f8..67d4be5 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 4b3a4bb..3115ec0 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 8cb4cad..d44f919 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 fcae4e1..cea2b3e 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 d70c379..307a1d3 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 db23a06..346b132 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 915ae1c..26bb927 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 1086fac..6f2eb41 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 4a4ac7c..1a0f3ee 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 6a57c58..6565bfb 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 09d499b..c87fc52 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 a41ce9c..cabc2c5 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 1b91959..4f2b0ff 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 fb41797..a556ed6 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 a2572b7..2a60d83 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 971eb9b..e8e8eda 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 77abd2a..1ba6e49 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 1f830e3..0c76303 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" },