53 |
char sa_data[14]; |
char sa_data[14]; |
54 |
}; |
}; |
55 |
|
|
56 |
|
#ifndef socklen_t |
57 |
|
#define socklen_t int |
58 |
|
#endif |
59 |
|
|
60 |
|
|
61 |
#define SOCK_STREAM 1 |
#define SOCK_STREAM 1 |
62 |
#define SOCK_DGRAM 2 |
#define SOCK_DGRAM 2 |
63 |
|
#define SOCK_RAW 3 |
64 |
|
|
65 |
|
/* |
66 |
|
* Option flags per-socket. |
67 |
|
*/ |
68 |
|
#define SO_DEBUG 0x0001 /* turn on debugging info recording */ |
69 |
|
#define SO_ACCEPTCONN 0x0002 /* socket has had listen() */ |
70 |
|
#define SO_REUSEADDR 0x0004 /* allow local address reuse */ |
71 |
|
#define SO_KEEPALIVE 0x0008 /* keep connections alive */ |
72 |
|
#define SO_DONTROUTE 0x0010 /* just use interface addresses */ |
73 |
|
#define SO_BROADCAST 0x0020 /* permit sending of broadcast msgs */ |
74 |
|
#define SO_USELOOPBACK 0x0040 /* bypass hardware when possible */ |
75 |
|
#define SO_LINGER 0x0080 /* linger on close if data present */ |
76 |
|
#define SO_OOBINLINE 0x0100 /* leave received OOB data in line */ |
77 |
|
|
78 |
|
#define SO_DONTLINGER (int)(~SO_LINGER) |
79 |
|
|
80 |
|
/* |
81 |
|
* Additional options, not kept in so_options. |
82 |
|
*/ |
83 |
|
#define SO_SNDBUF 0x1001 /* send buffer size */ |
84 |
|
#define SO_RCVBUF 0x1002 /* receive buffer size */ |
85 |
|
#define SO_SNDLOWAT 0x1003 /* send low-water mark */ |
86 |
|
#define SO_RCVLOWAT 0x1004 /* receive low-water mark */ |
87 |
|
#define SO_SNDTIMEO 0x1005 /* send timeout */ |
88 |
|
#define SO_RCVTIMEO 0x1006 /* receive timeout */ |
89 |
|
#define SO_ERROR 0x1007 /* get error status and clear */ |
90 |
|
#define SO_TYPE 0x1008 /* get socket type */ |
91 |
|
|
92 |
|
|
93 |
|
|
94 |
|
/* |
95 |
|
* Structure used for manipulating linger option. |
96 |
|
*/ |
97 |
|
struct linger { |
98 |
|
int l_onoff; /* option on/off */ |
99 |
|
int l_linger; /* linger time */ |
100 |
|
}; |
101 |
|
|
102 |
|
/* |
103 |
|
* Level number for (get/set)sockopt() to apply to socket itself. |
104 |
|
*/ |
105 |
|
#define SOL_SOCKET 0xfff /* options for socket level */ |
106 |
|
|
107 |
|
|
108 |
#define AF_UNSPEC 0 |
#define AF_UNSPEC 0 |
109 |
#define AF_INET 2 |
#define AF_INET 2 |
110 |
#define PF_INET AF_INET |
#define PF_INET AF_INET |
111 |
|
|
115 |
#define INADDR_ANY 0 |
#define INADDR_ANY 0 |
116 |
#define INADDR_BROADCAST 0xffffffff |
#define INADDR_BROADCAST 0xffffffff |
117 |
|
|
118 |
|
/* Flags we can use with send and recv. */ |
119 |
|
#define MSG_DONTWAIT 0x40 /* Nonblocking i/o for this operation only */ |
120 |
|
|
121 |
|
|
122 |
|
/* |
123 |
|
* Commands for ioctlsocket(), taken from the BSD file fcntl.h. |
124 |
|
* |
125 |
|
* |
126 |
|
* Ioctl's have the command encoded in the lower word, |
127 |
|
* and the size of any in or out parameters in the upper |
128 |
|
* word. The high 2 bits of the upper word are used |
129 |
|
* to encode the in/out status of the parameter; for now |
130 |
|
* we restrict parameters to at most 128 bytes. |
131 |
|
*/ |
132 |
|
#if !defined(FIONREAD) || !defined(FIONBIO) |
133 |
|
#define IOCPARM_MASK 0x7f /* parameters must be < 128 bytes */ |
134 |
|
#define IOC_VOID 0x20000000 /* no parameters */ |
135 |
|
#define IOC_OUT 0x40000000 /* copy out parameters */ |
136 |
|
#define IOC_IN 0x80000000 /* copy in parameters */ |
137 |
|
#define IOC_INOUT (IOC_IN|IOC_OUT) |
138 |
|
/* 0x20000000 distinguishes new & |
139 |
|
old ioctl's */ |
140 |
|
#define _IO(x,y) (IOC_VOID|((x)<<8)|(y)) |
141 |
|
|
142 |
|
#define _IOR(x,y,t) (IOC_OUT|(((long)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y)) |
143 |
|
|
144 |
|
#define _IOW(x,y,t) (IOC_IN|(((long)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y)) |
145 |
|
#endif |
146 |
|
|
147 |
|
#ifndef FIONREAD |
148 |
|
#define FIONREAD _IOR('f', 127, unsigned long) /* get # bytes to read */ |
149 |
|
#endif |
150 |
|
#ifndef FIONBIO |
151 |
|
#define FIONBIO _IOW('f', 126, unsigned long) /* set/clear non-blocking i/o */ |
152 |
|
#endif |
153 |
|
|
154 |
|
/* Socket I/O Controls */ |
155 |
|
#ifndef SIOCSHIWAT |
156 |
|
#define SIOCSHIWAT _IOW('s', 0, unsigned long) /* set high watermark */ |
157 |
|
#define SIOCGHIWAT _IOR('s', 1, unsigned long) /* get high watermark */ |
158 |
|
#define SIOCSLOWAT _IOW('s', 2, unsigned long) /* set low watermark */ |
159 |
|
#define SIOCGLOWAT _IOR('s', 3, unsigned long) /* get low watermark */ |
160 |
|
#define SIOCATMARK _IOR('s', 7, unsigned long) /* at oob mark? */ |
161 |
|
#endif |
162 |
|
|
163 |
|
#ifndef O_NONBLOCK |
164 |
|
#define O_NONBLOCK 04000 |
165 |
|
#endif |
166 |
|
|
167 |
int lwip_accept(int s, struct sockaddr *addr, int *addrlen); |
int lwip_accept(int s, struct sockaddr *addr, int *addrlen); |
168 |
int lwip_bind(int s, struct sockaddr *name, int namelen); |
int lwip_bind(int s, struct sockaddr *name, int namelen); |
169 |
|
int lwip_shutdown(int s, int how); |
170 |
|
int lwip_getpeername (int s, struct sockaddr *name, int *namelen); |
171 |
|
int lwip_getsockname (int s, struct sockaddr *name, int *namelen); |
172 |
|
int lwip_getsockopt (int s, int level, int optname, char *optval, int *optlen); |
173 |
|
int lwip_setsockopt (int s, int level, int optname, const char *optval, int optlen); |
174 |
int lwip_close(int s); |
int lwip_close(int s); |
175 |
int lwip_connect(int s, struct sockaddr *name, int namelen); |
int lwip_connect(int s, struct sockaddr *name, int namelen); |
176 |
int lwip_listen(int s, int backlog); |
int lwip_listen(int s, int backlog); |
183 |
struct sockaddr *to, int tolen); |
struct sockaddr *to, int tolen); |
184 |
int lwip_socket(int domain, int type, int protocol); |
int lwip_socket(int domain, int type, int protocol); |
185 |
int lwip_write(int s, void *dataptr, int size); |
int lwip_write(int s, void *dataptr, int size); |
186 |
|
int lwip_select(int maxfdp1, fd_set *readset, fd_set *writeset, fd_set *exceptset, |
187 |
|
const struct timeval *timeout); |
188 |
|
int lwip_ioctl(int s, long cmd, void *argp); |
189 |
|
|
190 |
#ifdef LWIP_COMPAT_SOCKETS |
#ifdef LWIP_COMPAT_SOCKETS |
191 |
#define accept(a,b,c) lwip_accept(a,b,c) |
#define accept(a,b,c) lwip_accept(a,b,c) |
192 |
#define bind(a,b,c) lwip_bind(a,b,c) |
#define bind(a,b,c) lwip_bind(a,b,c) |
193 |
|
#define shutdown(a,b) lwip_shutdown(a,b) |
194 |
#define close(s) lwip_close(s) |
#define close(s) lwip_close(s) |
195 |
#define connect(a,b,c) lwip_connect(a,b,c) |
#define connect(a,b,c) lwip_connect(a,b,c) |
196 |
|
#define getsockname(a,b,c) lwip_getsockname(a,b,c) |
197 |
|
#define getpeername(a,b,c) lwip_getpeername(a,b,c) |
198 |
|
#define setsockopt(a,b,c,d,e) lwip_setsockopt(a,b,c,d,e) |
199 |
|
#define getsockopt(a,b,c,d,e) lwip_getsockopt(a,b,c,d,e) |
200 |
#define listen(a,b) lwip_listen(a,b) |
#define listen(a,b) lwip_listen(a,b) |
201 |
#define recv(a,b,c,d) lwip_recv(a,b,c,d) |
#define recv(a,b,c,d) lwip_recv(a,b,c,d) |
202 |
#define read(a,b,c) lwip_read(a,b,c) |
#define read(a,b,c) lwip_read(a,b,c) |
205 |
#define sendto(a,b,c,d,e,f) lwip_sendto(a,b,c,d,e,f) |
#define sendto(a,b,c,d,e,f) lwip_sendto(a,b,c,d,e,f) |
206 |
#define socket(a,b,c) lwip_socket(a,b,c) |
#define socket(a,b,c) lwip_socket(a,b,c) |
207 |
#define write(a,b,c) lwip_write(a,b,c) |
#define write(a,b,c) lwip_write(a,b,c) |
208 |
#endif /* LWIP_NO_COMPAT_SOCKETS */ |
#define select(a,b,c,d,e) lwip_select(a,b,c,d,e) |
209 |
|
#define ioctlsocket(a,b,c) lwip_ioctl(a,b,c) |
210 |
|
#endif /* LWIP_COMPAT_SOCKETS */ |
211 |
|
|
212 |
#endif /* __LWIP_SOCKETS_H__ */ |
#endif /* __LWIP_SOCKETS_H__ */ |
213 |
|
|