@@ -229,10 +229,10 @@ void test_prvAllowIPPacketIPv6_xCheckIPv6SizeFields_length_less_than_UDP_min_req
229229}
230230
231231/**
232- * @brief test_prvAllowIPPacketIPv6_xCheckIPv6SizeFields_length_less_than_ICMP_min_requirement
232+ * @brief test_prvAllowIPPacketIPv6_xCheckIPv6SizeFields_length_less_than_ICMP_min_requirement_1
233233 * The buffer size is less than ICMP packet minimal requirement. Check if prvAllowIPPacketIPv6 determines to release it.
234234 */
235- void test_prvAllowIPPacketIPv6_xCheckIPv6SizeFields_length_less_than_ICMP_min_requirement ()
235+ void test_prvAllowIPPacketIPv6_xCheckIPv6SizeFields_length_less_than_ICMP_min_requirement_1 ()
236236{
237237 eFrameProcessingResult_t eResult ;
238238 NetworkBufferDescriptor_t * pxNetworkBuffer = prvInitializeNetworkDescriptor ();
@@ -241,12 +241,95 @@ void test_prvAllowIPPacketIPv6_xCheckIPv6SizeFields_length_less_than_ICMP_min_re
241241 /* Set next header to ICMPv6 */
242242 pxIPPacket -> xIPHeader .ucNextHeader = ipPROTOCOL_ICMP_IPv6 ;
243243 pxNetworkBuffer -> xDataLength = ipSIZE_OF_ETH_HEADER + ipSIZE_OF_IPv6_HEADER + 1 ;
244+ pxNetworkBuffer -> pucEthernetBuffer [ ipSIZE_OF_ETH_HEADER + ipSIZE_OF_IPv6_HEADER ] = ipICMP_ROUTER_SOLICITATION_IPv6 ;
244245 pxIPPacket -> xIPHeader .usPayloadLength = FreeRTOS_htons ( 1 );
245246
246247 eResult = prvAllowIPPacketIPv6 ( & pxIPPacket -> xIPHeader , pxNetworkBuffer , 0U );
247248 TEST_ASSERT_EQUAL ( eReleaseBuffer , eResult );
248249}
249250
251+ /**
252+ * @brief test_prvAllowIPPacketIPv6_xCheckIPv6SizeFields_length_less_than_ICMP_min_requirement_2
253+ * The buffer size is less than ICMP packet minimal requirement. Check if prvAllowIPPacketIPv6 determines to release it.
254+ */
255+ void test_prvAllowIPPacketIPv6_xCheckIPv6SizeFields_length_less_than_ICMP_min_requirement_2 ()
256+ {
257+ eFrameProcessingResult_t eResult ;
258+ NetworkBufferDescriptor_t * pxNetworkBuffer = prvInitializeNetworkDescriptor ();
259+ IPPacket_IPv6_t * pxIPPacket = ( IPPacket_IPv6_t * ) pxNetworkBuffer -> pucEthernetBuffer ;
260+
261+ /* Set next header to ICMPv6 */
262+ pxIPPacket -> xIPHeader .ucNextHeader = ipPROTOCOL_ICMP_IPv6 ;
263+ pxNetworkBuffer -> xDataLength = ipSIZE_OF_ETH_HEADER + ipSIZE_OF_IPv6_HEADER + 1 ;
264+ pxNetworkBuffer -> pucEthernetBuffer [ ipSIZE_OF_ETH_HEADER + ipSIZE_OF_IPv6_HEADER ] = ipICMP_ROUTER_ADVERTISEMENT_IPv6 ;
265+ pxIPPacket -> xIPHeader .usPayloadLength = FreeRTOS_htons ( 1 );
266+
267+ eResult = prvAllowIPPacketIPv6 ( & pxIPPacket -> xIPHeader , pxNetworkBuffer , 0U );
268+ TEST_ASSERT_EQUAL ( eReleaseBuffer , eResult );
269+ }
270+
271+ /**
272+ * @brief test_prvAllowIPPacketIPv6_xCheckIPv6SizeFields_length_less_than_ICMP_min_requirement_3
273+ * The buffer size is less than ICMP packet minimal requirement. Check if prvAllowIPPacketIPv6 determines to release it.
274+ */
275+ void test_prvAllowIPPacketIPv6_xCheckIPv6SizeFields_length_less_than_ICMP_min_requirement_3 ()
276+ {
277+ eFrameProcessingResult_t eResult ;
278+ NetworkBufferDescriptor_t * pxNetworkBuffer = prvInitializeNetworkDescriptor ();
279+ IPPacket_IPv6_t * pxIPPacket = ( IPPacket_IPv6_t * ) pxNetworkBuffer -> pucEthernetBuffer ;
280+
281+ /* Set next header to ICMPv6 */
282+ pxIPPacket -> xIPHeader .ucNextHeader = ipPROTOCOL_ICMP_IPv6 ;
283+ pxNetworkBuffer -> xDataLength = ipSIZE_OF_ETH_HEADER + ipSIZE_OF_IPv6_HEADER + 1 ;
284+ pxNetworkBuffer -> pucEthernetBuffer [ ipSIZE_OF_ETH_HEADER + ipSIZE_OF_IPv6_HEADER ] = ipICMP_PING_REQUEST_IPv6 ;
285+ pxIPPacket -> xIPHeader .usPayloadLength = FreeRTOS_htons ( 1 );
286+
287+ eResult = prvAllowIPPacketIPv6 ( & pxIPPacket -> xIPHeader , pxNetworkBuffer , 0U );
288+ TEST_ASSERT_EQUAL ( eReleaseBuffer , eResult );
289+ }
290+
291+ /**
292+ * @brief test_prvAllowIPPacketIPv6_xCheckIPv6SizeFields_length_less_than_ICMP_min_requirement_4
293+ * The buffer size is less than ICMP packet minimal requirement. Check if prvAllowIPPacketIPv6 determines to release it.
294+ */
295+ void test_prvAllowIPPacketIPv6_xCheckIPv6SizeFields_length_less_than_ICMP_min_requirement_4 ()
296+ {
297+ eFrameProcessingResult_t eResult ;
298+ NetworkBufferDescriptor_t * pxNetworkBuffer = prvInitializeNetworkDescriptor ();
299+ IPPacket_IPv6_t * pxIPPacket = ( IPPacket_IPv6_t * ) pxNetworkBuffer -> pucEthernetBuffer ;
300+
301+ /* Set next header to ICMPv6 */
302+ pxIPPacket -> xIPHeader .ucNextHeader = ipPROTOCOL_ICMP_IPv6 ;
303+ pxNetworkBuffer -> xDataLength = ipSIZE_OF_ETH_HEADER + ipSIZE_OF_IPv6_HEADER + 1 ;
304+ pxNetworkBuffer -> pucEthernetBuffer [ ipSIZE_OF_ETH_HEADER + ipSIZE_OF_IPv6_HEADER ] = ipICMP_PING_REPLY_IPv6 ;
305+ pxIPPacket -> xIPHeader .usPayloadLength = FreeRTOS_htons ( 1 );
306+
307+ eResult = prvAllowIPPacketIPv6 ( & pxIPPacket -> xIPHeader , pxNetworkBuffer , 0U );
308+ TEST_ASSERT_EQUAL ( eReleaseBuffer , eResult );
309+ }
310+
311+ /**
312+ * @brief test_prvAllowIPPacketIPv6_xCheckIPv6SizeFields_length_less_than_ICMP_min_requirement_5
313+ * This is the default case for all ICMPv6 packet length testing.
314+ * The buffer size is less than ICMP packet minimal requirement. Check if prvAllowIPPacketIPv6 determines to release it.
315+ */
316+ void test_prvAllowIPPacketIPv6_xCheckIPv6SizeFields_length_less_than_ICMP_min_requirement_5 ()
317+ {
318+ eFrameProcessingResult_t eResult ;
319+ NetworkBufferDescriptor_t * pxNetworkBuffer = prvInitializeNetworkDescriptor ();
320+ IPPacket_IPv6_t * pxIPPacket = ( IPPacket_IPv6_t * ) pxNetworkBuffer -> pucEthernetBuffer ;
321+
322+ /* Set next header to ICMPv6 */
323+ pxIPPacket -> xIPHeader .ucNextHeader = ipPROTOCOL_ICMP_IPv6 ;
324+ pxNetworkBuffer -> xDataLength = ipSIZE_OF_ETH_HEADER + ipSIZE_OF_IPv6_HEADER + 1 ;
325+ pxNetworkBuffer -> pucEthernetBuffer [ ipSIZE_OF_ETH_HEADER + ipSIZE_OF_IPv6_HEADER ] = ipICMP_NEIGHBOR_SOLICITATION_IPv6 ;
326+ pxIPPacket -> xIPHeader .usPayloadLength = FreeRTOS_htons ( 1 );
327+
328+ eResult = prvAllowIPPacketIPv6 ( & pxIPPacket -> xIPHeader , pxNetworkBuffer , 0U );
329+ TEST_ASSERT_EQUAL ( eReleaseBuffer , eResult );
330+ }
331+
332+
250333/**
251334 * @brief test_prvAllowIPPacketIPv6_source_unspecified_address
252335 * Prepare a packet with unspecified address in source address.
0 commit comments