DIAMETER: Dissect Access-Network-Information (AVP code 1263)

The Access-Network-Information AVP (AVP code 1263) is an instance of the
SIP P-header "P-Access-Network-Info". There is a dissection function for
P-Access-Network-Info in the SIP dissector, add it to the header and use
it for the DIAMETER AVP.
This commit is contained in:
John Thacker 2021-04-01 08:03:07 -04:00 committed by Wireshark GitLab Utility
parent ec2c42723f
commit 3c4b6c94f2
3 changed files with 23 additions and 1 deletions

View File

@ -1451,6 +1451,23 @@ dissect_diameter_3gpp_location_estimate(tvbuff_t *tvb, packet_info *pinfo, proto
return tvb_reported_length(tvb);
}
/* AVP Code: 1263 Access-Network-Information
* 3GPP TS 32.299
* The Access-Network-Information AVP (AVP code 1263) is of type OctetString
* and indicates one instance of the SIP P-header "P-Access-Network-Info".
* In SIP, as per RFC 7315 [404], the content of the "P-Access-Network-Info"
* header is known as the access-net-spec.
*/
static int
dissect_diameter_3gpp_access_network_information(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
{
int offset = 0;
int length = tvb_reported_length(tvb);
dissect_sip_p_access_network_info_header(tvb, tree, offset, length);
return length;
}
/* AVP Code: 1304 Secondary-RAT-Type
* 3GPP TS 32.299
@ -2956,6 +2973,9 @@ proto_reg_handoff_diameter_3gpp(void)
/* AVP Code: 1242 location estimate */
dissector_add_uint("diameter.3gpp", 1242, create_dissector_handle(dissect_diameter_3gpp_location_estimate, proto_diameter_3gpp));
/* AVP Code: 1263 Access-Network-Information */
dissector_add_uint("diameter.3gpp", 1263, create_dissector_handle(dissect_diameter_3gpp_access_network_information, proto_diameter_3gpp));
/* AVP Code: 1304 Secondary-RAT-Type */
dissector_add_uint("diameter.3gpp", 1304, create_dissector_handle(dissect_diameter_3gpp_secondary_rat_type, proto_diameter_3gpp));

View File

@ -3044,7 +3044,7 @@ static void dissect_sip_session_id_header(tvbuff_t *tvb, proto_tree *tree, gint
* gstn-location = "gstn-location" EQUAL (token / quoted-string)
*
*/
static void dissect_sip_p_access_network_info_header(tvbuff_t *tvb, proto_tree *tree, gint start_offset, gint line_end_offset)
void dissect_sip_p_access_network_info_header(tvbuff_t *tvb, proto_tree *tree, gint start_offset, gint line_end_offset)
{
gint current_offset, semi_colon_offset, length, par_name_end_offset, equals_offset;

View File

@ -43,4 +43,6 @@ WS_DLL_PUBLIC const value_string sip_response_code_vals[];
extern void dfilter_store_sip_from_addr(tvbuff_t *tvb, proto_tree *tree,
guint parameter_offset, guint parameter_len);
extern void dissect_sip_p_access_network_info_header(tvbuff_t *tvb, proto_tree *tree, gint start_offset, gint line_end_offset);
#endif