# -sam k (commport5@lucidx.com)

use POSIX qw(strftime);

sub format {
 ($strg,$vers,$ihl,$tos,$tot,$id,$frg,$ttl,$pro,$chc,$saddr,$daddr,$sport,$dport,$seq,$aseq,$dof,$res1,$res2,$urg,$ack,$psh,$rst,$syn,$fin,$win,$chk,$data) = @_;
 if ($win == 16384) {
  $dff = 1;
 }
 else {
  $dff = 0;
 }
 $tm = strftime "%H:%M:%S", localtime;
 $tm .= ".$time";
 $str = $strg;
 $nstrg = $strg;
 %string = (
        "saddr", $stest,
        "daddr", $dtest,
        "source", $sname,
        "dest", $dname,
        "shost", $sname,
        "dhost", $dname,
        "sserv", $stype,
        "dserv", $dtype,
        "version", $vers,
        "ihl", $ihl,
        "tos", $tos,
        "totlen", $tot,
        "id", $id,
        "fragoff", $frg,
        "ttl", $ttl,
        "protocol", $pro,
        "proto", $prt,
        "check1", $chc,
        "rawsaddr", $saddr,
        "rawdaddr", $daddr,
        "sport", $sport,
        "dport", $dport,
        "sequence", $seq,
        "seq", $seq,
        "ackseq", $aseq,
        "doff", $dof,
        "res1", $res1,
        "res2", $res2,
        "urg", $urg,
        "ack", $ack,
        "psh", $psh,
        "rst", $rst,
        "syn", $syn,
        "fin", $fin,
        "winsize", $win,
        "hexwin", sprintf("%x", $win),
        "df", $dff,
        "check2", $chk,
        "data", $data,
        "time", $tm,
        "headers", $headers,
 );
 if ($string{"data"} =~ /^\s*?$/) {
  $string{"data"} = "";
 }
 $string{"seq"} =~ s/^-//;
 $string{"sequence"} =~ s/^-//;
 $string{"ackseq"} =~ s/^-//;
 $nstrg =~ s/\\t/\t/g;
 $nstrg =~ s/\\n/\n/g;
 $nstrg =~ s/\$([A-Za-z0-9]+)/$string{$1}/g;
 unless ($str =~ /^[\s\\]*\$data[\s\\]*$/ and $data =~ /^\s*$/) {
  print "$nstrg\n";
 }
}

1;
