<p>pespin <strong>merged</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/osmo-sgsn/+/15338">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  laforge: Looks good to me, but someone else must approve
  osmith: Looks good to me, approved
  Jenkins Builder: Verified

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">Merge common allocation steps for Gb and Iu ctx<br><br>This way it's easier to add new common functionalitites without<br>forgetting to add it on both sides, and simplifies the code.<br><br>Change-Id: Ib6c0427ac7b35295cf1caf2f28cb2a5c155b9d9c<br>---<br>M src/gprs/gprs_sgsn.c<br>1 file changed, 27 insertions(+), 30 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/gprs/gprs_sgsn.c b/src/gprs/gprs_sgsn.c</span><br><span>index 2116590..6acc66e 100644</span><br><span>--- a/src/gprs/gprs_sgsn.c</span><br><span>+++ b/src/gprs/gprs_sgsn.c</span><br><span>@@ -214,9 +214,8 @@</span><br><span> </span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/* Allocate a new SGSN MM context for GERAN_Gb */</span><br><span style="color: hsl(0, 100%, 40%);">-struct sgsn_mm_ctx *sgsn_mm_ctx_alloc_gb(uint32_t tlli,</span><br><span style="color: hsl(0, 100%, 40%);">-                                   const struct gprs_ra_id *raid)</span><br><span style="color: hsl(120, 100%, 40%);">+/* Allocate a new SGSN MM context, generic part */</span><br><span style="color: hsl(120, 100%, 40%);">+struct sgsn_mm_ctx *sgsn_mm_ctx_alloc(uint32_t rate_ctr_id)</span><br><span> {</span><br><span>         struct sgsn_mm_ctx *ctx;</span><br><span> </span><br><span>@@ -224,16 +223,9 @@</span><br><span>  if (!ctx)</span><br><span>            return NULL;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        memcpy(&ctx->ra, raid, sizeof(ctx->ra));</span><br><span style="color: hsl(0, 100%, 40%);">-      ctx->ran_type = MM_CTX_T_GERAN_Gb;</span><br><span style="color: hsl(0, 100%, 40%);">-   ctx->gb.tlli = tlli;</span><br><span>      ctx->gmm_state = GMM_DEREGISTERED;</span><br><span style="color: hsl(0, 100%, 40%);">-   ctx->gb.mm_state = MM_IDLE;</span><br><span>       ctx->auth_triplet.key_seq = GSM_KEY_SEQ_INVAL;</span><br><span style="color: hsl(0, 100%, 40%);">-       ctx->ciph_algo = sgsn->cfg.cipher;</span><br><span style="color: hsl(0, 100%, 40%);">-        LOGMMCTXP(LOGL_DEBUG, ctx, "Allocated with %s cipher.\n",</span><br><span style="color: hsl(0, 100%, 40%);">-               get_value_string(gprs_cipher_names, ctx->ciph_algo));</span><br><span style="color: hsl(0, 100%, 40%);">-      ctx->ctrg = rate_ctr_group_alloc(ctx, &mmctx_ctrg_desc, tlli);</span><br><span style="color: hsl(120, 100%, 40%);">+ ctx->ctrg = rate_ctr_group_alloc(ctx, &mmctx_ctrg_desc, rate_ctr_id);</span><br><span>         if (!ctx->ctrg) {</span><br><span>                 LOGMMCTXP(LOGL_ERROR, ctx, "Cannot allocate counter group\n");</span><br><span>             talloc_free(ctx);</span><br><span>@@ -246,40 +238,45 @@</span><br><span> </span><br><span>        return ctx;</span><br><span> }</span><br><span style="color: hsl(120, 100%, 40%);">+/* Allocate a new SGSN MM context for GERAN_Gb */</span><br><span style="color: hsl(120, 100%, 40%);">+struct sgsn_mm_ctx *sgsn_mm_ctx_alloc_gb(uint32_t tlli,</span><br><span style="color: hsl(120, 100%, 40%);">+                                   const struct gprs_ra_id *raid)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+    struct sgsn_mm_ctx *ctx;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/* Allocate a new SGSN MM context */</span><br><span style="color: hsl(120, 100%, 40%);">+      ctx = sgsn_mm_ctx_alloc(tlli);</span><br><span style="color: hsl(120, 100%, 40%);">+        if (!ctx)</span><br><span style="color: hsl(120, 100%, 40%);">+             return NULL;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        memcpy(&ctx->ra, raid, sizeof(ctx->ra));</span><br><span style="color: hsl(120, 100%, 40%);">+    ctx->ran_type = MM_CTX_T_GERAN_Gb;</span><br><span style="color: hsl(120, 100%, 40%);">+ ctx->gb.tlli = tlli;</span><br><span style="color: hsl(120, 100%, 40%);">+       ctx->gb.mm_state = MM_IDLE;</span><br><span style="color: hsl(120, 100%, 40%);">+        ctx->ciph_algo = sgsn->cfg.cipher;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    LOGMMCTXP(LOGL_DEBUG, ctx, "Allocated with %s cipher.\n",</span><br><span style="color: hsl(120, 100%, 40%);">+             get_value_string(gprs_cipher_names, ctx->ciph_algo));</span><br><span style="color: hsl(120, 100%, 40%);">+    return ctx;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/* Allocate a new SGSN MM context for UTRAN_Iu */</span><br><span> struct sgsn_mm_ctx *sgsn_mm_ctx_alloc_iu(void *uectx)</span><br><span> {</span><br><span> #if BUILD_IU</span><br><span>    struct sgsn_mm_ctx *ctx;</span><br><span>     struct ranap_ue_conn_ctx *ue_ctx = uectx;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   ctx = talloc_zero(tall_sgsn_ctx, struct sgsn_mm_ctx);</span><br><span style="color: hsl(120, 100%, 40%);">+ ctx = sgsn_mm_ctx_alloc(ue_ctx->conn_id);</span><br><span>         if (!ctx)</span><br><span>            return NULL;</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+      /* Need to get RAID from IU conn */</span><br><span style="color: hsl(120, 100%, 40%);">+   ctx->ra = ue_ctx->ra_id;</span><br><span>       ctx->ran_type = MM_CTX_T_UTRAN_Iu;</span><br><span>        ctx->iu.ue_ctx = ue_ctx;</span><br><span>  ctx->iu.ue_ctx->rab_assign_addr_enc = sgsn->cfg.iu.rab_assign_addr_enc;</span><br><span>     ctx->iu.new_key = 1;</span><br><span style="color: hsl(0, 100%, 40%);">- ctx->gmm_state = GMM_DEREGISTERED;</span><br><span>        ctx->iu.mm_state = PMM_DETACHED;</span><br><span style="color: hsl(0, 100%, 40%);">-     ctx->auth_triplet.key_seq = GSM_KEY_SEQ_INVAL;</span><br><span style="color: hsl(0, 100%, 40%);">-       ctx->ctrg = rate_ctr_group_alloc(ctx, &mmctx_ctrg_desc, ue_ctx->conn_id);</span><br><span style="color: hsl(0, 100%, 40%);">-     if (!ctx->ctrg) {</span><br><span style="color: hsl(0, 100%, 40%);">-            LOGMMCTXP(LOGL_ERROR, ctx, "Cannot allocate counter group for %s.%u\n",</span><br><span style="color: hsl(0, 100%, 40%);">-                         mmctx_ctrg_desc.group_name_prefix, ue_ctx->conn_id);</span><br><span style="color: hsl(0, 100%, 40%);">-               talloc_free(ctx);</span><br><span style="color: hsl(0, 100%, 40%);">-               return NULL;</span><br><span style="color: hsl(0, 100%, 40%);">-    }</span><br><span style="color: hsl(0, 100%, 40%);">-       ctx->gmm_att_req.fsm = osmo_fsm_inst_alloc(&gmm_attach_req_fsm, ctx, ctx, LOGL_DEBUG, "gb_gmm_req");</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-   /* Need to get RAID from IU conn */</span><br><span style="color: hsl(0, 100%, 40%);">-     ctx->ra = ctx->iu.ue_ctx->ra_id;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-       INIT_LLIST_HEAD(&ctx->pdp_list);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- llist_add(&ctx->list, &sgsn_mm_ctxts);</span><br><span> </span><br><span>        return ctx;</span><br><span> #else</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-sgsn/+/15338">change 15338</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/osmo-sgsn/+/15338"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-sgsn </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: Ib6c0427ac7b35295cf1caf2f28cb2a5c155b9d9c </div>
<div style="display:none"> Gerrit-Change-Number: 15338 </div>
<div style="display:none"> Gerrit-PatchSet: 3 </div>
<div style="display:none"> Gerrit-Owner: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: fixeria <axilirator@gmail.com> </div>
<div style="display:none"> Gerrit-Reviewer: laforge <laforge@gnumonks.org> </div>
<div style="display:none"> Gerrit-Reviewer: osmith <osmith@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>