]> git.ipfire.org Git - thirdparty/squid.git/blob - src/icmp/IcmpSquid.h
Source Format Enforcement (#763)
[thirdparty/squid.git] / src / icmp / IcmpSquid.h
1 /*
2 * Copyright (C) 1996-2021 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 _INCLUDE_ICMPSQUID_H
12 #define _INCLUDE_ICMPSQUID_H
13
14 #include "Icmp.h"
15
16 /**
17 * Implements a non-blocking pseudo-ICMP engine for squid internally.
18 *
19 * Rather than doing all the work itself it passes each request off to
20 * an external pinger helper and returns results form that helper to squid.
21 *
22 * Provides ECHO-REQUEST, ECHO-REPLY in a protocol-neutral manner.
23 */
24 class IcmpSquid : public Icmp
25 {
26 public:
27 IcmpSquid();
28 virtual ~IcmpSquid();
29
30 virtual int Open();
31 virtual void Close();
32
33 void DomainPing(Ip::Address &to, const char *domain);
34
35 #if USE_ICMP
36 virtual void SendEcho(Ip::Address &to, int opcode, const char* payload=NULL, int len=0);
37 virtual void Recv(void);
38 #endif
39 };
40
41 // global engine within squid.
42 extern IcmpSquid icmpEngine;
43
44 #endif /* _INCLUDE_ICMPSQUID_H */
45