GTPv2: Dissect the content of F-container type 3.

This commit is contained in:
Anders Broman 2020-11-24 16:41:50 +01:00
parent 8c4d420fb3
commit 2999173126
1 changed files with 21 additions and 9 deletions

View File

@ -5127,6 +5127,7 @@ dissect_gtpv2_F_container(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, p
proto_tree_add_item(tree, hf_gtpv2_container_type, tvb, offset, 1, ENC_BIG_ENDIAN);
container_type = tvb_get_guint8(tvb, offset);
offset += 1;
length--;
if ( (message_type == GTPV2_FORWARD_RELOCATION_REQ)
|| (message_type == GTPV2_CONTEXT_RESPONSE)
|| (message_type == GTPV2_RAN_INFORMATION_RELAY)) {
@ -5189,7 +5190,8 @@ dissect_gtpv2_F_container(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, p
* relocation procedure. The Container Type shall be set to 3.
*/
sub_tree = proto_tree_add_subtree(tree, tvb, offset, length, ett_gtpv2_eutran_con, NULL, "E-UTRAN transparent container");
proto_tree_add_expert(sub_tree, pinfo, &ei_gtpv2_ie_data_not_dissected, tvb, offset, length - offset);
new_tvb = tvb_new_subset_remaining(tvb, offset);
dissect_s1ap_SourceeNB_ToTargeteNB_TransparentContainer_PDU(new_tvb, pinfo, sub_tree, NULL);
return;
default:
break;
@ -5206,15 +5208,25 @@ dissect_gtpv2_F_container(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, p
break;
}
}
if (message_type == GTPV2_FORWARD_RELOCATION_RESP) {
/* 7.3.2 Forward Relocation Response
* E-UTRAN Transparent Container
* This IE is conditionally included only during a handover to
* E-UTRAN and contains the radio-related and core network
* information. If the Cause IE contains the value "Request
* accepted", this IE shall be included.
*/
proto_tree_add_expert(tree, pinfo, &ei_gtpv2_ie_data_not_dissected, tvb, offset, length-offset);
/* 7.3.2 Forward Relocation Response */
switch (container_type) {
case 3:
/* E-UTRAN transparent container
* This IE shall be included to contain the "Target to Source Transparent Container"
* during a handover to E-UTRAN, 5GS to EPS handover and EPS to 5GS handover.
* If the Cause IE contains the value "Request accepted". The Container Type shall be set to 3.
*/
sub_tree = proto_tree_add_subtree(tree, tvb, offset, length, ett_gtpv2_eutran_con, NULL, "E-UTRAN transparent container");
new_tvb = tvb_new_subset_remaining(tvb, offset);
dissect_s1ap_TargeteNB_ToSourceeNB_TransparentContainer_PDU(new_tvb, pinfo, sub_tree, NULL);
return;
default:
break;
}
}
proto_tree_add_expert(tree, pinfo, &ei_gtpv2_ie_data_not_dissected, tvb, offset, length);
}