37 #ifndef LWIP_HDR_API_H 38 #define LWIP_HDR_API_H 42 #if LWIP_NETCONN || LWIP_SOCKET 61 #define NETCONN_NOFLAG 0x00 62 #define NETCONN_NOCOPY 0x00 63 #define NETCONN_COPY 0x01 64 #define NETCONN_MORE 0x02 65 #define NETCONN_DONTBLOCK 0x04 66 #define NETCONN_NOAUTORCVD 0x08 67 #define NETCONN_NOFIN 0x10 71 #define NETCONN_FLAG_MBOXCLOSED 0x01 73 #define NETCONN_FLAG_NON_BLOCKING 0x02 75 #define NETCONN_FLAG_IN_NONBLOCKING_CONNECT 0x04 76 #if LWIP_NETCONN_FULLDUPLEX 78 #define NETCONN_FLAG_MBOXINVALID 0x08 82 #define NETCONN_FLAG_CHECK_WRITESPACE 0x10 87 #define NETCONN_FLAG_IPV6_V6ONLY 0x20 89 #if LWIP_NETBUF_RECVINFO 91 #define NETCONN_FLAG_PKTINFO 0x40 94 #define NETCONN_FIN_RX_PENDING 0x80 97 #define NETCONNTYPE_GROUP(t) ((t)&0xF0) 98 #define NETCONNTYPE_DATAGRAM(t) ((t)&0xE0) 100 #define NETCONN_TYPE_IPV6 0x08 101 #define NETCONNTYPE_ISIPV6(t) (((t)&NETCONN_TYPE_IPV6) != 0) 102 #define NETCONNTYPE_ISUDPLITE(t) (((t)&0xF3) == NETCONN_UDPLITE) 103 #define NETCONNTYPE_ISUDPNOCHKSUM(t) (((t)&0xF3) == NETCONN_UDPNOCHKSUM) 105 #define NETCONNTYPE_ISIPV6(t) (0) 106 #define NETCONNTYPE_ISUDPLITE(t) ((t) == NETCONN_UDPLITE) 107 #define NETCONNTYPE_ISUDPNOCHKSUM(t) ((t) == NETCONN_UDPNOCHKSUM) 119 NETCONN_TCP_IPV6 = NETCONN_TCP | NETCONN_TYPE_IPV6 ,
124 NETCONN_UDPLITE = 0x21,
126 NETCONN_UDPNOCHKSUM = 0x22,
130 NETCONN_UDP_IPV6 = NETCONN_UDP | NETCONN_TYPE_IPV6 ,
132 NETCONN_UDPLITE_IPV6 = NETCONN_UDPLITE | NETCONN_TYPE_IPV6 ,
134 NETCONN_UDPNOCHKSUM_IPV6 = NETCONN_UDPNOCHKSUM | NETCONN_TYPE_IPV6 ,
141 , NETCONN_RAW_IPV6 = NETCONN_RAW | NETCONN_TYPE_IPV6
183 NETCONN_EVT_RCVMINUS,
184 NETCONN_EVT_SENDPLUS,
185 NETCONN_EVT_SENDMINUS,
189 #if LWIP_IGMP || (LWIP_IPV6 && LWIP_IPV6_MLD) 199 #define NETCONN_DNS_DEFAULT NETCONN_DNS_IPV4_IPV6 200 #define NETCONN_DNS_IPV4 0 201 #define NETCONN_DNS_IPV6 1 202 #define NETCONN_DNS_IPV4_IPV6 2 203 #define NETCONN_DNS_IPV6_IPV4 3 215 typedef void (* netconn_callback)(
struct netconn *,
enum netconn_evt, u16_t len);
220 enum netconn_type type;
222 enum netconn_state state;
232 #if !LWIP_NETCONN_SEM_PER_THREAD 244 #if LWIP_NETCONN_FULLDUPLEX 247 int mbox_threads_waiting;
282 struct api_msg *current_msg;
301 #define API_EVENT(c,e,l) if (c->callback) { \ 302 (*c->callback)(c, e, l); \ 310 #define netconn_new(t) netconn_new_with_proto_and_callback(t, 0, NULL) 311 #define netconn_new_with_callback(t, c) netconn_new_with_proto_and_callback(t, 0, c) 312 struct netconn *netconn_new_with_proto_and_callback(
enum netconn_type t, u8_t proto,
314 err_t netconn_prepare_delete(
struct netconn *conn);
315 err_t netconn_delete(
struct netconn *conn);
317 #define netconn_type(conn) (conn->type) 319 err_t netconn_getaddr(
struct netconn *conn,
ip_addr_t *addr,
320 u16_t *port, u8_t local);
322 #define netconn_peer(c,i,p) netconn_getaddr(c,i,p,0) 324 #define netconn_addr(c,i,p) netconn_getaddr(c,i,p,1) 326 err_t netconn_bind(
struct netconn *conn,
const ip_addr_t *addr, u16_t port);
327 err_t netconn_bind_if(
struct netconn *conn, u8_t if_idx);
328 err_t netconn_connect(
struct netconn *conn,
const ip_addr_t *addr, u16_t port);
329 err_t netconn_disconnect (
struct netconn *conn);
330 err_t netconn_listen_with_backlog(
struct netconn *conn, u8_t backlog);
332 #define netconn_listen(conn) netconn_listen_with_backlog(conn, TCP_DEFAULT_LISTEN_BACKLOG) 333 err_t netconn_accept(
struct netconn *conn,
struct netconn **new_conn);
334 err_t netconn_recv(
struct netconn *conn,
struct netbuf **new_buf);
335 err_t netconn_recv_udp_raw_netbuf(
struct netconn *conn,
struct netbuf **new_buf);
336 err_t netconn_recv_udp_raw_netbuf_flags(
struct netconn *conn,
struct netbuf **new_buf, u8_t apiflags);
337 err_t netconn_recv_tcp_pbuf(
struct netconn *conn,
struct pbuf **new_buf);
338 err_t netconn_recv_tcp_pbuf_flags(
struct netconn *conn,
struct pbuf **new_buf, u8_t apiflags);
339 err_t netconn_tcp_recvd(
struct netconn *conn,
size_t len);
340 err_t netconn_sendto(
struct netconn *conn,
struct netbuf *buf,
342 err_t netconn_send(
struct netconn *conn,
struct netbuf *buf);
343 err_t netconn_write_partly(
struct netconn *conn,
const void *dataptr,
size_t size,
344 u8_t apiflags,
size_t *bytes_written);
345 err_t netconn_write_vectors_partly(
struct netconn *conn,
struct netvector *vectors, u16_t vectorcnt,
346 u8_t apiflags,
size_t *bytes_written);
348 #define netconn_write(conn, dataptr, size, apiflags) \ 349 netconn_write_partly(conn, dataptr, size, apiflags, NULL) 350 err_t netconn_close(
struct netconn *conn);
351 err_t netconn_shutdown(
struct netconn *conn, u8_t shut_rx, u8_t shut_tx);
353 #if LWIP_IGMP || (LWIP_IPV6 && LWIP_IPV6_MLD) 354 err_t netconn_join_leave_group(
struct netconn *conn,
const ip_addr_t *multiaddr,
355 const ip_addr_t *netif_addr,
enum netconn_igmp join_or_leave);
356 err_t netconn_join_leave_group_netif(
struct netconn *conn,
const ip_addr_t *multiaddr,
357 u8_t if_idx,
enum netconn_igmp join_or_leave);
360 #if LWIP_IPV4 && LWIP_IPV6 361 err_t netconn_gethostbyname_addrtype(
const char *name,
ip_addr_t *addr, u8_t dns_addrtype);
362 #define netconn_gethostbyname(name, addr) netconn_gethostbyname_addrtype(name, addr, NETCONN_DNS_DEFAULT) 364 err_t netconn_gethostbyname(
const char *name,
ip_addr_t *addr);
365 #define netconn_gethostbyname_addrtype(name, addr, dns_addrtype) netconn_gethostbyname(name, addr) 369 err_t netconn_err(
struct netconn *conn);
370 #define netconn_recv_bufsize(conn) ((conn)->recv_bufsize) 372 #define netconn_set_flags(conn, set_flags) do { (conn)->flags = (u8_t)((conn)->flags | (set_flags)); } while(0) 373 #define netconn_clear_flags(conn, clr_flags) do { (conn)->flags = (u8_t)((conn)->flags & (u8_t)(~(clr_flags) & 0xff)); } while(0) 374 #define netconn_is_flag_set(conn, flag) (((conn)->flags & (flag)) != 0) 377 #define netconn_set_nonblocking(conn, val) do { if(val) { \ 378 netconn_set_flags(conn, NETCONN_FLAG_NON_BLOCKING); \ 380 netconn_clear_flags(conn, NETCONN_FLAG_NON_BLOCKING); }} while(0) 382 #define netconn_is_nonblocking(conn) (((conn)->flags & NETCONN_FLAG_NON_BLOCKING) != 0) 388 #define netconn_set_ipv6only(conn, val) do { if(val) { \ 389 netconn_set_flags(conn, NETCONN_FLAG_IPV6_V6ONLY); \ 391 netconn_clear_flags(conn, NETCONN_FLAG_IPV6_V6ONLY); }} while(0) 395 #define netconn_get_ipv6only(conn) (((conn)->flags & NETCONN_FLAG_IPV6_V6ONLY) != 0) 400 #define netconn_set_sendtimeout(conn, timeout) ((conn)->send_timeout = (timeout)) 402 #define netconn_get_sendtimeout(conn) ((conn)->send_timeout) 406 #define netconn_set_recvtimeout(conn, timeout) ((conn)->recv_timeout = (timeout)) 408 #define netconn_get_recvtimeout(conn) ((conn)->recv_timeout) 412 #define netconn_set_recvbufsize(conn, recvbufsize) ((conn)->recv_bufsize = (recvbufsize)) 414 #define netconn_get_recvbufsize(conn) ((conn)->recv_bufsize) 417 #if LWIP_NETCONN_SEM_PER_THREAD 418 void netconn_thread_init(
void);
419 void netconn_thread_cleanup(
void);
421 #define netconn_thread_init() 422 #define netconn_thread_cleanup()
lwIP Options Configuration
Main packet buffer struct.
IP address structure for passing IP addresses by value.
netbuf API (for netconn API)
Support for different processor and compiler architectures.
IP address API (common IPv4 and IPv6)