<p>lynxis lazus has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/libosmocore/+/19144">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">socket.c add osmo_sockaddr_valid()<br><br>osmo_sockaddr_valid() is a validator of osmo_sockaddr.<br>It ensure the sock_addr has address and port set.<br><br>Change-Id: Ib6fb050e1bfe3f3a8d8bbe5e762351ce6b7cc48c<br>---<br>M include/osmocom/core/socket.h<br>M src/socket.c<br>2 files changed, 26 insertions(+), 0 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/44/19144/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/include/osmocom/core/socket.h b/include/osmocom/core/socket.h</span><br><span>index 6bfcc4c..161691c 100644</span><br><span>--- a/include/osmocom/core/socket.h</span><br><span>+++ b/include/osmocom/core/socket.h</span><br><span>@@ -110,4 +110,6 @@</span><br><span> </span><br><span> int osmo_sock_local_ip(char *local_ip, const char *remote_ip);</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+int osmo_sockaddr_valid(struct osmo_sockaddr *addr);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> /*! @} */</span><br><span>diff --git a/src/socket.c b/src/socket.c</span><br><span>index c7fd28b..1d5d1a5 100644</span><br><span>--- a/src/socket.c</span><br><span>+++ b/src/socket.c</span><br><span>@@ -1512,6 +1512,30 @@</span><br><span> return 0;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/*! Determine the if address is valid to start a bind or connect.</span><br><span style="color: hsl(120, 100%, 40%);">+ * \param[in] addr the address to be tested</span><br><span style="color: hsl(120, 100%, 40%);">+ * \returns 0 if osmo_sockaddr is valid</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span style="color: hsl(120, 100%, 40%);">+int osmo_sockaddr_valid(struct osmo_sockaddr *addr)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+ struct in6_addr zero = { 0 };</span><br><span style="color: hsl(120, 100%, 40%);">+ if (addr == NULL)</span><br><span style="color: hsl(120, 100%, 40%);">+ return -EINVAL;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ if (addr->u.sas.ss_family == AF_INET) {</span><br><span style="color: hsl(120, 100%, 40%);">+ struct sockaddr_in *sin = &addr->u.sin;</span><br><span style="color: hsl(120, 100%, 40%);">+ return !(sin->sin_addr.s_addr > 0 && sin->sin_port > 0);</span><br><span style="color: hsl(120, 100%, 40%);">+ } else if (addr->u.sas.ss_family == AF_INET6) {</span><br><span style="color: hsl(120, 100%, 40%);">+ struct sockaddr_in6 *sin6 = &addr->u.sin6;</span><br><span style="color: hsl(120, 100%, 40%);">+ if (sin6->sin6_port == 0)</span><br><span style="color: hsl(120, 100%, 40%);">+ return 1;</span><br><span style="color: hsl(120, 100%, 40%);">+ if (memcmp(&sin6->sin6_addr, &zero, sizeof(struct in6_addr)) == 0)</span><br><span style="color: hsl(120, 100%, 40%);">+ return 1;</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ return -ENOTSUP;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> #endif /* HAVE_SYS_SOCKET_H */</span><br><span> </span><br><span> /*! @} */</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/libosmocore/+/19144">change 19144</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/libosmocore/+/19144"/><meta itemprop="name" content="View Change"/></div></div>
<div style="display:none"> Gerrit-Project: libosmocore </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: Ib6fb050e1bfe3f3a8d8bbe5e762351ce6b7cc48c </div>
<div style="display:none"> Gerrit-Change-Number: 19144 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: lynxis lazus <lynxis@fe80.eu> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>