OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [rtos/] [freertos-6.1.1/] [Demo/] [Common/] [ethernet/] [lwIP/] [include/] [lwip/] [sockets.h] - Blame information for rev 867

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 606 jeremybenn
/*
2
 * Copyright (c) 2001-2004 Swedish Institute of Computer Science.
3
 * All rights reserved.
4
 *
5
 * Redistribution and use in source and binary forms, with or without modification,
6
 * are permitted provided that the following conditions are met:
7
 *
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.
15
 *
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
25
 * OF SUCH DAMAGE.
26
 *
27
 * This file is part of the lwIP TCP/IP stack.
28
 *
29
 * Author: Adam Dunkels <adam@sics.se>
30
 *
31
 */
32
 
33
 
34
#ifndef __LWIP_SOCKETS_H__
35
#define __LWIP_SOCKETS_H__
36
#include "lwip/ip_addr.h"
37
 
38
struct sockaddr_in {
39
  u8_t sin_len;
40
  u8_t sin_family;
41
  u16_t sin_port;
42
  struct in_addr sin_addr;
43
  char sin_zero[8];
44
};
45
 
46
struct sockaddr {
47
  u8_t sa_len;
48
  u8_t sa_family;
49
  char sa_data[14];
50
};
51
 
52
#ifndef socklen_t
53
#  define socklen_t int
54
#endif
55
 
56
 
57
#define SOCK_STREAM     1
58
#define SOCK_DGRAM      2
59
#define SOCK_RAW        3
60
 
61
/*
62
 * Option flags per-socket.
63
 */
64
#define  SO_DEBUG  0x0001    /* turn on debugging info recording */
65
#define  SO_ACCEPTCONN  0x0002    /* socket has had listen() */
66
#define  SO_REUSEADDR  0x0004    /* allow local address reuse */
67
#define  SO_KEEPALIVE  0x0008    /* keep connections alive */
68
#define  SO_DONTROUTE  0x0010    /* just use interface addresses */
69
#define  SO_BROADCAST  0x0020    /* permit sending of broadcast msgs */
70
#define  SO_USELOOPBACK  0x0040    /* bypass hardware when possible */
71
#define  SO_LINGER  0x0080    /* linger on close if data present */
72
#define  SO_OOBINLINE  0x0100    /* leave received OOB data in line */
73
#define  SO_REUSEPORT   0x0200          /* allow local address & port reuse */
74
 
75
#define SO_DONTLINGER   (int)(~SO_LINGER)
76
 
77
/*
78
 * Additional options, not kept in so_options.
79
 */
80
#define SO_SNDBUF  0x1001    /* send buffer size */
81
#define SO_RCVBUF  0x1002    /* receive buffer size */
82
#define SO_SNDLOWAT  0x1003    /* send low-water mark */
83
#define SO_RCVLOWAT  0x1004    /* receive low-water mark */
84
#define SO_SNDTIMEO  0x1005    /* send timeout */
85
#define SO_RCVTIMEO  0x1006    /* receive timeout */
86
#define  SO_ERROR  0x1007    /* get error status and clear */
87
#define  SO_TYPE    0x1008    /* get socket type */
88
 
89
 
90
 
91
/*
92
 * Structure used for manipulating linger option.
93
 */
94
struct linger {
95
       int l_onoff;                /* option on/off */
96
       int l_linger;               /* linger time */
97
};
98
 
99
/*
100
 * Level number for (get/set)sockopt() to apply to socket itself.
101
 */
102
#define  SOL_SOCKET  0xfff    /* options for socket level */
103
 
104
 
105
#define AF_UNSPEC       0
106
#define AF_INET         2
107
#define PF_INET         AF_INET
108
#define PF_UNSPEC       AF_UNSPEC
109
 
110
#define IPPROTO_IP      0
111
#define IPPROTO_TCP     6
112
#define IPPROTO_UDP     17
113
 
114
#define INADDR_ANY      0
115
#define INADDR_BROADCAST 0xffffffff
116
 
117
/* Flags we can use with send and recv. */
118
#define MSG_DONTWAIT    0x40            /* Nonblocking i/o for this operation only */
119
 
120
 
