neels has submitted this change. ( 
https://gerrit.osmocom.org/c/osmo-hnbgw/+/31462 )

Change subject: use RUA procedure code for rua_to_scu() arg
......................................................................

use RUA procedure code for rua_to_scu() arg

Instead of osmo_scu_prim_type, use RUA_ProcedureCode to tell
rua_to_scu() the RUA message type being handled.

Cosmetically prepare for upcoming patch that completely moves
osmo_scu_prim composition from rua_to_scu() to a new context map SCCP
FSM.

Related: I6ff7e36532ff57c6f2d3e7e419dd22ef27dafd19
Change-Id: I28735945844f732e7bd7f09db1f453c608415b84
---
M src/osmo-hnbgw/hnbgw_rua.c
1 file changed, 51 insertions(+), 16 deletions(-)

Approvals:
  Jenkins Builder: Verified
  msuraev: Looks good to me, but someone else must approve
  laforge: Looks good to me, approved




diff --git a/src/osmo-hnbgw/hnbgw_rua.c b/src/osmo-hnbgw/hnbgw_rua.c
index b979cd1..97ced4a 100644
--- a/src/osmo-hnbgw/hnbgw_rua.c
+++ b/src/osmo-hnbgw/hnbgw_rua.c
@@ -174,13 +174,27 @@
        return hnbgw_rua_tx(hnb, msg);
 }

