From 1208ae0d6fe4b25341c9036dde111fd4d00fd6e9 Mon Sep 17 00:00:00 2001
From: Cedric Roux <cedric.roux@eurecom.fr>
Date: Tue, 19 Jul 2022 10:53:35 +0200
Subject: [PATCH] replace rnti by ue_id in pdcp

some sdap and gtp files had to be touched, the work is not finished in there

some changes in nr_pdcp_oai_api.c simply assume ue_id is indeed rnti
(will functions in this file be used by cu-up?)
---
 openair2/F1AP/dummy_enb.c                    |  1 +
 openair2/LAYER2/nr_pdcp/nr_pdcp_oai_api.c    | 50 ++++++++++----------
 openair2/LAYER2/nr_pdcp/nr_pdcp_ue_manager.c | 24 +++++-----
 openair2/LAYER2/nr_pdcp/nr_pdcp_ue_manager.h | 12 +++--
 openair2/SDAP/nr_sdap/nr_sdap.c              | 11 +++--
 openair2/SDAP/nr_sdap/nr_sdap.h              |  3 +-
 openair2/SDAP/nr_sdap/nr_sdap_entity.c       | 10 ++--
 openair2/SDAP/nr_sdap/nr_sdap_entity.h       |  2 +-
 openair3/ocp-gtpu/gtp_itf.h                  |  1 +
 9 files changed, 61 insertions(+), 53 deletions(-)

