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

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">embed strings into structs<br><br>They are mostly not even as large as the talloc header used to<br>dynamically allocate them, and they are also not "shared" by anything.<br><br>Change-Id: I7b46d531c5d3b53984f2ce44538116973f6a074d<br>---<br>M include/osmocom/mgcp/mgcp.h<br>M src/libosmo-mgcp/mgcp_network.c<br>M src/libosmo-mgcp/mgcp_protocol.c<br>M src/libosmo-mgcp/mgcp_vty.c<br>M src/osmo-mgw/mgw_main.c<br>5 files changed, 26 insertions(+), 30 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/include/osmocom/mgcp/mgcp.h b/include/osmocom/mgcp/mgcp.h</span><br><span>index 228b0b3..f1e6460 100644</span><br><span>--- a/include/osmocom/mgcp/mgcp.h</span><br><span>+++ b/include/osmocom/mgcp/mgcp.h</span><br><span>@@ -95,8 +95,8 @@</span><br><span> struct mgcp_port_range {</span><br><span>    pthread_mutex_t lock;</span><br><span>        /* addr or NULL to fall-back to default */</span><br><span style="color: hsl(0, 100%, 40%);">-      char *bind_addr_v4;</span><br><span style="color: hsl(0, 100%, 40%);">-     char *bind_addr_v6;</span><br><span style="color: hsl(120, 100%, 40%);">+   char bind_addr_v4[INET6_ADDRSTRLEN];</span><br><span style="color: hsl(120, 100%, 40%);">+  char bind_addr_v6[INET6_ADDRSTRLEN];</span><br><span> </span><br><span>     /* dynamically allocated */</span><br><span>  int range_start;</span><br><span>@@ -129,9 +129,9 @@</span><br><span> </span><br><span> struct mgcp_config {</span><br><span>   int source_port;</span><br><span style="color: hsl(0, 100%, 40%);">-        char *local_ip;</span><br><span style="color: hsl(0, 100%, 40%);">- char *source_addr;</span><br><span style="color: hsl(0, 100%, 40%);">-      char *call_agent_addr;</span><br><span style="color: hsl(120, 100%, 40%);">+        char local_ip[INET6_ADDRSTRLEN];</span><br><span style="color: hsl(120, 100%, 40%);">+      char source_addr[INET6_ADDRSTRLEN];</span><br><span style="color: hsl(120, 100%, 40%);">+   char call_agent_addr[INET6_ADDRSTRLEN];</span><br><span> </span><br><span>  /* RTP processing */</span><br><span>         mgcp_processing rtp_processing_cb;</span><br><span>@@ -151,8 +151,6 @@</span><br><span>     mgcp_rqnt rqnt_cb;</span><br><span>   void *data;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- uint32_t last_call_id;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>       /* list holding the trunks */</span><br><span>        struct llist_head trunks;</span><br><span> </span><br><span>@@ -161,7 +159,7 @@</span><br><span>  /* osmux translator: 0 means disabled, 1 means enabled */</span><br><span>    int osmux;</span><br><span>   /* addr to bind the server to */</span><br><span style="color: hsl(0, 100%, 40%);">-        char *osmux_addr;</span><br><span style="color: hsl(120, 100%, 40%);">+     char osmux_addr[INET6_ADDRSTRLEN];</span><br><span>   /* The BSC-NAT may ask for enabling osmux on demand. This tells us if</span><br><span>         * the osmux socket is already initialized.</span><br><span>   */</span><br><span>diff --git a/src/libosmo-mgcp/mgcp_network.c b/src/libosmo-mgcp/mgcp_network.c</span><br><span>index 86b0d06..5249fef 100644</span><br><span>--- a/src/libosmo-mgcp/mgcp_network.c</span><br><span>+++ b/src/libosmo-mgcp/mgcp_network.c</span><br><span>@@ -135,10 +135,10 @@</span><br><span>         } else {</span><br><span>             /* Choose any of the bind addresses, preferring v6 over v4 */</span><br><span>                bind_addr = endp->cfg->net_ports.bind_addr_v6;</span><br><span style="color: hsl(0, 100%, 40%);">-            if (!bind_addr)</span><br><span style="color: hsl(120, 100%, 40%);">+               if (!strlen(bind_addr))</span><br><span>                      bind_addr = endp->cfg->net_ports.bind_addr_v4;</span><br><span>         }</span><br><span style="color: hsl(0, 100%, 40%);">-       if (bind_addr) {</span><br><span style="color: hsl(120, 100%, 40%);">+      if (strlen(bind_addr)) {</span><br><span>             LOGPCONN(conn->conn, DRTP, LOGL_DEBUG,</span><br><span>                     "using configured rtp bind ip as local bind ip %s\n",</span><br><span>                      bind_addr);</span><br><span>diff --git a/src/libosmo-mgcp/mgcp_protocol.c b/src/libosmo-mgcp/mgcp_protocol.c</span><br><span>index 16b7dab..736b071 100644</span><br><span>--- a/src/libosmo-mgcp/mgcp_protocol.c</span><br><span>+++ b/src/libosmo-mgcp/mgcp_protocol.c</span><br><span>@@ -273,7 +273,7 @@</span><br><span>       * us for OSMUX connections. Perhaps adding a new internal API to get it</span><br><span>      * based on conn type.</span><br><span>        */</span><br><span style="color: hsl(0, 100%, 40%);">-     const char *addr = endp->cfg->local_ip ? : conn->end.local_addr;</span><br><span style="color: hsl(120, 100%, 40%);">+     const char *addr = strlen(endp->cfg->local_ip) ? endp->cfg->local_ip : conn->end.local_addr;</span><br><span>  struct msgb *sdp;</span><br><span>    int rc;</span><br><span>      struct msgb *result;</span><br><span>@@ -1615,8 +1615,8 @@</span><br><span>         cfg->net_ports.last_port = cfg->net_ports.range_start;</span><br><span> </span><br><span>     cfg->source_port = 2427;</span><br><span style="color: hsl(0, 100%, 40%);">-     cfg->source_addr = talloc_strdup(cfg, "0.0.0.0");</span><br><span style="color: hsl(0, 100%, 40%);">-  cfg->osmux_addr = talloc_strdup(cfg, "0.0.0.0");</span><br><span style="color: hsl(120, 100%, 40%);">+ osmo_strlcpy(cfg->source_addr, "0.0.0.0", sizeof(cfg->source_addr));</span><br><span style="color: hsl(120, 100%, 40%);">+  osmo_strlcpy(cfg->osmux_addr, "0.0.0.0", sizeof(cfg->osmux_addr));</span><br><span> </span><br><span>       cfg->rtp_processing_cb = &mgcp_rtp_processing_default;</span><br><span>        cfg->setup_rtp_processing_cb = &mgcp_setup_rtp_processing_default;</span><br><span>diff --git a/src/libosmo-mgcp/mgcp_vty.c b/src/libosmo-mgcp/mgcp_vty.c</span><br><span>index 6bc09d0..738bfcc 100644</span><br><span>--- a/src/libosmo-mgcp/mgcp_vty.c</span><br><span>+++ b/src/libosmo-mgcp/mgcp_vty.c</span><br><span>@@ -65,17 +65,17 @@</span><br><span> </span><br><span>         vty_out(vty, "mgcp%s", VTY_NEWLINE);</span><br><span>       vty_out(vty, " domain %s%s", g_cfg->domain, VTY_NEWLINE);</span><br><span style="color: hsl(0, 100%, 40%);">-  if (g_cfg->local_ip)</span><br><span style="color: hsl(120, 100%, 40%);">+       if (strlen(g_cfg->local_ip))</span><br><span>              vty_out(vty, "  local ip %s%s", g_cfg->local_ip, VTY_NEWLINE);</span><br><span>  vty_out(vty, " bind ip %s%s", g_cfg->source_addr, VTY_NEWLINE);</span><br><span>         vty_out(vty, " bind port %u%s", g_cfg->source_port, VTY_NEWLINE);</span><br><span>       vty_out(vty, " rtp port-range %u %u%s",</span><br><span>            g_cfg->net_ports.range_start, g_cfg->net_ports.range_end,</span><br><span>              VTY_NEWLINE);</span><br><span style="color: hsl(0, 100%, 40%);">-   if (g_cfg->net_ports.bind_addr_v4)</span><br><span style="color: hsl(120, 100%, 40%);">+ if (strlen(g_cfg->net_ports.bind_addr_v4))</span><br><span>                vty_out(vty, " rtp bind-ip %s%s",</span><br><span>                  g_cfg->net_ports.bind_addr_v4, VTY_NEWLINE);</span><br><span style="color: hsl(0, 100%, 40%);">- if (g_cfg->net_ports.bind_addr_v6)</span><br><span style="color: hsl(120, 100%, 40%);">+ if (strlen(g_cfg->net_ports.bind_addr_v6))</span><br><span>                vty_out(vty, " rtp bind-ip-v6 %s%s",</span><br><span>                       g_cfg->net_ports.bind_addr_v6, VTY_NEWLINE);</span><br><span>      if (g_cfg->net_ports.bind_addr_probe)</span><br><span>@@ -122,7 +122,7 @@</span><br><span>               trunk->v.vty_number_endpoints, VTY_NEWLINE);</span><br><span>      vty_out(vty, " %sallow-transcoding%s",</span><br><span>             trunk->no_audio_transcoding ? "no " : "", VTY_NEWLINE);</span><br><span style="color: hsl(0, 100%, 40%);">-  if (g_cfg->call_agent_addr)</span><br><span style="color: hsl(120, 100%, 40%);">+        if (strlen(g_cfg->call_agent_addr))</span><br><span>               vty_out(vty, " call-agent ip %s%s", g_cfg->call_agent_addr,</span><br><span>                     VTY_NEWLINE);</span><br><span>        if (g_cfg->force_ptime > 0)</span><br><span>@@ -443,7 +443,7 @@</span><br><span>            "IPv4 Address to use in SDP record\n"</span><br><span>              "IPv6 Address to use in SDP record\n")</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-     osmo_talloc_replace_string(g_cfg, &g_cfg->local_ip, argv[0]);</span><br><span style="color: hsl(120, 100%, 40%);">+  osmo_strlcpy(g_cfg->local_ip, argv[0], sizeof(g_cfg->local_ip));</span><br><span>       return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span>@@ -455,7 +455,7 @@</span><br><span>       "IPv4 Address to bind to\n"</span><br><span>       "IPv6 Address to bind to\n")</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-  osmo_talloc_replace_string(g_cfg, &g_cfg->source_addr, argv[0]);</span><br><span style="color: hsl(120, 100%, 40%);">+       osmo_strlcpy(g_cfg->source_addr, argv[0], sizeof(g_cfg->source_addr));</span><br><span>         return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span>@@ -533,7 +533,7 @@</span><br><span>         RTP_STR "Bind endpoints facing the Network\n"</span><br><span>              "IPv4 Address to bind to\n")</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-       osmo_talloc_replace_string(g_cfg, &g_cfg->net_ports.bind_addr_v4, argv[0]);</span><br><span style="color: hsl(120, 100%, 40%);">+    osmo_strlcpy(g_cfg->net_ports.bind_addr_v4, argv[0], sizeof(g_cfg->net_ports.bind_addr_v4));</span><br><span>   return CMD_SUCCESS;</span><br><span> }</span><br><span> ALIAS_DEPRECATED(cfg_mgcp_rtp_bind_ip,</span><br><span>@@ -548,8 +548,7 @@</span><br><span>           NO_STR RTP_STR "Bind endpoints facing the Network\n"</span><br><span>               "Address to bind to\n")</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    talloc_free(g_cfg->net_ports.bind_addr_v4);</span><br><span style="color: hsl(0, 100%, 40%);">-  g_cfg->net_ports.bind_addr_v4 = NULL;</span><br><span style="color: hsl(120, 100%, 40%);">+      osmo_strlcpy(g_cfg->net_ports.bind_addr_v4, "", sizeof(g_cfg->net_ports.bind_addr_v4));</span><br><span>      return CMD_SUCCESS;</span><br><span> }</span><br><span> ALIAS_DEPRECATED(cfg_mgcp_rtp_no_bind_ip,</span><br><span>@@ -565,7 +564,7 @@</span><br><span>        RTP_STR "Bind endpoints facing the Network\n"</span><br><span>              "IPv6 Address to bind to\n")</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-       osmo_talloc_replace_string(g_cfg, &g_cfg->net_ports.bind_addr_v6, argv[0]);</span><br><span style="color: hsl(120, 100%, 40%);">+    osmo_strlcpy(g_cfg->net_ports.bind_addr_v6, argv[0], sizeof(g_cfg->net_ports.bind_addr_v6));</span><br><span>   return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span>@@ -576,8 +575,7 @@</span><br><span>         NO_STR RTP_STR "Bind endpoints facing the Network\n"</span><br><span>               "Address to bind to\n")</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    talloc_free(g_cfg->net_ports.bind_addr_v6);</span><br><span style="color: hsl(0, 100%, 40%);">-  g_cfg->net_ports.bind_addr_v6 = NULL;</span><br><span style="color: hsl(120, 100%, 40%);">+      osmo_strlcpy(g_cfg->net_ports.bind_addr_v6, "", sizeof(g_cfg->net_ports.bind_addr_v6));</span><br><span>      return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span>@@ -950,7 +948,7 @@</span><br><span>       "IPv4 Address of the call agent\n"</span><br><span>       "IPv6 Address of the call agent\n")</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    osmo_talloc_replace_string(g_cfg, &g_cfg->call_agent_addr, argv[0]);</span><br><span style="color: hsl(120, 100%, 40%);">+   osmo_strlcpy(g_cfg->call_agent_addr, argv[0], sizeof(g_cfg->call_agent_addr));</span><br><span>         return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span>@@ -1559,7 +1557,7 @@</span><br><span>       "IPv4 Address to bind to\n"</span><br><span>       "IPv6 Address to bind to\n")</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-        osmo_talloc_replace_string(g_cfg, &g_cfg->osmux_addr, argv[0]);</span><br><span style="color: hsl(120, 100%, 40%);">+        osmo_strlcpy(g_cfg->osmux_addr, argv[0], sizeof(g_cfg->osmux_addr));</span><br><span>   return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span>@@ -1748,7 +1746,7 @@</span><br><span>                 return rc;</span><br><span>   }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   if (!g_cfg->source_addr) {</span><br><span style="color: hsl(120, 100%, 40%);">+ if (!strlen(g_cfg->source_addr)) {</span><br><span>                fprintf(stderr, "You need to specify a bind address.\n");</span><br><span>          return -1;</span><br><span>   }</span><br><span>diff --git a/src/osmo-mgw/mgw_main.c b/src/osmo-mgw/mgw_main.c</span><br><span>index 52a1622..d12011c 100644</span><br><span>--- a/src/osmo-mgw/mgw_main.c</span><br><span>+++ b/src/osmo-mgw/mgw_main.c</span><br><span>@@ -369,12 +369,12 @@</span><br><span> </span><br><span>       /* we need to bind a socket */</span><br><span>       flags = OSMO_SOCK_F_BIND;</span><br><span style="color: hsl(0, 100%, 40%);">-       if (cfg->call_agent_addr)</span><br><span style="color: hsl(120, 100%, 40%);">+  if (strlen(cfg->call_agent_addr))</span><br><span>                 flags |= OSMO_SOCK_F_CONNECT;</span><br><span> </span><br><span>    rc = osmo_sock_init2_ofd(&cfg->gw_fd.bfd, AF_UNSPEC, SOCK_DGRAM, IPPROTO_UDP,</span><br><span>                                 cfg->source_addr, cfg->source_port,</span><br><span style="color: hsl(0, 100%, 40%);">-                               cfg->call_agent_addr, cfg->call_agent_addr ? 2727 : 0, flags);</span><br><span style="color: hsl(120, 100%, 40%);">+                          cfg->call_agent_addr, strlen(cfg->call_agent_addr) ? 2727 : 0, flags);</span><br><span>         if (rc < 0) {</span><br><span>             perror("Gateway failed to bind");</span><br><span>          return -1;</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-mgw/+/25426">change 25426</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-mgw/+/25426"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-mgw </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I7b46d531c5d3b53984f2ce44538116973f6a074d </div>
<div style="display:none"> Gerrit-Change-Number: 25426 </div>
<div style="display:none"> Gerrit-PatchSet: 12 </div>
<div style="display:none"> Gerrit-Owner: Hoernchen <ewild@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: dexter <pmaier@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-CC: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>