2
* Copyright (c) 2001-2004 Swedish Institute of Computer Science.
5
* Redistribution and use in source and binary forms, with or without modification,
6
* are permitted provided that the following conditions are met:
8
* 1. Redistributions of source code must retain the above copyright notice,
9
* this list of conditions and the following disclaimer.
10
* 2. Redistributions in binary form must reproduce the above copyright notice,
11
* this list of conditions and the following disclaimer in the documentation
12
* and/or other materials provided with the distribution.
13
* 3. The name of the author may not be used to endorse or promote products
14
* derived from this software without specific prior written permission.
16
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
17
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
18
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
19
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
20
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
21
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
22
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
23
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
24
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
27
* This file is part of the lwIP TCP/IP stack.
29
* Author: Adam Dunkels <adam@sics.se>
32
#ifndef __LWIP_API_H__
33
#define __LWIP_API_H__
36
#include "lwip/pbuf.h"
51
/* Throughout this file, IP addresses and port numbers are expected to be in
52
* the same byte order as in the corresponding pcb.
55
#define NETCONN_NOCOPY 0x00
56
#define NETCONN_COPY 0x01
58
/* Helpers to process several netconn_types by the same code */
59
#define NETCONNTYPE_GROUP(t) (t&0xF0)
60
#define NETCONNTYPE_DATAGRAM(t) (t&0xE0)
64
/* NETCONN_TCP Group */
66
/* NETCONN_UDP Group */
68
NETCONN_UDPLITE = 0x21,
69
NETCONN_UDPNOCHKSUM= 0x22,
70
/* NETCONN_RAW Group */
95
#endif /* LWIP_IGMP */
104
enum netconn_type type;
105
enum netconn_state state;
114
sys_mbox_t acceptmbox;
118
#endif /* LWIP_SO_RCVTIMEO */
120
/** TCP: when data passed to netconn_write doesn't fit into the send buffer,
121
this temporarily stores the message. */
122
struct api_msg_msg *write_msg;
123
/** TCP: when data passed to netconn_write doesn't fit into the send buffer,
124
this temporarily stores how much is already sent. */
126
#if LWIP_TCPIP_CORE_LOCKING
127
/** TCP: when data passed to netconn_write doesn't fit into the send buffer,
128
this temporarily stores whether to wake up the original application task
129
if data couldn't be sent in the first try. */
133
void (* callback)(struct netconn *, enum netconn_evt, u16_t len);
136
/* Network buffer functions: */
137
struct netbuf * netbuf_new (void);
138
void netbuf_delete (struct netbuf *buf);
139
void * netbuf_alloc (struct netbuf *buf, u16_t size);
140
void netbuf_free (struct netbuf *buf);
141
err_t netbuf_ref (struct netbuf *buf,
142
const void *dataptr, u16_t size);
143
void netbuf_chain (struct netbuf *head,
144
struct netbuf *tail);
146
u16_t netbuf_len (struct netbuf *buf);
147
err_t netbuf_data (struct netbuf *buf,
148
void **dataptr, u16_t *len);
149
s8_t netbuf_next (struct netbuf *buf);
150
void netbuf_first (struct netbuf *buf);
152
void netbuf_copy_partial(struct netbuf *buf, void *dataptr,
153
u16_t len, u16_t offset);
155
#define netbuf_copy(buf,dataptr,len) netbuf_copy_partial(buf, dataptr, len, 0)
156
#define netbuf_len(buf) ((buf)->p->tot_len)
157
#define netbuf_fromaddr(buf) ((buf)->addr)
158
#define netbuf_fromport(buf) ((buf)->port)
160
/* Network connection functions: */
161
#define netconn_new(t) netconn_new_with_proto_and_callback(t, 0, NULL)
162
#define netconn_new_with_callback(t, c) netconn_new_with_proto_and_callback(t, 0, c)
164
netconn *netconn_new_with_proto_and_callback(enum netconn_type t, u8_t proto,
165
void (*callback)(struct netconn *, enum netconn_evt, u16_t len));
166
err_t netconn_delete (struct netconn *conn);
167
enum netconn_type netconn_type (struct netconn *conn);
168
err_t netconn_peer (struct netconn *conn,
169
struct ip_addr *addr,
171
err_t netconn_addr (struct netconn *conn,
172
struct ip_addr **addr,
174
err_t netconn_bind (struct netconn *conn,
175
struct ip_addr *addr,
177
err_t netconn_connect (struct netconn *conn,
178
struct ip_addr *addr,
180
err_t netconn_disconnect (struct netconn *conn);
181
err_t netconn_listen (struct netconn *conn);
182
struct netconn * netconn_accept (struct netconn *conn);
183
struct netbuf * netconn_recv (struct netconn *conn);
184
err_t netconn_sendto (struct netconn *conn,
185
struct netbuf *buf, struct ip_addr *addr, u16_t port);
186
err_t netconn_send (struct netconn *conn,
188
err_t netconn_write (struct netconn *conn,
189
const void *dataptr, int size,
191
err_t netconn_close (struct netconn *conn);
194
err_t netconn_join_leave_group (struct netconn *conn,
195
struct ip_addr *multiaddr,
196
struct ip_addr *interface,
197
enum netconn_igmp join_or_leave);
198
#endif /* LWIP_IGMP */
200
#define netconn_err(conn) ((conn)->err)
206
#endif /* __LWIP_API_H__ */