libicmp/tests/recv/test_receive_packet.c
2026-01-26 20:14:24 +01:00

32 lines
776 B
C

#include <criterion/criterion.h>
#include "icmp.h"
#include "internal/icmp_internal.h"
#include "internal/icmp_recv.h"
#include "test_helpers.h"
Test(receive_packet, invalid_fd)
{
uint8_t buffer[64];
struct sockaddr_in from;
ssize_t ret;
ret = recv_receive_packet(-1, buffer, sizeof(buffer), &from);
cr_assert_eq(ret, -1);
}
Test(receive_packet, no_data_available)
{
icmp_handle_t *h;
uint8_t buffer[64];
struct sockaddr_in from;
ssize_t ret;
if (0 == has_net_raw_capability())
cr_skip("Test requires CAP_NET_RAW or root privileges");
h = icmp_create();
cr_assert_not_null(h);
ret = recv_receive_packet(((struct icmp_handle *)h)->fd, buffer,
sizeof(buffer), &from);
cr_assert_eq(ret, 0, "Should return 0 when no data (EAGAIN)");
icmp_destroy(h);
}