Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 1 addition & 3 deletions source/FreeRTOS_IPv4.c
Original file line number Diff line number Diff line change
Expand Up @@ -321,9 +321,7 @@ enum eFrameProcessingResult prvAllowIPPacketIPv4( const struct xIP_PACKET * cons
( FreeRTOS_FindEndPointOnIP_IPv4( ulDestinationIPAddress ) == NULL ) &&
/* Is it an IPv4 broadcast address x.x.x.255 ? */
( ( FreeRTOS_ntohl( ulDestinationIPAddress ) & 0xffU ) != 0xffU ) &&
( xIsIPv4Multicast( ulDestinationIPAddress ) == pdFALSE ) &&
/* Or (during DHCP negotiation) we have no IP-address yet? */
( FreeRTOS_IsNetworkUp() != pdFALSE ) )
( xIsIPv4Multicast( ulDestinationIPAddress ) == pdFALSE ) )
{
/* Packet is not for this node, release it */
eReturn = eReleaseBuffer;
Expand Down
1 change: 0 additions & 1 deletion source/FreeRTOS_Routing.c
Original file line number Diff line number Diff line change
Expand Up @@ -388,7 +388,6 @@ struct xIPv6_Couple
#endif
{
if( ( ulIPAddress == 0U ) ||
( pxEndPoint->ipv4_settings.ulIPAddress == 0U ) ||
( pxEndPoint->ipv4_settings.ulIPAddress == ulIPAddress ) )
{
break;
Expand Down
20 changes: 14 additions & 6 deletions test/unit-test/FreeRTOS_Routing/FreeRTOS_Routing_utest.c
Original file line number Diff line number Diff line change
Expand Up @@ -1440,25 +1440,33 @@ void test_FreeRTOS_FindEndPointOnIP_IPv4_AnyEndpoint( void )
* pxNetworkEndPoints is a global variable using in FreeRTOS_Routing as link list head of all endpoints.
*
* Test step:
* - Create 1 endpoint with IP address 0 and add it to the list.
* - Call FreeRTOS_FindEndPointOnIP_IPv4 to query with IPV4_DEFAULT_ADDRESS.
* - Create 1 endpoint with IP address 0xAB12CD34 and add it to the list.
* - Call FreeRTOS_FindEndPointOnIP_IPv4 to query with 0xAB12CD34.
* - Check if returned endpoint is same.
* - Call FreeRTOS_FindEndPointOnIP_IPv4 to query with IPV4_DEFAULT_GATEWAY.
* - Call FreeRTOS_FindEndPointOnIP_IPv4 to query with 0.
* - Check if returned endpoint is same.
* - Call FreeRTOS_FindEndPointOnIP_IPv4 to query with IPV4_DEFAULT_ADDRESS.
* - Check if returned endpoint is NULL.
* - Call FreeRTOS_FindEndPointOnIP_IPv4 to query with IPV4_DEFAULT_GATEWAY.
* - Check if returned endpoint is NULL.
*/
void test_FreeRTOS_FindEndPointOnIP_IPv4_ZeroAddressEndpoint( void )
{
NetworkEndPoint_t xEndPoint;
NetworkEndPoint_t * pxEndPoint = NULL;

memset( &xEndPoint, 0, sizeof( NetworkEndPoint_t ) );
xEndPoint.ipv4_settings.ulIPAddress = 0;
xEndPoint.ipv4_settings.ulIPAddress = 0xAB12CD34;
pxNetworkEndPoints = &xEndPoint;

pxEndPoint = FreeRTOS_FindEndPointOnIP_IPv4( IPV4_DEFAULT_ADDRESS );
pxEndPoint = FreeRTOS_FindEndPointOnIP_IPv4( 0xAB12CD34 );
TEST_ASSERT_EQUAL( &xEndPoint, pxEndPoint );
pxEndPoint = FreeRTOS_FindEndPointOnIP_IPv4( IPV4_DEFAULT_GATEWAY );
pxEndPoint = FreeRTOS_FindEndPointOnIP_IPv4( 0 );
TEST_ASSERT_EQUAL( &xEndPoint, pxEndPoint );
pxEndPoint = FreeRTOS_FindEndPointOnIP_IPv4( IPV4_DEFAULT_ADDRESS );
TEST_ASSERT_EQUAL( NULL, pxEndPoint );
pxEndPoint = FreeRTOS_FindEndPointOnIP_IPv4( IPV4_DEFAULT_GATEWAY );
TEST_ASSERT_EQUAL( NULL, pxEndPoint );
}

/**
Expand Down