121
/*
122
 * Options for level IPPROTO_IP
123
 */
124
#define IP_TOS       1
125
#define IP_TTL       2
126
 
127
 
128
#define IPTOS_TOS_MASK          0x1E
129
#define IPTOS_TOS(tos)          ((tos) & IPTOS_TOS_MASK)
130
#define IPTOS_LOWDELAY          0x10
131
#define IPTOS_THROUGHPUT        0x08
132
#define IPTOS_RELIABILITY       0x04
133
#define IPTOS_LOWCOST           0x02
134
#define IPTOS_MINCOST           IPTOS_LOWCOST
135
 
136
/*
137
 * Definitions for IP precedence (also in ip_tos) (hopefully unused)
138
 */
139
#define IPTOS_PREC_MASK                 0xe0
140
#define IPTOS_PREC(tos)                ((tos) & IPTOS_PREC_MASK)
141
#define IPTOS_PREC_NETCONTROL           0xe0
142
#define IPTOS_PREC_INTERNETCONTROL      0xc0
143
#define IPTOS_PREC_CRITIC_ECP           0xa0
144
#define IPTOS_PREC_FLASHOVERRIDE        0x80
145
#define IPTOS_PREC_FLASH                0x60
146
#define IPTOS_PREC_IMMEDIATE            0x40
147
#define IPTOS_PREC_PRIORITY             0x20
148
#define IPTOS_PREC_ROUTINE              0x00
149
 
150
 
151
/*
152
 * Commands for ioctlsocket(),  taken from the BSD file fcntl.h.
153
 *
154
 *
155
 * Ioctl's have the command encoded in the lower word,
156
 * and the size of any in or out parameters in the upper
157
 * word.  The high 2 bits of the upper word are used
158
 * to encode the in/out status of the parameter; for now
159
 * we restrict parameters to at most 128 bytes.
160
 */
161
#if !defined(FIONREAD) || !defined(FIONBIO)
162
#define IOCPARM_MASK    0x7f            /* parameters must be < 128 bytes */
163
#define IOC_VOID        0x20000000      /* no parameters */
164
#define IOC_OUT         0x40000000      /* copy out parameters */
165
#define IOC_IN          0x80000000      /* copy in parameters */
166
#define IOC_INOUT       (IOC_IN|IOC_OUT)
167
                                        /* 0x20000000 distinguishes new &
168
                                           old ioctl's */
169
#define _IO(x,y)        (IOC_VOID|((x)<<8)|(y))
170
 
171
#define _IOR(x,y,t)     (IOC_OUT|(((long)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y))
172
 
173
#define _IOW(x,y,t)     (IOC_IN|(((long)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y))
174
#endif
175
 
176
#ifndef FIONREAD
177
#define FIONREAD    _IOR('f', 127, unsigned long) /* get # bytes to read */
178
#endif
179
#ifndef FIONBIO
180
#define FIONBIO     _IOW('f', 126, unsigned long) /* set/clear non-blocking i/o */
181
#endif
182
 
183
/* Socket I/O Controls */
184
#ifndef SIOCSHIWAT
185
#define SIOCSHIWAT  _IOW('s',  0, unsigned long)  /* set high watermark */
186
#define SIOCGHIWAT  _IOR('s',  1, unsigned long)  /* get high watermark */
187
#define SIOCSLOWAT  _IOW('s',  2, unsigned long)  /* set low watermark */
188
#define SIOCGLOWAT  _IOR('s',  3, unsigned long)  /* get low watermark */
189
#define SIOCATMARK  _IOR('s',  7, unsigned long)  /* at oob mark? */
190
#endif
191
 
192
#ifndef O_NONBLOCK
193
#define O_NONBLOCK    04000U
194
#endif
195
 
196
#ifndef FD_SET
197
  #undef  FD_SETSIZE
198
  #define FD_SETSIZE    16
199
  #define FD_SET(n, p)  ((p)->fd_bits[(n)/8] |=  (1 << ((n) & 7)))
200
  #define FD_CLR(n, p)  ((p)->fd_bits[(n)/8] &= ~(1 << ((n) & 7)))
201
  #define FD_ISSET(n,p) ((p)->fd_bits[(n)/8] &   (1 << ((n) & 7)))
