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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [rtos/] [freertos-6.1.1/] [Demo/] [Common/] [ethernet/] [FreeRTOS-uIP/] [uipopt.h] - Blame information for rev 792

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

Line No. Rev Author Line
1 606 jeremybenn
/**
2
 * \defgroup uipopt Configuration options for uIP
3
 * @{
4
 *
5
 * uIP is configured using the per-project configuration file
6
 * uipopt.h. This file contains all compile-time options for uIP and
7
 * should be tweaked to match each specific project. The uIP
8
 * distribution contains a documented example "uipopt.h" that can be
9
 * copied and modified for each project.
10
 *
11
 * \note Most of the configuration options in the uipopt.h should not
12
 * be changed, but rather the per-project uip-conf.h file.
13
 */
14
 
15
/**
16
 * \file
17
 * Configuration options for uIP.
18
 * \author Adam Dunkels <adam@dunkels.com>
19
 *
20
 * This file is used for tweaking various configuration options for
21
 * uIP. You should make a copy of this file into one of your project's
22
 * directories instead of editing this example "uipopt.h" file that
23
 * comes with the uIP distribution.
24
 */
25
 
26
/*
27
 * Copyright (c) 2001-2003, Adam Dunkels.
28
 * All rights reserved.
29
 *
30
 * Redistribution and use in source and binary forms, with or without
31
 * modification, are permitted provided that the following conditions
32
 * are met:
33
 * 1. Redistributions of source code must retain the above copyright
34
 *    notice, this list of conditions and the following disclaimer.
35
 * 2. Redistributions in binary form must reproduce the above copyright
36
 *    notice, this list of conditions and the following disclaimer in the
37
 *    documentation and/or other materials provided with the distribution.
38
 * 3. The name of the author may not be used to endorse or promote
39
 *    products derived from this software without specific prior
40
 *    written permission.
41
 *
42
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
43
 * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
44
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
45
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
46
 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
47
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
48
 * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
49
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
50
 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
51
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
52
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
53
 *
54
 * This file is part of the uIP TCP/IP stack.
55
 *
56
 * $Id: uipopt.h 2 2011-07-17 20:13:17Z filepang@gmail.com $
57
 *
58
 */
59
 
60
#ifndef __UIPOPT_H__
61
#define __UIPOPT_H__
62
 
63
#ifndef UIP_LITTLE_ENDIAN
64
#define UIP_LITTLE_ENDIAN  3412
65
#endif /* UIP_LITTLE_ENDIAN */
66
#ifndef UIP_BIG_ENDIAN
67
#define UIP_BIG_ENDIAN     1234
68
#endif /* UIP_BIG_ENDIAN */
69
 
70
#include "uip-conf.h"
71
 
72
/*------------------------------------------------------------------------------*/
73
 
74
/**
75
 * \name Static configuration options
76
 * @{
77
 *
78
 * These configuration options can be used for setting the IP address
79
 * settings statically, but only if UIP_FIXEDADDR is set to 1. The
80
 * configuration options for a specific node includes IP address,
81
 * netmask and default router as well as the Ethernet address. The
82
 * netmask, default router and Ethernet address are appliciable only
83
 * if uIP should be run over Ethernet.
84
 *
85
 * All of these should be changed to suit your project.
86
*/
87
 
88
/**
89
 * Determines if uIP should use a fixed IP address or not.
90
 *
91
 * If uIP should use a fixed IP address, the settings are set in the
92
 * uipopt.h file. If not, the macros uip_sethostaddr(),
93
 * uip_setdraddr() and uip_setnetmask() should be used instead.
94
 *
95
 * \hideinitializer
96
 */
97
#define UIP_FIXEDADDR    0
98
 
99
/**
100
 * Ping IP address asignment.
101
 *
102
 * uIP uses a "ping" packets for setting its own IP address if this
103
 * option is set. If so, uIP will start with an empty IP address and
104
 * the destination IP address of the first incoming "ping" (ICMP echo)
105
 * packet will be used for setting the hosts IP address.
106
 *
107
 * \note This works only if UIP_FIXEDADDR is 0.
108
 *
109
 * \hideinitializer
110
 */
111
#ifdef UIP_CONF_PINGADDRCONF
112
#define UIP_PINGADDRCONF UIP_CONF_PINGADDRCONF
113
#else /* UIP_CONF_PINGADDRCONF */
114
#define UIP_PINGADDRCONF 0
115
#endif /* UIP_CONF_PINGADDRCONF */
116
 
117
 
118
/**
119
 * Specifies if the uIP ARP module should be compiled with a fixed
120
 * Ethernet MAC address or not.
121
 *
122
 * If this configuration option is 0, the macro uip_setethaddr() can
123
 * be used to specify the Ethernet address at run-time.
124
 *
125
 * \hideinitializer
126
 */
