1Moving to 4.0.0 from 3.x.x: 2-------------------------------- 3 4Version 4.0.0 adds new files to support IPv6 functionality, breaking each file into logically separated IPv4 and IPv6 files. The folder structure of FreeRTOS-Plus-TCP remains unchanged. Build separation is added to make the library modular, enabling users to compile and create a low-footprint binary with only the required functionalities. For more details on supported build combinations, see [History.txt](https://github.com/FreeRTOS/FreeRTOS-Plus-TCP/blob/main/History.txt) . 5 6Some of the APIs have changed which is illustrated in the section below. However, there is a backward compatibility mode provided as well. 7 8Backward Compatibility Mode: 9--------------------------- 10 If you are moving your code from V3.x.x to V4.0.0, then set the "ipconfigIPv4_BACKWARD_COMPATIBLE" macro to 1 in “FreeRTOSIPConfigDefaults.h” to run the code in backward compatible mode. 11 The "Existing API's" defined in all the API changes below work only when the backward compatibility mode is enabled. 12 13API changes in 4.0.0: 14---------------------- 15 16The changes mentioned below uses ipconfigIPv4_BACKWARD_COMPATIBLE flag to differentiate between old API and new API. 17 18Change 1: 19 20 - Existing API: FreeRTOS_IPInit 21 - Backward compatibility with the IPv4 FreeRTOS+TCP V3.x.x which only supports single network interface. This can be used for single interface IPv4 systems. 22 - New API: FreeRTOS_IPInit_Multi 23 - Supports multiple interfaces. Before calling this function, at least 1 interface and 1 end-point must have been set-up. FreeRTOS_IPInit_Multi() replaces the earlier FreeRTOS_IPInit(). 24 25Change 2: 26 27 - Existing API: FreeRTOS_GetAddressConfiguration/FreeRTOS_SetAddressConfiguration 28 - Get/Set the address configuration from the global variables initialised during FreeRTOS_IPInit 29 - New API: FreeRTOS_GetEndPointConfiguration/FreeRTOS_SetEndPointConfiguration 30 - Get/Set the same address configuration from/to the end point 31 32Change 3: 33 34 - Existing API: FreeRTOS_GetUDPPayloadBuffer 35 - Backward compatibility with the IPv4 FreeRTOS+TCP V3.x.x. This can still be used for IPv4 use cases. 36 - New API:FreeRTOS_GetUDPPayloadBuffer_Multi 37 - A new argument (uint8_t ucIPType) to specify IP type to support both IPv4 and IPv6 38 39Change 4: 40 41 - Existing API: pxFillInterfaceDescriptor 42 - It is there for backward compatibility. The function FreeRTOS_IPInit() will call it to initialise the interface and end-point objects 43 - New API: prefix_pxFillInterfaceDescriptor 44 - where prefix = Network Interface Name 45 - E.g pxWinPcap_FillInterfaceDescriptor 46 - New function with the same functionality 47 48Change 5: 49 50 - Existing API: vApplicationIPNetworkEventHook 51 - New API: vApplicationIPNetworkEventHook_Multi 52 - New argument “struct xNetworkInterface * pxNetworkInterface” added. 53 54Change 6: 55 56 - Existing API: xApplicationDHCPHook 57 - New API: xApplicationDHCPHook_Multi 58 - New argument "struct xNetworkEndPoint * pxEndPoint" added. 59 60Change 7: 61 62 - Existing API: xApplicationDNSQueryHook 63 - New API: xApplicationDNSQueryHook_Multi 64 - New argument "struct xNetworkEndPoint * pxEndPoint" added. 65 66**NOTE** : We are NOT considering the APIs changes in FreeRTOS_IP_Private.h for backward compatibility as those are not part of published interface. 67 68Running Demos: 69------------- 70The demos can be found on [this page](https://github.com/FreeRTOS/FreeRTOS/tree/main/FreeRTOS-Plus/Demo). 71 72In all the demos, there is a backward compatibility mode which can be enabled by setting the flag “ipconfigIPv4_BACKWARD_COMPATIBLE” to 1 in the header file “FreeRTOSIPConfigDefaults.h”. 73This flag is by default set to zero. 74 75New IPv6 WinSim Demo can be found on [this page](https://github.com/FreeRTOS/FreeRTOS/tree/main/FreeRTOS-Plus/Demo/FreeRTOS_Plus_TCP_IPv6_Demo/IPv6_Multi_WinSim_demo). 76