Skip to content

johngarrett/pingpp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

about

  • written in C++, compiled and run on Arch Linux 5.6.3. See writeup.md for documentation and overview.
    • specifically, g++ *.cpp *.h -Wall -std=c++14 -O3

requirements

  • accept a hostname or IP address as terminal arguments
  • send ICMP echo requests in an infinite loop
  • report loss and rtt times

extra credit

  • support for ipv4 & 6
    • nmap makes you throw a -6 flag
  • allow to set TTL as an argument
  • any additional features

scratch pad

  • commands from ping
    • -a audible ping
    • -c count, the amount of ping packets to send
    • -D print timestamps
    • -h help
    • -m mark
    • -q queit, only show output at the end
    • -p packet size
    • -V version

status

  • ping ipv4 hosts
  • listen for and filter responses
  • support ipv6
  • command line
    • sanitization
    • show help logs = [X] -q quiet
  • [ ] #ifdef if <linux/icmp.h> and <linux/in.h> are avaliable, <netinet/ip_icmp.h> if not
  • [ ] ncurses support ??
  • fix pid issue
  • fix sendto and recvfrom
  • reduce use of cstrings
  • conform to c++ conventions (camel case)
  • add data to packets
  • impliment ttl for ipv6 packets
  • allow ping for hostname
  • track time for each packet
  • support macOS compilation
  • create man page
  • exceptions (include errno and handle)
  • print entire exception error
  • [ ] switch from icmp header to icmp packet
  • fix iterator issue
    • infinite loop for unspecified iterations
  • [ ] checksum for ipv6
  • entire packet should be -s size not only the data
  • correctly parse out from recv