|
Squid Web Cache master
|
#include <Icmp4.h>
Public Member Functions | |
| Icmp4 () | |
| ~Icmp4 () override | |
| int | Open () override |
| Start pinger helper and initiate control channel. | |
| void | SendEcho (Ip::Address &, int, const char *, int) override |
| void | Recv (void) override |
| Handle ICMP responses. | |
| virtual void | Close () |
| Shutdown pinger helper and control channel. | |
Protected Member Functions | |
| int | CheckSum (unsigned short *ptr, int size) |
| Calculate a packet checksum. | |
| int | ipHops (int ttl) |
| void | Log (const Ip::Address &addr, const uint8_t type, const char *pkt_str, const int rtt, const int hops) |
| Log the packet. | |
Protected Attributes | |
| int | icmp_sock |
| int | icmp_ident |
Class partially implementing RFC 792 - ICMP for IP version 4. Provides ECHO-REQUEST, ECHO-REPLY (section 4.1)
|
override |
Definition at line 62 of file Icmp4.cc.
References Icmp::Close().
Definition at line 39 of file Icmp.cc.
References size.
Referenced by SendEcho(), Icmp6::SendEcho(), and IcmpStub::testChecksum().
|
virtualinherited |
Reimplemented in IcmpPinger, IcmpSquid, and IcmpStub.
Definition at line 26 of file Icmp.cc.
References Icmp::icmp_ident, Icmp::icmp_sock, and xclose().
Referenced by ~Icmp4(), Icmp6::~Icmp6(), IcmpPinger::Close(), and main().
Translate TTL to a hop distance
| ttl | negative : n > 33 |
| ttl | n(0...32) : 32 >= n >= 1 |
| ttl | n(33...62) : 32 >= n >= 1 |
| ttl | n(63...64) : 2 >= n >= 1 |
| ttl | n(65...128) : 64 >= n >= 1 |
| ttl | n(129...192) : 64 >= n >= 1 |
| ttl | n(193...) : n < 255 |
XXX: BUG? ttl<0 can produce high hop values XXX: BUG? ttl>255 can produce zero or negative hop values
Definition at line 68 of file Icmp.cc.
Referenced by Recv(), and IcmpStub::testHops().
|
protectedinherited |
Definition at line 89 of file Icmp.cc.
References current_time, and debugs.
|
overridevirtual |
Implements Icmp.
Definition at line 68 of file Icmp4.cc.
References DBG_CRITICAL, DBG_IMPORTANT, debugs, Icmp::icmp_ident, Icmp::icmp_sock, IPPROTO_ICMP, MYNAME, xsocket(), and xstrerr().
Referenced by main().
|
overridevirtual |
Implements Icmp.
Definition at line 160 of file Icmp4.cc.
References control, DBG_CRITICAL, debugs, Ip::Address::FreeAddr(), pingerReplyData::from, pingerReplyData::hops, ICMP_ECHOREPLY, Icmp::icmp_ident, Icmp::icmp_sock, icmphdr, IcmpPacketType(), Ip::Address::InitAddr(), iphdr, Icmp::ipHops(), MAX_PAYLOAD, MAX_PKT4_SZ, pingerReplyData::opcode, PINGER_PAYLOAD_SZ, pingerReplyData::psize, pingerReplyData::rtt, IcmpPinger::SendResult(), tvSubMsec(), xmalloc, and xrecvfrom().
Referenced by main().
|
overridevirtual |
Construct and Send an ECHO request
| to | Destination address being 'pinged' |
| opcode | Specific code for ECHO request, see RFC ????. |
| payload | A payload MAY be sent in the ICMP message. Content longer than MAX_PAYLOAD will be truncated. |
| len | Length of the payload in bytes if any is to be sent or 0. |
Implements Icmp.
Definition at line 85 of file Icmp4.cc.
References assert, Assure, Icmp::CheckSum(), current_time, DBG_IMPORTANT, debugs, Ip::Address::FreeAddr(), Ip::Address::getAddrInfo(), ICMP_ECHO, Icmp::icmp_ident, icmp_pkts_sent, Icmp::icmp_sock, icmphdr, LOCAL_ARRAY, MAX_PAYLOAD, MAX_PKT4_SZ, icmpEchoData::opcode, icmpEchoData::payload, icmpEchoData::tv, xsendto(), and xstrerr().
Referenced by IcmpPinger::Recv().
|
protectedinherited |
Definition at line 122 of file Icmp.h.
Referenced by Icmp::Icmp(), Icmp::Close(), Open(), Icmp6::Open(), Recv(), Icmp6::Recv(), SendEcho(), and Icmp6::SendEcho().
|
protectedinherited |
Definition at line 121 of file Icmp.h.
Referenced by Icmp::Icmp(), Icmp::Close(), IcmpPinger::Close(), IcmpSquid::Close(), Open(), Icmp6::Open(), IcmpPinger::Open(), IcmpSquid::Open(), Recv(), Icmp6::Recv(), IcmpSquid::Recv(), SendEcho(), Icmp6::SendEcho(), and IcmpSquid::SendEcho().