127
#define UIP_FIXEDETHADDR 0
128
 
129
/** @} */
130
/*------------------------------------------------------------------------------*/
131
/**
132
 * \name IP configuration options
133
 * @{
134
 *
135
 */
136
/**
137
 * The IP TTL (time to live) of IP packets sent by uIP.
138
 *
139
 * This should normally not be changed.
140
 */
141
#define UIP_TTL         64
142
 
143
/**
144
 * Turn on support for IP packet reassembly.
145
 *
146
 * uIP supports reassembly of fragmented IP packets. This features
147
 * requires an additonal amount of RAM to hold the reassembly buffer
148
 * and the reassembly code size is approximately 700 bytes.  The
149
 * reassembly buffer is of the same size as the uip_buf buffer
150
 * (configured by UIP_BUFSIZE).
151
 *
152
 * \note IP packet reassembly is not heavily tested.
153
 *
154
 * \hideinitializer
155
 */
156
#define UIP_REASSEMBLY 0
157
 
158
/**
159
 * The maximum time an IP fragment should wait in the reassembly
160
 * buffer before it is dropped.
161
 *
162
 */
163
#define UIP_REASS_MAXAGE 40
164
 
165
/** @} */
166
 
167
/*------------------------------------------------------------------------------*/
168
/**
169
 * \name UDP configuration options
170
 * @{
171
 */
172
 
173
/**
174
 * Toggles wether UDP support should be compiled in or not.
175
 *
176
 * \hideinitializer
177
 */
178
#ifdef UIP_CONF_UDP
179
#define UIP_UDP UIP_CONF_UDP
180
#else /* UIP_CONF_UDP */
181
#define UIP_UDP           0
182
#endif /* UIP_CONF_UDP */
183
 
184
/**
185
 * Toggles if UDP checksums should be used or not.
186
 *
187
 * \note Support for UDP checksums is currently not included in uIP,
188
 * so this option has no function.
189
 *
190
 * \hideinitializer
191
 */
192
#ifdef UIP_CONF_UDP_CHECKSUMS
193
#define UIP_UDP_CHECKSUMS UIP_CONF_UDP_CHECKSUMS
194
#else
195
#define UIP_UDP_CHECKSUMS 0
196
#endif
197
 
198
/**
199
 * The maximum amount of concurrent UDP connections.
200
 *
201
 * \hideinitializer
202
 */
203
#ifdef UIP_CONF_UDP_CONNS
204
#define UIP_UDP_CONNS UIP_CONF_UDP_CONNS
205
#else /* UIP_CONF_UDP_CONNS */
206
#define UIP_UDP_CONNS    10
207
#endif /* UIP_CONF_UDP_CONNS */
208
 
209
/**
210
 * The name of the function that should be called when UDP datagrams arrive.
211
 *
212
 * \hideinitializer
213
 */
214
 
215
 
216
/** @} */
217
/*------------------------------------------------------------------------------*/
218
/**
219
 * \name TCP configuration options
220
 * @{
221
 */
222
 
223
/**
224
 * Determines if support for opening connections from uIP should be
225
 * compiled in.
226
 *
227
 * If the applications that are running on top of uIP for this project
228
 * do not need to open outgoing TCP connections, this configration
229
 * option can be turned off to reduce the code size of uIP.
230
 *
231
 * \hideinitializer
232
 */
233
#define UIP_ACTIVE_OPEN 1
234
 
235
/**
236
 * The maximum number of simultaneously open TCP connections.
237
 *
238
 * Since the TCP connections are statically allocated, turning this
239
 * configuration knob down results in less RAM used. Each TCP
240
 * connection requires approximatly 30 bytes of memory.
241
 *
242
 * \hideinitializer
243
 */
244
#ifndef UIP_CONF_MAX_CONNECTIONS
245
#define UIP_CONNS       10
246
#else /* UIP_CONF_MAX_CONNECTIONS */
247
#define UIP_CONNS UIP_CONF_MAX_CONNECTIONS
248
#endif /* UIP_CONF_MAX_CONNECTIONS */
249
 
250
 
251
/**
252
 * The maximum number of simultaneously listening TCP ports.
253
 *
254
 * Each listening TCP port requires 2 bytes of memory.
255
 *
256
 * \hideinitializer
257
 */
258
#ifndef UIP_CONF_MAX_LISTENPORTS
259
#define UIP_LISTENPORTS 20
260
#else /* UIP_CONF_MAX_LISTENPORTS */
261
#define UIP_LISTENPORTS UIP_CONF_MAX_LISTENPORTS
262
#endif /* UIP_CONF_MAX_LISTENPORTS */
263
 
