Sebastian Krahmer <krahmer@suse.com>
Sebastien Wenske <sebastien@wenske.fr>
Sergey Merzlikin <sm@smsoft.ru>
+ Sergio Durigan Junior <sergiodj@sergiodj.net>
Sergio Rabellino <rabellino@di.unito.it>
Shigechika Aikawa <shige@luck.imasy.or.jp>
Silamael <Silamael@coronamundi.de>
#define PINGER_PAYLOAD_SZ 8192
#define MAX_PAYLOAD 256 // WAS: SQUIDHOSTNAMELEN
-#define MAX_PKT4_SZ (MAX_PAYLOAD + sizeof(struct timeval) + sizeof (char) + sizeof(struct icmphdr) + 1)
-#define MAX_PKT6_SZ (MAX_PAYLOAD + sizeof(struct timeval) + sizeof (char) + sizeof(struct icmp6_hdr) + 1)
+#define MAX_PKT4_SZ (sizeof(struct icmphdr) + sizeof(struct icmpEchoData) + 1)
+#define MAX_PKT6_SZ (sizeof(struct icmp6_hdr) + sizeof(struct icmpEchoData) + 1)
#if USE_ICMP
size_t icmp_pktsize = sizeof(struct icmphdr);
struct addrinfo *S = NULL;
+ static_assert(sizeof(*icmp) + sizeof(*echo) <= sizeof(pkt), "our custom ICMPv4 Echo payload fits the packet buffer");
+
memset(pkt, '\0', MAX_PKT4_SZ);
icmp = (struct icmphdr *) (void *) pkt;
++icmp_pkts_sent;
// Construct ICMP packet data content
- echo = (icmpEchoData *) (icmp + 1);
+ echo = reinterpret_cast<icmpEchoData *>(reinterpret_cast<char *>(pkt) + sizeof(*icmp));
echo->opcode = (unsigned char) opcode;
memcpy(&echo->tv, ¤t_time, sizeof(struct timeval));
struct addrinfo *S = NULL;
size_t icmp6_pktsize = 0;
+ static_assert(sizeof(*icmp) + sizeof(*echo) <= sizeof(pkt), "our custom ICMPv6 Echo payload fits the packet buffer");
+
memset(pkt, '\0', MAX_PKT6_SZ);
icmp = (struct icmp6_hdr *)pkt;
icmp6_pktsize = sizeof(struct icmp6_hdr);
// Fill Icmp6 ECHO data content
- echo = (icmpEchoData *) (pkt + sizeof(icmp6_hdr));
+ echo = reinterpret_cast<icmpEchoData *>(reinterpret_cast<char *>(pkt) + sizeof(*icmp));
echo->opcode = (unsigned char) opcode;
memcpy(&echo->tv, ¤t_time, sizeof(struct timeval));