Skip to content

Commit 3436954

Browse files
Update IPv4 packet filtering to let packets destined to endpoint's MAC address when endpoint is not yet up (#1232)
* Fix IP task packet filterting to use ipv4_settings only after the endpoint is up * Fix unit tests and add coverage * Fix CI check
1 parent 1e32b23 commit 3436954

File tree

6 files changed

+169
-37
lines changed

6 files changed

+169
-37
lines changed

source/FreeRTOS_IPv4.c

Lines changed: 64 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -378,35 +378,6 @@ enum eFrameProcessingResult prvAllowIPPacketIPv4( const struct xIP_PACKET * cons
378378
eReturn = eReleaseBuffer;
379379
}
380380
}
381-
else if(
382-
/* Not destined for the assigned endpoint IPv4 address? */
383-
( ulDestinationIPAddress != pxEndPoint->ipv4_settings.ulIPAddress ) &&
384-
/* Also not an IPv4 broadcast address ? */
385-
( ulDestinationIPAddress != pxEndPoint->ipv4_settings.ulBroadcastAddress ) &&
386-
( ulDestinationIPAddress != FREERTOS_INADDR_BROADCAST ) &&
387-
/* And not an IPv4 multicast address ? */
388-
( xIsIPv4Multicast( ulDestinationIPAddress ) == pdFALSE ) )
389-
{
390-
/* Packet is not for this node, release it */
391-
eReturn = eReleaseBuffer;
392-
}
393-
/* Is the source address correct? */
394-
else if( ( ulSourceIPAddress == pxEndPoint->ipv4_settings.ulBroadcastAddress ) ||
395-
( ulSourceIPAddress == FREERTOS_INADDR_BROADCAST ) )
396-
{
397-
/* The source address cannot be broadcast address. Replying to this
398-
* packet may cause network storms. Drop the packet. */
399-
eReturn = eReleaseBuffer;
400-
}
401-
else if( ( memcmp( xBroadcastMACAddress.ucBytes,
402-
pxIPPacket->xEthernetHeader.xDestinationAddress.ucBytes,
403-
sizeof( MACAddress_t ) ) == 0 ) &&
404-
( ulDestinationIPAddress != pxEndPoint->ipv4_settings.ulBroadcastAddress ) && ( ulDestinationIPAddress != FREERTOS_INADDR_BROADCAST ) )
405-
{
406-
/* Ethernet address is a broadcast address, but the IP address is not a
407-
* broadcast address. */
408-
eReturn = eReleaseBuffer;
409-
}
410381
else if( memcmp( xBroadcastMACAddress.ucBytes,
411382
pxIPPacket->xEthernetHeader.xSourceAddress.ucBytes,
412383
sizeof( MACAddress_t ) ) == 0 )
@@ -419,10 +390,72 @@ enum eFrameProcessingResult prvAllowIPPacketIPv4( const struct xIP_PACKET * cons
419390
/* Source is a multicast IP address. Drop the packet in conformity with RFC 1112 section 7.2. */
420391
eReturn = eReleaseBuffer;
421392
}
393+
394+
/* Use ipv4_settings for filtering only after the endpoint is up,
395+
* so that DHCP packets that are exchanged for DHCP (example, DHCP unicast offers)
396+
* are not dropped/filtered. */
397+
else if( FreeRTOS_IsEndPointUp( pxEndPoint ) != pdFALSE )
398+
{
399+
if(
400+
/* Not destined for the assigned endpoint IPv4 address? */
401+
( ulDestinationIPAddress != pxEndPoint->ipv4_settings.ulIPAddress ) &&
402+
/* Also not an IPv4 broadcast address ? */
403+
( ulDestinationIPAddress != pxEndPoint->ipv4_settings.ulBroadcastAddress ) &&
404+
( ulDestinationIPAddress != FREERTOS_INADDR_BROADCAST ) &&
405+
/* And not an IPv4 multicast address ? */
406+
( xIsIPv4Multicast( ulDestinationIPAddress ) == pdFALSE ) )
407+
{
408+
/* Packet is not for this node, release it */
409+
eReturn = eReleaseBuffer;
410+
}
411+
/* Is the source address correct? */
412+
else if( ( ulSourceIPAddress == pxEndPoint->ipv4_settings.ulBroadcastAddress ) ||
413+
( ulSourceIPAddress == FREERTOS_INADDR_BROADCAST ) )
414+
{
415+
/* The source address cannot be broadcast address. Replying to this
416+
* packet may cause network storms. Drop the packet. */
417+
eReturn = eReleaseBuffer;
418+
}
419+
else if( ( memcmp( xBroadcastMACAddress.ucBytes,
420+
pxIPPacket->xEthernetHeader.xDestinationAddress.ucBytes,
421+
sizeof( MACAddress_t ) ) == 0 ) &&
422+
( ulDestinationIPAddress != pxEndPoint->ipv4_settings.ulBroadcastAddress ) && ( ulDestinationIPAddress != FREERTOS_INADDR_BROADCAST ) )
423+
{
424+
/* Ethernet address is a broadcast address, but the IP address is not a
425+
* broadcast address. */
426+
eReturn = eReleaseBuffer;
427+
}
428+
else
429+
{
430+
/* Packet is not fragmented, destination is this device, source IP and MAC
431+
* addresses are correct. */
432+
}
433+
}
422434
else
423435
{
424-
/* Packet is not fragmented, destination is this device, source IP and MAC
425-
* addresses are correct. */
436+
/* Endpoint is down */
437+
438+
/* RFC 2131: https://datatracker.ietf.org/doc/html/rfc2131#autoid-8
439+
* The TCP/IP software SHOULD accept and
440+
* forward to the IP layer any IP packets delivered to the client's
441+
* hardware address before the IP address is configured; DHCP servers
442+
* and BOOTP relay agents may not be able to deliver DHCP messages to
443+
* clients that cannot accept hardware unicast datagrams before the
444+
* TCP/IP software is configured. */
445+
if( ( memcmp( pxEndPoint->xMACAddress.ucBytes,
446+
pxIPPacket->xEthernetHeader.xDestinationAddress.ucBytes,
447+
sizeof( MACAddress_t ) ) != 0 ) )
448+
{
449+
/* The endpoint is not up, and the destination MAC address of the
450+
* packet is not matching the endpoint's MAC address. Drop the
451+
* packet. */
452+
eReturn = eReleaseBuffer;
453+
}
454+
else
455+
{
456+
/* Endpoint is down, but the hardware address matches. Accept the
457+
* packet as per RFC 2131 */
458+
}
426459
}
427460
}
428461
#endif /* ipconfigETHERNET_DRIVER_FILTERS_PACKETS */

