<p>laforge has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-remsim/+/17186">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">server: Send ConfigClientBankReq with bankd_port==0 on map delete<br><br>If a slotmap is deleted via the REST API, don't only remove it from<br>the bankd, but also remove it from the client.<br><br>Change-Id: Ia2fc2a098471add56cb35e74639417d865704989<br>Closes: OS#4399<br>---<br>M src/server/rspro_server.c<br>1 file changed, 20 insertions(+), 13 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/86/17186/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/server/rspro_server.c b/src/server/rspro_server.c</span><br><span>index 723aac8..b35800f 100644</span><br><span>--- a/src/server/rspro_server.c</span><br><span>+++ b/src/server/rspro_server.c</span><br><span>@@ -250,20 +250,25 @@</span><br><span>         /* if caller didn't provide bankd_conn, resolve it from map */</span><br><span>   if (!bankd_conn)</span><br><span>             bankd_conn = bankd_conn_by_id(srv, map->bank.bank_id);</span><br><span style="color: hsl(0, 100%, 40%);">-       if (!bankd_conn)</span><br><span style="color: hsl(0, 100%, 40%);">-                return;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- /* obtain IP and port of bankd */</span><br><span style="color: hsl(0, 100%, 40%);">-       rc = osmo_sock_get_ip_and_port(bankd_conn->peer->ofd.fd, ip_str, sizeof(ip_str),</span><br><span style="color: hsl(0, 100%, 40%);">-                                  port_str, sizeof(port_str), false);</span><br><span style="color: hsl(0, 100%, 40%);">-     if (rc < 0) {</span><br><span style="color: hsl(0, 100%, 40%);">-                LOGPFSM(bankd_conn->fi, "Error during getpeername\n");</span><br><span style="color: hsl(0, 100%, 40%);">-             return;</span><br><span style="color: hsl(120, 100%, 40%);">+       if (map->state == SLMAP_S_DELETING || !bankd_conn) {</span><br><span style="color: hsl(120, 100%, 40%);">+               bankd_ip = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+         bankd_port = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+       } else {</span><br><span style="color: hsl(120, 100%, 40%);">+              /* obtain IP and port of bankd */</span><br><span style="color: hsl(120, 100%, 40%);">+             rc = osmo_sock_get_ip_and_port(bankd_conn->peer->ofd.fd, ip_str, sizeof(ip_str),</span><br><span style="color: hsl(120, 100%, 40%);">+                                                port_str, sizeof(port_str), false);</span><br><span style="color: hsl(120, 100%, 40%);">+           if (rc < 0) {</span><br><span style="color: hsl(120, 100%, 40%);">+                      LOGPFSM(bankd_conn->fi, "Error during getpeername\n");</span><br><span style="color: hsl(120, 100%, 40%);">+                   return;</span><br><span style="color: hsl(120, 100%, 40%);">+               }</span><br><span style="color: hsl(120, 100%, 40%);">+             bankd_ip = ntohl(inet_addr(ip_str));</span><br><span style="color: hsl(120, 100%, 40%);">+          bankd_port = 9999; /* TODO: configurable */</span><br><span>  }</span><br><span style="color: hsl(0, 100%, 40%);">-       bankd_ip = ntohl(inet_addr(ip_str));</span><br><span style="color: hsl(0, 100%, 40%);">-    bankd_port = 9999; /* TODO: configurable */</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* determine if IP/port of bankd have changed */</span><br><span>     if (conn->client.bankd.port != bankd_port || conn->client.bankd.ip != bankd_ip) {</span><br><span style="color: hsl(0, 100%, 40%);">-         LOGPFSM(conn->fi, "Bankd IP/Port changed to %s:%s\n", ip_str, port_str);</span><br><span style="color: hsl(120, 100%, 40%);">+         struct in_addr ia = { .s_addr = bankd_ip };</span><br><span style="color: hsl(120, 100%, 40%);">+           LOGPFSM(conn->fi, "Bankd IP/Port changed to %s:%u\n", inet_ntoa(ia), bankd_port);</span><br><span>               conn->client.bankd.ip = bankd_ip;</span><br><span>                 conn->client.bankd.port = bankd_port;</span><br><span>             changed = true;</span><br><span>@@ -371,9 +376,11 @@</span><br><span>                       break;</span><br><span>               }</span><br><span>            slotmaps_unlock(slotmaps);</span><br><span style="color: hsl(120, 100%, 40%);">+            /* update client! */</span><br><span style="color: hsl(120, 100%, 40%);">+          OSMO_ASSERT(map->state == SLMAP_S_DELETING);</span><br><span style="color: hsl(120, 100%, 40%);">+               _update_client_for_slotmap(map, conn->srv, conn);</span><br><span>                 /* slotmap_del() will remove it from both global and bank list */</span><br><span>            slotmap_del(map->maps, map);</span><br><span style="color: hsl(0, 100%, 40%);">-         /* FIXME: update client! */</span><br><span>          break;</span><br><span>       case CLNTC_E_PUSH: /* check if any create or delete requests are pending */</span><br><span>          slotmaps_wrlock(slotmaps);</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-remsim/+/17186">change 17186</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/+/17186"/><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: Ia2fc2a098471add56cb35e74639417d865704989 </div>
<div style="display:none"> Gerrit-Change-Number: 17186 </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>