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/.
Mykola Shchetinin gerrit-no-reply at lists.osmocom.orgMykola Shchetinin has uploaded this change for review. ( https://gerrit.osmocom.org/13896 Change subject: Discard the existing HNB+ContextID to SCCP Connection ID mapping on N-CONNECT. ...................................................................... Discard the existing HNB+ContextID to SCCP Connection ID mapping on N-CONNECT. After a period of inactivity the phone sends a GMM Service Request again in an InitialUE-Request message which triggers a new connection to be created. The problem is that a new SCCP connection wasn't created but a new ranap_ue_conn_ctx was allocated. As a result, the following message (SecurityModeComplete) uses the old SCCP connection and the wrong ranap_ue_conn_ctx (old) is selected. hnbgw_rua.c: rua_to_scu: in case of OSMO_SCU_PRIM_N_CONNECT deactivate the existing hnbgw_context_map to force the context_map_alloc_by_hnb to allocate a new one. context_map.c/.h: Create function context_map_find_by_hnb. It replaces part of context_map_alloc_by_hnb's functionality. Fixes: OS#3936 Change-Id: If85d45dc0c5c6f1a9dbfed6c3752f00ff7b541f2 --- M include/osmocom/iuh/context_map.h M src/context_map.c M src/hnbgw_rua.c 3 files changed, 35 insertions(+), 4 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-iuh refs/changes/96/13896/1 diff --git a/include/osmocom/iuh/context_map.h b/include/osmocom/iuh/context_map.h index 6279b91..29eb64a 100644 --- a/include/osmocom/iuh/context_map.h +++ b/include/osmocom/iuh/context_map.h @@ -37,6 +37,10 @@ enum hnbgw_context_map_state state; }; +struct hnbgw_context_map * +context_map_find_by_hnb(struct hnb_context *hnb, uint32_t rua_ctx_id, + bool is_ps, + struct hnbgw_cnlink *cn_if_new); struct hnbgw_context_map * context_map_alloc_by_hnb(struct hnb_context *hnb, uint32_t rua_ctx_id, diff --git a/src/context_map.c b/src/context_map.c index dc555bf..d13eea3 100644 --- a/src/context_map.c +++ b/src/context_map.c @@ -63,11 +63,13 @@ return -1; } -/* Map from a HNB + ContextID to the SCCP-side Connection ID */ +/* Map from a HNB + ContextID to the SCCP-side Connection ID. + * Return NULL if not found. + */ struct hnbgw_context_map * -context_map_alloc_by_hnb(struct hnb_context *hnb, uint32_t rua_ctx_id, - bool is_ps, - struct hnbgw_cnlink *cn_if_new) +context_map_find_by_hnb(struct hnb_context *hnb, uint32_t rua_ctx_id, + bool is_ps, + struct hnbgw_cnlink *cn_if_new) { struct hnbgw_context_map *map; uint32_t new_scu_conn_id; @@ -84,6 +86,25 @@ } } + return NULL; +} + +/* Map from a HNB + ContextID to the SCCP-side Connection ID. + * Find an existing one or allocate a new one if not found. + */ +struct hnbgw_context_map * +context_map_alloc_by_hnb(struct hnb_context *hnb, uint32_t rua_ctx_id, + bool is_ps, + struct hnbgw_cnlink *cn_if_new) +{ + struct hnbgw_context_map *map; + uint32_t new_scu_conn_id; + + map = context_map_find_by_hnb(hnb, rua_ctx_id, is_ps, cn_if_new); + + if (map) + return map; + if (alloc_cn_conn_id(cn_if_new, &new_scu_conn_id) < 0) { LOGP(DMAIN, LOGL_ERROR, "Unable to allocate CN connection ID\n"); return NULL; diff --git a/src/hnbgw_rua.c b/src/hnbgw_rua.c index 40d1d94..f225f1a 100644 --- a/src/hnbgw_rua.c +++ b/src/hnbgw_rua.c @@ -220,6 +220,12 @@ osmo_sccp_addr_dump(remote_addr), context_id); break; + case OSMO_SCU_PRIM_N_CONNECT: + map = context_map_find_by_hnb(hnb, context_id, is_ps, cn); + if (map) { + /* Forcing context_map_alloc_by_hnb to allocate a new "map" */ + context_map_deactivate(map); + } default: map = context_map_alloc_by_hnb(hnb, context_id, is_ps, cn); OSMO_ASSERT(map); -- To view, visit https://gerrit.osmocom.org/13896 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-iuh Gerrit-Branch: master Gerrit-MessageType: newchange Gerrit-Change-Id: If85d45dc0c5c6f1a9dbfed6c3752f00ff7b541f2 Gerrit-Change-Number: 13896 Gerrit-PatchSet: 1 Gerrit-Owner: Mykola Shchetinin <mykola at pentonet.com> -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20190507/5e81c53d/attachment.htm>