@@ -945,6 +945,29 @@ void test_xCheckRequiresARPResolution_OnLocalNetwork_InCache( void )
945945 TEST_ASSERT_EQUAL ( pdFALSE , xResult );
946946}
947947
948+ void test_xCheckRequiresARPResolution_OnLocalNetwork_Loopback ( void )
949+ {
950+ NetworkBufferDescriptor_t xNetworkBuffer , * pxNetworkBuffer ;
951+ uint8_t ucEthernetBuffer [ ipconfigNETWORK_MTU ];
952+ BaseType_t xResult ;
953+
954+ pxNetworkBuffer = & xNetworkBuffer ;
955+ pxNetworkBuffer -> pucEthernetBuffer = ucEthernetBuffer ;
956+
957+ IPPacket_t * pxIPPacket = ( ( IPPacket_t * ) pxNetworkBuffer -> pucEthernetBuffer );
958+ IPHeader_t * pxIPHeader = & ( pxIPPacket -> xIPHeader );
959+
960+ * ipLOCAL_IP_ADDRESS_POINTER = ipLOOPBACK_ADDRESS ;
961+
962+ /* Make sure there is a match on source IP and loopback address */
963+ pxIPHeader -> ulDestinationIPAddress = * ipLOCAL_IP_ADDRESS_POINTER ;
964+ pxIPHeader -> ulSourceIPAddress = * ipLOCAL_IP_ADDRESS_POINTER & xNetworkAddressing .ulNetMask ;
965+
966+ xResult = xCheckRequiresARPResolution ( pxNetworkBuffer );
967+
968+ TEST_ASSERT_EQUAL ( pdFALSE , xResult );
969+ }
970+
948971
949972void test_ulARPRemoveCacheEntryByMac_NoMatch ( void )
950973{
@@ -1322,6 +1345,23 @@ void test_eARPGetCacheEntry_IPMatchesOtherBroadcastAddr( void )
13221345 /* =================================================== */
13231346}
13241347
1348+ void test_eARPGetCacheEntry_IPMatchesLoopbackAddr ( void )
1349+ {
1350+ uint32_t ulIPAddress ;
1351+ MACAddress_t xMACAddress ;
1352+ eARPLookupResult_t eResult ;
1353+ uint32_t ulSavedGatewayAddress ;
1354+
1355+ /* =================================================== */
1356+ ulIPAddress = ipLOOPBACK_ADDRESS ;
1357+ /* Not worried about what these functions do. */
1358+ xIsIPv4Multicast_ExpectAndReturn ( ulIPAddress , 0UL );
1359+ eResult = eARPGetCacheEntry ( & ulIPAddress , & xMACAddress );
1360+ TEST_ASSERT_EQUAL_MESSAGE ( eARPCacheHit , eResult , "Test 3" );
1361+ TEST_ASSERT_EQUAL_MEMORY_MESSAGE ( & ipLOCAL_MAC_ADDRESS , & xMACAddress , sizeof ( xMACAddress ), "Test 3" );
1362+ /* =================================================== */
1363+ }
1364+
13251365void test_eARPGetCacheEntry_LocalIPIsZero ( void )
13261366{
13271367 uint32_t ulIPAddress ;
0 commit comments