Skip to content

Releases: FreeRTOS/FreeRTOS-Plus-TCP

V4.3.1

16 Dec 17:37
Compare
Choose a tag to compare

Changes between FreeRTOS-plus-TCP V4.3.1 and V4.3.0 released December 16, 2024:

  • Update README.md with information related to migrating to V4.3.0 and above
    for users utilising the STM32 network interface.

V4.3.0

11 Dec 04:19
Compare
Choose a tag to compare

Changes between FreeRTOS-plus-TCP V4.3.0 and V4.2.2 released December 10, 2024:

  • Fix TCP RX sequence number when handling refusal of FIN packets.
  • Fix unicast packets being sent over inactive endpoints. We thank
    @AlfaSegato for their contribution.
  • Fix the initialization of the DNS callback list every time there is a
    Network-UP event. We thank @evpopov for their contribution.
  • Full ARP/ND build level separation.
    We thank @HTRamsey for their contribution.
  • Update the eARPGetCacheEntry to handle loopback addresses correctly
    and assign the loopback endpoint's MAC address as the lookup MAC address.
    We thank @htibosch for their contribution.
  • Replace the costly vTaskSuspendAll/xTaskResumeAll locking
    mechanism with the more efficient taskENTER_CRITICAL/taskEXIT_CRITICAL
    pair in frequenly used uxStreamBufferAdd().
    We thank @lzungri for their contribution.
  • Improve frame filtering by expanding the checks in
    eConsiderFrameForProcessing to drop invalid frames earlier.
    We thank @HTRamsey for their contribution.
  • Fix reception of multicast custom Ethernet frames, where custom multicast
    frames were filtered out. We thank @evpopov for their contribution.
  • Update the Zynq Ultrascale port to support the V4.x.x version of
    FreeRTOS+TCP. We thank @StefanBalt and @pete-pjb for their contribution.
  • New unified STM32 network interface for STM32 F4/F7/H5/H7.
    We thank @HTRamsey for their contribution.
  • Fix ATSAME5x network interface related to incorrect detection of ICMP.
    We thank @cruxic for their contribution.
  • Update Renesas portable layer for backward compatibility.
    We thank @xuan97z1 for their contribution.
  • Replace any missing functions by assert-false in all CBMC proofs to
    improve tests. We thank @tautschnig for their contribution.
  • Add ipconfigEMAC_TASK_HOOK macro to allow for a configurable
    watchdog timer for STMH7xx MCUs. We thank @kzorer for their contribution.
  • Improve CMake to allow usage of FetchContent in external projects.
    We thank @nicovanduijn for their contribution.
  • Add warning logs if the TCP stream buffer or window properties
    are changed. We thank @evpopov for their contribution.
  • Remove unused ipconfigHAS_ROUTING_STATISTICS macro.
    We thank @HTRamsey for their contribution.
  • Fix MISRA 2012 violations with the latest version of
    MISRA evalution tools.
  • Adjust CBMC proof tooling to support CBMC v6.
    We thank @tautschnig for their contribution.

V4.2.2

12 Jul 05:43
Compare
Choose a tag to compare

Changes between FreeRTOS-plus-TCP V4.2.2 and V4.2.1 released July 12, 2024:

  • Update version information in public header file

V4.2.1

27 Jun 10:52
Compare
Choose a tag to compare

Changes between FreeRTOS-plus-TCP V4.2.1 and V4.2.0 released June 27, 2024:

  • Update version information in source files.

V4.2.0

24 Jun 11:47
Compare
Choose a tag to compare

