00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 
00026 
00027 
00028 
00029 
00030 
00031 
00032 
00033 
00034 
00035 #ifndef __LWIP_API_H__
00036 #define __LWIP_API_H__
00037 
00038 #include "net/opt.h"
00039 #include "net/pbuf.h"
00040 #include "net/sys.h"
00041 
00042 #include "net/ipv4/ip.h"
00043 
00044 #include "net/udp.h"
00045 #include "net/tcp.h"
00046 
00047 #include "net/err.h"
00048 
00049 #define NETCONN_NOCOPY 0x00
00050 #define NETCONN_COPY   0x01
00051 
00052 enum netconn_type {
00053   NETCONN_TCP,
00054   NETCONN_UDP,
00055   NETCONN_UDPLITE,
00056   NETCONN_UDPNOCHKSUM
00057 };
00058 
00059 enum netconn_state {
00060   NETCONN_NONE,
00061   NETCONN_WRITE,
00062   NETCONN_ACCEPT,
00063   NETCONN_RECV,
00064   NETCONN_CONNECT,
00065   NETCONN_CLOSE
00066 };
00067 
00068 struct netbuf {
00069   struct pbuf *p, *ptr;
00070   struct ip_addr *fromaddr;
00071   uInt16 fromport;
00072   err_t err;
00073 };
00074 
00075 struct netconn {
00076   enum netconn_type type;
00077   enum netconn_state state;
00078   union {
00079     struct tcp_pcb *tcp;
00080     struct udp_pcb *udp;
00081   } pcb;
00082   err_t err;
00083   sys_mbox_t mbox;
00084   sys_mbox_t recvmbox;
00085   sys_mbox_t acceptmbox;
00086   sys_sem_t sem;
00087 };
00088 
00089 
00090 struct netbuf *   netbuf_new      (void);
00091 void              netbuf_delete   (struct netbuf *buf);
00092 void *            netbuf_alloc    (struct netbuf *buf, uInt16 size);
00093 void              netbuf_free     (struct netbuf *buf);
00094 void              netbuf_ref      (struct netbuf *buf,
00095                                    void *dataptr, uInt16 size);
00096 void              netbuf_chain    (struct netbuf *head,
00097                                    struct netbuf *tail);
00098 
00099 uInt16             netbuf_len      (struct netbuf *buf);
00100 err_t             netbuf_data     (struct netbuf *buf,
00101                                    void **dataptr, uInt16 *len);
00102 Int8              netbuf_next     (struct netbuf *buf);
00103 void              netbuf_first    (struct netbuf *buf);
00104 
00105 void              netbuf_copy     (struct netbuf *buf,
00106                                    void *dataptr, uInt16 len);
00107 struct ip_addr *  netbuf_fromaddr (struct netbuf *buf);
00108 uInt16             netbuf_fromport (struct netbuf *buf);
00109 
00110 
00111 struct netconn *  netconn_new     (enum netconn_type type);
00112 err_t             netconn_delete  (struct netconn *conn);
00113 enum netconn_type netconn_type    (struct netconn *conn);
00114 err_t             netconn_peer    (struct netconn *conn,
00115                                    struct ip_addr **addr,
00116                                    uInt16 *port);
00117 err_t             netconn_addr    (struct netconn *conn,
00118                                    struct ip_addr **addr,
00119                                    uInt16 *port);
00120 err_t             netconn_bind    (struct netconn *conn,
00121                                    struct ip_addr *addr,
00122                                    uInt16 port);
00123 err_t             netconn_connect (struct netconn *conn,
00124                                    struct ip_addr *addr,
00125                                    uInt16 port);
00126 err_t             netconn_listen  (struct netconn *conn);
00127 struct netconn *  netconn_accept  (struct netconn *conn);
00128 struct netbuf *   netconn_recv    (struct netconn *conn);
00129 err_t             netconn_send    (struct netconn *conn,
00130                                    struct netbuf *buf);
00131 err_t             netconn_write   (struct netconn *conn,
00132                                    void *dataptr, uInt16 size,
00133                                    uInt8 copy);
00134 err_t             netconn_close   (struct netconn *conn);
00135 
00136 err_t             netconn_err     (struct netconn *conn);
00137 
00138 void netbuf_copy_partial(struct netbuf *buf, void *dataptr, uInt16 len, uInt16 offset);
00139 
00140 #endif 
00141 
00142