19 #include <ti/drivers/net/wifi/simplelink.h>
21 #ifndef __SL_SOCKET_H__
22 #define __SL_SOCKET_H__
45 #define SL_FD_SETSIZE SL_MAX_SOCKETS
46 #define SL_BSD_SOCKET_ID_MASK (0x1F)
49 #define SL_SOCK_STREAM (1)
50 #define SL_SOCK_DGRAM (2)
51 #define SL_SOCK_RAW (3)
52 #define SL_IPPROTO_TCP (6)
53 #define SL_IPPROTO_UDP (17)
54 #define SL_IPPROTO_RAW (255)
55 #define SL_SEC_SOCKET (100)
58 #define SL_AF_INET (2)
59 #define SL_AF_INET6 (3)
61 #define SL_AF_PACKET (17)
63 #define SL_PF_INET AF_INET
64 #define SL_PF_INET6 AF_INET6
65 #define SL_INADDR_ANY (0)
66 #define SL_IN6ADDR_ANY (0)
70 #define SL_SOCKET_PAYLOAD_TYPE_MASK (0xF0)
71 #define SL_SOCKET_PAYLOAD_TYPE_RAW_TRANCEIVER (0x80)
75 #define SL_SOCKET_TX_FAILED_EVENT (1)
76 #define SL_SOCKET_ASYNC_EVENT (2)
80 #define SL_SOCKET_TRIGGER_EVENT_SELECT (1)
82 #define SL_SOL_SOCKET (1)
83 #define SL_IPPROTO_IP (2)
84 #define SL_SOL_PHY_OPT (3)
86 #define SL_SO_RCVBUF (8)
87 #define SL_SO_KEEPALIVE (9)
88 #define SL_SO_LINGER (13)
89 #define SL_SO_RCVTIMEO (20)
90 #define SL_SO_NONBLOCKING (24)
91 #define SL_SO_SECMETHOD (25)
92 #define SL_SO_SECURE_MASK (26)
93 #define SL_SO_SECURE_FILES (27)
94 #define SL_SO_CHANGE_CHANNEL (28)
95 #define SL_SO_SECURE_FILES_PRIVATE_KEY_FILE_NAME (30)
96 #define SL_SO_SECURE_FILES_CERTIFICATE_FILE_NAME (31)
97 #define SL_SO_SECURE_FILES_CA_FILE_NAME (32)
98 #define SL_SO_SECURE_FILES_PEER_CERT_OR_DH_KEY_FILE_NAME (33)
99 #define SL_SO_STARTTLS (35)
100 #define SL_SO_SSL_CONNECTION_PARAMS (36)
101 #define SL_SO_KEEPALIVETIME (37)
102 #define SL_SO_SECURE_DISABLE_CERTIFICATE_STORE (38)
103 #define SL_SO_RX_NO_IP_BOUNDARY (39)
104 #define SL_SO_SECURE_ALPN (40)
105 #define SL_SO_SECURE_EXT_CLIENT_CHLNG_RESP (41)
106 #define SL_SO_SECURE_DOMAIN_NAME_VERIFICATION (42)
108 #define SL_IP_MULTICAST_IF (60)
109 #define SL_IP_MULTICAST_TTL (61)
110 #define SL_IP_ADD_MEMBERSHIP (65)
111 #define SL_IP_DROP_MEMBERSHIP (66)
112 #define SL_IP_HDRINCL (67)
113 #define SL_IP_RAW_RX_NO_HEADER (68)
114 #define SL_IP_RAW_IPV6_HDRINCL (69)
115 #define SL_IPV6_ADD_MEMBERSHIP (70)
116 #define SL_IPV6_DROP_MEMBERSHIP (71)
117 #define SL_IPV6_MULTICAST_HOPS (72)
119 #define SL_SO_PHY_RATE (100)
120 #define SL_SO_PHY_TX_POWER (101)
121 #define SL_SO_PHY_NUM_FRAMES_TO_TX (102)
122 #define SL_SO_PHY_PREAMBLE (103)
123 #define SL_SO_PHY_TX_INHIBIT_THRESHOLD (104)
124 #define SL_SO_PHY_TX_TIMEOUT (105)
125 #define SL_SO_PHY_ALLOW_ACKS (106)
129 SL_TX_INHIBIT_THRESHOLD_MIN = 1,
130 SL_TX_INHIBIT_THRESHOLD_LOW = 2,
131 SL_TX_INHIBIT_THRESHOLD_DEFAULT = 3,
132 SL_TX_INHIBIT_THRESHOLD_MED = 4,
133 SL_TX_INHIBIT_THRESHOLD_HIGH = 5,
134 SL_TX_INHIBIT_THRESHOLD_MAX = 6
135 } SlTxInhibitThreshold_e;
137 #define SL_SO_SEC_METHOD_SSLV3 (0)
138 #define SL_SO_SEC_METHOD_TLSV1 (1)
139 #define SL_SO_SEC_METHOD_TLSV1_1 (2)
140 #define SL_SO_SEC_METHOD_TLSV1_2 (3)
141 #define SL_SO_SEC_METHOD_SSLv3_TLSV1_2 (4)
142 #define SL_SO_SEC_METHOD_DLSV1 (5)
144 #define SL_SEC_MASK_SSL_RSA_WITH_RC4_128_SHA (1 << 0)
145 #define SL_SEC_MASK_SSL_RSA_WITH_RC4_128_MD5 (1 << 1)
146 #define SL_SEC_MASK_TLS_RSA_WITH_AES_256_CBC_SHA (1 << 2)
147 #define SL_SEC_MASK_TLS_DHE_RSA_WITH_AES_256_CBC_SHA (1 << 3)
148 #define SL_SEC_MASK_TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (1 << 4)
149 #define SL_SEC_MASK_TLS_ECDHE_RSA_WITH_RC4_128_SHA (1 << 5)
150 #define SL_SEC_MASK_TLS_RSA_WITH_AES_128_CBC_SHA256 (1 << 6)
151 #define SL_SEC_MASK_TLS_RSA_WITH_AES_256_CBC_SHA256 (1 << 7)
152 #define SL_SEC_MASK_TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 (1 << 8)
153 #define SL_SEC_MASK_TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 (1 << 9)
154 #define SL_SEC_MASK_TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA (1 << 10)
155 #define SL_SEC_MASK_TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA (1 << 11)
156 #define SL_SEC_MASK_TLS_RSA_WITH_AES_128_GCM_SHA256 (1 << 12)
157 #define SL_SEC_MASK_TLS_RSA_WITH_AES_256_GCM_SHA384 (1 << 13)
158 #define SL_SEC_MASK_TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 (1 << 14)
159 #define SL_SEC_MASK_TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 (1 << 15)
160 #define SL_SEC_MASK_TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (1 << 16)
161 #define SL_SEC_MASK_TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (1 << 17)
162 #define SL_SEC_MASK_TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 (1 << 18)
163 #define SL_SEC_MASK_TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 (1 << 19)
164 #define SL_SEC_MASK_TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256 (1 << 20)
165 #define SL_SEC_MASK_TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (1 << 21)
166 #define SL_SEC_MASK_TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (1 << 22)
168 #define SL_SEC_MASK_SECURE_DEFAULT ((SL_SEC_MASK_TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256 << 1) - 1)
170 #define SL_SECURE_ALPN_H1 (1 << 0)
171 #define SL_SECURE_ALPN_H2 (1 << 1)
172 #define SL_SECURE_ALPN_H2C (1 << 2)
173 #define SL_SECURE_ALPN_H2_14 (1 << 3)
174 #define SL_SECURE_ALPN_H2_16 (1 << 4)
175 #define SL_SECURE_ALPN_FULL_LIST ((SL_SECURE_ALPN_H2_16 << 1 ) - 1)
178 #define SL_MSG_DONTWAIT (0x00000008)
181 #define SL_IP_LEASE_PEER_RELEASE (0)
182 #define SL_IP_LEASE_PEER_DECLINE (1)
183 #define SL_IP_LEASE_EXPIRED (2)
186 #define SL_SSL_ACCEPT (0)
187 #define SL_RX_FRAGMENTATION_TOO_BIG (1)
188 #define SL_OTHER_SIDE_CLOSE_SSL_DATA_NOT_ENCRYPTED (2)
189 #define SL_SSL_NOTIFICATION_CONNECTED_SECURED (3)
190 #define SL_SSL_NOTIFICATION_HANDSHAKE_FAILED (4)
191 #define SL_SSL_NOTIFICATION_WRONG_ROOT_CA (5)
192 #define SL_SOCKET_ASYNC_EVENT_SSL_NOTIFICATION_WRONG_ROOT_CA (5)
193 #define SL_MAX_ISSUER_AND_SUBJECT_NAME_LEN (16)
206 struct { _u8 s_b1,s_b2,s_b3,s_b4; } S_un_b;
207 struct { _u8 s_w1,s_w2; } S_un_w;
227 _u32 KeepaliveEnabled;
232 _u32 ReuseaddrEnabled;
237 _i32 RxIpNoBoundaryEnabled;
248 _u32 NonBlockingEnabled;
304 _u16 SubjectNameXoredSha1;
305 _u16 IssuerNameXoredSha1;
308 _i8 SubjectName[SL_MAX_ISSUER_AND_SUBJECT_NAME_LEN];
309 _i8 IssuerName[SL_MAX_ISSUER_AND_SUBJECT_NAME_LEN];
319 _u32 SecureCipherSuit;
320 _u32 SecureIsPeerValidated;
321 _u32 SecureALPNChosenProtocol;
333 SL_BSD_SECURED_PRIVATE_KEY_IDX = 0,
334 SL_BSD_SECURED_CERTIFICATE_IDX,
335 SL_BSD_SECURED_CA_IDX,
336 SL_BSD_SECURED_DH_IDX
337 }SlSockSecureSocketFilesIndex_e;
347 _u32 ipv6mr_interface;
357 typedef _i32 SlTime_t;
358 typedef _i32 SlSuseconds_t;
363 SlSuseconds_t tv_usec;
366 typedef _u16 SlSocklen_t;
404 _u32 fd_array[(SL_FD_SETSIZE + (_u8)31)/(_u8)32];
471 #if _SL_INCLUDE_FUNC(sl_Socket)
472 _i16
sl_Socket(_i16 Domain, _i16 Type, _i16 Protocol);
489 #if _SL_INCLUDE_FUNC(sl_Close)
543 #if _SL_INCLUDE_FUNC(sl_Accept)
573 #if _SL_INCLUDE_FUNC(sl_Bind)
597 #if _SL_INCLUDE_FUNC(sl_Listen)
639 #if _SL_INCLUDE_FUNC(sl_Connect)
696 #if _SL_INCLUDE_FUNC(sl_Select)
709 void SL_SOCKET_FD_SET(_i16 fd,
SlFdSet_t *fdset);
716 void SL_SOCKET_FD_CLR(_i16 fd,
SlFdSet_t *fdset);
727 _i16 SL_SOCKET_FD_ISSET(_i16 fd,
SlFdSet_t *fdset);
734 void SL_SOCKET_FD_ZERO(
SlFdSet_t *fdset);
1125 #if _SL_INCLUDE_FUNC(sl_SetSockOpt)
1126 _i16
sl_SetSockOpt(_i16 sd, _i16 level, _i16 optname,
const void *optval, SlSocklen_t optlen);
1168 #if _SL_INCLUDE_FUNC(sl_GetSockOpt)
1169 _i16
sl_GetSockOpt(_i16 sd, _i16 level, _i16 optname,
void *optval, SlSocklen_t *optlen);
1238 #if _SL_INCLUDE_FUNC(sl_Recv)
1239 _i16
sl_Recv(_i16 sd,
void *buf, _i16 len, _i16 flags);
1298 #if _SL_INCLUDE_FUNC(sl_RecvFrom)
1347 #if _SL_INCLUDE_FUNC(sl_Send )
1348 _i16
sl_Send(_i16 sd,
const void *buf, _i16 len, _i16 flags);
1400 #if _SL_INCLUDE_FUNC(sl_SendTo)
1401 _i16
sl_SendTo(_i16 sd,
const void *buf, _i16 len, _i16 flags,
const SlSockAddr_t *to, SlSocklen_t tolen);
1417 #if _SL_INCLUDE_FUNC(sl_Htonl )
1420 #define sl_Ntohl sl_Htonl
1436 #if _SL_INCLUDE_FUNC(sl_Htons )
1439 #define sl_Ntohs sl_Htons
_i16 sl_Bind(_i16 sd, const SlSockAddr_t *addr, _i16 addrlen)
Assign a name to a socket.
_u32 sl_Htonl(_u32 val)
Reorder the bytes of a 32-bit unsigned value.
_i16 sl_Select(_i16 nfds, SlFdSet_t *readsds, SlFdSet_t *writesds, SlFdSet_t *exceptsds, struct SlTimeval_t *timeout)
Monitor socket activity.
_i16 sl_SetSockOpt(_i16 sd, _i16 level, _i16 optname, const void *optval, SlSocklen_t optlen)
Set socket options-.
_u16 sl_Htons(_u16 val)
Reorder the bytes of a 16-bit unsigned value.
_i16 sl_Close(_i16 sd)
Gracefully close socket.
_i16 sl_Recv(_i16 sd, void *buf, _i16 len, _i16 flags)
Read data from TCP socket.
_i16 sl_GetSockOpt(_i16 sd, _i16 level, _i16 optname, void *optval, SlSocklen_t *optlen)
Get socket options.
_i16 sl_Socket(_i16 Domain, _i16 Type, _i16 Protocol)
Create an endpoint for communication.
_i16 sl_RecvFrom(_i16 sd, void *buf, _i16 len, _i16 flags, SlSockAddr_t *from, SlSocklen_t *fromlen)
Read data from socket.
_i16 sl_Accept(_i16 sd, SlSockAddr_t *addr, SlSocklen_t *addrlen)
Accept a connection on a socket.
_i16 sl_Connect(_i16 sd, const SlSockAddr_t *addr, _i16 addrlen)
Initiate a connection on a socket.
_i16 sl_Listen(_i16 sd, _i16 backlog)
Listen for connections on a socket.
_i16 sl_SendTo(_i16 sd, const void *buf, _i16 len, _i16 flags, const SlSockAddr_t *to, SlSocklen_t tolen)
Write data to socket.
_i16 sl_Send(_i16 sd, const void *buf, _i16 len, _i16 flags)
Write data to TCP socket.