1 /**************************************************************************/ 2 /* */ 3 /* Copyright (c) Microsoft Corporation. All rights reserved. */ 4 /* */ 5 /* This software is licensed under the Microsoft Software License */ 6 /* Terms for Microsoft Azure RTOS. Full text of the license can be */ 7 /* found in the LICENSE file at https://aka.ms/AzureRTOS_EULA */ 8 /* and in the root directory of this software. */ 9 /* */ 10 /**************************************************************************/ 11 12 13 /**************************************************************************/ 14 /**************************************************************************/ 15 /** */ 16 /** NetX Component */ 17 /** */ 18 /** User Specific */ 19 /** */ 20 /**************************************************************************/ 21 /**************************************************************************/ 22 23 24 /**************************************************************************/ 25 /* */ 26 /* PORT SPECIFIC C INFORMATION RELEASE */ 27 /* */ 28 /* nx_user.h PORTABLE C */ 29 /* 6.3.0 */ 30 /* */ 31 /* AUTHOR */ 32 /* */ 33 /* Yuxin Zhou, Microsoft Corporation */ 34 /* */ 35 /* DESCRIPTION */ 36 /* */ 37 /* This file contains user defines for configuring NetX in specific */ 38 /* ways. This file will have an effect only if the application and */ 39 /* NetX library are built with NX_INCLUDE_USER_DEFINE_FILE defined. */ 40 /* Note that all the defines in this file may also be made on the */ 41 /* command line when building NetX library and application objects. */ 42 /* */ 43 /* RELEASE HISTORY */ 44 /* */ 45 /* DATE NAME DESCRIPTION */ 46 /* */ 47 /* 05-19-2020 Yuxin Zhou Initial Version 6.0 */ 48 /* 09-30-2020 Yuxin Zhou Modified comment(s), */ 49 /* resulting in version 6.1 */ 50 /* 08-02-2021 Yuxin Zhou Modified comment(s), and */ 51 /* supported TCP/IP offload, */ 52 /* resulting in version 6.1.8 */ 53 /* 04-25-2022 Yuxin Zhou Modified comment(s), */ 54 /* resulting in version 6.1.11 */ 55 /* 10-31-2023 Tiejun Zhou Modified comment(s), */ 56 /* supported random IP id, */ 57 /* resulting in version 6.3.0 */ 58 /* */ 59 /**************************************************************************/ 60 61 #ifndef NX_USER_H 62 #define NX_USER_H 63 64 65 /* Define various build options for the NetX Duo port. The application should either make changes 66 here by commenting or un-commenting the conditional compilation defined OR supply the defines 67 though the compiler's equivalent of the -D option. */ 68 69 70 /* Override various options with default values already assigned in nx_api.h or nx_port.h. Please 71 also refer to nx_port.h for descriptions on each of these options. */ 72 73 74 /* Configuration options for Interface */ 75 76 /* NX_MAX_PHYSICAL_INTERFACES defines the number physical network interfaces 77 present to NetX Duo IP layer. Physical interface does not include 78 loopback interface. By default there is at least one physical interface 79 in the system. */ 80 /* 81 #define NX_MAX_PHYSICAL_INTERFACES 1 82 */ 83 84 /* Defined, this option disables NetX Duo support on the 127.0.0.1 loopback interface. 85 127.0.0.1 loopback interface is enabled by default. Uncomment out the follow code to disable 86 the loopback interface. */ 87 /* 88 #define NX_DISABLE_LOOPBACK_INTERFACE 89 */ 90 91 /* If defined, the link driver is able to specify extra capability, such as checksum offloading features. */ 92 /* 93 #define NX_ENABLE_INTERFACE_CAPABILITY 94 */ 95 96 97 /* Configuration options for IP */ 98 99 /* This defines specifies the number of ThreadX timer ticks in one second. The default value is based 100 on ThreadX timer interrupt. */ 101 /* 102 #ifdef TX_TIMER_TICKS_PER_SECOND 103 #define NX_IP_PERIODIC_RATE TX_TIMER_TICKS_PER_SECOND 104 #else 105 #define NX_IP_PERIODIC_RATE 100 106 #endif 107 */ 108 109 /* Defined, NX_ENABLE_IP_RAW_PACKET_FILTER allows an application to install a filter 110 for incoming raw packets. This feature is disabled by default. */ 111 /* 112 #define NX_ENABLE_IP_RAW_PACKET_FILTER 113 */ 114 115 /* This define specifies the maximum number of RAW packets can be queued for receive. The default 116 value is 20. */ 117 /* 118 #define NX_IP_RAW_MAX_QUEUE_DEPTH 20 119 */ 120 121 /* Defined, this option enables IP static routing feature. By default IP static routing 122 feature is not compiled in. */ 123 /* 124 #define NX_ENABLE_IP_STATIC_ROUTING 125 */ 126 127 /* This define specifies the size of IP routing table. The default value is 8. */ 128 /* 129 #define NX_IP_ROUTING_TABLE_SIZE 8 130 */ 131 132 /* Defined, this option enables random IP id. By default IP id is increased by one for each packet. */ 133 /* 134 #define NX_ENABLE_IP_ID_RANDOMIZATION 135 */ 136 137 /* This define specifies the maximum number of multicast groups that can be joined. 138 The default value is 7. */ 139 /* 140 #define NX_MAX_MULTICAST_GROUPS 7 141 */ 142 143 144 /* Configuration options for IPv6 */ 145 146 /* Disable IPv6 processing in NetX Duo. */ 147 /* 148 #define NX_DISABLE_IPV6 149 */ 150 151 /* Define the number of entries in IPv6 address pool. */ 152 /* 153 #ifdef NX_MAX_PHYSICAL_INTERFACES 154 #define NX_MAX_IPV6_ADDRESSES (NX_MAX_PHYSICAL_INTERFACES * 3) 155 #endif 156 */ 157 158 /* Do not process IPv6 ICMP Redirect Messages. */ 159 /* 160 #define NX_DISABLE_ICMPV6_REDIRECT_PROCESS 161 */ 162 163 /* Do not process IPv6 Router Advertisement Messages. */ 164 /* 165 #define NX_DISABLE_ICMPV6_ROUTER_ADVERTISEMENT_PROCESS 166 */ 167 168 /* Do not send IPv6 Router Solicitation Messages. */ 169 /* 170 #define NX_DISABLE_ICMPV6_ROUTER_SOLICITATION 171 */ 172 173 /* Define the max number of router solicitations a host sends until a router response 174 is received. If no response is received, the host concludes no router is present. */ 175 /* 176 #define NX_ICMPV6_MAX_RTR_SOLICITATIONS 3 177 */ 178 179 /* Define the interval between which the host sends router solicitations in seconds. */ 180 /* 181 #define NX_ICMPV6_RTR_SOLICITATION_INTERVAL 4 182 */ 183 184 /* Define the maximum delay for the initial router solicitation in seconds. */ 185 /* 186 #define NX_ICMPV6_RTR_SOLICITATION_DELAY 1 187 */ 188 189 /* Do not send ICMPv4 Error Messages. */ 190 /* 191 #define NX_DISABLE_ICMPV4_ERROR_MESSAGE 192 */ 193 194 /* Do not send ICMPv6 Error Messages. */ 195 /* 196 #define NX_DISABLE_ICMPV6_ERROR_MESSAGE 197 */ 198 199 /* Disable the Duplicate Address Detection (DAD) protocol when configuring the host IP address. */ 200 /* 201 #define NX_DISABLE_IPV6_DAD 202 */ 203 204 /* If defined, application is able to control whether or not to perform IPv6 stateless 205 address autoconfiguration with nxd_ipv6_stateless_address_autoconfig_enable() or 206 nxd_ipv6_stateless_address_autoconfig_disable() service. If defined, the system starts 207 with IPv6 stateless address autoconfiguration enabled. This feature is disabled by default. */ 208 /* 209 #define NX_IPV6_STATELESS_AUTOCONFIG_CONTROL 210 */ 211 212 /* If enabled, application is able to install a callback function to get notified 213 when an interface IPv6 address is changed. By default this feature is disabled. */ 214 /* 215 #define NX_ENABLE_IPV6_ADDRESS_CHANGE_NOTIFY 216 */ 217 218 /* Defined, this option prevents NetX Duo from removing stale (old) cache table entries 219 whose timeout has not expired so are otherwise still valid) to make room for new entries 220 when the table is full. Static and router entries are not purged. */ 221 /* 222 #define NX_DISABLE_IPV6_PURGE_UNUSED_CACHE_ENTRIES 223 */ 224 225 /* This define enables simple IPv6 multicast group join/leave function. By default 226 the IPv6 multicast join/leave function is not enabled. */ 227 /* 228 #define NX_ENABLE_IPV6_MULTICAST 229 */ 230 231 /* Defined, Minimum Path MTU Discovery feature is enabled. */ 232 /* 233 #define NX_ENABLE_IPV6_PATH_MTU_DISCOVERY 234 */ 235 236 /* Define wait interval in seconds to reset the path MTU for a destination 237 table entry after decreasing it in response to a packet too big error message. 238 RFC 1981 Section 5.4 states the minimum time to wait is 239 5 minutes and recommends 10 minutes. 240 */ 241 /* 242 #define NX_PATH_MTU_INCREASE_WAIT_INTERVAL 600 243 */ 244 245 246 /* Configuration options for Neighbor Discovery. */ 247 /* Define values used for Neighbor Discovery protocol. 248 The default values are suggested by RFC2461, chapter 10. */ 249 250 /* Define the maximum number of multicast Neighbor Solicitation packets 251 NetX Duo sends for a packet destination needing physical mapping 252 to the IP address. */ 253 /* 254 #define NX_MAX_MULTICAST_SOLICIT 3 255 */ 256 257 /* Define the maximum number of unicast Neighbor Solicitation packets 258 NetX Duo sends for a cache entry whose reachable time has expired 259 and gone "stale". */ 260 /* 261 #define NX_MAX_UNICAST_SOLICIT 3 262 */ 263 264 /* Define the length of time, in seconds, that a Neighbor Cache table entry 265 remains in the reachable state before it becomes state. */ 266 /* 267 #define NX_REACHABLE_TIME 30 268 */ 269 270 /* Define the length of time, in milliseconds, between retransmitting 271 Neighbor Solicitation (NS) packets. */ 272 /* 273 #define NX_RETRANS_TIMER 1000 274 */ 275 276 /* Define the length of time, in seconds, for a Neighbor Cache entry 277 to remain in the Delay state. This is the Delay first probe timer. */ 278 /* 279 #define NX_DELAY_FIRST_PROBE_TIME 5 280 */ 281 282 /* This defines specifies the maximum number of packets that can be queued while waiting for a 283 Neighbor Discovery to resolve an IPv6 address. The default value is 4. */ 284 /* 285 #define NX_ND_MAX_QUEUE_DEPTH 4 286 */ 287 288 /* Define the maximum ICMPv6 Duplicate Address Detect Transmit . */ 289 /* 290 #define NX_IPV6_DAD_TRANSMITS 3 291 */ 292 293 /* Define the number of neighbor cache entries. */ 294 /* 295 #define NX_IPV6_NEIGHBOR_CACHE_SIZE 16 296 */ 297 298 /* Define the size of the IPv6 destination table. */ 299 /* 300 #define NX_IPV6_DESTINATION_TABLE_SIZE 8 301 */ 302 303 /* Define the size of the IPv6 prefix table. */ 304 /* 305 #define NX_IPV6_PREFIX_LIST_TABLE_SIZE 8 306 */ 307 308 309 /* Configuration options for IPSEC */ 310 311 /* This define enables IPSEC in NetX Duo. */ 312 /* 313 #define NX_IPSEC_ENABLE 314 */ 315 316 317 /* Configuration options for NAT */ 318 319 /* This define enables NAT process in NetX Duo. */ 320 /* 321 #define NX_NAT_ENABLE 322 */ 323 324 325 /* Configuration options for IGMP */ 326 327 /* Defined, IGMP v2 support is disabled. By default NetX Duo 328 is built with IGMPv2 enabled . By uncommenting this option, 329 NetX Duo reverts back to IGMPv1 only. */ 330 /* 331 #define NX_DISABLE_IGMPV2 332 */ 333 334 335 /* Configuration options for ARP */ 336 337 /* When defines, ARP reply is sent when address conflict occurs. */ 338 /* 339 #define NX_ARP_DEFEND_BY_REPLY 340 */ 341 342 /* To use the ARP collision handler to check for invalid ARP messages 343 matching existing entries in the table (man in the middle attack), 344 enable this feature. */ 345 /* 346 #define NX_ENABLE_ARP_MAC_CHANGE_NOTIFICATION 347 */ 348 349 /* This define specifies the number of seconds ARP entries remain valid. The default value of 0 disables 350 aging of ARP entries. */ 351 /* 352 #define NX_ARP_EXPIRATION_RATE 0 353 */ 354 355 /* This define specifies the number of seconds between ARP retries. The default value is 10, which represents 356 10 seconds. */ 357 /* 358 #define NX_ARP_UPDATE_RATE 10 359 */ 360 361 /* This define specifies the maximum number of ARP retries made without an ARP response. The default 362 value is 18. */ 363 /* 364 #define NX_ARP_MAXIMUM_RETRIES 18 365 */ 366 367 /* This defines specifies the maximum number of packets that can be queued while waiting for an ARP 368 response. The default value is 4. */ 369 /* 370 #define NX_ARP_MAX_QUEUE_DEPTH 4 371 */ 372 373 /* Defined, this option disables entering ARP request information in the ARP cache. */ 374 /* 375 #define NX_DISABLE_ARP_AUTO_ENTRY 376 */ 377 378 /* Define the ARP defend interval. The default value is 10 seconds. */ 379 /* 380 #define NX_ARP_DEFEND_INTERVAL 10 381 */ 382 383 384 /* Configuration options for TCP */ 385 386 /* This define specifies how the number of system ticks (NX_IP_PERIODIC_RATE) is divided to calculate the 387 timer rate for the TCP delayed ACK processing. The default value is 5, which represents 200ms. */ 388 /* 389 #define NX_TCP_ACK_TIMER_RATE 5 390 */ 391 392 /* This define specifies how the number of system ticks (NX_IP_PERIODIC_RATE) is divided to calculate the 393 fast TCP timer rate. The fast TCP timer is used to drive various TCP timers, including the delayed ACK 394 timer. The default value is 10, which represents 100ms. */ 395 /* 396 #define NX_TCP_FAST_TIMER_RATE 10 397 */ 398 399 /* This define specifies how the number of system ticks (NX_IP_PERIODIC_RATE) is divided to calculate the 400 timer rate for the TCP transmit retry processing. The default value is 1, which represents 1 second. */ 401 /* 402 #define NX_TCP_TRANSMIT_TIMER_RATE 1 403 */ 404 405 /* This define specifies how many seconds of inactivity before the keepalive timer activates. The default 406 value is 7200, which represents 2 hours. */ 407 /* 408 #define NX_TCP_KEEPALIVE_INITIAL 7200 409 */ 410 411 /* This define specifies how many seconds between retries of the keepalive timer assuming the other side 412 of the connection is not responding. The default value is 75, which represents 75 seconds between 413 retries. */ 414 /* 415 #define NX_TCP_KEEPALIVE_RETRY 75 416 */ 417 418 /* This define specifies the maximum packets that are out of order. The default value is 8. */ 419 /* 420 #define NX_TCP_MAX_OUT_OF_ORDER_PACKETS 8 421 */ 422 423 /* This define specifies the maximum number of TCP server listen requests. The default value is 10. */ 424 /* 425 #define NX_MAX_LISTEN_REQUESTS 10 426 */ 427 428 /* Defined, this option enables the optional TCP keepalive timer. */ 429 /* 430 #define NX_ENABLE_TCP_KEEPALIVE 431 */ 432 433 /* Defined, this option enables the optional TCP immediate ACK response processing. */ 434 /* 435 #define NX_TCP_IMMEDIATE_ACK 436 */ 437 438 /* This define specifies the number of TCP packets to receive before sending an ACK. */ 439 /* The default value is 2: ack every 2 packets. */ 440 /* 441 #define NX_TCP_ACK_EVERY_N_PACKETS 2 442 */ 443 444 /* Automatically define NX_TCP_ACK_EVERY_N_PACKETS to 1 if NX_TCP_IMMEDIATE_ACK is defined. 445 This is needed for backward compatibility. */ 446 #if (defined(NX_TCP_IMMEDIATE_ACK) && !defined(NX_TCP_ACK_EVERY_N_PACKETS)) 447 #define NX_TCP_ACK_EVERY_N_PACKETS 1 448 #endif 449 450 /* This define specifies how many transmit retires are allowed before the connection is deemed broken. 451 The default value is 10. */ 452 /* 453 #define NX_TCP_MAXIMUM_RETRIES 10 454 */ 455 456 /* This define specifies the maximum depth of the TCP transmit queue before TCP send requests are 457 suspended or rejected. The default value is 20, which means that a maximum of 20 packets can be in 458 the transmit queue at any given time. */ 459 /* 460 #define NX_TCP_MAXIMUM_TX_QUEUE 20 461 */ 462 463 /* This define specifies how the retransmit timeout period changes between successive retries. If this 464 value is 0, the initial retransmit timeout is the same as subsequent retransmit timeouts. If this 465 value is 1, each successive retransmit is twice as long. The default value is 0. */ 466 /* 467 #define NX_TCP_RETRY_SHIFT 0 468 */ 469 470 /* This define specifies how many keepalive retries are allowed before the connection is deemed broken. 471 The default value is 10. */ 472 /* 473 #define NX_TCP_KEEPALIVE_RETRIES 10 474 */ 475 476 /* Defined, this option enables the TCP window scaling feature. (RFC 1323). Default disabled. */ 477 /* 478 #define NX_ENABLE_TCP_WINDOW_SCALING 479 */ 480 481 /* Defined, this option disables the reset processing during disconnect when the timeout value is 482 specified as NX_NO_WAIT. */ 483 /* 484 #define NX_DISABLE_RESET_DISCONNECT 485 */ 486 487 /* If defined, the incoming SYN packet (connection request) is checked for a minimum acceptable 488 MSS for the host to accept the connection. The default minimum should be based on the host 489 application packet pool payload, socket transmit queue depth and relevant application specific parameters. */ 490 /* 491 #define NX_ENABLE_TCP_MSS_CHECK 492 #define NX_TCP_MSS_MINIMUM 128 493 */ 494 495 /* If defined, NetX Duo has a notify callback for the transmit TCP socket queue decreased from 496 the maximum queue depth. */ 497 /* 498 #define NX_ENABLE_TCP_QUEUE_DEPTH_UPDATE_NOTIFY 499 */ 500 501 /* Defined, feature of low watermark is enabled. */ 502 /* 503 #define NX_ENABLE_LOW_WATERMARK 504 */ 505 506 /* Define the maximum receive queue for TCP socket. */ 507 /* 508 #ifdef NX_ENABLE_LOW_WATERMARK 509 #define NX_TCP_MAXIMUM_RX_QUEUE 20 510 #endif 511 */ 512 513 /* Configuration options for fragmentation */ 514 515 /* Defined, this option disables both IPv4 and IPv6 fragmentation and reassembly logic. */ 516 /* 517 #define NX_DISABLE_FRAGMENTATION 518 */ 519 520 /* Defined, this option process IP fragmentation immediately. */ 521 /* 522 #define NX_FRAGMENT_IMMEDIATE_ASSEMBLY 523 */ 524 525 /* This define specifies the maximum time of IP reassembly. The default value is 60. 526 By default this option is not defined. */ 527 /* 528 #define NX_IP_MAX_REASSEMBLY_TIME 60 529 */ 530 531 /* This define specifies the maximum time of IPv4 reassembly. The default value is 15. 532 Note that if NX_IP_MAX_REASSEMBLY_TIME is defined, this option is automatically defined as 60. 533 By default this option is not defined. */ 534 /* 535 #define NX_IPV4_MAX_REASSEMBLY_TIME 15 536 */ 537 538 /* This define specifies the maximum time of IPv6 reassembly. The default value is 60. 539 Note that if NX_IP_MAX_REASSEMBLY_TIME is defined, this option is automatically defined as 60. 540 By default this option is not defined. */ 541 /* 542 #define NX_IPV6_MAX_REASSEMBLY_TIME 60 543 */ 544 545 /* Configuration options for checksum */ 546 547 /* Defined, this option disables checksum logic on received ICMPv4 packets. 548 Note that if NX_DISABLE_ICMP_RX_CHECKSUM is defined, this option is 549 automatically defined. By default this option is not defined.*/ 550 /* 551 #define NX_DISABLE_ICMPV4_RX_CHECKSUM 552 */ 553 554 /* Defined, this option disables checksum logic on received ICMPv6 packets. 555 Note that if NX_DISABLE_ICMP_RX_CHECKSUM is defined, this option is 556 automatically defined. By default this option is not defined.*/ 557 /* 558 #define NX_DISABLE_ICMPV6_RX_CHECKSUM 559 */ 560 561 /* Defined, this option disables checksum logic on received ICMPv4 or ICMPv6 packets. 562 Note that if NX_DISABLE_ICMP_RX_CHECKSUM is defined, NX_DISABLE_ICMPV4_RX_CHECKSUM 563 and NX_DISABLE_ICMPV6_RX_CHECKSUM are automatically defined. */ 564 /* 565 #define NX_DISABLE_ICMP_RX_CHECKSUM 566 */ 567 568 /* Defined, this option disables checksum logic on transmitted ICMPv4 packets. 569 Note that if NX_DISABLE_ICMP_TX_CHECKSUM is defined, this option is 570 automatically defined. By default this option is not defined.*/ 571 /* 572 #define NX_DISABLE_ICMPV4_TX_CHECKSUM 573 */ 574 575 /* Defined, this option disables checksum logic on transmitted ICMPv6 packets. 576 Note that if NX_DISABLE_ICMP_TX_CHECKSUM is defined, this option is 577 automatically defined. By default this option is not defined.*/ 578 /* 579 #define NX_DISABLE_ICMPV6_TX_CHECKSUM 580 */ 581 582 /* Defined, this option disables checksum logic on transmitted ICMPv4 or ICMPv6 packets. 583 Note that if NX_DISABLE_ICMP_TX_CHECKSUM is defined, NX_DISABLE_ICMPV4_TX_CHECKSUM 584 and NX_DISABLE_ICMPV6_TX_CHECKSUM are automatically defined. */ 585 /* 586 #define NX_DISABLE_ICMP_TX_CHECKSUM 587 */ 588 589 /* Defined, this option disables checksum logic on received IP packets. This is useful if the link-layer 590 has reliable checksum or CRC logic. */ 591 /* 592 #define NX_DISABLE_IP_RX_CHECKSUM 593 */ 594 595 /* Defined, this option disables checksum logic on transmitted IP packets. */ 596 /* 597 #define NX_DISABLE_IP_TX_CHECKSUM 598 */ 599 600 /* Defined, this option disables checksum logic on received TCP packets. */ 601 /* 602 #define NX_DISABLE_TCP_RX_CHECKSUM 603 */ 604 605 /* Defined, this option disables checksum logic on transmitted TCP packets. */ 606 /* 607 #define NX_DISABLE_TCP_TX_CHECKSUM 608 */ 609 610 /* Defined, this option disables checksum logic on received UDP packets. */ 611 612 /* 613 #define NX_DISABLE_UDP_RX_CHECKSUM 614 */ 615 616 /* Defined, this option disables checksum logic on transmitted UDP packets. Note that 617 IPV6 requires the UDP checksum computed for outgoing packets. If this option is 618 defined, the IPv6 NetX Duo host must ensure the UDP checksum is computed elsewhere 619 before the packet is transmitted. */ 620 /* 621 #define NX_DISABLE_UDP_TX_CHECKSUM 622 */ 623 624 625 /* Configuration options for statistics. */ 626 627 /* Defined, ARP information gathering is disabled. */ 628 /* 629 #define NX_DISABLE_ARP_INFO 630 */ 631 632 /* Defined, IP information gathering is disabled. */ 633 /* 634 #define NX_DISABLE_IP_INFO 635 */ 636 637 /* Defined, ICMP information gathering is disabled. */ 638 /* 639 #define NX_DISABLE_ICMP_INFO 640 */ 641 642 /* Defined, IGMP information gathering is disabled. */ 643 /* 644 #define NX_DISABLE_IGMP_INFO 645 */ 646 647 /* Defined, packet information gathering is disabled. */ 648 /* 649 #define NX_DISABLE_PACKET_INFO 650 */ 651 652 /* Defined, RARP information gathering is disabled. */ 653 /* 654 #define NX_DISABLE_RARP_INFO 655 */ 656 657 /* Defined, TCP information gathering is disabled. */ 658 /* 659 #define NX_DISABLE_TCP_INFO 660 */ 661 662 /* Defined, UDP information gathering is disabled. */ 663 /* 664 #define NX_DISABLE_UDP_INFO 665 */ 666 667 668 /* Configuration options for Packet Pool */ 669 670 /* This define specifies the size of the physical packet header. The default value is 16 (based on 671 a typical 16-byte Ethernet header). */ 672 /* 673 #define NX_PHYSICAL_HEADER 16 674 */ 675 676 /* This define specifies the size of the physical packet trailer and is typically used to reserve storage 677 for things like Ethernet CRCs, etc. */ 678 /* 679 #define NX_PHYSICAL_TRAILER 4 680 */ 681 682 /* Defined, this option disables the addition size checking on received packets. */ 683 /* 684 #define NX_DISABLE_RX_SIZE_CHECKING 685 */ 686 687 /* Defined, packet debug infromation is enabled. */ 688 /* 689 #define NX_ENABLE_PACKET_DEBUG_INFO 690 */ 691 692 /* Defined, NX_PACKET structure is padded for alignment purpose. The default is no padding. */ 693 /* 694 #define NX_PACKET_HEADER_PAD 695 #define NX_PACKET_HEADER_PAD_SIZE 1 696 */ 697 698 /* Defined, packet header and payload are aligned automatically by the value. The default value is sizeof(ULONG). */ 699 /* 700 #define NX_PACKET_ALIGNMENT sizeof(ULONG) 701 */ 702 703 /* If defined, the packet chain feature is removed. */ 704 /* 705 #define NX_DISABLE_PACKET_CHAIN 706 */ 707 708 /* Defined, the IP instance manages two packet pools. */ 709 /* 710 #define NX_ENABLE_DUAL_PACKET_POOL 711 */ 712 713 /* Configuration options for Others */ 714 715 /* Defined, this option bypasses the basic NetX error checking. This define is typically used 716 after the application is fully debugged. */ 717 /* 718 #define NX_DISABLE_ERROR_CHECKING 719 */ 720 721 /* Defined, this option enables deferred driver packet handling. This allows the driver to place a raw 722 packet on the IP instance and have the driver's real processing routine called from the NetX internal 723 IP helper thread. */ 724 /* 725 #define NX_DRIVER_DEFERRED_PROCESSING 726 */ 727 728 /* Defined, the source address of incoming packet is checked. The default is disabled. */ 729 /* 730 #define NX_ENABLE_SOURCE_ADDRESS_CHECK 731 */ 732 733 /* Defined, the extended notify support is enabled. This feature adds additional callback/notify services 734 to NetX Duo API for notifying the application of socket events, such as TCP connection and disconnect 735 completion. These extended notify functions are mainly used by the BSD wrapper. The default is this 736 feature is disabled. */ 737 /* 738 #define NX_ENABLE_EXTENDED_NOTIFY_SUPPORT 739 */ 740 741 /* Defined, ASSERT is disabled. The default is enabled. */ 742 /* 743 #define NX_DISABLE_ASSERT 744 */ 745 746 /* Define the process when assert fails. */ 747 /* 748 #define NX_ASSERT_FAIL while (1) tx_thread_sleep(NX_WAIT_FOREVER); 749 */ 750 751 /* Defined, the IPv4 feature is disabled. */ 752 /* 753 #define NX_DISABLE_IPV4 754 */ 755 756 /* Defined, the destination address of ICMP packet is checked. The default is disabled. 757 An ICMP Echo Request destined to an IP broadcast or IP multicast address will be silently discarded. 758 */ 759 /* 760 #define NX_ENABLE_ICMP_ADDRESS_CHECK 761 */ 762 763 /* Define the max string length. The default value is 1024. */ 764 /* 765 #define NX_MAX_STRING_LENGTH 1024 766 */ 767 768 /* Defined, the TCP/IP offload feature is enabled. 769 NX_ENABLE_INTERFACE_CAPABILITY must be defined to enable this feature. */ 770 /* 771 #define NX_ENABLE_TCPIP_OFFLOAD 772 */ 773 774 #endif 775 776