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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [rtos/] [freertos-6.1.1/] [Demo/] [uIP_Demo_Rowley_ARM7/] [uip/] [uipopt.h] - Blame information for rev 609

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

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

powered by: WebSVN 2.1.0

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