#include <Icmp4.h>

Inheritance diagram for Icmp4:
Collaboration diagram for Icmp4:

Public Member Functions

 Icmp4 ()
 
 ~Icmp4 () 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
 Handle ICMP responses. More...
 
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 792 - ICMP for IP version 4. Provides ECHO-REQUEST, ECHO-REPLY (section 4.1)

Definition at line 126 of file Icmp4.h.

Constructor & Destructor Documentation

◆ Icmp4()

Icmp4::Icmp4 ( )

Definition at line 55 of file Icmp4.cc.

◆ ~Icmp4()

Icmp4::~Icmp4 ( )
override

Definition at line 60 of file Icmp4.cc.

References Icmp::Close().

Member Function Documentation

◆ CheckSum()

int Icmp::CheckSum ( unsigned short *  ptr,
int  size 
)
protectedinherited

Definition at line 38 of file Icmp.cc.

References size.

Referenced by SendEcho(), Icmp6::SendEcho(), and IcmpStub::testChecksum().

◆ Close()

void Icmp::Close ( void  )
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(), Icmp6::~Icmp6(), IcmpPinger::Close(), and main().

◆ ipHops()

int Icmp::ipHops ( int  ttl)
protectedinherited

Translate TTL to a hop distance

Parameters
ttlnegative : n > 33
ttln(0...32) : 32 >= n >= 1
ttln(33...62) : 32 >= n >= 1
ttln(63...64) : 2 >= n >= 1
ttln(65...128) : 64 >= n >= 1
ttln(129...192) : 64 >= n >= 1
ttln(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 Recv(), and IcmpStub::testHops().

◆ Log()

void Icmp::Log ( const Ip::Address addr,
const uint8_t  type,
const char *  pkt_str,
const int  rtt,
const int  hops 
)
protectedinherited

Definition at line 88 of file Icmp.cc.

References current_time, and debugs.

Referenced by Recv(), Icmp6::Recv(), SendEcho(), and Icmp6::SendEcho().

◆ Open()

int Icmp4::Open ( )
overridevirtual

Implements Icmp.

Definition at line 66 of file Icmp4.cc.

References DBG_CRITICAL, DBG_IMPORTANT, debugs, Icmp::icmp_ident, Icmp::icmp_sock, IPPROTO_ICMP, MYNAME, and xstrerr().

Referenced by main().

◆ Recv()

◆ SendEcho()

void Icmp4::SendEcho ( Ip::Address to,
int  opcode,
const char *  payload,
int  len 
)
overridevirtual

Construct and Send an ECHO request

Parameters
toDestination address being 'pinged'
opcodeSpecific code for ECHO request, see RFC ????.
payloadA payload MAY be sent in the ICMP message. Content longer than MAX_PAYLOAD will be truncated.
lenLength of the payload in bytes if any is to be sent or 0.

Implements Icmp.

Definition at line 83 of file Icmp4.cc.

References assert, 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, Icmp::Log(), MAX_PAYLOAD, MAX_PKT4_SZ, MYNAME, icmpEchoData::opcode, icmpEchoData::payload, icmpEchoData::tv, and xstrerr().

Referenced by IcmpPinger::Recv().

Member Data Documentation

◆ icmp_ident

int Icmp::icmp_ident
protectedinherited

◆ icmp_sock


The documentation for this class was generated from the following files:

 

Introduction

Documentation

Support

Miscellaneous

Web Site Translations

Mirrors