<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="X-UA-Compatible" content="IE=9"/> <meta name="generator" content="Doxygen 1.8.13"/> <meta name="viewport" content="width=device-width, initial-scale=1"/> <title>mbed TLS v2.7.3: net_sockets.h Source File</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="dynsections.js"></script> <link href="doxygen.css" rel="stylesheet" type="text/css" /> </head> <body> <div id="top"><!-- do not remove this div, it is closed by doxygen! --> <div id="titlearea"> <table cellspacing="0" cellpadding="0"> <tbody> <tr style="height: 56px;"> <td id="projectalign" style="padding-left: 0.5em;"> <div id="projectname">mbed TLS v2.7.3 </div> </td> </tr> </tbody> </table> </div> <!-- end header part --> <!-- Generated by Doxygen 1.8.13 --> <script type="text/javascript" src="menudata.js"></script> <script type="text/javascript" src="menu.js"></script> <script type="text/javascript"> $(function() { initMenu('',false,false,'search.php','Search'); }); </script> <div id="main-nav"></div> <div id="nav-path" class="navpath"> <ul> <li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_b4d146e9a6d8dd56ed4afb2480a97fd3.html">mbedtls</a></li> </ul> </div> </div><!-- top --> <div class="header"> <div class="headertitle"> <div class="title">net_sockets.h</div> </div> </div><!--header--> <div class="contents"> <a href="net__sockets_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> </div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">/*</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * SPDX-License-Identifier: Apache-2.0</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> *</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License"); you may</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * not use this file except in compliance with the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> *</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * limitations under the License.</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> *</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> * This file is part of mbed TLS (https://tls.mbed.org)</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment"> */</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#ifndef MBEDTLS_NET_SOCKETS_H</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#define MBEDTLS_NET_SOCKETS_H</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> </div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#if !defined(MBEDTLS_CONFIG_FILE)</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include "<a class="code" href="config_8h.html">config.h</a>"</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include MBEDTLS_CONFIG_FILE</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "<a class="code" href="ssl_8h.html">ssl.h</a>"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include <stddef.h></span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#include <stdint.h></span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="net__sockets_8h.html#aa639b33eeaf6414c0de66ab9b8ff6cde"> 38</a></span> <span class="preprocessor">#define MBEDTLS_ERR_NET_SOCKET_FAILED -0x0042 </span></div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="net__sockets_8h.html#acdd34e19acf5a23c593895605bf3f219"> 39</a></span> <span class="preprocessor">#define MBEDTLS_ERR_NET_CONNECT_FAILED -0x0044 </span></div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="net__sockets_8h.html#a4dbd66233b3f8bdd812f388667fcf123"> 40</a></span> <span class="preprocessor">#define MBEDTLS_ERR_NET_BIND_FAILED -0x0046 </span></div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="net__sockets_8h.html#a4bf7cbe6fff470186e4a7a275dde4bdd"> 41</a></span> <span class="preprocessor">#define MBEDTLS_ERR_NET_LISTEN_FAILED -0x0048 </span></div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="net__sockets_8h.html#a030cd35e75797c983c61152fd36bd135"> 42</a></span> <span class="preprocessor">#define MBEDTLS_ERR_NET_ACCEPT_FAILED -0x004A </span></div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="net__sockets_8h.html#a0c95b85b300ddc10a753899ff2f154f2"> 43</a></span> <span class="preprocessor">#define MBEDTLS_ERR_NET_RECV_FAILED -0x004C </span></div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="net__sockets_8h.html#ad11d72cca1319fd35fb9e73c9428e92d"> 44</a></span> <span class="preprocessor">#define MBEDTLS_ERR_NET_SEND_FAILED -0x004E </span></div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="net__sockets_8h.html#a1793f099e5c010750c7a07bf259898d9"> 45</a></span> <span class="preprocessor">#define MBEDTLS_ERR_NET_CONN_RESET -0x0050 </span></div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="net__sockets_8h.html#a937d55e9aa02f1554a43f562a5fc24f9"> 46</a></span> <span class="preprocessor">#define MBEDTLS_ERR_NET_UNKNOWN_HOST -0x0052 </span></div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="net__sockets_8h.html#a6a089c6b33dd98bfae43a42ed726cacb"> 47</a></span> <span class="preprocessor">#define MBEDTLS_ERR_NET_BUFFER_TOO_SMALL -0x0043 </span></div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="net__sockets_8h.html#a945ec2afc6c9d9d73166ce1e073aaa18"> 48</a></span> <span class="preprocessor">#define MBEDTLS_ERR_NET_INVALID_CONTEXT -0x0045 </span></div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="net__sockets_8h.html#a28c00c358ccc381ecfc2a28f59db8bd3"> 50</a></span> <span class="preprocessor">#define MBEDTLS_NET_LISTEN_BACKLOG 10 </span></div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="net__sockets_8h.html#a989e1bc1aae7e48ac318d5ddd24efa3b"> 52</a></span> <span class="preprocessor">#define MBEDTLS_NET_PROTO_TCP 0 </span></div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="net__sockets_8h.html#a8d6d212e9f0ea5756fff8d06c46f4f44"> 53</a></span> <span class="preprocessor">#define MBEDTLS_NET_PROTO_UDP 1 </span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="preprocessor">#ifdef __cplusplus</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="keyword">extern</span> <span class="stringliteral">"C"</span> {</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="structmbedtls__net__context.html"> 66</a></span> <span class="keyword">typedef</span> <span class="keyword">struct</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> {</div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="structmbedtls__net__context.html#ad6eda44e3bfee722150d12a591408995"> 68</a></span>  <span class="keywordtype">int</span> <a class="code" href="structmbedtls__net__context.html#ad6eda44e3bfee722150d12a591408995">fd</a>; </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> }</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <a class="code" href="structmbedtls__net__context.html">mbedtls_net_context</a>;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> <span class="keywordtype">void</span> <a class="code" href="net__sockets_8h.html#aed7458e19fc1b4794f3a23aa3df49543">mbedtls_net_init</a>( <a class="code" href="structmbedtls__net__context.html">mbedtls_net_context</a> *ctx );</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> <span class="keywordtype">int</span> <a class="code" href="net__sockets_8h.html#ac12c400864a5aad46666828ce2a089a4">mbedtls_net_connect</a>( <a class="code" href="structmbedtls__net__context.html">mbedtls_net_context</a> *ctx, <span class="keyword">const</span> <span class="keywordtype">char</span> *host, <span class="keyword">const</span> <span class="keywordtype">char</span> *port, <span class="keywordtype">int</span> proto );</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> <span class="keywordtype">int</span> <a class="code" href="net__sockets_8h.html#aa1cb7fc819153c43a2c75c95d0152c75">mbedtls_net_bind</a>( <a class="code" href="structmbedtls__net__context.html">mbedtls_net_context</a> *ctx, <span class="keyword">const</span> <span class="keywordtype">char</span> *bind_ip, <span class="keyword">const</span> <span class="keywordtype">char</span> *port, <span class="keywordtype">int</span> proto );</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> </div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> <span class="keywordtype">int</span> <a class="code" href="net__sockets_8h.html#a2f862b9086f3466593d5cf399b2c98c6">mbedtls_net_accept</a>( <a class="code" href="structmbedtls__net__context.html">mbedtls_net_context</a> *bind_ctx,</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <a class="code" href="structmbedtls__net__context.html">mbedtls_net_context</a> *client_ctx,</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keywordtype">void</span> *client_ip, <span class="keywordtype">size_t</span> buf_size, <span class="keywordtype">size_t</span> *ip_len );</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> </div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> <span class="keywordtype">int</span> <a class="code" href="net__sockets_8h.html#aeea4e6fd5ad3167bf8563e61f6f75963">mbedtls_net_set_block</a>( <a class="code" href="structmbedtls__net__context.html">mbedtls_net_context</a> *ctx );</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> </div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> <span class="keywordtype">int</span> <a class="code" href="net__sockets_8h.html#a2ee4acdc24ef78c9acf5068a423b8c30">mbedtls_net_set_nonblock</a>( <a class="code" href="structmbedtls__net__context.html">mbedtls_net_context</a> *ctx );</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> </div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> <span class="keywordtype">void</span> <a class="code" href="net__sockets_8h.html#a716044d3c30c449bd68052b7c418ff84">mbedtls_net_usleep</a>( <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> usec );</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> </div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> <span class="keywordtype">int</span> <a class="code" href="net__sockets_8h.html#a03af351ec420bbeb5e91357abcfb3663">mbedtls_net_recv</a>( <span class="keywordtype">void</span> *ctx, <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *buf, <span class="keywordtype">size_t</span> len );</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span> </div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> <span class="keywordtype">int</span> <a class="code" href="net__sockets_8h.html#a4841afd0e14f1fd44b82c3a850961ab7">mbedtls_net_send</a>( <span class="keywordtype">void</span> *ctx, <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *buf, <span class="keywordtype">size_t</span> len );</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span> </div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span> <span class="keywordtype">int</span> <a class="code" href="net__sockets_8h.html#a67810154d2328a80b146155d8cdecfd9">mbedtls_net_recv_timeout</a>( <span class="keywordtype">void</span> *ctx, <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *buf, <span class="keywordtype">size_t</span> len,</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  uint32_t timeout );</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span> </div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span> <span class="keywordtype">void</span> <a class="code" href="net__sockets_8h.html#a77c35cb3f4b9fe6035d1d3742f3b4a24">mbedtls_net_free</a>( <a class="code" href="structmbedtls__net__context.html">mbedtls_net_context</a> *ctx );</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span> </div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> <span class="preprocessor">#ifdef __cplusplus</span></div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span> }</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span> </div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span> <span class="preprocessor">#endif </span><span class="comment">/* net_sockets.h */</span><span class="preprocessor"></span></div><div class="ttc" id="net__sockets_8h_html_aa1cb7fc819153c43a2c75c95d0152c75"><div class="ttname"><a href="net__sockets_8h.html#aa1cb7fc819153c43a2c75c95d0152c75">mbedtls_net_bind</a></div><div class="ttdeci">int mbedtls_net_bind(mbedtls_net_context *ctx, const char *bind_ip, const char *port, int proto)</div><div class="ttdoc">Create a receiving socket on bind_ip:port in the chosen protocol. If bind_ip == NULL, all interfaces are bound. </div></div> <div class="ttc" id="net__sockets_8h_html_a77c35cb3f4b9fe6035d1d3742f3b4a24"><div class="ttname"><a href="net__sockets_8h.html#a77c35cb3f4b9fe6035d1d3742f3b4a24">mbedtls_net_free</a></div><div class="ttdeci">void mbedtls_net_free(mbedtls_net_context *ctx)</div><div class="ttdoc">Gracefully shutdown the connection and free associated data. </div></div> <div class="ttc" id="net__sockets_8h_html_a2f862b9086f3466593d5cf399b2c98c6"><div class="ttname"><a href="net__sockets_8h.html#a2f862b9086f3466593d5cf399b2c98c6">mbedtls_net_accept</a></div><div class="ttdeci">int mbedtls_net_accept(mbedtls_net_context *bind_ctx, mbedtls_net_context *client_ctx, void *client_ip, size_t buf_size, size_t *ip_len)</div><div class="ttdoc">Accept a connection from a remote client. </div></div> <div class="ttc" id="net__sockets_8h_html_aeea4e6fd5ad3167bf8563e61f6f75963"><div class="ttname"><a href="net__sockets_8h.html#aeea4e6fd5ad3167bf8563e61f6f75963">mbedtls_net_set_block</a></div><div class="ttdeci">int mbedtls_net_set_block(mbedtls_net_context *ctx)</div><div class="ttdoc">Set the socket blocking. </div></div> <div class="ttc" id="net__sockets_8h_html_ac12c400864a5aad46666828ce2a089a4"><div class="ttname"><a href="net__sockets_8h.html#ac12c400864a5aad46666828ce2a089a4">mbedtls_net_connect</a></div><div class="ttdeci">int mbedtls_net_connect(mbedtls_net_context *ctx, const char *host, const char *port, int proto)</div><div class="ttdoc">Initiate a connection with host:port in the given protocol. </div></div> <div class="ttc" id="config_8h_html"><div class="ttname"><a href="config_8h.html">config.h</a></div><div class="ttdoc">Configuration options (set of defines) </div></div> <div class="ttc" id="structmbedtls__net__context_html"><div class="ttname"><a href="structmbedtls__net__context.html">mbedtls_net_context</a></div><div class="ttdef"><b>Definition:</b> <a href="net__sockets_8h_source.html#l00066">net_sockets.h:66</a></div></div> <div class="ttc" id="net__sockets_8h_html_a716044d3c30c449bd68052b7c418ff84"><div class="ttname"><a href="net__sockets_8h.html#a716044d3c30c449bd68052b7c418ff84">mbedtls_net_usleep</a></div><div class="ttdeci">void mbedtls_net_usleep(unsigned long usec)</div><div class="ttdoc">Portable usleep helper. </div></div> <div class="ttc" id="net__sockets_8h_html_a4841afd0e14f1fd44b82c3a850961ab7"><div class="ttname"><a href="net__sockets_8h.html#a4841afd0e14f1fd44b82c3a850961ab7">mbedtls_net_send</a></div><div class="ttdeci">int mbedtls_net_send(void *ctx, const unsigned char *buf, size_t len)</div><div class="ttdoc">Write at most &#39;len&#39; characters. If no error occurs, the actual amount read is returned. </div></div> <div class="ttc" id="net__sockets_8h_html_aed7458e19fc1b4794f3a23aa3df49543"><div class="ttname"><a href="net__sockets_8h.html#aed7458e19fc1b4794f3a23aa3df49543">mbedtls_net_init</a></div><div class="ttdeci">void mbedtls_net_init(mbedtls_net_context *ctx)</div><div class="ttdoc">Initialize a context Just makes the context ready to be used or freed safely. </div></div> <div class="ttc" id="structmbedtls__net__context_html_ad6eda44e3bfee722150d12a591408995"><div class="ttname"><a href="structmbedtls__net__context.html#ad6eda44e3bfee722150d12a591408995">mbedtls_net_context::fd</a></div><div class="ttdeci">int fd</div><div class="ttdef"><b>Definition:</b> <a href="net__sockets_8h_source.html#l00068">net_sockets.h:68</a></div></div> <div class="ttc" id="ssl_8h_html"><div class="ttname"><a href="ssl_8h.html">ssl.h</a></div><div class="ttdoc">SSL/TLS functions. </div></div> <div class="ttc" id="net__sockets_8h_html_a2ee4acdc24ef78c9acf5068a423b8c30"><div class="ttname"><a href="net__sockets_8h.html#a2ee4acdc24ef78c9acf5068a423b8c30">mbedtls_net_set_nonblock</a></div><div class="ttdeci">int mbedtls_net_set_nonblock(mbedtls_net_context *ctx)</div><div class="ttdoc">Set the socket non-blocking. </div></div> <div class="ttc" id="net__sockets_8h_html_a67810154d2328a80b146155d8cdecfd9"><div class="ttname"><a href="net__sockets_8h.html#a67810154d2328a80b146155d8cdecfd9">mbedtls_net_recv_timeout</a></div><div class="ttdeci">int mbedtls_net_recv_timeout(void *ctx, unsigned char *buf, size_t len, uint32_t timeout)</div><div class="ttdoc">Read at most &#39;len&#39; characters, blocking for at most &#39;timeout&#39; seconds. If no error occurs...</div></div> <div class="ttc" id="net__sockets_8h_html_a03af351ec420bbeb5e91357abcfb3663"><div class="ttname"><a href="net__sockets_8h.html#a03af351ec420bbeb5e91357abcfb3663">mbedtls_net_recv</a></div><div class="ttdeci">int mbedtls_net_recv(void *ctx, unsigned char *buf, size_t len)</div><div class="ttdoc">Read at most &#39;len&#39; characters. If no error occurs, the actual amount read is returned. </div></div> </div><!-- fragment --></div><!-- contents --> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> Generated on Tue May 8 2018 21:08:41 for mbed TLS v2.7.3 by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.13 </small></address> </body> </html>