<p>laforge has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-remsim/+/17155">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">client: Adjust to API changes; enable build of remsim-client again<br><br>There were quite a bit of API changes that hadn't yet been applied<br>to remsim_client.c (which was disabled and hence not compiled for<br>quite some time).<br><br>Change-Id: I0b3733f6851a951ee24ae87aa5db0ee8daa7a841<br>---<br>M src/client/Makefile.am<br>M src/client/remsim_client.c<br>2 files changed, 22 insertions(+), 69 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-remsim refs/changes/55/17155/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/client/Makefile.am b/src/client/Makefile.am</span><br><span>index 106bc5e..3d4f355 100644</span><br><span>--- a/src/client/Makefile.am</span><br><span>+++ b/src/client/Makefile.am</span><br><span>@@ -4,7 +4,7 @@</span><br><span>      $(OSMOSIMTRACE2_CFLAGS) \</span><br><span>            -I$(top_srcdir)/include/osmocom/rspro</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-bin_PROGRAMS = osmo-remsim-client-st2</span><br><span style="color: hsl(120, 100%, 40%);">+bin_PROGRAMS = osmo-remsim-client-st2 remsim-client</span><br><span> </span><br><span> remsim_client_SOURCES = remsim_client.c ../rspro_client_fsm.c ../debug.c</span><br><span> remsim_client_LDADD = $(OSMOCORE_LIBS) $(OSMOGSM_LIBS) $(OSMOABIS_LIBS) \</span><br><span>diff --git a/src/client/remsim_client.c b/src/client/remsim_client.c</span><br><span>index ca6143e..41361c0 100644</span><br><span>--- a/src/client/remsim_client.c</span><br><span>+++ b/src/client/remsim_client.c</span><br><span>@@ -42,80 +42,25 @@</span><br><span> #include "client.h"</span><br><span> #include "debug.h"</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-static int bankd_handle_msg(struct bankd_client *bc, struct msgb *msg)</span><br><span style="color: hsl(120, 100%, 40%);">+static int bankd_handle_rx(struct rspro_server_conn *bankdc, const RsproPDU_t *pdu)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    RsproPDU_t *pdu = rspro_dec_msg(msg);</span><br><span style="color: hsl(0, 100%, 40%);">-   if (!pdu) {</span><br><span style="color: hsl(0, 100%, 40%);">-             LOGPFSML(bc->bankd_fi, LOGL_ERROR, "Error decoding PDU\n");</span><br><span style="color: hsl(0, 100%, 40%);">-                return -1;</span><br><span style="color: hsl(0, 100%, 40%);">-      }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-       LOGPFSM(bc->bankd_fi, "Rx RSPRO %s\n", rspro_msgt_name(pdu));</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>   switch (pdu->msg.present) {</span><br><span>       case RsproPDUchoice_PR_connectClientRes:</span><br><span>             /* Store 'identity' of bankd to in peer_comp_id */</span><br><span style="color: hsl(0, 100%, 40%);">-              rspro_comp_id_retrieve(&bc->peer_comp_id, &pdu->msg.choice.connectClientRes.identity);</span><br><span style="color: hsl(0, 100%, 40%);">-            osmo_fsm_inst_dispatch(bc->bankd_fi, BDC_E_CLIENT_CONN_RES, pdu);</span><br><span style="color: hsl(120, 100%, 40%);">+          rspro_comp_id_retrieve(&bankdc->peer_comp_id, &pdu->msg.choice.connectClientRes.identity);</span><br><span style="color: hsl(120, 100%, 40%);">+              osmo_fsm_inst_dispatch(bankdc->fi, SRVC_E_CLIENT_CONN_RES, (void *) pdu);</span><br><span>                 break;</span><br><span style="color: hsl(120, 100%, 40%);">+        case RsproPDUchoice_PR_tpduCardToModem:</span><br><span style="color: hsl(120, 100%, 40%);">+       case RsproPDUchoice_PR_setAtrReq:</span><br><span>    default:</span><br><span style="color: hsl(0, 100%, 40%);">-                LOGPFSML(bc->bankd_fi, LOGL_ERROR, "Unknown/Unsuppoerted RSPRO PDU %s: %s\n",</span><br><span style="color: hsl(0, 100%, 40%);">-                       rspro_msgt_name(pdu), msgb_hexdump(msg));</span><br><span style="color: hsl(120, 100%, 40%);">+            LOGPFSML(bankdc->fi, LOGL_ERROR, "Unknown/Unsupported RSPRO PDU %s\n",</span><br><span style="color: hsl(120, 100%, 40%);">+                    rspro_msgt_name(pdu));</span><br><span>              return -1;</span><br><span>   }</span><br><span> </span><br><span>        return 0;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-int bankd_read_cb(struct ipa_client_conn *conn, struct msgb *msg)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-    struct ipaccess_head *hh = (struct ipaccess_head *) msg->data;</span><br><span style="color: hsl(0, 100%, 40%);">-       struct ipaccess_head_ext *he = (struct ipaccess_head_ext *) msgb_l2(msg);</span><br><span style="color: hsl(0, 100%, 40%);">-       struct bankd_client *bc = conn->data;</span><br><span style="color: hsl(0, 100%, 40%);">-        int rc;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- if (msgb_length(msg) < sizeof(*hh))</span><br><span style="color: hsl(0, 100%, 40%);">-          goto invalid;</span><br><span style="color: hsl(0, 100%, 40%);">-   msg->l2h = &hh->data[0];</span><br><span style="color: hsl(0, 100%, 40%);">-      switch (hh->proto) {</span><br><span style="color: hsl(0, 100%, 40%);">- case IPAC_PROTO_IPACCESS:</span><br><span style="color: hsl(0, 100%, 40%);">-               rc = ipaccess_bts_handle_ccm(conn, &bc->srv_conn.ipa_dev, msg);</span><br><span style="color: hsl(0, 100%, 40%);">-          if (rc < 0)</span><br><span style="color: hsl(0, 100%, 40%);">-                  break;</span><br><span style="color: hsl(0, 100%, 40%);">-          switch (hh->data[0]) {</span><br><span style="color: hsl(0, 100%, 40%);">-               case IPAC_MSGT_PONG:</span><br><span style="color: hsl(0, 100%, 40%);">-                    ipa_keepalive_fsm_pong_received(bc->srv_conn.keepalive_fi);</span><br><span style="color: hsl(0, 100%, 40%);">-                  rc = 0;</span><br><span style="color: hsl(0, 100%, 40%);">-                 break;</span><br><span style="color: hsl(0, 100%, 40%);">-          default:</span><br><span style="color: hsl(0, 100%, 40%);">-                        break;</span><br><span style="color: hsl(0, 100%, 40%);">-          }</span><br><span style="color: hsl(0, 100%, 40%);">-               break;</span><br><span style="color: hsl(0, 100%, 40%);">-  case IPAC_PROTO_OSMO:</span><br><span style="color: hsl(0, 100%, 40%);">-           if (!he || msgb_l2len(msg) < sizeof(*he))</span><br><span style="color: hsl(0, 100%, 40%);">-                    goto invalid;</span><br><span style="color: hsl(0, 100%, 40%);">-           msg->l2h = &he->data[0];</span><br><span style="color: hsl(0, 100%, 40%);">-              switch (he->proto) {</span><br><span style="color: hsl(0, 100%, 40%);">-         case IPAC_PROTO_EXT_RSPRO:</span><br><span style="color: hsl(0, 100%, 40%);">-                      LOGPFSML(bc->bankd_fi, LOGL_DEBUG, "Received RSPRO %s\n", msgb_hexdump(msg));</span><br><span style="color: hsl(0, 100%, 40%);">-                      rc = bankd_handle_msg(bc, msg);</span><br><span style="color: hsl(0, 100%, 40%);">-                 break;</span><br><span style="color: hsl(0, 100%, 40%);">-          default:</span><br><span style="color: hsl(0, 100%, 40%);">-                        goto invalid;</span><br><span style="color: hsl(0, 100%, 40%);">-           }</span><br><span style="color: hsl(0, 100%, 40%);">-               break;</span><br><span style="color: hsl(0, 100%, 40%);">-  default:</span><br><span style="color: hsl(0, 100%, 40%);">-                goto invalid;</span><br><span style="color: hsl(0, 100%, 40%);">-   }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-       msgb_free(msg);</span><br><span style="color: hsl(0, 100%, 40%);">- return rc;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-invalid:</span><br><span style="color: hsl(0, 100%, 40%);">-      msgb_free(msg);</span><br><span style="color: hsl(0, 100%, 40%);">- return -1;</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> static struct bankd_client *g_client;</span><br><span> static void *g_tall_ctx;</span><br><span> void __thread *talloc_asn1_ctx;</span><br><span>@@ -137,18 +82,21 @@</span><br><span>           if (!g_client->srv_conn.clslot)</span><br><span>                   g_client->srv_conn.clslot = talloc_zero(g_client, ClientSlot_t);</span><br><span>          *g_client->srv_conn.clslot = pdu->msg.choice.configClientIdReq.clientSlot;</span><br><span style="color: hsl(120, 100%, 40%);">+              if (!g_client->bankd_conn.clslot)</span><br><span style="color: hsl(120, 100%, 40%);">+                  g_client->bankd_conn.clslot = talloc_zero(g_client, ClientSlot_t);</span><br><span style="color: hsl(120, 100%, 40%);">+         *g_client->bankd_conn.clslot = *g_client->srv_conn.clslot;</span><br><span>             /* send response to server */</span><br><span>                resp = rspro_gen_ConfigClientIdRes(ResultCode_ok);</span><br><span>           server_conn_send_rspro(srvc, resp);</span><br><span>          break;</span><br><span>       case RsproPDUchoice_PR_configClientBankReq:</span><br><span>          /* store/set the bankd ip/port as instructed by the server */</span><br><span style="color: hsl(0, 100%, 40%);">-           osmo_talloc_replace_string(g_client, &g_client->bankd_host,</span><br><span style="color: hsl(120, 100%, 40%);">+            osmo_talloc_replace_string(g_client, &g_client->bankd_conn.server_host,</span><br><span>                                          rspro_IpAddr2str(&pdu->msg.choice.configClientBankReq.bankd.ip));</span><br><span style="color: hsl(0, 100%, 40%);">-             g_client->bankd_port = pdu->msg.choice.configClientBankReq.bankd.port;</span><br><span>                 rspro2bank_slot(&g_client->bankd_slot, &pdu->msg.choice.configClientBankReq.bankSlot);</span><br><span style="color: hsl(120, 100%, 40%);">+          g_client->bankd_conn.server_port = pdu->msg.choice.configClientBankReq.bankd.port;</span><br><span>             /* instruct bankd FSM to connect */</span><br><span style="color: hsl(0, 100%, 40%);">-             osmo_fsm_inst_dispatch(g_client->bankd_fi, BDC_E_ESTABLISH, NULL);</span><br><span style="color: hsl(120, 100%, 40%);">+         osmo_fsm_inst_dispatch(g_client->bankd_conn.fi, SRVC_E_ESTABLISH, NULL);</span><br><span>          /* send response to server */</span><br><span>                resp = rspro_gen_ConfigClientBankRes(ResultCode_ok);</span><br><span>                 server_conn_send_rspro(srvc, resp);</span><br><span>@@ -226,7 +174,7 @@</span><br><span> </span><br><span> int main(int argc, char **argv)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-   struct rspro_server_conn *srvc;</span><br><span style="color: hsl(120, 100%, 40%);">+       struct rspro_server_conn *srvc, *bankdc;</span><br><span>     int rc;</span><br><span> </span><br><span>  g_tall_ctx = talloc_named_const(NULL, 0, "global");</span><br><span>@@ -259,8 +207,13 @@</span><br><span> </span><br><span>     asn_debug = 0;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-      if (bankd_conn_fsm_alloc(g_client) < 0) {</span><br><span style="color: hsl(0, 100%, 40%);">-            fprintf(stderr, "Unable to connect: %s\n", strerror(errno));</span><br><span style="color: hsl(120, 100%, 40%);">+        bankdc = &g_client->bankd_conn;</span><br><span style="color: hsl(120, 100%, 40%);">+        /* server_host / server_port are configured from remsim-server */</span><br><span style="color: hsl(120, 100%, 40%);">+     bankdc->handle_rx = bankd_handle_rx;</span><br><span style="color: hsl(120, 100%, 40%);">+       memcpy(&bankdc->own_comp_id, &srvc->own_comp_id, sizeof(bankdc->own_comp_id));</span><br><span style="color: hsl(120, 100%, 40%);">+       rc = server_conn_fsm_alloc(g_client, bankdc);</span><br><span style="color: hsl(120, 100%, 40%);">+ if (rc < 0) {</span><br><span style="color: hsl(120, 100%, 40%);">+              fprintf(stderr, "Unable to connect bankd conn FSM: %s\n", strerror(errno));</span><br><span>                exit(1);</span><br><span>     }</span><br><span> </span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-remsim/+/17155">change 17155</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-remsim/+/17155"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-remsim </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I0b3733f6851a951ee24ae87aa5db0ee8daa7a841 </div>
<div style="display:none"> Gerrit-Change-Number: 17155 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>