# -sam k (commport5@lucidx.com)

sub ip_decode {
 my ($pkt) = @_;
 my ($w, $olen, %ipa);
 ($w,$ipa{tos},$ipa{len},$ipa{id},$ipa{foffset},$ipa{ttl},$ipa{proto},$ipa{cksum},$ipa{src_ip},$ipa{dest_ip},$ipa{options})
 = unpack('CCnnnCCnNNa*', $pkt);
 $ipa{ver} = ($w & 0xf0) >> 4;
 $ipa{hlen} = $w & 0x0f;
 $ipa{flags} = $ipa{foffset} >> 13;
# $ipa{foffset} = ($ipa{foffset} & 0x1fff) << 3;
 $olen = $ipa{hlen} - 5;
 $olen = 0, if ($olen < 0);
 ($ipa{options}, $ipa{data}) = unpack("a" . $olen . "a*", $ipa{options});
 $ipa{src_ip} = to_dotquad($ipa{src_ip});
 $ipa{dest_ip} = to_dotquad($ipa{dest_ip});
 return %ipa;
}

1;
