Module: EM::Traceroute

Defined in:
lib/emtraceroute/version.rb,
lib/emtraceroute/hop.rb,
lib/emtraceroute.rb

Defined Under Namespace

Classes: Hop

Constant Summary collapse

VERSION =
'0.0.2'

Class Method Summary collapse

Class Method Details

.start_trace(target, settings) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/emtraceroute.rb', line 16

def self.start_trace target, settings
  fd = Socket.new(Socket::AF_INET, Socket::SOCK_RAW, Socket::IPPROTO_ICMP)
  fd.setsockopt(Socket::IPPROTO_IP, Socket::IP_HDRINCL, 1)

  conn = EM.watch(fd, EM::TracerouteHandler, target, settings)
  conn.notify_readable = true
  conn.notify_writable = true

  unless settings["hop_callback"]
    conn.deferred.callback {|hop| puts hop }
  end
end