Commit 70fa7137 authored by Robert Schmidt's avatar Robert Schmidt

Create direct API to send GTP-U msgs

parent f6238edd
...@@ -286,13 +286,14 @@ static int gtpv1uCreateAndSendMsg(int h, ...@@ -286,13 +286,14 @@ static int gtpv1uCreateAndSendMsg(int h,
return !GTPNOK; return !GTPNOK;
} }
static void gtpv1uSend(instance_t instance, gtpv1u_tunnel_data_req_t *req, bool seqNumFlag, bool npduNumFlag) void gtpv1uSendDirect(instance_t instance,
ue_id_t ue_id,
int bearer_id,
uint8_t *buf,
size_t len,
bool seqNumFlag,
bool npduNumFlag)
{ {
uint8_t *buf = req->buffer + req->offset;
size_t len = req->length;
ue_id_t ue_id = req->ue_id;
int bearer_id = req->bearer_id;
pthread_mutex_lock(&globGtp.gtp_lock); pthread_mutex_lock(&globGtp.gtp_lock);
getInstRetVoid(compatInst(instance)); getInstRetVoid(compatInst(instance));
getUeRetVoid(inst, ue_id); getUeRetVoid(inst, ue_id);
...@@ -367,6 +368,16 @@ static void gtpv1uSend(instance_t instance, gtpv1u_tunnel_data_req_t *req, bool ...@@ -367,6 +368,16 @@ static void gtpv1uSend(instance_t instance, gtpv1u_tunnel_data_req_t *req, bool
} }
} }
static void gtpv1uSend(instance_t instance, gtpv1u_tunnel_data_req_t *req, bool seqNumFlag, bool npduNumFlag)
{
uint8_t *buf = req->buffer + req->offset;
size_t len = req->length;
ue_id_t ue_id = req->ue_id;
int bearer_id = req->bearer_id;
gtpv1uSendDirect(instance, ue_id, bearer_id, buf, len, seqNumFlag, npduNumFlag);
}
static void fillDlDeliveryStatusReport(extensionHeader_t *extensionHeader, uint32_t RLC_buffer_availability, uint32_t NR_PDCP_PDU_SN){ static void fillDlDeliveryStatusReport(extensionHeader_t *extensionHeader, uint32_t RLC_buffer_availability, uint32_t NR_PDCP_PDU_SN){
extensionHeader->buffer[0] = (1+sizeof(DlDataDeliveryStatus_flagsT)+(NR_PDCP_PDU_SN>0?3:0)+(NR_PDCP_PDU_SN>0?1:0)+1)/4; extensionHeader->buffer[0] = (1+sizeof(DlDataDeliveryStatus_flagsT)+(NR_PDCP_PDU_SN>0?3:0)+(NR_PDCP_PDU_SN>0?1:0)+1)/4;
......
...@@ -103,6 +103,9 @@ extern "C" { ...@@ -103,6 +103,9 @@ extern "C" {
int newGtpuDeleteOneTunnel(instance_t instance, ue_id_t ue_id, int rb_id); int newGtpuDeleteOneTunnel(instance_t instance, ue_id_t ue_id, int rb_id);
int newGtpuDeleteAllTunnels(instance_t instance, ue_id_t ue_id); int newGtpuDeleteAllTunnels(instance_t instance, ue_id_t ue_id);
int newGtpuDeleteTunnels(instance_t instance, ue_id_t ue_id, int nbTunnels, pdusessionid_t *pdusession_id); int newGtpuDeleteTunnels(instance_t instance, ue_id_t ue_id, int nbTunnels, pdusessionid_t *pdusession_id);
void gtpv1uSendDirect(instance_t instance, ue_id_t ue_id, int bearer_id, uint8_t *buf, size_t len, bool seqNumFlag, bool npduNumFlag);
instance_t gtpv1Init(openAddr_t context); instance_t gtpv1Init(openAddr_t context);
void *gtpv1uTask(void *args); void *gtpv1uTask(void *args);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment