added msc messages
git-svn-id: http://svn.eurecom.fr/openair4G/trunk@7200 818b1a75-f10b-46b9-bf7c-635c3b92a50f
This commit is contained in:
@@ -36,6 +36,9 @@
|
|||||||
#ifndef GTPV1_U_H_
|
#ifndef GTPV1_U_H_
|
||||||
#define GTPV1_U_H_
|
#define GTPV1_U_H_
|
||||||
|
|
||||||
|
#define GTPU_STACK_ENB 0
|
||||||
|
#define GTPU_STACK_SGW 1
|
||||||
|
|
||||||
/* When gtpv1u is compiled for eNB use MACRO from UTILS/log.h,
|
/* When gtpv1u is compiled for eNB use MACRO from UTILS/log.h,
|
||||||
* otherwise use standard fprintf as logger.
|
* otherwise use standard fprintf as logger.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -675,6 +675,16 @@ gtpv1u_create_s1u_tunnel(
|
|||||||
in_addr_t in_addr;
|
in_addr_t in_addr;
|
||||||
int addrs_length_in_bytes= 0;
|
int addrs_length_in_bytes= 0;
|
||||||
|
|
||||||
|
|
||||||
|
MSC_LOG_RX_MESSAGE(
|
||||||
|
MSC_GTPU_ENB,
|
||||||
|
MSC_RRC_ENB,
|
||||||
|
NULL,0,
|
||||||
|
MSC_AS_TIME_FMT" CREATE_TUNNEL_REQ RNTI %"PRIx16" inst %u ntuns %u ebid %u sgw-s1u teid %u",
|
||||||
|
0,0,create_tunnel_req_pP->rnti, instanceP,
|
||||||
|
create_tunnel_req_pP->num_tunnels, create_tunnel_req_pP->eps_bearer_id[0],
|
||||||
|
create_tunnel_req_pP->sgw_S1u_teid[0]);
|
||||||
|
|
||||||
message_p = itti_alloc_new_message(TASK_GTPV1_U, GTPV1U_ENB_CREATE_TUNNEL_RESP);
|
message_p = itti_alloc_new_message(TASK_GTPV1_U, GTPV1U_ENB_CREATE_TUNNEL_RESP);
|
||||||
GTPV1U_ENB_CREATE_TUNNEL_RESP(message_p).rnti = create_tunnel_req_pP->rnti;
|
GTPV1U_ENB_CREATE_TUNNEL_RESP(message_p).rnti = create_tunnel_req_pP->rnti;
|
||||||
GTPV1U_ENB_CREATE_TUNNEL_RESP(message_p).status = 0;
|
GTPV1U_ENB_CREATE_TUNNEL_RESP(message_p).status = 0;
|
||||||
@@ -891,7 +901,7 @@ static int gtpv1u_eNB_init(void)
|
|||||||
gtpv1u_data_g.restart_counter = 0;
|
gtpv1u_data_g.restart_counter = 0;
|
||||||
|
|
||||||
/* Initializing GTPv1-U stack */
|
/* Initializing GTPv1-U stack */
|
||||||
if ((rc = nwGtpv1uInitialize(>pv1u_data_g.gtpv1u_stack)) != NW_GTPV1U_OK) {
|
if ((rc = nwGtpv1uInitialize(>pv1u_data_g.gtpv1u_stack, GTPU_STACK_ENB)) != NW_GTPV1U_OK) {
|
||||||
LOG_E(GTPU, "Failed to setup nwGtpv1u stack %x\n", rc);
|
LOG_E(GTPU, "Failed to setup nwGtpv1u stack %x\n", rc);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -601,7 +601,7 @@ int gtpv1u_init(const mme_config_t *mme_config_p)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Initializing GTPv1-U stack */
|
/* Initializing GTPv1-U stack */
|
||||||
if ((rc = nwGtpv1uInitialize(>pv1u_sgw_data.gtpv1u_stack)) != NW_GTPV1U_OK) {
|
if ((rc = nwGtpv1uInitialize(>pv1u_sgw_data.gtpv1u_stack, GTPU_STACK_SGW)) != NW_GTPV1U_OK) {
|
||||||
GTPU_ERROR("Failed to setup nwGtpv1u stack %x\n", rc);
|
GTPU_ERROR("Failed to setup nwGtpv1u stack %x\n", rc);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -79,6 +79,7 @@ extern "C" {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
typedef struct NwGtpv1uStack {
|
typedef struct NwGtpv1uStack {
|
||||||
|
NwU32T stackType;/**< GTPU_STACK_ENB or GTPU_STACK_SGW */
|
||||||
NwU32T id;
|
NwU32T id;
|
||||||
NwU32T seq;
|
NwU32T seq;
|
||||||
NwGtpv1uUlpEntityT ulp;
|
NwGtpv1uUlpEntityT ulp;
|
||||||
|
|||||||
@@ -381,10 +381,11 @@ extern "C" {
|
|||||||
Initialize the nw-gtpv1u stack.
|
Initialize the nw-gtpv1u stack.
|
||||||
|
|
||||||
@param[in,out] phGtpv1uStackHandle : Pointer to stack handle
|
@param[in,out] phGtpv1uStackHandle : Pointer to stack handle
|
||||||
|
@param[in] stackType : GTPU_STACK_ENB or GTPU_STACK_SGW
|
||||||
*/
|
*/
|
||||||
|
|
||||||
NwGtpv1uRcT
|
NwGtpv1uRcT
|
||||||
nwGtpv1uInitialize( NW_INOUT NwGtpv1uStackHandleT* phGtpv1uStackHandle);
|
nwGtpv1uInitialize( NW_INOUT NwGtpv1uStackHandleT* phGtpv1uStackHandle, NwU32T stackType);
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------
|
/*---------------------------------------------------------------------------
|
||||||
* Destructor
|
* Destructor
|
||||||
|
|||||||
@@ -47,6 +47,7 @@
|
|||||||
|
|
||||||
#include "assertions.h"
|
#include "assertions.h"
|
||||||
#include "intertask_interface.h"
|
#include "intertask_interface.h"
|
||||||
|
#include "msc.h"
|
||||||
|
|
||||||
#include "gtpv1u.h"
|
#include "gtpv1u.h"
|
||||||
#if defined(ENB_MODE)
|
#if defined(ENB_MODE)
|
||||||
@@ -556,9 +557,26 @@ nwGtpv1uProcessGpdu( NwGtpv1uStackT *thiz,
|
|||||||
GTPU_DEBUG("Received T-PDU over tunnel end-point '%x' of size %u (%u) (decapsulated %u)from "NW_IPV4_ADDR"\n",
|
GTPU_DEBUG("Received T-PDU over tunnel end-point '%x' of size %u (%u) (decapsulated %u)from "NW_IPV4_ADDR"\n",
|
||||||
ntohl(msgHdr->teid), gpduLen, pMsg->msgLen, pMsg->msgBufLen, NW_IPV4_ADDR_FORMAT((peerIp)));
|
ntohl(msgHdr->teid), gpduLen, pMsg->msgLen, pMsg->msgBufLen, NW_IPV4_ADDR_FORMAT((peerIp)));
|
||||||
#endif
|
#endif
|
||||||
|
MSC_LOG_RX_MESSAGE(
|
||||||
|
(thiz->stackType == GTPU_STACK_ENB) ? MSC_GTPU_ENB:MSC_GTPU_SGW,
|
||||||
|
(thiz->stackType == GTPU_STACK_ENB) ? MSC_GTPU_SGW:MSC_GTPU_ENB,
|
||||||
|
NULL,
|
||||||
|
0,
|
||||||
|
" G-PDU ltid %u size %u",
|
||||||
|
tunnelEndPointKey.teid,
|
||||||
|
gpduLen);
|
||||||
|
|
||||||
rc = nwGtpSessionSendMsgApiToUlpEntity(pTunnelEndPoint, pMsg);
|
rc = nwGtpSessionSendMsgApiToUlpEntity(pTunnelEndPoint, pMsg);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
MSC_LOG_RX_DISCARDED_MESSAGE(
|
||||||
|
(thiz->stackType == GTPU_STACK_ENB) ? MSC_GTPU_ENB:MSC_GTPU_SGW,
|
||||||
|
(thiz->stackType == GTPU_STACK_ENB) ? MSC_GTPU_SGW:MSC_GTPU_ENB,
|
||||||
|
NULL,
|
||||||
|
0,
|
||||||
|
" G-PDU ltid %u size %u",
|
||||||
|
tunnelEndPointKey.teid,
|
||||||
|
gpduLen);
|
||||||
GTPU_ERROR("Received T-PDU over non-existent tunnel end-point '%x' from "NW_IPV4_ADDR"\n",
|
GTPU_ERROR("Received T-PDU over non-existent tunnel end-point '%x' from "NW_IPV4_ADDR"\n",
|
||||||
ntohl(msgHdr->teid), NW_IPV4_ADDR_FORMAT((peerIp)));
|
ntohl(msgHdr->teid), NW_IPV4_ADDR_FORMAT((peerIp)));
|
||||||
}
|
}
|
||||||
@@ -590,6 +608,13 @@ nwGtpv1uHandleEchoReq(NW_IN NwGtpv1uStackT *thiz,
|
|||||||
|
|
||||||
seqNum = ntohs(*(NwU16T *) (msgBuf + (((*msgBuf) & 0x02) ? 8 : 4)));
|
seqNum = ntohs(*(NwU16T *) (msgBuf + (((*msgBuf) & 0x02) ? 8 : 4)));
|
||||||
|
|
||||||
|
MSC_LOG_RX_MESSAGE(
|
||||||
|
(thiz->stackType == GTPU_STACK_ENB) ? MSC_GTPU_ENB:MSC_GTPU_SGW,
|
||||||
|
(thiz->stackType == GTPU_STACK_ENB) ? MSC_GTPU_SGW:MSC_GTPU_ENB,
|
||||||
|
NULL,
|
||||||
|
0,
|
||||||
|
MSC_AS_TIME_FMT" ECHO-REQ seq %u size %u",
|
||||||
|
0,0,seqNum, msgBufLen);
|
||||||
/* Send Echo Response */
|
/* Send Echo Response */
|
||||||
|
|
||||||
rc = nwGtpv1uMsgNew( (NwGtpv1uStackHandleT)thiz,
|
rc = nwGtpv1uMsgNew( (NwGtpv1uStackHandleT)thiz,
|
||||||
@@ -625,6 +650,13 @@ nwGtpv1uHandleEchoReq(NW_IN NwGtpv1uStackT *thiz,
|
|||||||
peerPort,
|
peerPort,
|
||||||
seqNum);
|
seqNum);
|
||||||
#endif
|
#endif
|
||||||
|
MSC_LOG_TX_MESSAGE(
|
||||||
|
(thiz->stackType == GTPU_STACK_ENB) ? MSC_GTPU_ENB:MSC_GTPU_SGW,
|
||||||
|
(thiz->stackType == GTPU_STACK_ENB) ? MSC_GTPU_SGW:MSC_GTPU_ENB,
|
||||||
|
NULL,
|
||||||
|
0,
|
||||||
|
MSC_AS_TIME_FMT" ECHO-RSP seq %u",
|
||||||
|
0,0,seqNum);
|
||||||
rc = nwGtpv1uCreateAndSendMsg(
|
rc = nwGtpv1uCreateAndSendMsg(
|
||||||
thiz,
|
thiz,
|
||||||
peerIp,
|
peerIp,
|
||||||
@@ -646,7 +678,7 @@ nwGtpv1uHandleEchoReq(NW_IN NwGtpv1uStackT *thiz,
|
|||||||
*--------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------*/
|
||||||
|
|
||||||
NwGtpv1uRcT
|
NwGtpv1uRcT
|
||||||
nwGtpv1uInitialize( NW_INOUT NwGtpv1uStackHandleT *hGtpuStackHandle)
|
nwGtpv1uInitialize( NW_INOUT NwGtpv1uStackHandleT *hGtpuStackHandle, NwU32T stackType)
|
||||||
{
|
{
|
||||||
NwGtpv1uRcT rc = NW_GTPV1U_FAILURE;
|
NwGtpv1uRcT rc = NW_GTPV1U_FAILURE;
|
||||||
NwGtpv1uStackT *thiz;
|
NwGtpv1uStackT *thiz;
|
||||||
@@ -655,7 +687,8 @@ nwGtpv1uInitialize( NW_INOUT NwGtpv1uStackHandleT *hGtpuStackHandle)
|
|||||||
memset(thiz, 0, sizeof(NwGtpv1uStackT));
|
memset(thiz, 0, sizeof(NwGtpv1uStackT));
|
||||||
|
|
||||||
if(thiz) {
|
if(thiz) {
|
||||||
thiz->id = (NwU32T) thiz;
|
thiz->id = (NwU32T) thiz;
|
||||||
|
thiz->stackType = (NwU32T) stackType;
|
||||||
thiz->seq = (NwU16T) ((NwU32T)thiz) ;
|
thiz->seq = (NwU16T) ((NwU32T)thiz) ;
|
||||||
RB_INIT(&(thiz->outstandingTxSeqNumMap));
|
RB_INIT(&(thiz->outstandingTxSeqNumMap));
|
||||||
RB_INIT(&(thiz->outstandingRxSeqNumMap));
|
RB_INIT(&(thiz->outstandingRxSeqNumMap));
|
||||||
|
|||||||
@@ -95,7 +95,7 @@ int main(int argc, char *argv[])
|
|||||||
* Create GTPv1u Stack Instance
|
* Create GTPv1u Stack Instance
|
||||||
*--------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------*/
|
||||||
|
|
||||||
rc = nwGtpv1uInitialize(&hGtpv1uStack);
|
rc = nwGtpv1uInitialize(&hGtpv1uStack, GTPU_STACK_ENB);
|
||||||
|
|
||||||
if(rc != NW_GTPV1U_OK) {
|
if(rc != NW_GTPV1U_OK) {
|
||||||
NW_LOG(NW_LOG_LEVEL_ERRO,
|
NW_LOG(NW_LOG_LEVEL_ERRO,
|
||||||
|
|||||||
Reference in New Issue
Block a user