diff --git a/.github/workflows/release-candidate.yml b/.github/workflows/release-candidate.yml new file mode 100644 index 000000000..832491ce5 --- /dev/null +++ b/.github/workflows/release-candidate.yml @@ -0,0 +1,35 @@ +name: Release Candidate Automation + +on: + workflow_dispatch: + inputs: + commit_id: + description: 'Commit ID to tag' + required: true + version_number: + description: 'Release Version Number (Eg, v1.0.0-rc1)' + required: true + +jobs: + tag-commit: + name: Tag commit + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v2 + with: + ref: ${{ github.event.inputs.commit_id }} + - name: Configure git identity + run: | + git config --global user.name ${{ github.actor }} + git config --global user.email ${{ github.actor }}@users.noreply.github.com + - name: Tag Commit and Push to Remote + run: | + git tag ${{ github.event.inputs.version_number }} -a -m "FreeRTOS-Plus-TCP Library ${{ github.event.inputs.version_number }}" + git push origin --tags + - name: Verify tag on remote + run: | + git tag -d ${{ github.event.inputs.version_number }} + git remote update + git checkout tags/${{ github.event.inputs.version_number }} + git diff ${{ github.event.inputs.commit_id }} tags/${{ github.event.inputs.version_number }} diff --git a/GettingStarted_4.0.0-rc3.md b/GettingStarted_4.0.0-rc3.md index 9813ecc01..f8f7b5e12 100644 --- a/GettingStarted_4.0.0-rc3.md +++ b/GettingStarted_4.0.0-rc3.md @@ -1,7 +1,7 @@ Moving to 4.0.0-rc1/rc2/rc3 from 3.x.x: -------------------------------- -Version 4.0.0-rc1/rc2/rc3 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/dev/IPv6_integration/History.txt) . +Version 4.0.0-rc1/rc2/rc3 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) . Some of the APIs have changed which is illustrated in the section below. However, there is a backward compatibility mode provided as well. @@ -67,9 +67,9 @@ Change 7: Running Demos: ------------- -The demos can be found at: https://github.com/FreeRTOS/FreeRTOS/tree/devIPv6/FreeRTOS-Plus/Demo +The demos can be found on [this page](https://github.com/FreeRTOS/FreeRTOS/tree/main/FreeRTOS-Plus/Demo). In 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”. This flag is by default set to zero. -New IPv6 WinSim Demo: https://github.com/FreeRTOS/FreeRTOS/tree/devIPv6/FreeRTOS-Plus/Demo/FreeRTOS_Plus_TCP_IPv6_Demo/IPv6_Multi_WinSim_demo +New 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). diff --git a/History.txt b/History.txt index 14e4077d7..1ca710363 100644 --- a/History.txt +++ b/History.txt @@ -1,4 +1,4 @@ -Changes between dev/ipv6_integration branch 4.0.0-RC3 and 4.0.0-RC2 releases: +Changes between 4.0.0-RC3 and 4.0.0-RC2 releases: + Added memory safety proofs for IPv6 using[ CBMC automated reasoning tool ] ( https:/*www.cprover.org/cbmc/) + Introduced build separation feature to achieve low memory footprint. Supported build combinations: 1. IPv4 + UDP @@ -8,13 +8,13 @@ Changes between dev/ipv6_integration branch 4.0.0-RC3 and 4.0.0-RC2 releases: 5. IPv4 + IPv6 + UDP 6. IPv4 + IPv6 + UDP + TCP -Changes between dev/ipv6_integration branch 4.0.0-RC2 and 4.0.0-RC1 releases: +Changes between 4.0.0-RC2 and 4.0.0-RC1 releases: + Added changes to fix IPv6 issues observed by Maxwell protocol tester. -Changes between dev/ipv6_integration branch RC1 and main branch V3.0.0 releases: +Changes between RC1 and V3.0.0 releases: + Unified code for IPv4 and IPv6 + Multiple Interface/Endpoint support - ((Reference: https://www.freertos.org/FreeRTOS-Plus/FreeRTOS_Plus_TCP/freertostcp-multiple-interfaces.html). + (Reference: https://www.freertos.org/FreeRTOS-Plus/FreeRTOS_Plus_TCP/freertostcp-multiple-interfaces.html). + New WinSim demo to support both IPv4 and IPv6. **Note**- This release does not support ESP32/ M487/ mw300_rd ports yet. This will be released soon. diff --git a/README.md b/README.md index 79619f41f..ef61177be 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ -## NOTE - Work In Progress +## Introduction This branch contains unified IPv4 and IPv6 functionalities. -Refer to the Getting started Guide (found [here](https://github.com/FreeRTOS/FreeRTOS-Plus-TCP/blob/dev/IPv6_integration/GettingStarted_4.0.0-rc3.md)) for more details. +Refer to the Getting started Guide (found [here](https://github.com/FreeRTOS/FreeRTOS-Plus-TCP/blob/main/GettingStarted_4.0.0-rc3.md)) for more details. ## FreeRTOS-Plus-TCP Library FreeRTOS-Plus-TCP is a lightweight TCP/IP stack for FreeRTOS. It provides a familiar Berkeley sockets interface, making it as simple to use and learn as possible. FreeRTOS-Plus-TCP's features and RAM footprint are fully scalable, making FreeRTOS-Plus-TCP equally applicable to smaller lower throughput microcontrollers as well as larger higher throughput microprocessors. @@ -9,8 +9,8 @@ FreeRTOS-Plus-TCP is a lightweight TCP/IP stack for FreeRTOS. It provides a fami This library has undergone static code analysis and checks for compliance with the [MISRA coding standard](https://www.misra.org.uk/). Any deviations from the MISRA C:2012 guidelines are documented under [MISRA Deviations](https://github.com/FreeRTOS/FreeRTOS-Plus-TCP/blob/main/MISRA.md). The library is validated for memory safety and data structure invariance through the [CBMC automated reasoning tool](https://www.cprover.org/cbmc/) for the functions that parse data originating from the network. The library is also protocol tested using Maxwell protocol tester for both IPv4 and IPv6. ## Getting started -The easiest way to use the 4.0.0-rc3 version of FreeRTOS-Plus-TCP is to refer to to the Getting started Guide (found [here](https://github.com/FreeRTOS/FreeRTOS-Plus-TCP/blob/dev/IPv6_integration/GettingStarted_4.0.0-rc3.md)) -Another way is to start with the pre-configured demo application project (found in [this directory](https://github.com/FreeRTOS/FreeRTOS/tree/devIPv6/FreeRTOS-Plus/Demo/FreeRTOS_Plus_TCP_Minimal_Windows_Simulator)). That way you will have the correct FreeRTOS source files included, and the correct include paths configured. Once a demo application is building and executing you can remove the demo application files, and start to add in your own application source files. See the [FreeRTOS Kernel Quick Start Guide](https://www.freertos.org/FreeRTOS-quick-start-guide.html) for detailed instructions and other useful links. +The easiest way to use the 4.0.0-rc3 version of FreeRTOS-Plus-TCP is to refer to to the Getting started Guide (found [here](https://github.com/FreeRTOS/FreeRTOS-Plus-TCP/blob/main/GettingStarted_4.0.0-rc3.md)) +Another way is to start with the pre-configured demo application project (found in [this directory](https://github.com/FreeRTOS/FreeRTOS/tree/main/FreeRTOS-Plus/Demo/FreeRTOS_Plus_TCP_Minimal_Windows_Simulator)). That way you will have the correct FreeRTOS source files included, and the correct include paths configured. Once a demo application is building and executing you can remove the demo application files, and start to add in your own application source files. See the [FreeRTOS Kernel Quick Start Guide](https://www.freertos.org/FreeRTOS-quick-start-guide.html) for detailed instructions and other useful links. Additionally, for FreeRTOS-Plus-TCP source code organization refer to the [Documentation](http://www.FreeRTOS.org/FreeRTOS-Plus/FreeRTOS_Plus_TCP/TCP_Networking_Tutorial.html), and [API Reference](https://freertos.org/FreeRTOS-Plus/FreeRTOS_Plus_TCP/FreeRTOS_TCP_API_Functions.html). diff --git a/source/FreeRTOS_UDP_IP.c b/source/FreeRTOS_UDP_IP.c index de97fe244..c659b745b 100644 --- a/source/FreeRTOS_UDP_IP.c +++ b/source/FreeRTOS_UDP_IP.c @@ -90,7 +90,7 @@ UDPPacketHeader_t xDefaultPartUDPPacketHeader = * @brief Process the generated UDP packet and do other checks before sending the * packet such as ARP cache check and address resolution. * - * @param[in] pxNetworkBuffer: The network buffer carrying the packet. + * @param[in] pxNetworkBuffer The network buffer carrying the packet. */ void vProcessGeneratedUDPPacket( NetworkBufferDescriptor_t * const pxNetworkBuffer ) { @@ -128,9 +128,9 @@ void vProcessGeneratedUDPPacket( NetworkBufferDescriptor_t * const pxNetworkBuff /** * @brief Process the received UDP packet. * - * @param[in] pxNetworkBuffer: The network buffer carrying the UDP packet. - * @param[in] usPort: The port number on which this packet was received. - * @param[out] pxIsWaitingForARPResolution: If the packet is awaiting ARP resolution, + * @param[in] pxNetworkBuffer The network buffer carrying the UDP packet. + * @param[in] usPort The port number on which this packet was received. + * @param[out] pxIsWaitingForARPResolution If the packet is awaiting ARP resolution, * this pointer will be set to pdTRUE. pdFALSE otherwise. * * @return pdPASS in case the UDP packet could be processed. Else pdFAIL is returned. diff --git a/test/build-combination/Common/main.c b/test/build-combination/Common/main.c index 97e2c4650..bf4217333 100644 --- a/test/build-combination/Common/main.c +++ b/test/build-combination/Common/main.c @@ -213,6 +213,17 @@ void vApplicationIdleHook( void ) /*-----------------------------------------------------------*/ +void vLoggingPrintf( const char * pcFormat, + ... ) +{ + va_list arg; + + va_start( arg, pcFormat ); + vprintf( pcFormat, arg ); + va_end( arg ); +} +/*-----------------------------------------------------------*/ + void getUserCmd( char * pucUserCmd ) { /* Provide a stub for this function. */