@@ -852,7 +852,7 @@ START_TEST(test_wolfip_forwarding_ttl_expired)
852852{
853853 struct wolfIP s ;
854854 struct wolfIP_ip_packet frame ;
855- struct wolfIP_icmp_packet * icmp ;
855+ struct wolfIP_icmp_ttl_exceeded_packet * icmp ;
856856 uint8_t src_mac [6 ] = {0x52 , 0x54 , 0x00 , 0xAA , 0xBB , 0xCC };
857857 uint8_t iface1_mac [6 ] = {0x02 , 0x00 , 0x00 , 0x00 , 0x00 , 0x03 };
858858 uint32_t dest_ip = 0xC0A80110 ;
@@ -881,11 +881,22 @@ START_TEST(test_wolfip_forwarding_ttl_expired)
881881
882882 wolfIP_recv_ex (& s , TEST_PRIMARY_IF , & frame , sizeof (frame ));
883883
884- ck_assert_uint_eq (last_frame_sent_size , sizeof (struct wolfIP_icmp_packet ));
885- icmp = (struct wolfIP_icmp_packet * )last_frame_sent ;
884+ ck_assert_uint_eq (last_frame_sent_size ,
885+ sizeof (struct wolfIP_icmp_ttl_exceeded_packet ));
886+ icmp = (struct wolfIP_icmp_ttl_exceeded_packet * )last_frame_sent ;
886887 ck_assert_uint_eq (icmp -> type , ICMP_TTL_EXCEEDED );
888+ ck_assert_uint_eq (icmp -> code , 0 );
889+ ck_assert_mem_eq (icmp -> unused , "\x00\x00\x00\x00" , sizeof (icmp -> unused ));
887890 ck_assert_mem_eq (icmp -> ip .eth .dst , src_mac , 6 );
888891 ck_assert_mem_eq (icmp -> ip .eth .src , s .ll_dev [TEST_PRIMARY_IF ].mac , 6 );
892+ ck_assert_uint_eq (icmp -> ip .ttl , 64 );
893+ ck_assert_uint_eq (ee16 (icmp -> ip .len ),
894+ (uint16_t )(IP_HEADER_LEN + ICMP_TTL_EXCEEDED_SIZE ));
895+ ck_assert_uint_eq (ee32 (icmp -> ip .src ), s .ipconf [TEST_PRIMARY_IF ].ip );
896+ ck_assert_uint_eq (ee32 (icmp -> ip .dst ), ee32 (frame .src ));
897+ ck_assert_mem_eq (icmp -> orig_packet ,
898+ ((uint8_t * )& frame ) + ETH_HEADER_LEN ,
899+ TTL_EXCEEDED_ORIG_PACKET_SIZE );
889900 ck_assert_uint_eq (frame .ttl , 1 ); /* original packet should remain unchanged */
890901}
891902END_TEST
0 commit comments