#!/usr/bin/env ruby

require 'RubyLibtrace'
#require 'rlt-support'

# 1925, Sun 6 Apr 08 (PDT)
# IP.rb: Demonstrate IPv4 header decodes
# Copyright (C) 2008, Nevil Brownlee, U Auckland | CAIDA | Wand


def flag(l)
   l ? '1' : '0'
end

f = Trace.new(ARGV[0])
f.start

n = 0;  nip = 0
f.each_packet do |pkt|
   n += 1

   ip = pkt.ip
   next if !ip

  print "Packet #{n}: version=#{ip.version}, hdr_len=#{ip.hdr_len}, " +
      "traffic_class=#{ip.traffic_class}, pkt_len=#{ip.pkt_len}\n"
   print "ident=#{ip.ident}, rf?=#{flag(ip.rf?)}, " +
      "df?=#{flag(ip.df?)}, mf?=#{flag(ip.mf?)}, " +
     "frag_offset=#{ip.frag_offset}\n"
   print "ttl=#{ip.ttl}, proto=#{ip.proto}. hdr_checksum=#{ip.hdr_checksum}\n"
   print "Source=#{ip.src_prefix},  Dest=#{ip.dst_prefix}\n\n"

   nip += 1
   break if nip == 5
end