diff --git a/openair2/F1AP/dummy_enb.c b/openair2/F1AP/dummy_enb.c
index 22627c8d926..08a5b906eed 100644
--- a/openair2/F1AP/dummy_enb.c
+++ b/openair2/F1AP/dummy_enb.c
@@ -33,6 +33,7 @@ void apply_macrlc_config(gNB_RRC_INST *rrc,
 }
 
 bool sdap_data_req(protocol_ctxt_t *ctxt_p,
+                   const ue_id_t ue_id,
                    const srb_flag_t srb_flag,
                    const rb_id_t rb_id,
                    const mui_t mui,
diff --git a/openair2/LAYER2/nr_pdcp/nr_pdcp_oai_api.c b/openair2/LAYER2/nr_pdcp/nr_pdcp_oai_api.c
index 25ea76cde34..357abd60699 100644
--- a/openair2/LAYER2/nr_pdcp/nr_pdcp_oai_api.c
+++ b/openair2/LAYER2/nr_pdcp/nr_pdcp_oai_api.c
@@ -404,8 +404,9 @@ static void *enb_tun_read_thread(void *_)
   extern int nas_sock_fd[];
   char rx_buf[NL_MAX_PAYLOAD];
   int len;
-  int rnti;
   protocol_ctxt_t ctxt;
+  ue_id_t ue_id;
+  int has_ue;
 
   int rb_id = 1;
   pthread_setname_np( pthread_self(),"enb_tun_read");
@@ -420,10 +421,10 @@ static void *enb_tun_read_thread(void *_)
     LOG_D(PDCP, "%s(): nas_sock_fd read returns len %d\n", __func__, len);
 
     nr_pdcp_manager_lock(nr_pdcp_ue_manager);
-    rnti = nr_pdcp_get_first_rnti(nr_pdcp_ue_manager);
+    has_ue = nr_pdcp_get_first_ue_id(nr_pdcp_ue_manager, &ue_id);
     nr_pdcp_manager_unlock(nr_pdcp_ue_manager);
 
-    if (rnti == -1) continue;
+    if (!has_ue) continue;
 
     ctxt.module_id = 0;
     ctxt.enb_flag = 1;
@@ -432,14 +433,13 @@ static void *enb_tun_read_thread(void *_)
     ctxt.subframe = 0;
     ctxt.eNB_index = 0;
     ctxt.brOption = 0;
-
-    ctxt.rnti = rnti;
+    ctxt.rnti = 0;
 
     uint8_t qfi = 7;
     bool rqi = 0;
     int pdusession_id = 10;
 
-    sdap_data_req(&ctxt, SRB_FLAG_NO, rb_id, RLC_MUI_UNDEFINED,
+    sdap_data_req(&ctxt, ue_id, SRB_FLAG_NO, rb_id, RLC_MUI_UNDEFINED,
                   RLC_SDU_CONFIRM_NO, len, (unsigned char *)rx_buf,
                   PDCP_TRANSMISSION_MODE_DATA, NULL, NULL, qfi, rqi, pdusession_id);
   }
@@ -452,8 +452,9 @@ static void *ue_tun_read_thread(void *_)
   extern int nas_sock_fd[];
   char rx_buf[NL_MAX_PAYLOAD];
   int len;
-  int rnti;
   protocol_ctxt_t ctxt;
+  ue_id_t ue_id;
+  int has_ue;
 
   int rb_id = 1;
   pthread_setname_np( pthread_self(),"ue_tun_read"); 
@@ -467,10 +468,10 @@ static void *ue_tun_read_thread(void *_)
     LOG_D(PDCP, "%s(): nas_sock_fd read returns len %d\n", __func__, len);
 
     nr_pdcp_manager_lock(nr_pdcp_ue_manager);
-    rnti = nr_pdcp_get_first_rnti(nr_pdcp_ue_manager);
+    has_ue = nr_pdcp_get_first_ue_id(nr_pdcp_ue_manager, &ue_id);
     nr_pdcp_manager_unlock(nr_pdcp_ue_manager);
 
-    if (rnti == -1) continue;
+    if (!has_ue) continue;
 
     ctxt.module_id = 0;
     ctxt.enb_flag = 0;
@@ -479,14 +480,13 @@ static void *ue_tun_read_thread(void *_)
     ctxt.subframe = 0;
     ctxt.eNB_index = 0;
     ctxt.brOption = 0;
-
-    ctxt.rnti = rnti;
+    ctxt.rnti = 0;
 
     bool dc = SDAP_HDR_UL_DATA_PDU;
     extern uint8_t nas_qfi;
     extern uint8_t nas_pduid;
 
-    sdap_data_req(&ctxt, SRB_FLAG_NO, rb_id, RLC_MUI_UNDEFINED,
+    sdap_data_req(&ctxt, ue_id, SRB_FLAG_NO, rb_id, RLC_MUI_UNDEFINED,
                   RLC_SDU_CONFIRM_NO, len, (unsigned char *)rx_buf,
                   PDCP_TRANSMISSION_MODE_DATA, NULL, NULL, nas_qfi, dc, nas_pduid);
   }
@@ -619,13 +619,13 @@ static void deliver_sdu_drb(void *_ue, nr_pdcp_entity_t *entity,
   int i;
 
   if (IS_SOFTMODEM_NOS1 || UE_NAS_USE_TUN) {
-    LOG_D(PDCP, "IP packet received with size %d, to be sent to SDAP interface, UE rnti: %d\n", size, ue->rnti);
+    LOG_D(PDCP, "IP packet received with size %d, to be sent to SDAP interface, UE rnti: %d\n", size, (int)ue->ue_id);
     sdap_data_ind(entity->rb_id,
                   entity->is_gnb,
                   entity->has_sdap,
                   entity->has_sdapULheader,
                   entity->pdusession_id,
-                  ue->rnti,
+                  ue->ue_id,
                   buf,
                   size);
   }
@@ -638,7 +638,7 @@ static void deliver_sdu_drb(void *_ue, nr_pdcp_entity_t *entity,
       }
 
       LOG_E(PDCP, "%s:%d:%s: fatal, no RB found for ue %d\n",
-            __FILE__, __LINE__, __FUNCTION__, ue->rnti);
+            __FILE__, __LINE__, __FUNCTION__, (int)ue->ue_id);
       exit(1);
 
     rb_found:
@@ -649,7 +649,7 @@ static void deliver_sdu_drb(void *_ue, nr_pdcp_entity_t *entity,
                     ue->drb[rb_id-1]->has_sdap,
                     ue->drb[rb_id-1]->has_sdapULheader,
                     ue->drb[rb_id-1]->pdusession_id,
-                    ue->rnti,
+                    ue->ue_id,
                     buf,
                     size);
     }