+static struct value_string rua_procedure_code_names[] = {
+       { RUA_ProcedureCode_id_Connect, "Connect" },
+       { RUA_ProcedureCode_id_DirectTransfer, "DirectTransfer" },
+       { RUA_ProcedureCode_id_Disconnect, "Disconnect" },
+       { RUA_ProcedureCode_id_ConnectionlessTransfer, "ConnectionlessTransfer" 
},
+       { RUA_ProcedureCode_id_ErrorIndication, "ErrorIndication" },
+       { RUA_ProcedureCode_id_privateMessage, "PrivateMessage" },
+       {}
+};
+
+static inline const char *rua_procedure_code_name(enum RUA_ProcedureCode val)
+{
+       return get_value_string(rua_procedure_code_names, val);
+}

 /* dispatch a RUA connection-oriented message received from a HNB to a context 
mapping's RUA FSM, so that it is
  * forwarded to the CN via SCCP connection-oriented messages.
  * Connectionless messages are handled in hnbgw_ranap_rx() instead, not here. 
*/
 static int rua_to_scu(struct hnb_context *hnb,
                      RUA_CN_DomainIndicator_t cN_DomainIndicator,
-                     enum osmo_scu_prim_type type,
+                     enum RUA_ProcedureCode rua_procedure,
                      uint32_t context_id, uint32_t cause,
                      const uint8_t *data, unsigned int len)
 {
@@ -216,20 +230,18 @@
        msg = msgb_alloc(1500, "rua_to_sccp");

        prim = (struct osmo_scu_prim *) msgb_put(msg, sizeof(*prim));
-       osmo_prim_init(&prim->oph, SCCP_SAP_USER, type, PRIM_OP_REQUEST, msg);
-
-       /* Only connection-oriented messages are handled by this function */
-       OSMO_ASSERT(type != OSMO_SCU_PRIM_N_UNITDATA);

        map = context_map_alloc_by_hnb(hnb, context_id, is_ps, cn);
        OSMO_ASSERT(map);
-       LOGHNB(hnb, DRUA, LOGL_DEBUG, "rua_to_scu() %s to %s, rua_ctx_id %u 
scu_conn_id %u\n",
-              cn_domain_indicator_to_str(cN_DomainIndicator), 
osmo_sccp_addr_dump(remote_addr),
-              map->rua_ctx_id, map->scu_conn_id);
+
+       LOG_MAP(map, DRUA, LOGL_DEBUG, "rx RUA %s with %u bytes RANAP data\n",
+               rua_procedure_code_name(rua_procedure), data ? len : 0);

        /* add primitive header */
-       switch (type) {
-       case OSMO_SCU_PRIM_N_CONNECT:
+       switch (rua_procedure) {
+
+       case RUA_ProcedureCode_id_Connect:
+               osmo_prim_init(&prim->oph, SCCP_SAP_USER, 
OSMO_SCU_PRIM_N_CONNECT, PRIM_OP_REQUEST, msg);
                prim->u.connect.called_addr = *remote_addr;
                prim->u.connect.calling_addr = cn->gw->sccp.local_addr;
                prim->u.connect.sccp_class = 2;
@@ -240,18 +252,24 @@
                LOGHNB(hnb, DRUA, LOGL_DEBUG, "RUA to SCCP N_CONNECT: 
calling_addr:%s\n",
                        osmo_sccp_addr_dump(&prim->u.connect.calling_addr));
                break;
-       case OSMO_SCU_PRIM_N_DATA:
+
+       case RUA_ProcedureCode_id_DirectTransfer:
+               osmo_prim_init(&prim->oph, SCCP_SAP_USER, OSMO_SCU_PRIM_N_DATA, 
PRIM_OP_REQUEST, msg);
                prim->u.data.conn_id = map->scu_conn_id;
                break;
-       case OSMO_SCU_PRIM_N_DISCONNECT:
+
+       case RUA_ProcedureCode_id_Disconnect:
+               osmo_prim_init(&prim->oph, SCCP_SAP_USER, 
OSMO_SCU_PRIM_N_DISCONNECT, PRIM_OP_REQUEST, msg);
                prim->u.disconnect.conn_id = map->scu_conn_id;
                prim->u.disconnect.cause = cause;
                release_context_map = true;
                /* Mark SCCP conn as gracefully disconnected */
                map->scu_conn_active = false;
                break;
+
        default:
-               return -EINVAL;
+               /* No caller may ever pass a different RUA procedure code */
+               OSMO_ASSERT(false);
        }

        /* If there is RANAP data, include it in the msgb. Usually there is 
data, but this could also be an SCCP CR
@@ -385,7 +403,7 @@
                cn_domain_indicator_to_str(ies.cN_DomainIndicator), context_id,
                ies.establishment_Cause == 
RUA_Establishment_Cause_emergency_call ? "emergency" : "normal");

-       rc = rua_to_scu(hnb, ies.cN_DomainIndicator, OSMO_SCU_PRIM_N_CONNECT,
+       rc = rua_to_scu(hnb, ies.cN_DomainIndicator, 
RUA_ProcedureCode_id_Connect,
                        context_id, 0, ies.ranaP_Message.buf,
                        ies.ranaP_Message.size);

@@ -420,7 +438,7 @@
        }

        rc = rua_to_scu(hnb, ies.cN_DomainIndicator,
-                       OSMO_SCU_PRIM_N_DISCONNECT,
+                       RUA_ProcedureCode_id_Disconnect,
                        context_id, scu_cause, ranap_data, ranap_len);

        rua_free_disconnecties(&ies);
@@ -445,7 +463,7 @@
 
        rc = rua_to_scu(hnb,
                        ies.cN_DomainIndicator,
-                       OSMO_SCU_PRIM_N_DATA,
+                       RUA_ProcedureCode_id_DirectTransfer,
                        context_id, 0, ies.ranaP_Message.buf,
                        ies.ranaP_Message.size);


--
To view, visit https://gerrit.osmocom.org/c/osmo-hnbgw/+/31462
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-hnbgw
Gerrit-Branch: master
Gerrit-Change-Id: I28735945844f732e7bd7f09db1f453c608415b84
Gerrit-Change-Number: 31462
Gerrit-PatchSet: 1
Gerrit-Owner: neels <[email protected]>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <[email protected]>
Gerrit-Reviewer: msuraev <[email protected]>
Gerrit-Reviewer: neels <[email protected]>
Gerrit-MessageType: merged

Reply via email to