lynxis lazus has submitted this change. (
https://gerrit.osmocom.org/c/osmo-iuh/+/38947?usp=email )
(
10 is the latest approved patch-set.
No files were changed between the latest approved patch-set and the submitted one.
)Change subject: iu_client: add a new event NEW_AREA
......................................................................
iu_client: add a new event NEW_AREA
When the IU client learns a new LAC/RAC or
the LAC/RAC has moved from one RNC to another RNC,
inform the user via an event.
Allows the SGSN to track RACs which uses Iu.
Change-Id: I8b1b8c58bf72b00e2705ca87a89a91481bac3470
---
M TODO-RELEASE
M include/osmocom/ranap/iu_client.h
M src/iu_client.c
3 files changed, 39 insertions(+), 2 deletions(-)
Approvals:
pespin: Looks good to me, approved
laforge: Looks good to me, but someone else must approve
Jenkins Builder: Verified
diff --git a/TODO-RELEASE b/TODO-RELEASE
index ac52f44..b583f7e 100644
--- a/TODO-RELEASE
+++ b/TODO-RELEASE
@@ -10,3 +10,4 @@
libosmo-ranap add API ranap_ran_rx_co_decode2()
libosmo-ranap deprecate API ranap_ran_rx_co_decode()
libosmo-ranap add API iu_client.h: add ranap_iu_page_cs2/ranap_iu_page_ps2
+libosmo-ranap new event RANAP_IU_EVENT_NEW_AREA
diff --git a/include/osmocom/ranap/iu_client.h b/include/osmocom/ranap/iu_client.h
index 86ae874..465a17d 100644
--- a/include/osmocom/ranap/iu_client.h
+++ b/include/osmocom/ranap/iu_client.h
@@ -38,11 +38,26 @@
struct osmo_timer_list release_timeout;
};
+enum ranap_iu_event_new_area_type {
+ RANAP_IU_NEW_LAC,
+ RANAP_IU_NEW_RAC,
+};
+
+struct ranap_iu_event_new_area {
+ const struct osmo_rnc_id *rnc_id;
+ enum ranap_iu_event_new_area_type cell_type;
+ union {
+ const struct osmo_location_area_id *lai;
+ const struct osmo_routing_area_id *rai;
+ } u;
+};
+
enum ranap_iu_event_type {
RANAP_IU_EVENT_RAB_ASSIGN,
RANAP_IU_EVENT_SECURITY_MODE_COMPLETE,
RANAP_IU_EVENT_IU_RELEASE, /* An actual Iu Release message was received */
RANAP_IU_EVENT_LINK_INVALIDATED, /* A SUA link was lost or closed down */
+ RANAP_IU_EVENT_NEW_AREA, /* Either a new LAC/RAC has been detected */
};
extern const struct value_string ranap_iu_event_type_names[];
diff --git a/src/iu_client.c b/src/iu_client.c
index ce3030e..90fd1dc 100644
--- a/src/iu_client.c
+++ b/src/iu_client.c
@@ -116,6 +116,7 @@
OSMO_VALUE_STRING(RANAP_IU_EVENT_SECURITY_MODE_COMPLETE),
OSMO_VALUE_STRING(RANAP_IU_EVENT_IU_RELEASE),
OSMO_VALUE_STRING(RANAP_IU_EVENT_LINK_INVALIDATED),
+ OSMO_VALUE_STRING(RANAP_IU_EVENT_NEW_AREA),
{ 0, NULL }
};
@@ -126,7 +127,7 @@
if (!global_iu_event_cb)
return 0;
- if (!ue_ctx->notification)
+ if (ue_ctx && !ue_ctx->notification)
return 0;
LOGPIU(LOGL_DEBUG, "Submit Iu event to upper layer: %s\n",
ranap_iu_event_type_str(type));
@@ -134,6 +135,25 @@
return global_iu_event_cb(ue_ctx, type, data);
}
+static void global_iu_event_new_area(const struct osmo_rnc_id *rnc_id, const struct
osmo_routing_area_id *rai)
+{
+ struct ranap_iu_event_new_area new_area = (struct ranap_iu_event_new_area) {
+ .rnc_id = rnc_id,
+ .cell_type = RANAP_IU_NEW_RAC
+ };
+
+ if (rai->rac == OSMO_RESERVED_RAC) {
+ new_area.cell_type = RANAP_IU_NEW_LAC;
+ new_area.u.lai = &rai->lac;
+ } else {
+ new_area.cell_type = RANAP_IU_NEW_RAC;
+ new_area.u.rai = rai;
+ }
+
+ global_iu_event(NULL, RANAP_IU_EVENT_NEW_AREA, &new_area);
+}
+
+
static void ue_conn_ctx_release_timeout_cb(void *ctx_)
{
struct ranap_ue_conn_ctx *ctx = (struct ranap_ue_conn_ctx *)ctx_;
@@ -330,12 +350,14 @@
llist_del(&lre->entry);
llist_add(&lre->entry, &rnc->lac_rac_list);
+ global_iu_event_new_area(rnc_id, rai);
} else if (!old_rnc) {
/* LAC, RAC not recorded yet */
LOGPIU(LOGL_NOTICE, "RNC %s: new LAC/RAC %s\n", osmo_rnc_id_name(rnc_id),
osmo_rai_name2(rai));
lre = talloc_zero(rnc, struct iu_lac_rac_entry);
lre->rai = *rai;
llist_add(&lre->entry, &rnc->lac_rac_list);
+ global_iu_event_new_area(rnc_id, rai);
}
/* else, LAC,RAC already recorded with the current RNC. */
@@ -959,7 +981,6 @@
return paged;
}
-
/***********************************************************************
*
***********************************************************************/
--
To view, visit
https://gerrit.osmocom.org/c/osmo-iuh/+/38947?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: merged
Gerrit-Project: osmo-iuh
Gerrit-Branch: master
Gerrit-Change-Id: I8b1b8c58bf72b00e2705ca87a89a91481bac3470
Gerrit-Change-Number: 38947
Gerrit-PatchSet: 20
Gerrit-Owner: lynxis lazus <lynxis(a)fe80.eu>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: lynxis lazus <lynxis(a)fe80.eu>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>