@@ -673,7 +673,7 @@ static void deliver_pdu_drb(void *_ue, nr_pdcp_entity_t *entity,
   }
 
   LOG_E(PDCP, "%s:%d:%s: fatal, no RB found for ue %d\n",
-        __FILE__, __LINE__, __FUNCTION__, ue->rnti);
+        __FILE__, __LINE__, __FUNCTION__, (int)ue->ue_id);
   exit(1);
 
 rb_found:
@@ -685,7 +685,7 @@ rb_found:
   ctxt.eNB_index = 0;
   ctxt.brOption = 0;
 
-  ctxt.rnti = ue->rnti;
+  ctxt.rnti = ue->ue_id;
   if (RC.nrrrc != NULL && NODE_IS_CU(RC.nrrrc[0]->node_type)) {
     MessageDef  *message_p = itti_alloc_new_message_sized(TASK_PDCP_ENB, 0,
 							  GTPV1U_GNB_TUNNEL_DATA_REQ,
@@ -700,7 +700,7 @@ rb_found:
     req->buffer        = gtpu_buffer_p;
     req->length        = size;
     req->offset        = GTPU_HEADER_OVERHEAD_MAX;
-    req->rnti          = ue->rnti;
+    req->rnti          = ue->ue_id;
     req->pdusession_id = rb_id;
     LOG_I(PDCP, "%s() (drb %d) sending message to gtp size %d\n",
 	  __func__, rb_id, size);
@@ -732,7 +732,7 @@ static void deliver_sdu_srb(void *_ue, nr_pdcp_entity_t *entity,
   }
 
   LOG_E(PDCP, "%s:%d:%s: fatal, no SRB found for ue %d\n",
-	__FILE__, __LINE__, __FUNCTION__, ue->rnti);
+	__FILE__, __LINE__, __FUNCTION__, (int)ue->ue_id);
   exit(1);
 
 srb_found:
@@ -740,7 +740,7 @@ srb_found:
     MessageDef *message_p = itti_alloc_new_message(TASK_PDCP_GNB, 0, F1AP_UL_RRC_MESSAGE);
     AssertFatal(message_p != NULL, "OUT OF MEMORY\n");
     f1ap_ul_rrc_message_t *ul_rrc = &F1AP_UL_RRC_MESSAGE(message_p);
-    ul_rrc->rnti = ue->rnti;
+    ul_rrc->rnti = ue->ue_id;
     ul_rrc->srb_id = srb_id;
     ul_rrc->rrc_container = malloc(size);
     AssertFatal(ul_rrc->rrc_container != NULL, "OUT OF MEMORY\n");
@@ -756,7 +756,7 @@ srb_found:
     NR_RRC_DCCH_DATA_IND(message_p).dcch_index = srb_id;
     NR_RRC_DCCH_DATA_IND(message_p).sdu_p = rrc_buffer_p;
     NR_RRC_DCCH_DATA_IND(message_p).sdu_size = size;
-    NR_RRC_DCCH_DATA_IND(message_p).rnti = ue->rnti;
+    NR_RRC_DCCH_DATA_IND(message_p).rnti = ue->ue_id;
     itti_send_msg_to_task(TASK_RRC_NRUE, 0, message_p);
   }
 }
@@ -778,7 +778,7 @@ static void deliver_pdu_srb(void *_ue, nr_pdcp_entity_t *entity,
   }
 
   LOG_E(PDCP, "%s:%d:%s: fatal, no SRB found for ue %d\n",
-        __FILE__, __LINE__, __FUNCTION__, ue->rnti);
+        __FILE__, __LINE__, __FUNCTION__, (int)ue->ue_id);
   exit(1);
 
 srb_found:
@@ -796,7 +796,7 @@ srb_found:
     ctxt.eNB_index = 0;
     ctxt.brOption = 0;
 
-    ctxt.rnti = ue->rnti;
+    ctxt.rnti = ue->ue_id;
 
     memblock = get_free_mem_block(size, __FUNCTION__);
     memcpy(memblock->data, buf, size);