202
  #define FD_ZERO(p)    memset((void*)(p),0,sizeof(*(p)))
203
 
204
  typedef struct fd_set {
205
          unsigned char fd_bits [(FD_SETSIZE+7)/8];
206
        } fd_set;
207
 
208
/*
209
 * only define this in sockets.c so it does not interfere
210
 * with other projects namespaces where timeval is present
211
 */
212
#ifndef LWIP_TIMEVAL_PRIVATE
213
#define LWIP_TIMEVAL_PRIVATE 1
214
#endif
215
 
216
#if LWIP_TIMEVAL_PRIVATE
217
  struct timeval {
218
    long    tv_sec;         /* seconds */
219
    long    tv_usec;        /* and microseconds */
220
  };
221
#endif
222
 
223
#endif
224
 
225
int lwip_accept(int s, struct sockaddr *addr, socklen_t *addrlen);
226
int lwip_bind(int s, struct sockaddr *name, socklen_t namelen);
227
int lwip_shutdown(int s, int how);
228
int lwip_getpeername (int s, struct sockaddr *name, socklen_t *namelen);
229
int lwip_getsockname (int s, struct sockaddr *name, socklen_t *namelen);
230
int lwip_getsockopt (int s, int level, int optname, void *optval, socklen_t *optlen);
231
int lwip_setsockopt (int s, int level, int optname, const void *optval, socklen_t optlen);
232
int lwip_close(int s);
233
int lwip_connect(int s, struct sockaddr *name, socklen_t namelen);
234
int lwip_listen(int s, int backlog);
235
int lwip_recv(int s, void *mem, int len, unsigned int flags);
236
int lwip_read(int s, void *mem, int len);
237
int lwip_recvfrom(int s, void *mem, int len, unsigned int flags,
238
      struct sockaddr *from, socklen_t *fromlen);
239
int lwip_send(int s, void *dataptr, int size, unsigned int flags);
240
int lwip_sendto(int s, void *dataptr, int size, unsigned int flags,
241
    struct sockaddr *to, socklen_t tolen);
242
int lwip_socket(int domain, int type, int protocol);
243
int lwip_write(int s, void *dataptr, int size);
244
int lwip_select(int maxfdp1, fd_set *readset, fd_set *writeset, fd_set *exceptset,
245
                struct timeval *timeout);
246
int lwip_ioctl(int s, long cmd, void *argp);
247
 
248
#if LWIP_COMPAT_SOCKETS
249
#define accept(a,b,c)         lwip_accept(a,b,c)
250
#define bind(a,b,c)           lwip_bind(a,b,c)
251
#define shutdown(a,b)         lwip_shutdown(a,b)
252
#define close(s)              lwip_close(s)
253
#define connect(a,b,c)        lwip_connect(a,b,c)
254
#define getsockname(a,b,c)    lwip_getsockname(a,b,c)
255
#define getpeername(a,b,c)    lwip_getpeername(a,b,c)
256
#define setsockopt(a,b,c,d,e) lwip_setsockopt(a,b,c,d,e)
257
#define getsockopt(a,b,c,d,e) lwip_getsockopt(a,b,c,d,e)
258
#define listen(a,b)           lwip_listen(a,b)
259
#define recv(a,b,c,d)         lwip_recv(a,b,c,d)
260
#define read(a,b,c)           lwip_read(a,b,c)
261
#define recvfrom(a,b,c,d,e,f) lwip_recvfrom(a,b,c,d,e,f)
262
#define send(a,b,c,d)         lwip_send(a,b,c,d)
263
#define sendto(a,b,c,d,e,f)   lwip_sendto(a,b,c,d,e,f)
264
#define socket(a,b,c)         lwip_socket(a,b,c)
265
#define write(a,b,c)          lwip_write(a,b,c)
266
#define select(a,b,c,d,e)     lwip_select(a,b,c,d,e)
267
#define ioctlsocket(a,b,c)    lwip_ioctl(a,b,c)
268
#endif /* LWIP_COMPAT_SOCKETS */
269
 
270
#endif /* __LWIP_SOCKETS_H__ */
271
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.