264
/**
265
 * Determines if support for TCP urgent data notification should be
266
 * compiled in.
267
 *
268
 * Urgent data (out-of-band data) is a rarely used TCP feature that
269
 * very seldom would be required.
270
 *
271
 * \hideinitializer
272
 */
273
#define UIP_URGDATA      0
274
 
275
/**
276
 * The initial retransmission timeout counted in timer pulses.
277
 *
278
 * This should not be changed.
279
 */
280
#define UIP_RTO         3
281
 
282
/**
283
 * The maximum number of times a segment should be retransmitted
284
 * before the connection should be aborted.
285
 *
286
 * This should not be changed.
287
 */
288
#define UIP_MAXRTX      8
289
 
290
/**
291
 * The maximum number of times a SYN segment should be retransmitted
292
 * before a connection request should be deemed to have been
293
 * unsuccessful.
294
 *
295
 * This should not need to be changed.
296
 */
297
#define UIP_MAXSYNRTX      5
298
 
299
/**
300
 * The TCP maximum segment size.
301
 *
302
 * This is should not be to set to more than
303
 * UIP_BUFSIZE - UIP_LLH_LEN - UIP_TCPIP_HLEN.
304
 */
305
#define UIP_TCP_MSS     (UIP_BUFSIZE - UIP_LLH_LEN - UIP_TCPIP_HLEN)
306
 
307
/**
308
 * The size of the advertised receiver's window.
309
 *
310
 * Should be set low (i.e., to the size of the uip_buf buffer) is the
311
 * application is slow to process incoming data, or high (32768 bytes)
312
 * if the application processes data quickly.
313
 *
314
 * \hideinitializer
315
 */
316
#ifndef UIP_CONF_RECEIVE_WINDOW
317
#define UIP_RECEIVE_WINDOW UIP_TCP_MSS
318
#else
319
#define UIP_RECEIVE_WINDOW UIP_CONF_RECEIVE_WINDOW
320
#endif
321
 
322
/**
323
 * How long a connection should stay in the TIME_WAIT state.
324
 *
325
 * This configiration option has no real implication, and it should be
326
 * left untouched.
327
 */
328
#define UIP_TIME_WAIT_TIMEOUT 120
329
 
330
 
331
/** @} */
332
/*------------------------------------------------------------------------------*/
333
/**
334
 * \name ARP configuration options
335
 * @{
336
 */
337
 
338
/**
339
 * The size of the ARP table.
340
 *
341
 * This option should be set to a larger value if this uIP node will
342
 * have many connections from the local network.
343
 *
344
 * \hideinitializer
345
 */
346
#ifdef UIP_CONF_ARPTAB_SIZE
347
#define UIP_ARPTAB_SIZE UIP_CONF_ARPTAB_SIZE
348
#else
349
#define UIP_ARPTAB_SIZE 8
350
#endif
351
 
352
/**
353
 * The maxium age of ARP table entries measured in 10ths of seconds.
354
 *
355
 * An UIP_ARP_MAXAGE of 120 corresponds to 20 minutes (BSD
356
 * default).
357
 */
358
#define UIP_ARP_MAXAGE 120
359
 
360
/** @} */
361
 
362
/*------------------------------------------------------------------------------*/
363
 
364
/**
365
 * \name General configuration options
366
 * @{
367
 */
368
 
369
/**
370
 * The size of the uIP packet buffer.
371
 *
372
 * The uIP packet buffer should not be smaller than 60 bytes, and does
373
 * not need to be larger than 1500 bytes. Lower size results in lower
374
 * TCP throughput, larger size results in higher TCP throughput.
375
 *
376
 * \hideinitializer
377
 */
378
#ifndef UIP_CONF_BUFFER_SIZE
379
#define UIP_BUFSIZE     1500
380
#else /* UIP_CONF_BUFFER_SIZE */
381
#define UIP_BUFSIZE UIP_CONF_BUFFER_SIZE
382
#endif /* UIP_CONF_BUFFER_SIZE */
383
 
384
 
385
/**
386
 * Determines if statistics support should be compiled in.
387
 *
388
 * The statistics is useful for debugging and to show the user.
389
 *
390
 * \hideinitializer
391
 */
392
#ifndef UIP_CONF_STATISTICS
393
#define UIP_STATISTICS  0
394
#else /* UIP_CONF_STATISTICS */
395
#define UIP_STATISTICS UIP_CONF_STATISTICS
396
#endif /* UIP_CONF_STATISTICS */
397
 