test/unit-test/FreeRTOS_IPv4/FreeRTOS_IPv4_utest.c

Lines changed: 96 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
#include "mock_event_groups.h"
4646

4747
#include "mock_FreeRTOS_IP.h"
48+
#include "mock_FreeRTOS_IP_Common.h"
4849
#include "mock_FreeRTOS_IP_Private.h"
4950
#include "mock_FreeRTOS_Routing.h"
5051

@@ -396,6 +397,8 @@ void test_prvAllowIPPacketIPv4_NotMatchingIP( void )
396397
pxIPHeader->ucVersionHeaderLength = 0x45;
397398
pxIPHeader->ulDestinationIPAddress = pxEndpoint->ipv4_settings.ulIPAddress + 1;
398399

400+
FreeRTOS_IsEndPointUp_ExpectAndReturn( &xEndpoint, pdTRUE );
401+
399402
eResult = prvAllowIPPacketIPv4( pxIPPacket, pxNetworkBuffer, uxHeaderLength );
400403

401404
TEST_ASSERT_EQUAL( eReleaseBuffer, eResult );
@@ -432,6 +435,8 @@ void test_prvAllowIPPacketIPv4_SourceIPBrdCast_DestIPMatch( void )
432435

433436
pxIPHeader->ulSourceIPAddress = 0xFFFFFFFF;
434437

438+
FreeRTOS_IsEndPointUp_ExpectAndReturn( &xEndpoint, pdTRUE );
439+
435440
eResult = prvAllowIPPacketIPv4( pxIPPacket, pxNetworkBuffer, uxHeaderLength );
436441

437442
TEST_ASSERT_EQUAL( eReleaseBuffer, eResult );
@@ -469,6 +474,7 @@ void test_prvAllowIPPacketIPv4_SourceIPBrdCast_DestIPBrdCast( void )
469474

470475
pxIPHeader->ulSourceIPAddress = 0xFFFFFFFF;
471476

