add: implement -s
This commit is contained in:
14
src/main.c
14
src/main.c
@ -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);
|
||||||
|
|||||||
@ -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;
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user