From 6cda2e8db548ff7c023f33f43e0a7e9773cb1714 Mon Sep 17 00:00:00 2001 From: lohhiiccc <96543753+lohhiiccc@users.noreply.github.com> Date: Wed, 4 Feb 2026 23:09:36 +0100 Subject: [PATCH] refactor: standardize code style and improve clarity --- includes/internal/icmp_utils.h | 2 +- src/handle/create.c | 2 +- src/packet/build.c | 2 +- src/recv/api/process.c | 5 +++-- src/recv/core/receive_packet.c | 5 ++++- src/send/api/raw.c | 8 ++++---- 6 files changed, 14 insertions(+), 10 deletions(-) diff --git a/includes/internal/icmp_utils.h b/includes/internal/icmp_utils.h index 2162bbe..aa7f722 100644 --- a/includes/internal/icmp_utils.h +++ b/includes/internal/icmp_utils.h @@ -8,7 +8,7 @@ /* Checksum calculation (RFC 1071) */ uint16_t icmp_checksum(const void *data, size_t len); -/* Time helpers - return 0 on success, -1 on error */ +/* Time helpers */ int icmp_get_time(struct timespec *ts); int64_t icmp_time_diff_ns(const struct timespec *start, const struct timespec *end); diff --git a/src/handle/create.c b/src/handle/create.c index 1bd27b7..a9ff241 100644 --- a/src/handle/create.c +++ b/src/handle/create.c @@ -25,7 +25,7 @@ icmp_create(void) return NULL; } - if ( -1 == socket_configure(h)) + if (-1 == socket_configure(h)) { close(h->fd); free(h); diff --git a/src/packet/build.c b/src/packet/build.c index 43086ab..773ded8 100644 --- a/src/packet/build.c +++ b/src/packet/build.c @@ -24,7 +24,7 @@ icmp_build_packet(void *buffer, size_t buffer_len, uint8_t type, uint8_t code, write_icmp_header(h, type, code, header_rest); if (payload_len > 0) - memcpy((unsigned char*)buffer + sizeof(struct icmp_header), payload, + memcpy((uint8_t *)buffer + sizeof(struct icmp_header), payload, payload_len); h->checksum = htons(icmp_checksum(h, required_len)); diff --git a/src/recv/api/process.c b/src/recv/api/process.c index 50a15ea..6eeda34 100644 --- a/src/recv/api/process.c +++ b/src/recv/api/process.c @@ -3,13 +3,14 @@ #include "internal/icmp_recv.h" #include -#define MAX_PACKET_SIZE 1500 +/* Buffer for incoming packets: IP header + ICMP */ +#define RECV_BUFFER_SIZE 1500 int icmp_process(icmp_handle_t *h, icmp_callback_t cb, void *userdata, size_t max_packets) { - uint8_t buffer[MAX_PACKET_SIZE]; + uint8_t buffer[RECV_BUFFER_SIZE]; struct sockaddr_in from; ssize_t recv_len; int processed; diff --git a/src/recv/core/receive_packet.c b/src/recv/core/receive_packet.c index dc6a510..159c6ac 100644 --- a/src/recv/core/receive_packet.c +++ b/src/recv/core/receive_packet.c @@ -15,6 +15,9 @@ recv_receive_packet(int fd, void *buffer, size_t buffer_len, n = recvfrom(fd, buffer, buffer_len, 0, (struct sockaddr *)from, &from_len); if (n < 0) - return (EAGAIN == errno || EWOULDBLOCK == errno) ? 0 : -1; + { + int saved_errno = errno; + return (EAGAIN == saved_errno || EWOULDBLOCK == saved_errno) ? 0 : -1; + } return n; } diff --git a/src/send/api/raw.c b/src/send/api/raw.c index 8123dc7..f65064a 100644 --- a/src/send/api/raw.c +++ b/src/send/api/raw.c @@ -4,9 +4,9 @@ #include "internal/icmp_send.h" #include -/* Maximum payload size for simplicity */ -#define MAX_PAYLOAD_SIZE 1024 -#define MAX_PACKET_SIZE (8 + MAX_PAYLOAD_SIZE) +/* MTU(1500) - IP header(20) - ICMP header(8) = 1472 */ +#define MAX_PAYLOAD_SIZE 1472 +#define ICMP_HEADER_SIZE 8 /* Forward declarations */ static int validate_payload(struct icmp_handle *h, const void *payload, @@ -25,7 +25,7 @@ icmp_send_raw(icmp_handle_t *h, uint8_t type, uint8_t code, if (0 == validate_payload(h, payload, len)) return -1; - uint8_t buffer[MAX_PACKET_SIZE]; + uint8_t buffer[ICMP_HEADER_SIZE + MAX_PAYLOAD_SIZE]; int packet_len = icmp_build_packet(buffer, sizeof(buffer), type, code, header_rest, payload, len);