398
/**
399
 * Determines if logging of certain events should be compiled in.
400
 *
401
 * This is useful mostly for debugging. The function uip_log()
402
 * must be implemented to suit the architecture of the project, if
403
 * logging is turned on.
404
 *
405
 * \hideinitializer
406
 */
407
#ifndef UIP_CONF_LOGGING
408
#define UIP_LOGGING     0
409
#else /* UIP_CONF_LOGGING */
410
#define UIP_LOGGING     UIP_CONF_LOGGING
411
#endif /* UIP_CONF_LOGGING */
412
 
413
/**
414
 * Broadcast support.
415
 *
416
 * This flag configures IP broadcast support. This is useful only
417
 * together with UDP.
418
 *
419
 * \hideinitializer
420
 *
421
 */
422
#ifndef UIP_CONF_BROADCAST
423
#define UIP_BROADCAST 0
424
#else /* UIP_CONF_BROADCAST */
425
#define UIP_BROADCAST UIP_CONF_BROADCAST
426
#endif /* UIP_CONF_BROADCAST */
427
 
428
/**
429
 * Print out a uIP log message.
430
 *
431
 * This function must be implemented by the module that uses uIP, and
432
 * is called by uIP whenever a log message is generated.
433
 */
434
void uip_log(char *msg);
435
 
436
/**
437
 * The link level header length.
438
 *
439
 * This is the offset into the uip_buf where the IP header can be
440
 * found. For Ethernet, this should be set to 14. For SLIP, this
441
 * should be set to 0.
442
 *
443
 * \hideinitializer
444
 */
445
#ifdef UIP_CONF_LLH_LEN
446
#define UIP_LLH_LEN UIP_CONF_LLH_LEN
447
#else /* UIP_CONF_LLH_LEN */
448
#define UIP_LLH_LEN     14
449
#endif /* UIP_CONF_LLH_LEN */
450
 
451
/** @} */
452
/*------------------------------------------------------------------------------*/
453
/**
454
 * \name CPU architecture configuration
455
 * @{
456
 *
457
 * The CPU architecture configuration is where the endianess of the
458
 * CPU on which uIP is to be run is specified. Most CPUs today are
459
 * little endian, and the most notable exception are the Motorolas
460
 * which are big endian. The BYTE_ORDER macro should be changed to
461
 * reflect the CPU architecture on which uIP is to be run.
462
 */
463
 
464
/**
465
 * The byte order of the CPU architecture on which uIP is to be run.
466
 *
467
 * This option can be either BIG_ENDIAN (Motorola byte order) or
468
 * LITTLE_ENDIAN (Intel byte order).
469
 *
470
 * \hideinitializer
471
 */
472
#define UIP_BYTE_ORDER     UIP_CONF_BYTE_ORDER
473
 
474
/** @} */
475
/*------------------------------------------------------------------------------*/
476
 
477
/**
478
 * \name Appication specific configurations
479
 * @{
480
 *
481
 * An uIP application is implemented using a single application
482
 * function that is called by uIP whenever a TCP/IP event occurs. The
483
 * name of this function must be registered with uIP at compile time
484
 * using the UIP_APPCALL definition.
485
 *
486
 * uIP applications can store the application state within the
487
 * uip_conn structure by specifying the type of the application
488
 * structure by typedef:ing the type uip_tcp_appstate_t and uip_udp_appstate_t.
489
 *
490
 * The file containing the definitions must be included in the
491
 * uipopt.h file.
492
 *
493
 * The following example illustrates how this can look.
494
 \code
495
 
496
void httpd_appcall(void);
497
#define UIP_APPCALL     httpd_appcall
498
 
499
struct httpd_state {
500
  u8_t state;
501
  u16_t count;
502
  char *dataptr;
503
  char *script;
504
};
505
typedef struct httpd_state uip_tcp_appstate_t
506
 \endcode
507
 */
508
 
509
/**
510
 * \var #define UIP_APPCALL
511
 *
512
 * The name of the application function that uIP should call in
513
 * response to TCP/IP events.
514
 *
515
 */
516
 
517
/**
518
 * \var typedef uip_tcp_appstate_t
519
 *
520
 * The type of the application state that is to be stored in the
521
 * uip_conn structure. This usually is typedef:ed to a struct holding
522
 * application state information.
523
 */
524
 
525
/**
526
 * \var typedef uip_udp_appstate_t
527
 *
528
 * The type of the application state that is to be stored in the
529
 * uip_conn structure. This usually is typedef:ed to a struct holding
530
 * application state information.
531
 */
532
/** @} */
533
/** @} */
534
 
535
#endif /* __UIPOPT_H__ */

powered by: WebSVN 2.1.0

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