@@ -2638,7 +2638,7 @@ START_TEST(test_poll_tcp_ack_only_skips_send)
26382638 fifo_init (& ts -> sock .tcp .txbuf , ts -> txmem , TXBUF_SIZE );
26392639
26402640 ck_assert_int_eq (enqueue_tcp_tx (ts , 0 , TCP_FLAG_ACK ), 0 );
2641- (void )wolfIP_poll (& s , 100 );
2641+ (void )wolfIP_poll (& s , 2000 );
26422642
26432643 ck_assert_ptr_eq (fifo_peek (& ts -> sock .tcp .txbuf ), NULL );
26442644 ck_assert_uint_gt (last_frame_sent_size , 0 );
@@ -3353,13 +3353,49 @@ START_TEST(test_poll_udp_send_on_arp_hit)
33533353 (struct wolfIP_sockaddr * )& sin , sizeof (sin ));
33543354 ck_assert_int_eq (ret , (int )sizeof (payload ));
33553355
3356- (void )wolfIP_poll (& s , 100 );
3356+ (void )wolfIP_poll (& s , 2000 );
33573357 ck_assert_uint_gt (last_frame_sent_size , 0 );
33583358 ck_assert_uint_eq (last_frame_sent [12 ], 0x08 );
33593359 ck_assert_uint_eq (last_frame_sent [13 ], 0x00 );
33603360}
33613361END_TEST
33623362
3363+ START_TEST (test_poll_udp_send_on_arp_miss_requests_arp_and_retains_queue )
3364+ {
3365+ struct wolfIP s ;
3366+ int udp_sd ;
3367+ struct tsocket * ts ;
3368+ struct wolfIP_sockaddr_in sin ;
3369+ uint8_t payload [4 ] = {1 , 2 , 3 , 4 };
3370+ int ret ;
3371+
3372+ wolfIP_init (& s );
3373+ mock_link_init (& s );
3374+ wolfIP_ipconfig_set (& s , 0x0A000001U , 0xFFFFFF00U , 0 );
3375+ wolfIP_filter_set_callback (NULL , NULL );
3376+ last_frame_sent_size = 0 ;
3377+
3378+ udp_sd = wolfIP_sock_socket (& s , AF_INET , IPSTACK_SOCK_DGRAM , WI_IPPROTO_UDP );
3379+ ck_assert_int_gt (udp_sd , 0 );
3380+ ts = & s .udpsockets [SOCKET_UNMARK (udp_sd )];
3381+ memset (& sin , 0 , sizeof (sin ));
3382+ sin .sin_family = AF_INET ;
3383+ sin .sin_port = ee16 (1234 );
3384+ sin .sin_addr .s_addr = ee32 (0x0A000002U );
3385+ ret = wolfIP_sock_sendto (& s , udp_sd , payload , sizeof (payload ), 0 ,
3386+ (struct wolfIP_sockaddr * )& sin , sizeof (sin ));
3387+ ck_assert_int_eq (ret , (int )sizeof (payload ));
3388+ ts -> if_idx = TEST_PRIMARY_IF ;
3389+ ck_assert_ptr_nonnull (fifo_peek (& ts -> sock .udp .txbuf ));
3390+
3391+ (void )wolfIP_poll (& s , 2000 );
3392+ ck_assert_uint_gt (last_frame_sent_size , 0U );
3393+ ck_assert_uint_eq (last_frame_sent [12 ], 0x08 );
3394+ ck_assert_uint_eq (last_frame_sent [13 ], 0x06 );
3395+ ck_assert_ptr_nonnull (fifo_peek (& ts -> sock .udp .txbuf ));
3396+ }
3397+ END_TEST
3398+
33633399START_TEST (test_poll_icmp_send_on_arp_hit )
33643400{
33653401 struct wolfIP s ;
@@ -3397,6 +3433,43 @@ START_TEST(test_poll_icmp_send_on_arp_hit)
33973433}
33983434END_TEST
33993435
3436+ START_TEST (test_poll_icmp_send_on_arp_miss_requests_arp_and_retains_queue )
3437+ {
3438+ struct wolfIP s ;
3439+ int icmp_sd ;
3440+ struct tsocket * ts ;
3441+ struct wolfIP_sockaddr_in sin ;
3442+ uint8_t payload [ICMP_HEADER_LEN + 1 ];
3443+ int ret ;
3444+
3445+ wolfIP_init (& s );
3446+ mock_link_init (& s );
3447+ wolfIP_ipconfig_set (& s , 0x0A000001U , 0xFFFFFF00U , 0 );
3448+ wolfIP_filter_set_callback (NULL , NULL );
3449+ last_frame_sent_size = 0 ;
3450+
3451+ icmp_sd = wolfIP_sock_socket (& s , AF_INET , IPSTACK_SOCK_DGRAM , WI_IPPROTO_ICMP );
3452+ ck_assert_int_gt (icmp_sd , 0 );
3453+ ts = & s .icmpsockets [SOCKET_UNMARK (icmp_sd )];
3454+ memset (& sin , 0 , sizeof (sin ));
3455+ sin .sin_family = AF_INET ;
3456+ sin .sin_addr .s_addr = ee32 (0x0A000002U );
3457+ memset (payload , 0 , sizeof (payload ));
3458+ payload [0 ] = ICMP_ECHO_REQUEST ;
3459+ ret = wolfIP_sock_sendto (& s , icmp_sd , payload , sizeof (payload ), 0 ,
3460+ (struct wolfIP_sockaddr * )& sin , sizeof (sin ));
3461+ ck_assert_int_eq (ret , (int )sizeof (payload ));
3462+ ts -> if_idx = TEST_PRIMARY_IF ;
3463+ ck_assert_ptr_nonnull (fifo_peek (& ts -> sock .udp .txbuf ));
3464+
3465+ (void )wolfIP_poll (& s , 2000 );
3466+ ck_assert_uint_gt (last_frame_sent_size , 0U );
3467+ ck_assert_uint_eq (last_frame_sent [12 ], 0x08 );
3468+ ck_assert_uint_eq (last_frame_sent [13 ], 0x06 );
3469+ ck_assert_ptr_nonnull (fifo_peek (& ts -> sock .udp .txbuf ));
3470+ }
3471+ END_TEST
3472+
34003473START_TEST (test_dhcp_timer_cb_paths )
34013474{
34023475 struct wolfIP s ;
0 commit comments