@@ -811,7 +811,7 @@ srb_found:
     F1AP_DL_RRC_MESSAGE (message_p).gNB_CU_ue_id         = 0;
     F1AP_DL_RRC_MESSAGE (message_p).gNB_DU_ue_id         = 0;
     F1AP_DL_RRC_MESSAGE (message_p).old_gNB_DU_ue_id     = 0xFFFFFFFF; // unknown
-    F1AP_DL_RRC_MESSAGE (message_p).rnti                 = ue->rnti;
+    F1AP_DL_RRC_MESSAGE (message_p).rnti                 = ue->ue_id;
     F1AP_DL_RRC_MESSAGE (message_p).srb_id               = srb_id;
     F1AP_DL_RRC_MESSAGE (message_p).execute_duplication  = 1;
     F1AP_DL_RRC_MESSAGE (message_p).RAT_frequency_priority_information.en_dc = 0;
diff --git a/openair2/LAYER2/nr_pdcp/nr_pdcp_ue_manager.c b/openair2/LAYER2/nr_pdcp/nr_pdcp_ue_manager.c
index 1f21593c630..11b826399b5 100644
--- a/openair2/LAYER2/nr_pdcp/nr_pdcp_ue_manager.c
+++ b/openair2/LAYER2/nr_pdcp/nr_pdcp_ue_manager.c
@@ -24,6 +24,7 @@
 #include <pthread.h>
 #include <stdlib.h>
 #include <string.h>
+#include <inttypes.h>
 
 #include "LOG/log.h"
 
@@ -75,17 +76,17 @@ void nr_pdcp_manager_unlock(nr_pdcp_ue_manager_t *_m)
 }
 
 /* must be called with lock acquired */
-nr_pdcp_ue_t *nr_pdcp_manager_get_ue(nr_pdcp_ue_manager_t *_m, int rnti)
+nr_pdcp_ue_t *nr_pdcp_manager_get_ue(nr_pdcp_ue_manager_t *_m, ue_id_t ue_id)
 {
   /* TODO: optimze */
   nr_pdcp_ue_manager_internal_t *m = _m;
   int i;
 
   for (i = 0; i < m->ue_count; i++)
-    if (m->ue_list[i]->rnti == rnti)
+    if (m->ue_list[i]->ue_id == ue_id)
       return m->ue_list[i];
 
-  LOG_D(PDCP, "%s:%d:%s: new UE 0x%x\n", __FILE__, __LINE__, __FUNCTION__, rnti);
+  LOG_D(PDCP, "%s:%d:%s: new UE 0x%"PRIx64"\n", __FILE__, __LINE__, __FUNCTION__, ue_id);
 
   m->ue_count++;
   m->ue_list = realloc(m->ue_list, sizeof(nr_pdcp_ue_t *) * m->ue_count);
@@ -99,13 +100,13 @@ nr_pdcp_ue_t *nr_pdcp_manager_get_ue(nr_pdcp_ue_manager_t *_m, int rnti)
     exit(1);
   }
 
-  m->ue_list[m->ue_count-1]->rnti = rnti;
+  m->ue_list[m->ue_count-1]->ue_id = ue_id;
 
   return m->ue_list[m->ue_count-1];
 }
 
 /* must be called with lock acquired */
-void nr_pdcp_manager_remove_ue(nr_pdcp_ue_manager_t *_m, int rnti)
+void nr_pdcp_manager_remove_ue(nr_pdcp_ue_manager_t *_m, ue_id_t ue_id)
 {
   nr_pdcp_ue_manager_internal_t *m = _m;
   nr_pdcp_ue_t *ue;
@@ -113,13 +114,13 @@ void nr_pdcp_manager_remove_ue(nr_pdcp_ue_manager_t *_m, int rnti)
   int j;
 
   for (i = 0; i < m->ue_count; i++)
-    if (m->ue_list[i]->rnti == rnti)
+    if (m->ue_list[i]->ue_id == ue_id)
       break;
 
   if (i == m->ue_count) {
-    LOG_D(PDCP, "%s:%d:%s: warning: ue %d not found\n",
+    LOG_D(PDCP, "%s:%d:%s: warning: ue 0x%"PRIx64" not found\n",
           __FILE__, __LINE__, __FUNCTION__,
-          rnti);
+          ue_id);
     return;
   }
 
@@ -203,10 +204,11 @@ int nr_pdcp_manager_get_ue_count(nr_pdcp_ue_manager_t *_m)
   return m->ue_count;
 }
 
