diff --git a/openair-cn/GTPV1-U/nw-gtpv1u/src/NwGtpv1u.c b/openair-cn/GTPV1-U/nw-gtpv1u/src/NwGtpv1u.c index 366a340119773011ad6c48917726554b4edcb347..59659c425670f872989d54d4eb74d61f23465197 100644 --- a/openair-cn/GTPV1-U/nw-gtpv1u/src/NwGtpv1u.c +++ b/openair-cn/GTPV1-U/nw-gtpv1u/src/NwGtpv1u.c @@ -510,20 +510,22 @@ nwGtpv1uProcessGpdu( NwGtpv1uStackT *thiz, gpduLen, &hMsg); - payload_len = ntohs(msgHdr->msgLength); - hdr_len = NW_GTPV1U_EPC_MIN_HEADER_SIZE; - if (msgHdr->S || msgHdr->PN || msgHdr->E ) { - hdr_len = NW_GTPV1U_EPC_SPECIFIC_HEADER_SIZE; - payload_len = payload_len - (NW_GTPV1U_EPC_SPECIFIC_HEADER_SIZE - NW_GTPV1U_EPC_MIN_HEADER_SIZE); - } - AssertFatal(gpduLen == (payload_len + hdr_len), - "Mismatch gpduLen %d / hdr_len %d / payload_len %d", - gpduLen, hdr_len, payload_len); if(NW_GTPV1U_OK == rc) { NwGtpv1uMsgT *pMsg = (NwGtpv1uMsgT *) hMsg; GTPU_DEBUG("Received T-PDU over tunnel end-point '%x' of size %u from "NW_IPV4_ADDR"\n", ntohl(msgHdr->teid), pMsg->msgLen, NW_IPV4_ADDR_FORMAT((peerIp))); + + payload_len = ntohs(msgHdr->msgLength); + hdr_len = NW_GTPV1U_EPC_MIN_HEADER_SIZE; + if (msgHdr->S || msgHdr->PN || msgHdr->E ) { + hdr_len = NW_GTPV1U_EPC_SPECIFIC_HEADER_SIZE; + payload_len = payload_len - (NW_GTPV1U_EPC_SPECIFIC_HEADER_SIZE - NW_GTPV1U_EPC_MIN_HEADER_SIZE); + } + AssertFatal(gpduLen == (payload_len + hdr_len), + "Mismatch gpduLen %d / hdr_len %d / payload_len %d", + gpduLen, hdr_len, payload_len); + rc = nwGtpSessionSendMsgApiToUlpEntity(pTunnelEndPoint, pMsg); } } else {