Changes between FreeRTOS-plus-TCP V4.2.0 and V4.1.0 released June 24, 2024:

  • It was possible for a carefully crafted DNS response with domain name
    length value greater than the actual domain name length, to cause a buffer
    over-read within the DNS Response Parser. This issue affects applications
    using DNS functionality of the FreeRTOS-Plus-TCP stack.
    Applications that do not use DNS functionality are not affected,
    even when the DNS functionality is enabled.
    This issue has been fixed by modifying the code to ensure that the DNS
    Response Parser never attempts to read beyond the DNS
    response buffer boundary.
    We would like to thank Paschal Amusuo, James C. Davis, and
    Aravind Machiry of Purdue University, for reporting this issue.
  • Fixed possible freed memory being reused while creating TCP sockets.
    We thank @htibosch for their contribution.
  • Fixed possible NULL pointer dereference in TCP transmission.
    We thank @anordal for their contribution.
  • Added network interface port for ARM Corstone-315 (MPS4_CS315).
    We thank @david-hazi-arm for their contribution.
  • Fixed MISRA C 2012 issues in the code
  • Replaced the usage strcpy with strncpy
  • Improved memory allocation failure handling in vDNSSetCallBack by
    propagating error signal back. We thank @hlef for reporting this issue.
  • Improved memory allocation failure handling in prvCreateSectors by
    propagating error signal back. We thank @hlef for reporting this issue.
  • Enabled build on CI with sanitizers, fixed all AddressSanitizer
    and UB-Sanitizer errors. We thank @anordal for their contribution.
  • Fixed mDNS lookups while parsing the mDNS answers.
    We thank @htibosch for their contribution.
  • Fixed DNS name resolution responses when the device IP address
    is 0.0.0.0. We thank @evpopov for their contribution.
  • Avoided FreeRTOS-Plus-TCP forcing to use the compilation options
    set in the library CMake project in user projects.
    We thank @apcountryman for their contribution.
  • Enabled user control of compiler analysis for non ISO statements.
    We thank @thirtytwobits for their contribution
  • Fixed use of removed macro in ATSAME5x network interface.
    We thank @apcountryman for their contribution.
  • Fixed inconsistent use of ipconfigCOMPATIBLE_WITH_SINGLE
    & ipconfigIPv4_BACKWARD_COMPATIBLE
  • Resolved Unit Test Build Warnings
  • Added network interface functions for multicast MAC address filtering.
    We thank @evpopov for their contribution.
  • Fixed missing ipconfigUSE_DNS_CACHE check in FreeRTOS_DNS.c.
  • Avoided compiler warnings about the printf formats in IPv6 modules.
    We thank @htibosch for their contribution.
  • Removed deprecated macro ipconfigMULTI_INTERFACE.
    We thank @HTRamsey for their contribution.
  • Removed unused function xProcessedTCPMessage.
    We thank @HTRamsey for their contribution.
  • Removed deprecated macros ipLOCAL_MAC_ADDRESS and
    ipLOCAL_IP_ADDRESS_POINTER. We thank @HTRamsey for their contribution.
  • Fixed eARPGetCacheEntryGateWay to properly report when no valid gateway is found
    for a packet that needs to be sent outside the local network.
    We thank @evpopov for their contribution.
  • Combined duplicated IPv4/IPv6 TCP code.
    We thank @HTRamsey for their contribution.
  • Improved validation of configuration macros in the default
    IP config using static compile time checks.
    We thank @HTRamsey for their contribution.
  • Repaired ARP unit tests which were accessing packet memory
    outside of allocated bounds.
  • Moved CMake compile options to test builds to avoid build issues in
    user projects that might be not be supporting compiler options used
    in the original Cmake. We thank @apcountryman for their contribution.
  • Cleaned up CMake by adding: additional unit tests, incorporating missing
    network interface support, removing unused "config files" that are no longer
    required, and fixing file name issues in the unit testing framework.
    We thank @HTRamsey for their contribution.

V4.1.1

13 Jun 08:42
Compare
Choose a tag to compare

Changes between FreeRTOS-plus-TCP V4.1.1 and V4.1.0 released June 13, 2024:

It was possible for a carefully crafted DNS response with domain name length value greater than the actual domain name length, to cause a buffer over-read within the DNS Response Parser. This issue affects applications using DNS functionality of the FreeRTOS-Plus-TCP stack. Applications that do not use DNS functionality are not affected, even when the DNS functionality is enabled.

This issue has been fixed by modifying the code to ensure that the DNS Response Parser never attempts to read beyond the DNS response buffer boundary.

We would like to thank Paschal Amusuo, James C. Davis, and Aravind Machiry of Purdue University, for reporting this issue.

V4.1.0

08 Mar 07:12
Compare
Choose a tag to compare

