diff --git a/openair2/ENB_APP/flexran_agent_ran_api.c b/openair2/ENB_APP/flexran_agent_ran_api.c
index c274455a532abf1206499218e5c5e255f50b6802..15532e086b64f937dd5bd63299890ef33434ee2e 100644
--- a/openair2/ENB_APP/flexran_agent_ran_api.c
+++ b/openair2/ENB_APP/flexran_agent_ran_api.c
@@ -747,7 +747,35 @@ uint8_t flexran_get_num_pdcch_symb(mid_t mod_id, uint8_t cc_id)
  * Get Messages for UE Configuration Reply
  * ************************************
  */
+int flexran_get_rrc_num_ues(mid_t mod_id)
+{
+  if (!rrc_is_present(mod_id)) return 0;
+  return RC.rrc[mod_id]->Nb_ue;
+}
 
+rnti_t flexran_get_rrc_rnti_nth_ue(mid_t mod_id, int index)
+{
+  if (!rrc_is_present(mod_id)) return 0;
+  struct rrc_eNB_ue_context_s* ue_context_p = NULL;
+  RB_FOREACH(ue_context_p, rrc_ue_tree_s, &RC.rrc[mod_id]->rrc_ue_head) {
+    if (index == 0) return ue_context_p->ue_context.rnti;
+    --index;
+  }
+  return 0;
+}
+
+int flexran_get_rrc_rnti_list(mid_t mod_id, rnti_t *list, int max_list)
+{
+  if (!rrc_is_present(mod_id)) return 0;
+  int n = 0;
+  struct rrc_eNB_ue_context_s* ue_context_p = NULL;
+  RB_FOREACH(ue_context_p, rrc_ue_tree_s, &RC.rrc[mod_id]->rrc_ue_head) {
+    if (n >= max_list) break;
+    list[n] = ue_context_p->ue_context.rnti;
+    ++n;
+  }
+  return n;
+}
 
 TimeAlignmentTimer_t flexran_get_time_alignment_timer(mid_t mod_id, mid_t ue_id)
 {
diff --git a/openair2/ENB_APP/flexran_agent_ran_api.h b/openair2/ENB_APP/flexran_agent_ran_api.h
index 2b0652939a3b4752af6c12cf4a8f8fd6f457d4bb..ada2cbd30cc80a149451f9eb4554bf471f8f4051 100644
--- a/openair2/ENB_APP/flexran_agent_ran_api.h
+++ b/openair2/ENB_APP/flexran_agent_ran_api.h
@@ -304,6 +304,16 @@ Protocol__FlexPhichDuration flexran_get_phich_duration(mid_t mod_id, uint8_t cc_
  * Get Messages for UE Configuration Reply
  * ************************************
  */
+/* Get the number of attached UEs for the RRC */
+int flexran_get_rrc_num_ues(mid_t mod_id);
+
+/* Get the RNTI of UE at index 'index' in RRC list */
+rnti_t flexran_get_rrc_rnti_nth_ue(mid_t mod_id, int index);
+
+/* Get the list of RNTIs of up to max_list entries.  When max_list >=
+ * flexran_get_rrc_num_ues(), gets a list of all UEs registered in the RRC. UE
+ * RNTIs are saved in list, returns number of saved RNTIs */
+int flexran_get_rrc_rnti_list(mid_t mod_id, rnti_t *list, int max_list);
 
 /* Get timer in subframes. Controls the synchronization
    status of the UE, not the actual timing