From eb125bde1a2f14fd1f8022b622a921e5d0a2d6d2 Mon Sep 17 00:00:00 2001 From: vauden Date: Fri, 8 Nov 2024 20:09:21 +0100 Subject: [PATCH] Fixed loopback being catched --- .gitignore | 6 ------ includes/ft_ping.h | 2 +- objs/src/main.o | Bin 7344 -> 0 bytes objs/src/utils.o | Bin 2952 -> 0 bytes src/main.c | 20 ++++++++++---------- 5 files changed, 11 insertions(+), 17 deletions(-) delete mode 100644 objs/src/main.o delete mode 100644 objs/src/utils.o diff --git a/.gitignore b/.gitignore index c07dfad..2ec987a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,11 +1,5 @@ -<<<<<<< HEAD .vscode .cache generate_json.py ft_ping -======= -*.o -a.out -.vscode ->>>>>>> 00fcdacf31561477259f851446360c0b7fc79eb6 diff --git a/includes/ft_ping.h b/includes/ft_ping.h index 5d753ee..b34f7c8 100644 --- a/includes/ft_ping.h +++ b/includes/ft_ping.h @@ -17,7 +17,7 @@ #include #include -#define PACKET_SIZE 64 +#define PACKET_SIZE 56 struct icmp_header { diff --git a/objs/src/main.o b/objs/src/main.o deleted file mode 100644 index bb24153ff2bd93bfbcd1b1c8920cadc775c7b9b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7344 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 diff --git a/src/main.c b/src/main.c index fabf241..a0ce149 100644 --- a/src/main.c +++ b/src/main.c @@ -5,7 +5,7 @@ bool loop = true; int ft_ping(int sock, uint16_t seq, struct sockaddr_in *dst) { - unsigned char data[64]; + unsigned char data[PACKET_SIZE]; struct icmp_header *icmp_hdr = (struct icmp_header *)data; memset(data, 0, sizeof(data)); @@ -25,9 +25,9 @@ int ft_ping(int sock, uint16_t seq, struct sockaddr_in *dst) return (1); } -void ft_recv(int sock, uint16_t seq, char *ip, double start) +int ft_recv(int sock, uint16_t seq, double start) { - unsigned char data[64]; + unsigned char data[PACKET_SIZE]; struct icmp_header *icmp_hdr = (struct icmp_header *)(data + 20); int n_bytes; struct sockaddr_in addr; @@ -38,16 +38,16 @@ void ft_recv(int sock, uint16_t seq, char *ip, double start) memset(data, 0, sizeof(data)); n_bytes = recvfrom(sock, data, sizeof(data), 0, (struct sockaddr *)&addr, (socklen_t *)&len); if (n_bytes < 1) - return; + return (1); time = (get_timestamp() - start) * 1000; checksum = icmp_hdr->checksum; icmp_hdr->checksum = 0; if (icmp_hdr->seq != seq || make_checksum((uint16_t *)icmp_hdr, sizeof(*icmp_hdr)) != checksum) - return; + return (0); fill_timestamp_array(&stats, time); stats.n_packet_recv++; - printf("%d bytes from %s: icmp_seq=%d ttl=%d time=%5.3fms\n", n_bytes, ip, icmp_hdr->seq, (uint8_t)data[8], time); - return; + printf("%d bytes from %s: icmp_seq=%d ttl=%d time=%5.3fms\n", n_bytes, inet_ntoa(addr.sin_addr), icmp_hdr->seq, (uint8_t)data[8], time); + return (1); } void handler(int code) @@ -90,7 +90,7 @@ bool init_socket(int *sock, struct sockaddr_in *dst, char *host) void print_recap(char *ip) { printf("--- %s ping statistics ---\n", ip); - printf("%d packed transmitted, %d received, %0.0f%% packet loss\n", stats.n_packet_sent, stats.n_packet_recv, (double)(100 - (stats.n_packet_recv / stats.n_packet_sent) * 100)); + printf("%d packed transmitted, %d received, %0.0f%% packet loss\n", stats.n_packet_sent, stats.n_packet_recv, (double)(stats.n_packet_sent - stats.n_packet_recv) / stats.n_packet_sent * 100); printf("round-trip min/avg/max/stddev = %5.3f/%5.3f/%5.3f/%5.3f ms\n", get_min(stats.timestamp_array), get_avg(stats.timestamp_array), get_max(stats.timestamp_array), get_stddev(stats.timestamp_array)); } @@ -116,7 +116,7 @@ int main(int argc, char **argv) return (1); } } - if (argc < 2 || argv[optind] == NULL || argv[optind][0] == 0) + if (argc < 2 || argv[optind] == NULL || argv[optind][0] == 0) // optind is a value given by getopt() that's equal to the first argument that isn't a flag { fprintf(stderr, "ERROR : usage : %s {-v?} [ADRESS]\n", argv[0]); return (0); @@ -134,7 +134,7 @@ int main(int argc, char **argv) start = get_timestamp(); if (ft_ping(sock, seq, &dst) == 0) break; - ft_recv(sock, seq, ip, start); + while (!ft_recv(sock, seq, start)); seq++; sleep(1); }