Changes between FreeRTOS-plus-TCP V4.1.0 and V4.0.0 released March 8, 2024:

  • Add new Network Interface for Corstone-300 FVP (MPS3_AN552).
    We thank @urutva for their contribution.
  • Add new loopback Network Interface.
    We thank @htibosch for their contribution.
  • Add FreeRTOS_get_tx_base() API to return the TCP Tx stream buffer pointer.
    We thank @htibosch for their contribution.
  • Add FreeRTOS_InterfaceEPInSameSubnet_IPv6 API to find an IPv6 endpoint on
    the given interface that is in the same subnet as the given IP address.
  • Add checks to prevent potential integer overflow in the buffer
    allocation APIs.
  • Improve performance by removing redundant critical sections.
    We thank @htibosch for their contribution.
  • Improve performance on 64-bit targets by correctly setting
    ipBUFFER_PADDING to satisfy the architecture’s alignment requirements.
    We thank @htibosch for their contribution.
  • Improve FreeRTOS_send() API performance by not iterating more times than
    necessary when trying to send data.
    We thank @htibosch for their contribution.
  • Update the Neighbour Discovery cache behavior to overwrite the oldest
    entry when the cache is full. We thank @evpopov for their contribution.
  • Update the FreeRTOS_get_tx_head() API to create the TCP Tx stream buffer
    if it wasn't already created for the given socket.
  • FreeRTOS_GetIPType is now always available, regardless of the value of
    ipconfigUSE_TCP. We thank @HTRamsey for their contribution.
  • Improve tracing support by adding more trace macros.
    We thank @HTRamsey for their contribution.
  • Add support for multiple endpoints in STM32Hxx Network Interface.
    Earlier it was capable of handling upto 3 endpoints only.
  • Fix potential NULL pointer dereference when a packet from a subnet other
    than the endpoint's subnet is received on an endpoint that has no gateway
    configured. We thank @htibosch for their contribution.
  • Fix TCP zero-copy functionality by removing incorrect NULL check for
    pvBuffer parameter in the FreeRTOS_Send API.
    We thank @evpopov for their contribution.
  • Fix the network buffer leak in the Neighbour Discovery (ND) code.
    We thank @htibosch for their contribution.
  • ARP requests are now sent only on the endpoint with IP address in the same
    subnet as the ARP request’s target address. Earlier ARP requests were sent
    over all the available endpoints.
    We thank @evpopov for their contribution.
  • Neighbor Solicitation (NS) responses are now correctly sent on the same
    endpoint on which the Neighbor Solicitation request is received.
    Earlier, it could be sent out on a wrong interface when multiple IPv6
    Link Local endpoints were present on different interfaces.
    We thank @evpopov for their contribution.
  • Responses to mDNS/LLMNR/NBNS requests are now sent on the the same
    endpoint on which the request was received. Earlier, it could be sent out
    on a wrong endpoint. We thank @evpopov for their contribution.
  • Fix size calculation in the neighbor solicitation handling code to avoid a
    buffer reallocation always. We thank @evpopov for their contribution.
  • Fix FreeRTOS_getaddrinfo_a API to use the address family supplied in
    xHints parameter instead of always using IPv6.
    We thank @evpopov for their contribution.
  • Fix IPv4 incoming packet filtering logic to correctly filter out unicast
    packets not destined to the device, when
    ipconfigETHERNET_DRIVER_FILTERS_FRAME_TYPES is enabled.
    We thank @evpopov for their contribution.
  • Improve error handling in STM32H7xx Network Interface.
    We thank @htibosch for their contribution.
  • Update the IPv4 packet filtering logic to correctly discard bad loopback
    packets originating outside of the network.
  • Ensure that the hostname string in DNS resolution code is NULL terminated,
    even when the destination buffer is not large enough to hold the complete
    string. We thank @bjsowa for their contribution.
  • Fix the network down and up process to correctly restart DHCP/RA timers.
    We thank @bjsowa for their contribution.
  • Fix SAME70 Network Interface to correctly release Tx semaphore when the
    network interface fails to transmit.
    We thank @evpopov for their contribution.
  • Update NXP1060 Network Interface to handle network cable disconnection.
    We thank @microcris for their contribution.
  • Update the alignment specifier in TM4C Network Interface to make it
    compatible with both CCS and GCC compilers.
    We thank @jonathangjertsen for their contribution.
  • Fix minimum length check for ICMP/ping packets.
    We thank @htibosch for their contribution.
  • Fix received packet length calculation in the SAM Network Interface.
    We thank @htibosch for their contribution.
  • Remove obsolete structs xNetworkAddressing and xDefaultAddressing.
    We thank @evpopov for their contribution.
  • Fix compilation with Clang 17 and updated log output.
    We thank @Mixaill for their contribution.
  • Fix compiler warnings with the -Wpedantic option.
    We thank @Mixaill for their contribution.
  • Fix compiler warnings in the SAM Network Interface.
    We thank @Peter-Herrmann for their contribution.
  • Streamline the usage of const in stream buffer APIs.
    We thank @HTRamsey for their contribution.
  • Debug logs, printed using FreeRTOS_debug_printf, are now correctly
    guarded using the macro ipconfigHAS_DEBUG_PRINTF.
    We thank @microcris for their contribution.
  • Add the LIBSLIRP Network Interface to be available in the CMakelists
    Network Interface selection. We thank @bjsowa for their contribution.
  • Move static assert definition to a common header file to make it available
    to all the source files. Also, remove redundant macro check definitions.
    We thank @HTRamsey for their contribution.
  • Remove the xCheckLoopback function. It is no longer needed as we now
    have a loopback interface. We thank @htibosch for their contribution.

