#include <Icmp6.h>
Public Member Functions | |
Icmp6 () | |
~Icmp6 () override | |
int | Open () override |
Start pinger helper and initiate control channel. More... | |
void | SendEcho (Ip::Address &, int, const char *, int) override |
void | Recv (void) override |
virtual void | Close () |
Shutdown pinger helper and control channel. More... | |
Protected Member Functions | |
int | CheckSum (unsigned short *ptr, int size) |
Calculate a packet checksum. More... | |
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. More... | |
Protected Attributes | |
int | icmp_sock |
int | icmp_ident |
Detailed Description
Class partially implementing RFC 4443 - ICMPv6 for IP version 6. Provides ECHO-REQUEST, ECHO-REPLY (section 4)
Constructor & Destructor Documentation
◆ Icmp6()
◆ ~Icmp6()
|
override |
Definition at line 92 of file Icmp6.cc.
References Icmp::Close().
Member Function Documentation
◆ CheckSum()
Definition at line 38 of file Icmp.cc.
References size.
Referenced by Icmp4::SendEcho(), SendEcho(), and IcmpStub::testChecksum().
◆ Close()
|
virtualinherited |
Reimplemented in IcmpPinger, IcmpSquid, and IcmpStub.
Definition at line 25 of file Icmp.cc.
References Icmp::icmp_ident, and Icmp::icmp_sock.
Referenced by Icmp4::~Icmp4(), ~Icmp6(), IcmpPinger::Close(), and main().
◆ ipHops()
Translate TTL to a hop distance
- Parameters
-
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 67 of file Icmp.cc.
Referenced by Icmp4::Recv(), and IcmpStub::testHops().
◆ Log()
|
protectedinherited |
Definition at line 88 of file Icmp.cc.
References current_time, and debugs.
Referenced by Icmp4::Recv(), Recv(), Icmp4::SendEcho(), and SendEcho().
◆ Open()
|
overridevirtual |
Implements Icmp.
Definition at line 98 of file Icmp6.cc.
References DBG_CRITICAL, DBG_IMPORTANT, debugs, Icmp::icmp_ident, Icmp::icmp_sock, IPPROTO_ICMPV6, MYNAME, and xstrerr().
Referenced by main().
◆ Recv()
|
overridevirtual |
Reads an RFC 4443 Icmp6 ECHO-REPLY Packet from the network.
Implements Icmp.
Definition at line 196 of file Icmp6.cc.
References control, DBG_CRITICAL, debugs, Ip::Address::FreeAddr(), Icmp::icmp_ident, Icmp::icmp_sock, IcmpPacketType(), Ip::Address::InitAddr(), Icmp::Log(), MAX_PKT6_SZ, now, icmpEchoData::opcode, PINGER_PAYLOAD_SZ, IcmpPinger::SendResult(), icmpEchoData::tv, tvSubMsec(), and xmalloc.
Referenced by main().
◆ SendEcho()
|
overridevirtual |
Generates an RFC 4443 Icmp6 ECHO Packet and sends into the network.
Implements Icmp.
Definition at line 118 of file Icmp6.cc.
References assert, Icmp::CheckSum(), current_time, DBG_IMPORTANT, debugs, Ip::Address::FreeAddr(), Ip::Address::getAddrInfo(), Icmp::icmp_ident, icmp_pkts_sent, Icmp::icmp_sock, LOCAL_ARRAY, Icmp::Log(), MAX_PAYLOAD, MAX_PKT6_SZ, MYNAME, icmpEchoData::opcode, icmpEchoData::payload, icmpEchoData::tv, and xstrerr().
Referenced by IcmpPinger::Recv().
Member Data Documentation
◆ icmp_ident
|
protectedinherited |
Definition at line 122 of file Icmp.h.
Referenced by Icmp::Icmp(), Icmp::Close(), Icmp4::Open(), Open(), Icmp4::Recv(), Recv(), Icmp4::SendEcho(), and SendEcho().
◆ icmp_sock
|
protectedinherited |
Definition at line 121 of file Icmp.h.
Referenced by Icmp::Icmp(), Icmp::Close(), IcmpPinger::Close(), IcmpSquid::Close(), Icmp4::Open(), Open(), IcmpPinger::Open(), IcmpSquid::Open(), Icmp4::Recv(), Recv(), IcmpSquid::Recv(), Icmp4::SendEcho(), SendEcho(), and IcmpSquid::SendEcho().
The documentation for this class was generated from the following files: