This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.
pespin gerrit-no-reply at lists.osmocom.orgpespin has submitted this change and it was merged. ( https://gerrit.osmocom.org/c/osmo-sgsn/+/15158 )
Change subject: gprs_gmm: Introduce macros to access msgb's associated IU UE ctx
......................................................................
gprs_gmm: Introduce macros to access msgb's associated IU UE ctx
Change-Id: I4d1d47af332d4557e8a3a70c1055bcc172166016
---
M src/gprs/gprs_gmm.c
1 file changed, 20 insertions(+), 22 deletions(-)
Approvals:
Jenkins Builder: Verified
lynxis lazus: Looks good to me, approved
diff --git a/src/gprs/gprs_gmm.c b/src/gprs/gprs_gmm.c
index 3465a52..c93ddf4 100644
--- a/src/gprs/gprs_gmm.c
+++ b/src/gprs/gprs_gmm.c
@@ -116,6 +116,12 @@
{ 0, NULL }
};
+/* On RANAP, Returns pointer to he associated ranap_ue_conn_ctx in msg, filled
+ * in by osmo-iuh's iu_recv_cb().
+ * On Gb, returns NULL */
+#define MSG_IU_UE_CTX(msg) ((struct ranap_ue_conn_ctx *)(msg)->dst)
+#define MSG_IU_UE_CTX_SET(msg, val) (msg)->dst = (val)
+
static int gsm48_gmm_authorize(struct sgsn_mm_ctx *ctx);
static void mmctx_change_gtpu_endpoints_to_sgsn(struct sgsn_mm_ctx *mm_ctx)
@@ -271,10 +277,7 @@
}
#ifdef BUILD_IU
- /* In Iu mode, msg->dst contains the ranap_ue_conn_ctx pointer, in Gb mode
- * dst is empty. */
- /* FIXME: have a more explicit indicator for Iu messages */
- if (msg->dst)
+ if (MSG_IU_UE_CTX(msg))
return ranap_iu_tx(msg, GPRS_SAPI_GMM);
#endif
@@ -289,7 +292,7 @@
msgb_tlli(msg) = msgb_tlli(old);
msgb_bvci(msg) = msgb_bvci(old);
msgb_nsei(msg) = msgb_nsei(old);
- msg->dst = old->dst;
+ MSG_IU_UE_CTX_SET(msg, MSG_IU_UE_CTX(old));
}
/* Store BVCI/NSEI in MM context */
@@ -298,7 +301,7 @@
mm->gb.bvci = msgb_bvci(msg);
mm->gb.nsei = msgb_nsei(msg);
/* In case a Iu connection is reconnected we need to update the ue ctx */
- mm->iu.ue_ctx = msg->dst;
+ mm->iu.ue_ctx = MSG_IU_UE_CTX(msg);
if (mm->ran_type == MM_CTX_T_UTRAN_Iu
&& mm->iu.ue_ctx) {
#ifdef BUILD_IU
@@ -314,7 +317,7 @@
msgb_tlli(msg) = mm->gb.tlli;
msgb_bvci(msg) = mm->gb.bvci;
msgb_nsei(msg) = mm->gb.nsei;
- msg->dst = mm->iu.ue_ctx;
+ MSG_IU_UE_CTX_SET(msg, mm->iu.ue_ctx);
}
static void mm_ctx_cleanup_free(struct sgsn_mm_ctx *ctx, const char *log_text)
@@ -1290,15 +1293,12 @@
* with a foreign TLLI (P-TMSI that was allocated to the MS before),
* or with random TLLI. */
- /* In Iu mode, msg->dst contains the ranap_ue_conn_ctx pointer, in Gb mode
- * dst is empty. */
- /* FIXME: have a more explicit indicator for Iu messages */
- if (!msg->dst) {
+ if (!MSG_IU_UE_CTX(msg)) {
/* Gb mode */
cid = bssgp_parse_cell_id(&ra_id, msgb_bcid(msg));
} else {
#ifdef BUILD_IU
- ra_id = ((struct ranap_ue_conn_ctx*)msg->dst)->ra_id;
+ ra_id = MSG_IU_UE_CTX(msg)->ra_id;
#else
LOGMMCTXP(LOGL_ERROR, ctx, "Cannot handle Iu Attach Request, built without Iu support\n");
return -ENOTSUP;
@@ -1354,8 +1354,8 @@
if (!ctx)
ctx = sgsn_mm_ctx_by_imsi(mi_string);
if (!ctx) {
- if (msg->dst)
- ctx = sgsn_mm_ctx_alloc_iu(msg->dst);
+ if (MSG_IU_UE_CTX(msg))
+ ctx = sgsn_mm_ctx_alloc_iu(MSG_IU_UE_CTX(msg));
else
ctx = sgsn_mm_ctx_alloc_gb(0, &ra_id);
if (!ctx) {
@@ -1379,8 +1379,8 @@
if (!ctx) {
/* Allocate a context as most of our code expects one.
* Context will not have an IMSI ultil ID RESP is received */
- if (msg->dst)
- ctx = sgsn_mm_ctx_alloc_iu(msg->dst);
+ if (MSG_IU_UE_CTX(msg))
+ ctx = sgsn_mm_ctx_alloc_iu(MSG_IU_UE_CTX(msg));
else
ctx = sgsn_mm_ctx_alloc_gb(msgb_tlli(msg), &ra_id);
if (!ctx) {
@@ -1697,10 +1697,8 @@
* is an optimization to avoid the RA reject (impl detached)
* below, which will cause a new attach cycle. */
/* Look-up the MM context based on old RA-ID and TLLI */
- /* In Iu mode, msg->dst contains the ranap_ue_conn_ctx pointer, in Gb
- * mode dst is empty. */
- /* FIXME: have a more explicit indicator for Iu messages */
- if (!msg->dst) {
+ if (!MSG_IU_UE_CTX(msg)) {
+ /* Gb */
mmctx = sgsn_mm_ctx_by_tlli_and_ptmsi(msgb_tlli(msg), &old_ra_id);
} else if (TLVP_PRESENT(&tp, GSM48_IE_GMM_ALLOC_PTMSI)) {
#ifdef BUILD_IU
@@ -1847,7 +1845,7 @@
LOGMMCTXP(LOGL_INFO, ctx, "-> GMM SERVICE REQUEST ");
/* This message is only valid in Iu mode */
- if (!msg->dst) {
+ if (!MSG_IU_UE_CTX(msg)) {
LOGPC(DMM, LOGL_INFO, "Invalid if not in Iu mode\n");
return -1;
}
@@ -2904,7 +2902,7 @@
struct sgsn_mm_ctx *mmctx;
int rc = -EINVAL;
- mmctx = sgsn_mm_ctx_by_ue_ctx(msg->dst);
+ mmctx = sgsn_mm_ctx_by_ue_ctx(MSG_IU_UE_CTX(msg));
if (mmctx) {
rate_ctr_inc(&mmctx->ctrg->ctr[GMM_CTR_PKTS_SIG_IN]);
if (ra_id)
--
To view, visit https://gerrit.osmocom.org/c/osmo-sgsn/+/15158
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-sgsn
Gerrit-Branch: master
Gerrit-Change-Id: I4d1d47af332d4557e8a3a70c1055bcc172166016
Gerrit-Change-Number: 15158
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <pespin at sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: lynxis lazus <lynxis at fe80.eu>
Gerrit-Reviewer: pespin <pespin at sysmocom.de>
Gerrit-MessageType: merged
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20190813/c936af8d/attachment.htm>