Squid Web Cache master
Loading...
Searching...
No Matches
Icmp.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 1996-2025 The Squid Software Foundation and contributors
3 *
4 * Squid software is distributed under GPLv2+ license and includes
5 * contributions from numerous individuals and organizations.
6 * Please see the COPYING and CONTRIBUTORS files for details.
7 */
8
9/* DEBUG: section 37 ICMP Routines */
10
11#ifndef SQUID_SRC_ICMP_ICMP_H
12#define SQUID_SRC_ICMP_ICMP_H
13
14#include "ip/Address.h"
15
16#define PINGER_PAYLOAD_SZ 8192
17
18#define MAX_PAYLOAD 256 // WAS: SQUIDHOSTNAMELEN
19#define MAX_PKT4_SZ (sizeof(struct icmphdr) + sizeof(struct icmpEchoData) + 1)
20#define MAX_PKT6_SZ (sizeof(struct icmp6_hdr) + sizeof(struct icmpEchoData) + 1)
21
22#if USE_ICMP
23
24/* This is a line-data format struct. DO NOT alter. */
26{
27 pingerEchoData() { memset(&payload, 0, sizeof(payload)); }
29 unsigned char opcode = '\0';
30 int psize = 0;
32};
33
34/* This is a line-data format struct. DO NOT alter. */
36 pingerReplyData() { memset(&payload, 0, sizeof(payload)); }
38 unsigned char opcode = '\0';
39 int rtt = 0;
40 int hops = 0;
41 int psize = 0;
43};
44
46 struct timeval tv;
47 unsigned char opcode;
49};
50
51extern int icmp_pkts_sent;
52
53#endif /* USE_ICMP */
54
67class Icmp
68{
69public:
70 Icmp();
71 virtual ~Icmp() {}
72
74 virtual int Open() =0;
75
77 virtual void Close();
78
79#if USE_ICMP
80
90 virtual void SendEcho(Ip::Address &to, int opcode, const char *payload=nullptr, int len=0) =0;
91
93 virtual void Recv(void) =0;
94
95protected:
96 /* shared internal methods */
97
99 int CheckSum(unsigned short *ptr, int size);
100
115 int ipHops(int ttl);
116
118 void Log(const Ip::Address &addr, const uint8_t type, const char* pkt_str, const int rtt, const int hops);
119
120 /* no use wasting memory */
123#endif /* USE_ICMP */
124};
125
126#endif /* SQUID_SRC_ICMP_ICMP_H */
127
#define PINGER_PAYLOAD_SZ
Definition Icmp.h:16
int icmp_pkts_sent
Definition pinger.cc:97
#define MAX_PAYLOAD
Definition Icmp.h:18
int size
Definition ModDevPoll.cc:70
Definition Icmp.h:68
virtual void Close()
Shutdown pinger helper and control channel.
Definition Icmp.cc:26
int CheckSum(unsigned short *ptr, int size)
Calculate a packet checksum.
Definition Icmp.cc:39
virtual void SendEcho(Ip::Address &to, int opcode, const char *payload=nullptr, int len=0)=0
int icmp_ident
Definition Icmp.h:122
virtual void Recv(void)=0
Handle ICMP responses.
virtual int Open()=0
Start pinger helper and initiate control channel.
int icmp_sock
Definition Icmp.h:121
Icmp()
Definition Icmp.cc:17
virtual ~Icmp()
Definition Icmp.h:71
int ipHops(int ttl)
Definition Icmp.cc:68
Definition Config.h:18
char payload[MAX_PAYLOAD]
Definition Icmp.h:48
unsigned char opcode
Definition Icmp.h:47
struct timeval tv
Definition Icmp.h:46
pingerEchoData()
Definition Icmp.h:27
int psize
Definition Icmp.h:30
Ip::Address to
Definition Icmp.h:28
unsigned char opcode
Definition Icmp.h:29
char payload[PINGER_PAYLOAD_SZ]
Definition Icmp.h:31
unsigned char opcode
Definition Icmp.h:38
pingerReplyData()
Definition Icmp.h:36
char payload[PINGER_PAYLOAD_SZ]
Definition Icmp.h:42
Ip::Address from
Definition Icmp.h:37