From 3a3b4279ad1f637d4bbdd7a6ed6d55d925a27b69 Mon Sep 17 00:00:00 2001 From: starnakin Date: Wed, 19 Nov 2025 09:12:20 -0600 Subject: [PATCH] add: preload --- src/main.c | 17 +++++++++++++++-- src/setting.h | 1 + 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/main.c b/src/main.c index 5df6710..1d458c8 100644 --- a/src/main.c +++ b/src/main.c @@ -77,6 +77,7 @@ static int get_setting(char * const *av, struct setting *setting) {NULL, "n", OPTION, false}, {"ttl", NULL, ARGUMENT, "116"}, {NULL, "s", ARGUMENT, "56"}, + {NULL, "p", ARGUMENT, "0"}, {NULL, NULL, 0, NULL}, }; char *hostname = parsing(av, parameters); @@ -90,9 +91,11 @@ static int get_setting(char * const *av, struct setting *setting) size_t ttl; if (parsing_number(parameters[3].value, 0, 255, &ttl)) return 2; + setting->ttl = ttl; if (parsing_number(parameters[4].value, 0, 2147483647, &setting->payload_size)) return 3; - setting->ttl = ttl; + if (parsing_number(parameters[5].value, 0, 2147483647, &setting->preload)) + return 4; return 0; } @@ -180,6 +183,17 @@ int main(int ac, char **av) bzero(&stats, sizeof(struct statistics)); print_header(&settings); + for (size_t i = 0; i < settings.payload_size; i++) + { + if (sendto(sockfd, packet, packet_size, 0, (struct sockaddr *) &settings.dest.ip, sizeof(settings.dest.ip)) == -1) + { + print_err("error: send packet failed."); + free(packet); + close(sockfd); + return 2; + } + } + while (loop) { struct timeval stop, start; @@ -198,7 +212,6 @@ int main(int ac, char **av) int ret = 0; do { - buffer[0] = 0; ret = recvfrom(sockfd, buffer, packet_size, 0, (struct sockaddr *) &sender, &len) < 0; if (ret == -1) { diff --git a/src/setting.h b/src/setting.h index 950e225..e35b925 100644 --- a/src/setting.h +++ b/src/setting.h @@ -16,4 +16,5 @@ struct setting uint8_t ttl; size_t payload_size; struct hostenv dest; + size_t preload; };