feat: --tos param

This commit is contained in:
lohhiiccc 2026-04-23 13:53:52 +02:00
parent 7a76ff8d2a
commit 381f3bd159
7 changed files with 32 additions and 1 deletions

View file

@ -61,6 +61,14 @@ enum {
OPT_ARG_SECONDS, \
"Wait N seconds between packets" \
) \
X( \
'T', \
"tos", \
required_argument, \
cli_handle_tos, \
OPT_ARG_UINT, \
"Set Type of Service (TOS)" \
) \
X( \
't', \
"ttl", \

View file

@ -16,6 +16,7 @@ int cli_handle_quiet(const char *arg, void *config);
int cli_handle_size(const char *arg, void *config);
int cli_handle_linger(const char *arg, void *config);
int cli_handle_timeout(const char *arg, void *config);
int cli_handle_tos(const char *arg, void *config);
int cli_handle_ttl(const char *arg, void *config);
int cli_handle_verbose(const char *arg, void *config);
int cli_handle_version(const char *arg, void *config);

View file

@ -19,6 +19,7 @@ struct ping_config
uint64_t preload;
double interval;
uint8_t ttl;
uint8_t tos;
size_t packet_size;
double linger;
double timeout;

@ -1 +1 @@
Subproject commit e6693c97cc22b82adc3be85c72a5d5f655c69eb1
Subproject commit 71ca9abc2e05de9cf61b135a4699ed3bb97a8969

View file

@ -55,6 +55,7 @@ libping_core_la_SOURCES = \
cli/handlers/option_map.c \
cli/handlers/handle_size.c \
cli/handlers/handle_timeout.c \
cli/handlers/handle_tos.c \
cli/handlers/handle_ttl.c \
cli/handlers/handle_version.c \
cli/handlers/handle_verbose.c \

View file

@ -0,0 +1,14 @@
#include "ping/cli.h"
#include "internal/cli/parse_utils.h"
int
cli_handle_tos(const char *arg, void *config_void)
{
struct ping_config *config = (struct ping_config *)config_void;
uint64_t tos;
if (0 != cli_parse_uint64(arg, &tos) || tos > 255)
return CLI_ERROR;
config->tos = (uint8_t)tos;
return CLI_SUCCESS;
}

View file

@ -60,6 +60,12 @@ ping_create_handle(const struct ping_config *config)
icmp_destroy(handle);
return NULL;
}
if (0 != config->tos && 0 != icmp_set_tos(handle, config->tos))
{
dprintf(STDERR_FILENO, "%s: %s\n", g_prog_name, icmp_strerror(handle));
icmp_destroy(handle);
return NULL;
}
return handle;
}