Add rrc handling for F1 UE context setup response message at the CU and gtp-u tunnel update functionality

-Remains to be tested
This commit is contained in:
matzakos
2021-09-06 14:44:53 +02:00
parent e942193824
commit 842bf6e346
3 changed files with 72 additions and 0 deletions
+19
View File
@@ -388,6 +388,25 @@ instance_t ocp_gtpv1Init(openAddr_t context) {
return id;
}
void GtpuUpdateTunnelOutgoingTeid(instance_t instance, rnti_t rnti, ebi_t bearer_id, teid_t newOutgoingTeid) {
pthread_mutex_lock(&globGtp.gtp_lock);
auto inst=&globGtp.instances[compatInst(instance)];
auto ptrRnti=inst->ue2te_mapping.find(rnti);
if ( ptrRnti == inst->ue2te_mapping.end() ) {
LOG_E(GTPU,"Update tunnel for a not existing rnti %x\n", rnti);
pthread_mutex_unlock(&globGtp.gtp_lock);
return;
} auto tmp=ptrRnti->second.bearers;
auto ptrBearer=tmp.find(bearer_id); if ( ptrBearer == tmp.end() ) {
LOG_E(GTPU,"Update tunnel for a existing rnti %x, but wrong bearer_id %u\n", rnti, bearer_id);
pthread_mutex_unlock(&globGtp.gtp_lock);
return;
} //AssertFatal(ptrBearer.second.teid_outgoing == oldOutGoingTeid, "");
ptrBearer->second.teid_outgoing = newOutgoingTeid;
pthread_mutex_unlock(&globGtp.gtp_lock);
return;
}
teid_t newGtpuCreateTunnel(instance_t instance, rnti_t rnti, int incoming_bearer_id, int outgoing_bearer_id, teid_t outgoing_teid,
transport_layer_addr_t remoteAddr, int port, gtpCallback callBack) {
pthread_mutex_lock(&globGtp.gtp_lock);
+1
View File
@@ -62,6 +62,7 @@ int ocp_gtpv1u_create_x2u_tunnel(
// New API
teid_t newGtpuCreateTunnel(instance_t instance, rnti_t rnti, int incoming_bearer_id, int outgoing_rb_id, teid_t teid,
transport_layer_addr_t remoteAddr, int port, gtpCallback callBack);
void GtpuUpdateTunnelOutgoingTeid(instance_t instance, rnti_t rnti, ebi_t bearer_id, teid_t newOutgoingTeid);
instance_t ocp_gtpv1Init(openAddr_t context);
void *ocp_gtpv1uTask(void *args);