<p>dexter has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-mgw/+/18754">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">endp: move endpoint name generation into mgcp_endp.c<br><br>When the trunk allocates its endpoints by using mgcp_endp_alloc()<br>ist passes the name for each endpoint as a parameter. In order to<br>generate the name endpoint specific knowlege is required.<br><br>This process can be simplified, since all what<br>mgcp_trunk_alloc_endpts() does is calling mgcp_endp_alloc() in a loop in<br>order to generate a consecuitve series of endpoints. The endpoint names<br>are generated from the index of the for loop.<br><br>When we just pass the index instead of the endpoint name to<br>mgcp_endp_alloc(), then we can greatly simplify the code since all the<br>knowledge about the name generation can go into mgcp_endp.c. The<br>endpoint will name itsself by the trunk properites and the index number<br>we pass with the allocator function.<br><br>Change-Id: I8dee07f1c63037d1f73113f69c612d1f2703cee5<br>Related: OS#2659<br>---<br>M include/osmocom/mgcp/mgcp_endp.h<br>M src/libosmo-mgcp/mgcp_endp.c<br>M src/libosmo-mgcp/mgcp_trunk.c<br>3 files changed, 21 insertions(+), 22 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-mgw refs/changes/54/18754/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/include/osmocom/mgcp/mgcp_endp.h b/include/osmocom/mgcp/mgcp_endp.h</span><br><span>index 1fe8266..b3627b0 100644</span><br><span>--- a/include/osmocom/mgcp/mgcp_endp.h</span><br><span>+++ b/include/osmocom/mgcp/mgcp_endp.h</span><br><span>@@ -103,7 +103,8 @@</span><br><span> uint32_t x_osmo_ign;</span><br><span> };</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-struct mgcp_endpoint *mgcp_endp_alloc(struct mgcp_trunk *trunk, char *name);</span><br><span style="color: hsl(120, 100%, 40%);">+struct mgcp_endpoint *mgcp_endp_alloc(struct mgcp_trunk *trunk,</span><br><span style="color: hsl(120, 100%, 40%);">+ unsigned int index);</span><br><span> void mgcp_endp_release(struct mgcp_endpoint *endp);</span><br><span> struct mgcp_endpoint *mgcp_endp_by_name_trunk(int *cause, const char *epname,</span><br><span> struct mgcp_trunk *trunk);</span><br><span>diff --git a/src/libosmo-mgcp/mgcp_endp.c b/src/libosmo-mgcp/mgcp_endp.c</span><br><span>index 62b0854..38d83d5 100644</span><br><span>--- a/src/libosmo-mgcp/mgcp_endp.c</span><br><span>+++ b/src/libosmo-mgcp/mgcp_endp.c</span><br><span>@@ -33,13 +33,23 @@</span><br><span> .rtp.cleanup_cb = mgcp_cleanup_rtp_bridge_cb</span><br><span> };</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/* Generate virtual endpoint name from given parameters */</span><br><span style="color: hsl(120, 100%, 40%);">+static void gen_virtual_epname(char *epname, const char *domain,</span><br><span style="color: hsl(120, 100%, 40%);">+ unsigned int index)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+ snprintf(epname, MGCP_ENDPOINT_MAXLEN, "%s%x@%s",</span><br><span style="color: hsl(120, 100%, 40%);">+ MGCP_ENDPOINT_PREFIX_VIRTUAL_TRUNK, index, domain);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> /*! allocate an endpoint and set default values.</span><br><span> * \param[in] trunk configuration.</span><br><span style="color: hsl(0, 100%, 40%);">- * \param[in] name endpoint name.</span><br><span style="color: hsl(120, 100%, 40%);">+ * \param[in] name endpoint index.</span><br><span> * \returns endpoint on success, NULL on failure. */</span><br><span style="color: hsl(0, 100%, 40%);">-struct mgcp_endpoint *mgcp_endp_alloc(struct mgcp_trunk *trunk, char *name) </span><br><span style="color: hsl(120, 100%, 40%);">+struct mgcp_endpoint *mgcp_endp_alloc(struct mgcp_trunk *trunk,</span><br><span style="color: hsl(120, 100%, 40%);">+ unsigned int index)</span><br><span> {</span><br><span> struct mgcp_endpoint *endp;</span><br><span style="color: hsl(120, 100%, 40%);">+ char ep_name_buf[MGCP_ENDPOINT_MAXLEN];</span><br><span> </span><br><span> endp = talloc_zero(trunk->endpoints, struct mgcp_endpoint);</span><br><span> if (!endp)</span><br><span>@@ -48,14 +58,16 @@</span><br><span> INIT_LLIST_HEAD(&endp->conns);</span><br><span> endp->cfg = trunk->cfg;</span><br><span> endp->trunk = trunk;</span><br><span style="color: hsl(0, 100%, 40%);">- endp->name = talloc_strdup(endp, name);</span><br><span> </span><br><span> switch (trunk->trunk_type) {</span><br><span> case MGCP_TRUNK_VIRTUAL:</span><br><span> endp->type = &ep_typeset.rtp;</span><br><span style="color: hsl(120, 100%, 40%);">+ gen_virtual_epname(ep_name_buf, trunk->cfg->domain, index);</span><br><span> break;</span><br><span> case MGCP_TRUNK_E1:</span><br><span style="color: hsl(0, 100%, 40%);">- /* FIXME: Implement E1 allocation */</span><br><span style="color: hsl(120, 100%, 40%);">+ /* FIXME: E1 trunk implementation is work in progress, this endpoint</span><br><span style="color: hsl(120, 100%, 40%);">+ * name is incomplete (subslots) */</span><br><span style="color: hsl(120, 100%, 40%);">+ snprintf(ep_name_buf, sizeof(ep_name_buf), "%s-1/%x", MGCP_ENDPOINT_PREFIX_E1_TRUNK, index);</span><br><span> LOGP(DLMGCP, LOGL_FATAL, "E1 trunks not implemented!\n");</span><br><span> break;</span><br><span> default:</span><br><span>@@ -63,6 +75,8 @@</span><br><span> trunk->trunk_type, __FILE__, __LINE__);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ endp->name = talloc_strdup(endp, ep_name_buf);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> return endp;</span><br><span> }</span><br><span> </span><br><span>diff --git a/src/libosmo-mgcp/mgcp_trunk.c b/src/libosmo-mgcp/mgcp_trunk.c</span><br><span>index 15e4a0a..7774e40 100644</span><br><span>--- a/src/libosmo-mgcp/mgcp_trunk.c</span><br><span>+++ b/src/libosmo-mgcp/mgcp_trunk.c</span><br><span>@@ -64,7 +64,6 @@</span><br><span> int mgcp_trunk_alloc_endpts(struct mgcp_trunk *trunk)</span><br><span> {</span><br><span> int i;</span><br><span style="color: hsl(0, 100%, 40%);">- char ep_name_buf[MGCP_ENDPOINT_MAXLEN];</span><br><span> struct mgcp_endpoint *endp;</span><br><span> </span><br><span> /* Make sure the amount of requested endpoints does not execeed</span><br><span>@@ -88,22 +87,7 @@</span><br><span> </span><br><span> /* create endpoints */</span><br><span> for (i = 0; i < trunk->vty_number_endpoints; ++i) {</span><br><span style="color: hsl(0, 100%, 40%);">- switch (trunk->trunk_type) {</span><br><span style="color: hsl(0, 100%, 40%);">- case MGCP_TRUNK_VIRTUAL:</span><br><span style="color: hsl(0, 100%, 40%);">- snprintf(ep_name_buf, sizeof(ep_name_buf), "%s%x@%s", MGCP_ENDPOINT_PREFIX_VIRTUAL_TRUNK, i,</span><br><span style="color: hsl(0, 100%, 40%);">- trunk->cfg->domain);</span><br><span style="color: hsl(0, 100%, 40%);">- break;</span><br><span style="color: hsl(0, 100%, 40%);">- case MGCP_TRUNK_E1:</span><br><span style="color: hsl(0, 100%, 40%);">- /* FIXME: E1 trunk implementation is work in progress, this endpoint</span><br><span style="color: hsl(0, 100%, 40%);">- * name is incomplete (subslots) */</span><br><span style="color: hsl(0, 100%, 40%);">- snprintf(ep_name_buf, sizeof(ep_name_buf), "%s-1/%x", MGCP_ENDPOINT_PREFIX_E1_TRUNK, i);</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%);">- osmo_panic("Cannot allocate unimplemented trunk type %d! %s:%d\n",</span><br><span style="color: hsl(0, 100%, 40%);">- trunk->trunk_type, __FILE__, __LINE__);</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%);">- endp = mgcp_endp_alloc(trunk, ep_name_buf);</span><br><span style="color: hsl(120, 100%, 40%);">+ endp = mgcp_endp_alloc(trunk, i);</span><br><span> if (!endp) {</span><br><span> talloc_free(trunk->endpoints);</span><br><span> return -1;</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-mgw/+/18754">change 18754</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/+/18754"/><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: I8dee07f1c63037d1f73113f69c612d1f2703cee5 </div>
<div style="display:none"> Gerrit-Change-Number: 18754 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: dexter <pmaier@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>