Network Services API  2.00.00.16
slnetsock.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2017, Texas Instruments Incorporated
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  *
9  * * Redistributions of source code must retain the above copyright
10  * notice, this list of conditions and the following disclaimer.
11  *
12  * * Redistributions in binary form must reproduce the above copyright
13  * notice, this list of conditions and the following disclaimer in the
14  * documentation and/or other materials provided with the distribution.
15  *
16  * * Neither the name of Texas Instruments Incorporated nor the names of
17  * its contributors may be used to endorse or promote products derived
18  * from this software without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
22  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
24  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
27  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
28  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
29  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
30  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  */
32 
185 /*****************************************************************************/
186 /* Include files */
187 /*****************************************************************************/
188 
189 #ifndef __SL_NET_SOCK_H__
190 #define __SL_NET_SOCK_H__
191 
192 
193 #ifdef __cplusplus
194 extern "C" {
195 #endif
196 
197 #include <stdint.h>
198 
212 /*****************************************************************************/
213 /* Macro declarations */
214 /*****************************************************************************/
215 
216 #define SLNETSOCK_MAX_CONCURRENT_SOCKETS (32) /* Declares the maximum sockets that can be opened */
217 
218 /* Address families. */
219 #define SLNETSOCK_AF_INET (2) /* IPv4 socket (UDP, TCP, etc) */
220 #define SLNETSOCK_AF_INET6 (3) /* IPv6 socket (UDP, TCP, etc) */
221 #define SLNETSOCK_AF_RF (6) /* data include RF parameter, All layer by user (Wifi could be disconnected) */
222 #define SLNETSOCK_AF_PACKET (17) /* Network bypass */
223 
224 /* Protocol families, same as address families. */
225 #define SLNETSOCK_PF_INET SLNETSOCK_AF_INET
226 #define SLNETSOCK_PF_INET6 SLNETSOCK_AF_INET6
227 
228 /* Define argument types specifies the socket type. */
229 #define SLNETSOCK_SOCK_STREAM (1) /* TCP Socket */
230 #define SLNETSOCK_SOCK_DGRAM (2) /* UDP Socket */
231 #define SLNETSOCK_SOCK_RAW (3) /* Raw socket */
232 #define SLNETSOCK_SOCK_RX_MTR (4) /* RX Metrics socket */
233 #define SLNETSOCK_SOCK_MAC_WITH_CCA (5)
234 #define SLNETSOCK_SOCK_MAC_WITH_NO_CCA (6)
235 #define SLNETSOCK_SOCK_BRIDGE (7)
236 #define SLNETSOCK_SOCK_ROUTER (8)
237 
238 /* Define some BSD protocol constants. */
239 #define SLNETSOCK_PROTO_TCP (6) /* TCP Raw Socket */
240 #define SLNETSOCK_PROTO_UDP (17) /* UDP Raw Socket */
241 #define SLNETSOCK_PROTO_RAW (255) /* Raw Socket */
242 #define SLNETSOCK_PROTO_SECURE (100) /* Secured Socket Layer (SSL,TLS) */
243 
244 /* bind any addresses */
245 #define SLNETSOCK_INADDR_ANY (0)
246 #define SLNETSOCK_IN6ADDR_ANY (0)
247 
248 
249 /* socket options */
250 
251 /* possible values for the level parameter in slNetSock_setOpt / slNetSock_getOpt */
252 #define SLNETSOCK_LVL_SOCKET (1) /* Define the socket option category. */
253 #define SLNETSOCK_LVL_IP (2) /* Define the IP option category. */
254 #define SLNETSOCK_LVL_PHY (3) /* Define the PHY option category. */
255 
256 /* possible values for the option parameter in slNetSock_setOpt / slNetSock_getOpt */
257 
258 /* socket level options (SLNETSOCK_LVL_SOCKET) */
259 #define SLNETSOCK_OPSOCK_RCV_BUF (8) /* Setting TCP receive buffer size (window size) - This options takes SlNetSock_Winsize_t struct as parameter */
260 #define SLNETSOCK_OPSOCK_RCV_TIMEO (20) /* Enable receive timeout - This options takes SlNetSock_Timeval_t struct as parameter */
261 #define SLNETSOCK_OPSOCK_KEEPALIVE (9) /* Connections are kept alive with periodic messages - This options takes SlNetSock_Keepalive_t struct as parameter */
262 #define SLNETSOCK_OPSOCK_KEEPALIVE_TIME (36) /* keepalive time out - This options takes <b>uint32_t</b> as parameter */
263 #define SLNETSOCK_OPSOCK_LINGER (13) /* Socket lingers on close pending remaining send/receive packets - This options takes SlNetSock_linger_t struct as parameter */
264 #define SLNETSOCK_OPSOCK_NON_BLOCKING (24) /* Enable/disable nonblocking mode - This options takes SlNetSock_Nonblocking_t struct as parameter */
265 #define SLNETSOCK_OPSOCK_NON_IP_BOUNDARY (38) /* connectionless socket disable rx boundary - This options takes SlNetSock_NonIpBoundary_t struct as parameter */
266 #define SLNETSOCK_OPSOCK_SLNETSOCKSD (59) /* Used by the BSD layer in order to retrieve the slnetsock sd */
267 
268 /* IP level options (SLNETSOCK_LVL_IP) */
269 #define SLNETSOCK_OPIP_MULTICAST_TTL (61) /* Specify the TTL value to use for outgoing multicast packet. - This options takes <b>uint8_t</b> as parameter */
270 #define SLNETSOCK_OPIP_ADD_MEMBERSHIP (65) /* Join IPv4 multicast membership - This options takes SlNetSock_IpMreq_t struct as parameter */
271 #define SLNETSOCK_OPIP_DROP_MEMBERSHIP (66) /* Leave IPv4 multicast membership - This options takes SlNetSock_IpMreq_t struct as parameter */
272 #define SLNETSOCK_OPIP_HDRINCL (67) /* Raw socket IPv4 header included - This options takes <b>uint32_t</b> as parameter */
273 #define SLNETSOCK_OPIP_RAW_RX_NO_HEADER (68) /* Proprietary socket option that does not includeIPv4/IPv6 header (and extension headers) on received raw sockets - This options takes <b>uint32_t</b> as parameter */
274 #define SLNETSOCK_OPIP_RAW_IPV6_HDRINCL (69) /* Transmitted buffer over IPv6 socket contains IPv6 header - This options takes <b>uint32_t</b> as parameter */
275 #define SLNETSOCK_OPIPV6_ADD_MEMBERSHIP (70) /* Join IPv6 multicast membership - This options takes SlNetSock_IpV6Mreq_t struct as parameter */
276 #define SLNETSOCK_OPIPV6_DROP_MEMBERSHIP (71) /* Leave IPv6 multicast membership - This options takes SlNetSock_IpV6Mreq_t struct as parameter */
277 #define SLNETSOCK_OPIPV6_MULTICAST_HOPS (72) /* Specify the hops value to use for outgoing multicast packet. */
278 
279 /* PHY level options (SLNETSOCK_LVL_PHY) */
280 #define SLNETSOCK_OPPHY_CHANNEL (107) /* This option is available only when transceiver started - This options takes <b>uint32_t</b> as channel number parameter */
281 #define SLNETSOCK_OPPHY_RATE (100) /* WLAN Transmit rate - This options takes <b>uint32_t</b> as parameter based on SlWlanRateIndex_e */
282 #define SLNETSOCK_OPPHY_TX_POWER (101) /* TX Power level - This options takes <b>uint32_t</b> as parameter */
283 #define SLNETSOCK_OPPHY_NUM_FRAMES_TO_TX (102) /* Number of frames to transmit - This options takes <b>uint32_t</b> as parameter */
284 #define SLNETSOCK_OPPHY_PREAMBLE (103) /* Preamble for transmission - This options takes <b>uint32_t</b> as parameter */
285 #define SLNETSOCK_OPPHY_TX_INHIBIT_THRESHOLD (104) /* TX Inhibit Threshold (CCA) - This options takes <b>uint32_t</b> as parameter based on SlNetSockTxInhibitThreshold_e */
286 #define SLNETSOCK_OPPHY_TX_TIMEOUT (105) /* TX timeout for Transceiver frames (lifetime) in miliseconds (max value is 100ms) - This options takes <b>uint32_t</b> as parameter */
287 #define SLNETSOCK_OPPHY_ALLOW_ACKS (106) /* Enable sending ACKs in transceiver mode - This options takes <b>uint32_t</b> as parameter */
288 
292 typedef enum
293 {
301 
305 typedef enum
306 {
317 
318 /* available values for SLNETSOCK_SEC_ATTRIB_METHOD */
319 #define SLNETSOCK_SEC_METHOD_SSLV3 (0) /* security metohd SSL v3 */
320 #define SLNETSOCK_SEC_METHOD_TLSV1 (1) /* security metohd TLS v1 */
321 #define SLNETSOCK_SEC_METHOD_TLSV1_1 (2) /* security metohd TLS v1_1 */
322 #define SLNETSOCK_SEC_METHOD_TLSV1_2 (3) /* security metohd TLS v1_2 */
323 #define SLNETSOCK_SEC_METHOD_SSLv3_TLSV1_2 (4) /* use highest possible version from SSLv3 - TLS 1.2 */
324 #define SLNETSOCK_SEC_METHOD_DLSV1 (5) /* security metohd DTL v1 */
325 
326 /* available values for SLNETSOCK_SEC_ATTRIB_CIPHERS. The value is bitmap! */
327 #define SLNETSOCK_SEC_CIPHER_SSL_RSA_WITH_RC4_128_SHA (1 << 0)
328 #define SLNETSOCK_SEC_CIPHER_SSL_RSA_WITH_RC4_128_MD5 (1 << 1)
329 #define SLNETSOCK_SEC_CIPHER_TLS_RSA_WITH_AES_256_CBC_SHA (1 << 2)
330 #define SLNETSOCK_SEC_CIPHER_TLS_DHE_RSA_WITH_AES_256_CBC_SHA (1 << 3)
331 #define SLNETSOCK_SEC_CIPHER_TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (1 << 4)
332 #define SLNETSOCK_SEC_CIPHER_TLS_ECDHE_RSA_WITH_RC4_128_SHA (1 << 5)
333 #define SLNETSOCK_SEC_CIPHER_TLS_RSA_WITH_AES_128_CBC_SHA256 (1 << 6)
334 #define SLNETSOCK_SEC_CIPHER_TLS_RSA_WITH_AES_256_CBC_SHA256 (1 << 7)
335 #define SLNETSOCK_SEC_CIPHER_TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 (1 << 8)
336 #define SLNETSOCK_SEC_CIPHER_TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 (1 << 9)
337 #define SLNETSOCK_SEC_CIPHER_TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA (1 << 10)
338 #define SLNETSOCK_SEC_CIPHER_TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA (1 << 11)
339 #define SLNETSOCK_SEC_CIPHER_TLS_RSA_WITH_AES_128_GCM_SHA256 (1 << 12)
340 #define SLNETSOCK_SEC_CIPHER_TLS_RSA_WITH_AES_256_GCM_SHA384 (1 << 13)
341 #define SLNETSOCK_SEC_CIPHER_TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 (1 << 14)
342 #define SLNETSOCK_SEC_CIPHER_TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 (1 << 15)
343 #define SLNETSOCK_SEC_CIPHER_TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (1 << 16)
344 #define SLNETSOCK_SEC_CIPHER_TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (1 << 17)
345 #define SLNETSOCK_SEC_CIPHER_TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 (1 << 18)
346 #define SLNETSOCK_SEC_CIPHER_TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 (1 << 19)
347 #define SLNETSOCK_SEC_CIPHER_TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256 (1 << 20)
348 #define SLNETSOCK_SEC_CIPHER_TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (1 << 21)
349 #define SLNETSOCK_SEC_CIPHER_TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (1 << 22)
350 
351 /* available values for SLNETSOCK_SEC_ATTRIB_ALPN */
352 #define SLNETSOCK_SEC_ALPN_H1 (1 << 0)
353 #define SLNETSOCK_SEC_ALPN_H2 (1 << 1)
354 #define SLNETSOCK_SEC_ALPN_H2C (1 << 2)
355 #define SLNETSOCK_SEC_ALPN_H2_14 (1 << 3)
356 #define SLNETSOCK_SEC_ALPN_H2_16 (1 << 4)
357 #define SLNETSOCK_SEC_ALPN_FULL_LIST ((SLNETSOCK_SEC_ALPN_H2_16 << 1 ) - 1)
358 
359 /* available values for the flags of the SlNetSock_startSec function */
360 #define SLNETSOCK_SEC_START_SECURITY_SESSION_ONLY (1 << 0) /* Sends the command that will start the security session for a specific socket descriptor */
361 #define SLNETSOCK_SEC_BIND_CONTEXT_ONLY (1 << 1) /* Binds the security context to a specific socket descriptor */
362 #define SLNETSOCK_SEC_IS_SERVER (1 << 2) /* Used to define if the socket is client/server socket */
363 
364 /* available values for the flags of the SlNetSock_create function */
365 
366 #define SLNETSOCK_CREATE_IF_STATE_ENABLE (1 << 0) /* Creation of the socket will be on enabled state */
367 #define SLNETSOCK_CREATE_IF_STATUS_CONNECTED (1 << 1) /* Creation of the socket will be on status connected */
368 #define SLNETSOCK_CREATE_ALLOW_PARTIAL_MATCH (1 << 2) /* Creation of the socket will be on the interface with
369  the highest priority if the other flags will fail */
370 
371 /* Definitions for shutting down some or all parts of a full duplex connection */
372 #define SLNETSOCK_SHUT_RD (0) /* Further receptions will be disallowed */
373 #define SLNETSOCK_SHUT_WR (1) /* Further transmissions will be disallowed */
374 #define SLNETSOCK_SHUT_RDWR (2) /* Further receptions and transmissions will be disallowed */
375 
376 /* Length of address string representation */
377 #define SLNETSOCK_INET6_ADDRSTRLEN (40)
378 #define SLNETSOCK_INET_ADDRSTRLEN (15)
379 
380 #define SLNETSOCK_RECV_MSG_DONTWAIT (1 << 0)
381 
382 
383 /*****************************************************************************/
384 /* Structure/Enum declarations */
385 /*****************************************************************************/
386 
390 typedef struct _SlNetSock_InAddr_t
391 {
392 #ifndef s_addr
393  uint32_t s_addr; /* Internet address 32 bits */
394 #else
395 
398  union S_un
399  {
400  uint32_t S_addr;
401  struct
402  {
403  uint8_t s_b1,s_b2,s_b3,s_b4;
404  } S_un_b;
405  struct
406  {
407  uint16_t s_w1,s_w2;
408  } S_un_w;
409  } S_un;
410 #endif
412 
416 typedef struct _SlNetSock_In6Addr_t
417 {
418  union
419  {
420  uint8_t _S6_u8[16];
421  uint32_t _S6_u32[4];
422  } _S6_un;
424 
429 {
430  uint32_t keepaliveEnabled; /* 0 = disabled;1 = enabled; default = 1 */
432 
437 {
438  int32_t nonIpBoundaryEnabled; /* 0 = keep IP boundary; 1 = don`t keep ip boundary; default = 0; */
440 
444 typedef struct _SlNetSock_Winsize_t
445 {
446  uint32_t winSize; /* receive window size for tcp sockets */
448 
453 {
454  uint32_t nonBlockingEnabled; /* 0 = disabled, 1 = enabled, default = 1*/
456 
461 {
462  SlNetSockSecAttrib_e attribName; /* Security attribute name */
463  uint8_t *attribBuff; /* Security attribute buffer */
464  uint16_t attribBuffLen; /* Security attribute buffer length */
467 
472 
477 {
478  uint32_t secureALPN;
480 
485 {
486  uint32_t secureMask;
488 
493 {
494  uint8_t secureMethod;
496 
500 typedef struct _SlNetSock_IpMreq_t
501 {
502  SlNetSock_InAddr_t imr_multiaddr; /* The IPv4 multicast address to join */
503  uint32_t imr_interface; /* The interface to use for this group */
505 
509 typedef struct _SlNetSock_IpV6Mreq_t
510 {
511  SlNetSock_In6Addr_t ipv6mr_multiaddr; /* IPv6 multicast address of group */
512  uint32_t ipv6mr_interface; /* should be 0 to choose the default multicast interface */
514 
518 typedef struct _SlNetSock_linger_t
519 {
520  uint32_t l_onoff; /* 0 = disabled; 1 = enabled; default = 0; */
521  uint32_t l_linger; /* linger time in seconds; default = 0; */
523 
527 typedef int32_t SlNetSockTime_t;
531 typedef int32_t SlNetSockuseconds_t;
532 
536 typedef struct _SlNetSock_Timeval_t
537 {
538  SlNetSockTime_t tv_sec; /* Seconds */
539  SlNetSockuseconds_t tv_usec; /* Microseconds */
541 
545 typedef uint16_t SlNetSocklen_t;
546 
550 typedef struct _SlNetSock_Addr_t
551 {
552  uint16_t sa_family; /* Address family (e.g. , AF_INET) */
553  uint8_t sa_data[14]; /* Protocol- specific address information */
555 
559 typedef struct _SlNetSock_AddrIn6_t
560 {
561  uint16_t sin6_family; /* SLNETSOCK_AF_INET6 */
562  uint16_t sin6_port; /* Transport layer port. */
563  uint32_t sin6_flowinfo; /* IPv6 flow information. */
564  SlNetSock_In6Addr_t sin6_addr; /* IPv6 address. */
565  uint32_t sin6_scope_id; /* set of interfaces for a scope. */
567 
571 typedef struct _SlNetSock_AddrIn_t
572 {
573  uint16_t sin_family; /* Internet Protocol (AF_INET). */
574  uint16_t sin_port; /* Address port (16 bits). */
575  SlNetSock_InAddr_t sin_addr; /* Internet address (32 bits). */
576  int8_t sin_zero[8]; /* Not used. */
578 
582 typedef struct _SlNetSock_SdSet_t /* The select socket array manager */
583 {
584  uint32_t sdSetBitmap[(SLNETSOCK_MAX_CONCURRENT_SOCKETS + (uint8_t)31)/(uint8_t)32]; /* Bitmap of SOCKET Descriptors */
586 
587 
592 {
593  uint8_t rate; /* Received Rate */
594  uint8_t channel; /* The received channel */
595  int8_t rssi; /* The computed RSSI value in db of current frame */
596  uint8_t padding; /* pad to align to 32 bits */
597  uint32_t timestamp; /* Timestamp in microseconds */
599 
600 
601 /* SlNetSock modules include */
602 
603 #include "slnetif.h"
604 #include "slnetutils.h"
605 #include "slneterr.h"
606 
607 
608 /*****************************************************************************/
609 /* Function prototypes */
610 /*****************************************************************************/
611 
629 int32_t SlNetSock_init(int32_t flags);
630 
701 int16_t SlNetSock_create(int16_t domain, int16_t type, int16_t protocol, uint32_t ifBitmap, int16_t flags);
702 
703 
718 int32_t SlNetSock_close(int16_t sd);
719 
720 
739 int32_t SlNetSock_shutdown(int16_t sd, int16_t how);
740 
741 
791 int16_t SlNetSock_accept(int16_t sd, SlNetSock_Addr_t *addr, SlNetSocklen_t *addrlen);
792 
793 
818 int32_t SlNetSock_bind(int16_t sd, const SlNetSock_Addr_t *addr, int16_t addrlen);
819 
820 
840 int32_t SlNetSock_listen(int16_t sd, int16_t backlog);
841 
842 
879 int32_t SlNetSock_connect(int16_t sd, const SlNetSock_Addr_t *addr, SlNetSocklen_t addrlen);
880 
881 
903 int32_t SlNetSock_connectUrl(int16_t sd, const char *url);
904 
928 int32_t SlNetSock_getPeerName(int16_t sd, SlNetSock_Addr_t *addr, SlNetSocklen_t *addrlen);
929 
930 
962 int32_t SlNetSock_getSockName(int16_t sd, SlNetSock_Addr_t *addr, SlNetSocklen_t *addrlen);
963 
964 
1016 int32_t SlNetSock_select(int16_t nsds, SlNetSock_SdSet_t *readsds, SlNetSock_SdSet_t *writesds, SlNetSock_SdSet_t *exceptsds, SlNetSock_Timeval_t *timeout);
1017 
1018 
1024 int32_t SlNetSock_sdsSet(int16_t sd, SlNetSock_SdSet_t *sdset);
1025 
1026 
1032 int32_t SlNetSock_sdsClr(int16_t sd, SlNetSock_SdSet_t *sdset);
1033 
1034 
1040 int32_t SlNetSock_sdsClrAll(SlNetSock_SdSet_t *sdset);
1041 
1042 
1051 int32_t SlNetSock_sdsIsSet(int16_t sd, SlNetSock_SdSet_t *sdset);
1052 
1053 
1342 int32_t SlNetSock_setOpt(int16_t sd, int16_t level, int16_t optname, void *optval, SlNetSocklen_t optlen);
1343 
1344 
1374 int32_t SlNetSock_getOpt(int16_t sd, int16_t level, int16_t optname, void *optval, SlNetSocklen_t *optlen);
1375 
1376 
1443 int32_t SlNetSock_recv(int16_t sd, void *buf, uint32_t len, uint32_t flags);
1444 
1445 
1500 int32_t SlNetSock_recvFrom(int16_t sd, void *buf, uint32_t len, uint32_t flags, SlNetSock_Addr_t *from, SlNetSocklen_t *fromlen);
1501 
1502 
1548 int32_t SlNetSock_send(int16_t sd, const void *buf, uint32_t len, uint32_t flags);
1549 
1550 
1599 int32_t SlNetSock_sendTo(int16_t sd, const void *buf, uint32_t len, uint32_t flags, const SlNetSock_Addr_t *to, SlNetSocklen_t tolen);
1600 
1601 
1630 int32_t SlNetSock_getIfID(uint16_t sd);
1631 
1632 
1658 
1659 
1682 
1683 
1716 int32_t SlNetSock_secAttribSet(SlNetSockSecAttrib_t *secAttrib , SlNetSockSecAttrib_e attribName , void *val, uint16_t len);
1717 
1718 
1747 int32_t SlNetSock_startSec(int16_t sd, SlNetSockSecAttrib_t *secAttrib, uint8_t flags);
1748 
1749 
1758 #ifdef __cplusplus
1759 }
1760 #endif /* __cplusplus */
1761 
1762 #endif /* __NET_SOCK_H__ */
uint32_t secureALPN
Definition: slnetsock.h:478
int32_t SlNetSock_sdsSet(int16_t sd, SlNetSock_SdSet_t *sdset)
SlNetSock_select&#39;s SlNetSock_SdSet_t SET function.
struct _SlNetSock_NonIpBoundary_t SlNetSock_NonIpBoundary_t
The SlNetSock_NonIpBoundary_t structure is used in SLNETSOCK_OPSOCK_NON_IP_BOUNDARY socket level opti...
The SlNetSock_TransceiverRxOverHead_t structure holds the data for Rx transceiver mode using a raw so...
Definition: slnetsock.h:591
uint32_t ipv6mr_interface
Definition: slnetsock.h:512
SlNetSockSecAttrib_e
The SlNetSockSecAttrib_e enumerations is used for security attribute object in SlNetSock_secAttribSet...
Definition: slnetsock.h:305
int32_t SlNetSock_startSec(int16_t sd, SlNetSockSecAttrib_t *secAttrib, uint8_t flags)
Start a security session on an opened socket.
int32_t SlNetSock_recvFrom(int16_t sd, void *buf, uint32_t len, uint32_t flags, SlNetSock_Addr_t *from, SlNetSocklen_t *fromlen)
Read data from socket.
int32_t SlNetSock_connectUrl(int16_t sd, const char *url)
Initiate a connection on a socket by URL.
Definition: slnetsock.h:298
SlNetSock IPv4 address, Internet style.
Definition: slnetsock.h:571
uint8_t * attribBuff
Definition: slnetsock.h:463
Definition: slnetsock.h:299
The SlNetSock_IpMreq_t structure is used in SLNETSOCK_OPIP_ADD_MEMBERSHIP/SLNETSOCK_OPIP_DROP_MEMBERS...
Definition: slnetsock.h:500
int32_t SlNetSock_sdsIsSet(int16_t sd, SlNetSock_SdSet_t *sdset)
SlNetSock_select&#39;s SlNetSock_SdSet_t ISSET function.
struct _SlNetSock_IpV6Mreq_t SlNetSock_IpV6Mreq_t
The SlNetSock_IpV6Mreq_t structure is used in SLNETSOCK_OPIPV6_ADD_MEMBERSHIP/SLNETSOCK_OPIPV6_DROP_M...
int32_t SlNetSock_bind(int16_t sd, const SlNetSock_Addr_t *addr, int16_t addrlen)
Assign a name to a socket.
int32_t SlNetSock_getOpt(int16_t sd, int16_t level, int16_t optname, void *optval, SlNetSocklen_t *optlen)
Get socket options.
int32_t SlNetSock_close(int16_t sd)
Gracefully close socket.
int32_t SlNetSock_shutdown(int16_t sd, int16_t how)
Shutting down parts of a full-duplex connection.
int32_t SlNetSock_getIfID(uint16_t sd)
Get interface ID from socket descriptor (sd)
int32_t SlNetSock_recv(int16_t sd, void *buf, uint32_t len, uint32_t flags)
Read data from TCP socket.
SlNetSockSecAttrib_e attribName
Definition: slnetsock.h:462
int32_t SlNetSock_secAttribSet(SlNetSockSecAttrib_t *secAttrib, SlNetSockSecAttrib_e attribName, void *val, uint16_t len)
set a security attributes
uint32_t l_onoff
Definition: slnetsock.h:520
int8_t rssi
Definition: slnetsock.h:595
Internet address.
Definition: slnetsock.h:390
Definition: slnetsock.h:310
uint16_t SlNetSocklen_t
The SlNetSocklen_t is used for declaring the socket length parameter.
Definition: slnetsock.h:545
uint32_t keepaliveEnabled
Definition: slnetsock.h:430
Definition: slnetsock.h:315
int16_t SlNetSock_create(int16_t domain, int16_t type, int16_t protocol, uint32_t ifBitmap, int16_t flags)
Create an endpoint for communication.
SlNetSock_InAddr_t imr_multiaddr
Definition: slnetsock.h:502
Definition: slnetsock.h:308
#define SLNETSOCK_MAX_CONCURRENT_SOCKETS
Definition: slnetsock.h:216
uint16_t sin6_port
Definition: slnetsock.h:562
int32_t SlNetSock_init(int32_t flags)
Initialize the slnetsock module.
Definition: slnetsock.h:307
uint16_t attribBuffLen
Definition: slnetsock.h:464
The SlNetSock_Keepalive_t structure is used in SLNETSOCK_OPSOCK_KEEPALIVE socket level option...
Definition: slnetsock.h:428
The SlNetSock_Nonblocking_t structure is used in SLNETSOCK_OPSOCK_NON_BLOCKING socket level option...
Definition: slnetsock.h:452
Definition: slnetsock.h:309
struct _SlNetSock_Winsize_t SlNetSock_Winsize_t
The SlNetSock_Winsize_t structure is used in SLNETSOCK_OPSOCK_RCV_BUF socket level option...
uint8_t padding
Definition: slnetsock.h:596
int16_t SlNetSock_accept(int16_t sd, SlNetSock_Addr_t *addr, SlNetSocklen_t *addrlen)
Accept a connection on a socket.
int32_t SlNetSock_sdsClr(int16_t sd, SlNetSock_SdSet_t *sdset)
SlNetSock_select&#39;s SlNetSock_SdSet_t CLR function.
SlNetSock_InAddr_t sin_addr
Definition: slnetsock.h:575
struct _SlNetSock_InAddr_t SlNetSock_InAddr_t
Internet address.
Secure socket attribute context.
Definition: slnetsock.h:460
int32_t SlNetSock_getPeerName(int16_t sd, SlNetSock_Addr_t *addr, SlNetSocklen_t *addrlen)
Return address info about the remote side of the connection.
uint32_t s_addr
Definition: slnetsock.h:393
struct _SlNetSock_Keepalive_t SlNetSock_Keepalive_t
The SlNetSock_Keepalive_t structure is used in SLNETSOCK_OPSOCK_KEEPALIVE socket level option...
SlNetSock_In6Addr_t sin6_addr
Definition: slnetsock.h:564
IpV6 or Ipv6 EUI64.
Definition: slnetsock.h:416
struct _SlNetSock_Nonblocking_t SlNetSock_Nonblocking_t
The SlNetSock_Nonblocking_t structure is used in SLNETSOCK_OPSOCK_NON_BLOCKING socket level option...
IpV4 socket address.
Definition: slnetsock.h:550
SlNetSockTime_t tv_sec
Definition: slnetsock.h:538
uint16_t sin_port
Definition: slnetsock.h:574
struct _SlNetSock_SecureMethod_t SlNetSock_SecureMethod_t
Secure Method structure.
The SlNetSock_IpV6Mreq_t structure is used in SLNETSOCK_OPIPV6_ADD_MEMBERSHIP/SLNETSOCK_OPIPV6_DROP_M...
Definition: slnetsock.h:509
The SlNetSock_NonIpBoundary_t structure is used in SLNETSOCK_OPSOCK_NON_IP_BOUNDARY socket level opti...
Definition: slnetsock.h:436
uint32_t secureMask
Definition: slnetsock.h:486
struct _SlNetSock_Timeval_t SlNetSock_Timeval_t
The SlNetSock_Timeval_t structure is used in SLNETSOCK_OPSOCK_RCV_TIMEO socket level option...
struct _SlNetSock_SecAttribNode_t * next
Definition: slnetsock.h:465
int32_t SlNetSock_setOpt(int16_t sd, int16_t level, int16_t optname, void *optval, SlNetSocklen_t optlen)
Set socket options-.
uint32_t winSize
Definition: slnetsock.h:446
Definition: slnetsock.h:311
uint32_t imr_interface
Definition: slnetsock.h:503
uint32_t sin6_flowinfo
Definition: slnetsock.h:563
uint8_t channel
Definition: slnetsock.h:594
int32_t SlNetSockuseconds_t
The SlNetSockuseconds_t is used for setting/getting time in micro-seconds.
Definition: slnetsock.h:531
Secure Mask structure.
Definition: slnetsock.h:484
int32_t SlNetSockTime_t
The SlNetSockTime_t is used for setting/getting time in seconds.
Definition: slnetsock.h:527
int32_t SlNetSock_sdsClrAll(SlNetSock_SdSet_t *sdset)
SlNetSock_select&#39;s SlNetSock_SdSet_t ZERO function.
The SlNetSock_linger_t structure is used in SLNETSOCK_OPSOCK_LINGER socket level option.
Definition: slnetsock.h:518
uint16_t sin6_family
Definition: slnetsock.h:561
Definition: slnetsock.h:294
uint32_t nonBlockingEnabled
Definition: slnetsock.h:454
SlNetSockTxInhibitThreshold_e
The SlNetSockTxInhibitThreshold_e enumerations is used in SLNETSOCK_OPPHY_TX_INHIBIT_THRESHOLD PHY le...
Definition: slnetsock.h:292
Secure ALPN structure.
Definition: slnetsock.h:476
SlNetSock IPv6 address, Internet style.
Definition: slnetsock.h:559
SlNetSock_SecAttribNode_t * SlNetSockSecAttrib_t
Secure socket attribute handler.
Definition: slnetsock.h:471
Definition: slnetsock.h:295
SlNetSock_In6Addr_t ipv6mr_multiaddr
Definition: slnetsock.h:511
struct _SlNetSock_SdSet_t SlNetSock_SdSet_t
The SlNetSock_SdSet_t structure holds the sd array for SlNetSock_select function. ...
struct _SlNetSock_IpMreq_t SlNetSock_IpMreq_t
The SlNetSock_IpMreq_t structure is used in SLNETSOCK_OPIP_ADD_MEMBERSHIP/SLNETSOCK_OPIP_DROP_MEMBERS...
Definition: slnetsock.h:297
int32_t nonIpBoundaryEnabled
Definition: slnetsock.h:438
int32_t SlNetSock_connect(int16_t sd, const SlNetSock_Addr_t *addr, SlNetSocklen_t addrlen)
Initiate a connection on a socket.
The SlNetSock_Timeval_t structure is used in SLNETSOCK_OPSOCK_RCV_TIMEO socket level option...
Definition: slnetsock.h:536
The SlNetSock_Winsize_t structure is used in SLNETSOCK_OPSOCK_RCV_BUF socket level option...
Definition: slnetsock.h:444
struct _SlNetSock_linger_t SlNetSock_linger_t
The SlNetSock_linger_t structure is used in SLNETSOCK_OPSOCK_LINGER socket level option.
uint32_t timestamp
Definition: slnetsock.h:597
Secure Method structure.
Definition: slnetsock.h:492
struct _SlNetSock_AddrIn_t SlNetSock_AddrIn_t
SlNetSock IPv4 address, Internet style.
struct _SlNetSock_Addr_t SlNetSock_Addr_t
IpV4 socket address.
Definition: slnetsock.h:296
struct _SlNetSock_TransceiverRxOverHead_t SlNetSock_TransceiverRxOverHead_t
The SlNetSock_TransceiverRxOverHead_t structure holds the data for Rx transceiver mode using a raw so...
uint8_t rate
Definition: slnetsock.h:593
struct _SlNetSock_In6Addr_t SlNetSock_In6Addr_t
IpV6 or Ipv6 EUI64.
int32_t SlNetSock_listen(int16_t sd, int16_t backlog)
Listen for connections on a socket.
struct _SlNetSock_SecAttribNode_t SlNetSock_SecAttribNode_t
Secure socket attribute context.
int32_t SlNetSock_sendTo(int16_t sd, const void *buf, uint32_t len, uint32_t flags, const SlNetSock_Addr_t *to, SlNetSocklen_t tolen)
Write data to socket.
Definition: slnetsock.h:313
int32_t SlNetSock_secAttribDelete(SlNetSockSecAttrib_t *secAttrib)
Deletes a security attributes object.
struct _SlNetSock_SecureALPN_t SlNetSock_SecureALPN_t
Secure ALPN structure.
Definition: slnetsock.h:312
uint16_t sin_family
Definition: slnetsock.h:573
uint32_t l_linger
Definition: slnetsock.h:521
SlNetSockSecAttrib_t * SlNetSock_secAttribCreate(void)
Creates a security attributes object.
uint32_t sin6_scope_id
Definition: slnetsock.h:565
struct _SlNetSock_AddrIn6_t SlNetSock_AddrIn6_t
SlNetSock IPv6 address, Internet style.
int32_t SlNetSock_send(int16_t sd, const void *buf, uint32_t len, uint32_t flags)
Write data to TCP socket.
uint8_t secureMethod
Definition: slnetsock.h:494
The SlNetSock_SdSet_t structure holds the sd array for SlNetSock_select function. ...
Definition: slnetsock.h:582
uint16_t sa_family
Definition: slnetsock.h:552
struct _SlNetSock_SecureMask_t SlNetSock_SecureMask_t
Secure Mask structure.
SlNetSockuseconds_t tv_usec
Definition: slnetsock.h:539
int32_t SlNetSock_getSockName(int16_t sd, SlNetSock_Addr_t *addr, SlNetSocklen_t *addrlen)
Get local address info by socket descriptor Returns the local address info of the socket descriptor...
int32_t SlNetSock_select(int16_t nsds, SlNetSock_SdSet_t *readsds, SlNetSock_SdSet_t *writesds, SlNetSock_SdSet_t *exceptsds, SlNetSock_Timeval_t *timeout)
Monitor socket activity.
Copyright 2017, Texas Instruments Incorporated