]> git.sur5r.net Git - freertos/blobdiff - FreeRTOS-Plus/Source/FreeRTOS-Plus-TCP/include/FreeRTOSIPConfigDefaults.h
Update version number in readiness for V10.3.0 release. Sync SVN with reviewed releas...
[freertos] / FreeRTOS-Plus / Source / FreeRTOS-Plus-TCP / include / FreeRTOSIPConfigDefaults.h
index 20cdf739fb3cde50e33e55adea988aa781fb9f7e..d23410f5f97bbf01ce6c53a5900b1646d41565ff 100644 (file)
-/*\r
- * FreeRTOS+TCP V2.2.0\r
- * Copyright (C) 2017 Amazon.com, Inc. or its affiliates.  All Rights Reserved.\r
- *\r
- * Permission is hereby granted, free of charge, to any person obtaining a copy of\r
- * this software and associated documentation files (the "Software"), to deal in\r
- * the Software without restriction, including without limitation the rights to\r
- * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\r
- * the Software, and to permit persons to whom the Software is furnished to do so,\r
- * subject to the following conditions:\r
- *\r
- * The above copyright notice and this permission notice shall be included in all\r
- * copies or substantial portions of the Software.\r
- *\r
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\r
- * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\r
- * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\r
- * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\r
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r
- *\r
- * http://www.FreeRTOS.org\r
- * http://aws.amazon.com/freertos\r
- *\r
- * 1 tab == 4 spaces!\r
- */\r
-\r
-#ifndef FREERTOS_DEFAULT_IP_CONFIG_H\r
-#define FREERTOS_DEFAULT_IP_CONFIG_H\r
-\r
-/* The error numbers defined in this file will be moved to the core FreeRTOS\r
-code in future versions of FreeRTOS - at which time the following header file\r
-will be removed. */\r
-#include "FreeRTOS_errno_TCP.h"\r
-\r
-/* This file provides default values for configuration options that are missing\r
-from the FreeRTOSIPConfig.h configuration header file. */\r
-\r
-\r
-/* Ensure defined configuration constants are using the most up to date naming. */\r
-#ifdef tcpconfigIP_TIME_TO_LIVE\r
-       #error now called: ipconfigTCP_TIME_TO_LIVE\r
-#endif\r
-\r
-#ifdef updconfigIP_TIME_TO_LIVE\r
-       #error now called: ipconfigUDP_TIME_TO_LIVE\r
-#endif\r
-\r
-#ifdef ipFILLER_SIZE\r
-       #error now called: ipconfigPACKET_FILLER_SIZE\r
-#endif\r
-\r
-#ifdef dnsMAX_REQUEST_ATTEMPTS\r
-       #error now called: ipconfigDNS_REQUEST_ATTEMPTS\r
-#endif\r
-\r
-#ifdef ipconfigUDP_TASK_PRIORITY\r
-       #error now called: ipconfigIP_TASK_PRIORITY\r
-#endif\r
-\r
-#ifdef ipconfigUDP_TASK_STACK_SIZE_WORDS\r
-       #error now called: ipconfigIP_TASK_STACK_SIZE_WORDS\r
-#endif\r
-\r
-#ifdef ipconfigDRIVER_INCLUDED_RX_IP_FILTERING\r
-       #error now called: ipconfigETHERNET_DRIVER_FILTERS_PACKETS\r
-#endif\r
-\r
-#ifdef ipconfigMAX_SEND_BLOCK_TIME_TICKS\r
-       #error now called: ipconfigUDP_MAX_SEND_BLOCK_TIME_TICKS\r
-#endif\r
-\r
-#ifdef ipconfigUSE_RECEIVE_CONNECT_CALLBACKS\r
-       #error now called: ipconfigUSE_CALLBACKS\r
-#endif\r
-\r
-#ifdef ipconfigNUM_NETWORK_BUFFERS\r
-       #error now called: ipconfigNUM_NETWORK_BUFFER_DESCRIPTORS\r
-#endif\r
-\r
-#ifdef ipconfigTCP_HANG_PROT\r
-       #error now called: ipconfigTCP_HANG_PROTECTION\r
-#endif\r
-\r
-#ifdef ipconfigTCP_HANG_PROT_TIME\r
-       #error now called: ipconfigTCP_HANG_PROTECTION_TIME\r
-#endif\r
-\r
-#ifdef FreeRTOS_lprintf\r
-       #error now called: FreeRTOS_debug_printf\r
-#endif\r
-\r
-#if ( ipconfigEVENT_QUEUE_LENGTH < ( ipconfigNUM_NETWORK_BUFFER_DESCRIPTORS + 5 ) )\r
-       #error The ipconfigEVENT_QUEUE_LENGTH parameter must be at least ipconfigNUM_NETWORK_BUFFER_DESCRIPTORS + 5\r
-#endif\r
-\r
-#if ( ipconfigNETWORK_MTU < 46 )\r
-       #error ipconfigNETWORK_MTU must be at least 46.\r
-#endif\r
-\r
-#ifdef ipconfigBUFFER_ALLOC_FIXED_SIZE\r
-       #error ipconfigBUFFER_ALLOC_FIXED_SIZE was dropped and replaced by a const value, declared in BufferAllocation[12].c\r
-#endif\r
-\r
-#ifdef ipconfigNIC_SEND_PASSES_DMA\r
-       #error now called: ipconfigZERO_COPY_TX_DRIVER\r
-#endif\r
-\r
-#ifdef HAS_TX_CRC_OFFLOADING\r
-       /* _HT_ As these macro names have changed, throw an error\r
-       if they're still defined. */\r
-       #error now called: ipconfigHAS_TX_CRC_OFFLOADING\r
-#endif\r
-\r
-#ifdef HAS_RX_CRC_OFFLOADING\r
-       #error now called: ipconfigHAS_RX_CRC_OFFLOADING\r
-#endif\r
-\r
-#ifdef ipconfigTCP_RX_BUF_LEN\r
-       #error ipconfigTCP_RX_BUF_LEN is now called ipconfigTCP_RX_BUFFER_LENGTH\r
-#endif\r
-\r
-#ifdef ipconfigTCP_TX_BUF_LEN\r
-       #error ipconfigTCP_TX_BUF_LEN is now called ipconfigTCP_TX_BUFFER_LENGTH\r
-#endif\r
-\r
-#ifdef ipconfigDHCP_USES_USER_HOOK\r
-       #error ipconfigDHCP_USES_USER_HOOK and its associated callback have been superceeded - see http://www.FreeRTOS.org/FreeRTOS-Plus/FreeRTOS_Plus_TCP/TCP_IP_Configuration.html#ipconfigUSE_DHCP_HOOK\r
-#endif\r
-\r
-#ifndef ipconfigUSE_TCP\r
-       #define ipconfigUSE_TCP                                         ( 1 )\r
-#endif\r
-\r
-#if    ipconfigUSE_TCP\r
-\r
-       /* Include support for TCP scaling windows */\r
-       #ifndef ipconfigUSE_TCP_WIN\r
-               #define ipconfigUSE_TCP_WIN                             ( 1 )\r
-       #endif\r
-\r
-       #ifndef ipconfigTCP_WIN_SEG_COUNT\r
-               #define ipconfigTCP_WIN_SEG_COUNT               ( 256 )\r
-       #endif\r
-\r
-       #ifndef ipconfigIGNORE_UNKNOWN_PACKETS\r
-               /* When non-zero, TCP will not send RST packets in reply to\r
-               TCP packets which are unknown, or out-of-order. */\r
-               #define ipconfigIGNORE_UNKNOWN_PACKETS  ( 0 )\r
-       #endif\r
-#endif\r
-\r
-/*\r
- * For debuging/logging: check if the port number is used for telnet\r
- * Some events will not be logged for telnet connections\r
- * because it would produce logging about the transmission of the logging...\r
- * This macro will only be used if FreeRTOS_debug_printf() is defined for logging\r
- */\r
-#ifndef ipconfigTCP_MAY_LOG_PORT\r
-       #define ipconfigTCP_MAY_LOG_PORT(xPort)                 ( ( xPort ) != 23u )\r
-#endif\r
-\r
-\r
-#ifndef        ipconfigSOCK_DEFAULT_RECEIVE_BLOCK_TIME\r
-       #define ipconfigSOCK_DEFAULT_RECEIVE_BLOCK_TIME portMAX_DELAY\r
-#endif\r
-\r
-#ifndef        ipconfigSOCK_DEFAULT_SEND_BLOCK_TIME\r
-       #define ipconfigSOCK_DEFAULT_SEND_BLOCK_TIME    portMAX_DELAY\r
-#endif\r
-\r
-\r
-#ifndef        ipconfigDNS_RECEIVE_BLOCK_TIME_TICKS\r
-       #define ipconfigDNS_RECEIVE_BLOCK_TIME_TICKS    pdMS_TO_TICKS( 500u )\r
-#endif\r
-\r
-#ifndef        ipconfigDNS_SEND_BLOCK_TIME_TICKS\r
-       #define ipconfigDNS_SEND_BLOCK_TIME_TICKS               pdMS_TO_TICKS( 500u )\r
-#endif\r
-/*\r
- * FreeRTOS debug logging routine (proposal)\r
- * The macro will be called in the printf() style. Users can define\r
- * their own logging routine as:\r
- *\r
- *     #define FreeRTOS_debug_printf( MSG )                    my_printf MSG\r
- *\r
- * The FreeRTOS_debug_printf() must be thread-safe but does not have to be\r
- * interrupt-safe.\r
- */\r
-#ifdef ipconfigHAS_DEBUG_PRINTF\r
-       #if( ipconfigHAS_DEBUG_PRINTF == 0 )\r
-               #ifdef FreeRTOS_debug_printf\r
-                       #error Do not define FreeRTOS_debug_print if ipconfigHAS_DEBUG_PRINTF is set to 0\r
-               #endif /* ifdef FreeRTOS_debug_printf */\r
-       #endif /* ( ipconfigHAS_DEBUG_PRINTF == 0 ) */\r
-#endif /* ifdef ipconfigHAS_DEBUG_PRINTF */\r
-\r
-#ifndef FreeRTOS_debug_printf\r
-    #define FreeRTOS_debug_printf( MSG )               do{} while(0)\r
-       #define ipconfigHAS_DEBUG_PRINTF                        0\r
-#endif\r
-\r
-/*\r
- * FreeRTOS general logging routine (proposal)\r
- * Used in some utility functions such as FreeRTOS_netstat() and FreeRTOS_PrintARPCache()\r
- *\r
- *     #define FreeRTOS_printf( MSG )                  my_printf MSG\r
- *\r
- * The FreeRTOS_printf() must be thread-safe but does not have to be interrupt-safe\r
- */\r
-#ifdef ipconfigHAS_PRINTF\r
-       #if( ipconfigHAS_PRINTF == 0 )\r
-               #ifdef FreeRTOS_printf\r
-                       #error Do not define FreeRTOS_print if ipconfigHAS_PRINTF is set to 0\r
-               #endif /* ifdef FreeRTOS_debug_printf */\r
-       #endif /* ( ipconfigHAS_PRINTF == 0 ) */\r
-#endif /* ifdef ipconfigHAS_PRINTF */\r
-\r
-#ifndef FreeRTOS_printf\r
-    #define FreeRTOS_printf( MSG )                             do{} while(0)\r
-       #define ipconfigHAS_PRINTF                                      0\r
-#endif\r
-\r
-/*\r
- * In cases where a lot of logging is produced, FreeRTOS_flush_logging( )\r
- * will be called to give the logging module a chance to flush the data\r
- * An example of this is the netstat command, which produces many lines of logging\r
- */\r
-#ifndef FreeRTOS_flush_logging\r
-    #define FreeRTOS_flush_logging( )                  do{} while(0)\r
-#endif\r
-\r
-/* Malloc functions. Within most applications of FreeRTOS, the couple\r
- * pvPortMalloc()/vPortFree() will be used.\r
- * If there is also SDRAM, the user may decide to use a different memory\r
- * allocator:\r
- * MallocLarge is used to allocate large TCP buffers (for Rx/Tx)\r
- * MallocSocket is used to allocate the space for the sockets\r
- */\r
-#ifndef pvPortMallocLarge\r
-       #define pvPortMallocLarge( x )                          pvPortMalloc( x )\r
-#endif\r
-\r
-#ifndef vPortFreeLarge\r
-       #define vPortFreeLarge(ptr)                                     vPortFree(ptr)\r
-#endif\r
-\r
-#ifndef pvPortMallocSocket\r
-       #define pvPortMallocSocket( x )                         pvPortMalloc( x )\r
-#endif\r
-\r
-#ifndef vPortFreeSocket\r
-       #define vPortFreeSocket(ptr)                            vPortFree(ptr)\r
-#endif\r
-\r
-/*\r
- * At several places within the library, random numbers are needed:\r
- * - DHCP:    For creating a DHCP transaction number\r
- * - TCP:     Set the Initial Sequence Number: this is the value of the first outgoing\r
- *            sequence number being used when connecting to a peer.\r
- *            Having a well randomised ISN is important to avoid spoofing\r
- * - UDP/TCP: for setting the first port number to be used, in case a socket\r
- *            uses a 'random' or anonymous port number\r
- */\r
-#ifndef ipconfigRAND32\r
-       #define ipconfigRAND32() rand()\r
-#endif\r
-/* --------------------------------------------------------\r
- * End of: HT Added some macro defaults for the PLUS-UDP project\r
- * -------------------------------------------------------- */\r
-\r
-#ifndef ipconfigUSE_NETWORK_EVENT_HOOK\r
-       #define ipconfigUSE_NETWORK_EVENT_HOOK 0\r
-#endif\r
-\r
-#ifndef ipconfigUDP_MAX_SEND_BLOCK_TIME_TICKS\r
-       #define ipconfigUDP_MAX_SEND_BLOCK_TIME_TICKS ( pdMS_TO_TICKS( 20 ) )\r
-#endif\r
-\r
-#ifndef ipconfigARP_CACHE_ENTRIES\r
-       #define ipconfigARP_CACHE_ENTRIES               10\r
-#endif\r
-\r
-#ifndef ipconfigMAX_ARP_RETRANSMISSIONS\r
-       #define ipconfigMAX_ARP_RETRANSMISSIONS ( 5u )\r
-#endif\r
-\r
-#ifndef ipconfigMAX_ARP_AGE\r
-       #define ipconfigMAX_ARP_AGE                     150u\r
-#endif\r
-\r
-#ifndef ipconfigUSE_ARP_REVERSED_LOOKUP\r
-       #define ipconfigUSE_ARP_REVERSED_LOOKUP         0\r
-#endif\r
-\r
-#ifndef ipconfigUSE_ARP_REMOVE_ENTRY\r
-       #define ipconfigUSE_ARP_REMOVE_ENTRY            0\r
-#endif\r
-\r
-#ifndef ipconfigINCLUDE_FULL_INET_ADDR\r
-       #define ipconfigINCLUDE_FULL_INET_ADDR  1\r
-#endif\r
-\r
-#ifndef ipconfigNUM_NETWORK_BUFFER_DESCRIPTORS\r
-       #define ipconfigNUM_NETWORK_BUFFER_DESCRIPTORS          45\r
-#endif\r
-\r
-#ifndef ipconfigEVENT_QUEUE_LENGTH\r
-       #define ipconfigEVENT_QUEUE_LENGTH              ( ipconfigNUM_NETWORK_BUFFER_DESCRIPTORS + 5 )\r
-#endif\r
-\r
-#ifndef ipconfigALLOW_SOCKET_SEND_WITHOUT_BIND\r
-       #define ipconfigALLOW_SOCKET_SEND_WITHOUT_BIND 1\r
-#endif\r
-\r
-#ifndef ipconfigUDP_TIME_TO_LIVE\r
-       #define ipconfigUDP_TIME_TO_LIVE                128\r
-#endif\r
-\r
-#ifndef ipconfigTCP_TIME_TO_LIVE\r
-       #define ipconfigTCP_TIME_TO_LIVE                128\r
-#endif\r
-\r
-#ifndef ipconfigUDP_MAX_RX_PACKETS\r
-       /* Make postive to define the maximum number of packets which will be buffered\r
-        * for each UDP socket.\r
-        * Can be overridden with the socket option FREERTOS_SO_UDP_MAX_RX_PACKETS\r
-        */\r
-       #define ipconfigUDP_MAX_RX_PACKETS              0u\r
-#endif\r
-\r
-#ifndef ipconfigUSE_DHCP\r
-       #define ipconfigUSE_DHCP                                1\r
-#endif\r
-\r
-#ifndef ipconfigUSE_DHCP_HOOK\r
-       #define ipconfigUSE_DHCP_HOOK           0\r
-#endif\r
-\r
-#ifndef ipconfigDHCP_FALL_BACK_AUTO_IP\r
-       /*\r
-        * Only applicable when DHCP is in use:\r
-        * If no DHCP server responds, use "Auto-IP" : the\r
-        * device will allocate a random LinkLayer IP address.\r
-        */\r
-       #define ipconfigDHCP_FALL_BACK_AUTO_IP          ( 0 )\r
-#endif\r
-\r
-#if( ipconfigDHCP_FALL_BACK_AUTO_IP != 0 )\r
-       #define ipconfigARP_USE_CLASH_DETECTION         1\r
-#endif\r
-\r
-#ifndef ipconfigARP_USE_CLASH_DETECTION\r
-       #define ipconfigARP_USE_CLASH_DETECTION         0\r
-#endif\r
-\r
-#ifndef ipconfigNETWORK_MTU\r
-       #define ipconfigNETWORK_MTU             1500\r
-#endif\r
-\r
-#ifndef ipconfigTCP_MSS\r
-       #define ipconfigTCP_MSS         ( ipconfigNETWORK_MTU - ipSIZE_OF_IPv4_HEADER - ipSIZE_OF_TCP_HEADER )\r
-#endif\r
-\r
-/* Each TCP socket has circular stream buffers for Rx and Tx, which\r
- * have a fixed maximum size.\r
- * The defaults for these size are defined here, although\r
- * they can be overridden at runtime by using the setsockopt() call */\r
-#ifndef ipconfigTCP_RX_BUFFER_LENGTH\r
-       #define ipconfigTCP_RX_BUFFER_LENGTH                    ( 4u * ipconfigTCP_MSS )        /* defaults to 5840 bytes */\r
-#endif\r
-\r
-/* Define the size of Tx stream buffer for TCP sockets */\r
-#ifndef ipconfigTCP_TX_BUFFER_LENGTH\r
-#      define ipconfigTCP_TX_BUFFER_LENGTH                     ( 4u * ipconfigTCP_MSS )        /* defaults to 5840 bytes */\r
-#endif\r
-\r
-#ifndef ipconfigMAXIMUM_DISCOVER_TX_PERIOD\r
-       #ifdef _WINDOWS_\r
-               #define ipconfigMAXIMUM_DISCOVER_TX_PERIOD              ( pdMS_TO_TICKS( 999 ) )\r
-       #else\r
-               #define ipconfigMAXIMUM_DISCOVER_TX_PERIOD              ( pdMS_TO_TICKS( 30000 ) )\r
-       #endif /* _WINDOWS_ */\r
-#endif /* ipconfigMAXIMUM_DISCOVER_TX_PERIOD */\r
-\r
-#if( ipconfigUSE_DNS == 0 )\r
-       /* The DNS module will not be included. */\r
-       #if( ( ipconfigUSE_LLMNR != 0 ) || ( ipconfigUSE_NBNS != 0 ) )\r
-               /* LLMNR and NBNS depend on DNS because those protocols share a lot of code. */\r
-               #error When either LLMNR or NBNS is used, ipconfigUSE_DNS must be defined\r
-       #endif\r
-#endif\r
-\r
-#ifndef ipconfigUSE_DNS\r
-       #define ipconfigUSE_DNS                                         1\r
-#endif\r
-\r
-#ifndef ipconfigDNS_REQUEST_ATTEMPTS\r
-       #define ipconfigDNS_REQUEST_ATTEMPTS            5\r
-#endif\r
-\r
-#ifndef ipconfigUSE_DNS_CACHE\r
-       #define ipconfigUSE_DNS_CACHE                           0\r
-#endif\r
-\r
-#if( ipconfigUSE_DNS_CACHE != 0 )\r
-       #ifndef ipconfigDNS_CACHE_NAME_LENGTH\r
-               /* Per https://tools.ietf.org/html/rfc1035, 253 is the maximum string length\r
-               of a DNS name. The following default accounts for a null terminator. */\r
-               #define ipconfigDNS_CACHE_NAME_LENGTH   254\r
-       #endif\r
-\r
-       #ifndef ipconfigDNS_CACHE_ENTRIES\r
-               #define ipconfigDNS_CACHE_ENTRIES                       1\r
-       #endif\r
-#endif /* ipconfigUSE_DNS_CACHE != 0 */\r
-\r
-#ifndef ipconfigCHECK_IP_QUEUE_SPACE\r
-       #define ipconfigCHECK_IP_QUEUE_SPACE                    0\r
-#endif\r
-\r
-#ifndef ipconfigUSE_LLMNR\r
-       /* Include support for LLMNR: Link-local Multicast Name Resolution (non-Microsoft) */\r
-       #define ipconfigUSE_LLMNR                                       ( 0 )\r
-#endif\r
-\r
-#ifndef ipconfigREPLY_TO_INCOMING_PINGS\r
-       #define ipconfigREPLY_TO_INCOMING_PINGS         1\r
-#endif\r
-\r
-#ifndef ipconfigSUPPORT_OUTGOING_PINGS\r
-       #define ipconfigSUPPORT_OUTGOING_PINGS          0\r
-#endif\r
-\r
-#ifndef ipconfigFILTER_OUT_NON_ETHERNET_II_FRAMES\r
-       #define ipconfigFILTER_OUT_NON_ETHERNET_II_FRAMES 1\r
-#endif\r
-\r
-#ifndef ipconfigETHERNET_DRIVER_FILTERS_FRAME_TYPES\r
-       #define ipconfigETHERNET_DRIVER_FILTERS_FRAME_TYPES     1\r
-#endif\r
-\r
-#ifndef configINCLUDE_TRACE_RELATED_CLI_COMMANDS\r
-       #define ipconfigINCLUDE_EXAMPLE_FREERTOS_PLUS_TRACE_CALLS 0\r
-#else\r
-       #define ipconfigINCLUDE_EXAMPLE_FREERTOS_PLUS_TRACE_CALLS configINCLUDE_TRACE_RELATED_CLI_COMMANDS\r
-#endif\r
-\r
-#ifndef ipconfigDRIVER_INCLUDED_RX_IP_CHECKSUM\r
-       #define ipconfigDRIVER_INCLUDED_RX_IP_CHECKSUM  ( 0 )\r
-#endif\r
-\r
-#ifndef ipconfigETHERNET_DRIVER_FILTERS_PACKETS\r
-       #define ipconfigETHERNET_DRIVER_FILTERS_PACKETS ( 0 )\r
-#endif\r
-\r
-#ifndef ipconfigWATCHDOG_TIMER\r
-       /* This macro will be called in every loop the IP-task makes.  It may be\r
-       replaced by user-code that triggers a watchdog */\r
-       #define ipconfigWATCHDOG_TIMER()\r
-#endif\r
-\r
-#ifndef ipconfigUSE_CALLBACKS\r
-       #define ipconfigUSE_CALLBACKS                   ( 0 )\r
-#endif\r
-\r
-#if( ipconfigUSE_CALLBACKS != 0 )\r
-       #ifndef ipconfigIS_VALID_PROG_ADDRESS\r
-               /* Replace this macro with a test returning non-zero if the memory pointer to by x\r
-                * is valid memory which can contain executable code\r
-                * In fact this is an extra safety measure: if a handler points to invalid memory,\r
-                * it will not be called\r
-                */\r
-               #define ipconfigIS_VALID_PROG_ADDRESS(x)                ( ( x ) != NULL )\r
-       #endif\r
-#endif\r
-\r
-#ifndef ipconfigHAS_INLINE_FUNCTIONS\r
-       #define ipconfigHAS_INLINE_FUNCTIONS    ( 1 )\r
-#endif\r
-\r
-#ifndef portINLINE\r
-       #define portINLINE inline\r
-#endif\r
-\r
-#ifndef ipconfigZERO_COPY_TX_DRIVER\r
-       /* When non-zero, the buffers passed to the SEND routine may be passed\r
-       to DMA. As soon as sending is ready, the buffers must be released by\r
-       calling vReleaseNetworkBufferAndDescriptor(), */\r
-       #define ipconfigZERO_COPY_TX_DRIVER             ( 0 )\r
-#endif\r
-\r
-#ifndef ipconfigZERO_COPY_RX_DRIVER\r
-       /* This define doesn't mean much to the driver, except that it makes\r
-       sure that pxPacketBuffer_to_NetworkBuffer() will be included. */\r
-       #define ipconfigZERO_COPY_RX_DRIVER             ( 0 )\r
-#endif\r
-\r
-#ifndef ipconfigDRIVER_INCLUDED_TX_IP_CHECKSUM\r
-       #define ipconfigDRIVER_INCLUDED_TX_IP_CHECKSUM 0\r
-#endif\r
-\r
-#ifndef ipconfigDRIVER_INCLUDED_RX_IP_CHECKSUM\r
-       #define ipconfigDRIVER_INCLUDED_RX_IP_CHECKSUM 0\r
-#endif\r
-\r
-#ifndef ipconfigDHCP_REGISTER_HOSTNAME\r
-       #define ipconfigDHCP_REGISTER_HOSTNAME 0\r
-#endif\r
-\r
-#ifndef ipconfigSOCKET_HAS_USER_SEMAPHORE\r
-       #define ipconfigSOCKET_HAS_USER_SEMAPHORE 0\r
-#endif\r
-\r
-#ifndef ipconfigSOCKET_HAS_USER_WAKE_CALLBACK\r
-       #define ipconfigSOCKET_HAS_USER_WAKE_CALLBACK 0\r
-#endif\r
-\r
-#ifndef ipconfigSUPPORT_SELECT_FUNCTION\r
-       #define ipconfigSUPPORT_SELECT_FUNCTION 0\r
-#endif\r
-\r
-#ifndef ipconfigTCP_KEEP_ALIVE\r
-       #define ipconfigTCP_KEEP_ALIVE 0\r
-#endif\r
-\r
-#ifndef ipconfigDNS_USE_CALLBACKS\r
-       #define ipconfigDNS_USE_CALLBACKS 0\r
-#endif\r
-\r
-#ifndef ipconfigSUPPORT_SIGNALS\r
-       #define ipconfigSUPPORT_SIGNALS                         0\r
-#endif\r
-\r
-#ifndef ipconfigUSE_NBNS\r
-       #define ipconfigUSE_NBNS 0\r
-#endif\r
-\r
-/* As an attack surface reduction for ports that listen for inbound \r
-connections, hang protection can help reduce the impact of SYN floods. */\r
-#ifndef ipconfigTCP_HANG_PROTECTION\r
-       #define ipconfigTCP_HANG_PROTECTION  1\r
-#endif\r
-\r
-/* Non-activity timeout is expressed in seconds. */\r
-#ifndef ipconfigTCP_HANG_PROTECTION_TIME\r
-       #define ipconfigTCP_HANG_PROTECTION_TIME 30\r
-#endif\r
-\r
-#ifndef ipconfigTCP_IP_SANITY\r
-       #define ipconfigTCP_IP_SANITY 0\r
-#endif\r
-\r
-#ifndef ipconfigARP_STORES_REMOTE_ADDRESSES\r
-       #define ipconfigARP_STORES_REMOTE_ADDRESSES 0\r
-#endif\r
-\r
-#ifndef ipconfigBUFFER_PADDING\r
-       /* Expert option: define a value for 'ipBUFFER_PADDING'.\r
-       When 'ipconfigBUFFER_PADDING' equals 0,\r
-       'ipBUFFER_PADDING' will get a default value of 8 + 2 bytes. */\r
-       #define ipconfigBUFFER_PADDING 0\r
-#endif\r
-\r
-#ifndef ipconfigPACKET_FILLER_SIZE\r
-       #define ipconfigPACKET_FILLER_SIZE 2\r
-#endif\r
-\r
-#endif /* FREERTOS_DEFAULT_IP_CONFIG_H */\r
+/*
+ * FreeRTOS+TCP V2.2.0
+ * Copyright (C) 2017 Amazon.com, Inc. or its affiliates.  All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of
+ * this software and associated documentation files (the "Software"), to deal in
+ * the Software without restriction, including without limitation the rights to
+ * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+ * the Software, and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+ * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+ * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+ * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * http://www.FreeRTOS.org
+ * http://aws.amazon.com/freertos
+ *
+ * 1 tab == 4 spaces!
+ */
+
+#ifndef FREERTOS_DEFAULT_IP_CONFIG_H
+#define FREERTOS_DEFAULT_IP_CONFIG_H
+
+/* The error numbers defined in this file will be moved to the core FreeRTOS
+code in future versions of FreeRTOS - at which time the following header file
+will be removed. */
+#include "FreeRTOS_errno_TCP.h"
+
+/* This file provides default values for configuration options that are missing
+from the FreeRTOSIPConfig.h configuration header file. */
+
+
+/* Ensure defined configuration constants are using the most up to date naming. */
+#ifdef tcpconfigIP_TIME_TO_LIVE
+       #error now called: ipconfigTCP_TIME_TO_LIVE
+#endif
+
+#ifdef updconfigIP_TIME_TO_LIVE
+       #error now called: ipconfigUDP_TIME_TO_LIVE
+#endif
+
+#ifdef ipFILLER_SIZE
+       #error now called: ipconfigPACKET_FILLER_SIZE
+#endif
+
+#ifdef dnsMAX_REQUEST_ATTEMPTS
+       #error now called: ipconfigDNS_REQUEST_ATTEMPTS
+#endif
+
+#ifdef ipconfigUDP_TASK_PRIORITY
+       #error now called: ipconfigIP_TASK_PRIORITY
+#endif
+
+#ifdef ipconfigUDP_TASK_STACK_SIZE_WORDS
+       #error now called: ipconfigIP_TASK_STACK_SIZE_WORDS
+#endif
+
+#ifdef ipconfigDRIVER_INCLUDED_RX_IP_FILTERING
+       #error now called: ipconfigETHERNET_DRIVER_FILTERS_PACKETS
+#endif
+
+#ifdef ipconfigMAX_SEND_BLOCK_TIME_TICKS
+       #error now called: ipconfigUDP_MAX_SEND_BLOCK_TIME_TICKS
+#endif
+
+#ifdef ipconfigUSE_RECEIVE_CONNECT_CALLBACKS
+       #error now called: ipconfigUSE_CALLBACKS
+#endif
+
+#ifdef ipconfigNUM_NETWORK_BUFFERS
+       #error now called: ipconfigNUM_NETWORK_BUFFER_DESCRIPTORS
+#endif
+
+#ifdef ipconfigTCP_HANG_PROT
+       #error now called: ipconfigTCP_HANG_PROTECTION
+#endif
+
+#ifdef ipconfigTCP_HANG_PROT_TIME
+       #error now called: ipconfigTCP_HANG_PROTECTION_TIME
+#endif
+
+#ifdef FreeRTOS_lprintf
+       #error now called: FreeRTOS_debug_printf
+#endif
+
+#if ( ipconfigEVENT_QUEUE_LENGTH < ( ipconfigNUM_NETWORK_BUFFER_DESCRIPTORS + 5 ) )
+       #error The ipconfigEVENT_QUEUE_LENGTH parameter must be at least ipconfigNUM_NETWORK_BUFFER_DESCRIPTORS + 5
+#endif
+
+#if ( ipconfigNETWORK_MTU < 46 )
+       #error ipconfigNETWORK_MTU must be at least 46.
+#endif
+
+#ifdef ipconfigBUFFER_ALLOC_FIXED_SIZE
+       #error ipconfigBUFFER_ALLOC_FIXED_SIZE was dropped and replaced by a const value, declared in BufferAllocation[12].c
+#endif
+
+#ifdef ipconfigNIC_SEND_PASSES_DMA
+       #error now called: ipconfigZERO_COPY_TX_DRIVER
+#endif
+
+#ifdef HAS_TX_CRC_OFFLOADING
+       /* _HT_ As these macro names have changed, throw an error
+       if they're still defined. */
+       #error now called: ipconfigHAS_TX_CRC_OFFLOADING
+#endif
+
+#ifdef HAS_RX_CRC_OFFLOADING
+       #error now called: ipconfigHAS_RX_CRC_OFFLOADING
+#endif
+
+#ifdef ipconfigTCP_RX_BUF_LEN
+       #error ipconfigTCP_RX_BUF_LEN is now called ipconfigTCP_RX_BUFFER_LENGTH
+#endif
+
+#ifdef ipconfigTCP_TX_BUF_LEN
+       #error ipconfigTCP_TX_BUF_LEN is now called ipconfigTCP_TX_BUFFER_LENGTH
+#endif
+
+#ifdef ipconfigDHCP_USES_USER_HOOK
+       #error ipconfigDHCP_USES_USER_HOOK and its associated callback have been superceeded - see http://www.FreeRTOS.org/FreeRTOS-Plus/FreeRTOS_Plus_TCP/TCP_IP_Configuration.html#ipconfigUSE_DHCP_HOOK
+#endif
+
+#ifndef ipconfigUSE_TCP
+       #define ipconfigUSE_TCP                                         ( 1 )
+#endif
+
+#if    ipconfigUSE_TCP
+
+       /* Include support for TCP scaling windows */
+       #ifndef ipconfigUSE_TCP_WIN
+               #define ipconfigUSE_TCP_WIN                             ( 1 )
+       #endif
+
+       #ifndef ipconfigTCP_WIN_SEG_COUNT
+               #define ipconfigTCP_WIN_SEG_COUNT               ( 256 )
+       #endif
+
+       #ifndef ipconfigIGNORE_UNKNOWN_PACKETS
+               /* When non-zero, TCP will not send RST packets in reply to
+               TCP packets which are unknown, or out-of-order. */
+               #define ipconfigIGNORE_UNKNOWN_PACKETS  ( 0 )
+       #endif
+#endif
+
+/*
+ * For debuging/logging: check if the port number is used for telnet
+ * Some events will not be logged for telnet connections
+ * because it would produce logging about the transmission of the logging...
+ * This macro will only be used if FreeRTOS_debug_printf() is defined for logging
+ */
+#ifndef ipconfigTCP_MAY_LOG_PORT
+       #define ipconfigTCP_MAY_LOG_PORT(xPort)                 ( ( xPort ) != 23u )
+#endif
+
+
+#ifndef        ipconfigSOCK_DEFAULT_RECEIVE_BLOCK_TIME
+       #define ipconfigSOCK_DEFAULT_RECEIVE_BLOCK_TIME portMAX_DELAY
+#endif
+
+#ifndef        ipconfigSOCK_DEFAULT_SEND_BLOCK_TIME
+       #define ipconfigSOCK_DEFAULT_SEND_BLOCK_TIME    portMAX_DELAY
+#endif
+
+
+#ifndef        ipconfigDNS_RECEIVE_BLOCK_TIME_TICKS
+       #define ipconfigDNS_RECEIVE_BLOCK_TIME_TICKS    pdMS_TO_TICKS( 500u )
+#endif
+
+#ifndef        ipconfigDNS_SEND_BLOCK_TIME_TICKS
+       #define ipconfigDNS_SEND_BLOCK_TIME_TICKS               pdMS_TO_TICKS( 500u )
+#endif
+/*
+ * FreeRTOS debug logging routine (proposal)
+ * The macro will be called in the printf() style. Users can define
+ * their own logging routine as:
+ *
+ *     #define FreeRTOS_debug_printf( MSG )                    my_printf MSG
+ *
+ * The FreeRTOS_debug_printf() must be thread-safe but does not have to be
+ * interrupt-safe.
+ */
+#ifdef ipconfigHAS_DEBUG_PRINTF
+       #if( ipconfigHAS_DEBUG_PRINTF == 0 )
+               #ifdef FreeRTOS_debug_printf
+                       #error Do not define FreeRTOS_debug_print if ipconfigHAS_DEBUG_PRINTF is set to 0
+               #endif /* ifdef FreeRTOS_debug_printf */
+       #endif /* ( ipconfigHAS_DEBUG_PRINTF == 0 ) */
+#endif /* ifdef ipconfigHAS_DEBUG_PRINTF */
+
+#ifndef FreeRTOS_debug_printf
+    #define FreeRTOS_debug_printf( MSG )               do{} while(0)
+       #define ipconfigHAS_DEBUG_PRINTF                        0
+#endif
+
+/*
+ * FreeRTOS general logging routine (proposal)
+ * Used in some utility functions such as FreeRTOS_netstat() and FreeRTOS_PrintARPCache()
+ *
+ *     #define FreeRTOS_printf( MSG )                  my_printf MSG
+ *
+ * The FreeRTOS_printf() must be thread-safe but does not have to be interrupt-safe
+ */
+#ifdef ipconfigHAS_PRINTF
+       #if( ipconfigHAS_PRINTF == 0 )
+               #ifdef FreeRTOS_printf
+                       #error Do not define FreeRTOS_print if ipconfigHAS_PRINTF is set to 0
+               #endif /* ifdef FreeRTOS_debug_printf */
+       #endif /* ( ipconfigHAS_PRINTF == 0 ) */
+#endif /* ifdef ipconfigHAS_PRINTF */
+
+#ifndef FreeRTOS_printf
+    #define FreeRTOS_printf( MSG )                             do{} while(0)
+       #define ipconfigHAS_PRINTF                                      0
+#endif
+
+/*
+ * In cases where a lot of logging is produced, FreeRTOS_flush_logging( )
+ * will be called to give the logging module a chance to flush the data
+ * An example of this is the netstat command, which produces many lines of logging
+ */
+#ifndef FreeRTOS_flush_logging
+    #define FreeRTOS_flush_logging( )                  do{} while(0)
+#endif
+
+/* Malloc functions. Within most applications of FreeRTOS, the couple
+ * pvPortMalloc()/vPortFree() will be used.
+ * If there is also SDRAM, the user may decide to use a different memory
+ * allocator:
+ * MallocLarge is used to allocate large TCP buffers (for Rx/Tx)
+ * MallocSocket is used to allocate the space for the sockets
+ */
+#ifndef pvPortMallocLarge
+       #define pvPortMallocLarge( x )                          pvPortMalloc( x )
+#endif
+
+#ifndef vPortFreeLarge
+       #define vPortFreeLarge(ptr)                                     vPortFree(ptr)
+#endif
+
+#ifndef pvPortMallocSocket
+       #define pvPortMallocSocket( x )                         pvPortMalloc( x )
+#endif
+
+#ifndef vPortFreeSocket
+       #define vPortFreeSocket(ptr)                            vPortFree(ptr)
+#endif
+
+/*
+ * At several places within the library, random numbers are needed:
+ * - DHCP:    For creating a DHCP transaction number
+ * - TCP:     Set the Initial Sequence Number: this is the value of the first outgoing
+ *            sequence number being used when connecting to a peer.
+ *            Having a well randomised ISN is important to avoid spoofing
+ * - UDP/TCP: for setting the first port number to be used, in case a socket
+ *            uses a 'random' or anonymous port number
+ */
+#ifndef ipconfigRAND32
+       #define ipconfigRAND32() rand()
+#endif
+/* --------------------------------------------------------
+ * End of: HT Added some macro defaults for the PLUS-UDP project
+ * -------------------------------------------------------- */
+
+#ifndef ipconfigUSE_NETWORK_EVENT_HOOK
+       #define ipconfigUSE_NETWORK_EVENT_HOOK 0
+#endif
+
+#ifndef ipconfigUDP_MAX_SEND_BLOCK_TIME_TICKS
+       #define ipconfigUDP_MAX_SEND_BLOCK_TIME_TICKS ( pdMS_TO_TICKS( 20 ) )
+#endif
+
+#ifndef ipconfigARP_CACHE_ENTRIES
+       #define ipconfigARP_CACHE_ENTRIES               10
+#endif
+
+#ifndef ipconfigMAX_ARP_RETRANSMISSIONS
+       #define ipconfigMAX_ARP_RETRANSMISSIONS ( 5u )
+#endif
+
+#ifndef ipconfigMAX_ARP_AGE
+       #define ipconfigMAX_ARP_AGE                     150u
+#endif
+
+#ifndef ipconfigUSE_ARP_REVERSED_LOOKUP
+       #define ipconfigUSE_ARP_REVERSED_LOOKUP         0
+#endif
+
+#ifndef ipconfigUSE_ARP_REMOVE_ENTRY
+       #define ipconfigUSE_ARP_REMOVE_ENTRY            0
+#endif
+
+#ifndef ipconfigINCLUDE_FULL_INET_ADDR
+       #define ipconfigINCLUDE_FULL_INET_ADDR  1
+#endif
+
+#ifndef ipconfigNUM_NETWORK_BUFFER_DESCRIPTORS
+       #define ipconfigNUM_NETWORK_BUFFER_DESCRIPTORS          45
+#endif
+
+#ifndef ipconfigEVENT_QUEUE_LENGTH
+       #define ipconfigEVENT_QUEUE_LENGTH              ( ipconfigNUM_NETWORK_BUFFER_DESCRIPTORS + 5 )
+#endif
+
+#ifndef ipconfigALLOW_SOCKET_SEND_WITHOUT_BIND
+       #define ipconfigALLOW_SOCKET_SEND_WITHOUT_BIND 1
+#endif
+
+#ifndef ipconfigUDP_TIME_TO_LIVE
+       #define ipconfigUDP_TIME_TO_LIVE                128
+#endif
+
+#ifndef ipconfigTCP_TIME_TO_LIVE
+       #define ipconfigTCP_TIME_TO_LIVE                128
+#endif
+
+#ifndef ipconfigUDP_MAX_RX_PACKETS
+       /* Make postive to define the maximum number of packets which will be buffered
+        * for each UDP socket.
+        * Can be overridden with the socket option FREERTOS_SO_UDP_MAX_RX_PACKETS
+        */
+       #define ipconfigUDP_MAX_RX_PACKETS              0u
+#endif
+
+#ifndef ipconfigUSE_DHCP
+       #define ipconfigUSE_DHCP                                1
+#endif
+
+#ifndef ipconfigUSE_DHCP_HOOK
+       #define ipconfigUSE_DHCP_HOOK           0
+#endif
+
+#ifndef ipconfigDHCP_FALL_BACK_AUTO_IP
+       /*
+        * Only applicable when DHCP is in use:
+        * If no DHCP server responds, use "Auto-IP" : the
+        * device will allocate a random LinkLayer IP address.
+        */
+       #define ipconfigDHCP_FALL_BACK_AUTO_IP          ( 0 )
+#endif
+
+#if( ipconfigDHCP_FALL_BACK_AUTO_IP != 0 )
+       #define ipconfigARP_USE_CLASH_DETECTION         1
+#endif
+
+#ifndef ipconfigARP_USE_CLASH_DETECTION
+       #define ipconfigARP_USE_CLASH_DETECTION         0
+#endif
+
+#ifndef ipconfigNETWORK_MTU
+       #define ipconfigNETWORK_MTU             1500
+#endif
+
+#ifndef ipconfigTCP_MSS
+       #define ipconfigTCP_MSS         ( ipconfigNETWORK_MTU - ipSIZE_OF_IPv4_HEADER - ipSIZE_OF_TCP_HEADER )
+#endif
+
+/* Each TCP socket has circular stream buffers for Rx and Tx, which
+ * have a fixed maximum size.
+ * The defaults for these size are defined here, although
+ * they can be overridden at runtime by using the setsockopt() call */
+#ifndef ipconfigTCP_RX_BUFFER_LENGTH
+       #define ipconfigTCP_RX_BUFFER_LENGTH                    ( 4u * ipconfigTCP_MSS )        /* defaults to 5840 bytes */
+#endif
+
+/* Define the size of Tx stream buffer for TCP sockets */
+#ifndef ipconfigTCP_TX_BUFFER_LENGTH
+#      define ipconfigTCP_TX_BUFFER_LENGTH                     ( 4u * ipconfigTCP_MSS )        /* defaults to 5840 bytes */
+#endif
+
+#ifndef ipconfigMAXIMUM_DISCOVER_TX_PERIOD
+       #ifdef _WINDOWS_
+               #define ipconfigMAXIMUM_DISCOVER_TX_PERIOD              ( pdMS_TO_TICKS( 999 ) )
+       #else
+               #define ipconfigMAXIMUM_DISCOVER_TX_PERIOD              ( pdMS_TO_TICKS( 30000 ) )
+       #endif /* _WINDOWS_ */
+#endif /* ipconfigMAXIMUM_DISCOVER_TX_PERIOD */
+
+#if( ipconfigUSE_DNS == 0 )
+       /* The DNS module will not be included. */
+       #if( ( ipconfigUSE_LLMNR != 0 ) || ( ipconfigUSE_NBNS != 0 ) )
+               /* LLMNR and NBNS depend on DNS because those protocols share a lot of code. */
+               #error When either LLMNR or NBNS is used, ipconfigUSE_DNS must be defined
+       #endif
+#endif
+
+#ifndef ipconfigUSE_DNS
+       #define ipconfigUSE_DNS                                         1
+#endif
+
+#ifndef ipconfigDNS_REQUEST_ATTEMPTS
+       #define ipconfigDNS_REQUEST_ATTEMPTS            5
+#endif
+
+#ifndef ipconfigUSE_DNS_CACHE
+       #define ipconfigUSE_DNS_CACHE                           0
+#endif
+
+#if( ipconfigUSE_DNS_CACHE != 0 )
+       #ifndef ipconfigDNS_CACHE_NAME_LENGTH
+               /* Per https://tools.ietf.org/html/rfc1035, 253 is the maximum string length
+               of a DNS name. The following default accounts for a null terminator. */
+               #define ipconfigDNS_CACHE_NAME_LENGTH   254
+       #endif
+
+       #ifndef ipconfigDNS_CACHE_ENTRIES
+               #define ipconfigDNS_CACHE_ENTRIES                       1
+       #endif
+#endif /* ipconfigUSE_DNS_CACHE != 0 */
+
+#ifndef ipconfigCHECK_IP_QUEUE_SPACE
+       #define ipconfigCHECK_IP_QUEUE_SPACE                    0
+#endif
+
+#ifndef ipconfigUSE_LLMNR
+       /* Include support for LLMNR: Link-local Multicast Name Resolution (non-Microsoft) */
+       #define ipconfigUSE_LLMNR                                       ( 0 )
+#endif
+
+#ifndef ipconfigREPLY_TO_INCOMING_PINGS
+       #define ipconfigREPLY_TO_INCOMING_PINGS         1
+#endif
+
+#ifndef ipconfigSUPPORT_OUTGOING_PINGS
+       #define ipconfigSUPPORT_OUTGOING_PINGS          0
+#endif
+
+#ifndef ipconfigFILTER_OUT_NON_ETHERNET_II_FRAMES
+       #define ipconfigFILTER_OUT_NON_ETHERNET_II_FRAMES 1
+#endif
+
+#ifndef ipconfigETHERNET_DRIVER_FILTERS_FRAME_TYPES
+       #define ipconfigETHERNET_DRIVER_FILTERS_FRAME_TYPES     1
+#endif
+
+#ifndef configINCLUDE_TRACE_RELATED_CLI_COMMANDS
+       #define ipconfigINCLUDE_EXAMPLE_FREERTOS_PLUS_TRACE_CALLS 0
+#else
+       #define ipconfigINCLUDE_EXAMPLE_FREERTOS_PLUS_TRACE_CALLS configINCLUDE_TRACE_RELATED_CLI_COMMANDS
+#endif
+
+#ifndef ipconfigDRIVER_INCLUDED_RX_IP_CHECKSUM
+       #define ipconfigDRIVER_INCLUDED_RX_IP_CHECKSUM  ( 0 )
+#endif
+
+#ifndef ipconfigETHERNET_DRIVER_FILTERS_PACKETS
+       #define ipconfigETHERNET_DRIVER_FILTERS_PACKETS ( 0 )
+#endif
+
+#ifndef ipconfigWATCHDOG_TIMER
+       /* This macro will be called in every loop the IP-task makes.  It may be
+       replaced by user-code that triggers a watchdog */
+       #define ipconfigWATCHDOG_TIMER()
+#endif
+
+#ifndef ipconfigUSE_CALLBACKS
+       #define ipconfigUSE_CALLBACKS                   ( 0 )
+#endif
+
+#if( ipconfigUSE_CALLBACKS != 0 )
+       #ifndef ipconfigIS_VALID_PROG_ADDRESS
+               /* Replace this macro with a test returning non-zero if the memory pointer to by x
+                * is valid memory which can contain executable code
+                * In fact this is an extra safety measure: if a handler points to invalid memory,
+                * it will not be called
+                */
+               #define ipconfigIS_VALID_PROG_ADDRESS(x)                ( ( x ) != NULL )
+       #endif
+#endif
+
+#ifndef ipconfigHAS_INLINE_FUNCTIONS
+       #define ipconfigHAS_INLINE_FUNCTIONS    ( 1 )
+#endif
+
+#ifndef portINLINE
+       #define portINLINE inline
+#endif
+
+#ifndef ipconfigZERO_COPY_TX_DRIVER
+       /* When non-zero, the buffers passed to the SEND routine may be passed
+       to DMA. As soon as sending is ready, the buffers must be released by
+       calling vReleaseNetworkBufferAndDescriptor(), */
+       #define ipconfigZERO_COPY_TX_DRIVER             ( 0 )
+#endif
+
+#ifndef ipconfigZERO_COPY_RX_DRIVER
+       /* This define doesn't mean much to the driver, except that it makes
+       sure that pxPacketBuffer_to_NetworkBuffer() will be included. */
+       #define ipconfigZERO_COPY_RX_DRIVER             ( 0 )
+#endif
+
+#ifndef ipconfigDRIVER_INCLUDED_TX_IP_CHECKSUM
+       #define ipconfigDRIVER_INCLUDED_TX_IP_CHECKSUM 0
+#endif
+
+#ifndef ipconfigDRIVER_INCLUDED_RX_IP_CHECKSUM
+       #define ipconfigDRIVER_INCLUDED_RX_IP_CHECKSUM 0
+#endif
+
+#ifndef ipconfigDHCP_REGISTER_HOSTNAME
+       #define ipconfigDHCP_REGISTER_HOSTNAME 0
+#endif
+
+#ifndef ipconfigSOCKET_HAS_USER_SEMAPHORE
+       #define ipconfigSOCKET_HAS_USER_SEMAPHORE 0
+#endif
+
+#ifndef ipconfigSOCKET_HAS_USER_WAKE_CALLBACK
+       #define ipconfigSOCKET_HAS_USER_WAKE_CALLBACK 0
+#endif
+
+#ifndef ipconfigSUPPORT_SELECT_FUNCTION
+       #define ipconfigSUPPORT_SELECT_FUNCTION 0
+#endif
+
+#ifndef ipconfigTCP_KEEP_ALIVE
+       #define ipconfigTCP_KEEP_ALIVE 0
+#endif
+
+#ifndef ipconfigDNS_USE_CALLBACKS
+       #define ipconfigDNS_USE_CALLBACKS 0
+#endif
+
+#ifndef ipconfigSUPPORT_SIGNALS
+       #define ipconfigSUPPORT_SIGNALS                         0
+#endif
+
+#ifndef ipconfigUSE_NBNS
+       #define ipconfigUSE_NBNS 0
+#endif
+
+/* As an attack surface reduction for ports that listen for inbound 
+connections, hang protection can help reduce the impact of SYN floods. */
+#ifndef ipconfigTCP_HANG_PROTECTION
+       #define ipconfigTCP_HANG_PROTECTION  1
+#endif
+
+/* Non-activity timeout is expressed in seconds. */
+#ifndef ipconfigTCP_HANG_PROTECTION_TIME
+       #define ipconfigTCP_HANG_PROTECTION_TIME 30
+#endif
+
+#ifndef ipconfigTCP_IP_SANITY
+       #define ipconfigTCP_IP_SANITY 0
+#endif
+
+#ifndef ipconfigARP_STORES_REMOTE_ADDRESSES
+       #define ipconfigARP_STORES_REMOTE_ADDRESSES 0
+#endif
+
+#ifndef ipconfigBUFFER_PADDING
+       /* Expert option: define a value for 'ipBUFFER_PADDING'.
+       When 'ipconfigBUFFER_PADDING' equals 0,
+       'ipBUFFER_PADDING' will get a default value of 8 + 2 bytes. */
+       #define ipconfigBUFFER_PADDING 0
+#endif
+
+#ifndef ipconfigPACKET_FILLER_SIZE
+       #define ipconfigPACKET_FILLER_SIZE 2
+#endif
+
+#endif /* FREERTOS_DEFAULT_IP_CONFIG_H */