-int nr_pdcp_get_first_rnti(nr_pdcp_ue_manager_t *_m)
+int nr_pdcp_get_first_ue_id(nr_pdcp_ue_manager_t *_m, ue_id_t *ret)
 {
   nr_pdcp_ue_manager_internal_t *m = _m;
   if (m->ue_count == 0)
-    return -1;
-  return m->ue_list[0]->rnti;
+    return 0;
+  *ret = m->ue_list[0]->ue_id;
+  return 1;
 }
diff --git a/openair2/LAYER2/nr_pdcp/nr_pdcp_ue_manager.h b/openair2/LAYER2/nr_pdcp/nr_pdcp_ue_manager.h
index 742e0e84be8..010c43864ba 100644
--- a/openair2/LAYER2/nr_pdcp/nr_pdcp_ue_manager.h
+++ b/openair2/LAYER2/nr_pdcp/nr_pdcp_ue_manager.h
@@ -24,10 +24,12 @@
 
 #include "nr_pdcp_entity.h"
 
+#include "platform_types.h"
+
 typedef void nr_pdcp_ue_manager_t;
 
 typedef struct nr_pdcp_ue_t {
-  int rnti;
+  ue_id_t ue_id;
   nr_pdcp_entity_t *srb[3];
   nr_pdcp_entity_t *drb[5];
 } nr_pdcp_ue_t;
@@ -43,8 +45,8 @@ int nr_pdcp_manager_get_enb_flag(nr_pdcp_ue_manager_t *m);
 void nr_pdcp_manager_lock(nr_pdcp_ue_manager_t *m);
 void nr_pdcp_manager_unlock(nr_pdcp_ue_manager_t *m);
 
-nr_pdcp_ue_t *nr_pdcp_manager_get_ue(nr_pdcp_ue_manager_t *m, int rnti);
-void nr_pdcp_manager_remove_ue(nr_pdcp_ue_manager_t *m, int rnti);
+nr_pdcp_ue_t *nr_pdcp_manager_get_ue(nr_pdcp_ue_manager_t *m, ue_id_t ue_id);
+void nr_pdcp_manager_remove_ue(nr_pdcp_ue_manager_t *m, ue_id_t ue_id);
 
 nr_pdcp_ue_t **nr_pdcp_manager_get_ue_list(nr_pdcp_ue_manager_t *_m);
 int nr_pdcp_manager_get_ue_count(nr_pdcp_ue_manager_t *_m);