477+
FreeRTOS_IsEndPointUp_ExpectAndReturn( &xEndpoint, pdTRUE );
472478

473479
eResult = prvAllowIPPacketIPv4( pxIPPacket, pxNetworkBuffer, uxHeaderLength );
474480

@@ -507,6 +513,7 @@ void test_prvAllowIPPacketIPv4_SourceIPBrdCast_DestIPLLMNR( void )
507513

508514
pxIPHeader->ulSourceIPAddress = 0xFFFFFFFF;
509515

516+
FreeRTOS_IsEndPointUp_ExpectAndReturn( &xEndpoint, pdTRUE );
510517

511518
eResult = prvAllowIPPacketIPv4( pxIPPacket, pxNetworkBuffer, uxHeaderLength );
512519

@@ -541,6 +548,7 @@ void test_prvAllowIPPacketIPv4_SourceIPBrdCast_NoLocalIP( void )
541548
pxIPHeader->ulDestinationIPAddress = 0;
542549

543550
pxIPHeader->ulSourceIPAddress = 0xFFFFFFFF;
551+
FreeRTOS_IsEndPointUp_ExpectAndReturn( &xEndpoint, pdTRUE );
544552

545553
eResult = prvAllowIPPacketIPv4( pxIPPacket, pxNetworkBuffer, uxHeaderLength );
546554

@@ -577,6 +585,87 @@ void test_prvAllowIPPacketIPv4_DestMACBrdCast_DestIPUnicast( void )
577585

578586
memcpy( pxIPPacket->xEthernetHeader.xDestinationAddress.ucBytes, xBroadcastMACAddress.ucBytes, sizeof( MACAddress_t ) );
579587

