add: implement -s

This commit is contained in:
2025-11-18 08:20:19 -06:00
parent 878258aa98
commit ee09a2e099
2 changed files with 9 additions and 6 deletions

View File

@ -76,6 +76,7 @@ static int get_setting(char * const *av, struct setting *setting)
{NULL, "n", OPTION, false}, {NULL, "n", OPTION, false},
{NULL, "W",ARGUMENT, "0"}, {NULL, "W",ARGUMENT, "0"},
{"ttl", NULL, ARGUMENT, "116"}, {"ttl", NULL, ARGUMENT, "116"},
{NULL, "s", ARGUMENT, "56"},
{NULL, NULL, 0, NULL}, {NULL, NULL, 0, NULL},
}; };
char *hostname = parsing(av, parameters); char *hostname = parsing(av, parameters);
@ -90,7 +91,9 @@ static int get_setting(char * const *av, struct setting *setting)
if (parsing_number(parameters[4].value, 0, 2147483647, &setting->timeout)) if (parsing_number(parameters[4].value, 0, 2147483647, &setting->timeout))
return 1; return 1;
if (parsing_number(parameters[5].value, 0, 255, &setting->ttl)) if (parsing_number(parameters[5].value, 0, 255, &setting->ttl))
return 1; return 2;
if (parsing_number(parameters[6].value, 0, 2147483647, &setting->payload_size))
return 3;
return 0; return 0;
} }
@ -102,8 +105,7 @@ int main(int ac, char **av)
if (get_setting(av + 1, &settings)) if (get_setting(av + 1, &settings))
return 1; return 1;
size_t payload_size = 56; size_t packet_size = sizeof(struct icmphdr) + settings.payload_size;
size_t packet_size = sizeof(struct icmphdr) + payload_size;
signal(SIGINT, signal_handler); signal(SIGINT, signal_handler);
@ -125,7 +127,7 @@ int main(int ac, char **av)
return 1; return 1;
} }
char *packet = packet_create(payload_size); char *packet = packet_create(settings.payload_size);
if (packet == NULL) if (packet == NULL)
{ {
close(sockfd); close(sockfd);
@ -173,11 +175,11 @@ int main(int ac, char **av)
double time_interval = ((stop.tv_sec - start.tv_sec) * 1000 + ((double)stop.tv_usec - (double) start.tv_usec) / 1000); double time_interval = ((stop.tv_sec - start.tv_sec) * 1000 + ((double)stop.tv_usec - (double) start.tv_usec) / 1000);
struct icmphdr *hdr = (struct icmphdr *) packet; struct icmphdr *hdr = (struct icmphdr *) packet;
printf("%zu bytes from %s (%s): icmp_seq=%d, ttl=%u, time=%fms\n", payload_size + sizeof(struct icmphdr), settings.dest.reverse_dns, settings.dest.ipstr, htons(hdr->un.echo.sequence), 116, time_interval); printf("%zu bytes from %s (%s): icmp_seq=%d, ttl=%u, time=%fms\n", packet_size, settings.dest.reverse_dns, settings.dest.ipstr, htons(hdr->un.echo.sequence), 116, time_interval);
sleep(1); sleep(1);
if (packet_update(packet, payload_size)) if (packet_update(packet, settings.payload_size))
{ {
close(sockfd); close(sockfd);
free(buffer); free(buffer);

View File

@ -13,5 +13,6 @@ struct setting
bool numeric_only; bool numeric_only;
size_t timeout; size_t timeout;
size_t ttl; size_t ttl;
size_t payload_size;
struct hostenv dest; struct hostenv dest;
}; };