|
45 | 45 | #include "mock_event_groups.h"
|
46 | 46 |
|
47 | 47 | #include "mock_FreeRTOS_IP.h"
|
| 48 | +#include "mock_FreeRTOS_IP_Common.h" |
48 | 49 | #include "mock_FreeRTOS_IP_Private.h"
|
49 | 50 | #include "mock_FreeRTOS_Routing.h"
|
50 | 51 |
|
@@ -396,6 +397,8 @@ void test_prvAllowIPPacketIPv4_NotMatchingIP( void )
|
396 | 397 | pxIPHeader->ucVersionHeaderLength = 0x45;
|
397 | 398 | pxIPHeader->ulDestinationIPAddress = pxEndpoint->ipv4_settings.ulIPAddress + 1;
|
398 | 399 |
|
| 400 | + FreeRTOS_IsEndPointUp_ExpectAndReturn( &xEndpoint, pdTRUE ); |
| 401 | + |
399 | 402 | eResult = prvAllowIPPacketIPv4( pxIPPacket, pxNetworkBuffer, uxHeaderLength );
|
400 | 403 |
|
401 | 404 | TEST_ASSERT_EQUAL( eReleaseBuffer, eResult );
|
@@ -432,6 +435,8 @@ void test_prvAllowIPPacketIPv4_SourceIPBrdCast_DestIPMatch( void )
|
432 | 435 |
|
433 | 436 | pxIPHeader->ulSourceIPAddress = 0xFFFFFFFF;
|
434 | 437 |
|
| 438 | + FreeRTOS_IsEndPointUp_ExpectAndReturn( &xEndpoint, pdTRUE ); |
| 439 | + |
435 | 440 | eResult = prvAllowIPPacketIPv4( pxIPPacket, pxNetworkBuffer, uxHeaderLength );
|
436 | 441 |
|
437 | 442 | TEST_ASSERT_EQUAL( eReleaseBuffer, eResult );
|
@@ -469,6 +474,7 @@ void test_prvAllowIPPacketIPv4_SourceIPBrdCast_DestIPBrdCast( void )
|
469 | 474 |
|
470 | 475 | pxIPHeader->ulSourceIPAddress = 0xFFFFFFFF;
|
471 | 476 |
|
| 477 | + FreeRTOS_IsEndPointUp_ExpectAndReturn( &xEndpoint, pdTRUE ); |
472 | 478 |
|
473 | 479 | eResult = prvAllowIPPacketIPv4( pxIPPacket, pxNetworkBuffer, uxHeaderLength );
|
474 | 480 |
|
@@ -507,6 +513,7 @@ void test_prvAllowIPPacketIPv4_SourceIPBrdCast_DestIPLLMNR( void )
|
507 | 513 |
|
508 | 514 | pxIPHeader->ulSourceIPAddress = 0xFFFFFFFF;
|
509 | 515 |
|
| 516 | + FreeRTOS_IsEndPointUp_ExpectAndReturn( &xEndpoint, pdTRUE ); |
510 | 517 |
|
511 | 518 | eResult = prvAllowIPPacketIPv4( pxIPPacket, pxNetworkBuffer, uxHeaderLength );
|
512 | 519 |
|
@@ -541,6 +548,7 @@ void test_prvAllowIPPacketIPv4_SourceIPBrdCast_NoLocalIP( void )
|
541 | 548 | pxIPHeader->ulDestinationIPAddress = 0;
|
542 | 549 |
|
543 | 550 | pxIPHeader->ulSourceIPAddress = 0xFFFFFFFF;
|
| 551 | + FreeRTOS_IsEndPointUp_ExpectAndReturn( &xEndpoint, pdTRUE ); |
544 | 552 |
|
545 | 553 | eResult = prvAllowIPPacketIPv4( pxIPPacket, pxNetworkBuffer, uxHeaderLength );
|
546 | 554 |
|
@@ -577,6 +585,87 @@ void test_prvAllowIPPacketIPv4_DestMACBrdCast_DestIPUnicast( void )
|
577 | 585 |
|
578 | 586 | memcpy( pxIPPacket->xEthernetHeader.xDestinationAddress.ucBytes, xBroadcastMACAddress.ucBytes, sizeof( MACAddress_t ) );
|
579 | 587 |
|
| 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 ); |
580 | 669 |
|
581 | 670 | eResult = prvAllowIPPacketIPv4( pxIPPacket, pxNetworkBuffer, uxHeaderLength );
|
582 | 671 |
|
@@ -613,6 +702,7 @@ void test_prvAllowIPPacketIPv4_DestMACBrdCast_DestIPBroadcastAndIncorrectChkSum(
|
613 | 702 | xEndpoint.ipv4_settings.ulBroadcastAddress = 0xABCDFFFF;
|
614 | 703 |
|
615 | 704 | memcpy( pxIPPacket->xEthernetHeader.xDestinationAddress.ucBytes, xBroadcastMACAddress.ucBytes, sizeof( MACAddress_t ) );
|
| 705 | + FreeRTOS_IsEndPointUp_ExpectAndReturn( &xEndpoint, pdTRUE ); |
616 | 706 |
|
617 | 707 | FreeRTOS_FindEndPointOnMAC_ExpectAnyArgsAndReturn( NULL );
|
618 | 708 |
|
@@ -769,6 +859,7 @@ void test_prvAllowIPPacketIPv4_IncorrectChecksum( void )
|
769 | 859 |
|
770 | 860 | pxIPHeader->ulSourceIPAddress = 0xC0C00101;
|
771 | 861 |
|
| 862 | + FreeRTOS_IsEndPointUp_ExpectAndReturn( &xEndpoint, pdTRUE ); |
772 | 863 | FreeRTOS_FindEndPointOnMAC_ExpectAnyArgsAndReturn( NULL );
|
773 | 864 |
|
774 | 865 | usGenerateChecksum_ExpectAndReturn( 0U, ( uint8_t * ) &( pxIPHeader->ucVersionHeaderLength ), ( size_t ) uxHeaderLength, ipCORRECT_CRC - 1 );
|
@@ -812,6 +903,7 @@ void test_prvAllowIPPacketIPv4_IncorrectProtocolChecksum( void )
|
812 | 903 |
|
813 | 904 | pxIPHeader->ulSourceIPAddress = 0xC0C00101;
|
814 | 905 |
|
| 906 | + FreeRTOS_IsEndPointUp_ExpectAndReturn( &xEndpoint, pdTRUE ); |
815 | 907 | FreeRTOS_FindEndPointOnMAC_ExpectAnyArgsAndReturn( NULL );
|
816 | 908 |
|
817 | 909 | usGenerateChecksum_ExpectAndReturn( 0U, ( uint8_t * ) &( pxIPHeader->ucVersionHeaderLength ), ( size_t ) uxHeaderLength, ipCORRECT_CRC );
|
@@ -856,7 +948,7 @@ void test_prvAllowIPPacketIPv4_HappyPath( void )
|
856 | 948 |
|
857 | 949 | pxIPHeader->ulSourceIPAddress = 0xC0C00101;
|
858 | 950 |
|
859 |
| - |
| 951 | + FreeRTOS_IsEndPointUp_ExpectAndReturn( &xEndpoint, pdTRUE ); |
860 | 952 | FreeRTOS_FindEndPointOnMAC_ExpectAnyArgsAndReturn( NULL );
|
861 | 953 |
|
862 | 954 | usGenerateChecksum_ExpectAndReturn( 0U, ( uint8_t * ) &( pxIPHeader->ucVersionHeaderLength ), ( size_t ) uxHeaderLength, ipCORRECT_CRC );
|
@@ -939,6 +1031,7 @@ void test_prvAllowIPPacketIPv4_DestMacBroadcastIPNotBroadcast( void )
|
939 | 1031 | memcpy( pxIPPacket->xEthernetHeader.xDestinationAddress.ucBytes, xBroadcastMACAddress.ucBytes, sizeof( MACAddress_t ) );
|
940 | 1032 |
|
941 | 1033 | pxIPHeader->ulSourceIPAddress = 0xC0C00101;
|
| 1034 | + FreeRTOS_IsEndPointUp_ExpectAndReturn( &xEndpoint, pdTRUE ); |
942 | 1035 |
|
943 | 1036 | eResult = prvAllowIPPacketIPv4( pxIPPacket, pxNetworkBuffer, uxHeaderLength );
|
944 | 1037 |
|
@@ -1106,6 +1199,8 @@ void test_xBadIPv4Loopback_0_test( void )
|
1106 | 1199 |
|
1107 | 1200 | memcpy( pxIPPacket->xEthernetHeader.xDestinationAddress.ucBytes, xMACAddress.ucBytes, sizeof( MACAddress_t ) );
|
1108 | 1201 |
|
| 1202 | + FreeRTOS_IsEndPointUp_ExpectAndReturn( &xEndpoint, pdTRUE ); |
| 1203 | + |
1109 | 1204 | FreeRTOS_FindEndPointOnMAC_ExpectAnyArgsAndReturn( NULL );
|
1110 | 1205 |
|
1111 | 1206 | usGenerateChecksum_ExpectAndReturn( 0U, ( uint8_t * ) &( pxIPHeader->ucVersionHeaderLength ), ( size_t ) uxHeaderLength, ipCORRECT_CRC );
|
|
0 commit comments