V4.0.0

14 Aug 07:00
Compare
Choose a tag to compare

Changes between FreeRTOS-plus-TCP V4.0.0 released on August 14, 2023 and V3.1.0 :

  • Unified code for both IPv4 and IPv6 protocols.
  • Multiple Interface and Multiple Endpoint support
    1. The stack supports multiple Physical Interfaces.
    2. The stack also supports multiple endpoints (or Virtual interfaces) on the same physical interface.
  • New WinSim demo to support IPv4, IPv6 and multi-interface together.
  • Build separation feature introduced to achieve low memory footprint. Supported build combinations:
    1. IPv4 + UDP
    2. IPv4 + UDP + TCP
    3. IPv6 + UDP
    4. IPv6 + UDP + TCP
    5. IPv4 + IPv6 + UDP
    6. IPv4 + IPv6 + UDP + TCP
  • Support added in FreeRTOS-plus-TCP git repository CI tool to validate various build configurations before PR merge.
  • Achieved 100% unit test coverage for both IPv4 and IPv6.
  • MISRA c-2012 compliance for both IPv4 and IPv6.
  • Addressed several issues observed by Maxwell Protocol tester.
  • Memory safety proofs for IPv6 code using CBMC automated reasoning tool.
  • Stack is Penetration tested and a memory leak issue has been identified and fixed in the process.
    (Reference: #973)
  • Improved Documentation:
    1. Multi-interface and Multi-endpoint documentation.
    2. Updated stack initialization documentation to support multi-interface and endpoint.
    3. Code size details for various build configurations
    4. Documentation added for IPv6 protocol support.
    5. Documentation added for various IPv6 functionalities like DHCPv6, ND (Neighbour Discovery), RA (Router Advertisement).
    6. README added for the network ports.

We thank the following people for their inputs in these enhancements:

  • Add mDNS fixes for IPv6. Contributed by @evpopov.
  • IP offset calculation improvement. Contributed by @evpopov.
  • CCS compiler fix for packed structs. Contributed by @rahul-arasikere.
  • Add tasking compiler support. Contributed by @go2sh.
  • Add NetworkDown notification support to STM32FXX. Contributed by @zipperowiec.
  • CMake changes. Contributed by @phelter.
  • STM32Hxx porting fixes. Contributed by @miguelfreitas.
  • Allow use of loopback addresses. Contributed by @adam-stamand.
  • CBMC proof-running GitHub Action. Contributed by @karkhaz.
  • CBMC XML output to enable VSCode debugger. Contributed by @karkhaz.
  • vTaskDelay for sleep in the network-interface of xilinx_ultrascale.Contributed by @ChristosZosi.
  • Read mac address using FreeRTOS_GetMACAddress(). Contributed by @sayyadumar.
  • Minor warning fixes. Contributed by @ChristosZosi.
  • Network-interface fix for Xilinx UltraScale port. Contributed by @ChristosZosi.

V3.1.0

13 Oct 17:45
Compare
Choose a tag to compare

Release V3.1.0 of the FreeRTOS-Plus-TCP Library.

Changes between V3.0.0 and V3.1.0 releases:

  • Fixed a bug in the Connect function where multiple SYN and RST packet combinations can
    lead to orphaned sockets.
  • Added network interface support for NetifSlirp.

V3.0.0

09 Aug 20:45
Compare
Choose a tag to compare

Changes between V3.0.0 and V2.4.0 releases:
+ Split the source files according to the function the code performs.
This makes the code modular and allows full unit-test coverage.
+ Improved RFC compliance.
+ Improved MISRA compliance.

Helpful links to help you upgrade to V3.0.0
+ https://github.com/FreeRTOS/FreeRTOS-plus-tcp#generating-pre-v300-folder-structure-for-backward-compatibility
+ https://www.freertos.org/2022/08/the-freertos-plus-tcp-library-is-now-more-robust-and-secure.html