#include #include "icmp.h" #include "internal/icmp_recv.h" #include #include Test(build_reply, basic_reply) { icmp_reply_t reply; uint8_t buffer[64]; struct in_addr src; const char *payload_data = "test"; memset(buffer, 0, sizeof(buffer)); inet_pton(AF_INET, "192.168.1.1", &src); recv_build_reply(&reply, 0, 0, 64, src, payload_data, 4, buffer, 20); cr_assert_eq(reply.type, 0); cr_assert_eq(reply.code, 0); cr_assert_eq(reply.ttl, 64); cr_assert_eq(reply.from.s_addr, src.s_addr); cr_assert_eq(reply.payload, payload_data); cr_assert_eq(reply.payload_len, 4); cr_assert_not_null(reply.ip_payload); } Test(build_reply, different_types) { icmp_reply_t reply; uint8_t buffer[64]; struct in_addr src; inet_pton(AF_INET, "8.8.8.8", &src); recv_build_reply(&reply, 3, 1, 128, src, NULL, 0, buffer, 20); cr_assert_eq(reply.type, 3); cr_assert_eq(reply.code, 1); cr_assert_eq(reply.ttl, 128); cr_assert_null(reply.payload); cr_assert_eq(reply.payload_len, 0); } Test(build_reply, timestamp_set) { icmp_reply_t reply; uint8_t buffer[64]; struct in_addr src; inet_pton(AF_INET, "127.0.0.1", &src); recv_build_reply(&reply, 0, 0, 64, src, NULL, 0, buffer, 20); cr_assert(reply.timestamp.tv_sec > 0 || reply.timestamp.tv_nsec > 0, "Timestamp should be set"); }