NAS 5GS: add NAS 5GS protocol to TCP port decode as table

This is useful to decode NAS messages received in a N3IWF
This commit is contained in:
Pascal Quantin 2021-04-28 11:05:27 +02:00 committed by Wireshark GitLab Utility
parent 5af65b3a92
commit ebafa3a4b9
1 changed files with 23 additions and 0 deletions

View File

@ -30,6 +30,7 @@
#include "packet-gsm_a_common.h"
#include "packet-e212.h"
#include "packet-http.h"
#include "packet-tcp.h"
void proto_register_nas_5gs(void);
void proto_reg_handoff_nas_5gs(void);
@ -8721,6 +8722,27 @@ dissect_nas_5gs_media_type(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
}
}
static guint
get_nas_5gs_tcp_len(packet_info *pinfo _U_, tvbuff_t *tvb, int offset, void *data _U_)
{
return tvb_get_ntohs(tvb, offset) + 2;
}
static int
dissect_nas_5gs_tcp_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data)
{
col_clear(pinfo->cinfo, COL_INFO);
return dissect_nas_5gs(tvb_new_subset_remaining(tvb, 2), pinfo, tree, data);
}
static int
dissect_nas_5gs_tcp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data)
{
tcp_dissect_pdus(tvb, pinfo, tree, TRUE, 2, get_nas_5gs_tcp_len,
dissect_nas_5gs_tcp_pdu, data);
return tvb_reported_length(tvb);
}
void
proto_register_nas_5gs(void)
{
@ -11451,6 +11473,7 @@ proto_reg_handoff_nas_5gs(void)
ipv6_handle = find_dissector("ipv6");
ethernet_handle = find_dissector("eth_withoutfcs");
dissector_add_string("media_type", "application/vnd.3gpp.5gnas", create_dissector_handle(dissect_nas_5gs_media_type, proto_nas_5gs));
dissector_add_for_decode_as("tcp.port", create_dissector_handle(dissect_nas_5gs_tcp, proto_nas_5gs));
proto_json = proto_get_id_by_filter_name("json");
initialized = TRUE;
}