@@ -62,7 +64,7 @@ void nr_pdcp_ue_add_drb_pdcp_entity(nr_pdcp_ue_t *ue, int drb_id,
 /* hacks                                                               */
 /***********************************************************************/
 
-/* returns -1 if no UE */
-int nr_pdcp_get_first_rnti(nr_pdcp_ue_manager_t *m);
+/* returns 0 if no UE, 1 otherwise */
+int nr_pdcp_get_first_ue_id(nr_pdcp_ue_manager_t *m, ue_id_t *ret);
 
 #endif /* _NR_PDCP_UE_MANAGER_H_ */
diff --git a/openair2/SDAP/nr_sdap/nr_sdap.c b/openair2/SDAP/nr_sdap/nr_sdap.c
index 6457843ae06..6f0033e91e4 100644
--- a/openair2/SDAP/nr_sdap/nr_sdap.c
+++ b/openair2/SDAP/nr_sdap/nr_sdap.c
@@ -25,6 +25,7 @@ uint8_t nas_qfi;
 uint8_t nas_pduid;
 
 bool sdap_data_req(protocol_ctxt_t *ctxt_p,
+                   const ue_id_t ue_id,
                    const srb_flag_t srb_flag,
                    const rb_id_t rb_id,
                    const mui_t mui,
@@ -38,10 +39,10 @@ bool sdap_data_req(protocol_ctxt_t *ctxt_p,
                    const bool rqi,
                    const int pdusession_id) {
   nr_sdap_entity_t *sdap_entity;
-  sdap_entity = nr_sdap_get_entity(ctxt_p->rnti, pdusession_id);
+  sdap_entity = nr_sdap_get_entity(ue_id, pdusession_id);
 
   if(sdap_entity == NULL) {
-    LOG_E(SDAP, "%s:%d:%s: Entity not found with ue rnti: %x and pdusession id: %d\n", __FILE__, __LINE__, __FUNCTION__, ctxt_p->rnti, pdusession_id);
+    LOG_E(SDAP, "%s:%d:%s: Entity not found with ue: 0x%"PRIx64" and pdusession id: %d\n", __FILE__, __LINE__, __FUNCTION__, ue_id, pdusession_id);
     return 0;
   }
 
@@ -66,11 +67,11 @@ void sdap_data_ind(rb_id_t pdcp_entity,
                    int has_sdap,
                    int has_sdapULheader,
                    int pdusession_id,
-                   int rnti,
+                   ue_id_t ue_id,
                    char *buf,
                    int size) {
   nr_sdap_entity_t *sdap_entity;
-  sdap_entity = nr_sdap_get_entity(rnti, pdusession_id);
+  sdap_entity = nr_sdap_get_entity(ue_id, pdusession_id);
 
   if(sdap_entity == NULL) {
     LOG_E(SDAP, "%s:%d:%s: Entity not found\n", __FILE__, __LINE__, __FUNCTION__);
@@ -83,7 +84,7 @@ void sdap_data_ind(rb_id_t pdcp_entity,
                          has_sdap,
                          has_sdapULheader,
                          pdusession_id,
-                         rnti,
+                         ue_id,
                          buf,
                          size);
 }
diff --git a/openair2/SDAP/nr_sdap/nr_sdap.h b/openair2/SDAP/nr_sdap/nr_sdap.h
index ea4fe7f74dc..54447ebb68e 100644
--- a/openair2/SDAP/nr_sdap/nr_sdap.h
+++ b/openair2/SDAP/nr_sdap/nr_sdap.h
@@ -33,6 +33,7 @@
  * Uplink   - nrUE
  */
 bool sdap_data_req(protocol_ctxt_t *ctxt_p,
+                   const ue_id_t ue_id,
                    const srb_flag_t srb_flag,
                    const rb_id_t rb_id,
                    const mui_t mui,
@@ -57,7 +58,7 @@ void sdap_data_ind(rb_id_t pdcp_entity,
                    int has_sdap,
                    int has_sdapULheader,
                    int pdusession_id,
-                   int rnti,
+                   ue_id_t ue_id,
                    char *buf,
                    int size
                   );
diff --git a/openair2/SDAP/nr_sdap/nr_sdap_entity.c b/openair2/SDAP/nr_sdap/nr_sdap_entity.c
index c1fcdced796..80057a34cc8 100644
--- a/openair2/SDAP/nr_sdap/nr_sdap_entity.c
+++ b/openair2/SDAP/nr_sdap/nr_sdap_entity.c
@@ -171,7 +171,7 @@ static void nr_sdap_rx_entity(nr_sdap_entity_t *entity,
                               int has_sdap,
                               int has_sdapHeader,
                               int pdusession_id,
-                              int rnti,
+                              ue_id_t ue_id,
                               char *buf,
                               int size) {
   /* The offset of the SDAP header, it might be 0 if the has_sdap is not true in the pdcp entity. */
@@ -203,13 +203,13 @@ static void nr_sdap_rx_entity(nr_sdap_entity_t *entity,
                                                          sizeof(gtpv1u_gnb_tunnel_data_req_t)
                                                            + size + GTPU_HEADER_OVERHEAD_MAX - offset);
     AssertFatal(message_p != NULL, "OUT OF MEMORY");
-    gtpv1u_gnb_tunnel_data_req_t *req = &GTPV1U_GNB_TUNNEL_DATA_REQ(message_p);
+    gtpv1u_gnb_tunnel_data_req_t *req = &GTPV1U_TUNNEL_DATA_REQ(message_p);
     uint8_t *gtpu_buffer_p = (uint8_t *) (req + 1);
     memcpy(gtpu_buffer_p + GTPU_HEADER_OVERHEAD_MAX, buf + offset, size - offset);
     req->buffer        = gtpu_buffer_p;
     req->length        = size - offset;
     req->offset        = GTPU_HEADER_OVERHEAD_MAX;
-    req->rnti          = rnti;
+    req->rnti          = ur_id;
     req->pdusession_id = pdusession_id;
     LOG_D(SDAP, "%s()  sending message to gtp size %d\n", __func__,  size-offset);
     itti_send_msg_to_task(TASK_GTPV1_U, INSTANCE_DEFAULT, message_p);
@@ -245,7 +245,7 @@ static void nr_sdap_rx_entity(nr_sdap_entity_t *entity,
         if(!entity->qfi2drb_table[sdap_hdr->QFI].drb_id && entity->default_drb){
           nr_sdap_ul_hdr_t sdap_ctrl_pdu = entity->sdap_construct_ctrl_pdu(sdap_hdr->QFI);
           rb_id_t sdap_ctrl_pdu_drb = entity->sdap_map_ctrl_pdu(entity, pdcp_entity, SDAP_CTRL_PDU_MAP_DEF_DRB, sdap_hdr->QFI);
-          entity->sdap_submit_ctrl_pdu(rnti, sdap_ctrl_pdu_drb, sdap_ctrl_pdu);
+          entity->sdap_submit_ctrl_pdu(ue_id, sdap_ctrl_pdu_drb, sdap_ctrl_pdu);
         }
 
         /*
@@ -261,7 +261,7 @@ static void nr_sdap_rx_entity(nr_sdap_entity_t *entity,
              has_sdapHeader ){
           nr_sdap_ul_hdr_t sdap_ctrl_pdu = entity->sdap_construct_ctrl_pdu(sdap_hdr->QFI);
           rb_id_t sdap_ctrl_pdu_drb = entity->sdap_map_ctrl_pdu(entity, pdcp_entity, SDAP_CTRL_PDU_MAP_RULE_DRB, sdap_hdr->QFI);
-          entity->sdap_submit_ctrl_pdu(rnti, sdap_ctrl_pdu_drb, sdap_ctrl_pdu);
+          entity->sdap_submit_ctrl_pdu(ue_id, sdap_ctrl_pdu_drb, sdap_ctrl_pdu);
         }
 
         /*
diff --git a/openair2/SDAP/nr_sdap/nr_sdap_entity.h b/openair2/SDAP/nr_sdap/nr_sdap_entity.h
index 635289d4d48..a5572d42eab 100644
--- a/openair2/SDAP/nr_sdap/nr_sdap_entity.h
+++ b/openair2/SDAP/nr_sdap/nr_sdap_entity.h
@@ -104,7 +104,7 @@ typedef struct nr_sdap_entity_s {
                     int has_sdap,
                     int has_sdapULheader,
                     int pdusession_id,
-                    int rnti,
+                    ue_id_t ue_id,
                     char *buf,
                     int size);
 
diff --git a/openair3/ocp-gtpu/gtp_itf.h b/openair3/ocp-gtpu/gtp_itf.h
index 7951c4db09b..6372712c710 100644
--- a/openair3/ocp-gtpu/gtp_itf.h
+++ b/openair3/ocp-gtpu/gtp_itf.h
@@ -20,6 +20,7 @@ typedef bool (*gtpCallback)(protocol_ctxt_t  *ctxt_pP,
                             const uint32_t *destinationL2Id);
 
 typedef bool (*gtpCallbackSDAP)(protocol_ctxt_t  *ctxt_pP,
+                                const ue_id_t        ue_id,
                                 const srb_flag_t     srb_flagP,
                                 const rb_id_t        rb_idP,
                                 const mui_t          muiP,
-- 
GitLab