588+
FreeRTOS_IsEndPointUp_ExpectAndReturn( &xEndpoint, pdTRUE );
589+
590+
eResult = prvAllowIPPacketIPv4( pxIPPacket, pxNetworkBuffer, uxHeaderLength );
591+
592+
TEST_ASSERT_EQUAL( eReleaseBuffer, eResult );
593+
}
594+
595+
/**
596+
* @brief test_prvAllowIPPacketIPv4_EndpointDown_HappyPath
597+
* To validate if prvAllowIPPacketIPv4() returns eProcessBuffer when
598+
* endpoint is down but the destination MAC address matches the MAC address of
599+
* the endpoint.
600+
*/
601+
void test_prvAllowIPPacketIPv4_EndpointDown_HappyPath( void )
602+
{
603+
eFrameProcessingResult_t eResult;
604+
IPPacket_t * pxIPPacket;
605+
NetworkBufferDescriptor_t * pxNetworkBuffer, xNetworkBuffer;
606+
UBaseType_t uxHeaderLength = 0;
607+
uint8_t ucEthBuffer[ ipconfigTCP_MSS ];
608+
IPHeader_t * pxIPHeader;
609+
NetworkEndPoint_t xEndpoint;
610+
611+
memset( ucEthBuffer, 0, ipconfigTCP_MSS );
612+
613+
pxNetworkBuffer = &xNetworkBuffer;
614+
pxNetworkBuffer->pucEthernetBuffer = ucEthBuffer;
615+
pxNetworkBuffer->pxEndPoint = &xEndpoint;
616+
pxIPPacket = ( IPPacket_t * ) pxNetworkBuffer->pucEthernetBuffer;
617+
pxIPHeader = &( pxIPPacket->xIPHeader );
618+
619+
pxIPHeader->ucVersionHeaderLength = 0x45;
620+
621+
pxIPHeader->ulDestinationIPAddress = 0x00;
622+
623+
memcpy( pxIPPacket->xEthernetHeader.xDestinationAddress.ucBytes, xEndpoint.xMACAddress.ucBytes, sizeof( MACAddress_t ) );
624+
625+
FreeRTOS_IsEndPointUp_ExpectAndReturn( &xEndpoint, pdFALSE );
626+
FreeRTOS_FindEndPointOnMAC_ExpectAnyArgsAndReturn( NULL );
627+
628+
usGenerateChecksum_ExpectAndReturn( 0U, ( uint8_t * ) &( pxIPHeader->ucVersionHeaderLength ), ( size_t ) uxHeaderLength, ipCORRECT_CRC );
629+
630+
usGenerateProtocolChecksum_ExpectAndReturn( ( uint8_t * ) ( pxNetworkBuffer->pucEthernetBuffer ), pxNetworkBuffer->xDataLength, pdFALSE, ipCORRECT_CRC );
631+
632+
eResult = prvAllowIPPacketIPv4( pxIPPacket, pxNetworkBuffer, uxHeaderLength );
633+
634+
TEST_ASSERT_EQUAL( eProcessBuffer, eResult );
635+
}
636+
637+
/**
638+
* @brief test_prvAllowIPPacketIPv4_EndpointDown_HappyPath
639+
* To validate if prvAllowIPPacketIPv4() returns eReleaseBuffer when
640+
* endpoint is down but the destination MAC address does not match the MAC address of
641+
* the endpoint.
642+
*/
643+
void test_prvAllowIPPacketIPv4_EndpointDown_UnHappyPath( void )
644+
{
645+
eFrameProcessingResult_t eResult;
646+
IPPacket_t * pxIPPacket;
647+
NetworkBufferDescriptor_t * pxNetworkBuffer, xNetworkBuffer;
648+
UBaseType_t uxHeaderLength = 0;
649+
uint8_t ucEthBuffer[ ipconfigTCP_MSS ];
650+
IPHeader_t * pxIPHeader;
651+
NetworkEndPoint_t xEndpoint;
652+
653+
memset( ucEthBuffer, 0, ipconfigTCP_MSS );
654+
655+
pxNetworkBuffer = &xNetworkBuffer;
656+
pxNetworkBuffer->pucEthernetBuffer = ucEthBuffer;
657+
pxNetworkBuffer->pxEndPoint = &xEndpoint;
658+
pxIPPacket = ( IPPacket_t * ) pxNetworkBuffer->pucEthernetBuffer;
659+
pxIPHeader = &( pxIPPacket->xIPHeader );
660+
661+
pxIPHeader->ucVersionHeaderLength = 0x45;
662+
663+
pxIPHeader->ulDestinationIPAddress = 0x00;
664+
665+
memset( pxIPPacket->xEthernetHeader.xDestinationAddress.ucBytes, 0xAB, sizeof( MACAddress_t ) );
666+
memset( xEndpoint.xMACAddress.ucBytes, 0xCD, sizeof( MACAddress_t ) );
667+
668+
FreeRTOS_IsEndPointUp_ExpectAndReturn( &xEndpoint, pdFALSE );
580669

581670
eResult = prvAllowIPPacketIPv4( pxIPPacket, pxNetworkBuffer, uxHeaderLength );
582671

@@ -613,6 +702,7 @@ void test_prvAllowIPPacketIPv4_DestMACBrdCast_DestIPBroadcastAndIncorrectChkSum(
613702
xEndpoint.ipv4_settings.ulBroadcastAddress = 0xABCDFFFF;
614703

615704
memcpy( pxIPPacket->xEthernetHeader.xDestinationAddress.ucBytes, xBroadcastMACAddress.ucBytes, sizeof( MACAddress_t ) );
705+
FreeRTOS_IsEndPointUp_ExpectAndReturn( &xEndpoint, pdTRUE );
616706

617707
FreeRTOS_FindEndPointOnMAC_ExpectAnyArgsAndReturn( NULL );
618708

@@ -769,6 +859,7 @@ void test_prvAllowIPPacketIPv4_IncorrectChecksum( void )
769859

770860
pxIPHeader->ulSourceIPAddress = 0xC0C00101;
771861

862+
FreeRTOS_IsEndPointUp_ExpectAndReturn( &xEndpoint, pdTRUE );
772863
FreeRTOS_FindEndPointOnMAC_ExpectAnyArgsAndReturn( NULL );
773864

774865
usGenerateChecksum_ExpectAndReturn( 0U, ( uint8_t * ) &( pxIPHeader->ucVersionHeaderLength ), ( size_t ) uxHeaderLength, ipCORRECT_CRC - 1 );
@@ -812,6 +903,7 @@ void test_prvAllowIPPacketIPv4_IncorrectProtocolChecksum( void )
812903

813904
pxIPHeader->ulSourceIPAddress = 0xC0C00101;
814905

906+
FreeRTOS_IsEndPointUp_ExpectAndReturn( &xEndpoint, pdTRUE );
815907
FreeRTOS_FindEndPointOnMAC_ExpectAnyArgsAndReturn( NULL );
816908

817909
usGenerateChecksum_ExpectAndReturn( 0U, ( uint8_t * ) &( pxIPHeader->ucVersionHeaderLength ), ( size_t ) uxHeaderLength, ipCORRECT_CRC );
@@ -856,7 +948,7 @@ void test_prvAllowIPPacketIPv4_HappyPath( void )
856948

857949
pxIPHeader->ulSourceIPAddress = 0xC0C00101;
858950

859-
951+
FreeRTOS_IsEndPointUp_ExpectAndReturn( &xEndpoint, pdTRUE );
860952
FreeRTOS_FindEndPointOnMAC_ExpectAnyArgsAndReturn( NULL );
861953

862954
usGenerateChecksum_ExpectAndReturn( 0U, ( uint8_t * ) &( pxIPHeader->ucVersionHeaderLength ), ( size_t ) uxHeaderLength, ipCORRECT_CRC );
@@ -939,6 +1031,7 @@ void test_prvAllowIPPacketIPv4_DestMacBroadcastIPNotBroadcast( void )
9391031
memcpy( pxIPPacket->xEthernetHeader.xDestinationAddress.ucBytes, xBroadcastMACAddress.ucBytes, sizeof( MACAddress_t ) );
9401032

9411033
pxIPHeader->ulSourceIPAddress = 0xC0C00101;
1034+
FreeRTOS_IsEndPointUp_ExpectAndReturn( &xEndpoint, pdTRUE );
9421035

9431036
eResult = prvAllowIPPacketIPv4( pxIPPacket, pxNetworkBuffer, uxHeaderLength );
9441037

@@ -1106,6 +1199,8 @@ void test_xBadIPv4Loopback_0_test( void )
11061199

11071200
memcpy( pxIPPacket->xEthernetHeader.xDestinationAddress.ucBytes, xMACAddress.ucBytes, sizeof( MACAddress_t ) );
11081201

1202+
FreeRTOS_IsEndPointUp_ExpectAndReturn( &xEndpoint, pdTRUE );
1203+
11091204
FreeRTOS_FindEndPointOnMAC_ExpectAnyArgsAndReturn( NULL );
11101205

11111206
usGenerateChecksum_ExpectAndReturn( 0U, ( uint8_t * ) &( pxIPHeader->ucVersionHeaderLength ), ( size_t ) uxHeaderLength, ipCORRECT_CRC );

test/unit-test/FreeRTOS_IPv4/ut.cmake

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ list(APPEND mock_list
1515
"${MODULE_ROOT_DIR}/test/FreeRTOS-Kernel/include/queue.h"
1616
"${MODULE_ROOT_DIR}/test/FreeRTOS-Kernel/include/event_groups.h"
1717
"${CMAKE_BINARY_DIR}/Annexed_TCP/FreeRTOS_IP.h"
18+
"${CMAKE_BINARY_DIR}/Annexed_TCP/FreeRTOS_IP_Common.h"
1819
"${CMAKE_BINARY_DIR}/Annexed_TCP/FreeRTOS_IP_Private.h"
1920
"${CMAKE_BINARY_DIR}/Annexed_TCP/FreeRTOS_IPv6.h"
2021
"${CMAKE_BINARY_DIR}/Annexed_TCP/FreeRTOS_Routing.h"

test/unit-test/FreeRTOS_IPv4_DiffConfig/FreeRTOS_IPv4_DiffConfig_utest.c

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939

4040
/* This must come after list.h is included (in this case, indirectly
4141
* by mock_list.h). */
42+
#include "mock_FreeRTOS_IP_Common.h"
4243
#include "mock_IPv4_DiffConfig_list_macros.h"
4344
#include "mock_queue.h"
4445
#include "mock_event_groups.h"
@@ -105,7 +106,7 @@ void test_prvAllowIPPacketIPv4_BroadcastSourceIP( void )
105106
memcpy( pxIPPacket->xEthernetHeader.xDestinationAddress.ucBytes, xBroadcastMACAddress.ucBytes, sizeof( MACAddress_t ) );
106107

107108
pxIPHeader->ulSourceIPAddress = 0xFFFFFFFF;
108-
109+
FreeRTOS_IsEndPointUp_ExpectAndReturn( &xEndpoint, pdTRUE );
109110
eResult = prvAllowIPPacketIPv4( pxIPPacket, pxNetworkBuffer, uxHeaderLength );
110111

111112
TEST_ASSERT_EQUAL( eReleaseBuffer, eResult );
@@ -146,7 +147,7 @@ void test_prvAllowIPPacketIPv4_BufferLengthLessThanMinimum( void )
146147

147148
pxIPHeader->ulSourceIPAddress = 0xC0C00101;
148149

149-
150+
FreeRTOS_IsEndPointUp_ExpectAndReturn( &xEndpoint, pdTRUE );
150151
eResult = prvAllowIPPacketIPv4( pxIPPacket, pxNetworkBuffer, uxHeaderLength );
151152

152153
TEST_ASSERT_EQUAL( eReleaseBuffer, eResult );
@@ -191,7 +192,7 @@ void test_prvAllowIPPacketIPv4_UDPCheckSumZero( void )
191192

192193
pxIPHeader->ulSourceIPAddress = 0xC0C00101;
193194

194-
195+
FreeRTOS_IsEndPointUp_ExpectAndReturn( &xEndpoint, pdTRUE );
195196
eResult = prvAllowIPPacketIPv4( pxIPPacket, pxNetworkBuffer, uxHeaderLength );
196197

197198
TEST_ASSERT_EQUAL( eReleaseBuffer, eResult );
@@ -242,7 +243,7 @@ void test_prvAllowIPPacketIPv4_UDP_HappyPath( void )
242243
/* Non-zero checksum. */
243244
pxProtPack->xUDPPacket.xUDPHeader.usChecksum = 0xFF12;
244245

245-
246+
FreeRTOS_IsEndPointUp_ExpectAndReturn( &xEndpoint, pdTRUE );
246247
eResult = prvAllowIPPacketIPv4( pxIPPacket, pxNetworkBuffer, uxHeaderLength );
247248

248249
TEST_ASSERT_EQUAL( eProcessBuffer, eResult );
@@ -286,7 +287,7 @@ void test_prvAllowIPPacketIPv4_TCP_HappyPath( void )
286287
memcpy( pxIPPacket->xEthernetHeader.xDestinationAddress.ucBytes, xBroadcastMACAddress.ucBytes, sizeof( MACAddress_t ) );
287288

288289
pxIPHeader->ulSourceIPAddress = 0xC0C00101;
289-
290+
FreeRTOS_IsEndPointUp_ExpectAndReturn( &xEndpoint, pdTRUE );
290291

291292
eResult = prvAllowIPPacketIPv4( pxIPPacket, pxNetworkBuffer, uxHeaderLength );
292293

test/unit-test/FreeRTOS_IPv4_DiffConfig/ut.cmake

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ list(APPEND mock_list
1515
"${MODULE_ROOT_DIR}/test/FreeRTOS-Kernel/include/queue.h"
1616
"${MODULE_ROOT_DIR}/test/FreeRTOS-Kernel/include/event_groups.h"
1717
"${CMAKE_BINARY_DIR}/Annexed_TCP/FreeRTOS_IP.h"
18+
"${CMAKE_BINARY_DIR}/Annexed_TCP/FreeRTOS_IP_Common.h"
1819
"${CMAKE_BINARY_DIR}/Annexed_TCP/FreeRTOS_IP_Timers.h"
1920
"${CMAKE_BINARY_DIR}/Annexed_TCP/FreeRTOS_IP_Utils.h"
2021
"${CMAKE_BINARY_DIR}/Annexed_TCP/FreeRTOS_Routing.h"

test/unit-test/FreeRTOS_IPv4_DiffConfig1/ut.cmake

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ list(APPEND mock_list
1717
"${CMAKE_BINARY_DIR}/Annexed_TCP/FreeRTOS_IP_Timers.h"
1818
"${CMAKE_BINARY_DIR}/Annexed_TCP/FreeRTOS_IP_Utils.h"
1919
"${CMAKE_BINARY_DIR}/Annexed_TCP/FreeRTOS_IP.h"
20+
"${CMAKE_BINARY_DIR}/Annexed_TCP/FreeRTOS_IP_Common.h"
2021
"${CMAKE_BINARY_DIR}/Annexed_TCP/FreeRTOS_Routing.h"
2122
"${CMAKE_BINARY_DIR}/Annexed_TCP/FreeRTOS_ARP.h"
2223
"${CMAKE_BINARY_DIR}/Annexed_TCP/FreeRTOS_ICMP.h"

0 commit comments

Comments
 (0)