diff --git a/src/main.c b/src/main.c index 28948f2..15008ec 100644 --- a/src/main.c +++ b/src/main.c @@ -112,21 +112,21 @@ static int create_socket(struct setting const *settings) return -1; } - ret = setsockopt(sockfd, IPPROTO_IP, IP_TTL, &settings->ttl, sizeof(uint8_t)); + ret = setsockopt(sockfd, IPPROTO_IP, IP_TTL, &settings->ttl, sizeof(settings->ttl)); if (ret != 0) { + close(sockfd); print_err("Failed to setsockopt(): ttl"); return -1; } - - struct timeval tv = {1, 0}; + struct timeval tv = {2, 0}; ret = setsockopt(sockfd, SOL_SOCKET, SO_RCVTIMEO, &tv, sizeof(tv)); if (ret != 0) { + close(sockfd); print_err("Failed to setsockopt(): recv timeout"); return -1; } - return sockfd; } @@ -209,13 +209,13 @@ int main(int ac, char **av) ret = recvfrom(sockfd, buffer, recv_packet_size, 0, (struct sockaddr *) &sender, &len); if (ret < 0) { - print_err("error: receive packet failed."); + print_err("error: receive packet failed.%zd", ret); goto error3; } gettimeofday(&stop, NULL); } while (((size_t) ret != recv_packet_size) || (check_reply(&settings.dest.ip, &sender, packet, buffer + sizeof(struct iphdr), packet_size))); - + if (((struct icmphdr *) buffer + sizeof(struct iphdr))->type == 0) stats.packets_received++;