@@ -672,6 +672,88 @@ void test_prvAllowIPPacketIPv4_EndpointDown_UnHappyPath( void )
672672 TEST_ASSERT_EQUAL ( eReleaseBuffer , eResult );
673673}
674674
675+ /**
676+ * @brief test_prvAllowIPPacketIPv4_EndpointDown_HappyPath
677+ * To validate if prvAllowIPPacketIPv4() returns eProcessBuffer when
678+ * endpoint is down and the packet is broadcast packet with destination
679+ * MAC address as broadcast MAC and the destination IP as broadcast IP
680+ */
681+ void test_prvAllowIPPacketIPv4_EndpointDown_UnHappyPathBroadcast ( void )
682+ {
683+ eFrameProcessingResult_t eResult ;
684+ IPPacket_t * pxIPPacket ;
685+ NetworkBufferDescriptor_t * pxNetworkBuffer , xNetworkBuffer ;
686+ UBaseType_t uxHeaderLength = 0 ;
687+ uint8_t ucEthBuffer [ ipconfigTCP_MSS ];
688+ IPHeader_t * pxIPHeader ;
689+ NetworkEndPoint_t xEndpoint ;
690+
691+ memset ( ucEthBuffer , 0 , ipconfigTCP_MSS );
692+
693+ pxNetworkBuffer = & xNetworkBuffer ;
694+ pxNetworkBuffer -> pucEthernetBuffer = ucEthBuffer ;
695+ pxNetworkBuffer -> pxEndPoint = & xEndpoint ;
696+ pxIPPacket = ( IPPacket_t * ) pxNetworkBuffer -> pucEthernetBuffer ;
697+ pxIPHeader = & ( pxIPPacket -> xIPHeader );
698+
699+ pxIPHeader -> ucVersionHeaderLength = 0x45 ;
700+
701+ pxIPHeader -> ulDestinationIPAddress = 0xFFFFFFFF ;
702+
703+ memset ( pxIPPacket -> xEthernetHeader .xDestinationAddress .ucBytes , 0xFF , sizeof ( MACAddress_t ) );
704+ memset ( xEndpoint .xMACAddress .ucBytes , 0xCD , sizeof ( MACAddress_t ) );
705+
706+ FreeRTOS_IsEndPointUp_ExpectAndReturn ( & xEndpoint , pdFALSE );
707+ FreeRTOS_FindEndPointOnMAC_ExpectAnyArgsAndReturn ( NULL );
708+
709+ usGenerateChecksum_ExpectAndReturn ( 0U , ( uint8_t * ) & ( pxIPHeader -> ucVersionHeaderLength ), ( size_t ) uxHeaderLength , ipCORRECT_CRC );
710+
711+ usGenerateProtocolChecksum_ExpectAndReturn ( ( uint8_t * ) ( pxNetworkBuffer -> pucEthernetBuffer ), pxNetworkBuffer -> xDataLength , pdFALSE , ipCORRECT_CRC );
712+
713+ eResult = prvAllowIPPacketIPv4 ( pxIPPacket , pxNetworkBuffer , uxHeaderLength );
714+
715+ TEST_ASSERT_EQUAL ( eProcessBuffer , eResult );
716+ }
717+
718+ /**
719+ * @brief test_prvAllowIPPacketIPv4_EndpointDown_HappyPath
720+ * To validate if prvAllowIPPacketIPv4() returns eReleaseBuffer when
721+ * endpoint is down and the packet is malformed broadcast packet with destination
722+ * MAC address as broadcast MAC and but the destination IP not broadcast IP
723+ */
724+ void test_prvAllowIPPacketIPv4_EndpointDown_UnHappyPathIncorrectBroadcast ( void )
725+ {
726+ eFrameProcessingResult_t eResult ;
727+ IPPacket_t * pxIPPacket ;
728+ NetworkBufferDescriptor_t * pxNetworkBuffer , xNetworkBuffer ;
729+ UBaseType_t uxHeaderLength = 0 ;
730+ uint8_t ucEthBuffer [ ipconfigTCP_MSS ];
731+ IPHeader_t * pxIPHeader ;
732+ NetworkEndPoint_t xEndpoint ;
733+
734+ memset ( ucEthBuffer , 0 , ipconfigTCP_MSS );
735+
736+ pxNetworkBuffer = & xNetworkBuffer ;
737+ pxNetworkBuffer -> pucEthernetBuffer = ucEthBuffer ;
738+ pxNetworkBuffer -> pxEndPoint = & xEndpoint ;
739+ pxIPPacket = ( IPPacket_t * ) pxNetworkBuffer -> pucEthernetBuffer ;
740+ pxIPHeader = & ( pxIPPacket -> xIPHeader );
741+
742+ pxIPHeader -> ucVersionHeaderLength = 0x45 ;
743+
744+ pxIPHeader -> ulDestinationIPAddress = 0xFFFFABCD ;
745+
746+ memset ( pxIPPacket -> xEthernetHeader .xDestinationAddress .ucBytes , 0xFF , sizeof ( MACAddress_t ) );
747+ memset ( xEndpoint .xMACAddress .ucBytes , 0xCD , sizeof ( MACAddress_t ) );
748+
749+ FreeRTOS_IsEndPointUp_ExpectAndReturn ( & xEndpoint , pdFALSE );
750+
751+ eResult = prvAllowIPPacketIPv4 ( pxIPPacket , pxNetworkBuffer , uxHeaderLength );
752+
753+ TEST_ASSERT_EQUAL ( eReleaseBuffer , eResult );
754+ }
755+
756+
675757/**
676758 * @brief test_prvAllowIPPacketIPv4_DestMACBrdCast_DestIPBroadcastAndIncorrectChkSum
677759 * To validate if prvAllowIPPacketIPv4() when
0 commit comments