64 lines
1.4 KiB
C
64 lines
1.4 KiB
C
#include <criterion/criterion.h>
|
|
#include "icmp.h"
|
|
#include "internal/icmp_internal.h"
|
|
#include "internal/icmp_send.h"
|
|
#include "test_helpers.h"
|
|
|
|
/* Test 1: Set TTL successfully */
|
|
Test(send_set_socket_ttl, success)
|
|
{
|
|
if (0 == has_net_raw_capability())
|
|
{
|
|
cr_skip("Test requires CAP_NET_RAW or root privileges");
|
|
}
|
|
|
|
icmp_handle_t *h = icmp_create();
|
|
cr_assert_not_null(h);
|
|
|
|
struct icmp_handle *handle = (struct icmp_handle *)h;
|
|
|
|
int ret = send_set_socket_ttl(handle, 64);
|
|
|
|
cr_assert_eq(ret, 0, "Expected success (0)");
|
|
|
|
icmp_destroy(h);
|
|
}
|
|
|
|
/* Test 2: Invalid FD returns -1 */
|
|
Test(send_set_socket_ttl, invalid_fd)
|
|
{
|
|
struct icmp_handle h = {0};
|
|
h.fd = -1;
|
|
h.last_error = ICMP_OK;
|
|
h.error_msg[0] = '\0';
|
|
|
|
int ret = send_set_socket_ttl(&h, 64);
|
|
|
|
cr_assert_eq(ret, -1, "Expected -1 for invalid FD");
|
|
cr_assert_eq(h.last_error, ICMP_ERR_SOCKET,
|
|
"Error code should be ICMP_ERR_SOCKET");
|
|
}
|
|
|
|
/* Test 3: Different TTL values */
|
|
Test(send_set_socket_ttl, different_values)
|
|
{
|
|
if (0 == has_net_raw_capability())
|
|
{
|
|
cr_skip("Test requires CAP_NET_RAW or root privileges");
|
|
}
|
|
|
|
icmp_handle_t *h = icmp_create();
|
|
cr_assert_not_null(h);
|
|
|
|
struct icmp_handle *handle = (struct icmp_handle *)h;
|
|
|
|
/* TTL=1 */
|
|
int ret = send_set_socket_ttl(handle, 1);
|
|
cr_assert_eq(ret, 0, "Expected success with TTL=1");
|
|
|
|
/* TTL=255 */
|
|
ret = send_set_socket_ttl(handle, 255);
|
|
cr_assert_eq(ret, 0, "Expected success with TTL=255");
|
|
|
|
icmp_destroy(h);
|
|
}
|