	 kêÄ ¥„>8¥„>8ÿÿÿby name         by name         root            d   
kênO  � ¤�          ¼  ¤„>8¥„>8¥„>8      ð  {�  ¼      ./lpp_name                   ó/      ¤�          4 R I freeware.perl.net.pcap {
freeware.perl.net.pcap.rte 00.03.0000.0000 01 N U en_US Net::Pcap - Perl Packet Capture Module
[
*prereq freeware.perl.rte 5.5.3.0
*prereq freeware.libpcap.rte 0.4.0.0
%
/usr 5
/usr/local 7
/usr/local/bin 1
/usr/local/lib 7
/usr/local/lib/perl5 3
/usr/local/lib/perl5/site_perl 3
/usr/local/lib/perl5/site_perl/5.005 5
/usr/local/lib/perl5/site_perl/5.005/aix 5
/usr/local/lib/perl5/site_perl/5.005/aix/auto 3
/usr/local/lib/perl5/site_perl/5.005/aix/auto/Net 5
/usr/local/lib/perl5/site_perl/5.005/aix/auto/Net/Pcap 93
/usr/local/lib/perl5/site_perl/5.005/aix/auto/Net/PcapUtils 2
/usr/local/lib/perl5/site_perl/5.005/aix/Net 18
/usr/local/lib/perl5/site_perl/5.005/Net 18
/usr/local/lib/Net-Pcap-0.03 9
/usr/local/lib/Net-Pcap-0.03/t 63
/usr/local/lib/Net-PcapUtils-0.01 6
/usr/local/lib/Net-PcapUtils-0.01/t 6
/usr/local/man 3
/usr/local/man/man3 49
/usr/lpp 3
/usr/lpp/freeware.perl.net.pcap 1
INSTWORK 28 28
%
%
%
%
]
}
    kêâK á  íA             Ÿ„>8¤„>8¤„>8      p  ½         ./usr/lpp/freeware.perl.net.pcap                     ó/      íA         kê´7 Ë  ¤�          Œ=  ¤„>8¤„>8¤„>8      Ð  :
  Œ=      ./usr/lpp/freeware.perl.net.pcap/liblpp.a                    ó/      ¤�          <aiaff>
15378       0           68          14506       0           2232        2420        0           943621277   0           0           644         29  freeware.perl.net.pcap.rte.al `
./usr/local/lib/perl5/site_perl/5.005/aix/auto/Net/Pcap/Pcap.so
./usr/local/lib/perl5/site_perl/5.005/aix/auto/Net/Pcap/Pcap.bs
./usr/local/lib/perl5/site_perl/5.005/aix/auto/Net/Pcap/.packlist
./usr/local/lib/perl5/site_perl/5.005/aix/auto/Net/PcapUtils/.packlist
./usr/local/lib/perl5/site_perl/5.005/aix/Net/Pcap.pm
./usr/local/lib/perl5/site_perl/5.005/Net/PcapUtils.pm
./usr/local/lib/Net-Pcap-0.03/t/leaktest6.pl
./usr/local/lib/Net-Pcap-0.03/t/11-misc.t
./usr/local/lib/Net-Pcap-0.03/t/08-filter.t
./usr/local/lib/Net-Pcap-0.03/t/09-error.t
./usr/local/lib/Net-Pcap-0.03/t/13-dispatch.t
./usr/local/lib/Net-Pcap-0.03/t/07-stats.t
./usr/local/lib/Net-Pcap-0.03/t/05-dump.t
./usr/local/lib/Net-Pcap-0.03/t/02-lookup.t
./usr/local/lib/Net-Pcap-0.03/t/10-fileno.t
./usr/local/lib/Net-Pcap-0.03/t/04-loop.t
./usr/local/lib/Net-Pcap-0.03/t/README
./usr/local/lib/Net-Pcap-0.03/t/12-next.t
./usr/local/lib/Net-Pcap-0.03/t/03-openlive.t
./usr/local/lib/Net-Pcap-0.03/t/01-module.t
./usr/local/lib/Net-Pcap-0.03/t/leaktest1.pl
./usr/local/lib/Net-Pcap-0.03/t/06-offline.t
./usr/local/lib/Net-Pcap-0.03/t/leaktest2.pl
./usr/local/lib/Net-Pcap-0.03/t/leaktest3.pl
./usr/local/lib/Net-Pcap-0.03/t/leaktest4.pl
./usr/local/lib/Net-Pcap-0.03/t/leaktest5.pl
./usr/local/lib/Net-Pcap-0.03/MANIFEST
./usr/local/lib/Net-Pcap-0.03/README
./usr/local/lib/Net-PcapUtils-0.01/README
./usr/local/lib/Net-PcapUtils-0.01/t/03-next.t
./usr/local/lib/Net-PcapUtils-0.01/t/01-loop.t
./usr/local/lib/Net-PcapUtils-0.01/t/02-open.t
./usr/local/man/man3/Net__Pcap.3
./usr/local/man/man3/Net__PcapUtils.3
./usr/local
./usr/local/bin
./usr/local/lib
./usr/local/lib/perl5
./usr/local/lib/perl5/site_perl
./usr/local/lib/perl5/site_perl/5.005
./usr/local/lib/perl5/site_perl/5.005/aix
./usr/local/lib/perl5/site_perl/5.005/aix/auto
./usr/local/lib/perl5/site_perl/5.005/aix/auto/Net
./usr/local/lib/perl5/site_perl/5.005/aix/auto/Net/Pcap
./usr/local/lib/perl5/site_perl/5.005/aix/auto/Net/PcapUtils
./usr/local/lib/perl5/site_perl/5.005/aix/Net
./usr/local/lib/perl5/site_perl/5.005/Net
./usr/local/lib/Net-Pcap-0.03
./usr/local/lib/Net-Pcap-0.03/t
./usr/local/lib/Net-PcapUtils-0.01
./usr/local/lib/Net-PcapUtils-0.01/t
./usr/local/man
./usr/local/man/man3
760         3306        68          943015573   0           0           644         36  freeware.perl.net.pcap.rte.copyright`

		Net::Pcap - Perl Packet Capture Module, version 0.3
			Copyright (c) 1999 Tim Potter.
		Copyright (c) 1995,1996,1997,1998,1999 ANU and CSIRO
			    All rights reserved.

This program is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.

Plaese refer to the README file delivered in the directory
/usr/local/lib/Net-Pcap-0.3 for complete details. The other files delivered
in the same directory should also be read.

Packaging is Copyright (C) 1999 BULL SA. This LPP may not be redistributed 
comercially. No warranty or support in any form is offered with this
LPP. Groupe Bull will not be liable for errors contained herein, or for
incidental or consequential damages in connection with the use of this
material.
9429        12864       2420        943621283   0           0           644         36  freeware.perl.net.pcap.rte.inventory`
/usr/local/lib/perl5/site_perl/5.005/aix/auto/Net/Pcap/Pcap.so:
	owner = root
	group = system
	mode = 555
	type = FILE
	class = apply,inventory,freeware.perl.net.pcap.rte
	size = 45677
	checksum = "55402     45  "

/usr/local/lib/perl5/site_perl/5.005/aix/auto/Net/Pcap/Pcap.bs:
	owner = root
	group = system
	mode = 444
	type = FILE
	class = apply,inventory,freeware.perl.net.pcap.rte
	size = 0
	checksum = "00000     0  "

/usr/local/lib/perl5/site_perl/5.005/aix/auto/Net/Pcap/.packlist:
	owner = root
	group = system
	mode = 644
	type = FILE
	class = apply,inventory,freeware.perl.net.pcap.rte
	size = 211
	checksum = "52097     1  "

/usr/local/lib/perl5/site_perl/5.005/aix/auto/Net/PcapUtils/.packlist:
	owner = root
	group = system
	mode = 644
	type = FILE
	class = apply,inventory,freeware.perl.net.pcap.rte
	size = 91
	checksum = "34255     1  "

/usr/local/lib/perl5/site_perl/5.005/aix/Net/Pcap.pm:
	owner = root
	group = system
	mode = 444
	type = FILE
	class = apply,inventory,freeware.perl.net.pcap.rte
	size = 8581
	checksum = "64891     9  "

/usr/local/lib/perl5/site_perl/5.005/Net/PcapUtils.pm:
	owner = root
	group = system
	mode = 444
	type = FILE
	class = apply,inventory,freeware.perl.net.pcap.rte
	size = 8668
	checksum = "13929     9  "

/usr/local/lib/Net-Pcap-0.03/t/leaktest6.pl:
	owner = root
	group = system
	mode = 644
	type = FILE
	class = apply,inventory,freeware.perl.net.pcap.rte
	size = 702
	checksum = "58077     1  "

/usr/local/lib/Net-Pcap-0.03/t/11-misc.t:
	owner = root
	group = system
	mode = 644
	type = FILE
	class = apply,inventory,freeware.perl.net.pcap.rte
	size = 1283
	checksum = "24160     2  "

/usr/local/lib/Net-Pcap-0.03/t/08-filter.t:
	owner = root
	group = system
	mode = 644
	type = FILE
	class = apply,inventory,freeware.perl.net.pcap.rte
	size = 1093
	checksum = "33417     2  "

/usr/local/lib/Net-Pcap-0.03/t/09-error.t:
	owner = root
	group = system
	mode = 644
	type = FILE
	class = apply,inventory,freeware.perl.net.pcap.rte
	size = 1098
	checksum = "39327     2  "

/usr/local/lib/Net-Pcap-0.03/t/13-dispatch.t:
	owner = root
	group = system
	mode = 644
	type = FILE
	class = apply,inventory,freeware.perl.net.pcap.rte
	size = 1023
	checksum = "17509     1  "

/usr/local/lib/Net-Pcap-0.03/t/07-stats.t:
	owner = root
	group = system
	mode = 644
	type = FILE
	class = apply,inventory,freeware.perl.net.pcap.rte
	size = 964
	checksum = "56803     1  "

/usr/local/lib/Net-Pcap-0.03/t/05-dump.t:
	owner = root
	group = system
	mode = 644
	type = FILE
	class = apply,inventory,freeware.perl.net.pcap.rte
	size = 1471
	checksum = "51741     2  "

/usr/local/lib/Net-Pcap-0.03/t/02-lookup.t:
	owner = root
	group = system
	mode = 644
	type = FILE
	class = apply,inventory,freeware.perl.net.pcap.rte
	size = 1190
	checksum = "35869     2  "

/usr/local/lib/Net-Pcap-0.03/t/10-fileno.t:
	owner = root
	group = system
	mode = 644
	type = FILE
	class = apply,inventory,freeware.perl.net.pcap.rte
	size = 2482
	checksum = "33703     3  "

/usr/local/lib/Net-Pcap-0.03/t/04-loop.t:
	owner = root
	group = system
	mode = 644
	type = FILE
	class = apply,inventory,freeware.perl.net.pcap.rte
	size = 1162
	checksum = "40414     2  "

/usr/local/lib/Net-Pcap-0.03/t/README:
	owner = root
	group = system
	mode = 644
	type = FILE
	class = apply,inventory,freeware.perl.net.pcap.rte
	size = 344
	checksum = "00429     1  "

/usr/local/lib/Net-Pcap-0.03/t/12-next.t:
	owner = root
	group = system
	mode = 644
	type = FILE
	class = apply,inventory,freeware.perl.net.pcap.rte
	size = 1880
	checksum = "27714     2  "

/usr/local/lib/Net-Pcap-0.03/t/03-openlive.t:
	owner = root
	group = system
	mode = 644
	type = FILE
	class = apply,inventory,freeware.perl.net.pcap.rte
	size = 814
	checksum = "29824     1  "

/usr/local/lib/Net-Pcap-0.03/t/01-module.t:
	owner = root
	group = system
	mode = 644
	type = FILE
	class = apply,inventory,freeware.perl.net.pcap.rte
	size = 173
	checksum = "61776     1  "

/usr/local/lib/Net-Pcap-0.03/t/leaktest1.pl:
	owner = root
	group = system
	mode = 644
	type = FILE
	class = apply,inventory,freeware.perl.net.pcap.rte
	size = 736
	checksum = "38031     1  "

/usr/local/lib/Net-Pcap-0.03/t/06-offline.t:
	owner = root
	group = system
	mode = 644
	type = FILE
	class = apply,inventory,freeware.perl.net.pcap.rte
	size = 2821
	checksum = "56202     3  "

/usr/local/lib/Net-Pcap-0.03/t/leaktest2.pl:
	owner = root
	group = system
	mode = 644
	type = FILE
	class = apply,inventory,freeware.perl.net.pcap.rte
	size = 345
	checksum = "29371     1  "

/usr/local/lib/Net-Pcap-0.03/t/leaktest3.pl:
	owner = root
	group = system
	mode = 644
	type = FILE
	class = apply,inventory,freeware.perl.net.pcap.rte
	size = 669
	checksum = "52243     1  "

/usr/local/lib/Net-Pcap-0.03/t/leaktest4.pl:
	owner = root
	group = system
	mode = 644
	type = FILE
	class = apply,inventory,freeware.perl.net.pcap.rte
	size = 810
	checksum = "33914     1  "

/usr/local/lib/Net-Pcap-0.03/t/leaktest5.pl:
	owner = root
	group = system
	mode = 644
	type = FILE
	class = apply,inventory,freeware.perl.net.pcap.rte
	size = 690
	checksum = "35716     1  "

/usr/local/lib/Net-Pcap-0.03/MANIFEST:
	owner = root
	group = system
	mode = 644
	type = FILE
	class = apply,inventory,freeware.perl.net.pcap.rte
	size = 328
	checksum = "19139     1  "

/usr/local/lib/Net-Pcap-0.03/README:
	owner = root
	group = system
	mode = 444
	type = FILE
	class = apply,inventory,freeware.perl.net.pcap.rte
	size = 2156
	checksum = "28508     3  "

/usr/local/lib/Net-PcapUtils-0.01/README:
	owner = root
	group = system
	mode = 644
	type = FILE
	class = apply,inventory,freeware.perl.net.pcap.rte
	size = 1185
	checksum = "18186     2  "

/usr/local/lib/Net-PcapUtils-0.01/t/03-next.t:
	owner = root
	group = system
	mode = 644
	type = FILE
	class = apply,inventory,freeware.perl.net.pcap.rte
	size = 574
	checksum = "13036     1  "

/usr/local/lib/Net-PcapUtils-0.01/t/01-loop.t:
	owner = root
	group = system
	mode = 644
	type = FILE
	class = apply,inventory,freeware.perl.net.pcap.rte
	size = 492
	checksum = "10240     1  "

/usr/local/lib/Net-PcapUtils-0.01/t/02-open.t:
	owner = root
	group = system
	mode = 644
	type = FILE
	class = apply,inventory,freeware.perl.net.pcap.rte
	size = 328
	checksum = "50965     1  "

/usr/local/man/man3/Net__Pcap.3:
	owner = root
	group = system
	mode = 444
	type = FILE
	class = apply,inventory,freeware.perl.net.pcap.rte
	size = 14589
	checksum = "59051     15  "

/usr/local/man/man3/Net__PcapUtils.3:
	owner = root
	group = system
	mode = 444
	type = FILE
	class = apply,inventory,freeware.perl.net.pcap.rte
	size = 9113
	checksum = "56177     9  "

/usr/local:
	owner = root
	group = system
	mode = 755
	type = DIRECTORY
	class = apply,inventory,freeware.perl.net.pcap.rte

/usr/local/bin:
	owner = root
	group = system
	mode = 755
	type = DIRECTORY
	class = apply,inventory,freeware.perl.net.pcap.rte

/usr/local/lib:
	owner = root
	group = system
	mode = 755
	type = DIRECTORY
	class = apply,inventory,freeware.perl.net.pcap.rte

/usr/local/lib/perl5:
	owner = root
	group = system
	mode = 755
	type = DIRECTORY
	class = apply,inventory,freeware.perl.net.pcap.rte

/usr/local/lib/perl5/site_perl:
	owner = root
	group = system
	mode = 755
	type = DIRECTORY
	class = apply,inventory,freeware.perl.net.pcap.rte

/usr/local/lib/perl5/site_perl/5.005:
	owner = root
	group = system
	mode = 755
	type = DIRECTORY
	class = apply,inventory,freeware.perl.net.pcap.rte

/usr/local/lib/perl5/site_perl/5.005/aix:
	owner = root
	group = system
	mode = 755
	type = DIRECTORY
	class = apply,inventory,freeware.perl.net.pcap.rte

/usr/local/lib/perl5/site_perl/5.005/aix/auto:
	owner = root
	group = system
	mode = 755
	type = DIRECTORY
	class = apply,inventory,freeware.perl.net.pcap.rte

/usr/local/lib/perl5/site_perl/5.005/aix/auto/Net:
	owner = root
	group = system
	mode = 755
	type = DIRECTORY
	class = apply,inventory,freeware.perl.net.pcap.rte

/usr/local/lib/perl5/site_perl/5.005/aix/auto/Net/Pcap:
	owner = root
	group = system
	mode = 755
	type = DIRECTORY
	class = apply,inventory,freeware.perl.net.pcap.rte

/usr/local/lib/perl5/site_perl/5.005/aix/auto/Net/PcapUtils:
	owner = root
	group = system
	mode = 755
	type = DIRECTORY
	class = apply,inventory,freeware.perl.net.pcap.rte

/usr/local/lib/perl5/site_perl/5.005/aix/Net:
	owner = root
	group = system
	mode = 755
	type = DIRECTORY
	class = apply,inventory,freeware.perl.net.pcap.rte

/usr/local/lib/perl5/site_perl/5.005/Net:
	owner = root
	group = system
	mode = 755
	type = DIRECTORY
	class = apply,inventory,freeware.perl.net.pcap.rte

/usr/local/lib/Net-Pcap-0.03:
	owner = root
	group = system
	mode = 755
	type = DIRECTORY
	class = apply,inventory,freeware.perl.net.pcap.rte

/usr/local/lib/Net-Pcap-0.03/t:
	owner = root
	group = system
	mode = 755
	type = DIRECTORY
	class = apply,inventory,freeware.perl.net.pcap.rte

/usr/local/lib/Net-PcapUtils-0.01:
	owner = root
	group = system
	mode = 755
	type = DIRECTORY
	class = apply,inventory,freeware.perl.net.pcap.rte

/usr/local/lib/Net-PcapUtils-0.01/t:
	owner = root
	group = system
	mode = 755
	type = DIRECTORY
	class = apply,inventory,freeware.perl.net.pcap.rte

/usr/local/man:
	owner = root
	group = system
	mode = 755
	type = DIRECTORY
	class = apply,inventory,freeware.perl.net.pcap.rte

/usr/local/man/man3:
	owner = root
	group = system
	mode = 755
	type = DIRECTORY
	class = apply,inventory,freeware.perl.net.pcap.rte

   1264        14252       3306        943016300   0           0           755         33  freeware.perl.net.pcap.rte.post_i `
#!/usr/bin/ksh
LANG=C
VERBOSE=${VERBOSE:-"0"}                  # simple debug system

#
# error handler (v2.1 - July 1998):
cmd()
{
	[ $VERBOSE -gt 7 ] && print "CMD: execute '$@'" >&2
        eval '"$@"'
        [ $? -ne 0 ] && print "CMD: error detected in '$@'" >&2 && exit 2
}


if ! cd /usr/local/lib/perl5/.
then
	cmd print "Perl not installed correctly, can't find directory"
	cmd print "/usr/local/lib/perl5"
	exit 1
fi

if ! ls */aix/perllocal.pod > /dev/null 2>&1
then
	filename=$(ls -d 5.*/aix | tail -1)
	if [ "$filename" = "" ]
	then    
		cmd print "Perl not installed correctly, can't find directory"
		cmd print "/usr/local/lib/perl5/5.00*/aix"
		exit 3
	fi
	filename="$filename/perllocal.pod"
else
	filename=$(cmd ls -d */aix/perllocal.pod | tail -1)
fi

cmd cat >>$filename <<HELLO
=head2 Fri Nov 19 13:32:07 1999: C<Module> L<Net::Pcap>

=over 4

=item *

C<installed into: /usr/local/lib/perl5/site_perl/5.005>

=item *

C<LINKTYPE: dynamic>

=item *

C<VERSION: 0.03>

=item *

C<EXE_FILES: >

=back

=head2 Fri Nov 19 13:56:28 1999: C<Module> L<Net::PcapUtils>

=over 4

=item *

C<installed into: /usr/local/lib/perl5/site_perl/5.005>

=item *

C<LINKTYPE: dynamic>

=item *

C<VERSION: 0.01>

=item *

C<EXE_FILES: >

=back

HELLO

exit 0

132         14506       12864       943015207   0           0           755         32  freeware.perl.net.pcap.rte.pre_i`
#!/usr/bin/ksh
LANG=C

cmd()
{
        eval '"$@"'
        [ $? -ne 0 ] && print "CMD - error detected in '$@'" && exit 2
}

exit 0
750         15378       14252       943621279   0           0           644         31  freeware.perl.net.pcap.rte.size `
./usr 5
./usr/local 7
./usr/local/bin 1
./usr/local/lib 7
./usr/local/lib/perl5 3
./usr/local/lib/perl5/site_perl 3
./usr/local/lib/perl5/site_perl/5.005 5
./usr/local/lib/perl5/site_perl/5.005/aix 5
./usr/local/lib/perl5/site_perl/5.005/aix/auto 3
./usr/local/lib/perl5/site_perl/5.005/aix/auto/Net 5
./usr/local/lib/perl5/site_perl/5.005/aix/auto/Net/Pcap 93
./usr/local/lib/perl5/site_perl/5.005/aix/auto/Net/PcapUtils 2
./usr/local/lib/perl5/site_perl/5.005/aix/Net 18
./usr/local/lib/perl5/site_perl/5.005/Net 18
./usr/local/lib/Net-Pcap-0.03 9
./usr/local/lib/Net-Pcap-0.03/t 63
./usr/local/lib/Net-PcapUtils-0.01 6
./usr/local/lib/Net-PcapUtils-0.01/t 6
./usr/local/man 3
./usr/local/man/man3 49
./usr/lpp 3
./usr/lpp/freeware.perl.net.pcap 1
287         0           14506       0           0           0           0           0   `
6           68          2420        3306        12864       14252       14506       freeware.perl.net.pcap.rte.al freeware.perl.net.pcap.rte.copyright freeware.perl.net.pcap.rte.inventory freeware.perl.net.pcap.rte.post_i freeware.perl.net.pcap.rte.pre_i freeware.perl.net.pcap.rte.size  invekê¤ê ²“ m�          m²  Ÿ„>8ÍZ>8ÍZ>8      0  e•  m²      ./usr/local/lib/perl5/site_perl/5.005/aix/auto/Net/Pcap/Pcap.so              ó/      m�          ß 8>Zq  tž  Î H0   9Ø  P   ÿÿÿÿ          Ü         RE                      .text             9Ø  @  ZÂ          .data             P  ;  nô     ‘     @.bss      P  P                      €.loader           Y  Ih                                                                                   �‚  �A €  €L |	¦N€                                       �b �‹ 8  qŒ A‚ ´|¦| +|à"*A‚ H|…8@@@@† |Aš L˜  H  p|£+|ä*A‚ $0  |…8@@@|£+@† P@š D|ä*@‚ÿä|¦,     T øA� |¥0|ç0|…8@H  |…8@|Æ0}0@@@† L˜  A† A… 8`ÿÿN€  8` N€  8`  N€  8cÿÿ8„ÿÿˆ£ ˆÄ ,  |…0@A‚ Œ£ @† ŒÄ ,  |…0@KÿÿèA† A… 8`ÿÿN€  8`  N€  8` N€        @       strcmp€b |¦¿!ÿä€£  ƒâ � ƒÂ €Ÿ  €Å  €  8¥ÿü�£  TÅ:|£p|c”|¤*| |pZ”8 T:|dØ.”!ÿ ;€  ƒ¢ € t  A‚  €c  € � @|dØ.€c  ƒ#  H  8� @H /!€A `y  , A€ €  |`ÚƒC H  d;�L8}Dc$  c…  H /€A 8€  H /1€A |zyA‚ € t @‚ ,;�`8}Xc$  c…  H .Ý€A 8€  H .ù€A `z  ,  A‚ À€ tA‚ Lt  A‚ €z  € � @€z  €ƒ  H  8� @cC  H .a€A `d  8}hKÿýq`   ,  A‚ l8Ýp,  @‚ 8ýx8ÝtH  c'  9|@‚ ,;�„9€8½˜8}tc$  c‰  cJ  H .y€A H   8½˜8}tc$  c‰  cJ  H .Y€A €‚ (8} 8½<H .m€A €‚ 08}¸8½<H .Y€A €‚ 48}Ð8½<H .E€A €‚ 88}è8½<H .1€A €‚ <8} 8½<H .€A €‚ @8}8½<H .	€A €‚ D8}(8½<H -õ€A €‚ H8}<8½<H -á€A €‚ L8}P8½<H -Í€A €‚ P8}h8½<H -¹€A €‚ T8}|8½<H -¥€A €‚ X8}�8½<H -‘€A €‚ \8}¨8½<H -}€A €‚ `8}Ä8½<H -i€A €‚ d8}à8½<H -U€A €‚ h8}ô8½<H -A€A €‚ l8}8½<H --€A €‚ p8}8½<H -€A €‚ t8}48½<H -€A €‚ x8}H8½<H ,ñ€A €‚ |8}\8½<H ,Ý€A €‚ €8}p8½<H ,É€A €‚ „8}€8½<H ,µ€A 8½<€‚ ˆ8}�H ,¡€A € Œ€  |Ù.€  | Ú�  �� h8! `»!ÿä}ˆ¦N€         €    ä€‚ |¦¿!ÿä€¤  ƒâ � ƒ¢ €  €Å  €  8¥ÿü�¤  TÅ:|ƒ*| | p| ”|¤p|„””!ÿ€,  ;„ ƒÂ A‚ 8~¨H +Ñ€A €  Wœ:8žÈ|£âƒ% |cà.H ,€A ,  A‚ @€  |cà.€c  €c  € t  A‚ €c  €c �a PH   H +í€A �a PH  8~ÔH +a€A € t  A‚|€y  €c  € T >(  @‚d8� @�" ˜€a P|©„ª|¤…ªH +Á€A |{y€y  ƒC  A‚08~øKÿùm€A € @�a T`  H +¹€A `f  8žðcC  €¡ T8à  H +Å€A 8~Kÿù1€A € D�a X`  H +}€A `f  8ž cC  €¡ X8à  H +‰€A 8~Kÿøõ€A € H�a \`  H +A€A `f  8žcC  €¡ \8à  H +M€A 8~$Kÿø¹€A € L�a ``  H +€A `f  8ž cC  €¡ `8à  H +€A €� Hcc  H +)€A `{  €  ||“# €Ÿ  |dâ€c € p @ A‚ LH  <ƒb ¬H  8~(H )Ñ€A €  ||“# €Ÿ  |dâ€c € p @ A‚ H *å€A €Ÿ  dá.€  |cà.H *õ€A €  | â�  �� ˆ8! €»!ÿä}ˆ¦N€         €    Ð€‚ |¦¿Aÿè€¤  ƒâ � ƒ¢ €  €Å  €  8¥ÿü�¤  TÅ:|ƒ*| | p| ”|¤p|„””!ÿ�,  ;„ ƒÂ A‚ 8~,H (ñ€A €  Wœ:8žH|£âƒe |cà.ƒE H )€A ,  A‚ @€  |cà.€c  €c  € t  A‚ €c  €c �a PH   H )	€A �a PH  8~PH (}€A € t  A‚€{  €c  € T >(  @‚ü8� @�" ˜8~d|©„ª|¤…ª€›  ƒd  Kÿö�€A `e  8ž\cc  8À  H )­€A ,  A‚ <€c  € t  A‚  €c  €c �a @8~tKÿöU€A H  H (Y€A �a @8~tKÿö9€A `e  8žlcc  8À  H )I€A ,  A‚ <€c  € t  A‚  €c  €c �a D8~„Kÿõñ€A H  H 'õ€A �a D8~„KÿõÕ€A `e  8ž|cc  8À  H (å€A ,  A‚ <€c  € t  A‚  €c  €c �a H8~�Kÿõ�€A H  H '‘€A �a H8~�Kÿõq€A `e  8žŒcc  8À  H (�€A ,  A‚ @€c  € t  A‚ $€c  €c �a L€ €‚ ¼t  A‚ <H   H ')€A �a L€ €‚ ¼t  A‚ €z  € �  €z  €£  H  cC  H &€A `e  €a P8� @H (€A H  8~”H &U€A €  |`â8ÿü�  �� x8! p»Aÿè}ˆ¦N€         €    ,€‚ |¦¿aÿì€¤  ƒâ � ƒb €  €Å  €  8¥ÿü�¤  TÅ:|ƒ*| | p| ”|¤p|„””!ÿ�,  ;¤ ƒÂ A‚ 8~èH %µ€A €  W½:8ž|cè.H %í€A ,  A‚ @€  |cè.€c  €c  € t  A‚ €c  €c �a @H   H %Ù€A �a @H  8~H %M€A €a @H '!€A �a DH '=€A €Ÿ  |dé.8~,H 'Q€A �a H8ž88  8À  8à  9   �! DH 'U€A ,  €Ÿ  A‚ h„è.€a HH 'a€A �a L8~<8€ H 'u€A `d  €a LH '�€A `d  cƒ  H '¥€A €  | ê�  �� x8! p»aÿì}ˆ¦H  (€ ¬|é.€  | ê�  �� x8! p»aÿì}ˆ¦N€         €    ¼€‚ |¦¿aÿì€¤  ƒâ � ƒ¢ €  €Å  €  8¥ÿü�¤  TÅ:|ƒ*| | p| ”|¤p|„””!ÿ€,  ;„ ƒÂ A‚ 8~PH #é€A €  W›:8žp|£Úƒ… |cØ.H $€A ,  A‚ @€  |cØ.€c  €c  € t  A‚ €c  €c �a LH   H $€A �a LH  8~|H #y€A € t  A‚ ð€|  €c  € T >(  @‚ Ø8� @€a LH &e€A €œ  �a P8~ ƒ„  Kÿñ•€A € @�a T`  H #á€A `f  8ž˜cƒ  €¡ T8à  H #í€A 8~°KÿñY€A € D�a X`  H #¥€A `f  8ž¨cƒ  €¡ X8à  H #±€A 8~ÄKÿñ€A € H�a \`  H #i€A `f  8ž¸cƒ  €¡ \8à  H #u€A H  8~ÐH "u€A H $u€A €¿  €� P|eÙ.€  |cØ.H %™€A €  | Ú�  �� ˆ8! €»aÿì}ˆ¦N€         €    $€b |¦¿�ÿð€ƒ  ƒâ � ƒ‚ €¿  €Ä  €  8„ÿü�ƒ  TÄ:|e"| | p| ”|ƒp|c””!ÿ ,  ;£ ƒÂ A‚ 8~H !µ€A €¿  W½:€‚ ¼|Åê€f € t  A‚ 4€c  € �  €f €c  €c  �a @|eè.8ž(H !¹€A H  $H  å€A €¿  �a @|eè.8ž(H !•€A ,  A‚ @€  |cè.€c  €c  € t  A‚ €c  €c �a DH   H !�€A �a DH  8~4H  õ€A €a D€� @H $U€A €  |`ê8ÿü�  �� h8! `»�ÿð}ˆ¦N€         €    `€‚ |¦¿�ÿð€¤  ƒâ � ƒ‚ €  €Å  €  8¥ÿü�¤  TÅ:|ƒ*| | p| ”|¤p|„””!ÿ ,  ;¤ ƒÂ A‚ 8~äH  E€A €  W½:8ž |cè.H  }€A ,  A‚ @€  |cè.€c  €c  € t  A‚ €c  €c �a @H   H  i€A �a @H  8~H Ý€A €a @H #i€A �a DH !Í€A €¿  €� D|eé.€  |cè.H "ñ€A €  | ê�  �� h8! `»�ÿð}ˆ¦N€         €    (€‚ |¦¿�ÿð€¤  ƒâ � ƒ‚ €  €Å  €  8¥ÿü�¤  TÅ:|ƒ*| | p| ”|¤p|„””!ÿ ,  ;¤ ƒÂ A‚ 8~
¼H €A €  W½:8ž¤|cè.H E€A ,  A‚ D€Ÿ  |dè.€c  €c  € t  A‚ €c  €c �a @H  (H 1€A €Ÿ  �a @H  8~°H ¡€A €Ÿ  |dê€c 8žÌH Ù€A ,  A‚ D€  |`ê€c €c  €c  € t  A‚ €c  €c �a DH   H Á€A �a DH  8~
àH 5€A €a @€� DH !å€A �a HH  !€A €¿  €� H|eé.€  |cè.H !E€A €  | ê�  �� h8! `»�ÿð}ˆ¦N€         €    œ€b |¦¿aÿì€ƒ  ƒâ � ƒb €¿  €Ä  €  8„ÿü�ƒ  TÄ:|e"| | p| ”|ƒp|c””!ÿ�,  ;£ ƒÂ A‚ 8~
„H a€A €¿  W½:€‚ ¼|Åê€f ƒ† € t  A‚ 4€c  € �  €f €c  €c  �a @|…ê€d € t  H  $H �€A €¿  �a @|…ê€d € t  A‚ (€c  €c �a D|…ê€d € t  A‚ 8H  (H 5€A €¿  �a D|…ê€d € t  A‚ €c  €c H  H €A €¿  �a H|eè.8žLH Å€A ,  A‚ @€  |cè.€c  €c  € t  A‚ €c  €c �a LH   H ±€A �a LH  8~XH %€A € t  A‚ €8` H õ€A �a P€a L€¡ @€Á D€á H€� PH ý€A �a T€  8žt€¡ P|`ê€c €c  €c  H ý€A €  |}“ƒ €  |`ê€c € p @ A‚ @H  48~ŒH ‘€A €  |}“ƒ €  |`ê€c € p @ A‚ H ¥€A H e€A €¿  €� T|eé.€  |cè.H ‰€A €  | ê�  �� x8! p»aÿì}ˆ¦N€         €    ¬€‚ |¦¿¡ÿô€¤  ƒâ � ƒ¢ €  €Å  €  8¥ÿü�¤  TÅ:|ƒ*| | p| ”|¤p|„””!ÿ°,  ;Ä A‚ €b 8c
`H ¥€A €  WÞ:|cð.€ t  A‚ €c  €c H  H ñ€A H Ñ€A �a @H m€A €¿  €� @|eñ.€  |cð.H Ñ€A €  | ò�  �� X8! P»¡ÿô}ˆ¦N€         €     è€‚ |¦¿�ÿð€¤  ƒâ � ƒ‚ €  €Å  €  8¥ÿü�¤  TÅ:|ƒ*| | p| ”|¤p|„””!ÿ ,  ;¤ ƒÂ A‚ 8~H ­€A €  W½:8ž$|cè.H å€A ,  A‚ @€  |cè.€c  €c  € t  A‚ €c  €c �a @H   H Ñ€A �a @H  8~0H E€A €a @H é€A �a DH 5€A €¿  €� D|eé.€  |cè.H ™€A €  | ê�  �� h8! `»�ÿð}ˆ¦N€         €    (€‚ |¦¿�ÿð€¤  ƒâ � ƒ‚ €  €Å  €  8¥ÿü�¤  TÅ:|ƒ*| | p| ”|¤p|„””!ÿ ,  ;¤ ƒÂ A‚ 8~
<H u€A €  W½:8žà|cè.H ­€A ,  A‚ @€  |cè.€c  €c  € t  A‚ €c  €c �a @H   H ™€A �a @H  8~ìH €A €a @H Ù€A �a DH ý€A €¿  €� D|eé.€  |cè.H !€A €  | ê�  �� h8! `»�ÿð}ˆ¦N€         €    (€‚ |¦¿�ÿð€¤  ƒâ � ƒ‚ €  €Å  €  8¥ÿü�¤  TÅ:|ƒ*| | p| ”|¤p|„””!ÿ ,  ;¤ ƒÂ A‚ 8~
H =€A €  W½:8ž¸|cè.H u€A ,  A‚ @€  |cè.€c  €c  € t  A‚ €c  €c �a @H   H a€A �a @H  8~ÄH Õ€A €a @H É€A �a DH Å€A €¿  €� D|eé.€  |cè.H é€A €  | ê�  �� h8! `»�ÿð}ˆ¦N€         €    (€‚ |¦¿�ÿð€¤  ƒâ � ƒ‚ €  €Å  €  8¥ÿü�¤  TÅ:|ƒ*| | p| ”|¤p|„””!ÿ ,  ;¤ ƒÂ A‚ 8~pH €A €  W½:8ž�|cè.H =€A ,  A‚ @€  |cè.€c  €c  € t  A‚ €c  €c �a @H   H )€A �a @H  8~œH �€A €a @H ¹€A �a DH �€A €¿  €� D|eé.€  |cè.H ±€A €  | ê�  �� h8! `»�ÿð}ˆ¦N€         €    (€‚ |¦¿�ÿð€¤  ƒâ � ƒ‚ €  €Å  €  8¥ÿü�¤  TÅ:|ƒ*| | p| ”|¤p|„””!ÿ ,  ;¤ ƒÂ A‚ 8~(H Í€A €  W½:8žH|cè.H €A ,  A‚ @€  |cè.€c  €c  € t  A‚ €c  €c �a @H   H ñ€A �a @H  8~TH e€A €a @H ©€A �a DH U€A €¿  €� D|eé.€  |cè.H y€A €  | ê�  �� h8! `»�ÿð}ˆ¦N€         €    (€‚ |¦¿�ÿð€¤  ƒâ � ƒ‚ €  €Å  €  8¥ÿü�¤  TÅ:|ƒ*| | p| ”|¤p|„””!ÿ ,  ;¤ ƒÂ A‚ 8~àH •€A €  W½:8ž |cè.H Í€A ,  A‚ @€  |cè.€c  €c  € t  A‚ €c  €c �a @H   H ¹€A �a @H  8~H -€A €a @H ™€A �a DH €A €¿  €� D|eé.€  |cè.H A€A €  | ê�  �� h8! `»�ÿð}ˆ¦N€         €    (€‚ |¦¿�ÿð€¤  ƒâ � ƒ‚ €  €Å  €  8¥ÿü�¤  TÅ:|ƒ*| | p| ”|¤p|„””!ÿ ,  ;¤ ƒÂ A‚ 8~¬H ]€A €  W½:8žÌ|cè.H •€A ,  A‚ @€  |cè.€c  €c  € t  A‚ €c  €c �a @H   H �€A �a @H  8~	ôH õ€A €a @H ‰€A €  |`ê8ÿü�  �� h8! `»�ÿð}ˆ¦N€         €    €‚ |¦¿�ÿð€¤  ƒâ � ƒ‚ €  €Å  €  8¥ÿü�¤  TÅ:|ƒ*| | p| ”|¤p|„””!ÿ ,  ;¤ ƒÂ A‚ 8~hH I€A €  W½:8ž„|cè.H �€A ,  A‚ @€  |cè.€c  €c  € t  A‚ €c  €c �a @H   H m€A �a @H  8~�H á€A €a @H �€A €  |`ê8ÿü�  �� h8! `»�ÿð}ˆ¦N€         €    €b |¦¿Aÿè€ƒ  ƒâ � ƒ¢ €¿  €Ä  €  8„ÿü�ƒ  TÄ:|e"| | p| ”|ƒp|c””!ÿ�,  ;ƒ ƒÂ A‚ 8~	ÀH 5€A €¿  Wœ:|eâ€c € t  A‚ 0€c  €c �a @|eâƒc ƒC 8ž@|eà.H A€A H  0H ]€A €¿  �a @|eâƒc ƒC 8ž@|eà.H €A ,  A‚ @€  |cà.€c  €c  € t  A‚ €c  €c �a DH   H ý€A �a DH  8~LH q€A cc  H U€A ƒÂ0�~  cC  H A€A �a H€¢4€a D€� @€Á HH M€A �a L€a HH e€A €~  H Y€A H €A €¿  €� L|eá.€  |cà.H =€A €  | â�  �� x8! p»Aÿè}ˆ¦N€         €    Ì€b |¦¿Aÿè€ƒ  ƒâ � ƒ¢ €¿  €Ä  €  8„ÿü�ƒ  TÄ:|e"| | p| ”|ƒp|c””!ÿ�,  ;ƒ ƒÂ A‚ 8~	�H Y€A €¿  Wœ:|eâ€c € t  A‚ 0€c  €c �a @|eâƒc ƒC 8ž|eà.H e€A H  0H �€A €¿  �a @|eâƒc ƒC 8ž|eà.H 5€A ,  A‚ @€  |cà.€c  €c  € t  A‚ €c  €c �a DH   H !€A �a DH  8~$H •€A cc  H y€A ƒÂ0�~  cC  H e€A �a H€¢4€a D€� @€Á HH Á€A �a L€a HH ‰€A €~  H }€A H =€A €¿  €� L|eá.€  |cà.H a€A €  | â�  �� x8! p»Aÿè}ˆ¦N€         €    Ì€b |¦¿�ÿð€ƒ  ƒâ � ƒ‚ €¿  €Ä  €  8„ÿü�ƒ  TÄ:|e"| | p| ”|ƒp|c””!ÿ ,  ;£ ƒÂ A‚ 8~	hH }€A €¿  W½:€‚ ¼|Åê€f € t  A‚ 4€c  € �  €f €c  €c  �a @|eè.8ž ÜH �€A H  $H ­€A €¿  �a @|eè.8ž ÜH ]€A ,  A‚ @€  |cè.€c  €c  € t  A‚ €c  €c �a DH   H I€A �a DH  8~ èH ½€A €a D€� @H =€A �a HH ©€A €ß  8ž€¡ H|fé.€  |cè.H ¹€A €  | ê�  �� h8! `»�ÿð}ˆ¦N€         €    ˆ€b |¦¿!ÿä€ƒ  ƒâ � ƒ¢ €¿  €Ä  €  8„ÿü�ƒ  TÄ:|e"| | p| ”|ƒp|c””!ÿ�,  ;ƒ ƒÂ A‚ 8~	<H 
å€A €¿  Wœ:€‚ ¼|eà.€ t  A‚ 4€c  € �  |eà.€c  €c  |…âƒd �a @€ t  H  $H 
€A €¿  |…âƒd �a @€ t  A‚ T8` H Q€A €»  �a D`d  €a @ƒE  H €A |yy@‚ cC  €� DH ½€A €a DH 	€A H  8~ ¸H 
€A €  ||“c €  |`â€c € p @ A‚ H -€A H í€A €ß  8ž Ðc%  |fá.€  |cà.H ý€A €  | â�  �� x8! p»!ÿä}ˆ¦N€         €    ¬€b |¦¿!ÿä€ƒ  ƒâ � ƒ¢ €¿  €Ä  €  8„ÿü�ƒ  TÄ:|e"| | p| ”|ƒp|c””!ÿ�,  ;ƒ ƒÂ A‚ 8~øH 	)€A €¿  Wœ:€‚ ¼|eà.€ t  A‚ 4€c  € �  |eà.€c  €c  �a @|…â€d € t  H  $H ]€A €¿  �a @|…â€d € t  A‚ (€c  €c �a D|…â€d € t  A‚ 8H  (H 	€A €¿  �a D|…â€d € t  A‚ €c  €c H  H Õ€A €¿  �a H|…â€d € t  A‚ (€c  €c |…âƒd �a L€ t  A‚ ˆH  (H �€A €¿  |…âƒd �a L€ t  A‚ `8` H Õ€A €»  �a P€a @€� DƒE  €¡ H€á P€Á LH Í€A |yy@‚ cC  €� PH 5€A €a PH �€A H  8~ ”H ‘€A €  ||“c €  |`â€c € p @ A‚ H ¥€A H 	e€A €ß  8ž ¬c%  |fá.€  |cà.H u€A €  | â�  �� x8! p»!ÿä}ˆ¦N€         €    x€b |¦¾ÁÿØ€ƒ  ƒâ � ‚Â €¿  €Ä  €  8„ÿü�ƒ  TÄ:|e"| | p| ”|ƒp|c””!ÿ€,  ;Ã A‚ €b 8cÄH ¡€A €¿  WÞ:€‚ ¼|eð.€ t  A‚ 4€c  € �  |eð.€c  ƒ£  |eòƒƒ ƒC ƒc € H  (H Õ€A `}  €¿  |eòƒƒ ƒC ƒc € T ‡>|  @œ ¼€ t  A‚ ¬€ t  A‚  8` H 	é€A �a H€¼  €Ú  €›  ƒ  8¡ @ƒ&  ‚ä  8� Dc£  €Á HH ý€A ,ÿÿ�a L€� DA‚ 0c  H ù€A €� @c#  H é€A €a HH u€A H  pbã  €� HH 
	€A €a HH U€A H  PAœ €b 8c LH ]€A € t  @‚ €b 8c dH A€A € t  @‚ €b 8c |H %€A €  |~“ƒ €  |`ò€c €ƒ p„@ A‚ H 9€A €  |~“C €  |`ò€c €ƒ p„@ A‚ H €A €  |~“c €  |`ò€c € p @ A‚ H á€A H ¡€A €¿  €� L|eñ.€  |cð.H Å€A €  | ò�  �� ˆ8! €ºÁÿØ}ˆ¦N€         €
    °€‚ |¦¿Aÿè€¤  ƒâ � ƒÂ €  €Å  €  8¥ÿü�¤  TÅ:|ƒ*| | p| ”|¤p|„””!ÿ ,  ;¤ A‚ €b 8c H á€A €  W½:ƒè.€ t  A‚ L8` H ¥€A �a @€œ  ƒd  H €A |zy@‚ cc  €� @H €A €a @H 
e€A H  €b 8c 8H q€A €  ƒé.€  |cè.€ p @ A‚ H �€A H M€A €¿  cD  |eé.€  |cè.H ±€A €  | ê�  �� h8! `»Aÿè}ˆ¦N€         €    D¿!ÿä|¦`  `ž  €ž � ”!ÿ�`£  H é€A `}  H 
E€A �a @H 9€A ƒ‚ ƒb `z  ƒ;  8| KÿÑ€A €  �a D`  H Q€A `f  €a @c„  €¡ D8à  H ]€A 8| KÿÐÉ€A € �a H`  H €A `f  8œ €a @€¡ H8à  H !€A 8| (KÿÐ�€A € �a L`  H Ù€A `f  8œ  €a @€¡ L8à  H å€A 8| 4KÿÐQ€A € �a P`  H �€A `f  8œ 0€a @€¡ P8à  H ©€A ƒÂ €b`€  €~  8c | @�~  @‚ H 	9€A €~  €‚ ƒÂh€  | È| p| ”�  €  | | p| •A� c#  `d  8  H 	€A `y  “ù €  8y | | p| •A� `d  8  H é€A “C €  8ƒ | | p| •A� 8  `ƒ  H ½€A `d  8 €b0“¤ �  €c  8€ H Á€A c£  H ý€A €a @H ñ€A cC  H å€A �� x8! p»!ÿä}ˆ¦N€         €    h�‚ �A €  €L |	¦N€               �‚ �A €  €L |	¦N€               �‚  �A €  €L |	¦N€               �‚ $�A €  €L |	¦N€               �‚ ,�A €  €L |	¦N€               �‚ ��A €  €L |	¦N€               �‚ ”�A €  €L |	¦N€               �‚ œ�A €  €L |	¦N€               �‚  �A €  €L |	¦N€               �‚ ¤�A €  €L |	¦N€               �‚ ¨�A €  €L |	¦N€               �‚ °�A €  €L |	¦N€               �‚ ´�A €  €L |	¦N€               �‚ ¸�A €  €L |	¦N€               �‚ À�A €  €L |	¦N€               �‚ Ä�A €  €L |	¦N€               �‚ È�A €  €L |	¦N€               �‚ Ì�A €  €L |	¦N€               �‚ Ð�A €  €L |	¦N€               �‚ Ô�A €  €L |	¦N€               �‚ Ø�A €  €L |	¦N€               �‚ Ü�A €  €L |	¦N€               �‚ à�A €  €L |	¦N€               �‚ ä�A €  €L |	¦N€               �‚ è�A €  €L |	¦N€               �‚ ì�A €  €L |	¦N€               �‚ ð�A €  €L |	¦N€               �‚ ô�A €  €L |	¦N€               �‚ ø�A €  €L |	¦N€               �‚ ü�A €  €L |	¦N€               �‚ �A €  €L |	¦N€               �‚�A €  €L |	¦N€               �‚�A €  €L |	¦N€               �‚�A €  €L |	¦N€               �‚�A €  €L |	¦N€               �‚�A €  €L |	¦N€               �‚�A €  €L |	¦N€               �‚�A €  €L |	¦N€               �‚ �A €  €L |	¦N€               �‚$�A €  €L |	¦N€               �‚(�A €  €L |	¦N€               �‚,�A €  €L |	¦N€               �‚8�A €  €L |	¦N€               �‚<�A €  €L |	¦N€               �‚@�A €  €L |	¦N€               �‚D�A €  €L |	¦N€               �‚H�A €  €L |	¦N€               �‚L�A €  €L |	¦N€               �‚P�A €  €L |	¦N€               �‚T�A €  €L |	¦N€               �‚X�A €  €L |	¦N€               �‚\�A €  €L |	¦N€               �‚d�A €  €L |	¦N€               �‚l�A €  €L |	¦N€               �‚p�A €  €L |	¦N€                                               tv_sec  tv_sec  tv_usec tv_usec caplen  caplen  len len arg1 not a hash ref arg2 not a reference    arg3 not a reference    arg4 not a reference    arg5 not a reference    pcap_tPtr   arg2 not a reference    pcap_tPtr   pcap_tPtr   p is not of type pcap_tPtr  pcap_dumper_tPtr    pcap_tPtr   p is not of type pcap_tPtr  pcap_tPtr   p is not of type pcap_tPtr  Usage: Net::Pcap::close(p)  pcap_tPtr   p is not of type pcap_tPtr  Usage: Net::Pcap::dump_close(p) pcap_dumper_tPtr    Usage: Net::Pcap::datalink(p)   pcap_tPtr   p is not of type pcap_tPtr  Usage: Net::Pcap::snapshot(p)   pcap_tPtr   p is not of type pcap_tPtr  Usage: Net::Pcap::is_swapped(p) pcap_tPtr   p is not of type pcap_tPtr  pcap_tPtr   p is not of type pcap_tPtr  pcap_tPtr   p is not of type pcap_tPtr  Usage: Net::Pcap::geterr(p) pcap_tPtr   p is not of type pcap_tPtr  pcap_tPtr   p is not of type pcap_tPtr  struct bpf_programPtr   arg2 not a reference    pcap_tPtr   p is not of type pcap_tPtr  struct bpf_programPtr   Usage: Net::Pcap::fileno(p) pcap_tPtr   p is not of type pcap_tPtr  pcap_tPtr   p is not of type pcap_tPtr  Usage: Net::Pcap::stats(p, ps)  pcap_tPtr   p is not of type pcap_tPtr  ps_recv ps_recv ps_drop ps_drop ps_ifdrop   ps_ifdrop   arg 2 not a hash ref    Usage: Net::Pcap::file(p)   pcap_tPtr   p is not of type pcap_tPtr  Net::Pcap   <&  Net::Pcap   pcap_dumper_tPtr    tv_sec  tv_sec  tv_usec tv_usec caplen  caplen  len len arg2 not a hash ref Usage: Net::Pcap::next(p, h)    pcap_tPtr   p is not of type pcap_tPtr  tv_sec  tv_sec  tv_usec tv_usec caplen  caplen  len len arg2 not a hash ref Pcap.c  %s::%s  XS_VERSION  %s::%s  VERSION 0.03    $           ::      bootstrap parameter 0.03    Net::Pcap::lookupdev    Net::Pcap::lookupnet    Net::Pcap::open_live    Net::Pcap::open_offline Net::Pcap::dump_open    Net::Pcap::loop Net::Pcap::dispatch Net::Pcap::close    Net::Pcap::dump_close   Net::Pcap::datalink Net::Pcap::snapshot Net::Pcap::is_swapped   Net::Pcap::major_version    Net::Pcap::minor_version    Net::Pcap::geterr   Net::Pcap::strerror Net::Pcap::compile  Net::Pcap::setfilter    Net::Pcap::fileno   Net::Pcap::perror   Net::Pcap::stats    Net::Pcap::file Net::Pcap::dump Net::Pcap::next Usage: Net::Pcap::lookupdev(err)    Usage: Net::Pcap::lookupnet(device, net, mask, err) Usage: Net::Pcap::open_live(device, snaplen, promisc, to_ms, err)   Usage: Net::Pcap::open_offline(fname, err)  Usage: Net::Pcap::dump_open(p, fname)   Usage: Net::Pcap::loop(p, cnt, callback, user)  Usage: Net::Pcap::dispatch(p, cnt, callback, user)  p is not of type pcap_dumper_tPtr   Usage: Net::Pcap::major_version(p)  Usage: Net::Pcap::minor_version(p)  Usage: Net::Pcap::strerror(error)   Usage: Net::Pcap::compile(p, fp, str, optimize, mask)   Usage: Net::Pcap::setfilter(p, fp)  fp is not of type struct bpf_programPtr Usage: Net::Pcap::perror(p, prefix) Usage: Net::Pcap::dump(p, h, sp)    p is not of type pcap_dumper_tPtr   %s object version %s does not match %s%s%s%s %_   p  Ü      -T  Ü      *”  Ü      (  Ü      &P  Ü      $¸  Ü      "Ü  Ü      !   Ü      ì  Ü      Ø  Ü         Ü      h  Ü      0  Ü      ø  Ü      À  Ü      ˆ  Ü      �  Ü      Ô  Ü      (  Ü      ð  Ü      €  Ü      L  Ü      €  Ü      D  Ü      d  Ü      .¨  Ü                                              °      ¼  È  Ô  à  ì  ø        (  4  @  L  X  d  p  |  ˆ  ”     ¬  ¸  Ä              9¸                                                                                                                                                      P  Ð                                                                  B   ‘   >       ÿ  Z             @       strlen        @
                    @               -      @        PL_na         @               @      @               P      @               _      @               m      @               {      @               ‡      @
               ”      @
               £      @
               ¯      @
               Á      @
               Ñ      @
               á      @
               ÷      @
                    @
                    @
              "      @
              /      @
              >      @
              M      @
              \      @
              i      @
              y      @
              ‹      @
              �      @
              «      @
              ½      @
              Ë      @
              Û      @
              ò      @
                    @
                    @
              %      @
              5      @
              I      @
              Y      @
              h      @
              v      @
             ‡      @
             ”      @
             ¥      @
             µ      @
             Ã      @
             Ï      @
             ä      @
             ù      @
                   @
                   @
             +      @
             9      @
             G      @
             S      @
             c      @
             o      @
             |      @
             �      @
             ž      @
             ­      @
             ¹      @
             Ë      @
             Ü      @
             ð  ¤ 
          ¤        ¨       °        ´       ¼        À       È        Ì       Ô        Ø       à        ä       ì        ð       ø        ü                                                     (        ,       4        8       @        D       L        P       X        \       d        h       p        t       |        €       ˆ        Œ       ”        ˜                ¤       ¬        °       ¸        ¼       Ä        È       Ð        Ô       Ü       à       ä       è       ì   
    ð       ô   !    ø       ü   +                                                                     $       (       ,       0       4       8       <       @       D       H       L       P       T       X       \       `       d       h       l   #    p       t        x   9    |       €       „       ˆ       Œ       �        ”       ˜       œ   @        1    ¤   %    ¨       ¬       °       ´       ¸   "    ¼   )    À   -    Ä   &    È   8    Ì   0    Ð   ,    Ô       Ø   ?    Ü   (    à   /    ä   '    è   7    ì   2    ð   3    ô   4    ø   5    ü   6        A       <                            :       $       ;        B    $   C    (       ,   .    0   =    4   >    8       <       @       D   	    H       L   *  /usr/local/lib:/usr/lib:/lib    libc.a shr.o  libpcap.a shr.o  _system_configuration  PL_markstack_max  PL_markstack_ptr  PL_stack_base  PL_stack_max  PL_stack_sp  PL_sv_undef  
PL_sv_yes  Perl_croak  Perl_do_open  
Perl_form  Perl_gv_stashpv  Perl_hv_fetch  Perl_hv_store  Perl_markstack_grow  Perl_mg_set  Perl_newGVgen  Perl_newHV  Perl_newRV  Perl_newSViv  Perl_newSVpv  Perl_newSVsv  Perl_newXS  Perl_safefree  Perl_safemalloc  Perl_stack_grow  Perl_sv_2iv  Perl_sv_2mortal  Perl_sv_2pv  Perl_sv_bless  Perl_sv_derived_from  Perl_sv_free  Perl_sv_newmortal  Perl_sv_setiv  Perl_sv_setpv  Perl_sv_setref_pv  Perl_sv_setsv  perl_call_sv  perl_get_sv  pcap_setfilter  pcap_stats  pcap_open_live  pcap_strerror  pcap_fileno  
pcap_file  pcap_minor_version  pcap_major_version  pcap_is_swapped  pcap_snapshot  pcap_datalink  pcap_geterr  pcap_perror  
pcap_next  pcap_dispatch  
pcap_loop  pcap_close  pcap_lookupnet  pcap_lookupdev  pcap_compile  
pcap_dump  pcap_dump_close  pcap_dump_open  pcap_open_offline  boot_Net__Pcap        „   @  @    B   †  r   ˆ�  ‚   Š�  Š   Œ�  Ò   Ž�     ¾™  4  Ã™  @  È™  l  Ã™  x  È™  À  ¾™  Ð  @™     Í™  @  Í™  J   ˜�  T  Ò™  ^   œ�  h  Ò™  r   ž�  |  Ò™  †    �  �  Ò™  š   ¢�  ¤  Ò™  ®   ¤�  ¸  Ò™  Â   ¦�  Ì  Ò™  Ö   ¨�  à  Ò™  ê   ª�  ô  Ò™  þ   ¬�    Ò™     ®�    Ò™  &   °�  0  Ò™  :   ²�  D  Ò™  N   ´�  X  Ò™  b   ¶�  l  Ò™  v   ¸�  €  Ò™  Š   º�  ”  Ò™  ž   ¼�  ¨  Ò™  ²   ¾�  ¼  Ò™  Æ   À�  Ð  Ò™  Ú   Â�  ä  Ò™  î   Ä�  ø  Ò™     Æ�    Ò™     È�     Ò™  *   Ê�  f   ˆ�  v   Š�  ~   Œ�  ¾   Ž�  È  Í™  è  ×™  $  Ü™  8  Í™  j   Ð�  x  á™  ”  ¹™  ¨  æ™  Ä  ë™  Ð  ¹™  ä  æ™     ë™    ¹™     æ™  <  ë™  H  ¹™  \  æ™  x  ë™  ˆ  ð™  ¾   Ú�  È  Í™  ô  õ™    ú™  F   ˆ�  V   Š�  ^   Œ�  ž   Ž�  ¨  Í™  Ì  ×™  	  Ü™  	  Í™  	N   Ð�  	d  ¹™  	|  ÿ™  	¬  ¹™  	¸  Ü™  	È  ¹™  	à  ÿ™  
  ¹™  
  Ü™  
,  ¹™  
D  ÿ™  
t  ¹™  
€  Ü™  
�  ¹™  
¨  ÿ™  
Ú   â�  
è  Ü™  
ú   â�     ¾™  4  ™  D  Í™  ‚   ˆ�  ’   Š�  š   Œ�  Ú   Ž�  ä  Í™  ü  ×™  8  Ü™  L  Í™  X  	™  d  ™  x  ™  œ  ™  ¸  ™  Ì  "™  Ü  '™  ì  ,™     Ú�  N   ˆ�  ^   Š�  f   Œ�  ¦   Ž�  °  Í™  Ð  ×™    Ü™     Í™  T  1™  l  ¹™  €  æ™  œ  ë™  ¨  ¹™  ¼  æ™  Ø  ë™  ä  ¹™  ø  æ™    ë™  $  Í™  ,  ™  H  6™  ‚   ˆ�  ’   Š�  š   Œ�  Ú   Ž�  ä  Í™  ö   â�  0  ×™  <  ¾™  T  ×™  �  Ü™  ¤  Í™  ´  ;™  ò   ˆ�     Š�  
   Œ�  J   Ž�  T  Í™  l  ×™  ¨  Ü™  ¼  Í™  È  @™  Ô  ™  ð  6™  *   ˆ�  :   Š�  B   Œ�  ‚   Ž�  Œ  Í™  ¤  ×™  à  Ü™  ø  Í™    ×™  P  Ü™  d  Í™  t  E™  €  ™  œ  6™  Ö   ˆ�  æ   Š�  î   Œ�  .   Ž�  8  Í™  J   â�  ”  ¾™  Ü  Ü™    Ü™  $  ×™  `  Ü™  t  Í™  Œ  J™  ¬  O™  Ô  T™    Í™  4  õ™  <  ™  X  6™  ’   ˆ�  ¢   Š�  ª   Œ�  î   Ž�  ô  Í™     Ü™  (  Y™  4  ™  P  ^™  Š   ˆ�  š   Š�  ¢   Œ�  â   Ž�  ì  Í™    ×™  @  Ü™  T  Í™  `  c™  l  ™  ˆ  ^™  Â   ˆ�  Ò   Š�  Ú   Œ�     Ž�  $  Í™  <  ×™  x  Ü™  Œ  Í™  ˜  h™  ¤  ™  À  6™  ú   ˆ�  
   Š�     Œ�  R   Ž�  \  Í™  t  ×™  °  Ü™  Ä  Í™  Ð  m™  Ü  ™  ø  6™  2   ˆ�  B   Š�  J   Œ�  Š   Ž�  ”  Í™  ¬  ×™  è  Ü™  ü  Í™    r™    ™  0  6™  j   ˆ�  z   Š�  ‚   Œ�  Â   Ž�  Ì  Í™  ä  ×™     Ü™  4  Í™  @  w™  L  ™  h  6™  ¢   ˆ�  ²   Š�  º   Œ�  ú   Ž�    Í™    ×™  X  Ü™  l  Í™  x  |™  „  ™     6™  Ú   ˆ�  ê   Š�  ò   Œ�  2   Ž�  <  Í™  T  ×™  �  Ü™  ¤  Í™  °  �™  î   ˆ�  þ   Š�      Œ�   F   Ž�   P  Í™   h  ×™   ¤  Ü™   ¸  Í™   Ä  †™  !   ˆ�  !   Š�  !   Œ�  !Z   Ž�  !d  Í™  !¨  ×™  !´  Ü™  !Ø  ×™  "  Ü™  "(  Í™  "4  ‹™  ">  �  "H  ‹™  "V  �  "d  �™  "t  •™  "€  •™  "ˆ  ™  "¤  6™  "Þ   ˆ�  "î   Š�  "ö   Œ�  #6   Ž�  #@  Í™  #„  ×™  #�  Ü™  #´  ×™  #ð  Ü™  $  Í™  $  ‹™  $  �  $$  ‹™  $2  �  $@  š™  $P  •™  $\  •™  $d  ™  $€  6™  $º   ˆ�  $Ê   Š�  $Ò   Œ�  %   Ž�  %  Í™  %.   â�  %h  ×™  %t  ¾™  %Œ  ×™  %È  Ü™  %Ü  Í™  %ì  Ÿ™  %ø  ™  &  T™  &R   ˆ�  &b   Š�  &j   Œ�  &ª   Ž�  &´  Í™  &Æ   â�  '  ¾™  '0  J™  'L  ¤™  'd  ^™  'p  ©™  '€  Í™  '¬  õ™  '´  ™  'Ô  T™  (   ˆ�  (   Š�  (&   Œ�  (f   Ž�  (p  Í™  (‚   â�  (Ä  ¾™  )  Ü™  )<  Ü™  )„  Ü™  )¬  J™  )Ô  ®™  )ì  ^™  )ø  ©™  *  Í™  *4  õ™  *<  ™  *\  T™  *–   ˆ�  *¦   Š�  *®   Œ�  *ò   Ž�  *ø  Í™  +
   â�  +L  ¾™  +˜  J™  +Ì  ³™  +è  6™  +ø  6™  ,  ©™  ,  ^™  ,$  ©™  ,6   Ž�  ,<  Í™  ,R   Ž�  ,X  Í™  ,n   Ž�  ,t  Í™  ,   õ™  ,Ì  õ™  ,ø  õ™  -   ™  -  6™  -V   ˆ�  -f   Š�  -n   Œ�  -²   Ž�  -¸  Í™  -Ü  J™  -ð  ¸™  .  ^™  .  ©™  ."   Ž�  .(  Í™  .L  õ™  .T  ™  .p  ^™  .È  ð™  .Ô  ½™  .à  ™  .ê   Ž�  .î   Œ�  .ü  ¹™  /  æ™  /,  ë™  /8  ¹™  /L  æ™  /h  ë™  /t  ¹™  /ˆ  æ™  /¤  ë™  /°  ¹™  /Ä  æ™  /à  ë™  /ê   ˆ�  /î  4�  0  Â™  0   Š�  0  8�  0P  Ç™  0€  Ç™  0¬  Ç™  0¾  �  0Ð  Ì™  0Ü  •™  0è  •™  0ô  •™  1"   �  1J   ’  1r   ”  1š   –  1Â   š  1ê   Ì  2   Î  2:   Ò  2b   Ô  2Š   Ö  2²   Ø  2Ú   Ü  3   Þ  3*   à  3R   ä  3z   æ  3¢   è  3Ê   ê  3ò   ì  4   î  4B   ð  4j   ò  4’   ô  4º   ö  4â   ø  5
   ú  52   ü  5Z   þ  5‚     5ª    5Ò    5ú    6"    6J  
  6r    6š    6Â    6ê    7    7:    7b    7Š    7²     7Ú  "  8  $  8*  &  8R  (  8z  *  8¢  ,  8Ê  .  8ò  0  9  2  9B  6  9j  :  9’  <  ¤  H   ¨   ‚   °  x   ´   ‚   ¼  v   À   ‚   È  t   Ì   ‚   Ô  r   Ø   ‚   à  p   ä   ‚   ì  n   ð   ‚   ø  l   ü   ‚     j      ‚     h      ‚     f       ‚   (  d   ,   ‚   4  b   8   ‚   @  `   D   ‚   L  ^   P   ‚   X  \   \   ‚   d  Z   h   ‚   p  X   t   ‚   |  V   €   ‚   ˆ  T   Œ   ‚   ”  R   ˜   ‚      P   ¤   ‚   ¬  N   °   ‚   ¸  L   ¼   ‚   Ä  J   È   ‚   Ð  z   Ô   ‚   Ü      à       ä   6   è   :   ì   >   ð  ~   ô   l   ø   H   ü   €       D     ‚      `     „     †     ˆ     Š     Œ      Ž   $  �   (  ’   ,  ”   0  –   4  ˜   8  š   <  œ   @  ž   D      H  ¢   L  ¤   P  ¦   T  ¨   X  ª   \  ¬   `  ®   d  °   h   B   l   p   p   h   t  |   x      |   Z   €   N   „   \   ˆ   @   Œ   R   �   j   ”   L   ˜   8   œ   ,          ¤   t   ¨   T   ¬   F   °   X   ´   J   ¸   n   ¼   |   À      Ä   v   È      Ì      Ð      Ô   d   Ø   *   Ü   z   à   
   ä   x   è      ì      ð      ô      ø      ü          .      $      ^     ²     ´             r      "       0   $   2   (   b   ,      0   &   4   (   8   V   <   4   @   P   D   <   H   f   L   ~                                 strlen                     
                                
             )                   
             4                   
             C                   
             Q                   
             ]                   
             g                   
             z                   
             �                   
             �                   
             «                   
             ¹                   
             Å                   
             Ñ                   
             Û                   
             é                   
             ó                   
             þ                   
                               
                               
            )                   
            3                   
            C                   
            R                   
            d                               u                         PL_na                                  †                               ”                               ¡                               ­                               ¹                               Ã                   
            Î                   
            Û                   
            å                   
            õ                   
                               
                               
            %                   
            1                   
            ?                   
            J                   
            U                   
            b                   
            o                   
            |                   
            ‡                   
            •                   
            ¥                   
            µ                   
            Á                   
            Ñ                   
            Ý                   
            ë                   
                                
                               
                               
            -                   
            ;                   
            M                   
            [                   
            h                   
      TOC       Ü   k                strlen    Ü   k                        à   k                     u  ä   k                     †  è   k                     ¡  ì   k               _$STATIC  ð   k                     Ñ  ô   k                     Û  ø   k                     h  ü   k                     Ã      k                     t     k                     |     k                     ‹     k                     ¢     k                     ¹     k                     Ó     k                     ê     k                     ü      k                       $   k                     %  (   k                     =  ,   k                     S  0   k                     i  4   k                     �  8   k                     œ  <   k                     ·  @   k                     Ë  D   k                     á  H   k                     ö  L   k                       P   k                     !  T   k                     5  X   k                     H  \   k                     Z  `   k                     l  d   k                     ¹  h   k                     ë  l   k                     µ  p   k                         t   k                      Ñ  x   k                     U  |   k                       €   k                     b  „   k                     ­  ˆ   k                     %  Œ   k                     Á  �   k                     õ  ”   k               PL_na     ˜   k                     )  œ   k                      ]      k                       ¤   k                     1  ¨   k                     Î  ¬   k                     J  °   k                     å  ´   k                     Ý  ¸   k                     M  ¼   k                      )  À   k                       Ä   k                      Å  È   k                      Q  Ì   k                        Ð   k                     •  Ô   k                       Ø   k                     ;  Ü   k                      C  à   k                     -  ä   k                      ¹  è   k                      g  ì   k                      z  ð   k                      �  ô   k                      �  ø   k                      «  ü   k                     3      k                      ó     k                     o     k                     ~     k                     Š     k                      Û     k                           k                      é     k                     C      k                     R  $   k                     ‡  (   k                      4  ,   k                      þ  0   k                       4   k                     ?  8   k                     d  <   k                       @   k                     ”  D   k                     ¥  H   k                     [  L   k                        ?ÿþùg strcmp.s  Bÿþg .strcmp    @     0      )       .file     ¶ÿþ gPcap.c                  ›               µ                   p   k  /°                   Ý  p     F                   í  d     F                      D     F                     €     F                   &  L     F                   :  €     F                   O  ð     F                   d  (     F                   |  Ô     F                   ’  �     F                   ©  ˆ     F                   ¾  À     F                   Ú  ø     F                   ö  0     F                     h     F                   &        F                   =  Ø     F                   V  ì     F                   j  !      F                   �  "Ü     F                   ”  $¸     F                   ¬  &P     F                   Ç  (     F                   ß  *”     F                   ÷  -T     F                     .¨     F                       9¸   k                _$STATIC       k  ¤                  Þ  ¤            
            t  °            
            ‹  ¼            
            ¢  È            
            ¹  Ô            
            Ó  à            
            ê  ì            
            ü  ø            
                          
            %              
            =              
            S  (            
            i  4            
            �  @            
            œ  L            
            ·  X            
            Ë  d            
            á  p            
            ö  |            
              ˆ            
            !  ”            
            5               
            H  ¬            
            Z  ¸            
            l  Ä            
            ~  P                        Š  Ð            
      glink.s   »ÿþg .strlen        k   (            .strlen          ·            glink.s   Àÿþg       !  1    k   (                  !  1      ¼            glink.s   Åÿþg       .  1H   k   (                  .  1H     Á            glink.s   Êÿþg       9  1p   k   (                  9  1p     Æ            glink.s   Ïÿþg       F  1˜   k   (                  F  1˜     Ë            glink.s   Ôÿþg       R  1À   k   (                  R  1À     Ð            glink.s   Ùÿþg       ^  1è   k   (                  ^  1è     Õ            glink.s   Þÿþg       t  2   k   (                  t  2     Ú            glink.s   ãÿþg       �  28   k   (                  �  28     ß            glink.s   èÿþg       Œ  2`   k   (                  Œ  2`     ä            glink.s   íÿþg       š  2ˆ   k   (                  š  2ˆ     é            glink.s   òÿþg       ©  2°   k   (                  ©  2°     î            glink.s   ÷ÿþg       ·  2Ø   k   (                  ·  2Ø     ó            glink.s   üÿþg       Ä  3    k   (                  Ä  3      ø            glink.s   ÿþg       Õ  3(   k   (                  Õ  3(     ý            glink.s   ÿþg       ä  3P   k   (                  ä  3P                 glink.s   ÿþg       ï  3x   k   (                  ï  3x                 glink.s   ÿþg       ú  3    k   (                  ú  3                  glink.s   ÿþg       	  3È   k   (                  	  3È                 glink.s   ÿþg       	  3ð   k   (                  	  3ð                 glink.s   ÿþg       	*  4   k   (                  	*  4                 glink.s   $ÿþg       	6  4@   k   (                  	6  4@                  glink.s   )ÿþg       	G  4h   k   (                  	G  4h     %            glink.s   .ÿþg       	V  4�   k   (                  	V  4�     *            glink.s   3ÿþg       	e  4¸   k   (                  	e  4¸     /            glink.s   8ÿþg       	q  4à   k   (                  	q  4à     4            glink.s   =ÿþg       	€  5   k   (                  	€  5     9            glink.s   Bÿþg       	�  50   k   (                  	�  50     >            glink.s   Gÿþg       	š  5X   k   (                  	š  5X     C            glink.s   Lÿþg       	ª  5€   k   (                  	ª  5€     H            glink.s   Qÿþg       	»  5¨   k   (                  	»  5¨     M            glink.s   Vÿþg       	É  5Ð   k   (                  	É  5Ð     R            glink.s   [ÿþg       	Ü  5ø   k   (                  	Ü  5ø     W            glink.s   `ÿþg       	ë  6    k   (                  	ë  6      \            glink.s   eÿþg       	ú  6H   k   (                  	ú  6H     a            glink.s   jÿþg       
  6p   k   (                  
  6p     f            glink.s   oÿþg       
  6˜   k   (                  
  6˜     k            glink.s   tÿþg       
/  6À   k   (                  
/  6À     p            glink.s   yÿþg       
@  6è   k   (                  
@  6è     u            glink.s   ~ÿþg       
O  7   k   (                  
O  7     z            glink.s   ƒÿþg       
^  78   k   (                  
^  78                 glink.s   ˆÿþg       
o  7`   k   (                  
o  7`     „            glink.s   �ÿþg       
{  7ˆ   k   (                  
{  7ˆ     ‰            glink.s   ’ÿþg       
‰  7°   k   (                  
‰  7°     Ž            glink.s   —ÿþg       
˜  7Ø   k   (                  
˜  7Ø     “            glink.s   œÿþg       
¦  8    k   (                  
¦  8      ˜            glink.s   ¡ÿþg       
±  8(   k   (                  
±  8(     �            glink.s   ¦ÿþg       
Á  8P   k   (                  
Á  8P     ¢            glink.s   «ÿþg       
Ô  8x   k   (                  
Ô  8x     §            glink.s   °ÿþg       
ã  8    k   (                  
ã  8      ¬            glink.s   µÿþg       
ó  8È   k   (                  
ó  8È     ±            glink.s   ºÿþg         8ð   k   (                    8ð     ¶            glink.s   ¿ÿþg         9   k   (                    9     »            glink.s   Äÿþg         9@   k   (                    9@     À            glink.s   Éÿþg       4  9h   k   (                  4  9h     Å            glink.s ÿÿÿÿÿþg       E  9�   k   (                  E  9�     Ê              S_system_configuration pcap_setfilter pcap_stats pcap_open_live pcap_strerror pcap_fileno pcap_file pcap_minor_version pcap_major_version pcap_is_swapped pcap_snapshot pcap_datalink pcap_geterr pcap_perror pcap_next pcap_dispatch pcap_loop pcap_close pcap_lookupnet pcap_lookupdev pcap_compile pcap_dump pcap_dump_close pcap_dump_open pcap_open_offline PL_markstack_max PL_markstack_ptr PL_stack_base PL_stack_max PL_stack_sp PL_sv_undef PL_sv_yes Perl_croak Perl_do_open Perl_form Perl_gv_stashpv Perl_hv_fetch Perl_hv_store Perl_markstack_grow Perl_mg_set Perl_newGVgen Perl_newHV Perl_newRV Perl_newSViv Perl_newSVpv Perl_newSVsv Perl_newXS Perl_safefree Perl_safemalloc Perl_stack_grow Perl_sv_2iv Perl_sv_2mortal Perl_sv_2pv Perl_sv_bless Perl_sv_derived_from Perl_sv_free Perl_sv_newmortal Perl_sv_setiv Perl_sv_setpv Perl_sv_setref_pv Perl_sv_setsv perl_call_sv perl_get_sv XS_Net__Pcap_lookupdev XS_Net__Pcap_lookupnet XS_Net__Pcap_open_live XS_Net__Pcap_open_offline XS_Net__Pcap_dump_open XS_Net__Pcap_loop XS_Net__Pcap_dispatch XS_Net__Pcap_close XS_Net__Pcap_dump_close XS_Net__Pcap_datalink XS_Net__Pcap_snapshot XS_Net__Pcap_is_swapped XS_Net__Pcap_major_version XS_Net__Pcap_minor_version XS_Net__Pcap_geterr XS_Net__Pcap_strerror XS_Net__Pcap_compile XS_Net__Pcap_setfilter XS_Net__Pcap_fileno XS_Net__Pcap_perror XS_Net__Pcap_stats XS_Net__Pcap_file XS_Net__Pcap_dump XS_Net__Pcap_next callback_fn callback_wrapper Fri Nov 26 11:01:10 1999  C for AIX Compiler Version 4.4.0.0 ---  .boot_Net__Pcap .XS_Net__Pcap_next .XS_Net__Pcap_dump .XS_Net__Pcap_file .XS_Net__Pcap_stats .XS_Net__Pcap_perror .XS_Net__Pcap_fileno .XS_Net__Pcap_setfilter .XS_Net__Pcap_compile .XS_Net__Pcap_strerror .XS_Net__Pcap_geterr .XS_Net__Pcap_minor_version .XS_Net__Pcap_major_version .XS_Net__Pcap_is_swapped .XS_Net__Pcap_snapshot .XS_Net__Pcap_datalink .XS_Net__Pcap_dump_close .XS_Net__Pcap_close .XS_Net__Pcap_dispatch .XS_Net__Pcap_loop .XS_Net__Pcap_dump_open .XS_Net__Pcap_open_offline .XS_Net__Pcap_open_live .XS_Net__Pcap_lookupnet .XS_Net__Pcap_lookupdev .callback_wrapper .Perl_sv_2pv .Perl_form .perl_get_sv .Perl_croak .Perl_newXS .Perl_sv_derived_from .Perl_sv_2iv .pcap_next .Perl_newSViv .Perl_hv_store .Perl_newSVpv .Perl_mg_set .Perl_sv_2mortal .Perl_hv_fetch .pcap_dump .pcap_file .Perl_sv_newmortal .Perl_newGVgen .Perl_do_open .Perl_newRV .Perl_gv_stashpv .Perl_sv_bless .Perl_sv_setsv .pcap_stats .Perl_sv_setiv .pcap_perror .pcap_fileno .pcap_setfilter .Perl_safemalloc .pcap_compile .Perl_sv_setref_pv .pcap_strerror .Perl_sv_setpv .pcap_geterr .pcap_minor_version .pcap_major_version .pcap_is_swapped .pcap_snapshot .pcap_datalink .pcap_dump_close .pcap_close .Perl_newSVsv .pcap_dispatch .Perl_sv_free .pcap_loop .pcap_dump_open .pcap_open_offline .Perl_safefree .pcap_open_live .pcap_lookupnet .pcap_lookupdev .Perl_newHV .Perl_markstack_grow .Perl_stack_grow .perl_call_sv  7ˆkê\3 ³“ $�              Ÿ„>8Ø 48FC58                      ./usr/local/lib/perl5/site_perl/5.005/aix/auto/Net/Pcap/Pcap.bs              ó/      $�          kêÈ ¶“ ¤�          Ó   Ÿ„>8ºD58ºD58      p  )�  Ó       ./usr/local/lib/perl5/site_perl/5.005/aix/auto/Net/Pcap/.packlist                    ó/      ¤�          /usr/local/lib/perl5/site_perl/5.005/aix/Net/Pcap.pm
/usr/local/lib/perl5/site_perl/5.005/aix/auto/Net/Pcap/Pcap.bs
/usr/local/lib/perl5/site_perl/5.005/aix/auto/Net/Pcap/Pcap.so
/usr/local/man/man3/Net__Pcap.3
c .pckêxo Ð“ ¤�          [   Ÿ„>8ŒI58ŒI58      p  à‘  [       ./usr/local/lib/perl5/site_perl/5.005/aix/auto/Net/PcapUtils/.packlist               ó/      ¤�          /usr/local/lib/perl5/site_perl/5.005/Net/PcapUtils.pm
/usr/local/man/man3/Net__PcapUtils.3
ix/aukê¨# µ“ $�          …!  Ÿ„>8²tù6FC58      0  .™  …!      ./usr/local/lib/perl5/site_perl/5.005/aix/Net/Pcap.pm pU             ó/      $�          #
# Pcap.pm
#
# An interface to the LBL pcap(3) library.  This module simply
# bootstraps the extensions defined in Pcap.xs
#
# Copyright (c) 1999 Tim Potter. All rights reserved. This program is free 
# software; you can redistribute it and/or modify it under the same terms 
# as Perl itself.
#
# Comments/suggestions to tpot@acsys.anu.edu.au
#
# $Id: Pcap.pm,v 1.7 1999/03/24 23:26:42 tpot Exp $
#

package Net::Pcap;

require Exporter;
require DynaLoader;

use vars qw($VERSION @ISA);

@ISA = qw(Exporter DynaLoader);
@EXPORT = qw();

$VERSION = '0.03';

bootstrap Net::Pcap $VERSION;

1;

# autoloaded methods go after the END token (&& pod) below

__END__

=head1 NAME

C<Net::Pcap> - Interface to pcap(3) LBL packet capture library

=head1 SYNOPSIS

  use Net::Pcap;

=head1 DESCRIPTION

C<Net::Pcap> is a Perl binding to the LBL pcap(3) library, version
0.4.  The README for libpcap describes itself as:

  "a system-independent interface for user-level packet capture.
  libpcap provides a portable framework for low-level network
  monitoring.  Applications include network statistics collection,
  security monitoring, network debugging, etc."

=head1 FUNCTIONS

All functions defined by C<Net::Pcap> are direct mappings to the
libpcap functions.  Consult the pcap(3) documentation and source code
for more information.

Arguments that change a parameter, for example Net::Pcap::lookupdev(),
are passed that parameter as a reference.  This is to retain
compatibility with previous versions of Net::Pcap.

=head2 Lookup functions

=over

=item B<Net::Pcap::lookupdev(\$err);>

Returns the name of a network device that can be used with
Net::Pcap::open_live() function.  On error, the $err parameter is
filled with an appropriate error message else it is undefined.

=item B<Net::Pcap::lookupnet($dev, \$net, \$mask, \$err);>

Determine the network number and netmask for the device specified in
C<$dev>.  The function returns 0 on success and sets the C<$net> and
C<$mask> parameters with values.  On failure it returns -1 and the
C<$err> parameter is filled with an appropriate error message.z

=head2 Packet capture functions

=over

=item B<Net::Pcap::open_live($dev, $snaplen, $promisc, $to_ms, \$err);>

Returns a packet capture descriptor for looking at packets on the
network.  The $dev parameter specifies which network interface to
capture packets from.  The $snaplen and $promisc parameters specify
the maximum number of bytes to capture from each packet, and whether
to put the interface into promiscuous mode, respectively.  The $to_ms
parameter specifies a read timeout in ms.  The packet descriptor will
be undefined if an error occurs, and the $err parameter will be set
with an appropriate error message.

=item B<Net::Pcap::loop($pcap_t, $cnt, \&callback_fn, $user_data);>

Read $cnt packets from the packet capture descriptor $pcap_t and call
the perl function &callback_fn with an argument of $user_data.  If $cnt is negative, then the function loops forever or until an error occurs.

The callback function is also passed packet header information and
packet data like so:

  sub process_pkt {
      my($user_data, $hdr, $pkt) = @_;

      ...
  }

The header information is a reference to a hash containing the
following fields.

=over

=item * len

The total length of the packet.

=item * caplen

The actual captured length of the packet data.  This corresponds to
the snapshot length parameter passed to Net::Pcap::open_live().

=item * tv_sec

Seconds value of the packet timestamp.

=item * tv_usec

Microseconds value of the packet timestamp.

=back

=item B<Net::Pcap::open_offline($filename, \$err);>

Return a packet capture descriptor to read from a previously created
"savefile".  The returned descriptor is undefined if there was an
error and in this case the $err parameter will be filled.  Savefiles
are created using the Net::Pcap::dump_* commands.

=item B<Net::Pcap::close($pcap_t);>

Close the packet capture device associated with descriptor $pcap_t.

=item B<Net::Pcap::dispatch($pcap_t, $cnt, \&callback_fn, $user_data);>

Collect $cnt packets and process them with callback function
&callback_fn.  if $cnt is -1, all packets currently buffered are
processed.  If $cnt is 0, process all packets until an error occurs. 

=item B<Net::Pcap::next($pcap_t, \%hdr);>

Return the next available packet on the interface associated with
packet descriptor $pcap_t.  Into the %hdr hash is stored the received
packet header.  If not packet is available, the return value and
header is undefined.

=item B<Net::Pcap::compile($pcap_t, \$filter_t, $filter_str, $optimize, $netmask);>

Compile the filter string contained in $filter_str and store it in
$filter_t.  A description of the filter language can be found in the
libpcap source code, or the manual page for tcpdump(8) .  The filter
is optimized the filter if the $optimize variable is true.  The
netmask of the network device must be specified in the $netmask
parameter.  The function returns 0 if the compilation was successful,
or -1 if there was a problem.

=item B<Net::Pcap::setfilter($pcap_t, $filter_t);>

Associate the compiled filter stored in $filter_t with the packet
capture descriptor $pcap_t.

=back

=head2 Savefile commands

=over

=item B<Net::Pcap::dump_open($pcap_t, $filename);>

Open a savefile for writing and return a descriptor for doing so.  If
$filename is "-" data is written to standard output.  On error, the
return value is undefined and Net::Pcap::geterr() can be used to
retrieve the error text.

=item B<Net::Pcap::dump($pcap_dumper_t, \%hdr, $pkt);>

Dump the packet described by header %hdr and packet data $pkt to the
savefile associated with $pcap_dumper_t.  The packet header has the
same format as that passed to the Net::Pcap::loop() callback.

=item B<Net::Pcap::dump_close($pcap_dumper_t);>

Close the savefile associated with descriptor $pcap_dumper_t.

=back

=head2 Status functions

=over

=item B<Net::Pcap::datalink($pcap_t);>

Returns the link layer type associated with the currently open device.

=item B<Net::Pcap::snapshot($pcap_t);>

Returns the snapshot length (snaplen) specified in the call to
Net::Pcap::open_live().

=item B<Net::Pcap::is_swapped($pcap_t);>

This function returns true if the endianess of the currently open
savefile is different from the endianess of the machine.

=item B<Net::Pcap::major_version($pcap_t);>

Return the major version number of the pcap library used to write the
currently open savefile.

=item B<Net::Pcap::minor_version($pcap_t);>

Return the minor version of the pcap library used to write the
currently open savefile.

=item B<Net::Pcap::stats($pcap_t, \%stats);>

Returns a hash containing information about the status of packet
capture device $pcap_t.  The hash contains the following fields.

=over

=item * C<ps_recv>

The number of packets received by the packet capture software.

=item * C<ps_drop>

The number of packets dropped by the packet capture software.

=item * C<ps_ifdrop>

The number of packets dropped by the network interface.

=back

=item B<Net::Pcap::file($pcap_t);>

Return the filehandle associated with a savefile opened with
Net::Pcap::open_offline().

=item B<Net::Pcap::fileno($pcap_t);>

Return the file number of the network device opened with
Net::Pcap::open_live().

=back

=head2 Error handling

=over

=item B<Net::Pcap::geterr($pcap_t);>

Return an error message for the last error associated with the packet
capture device $pcap_t.

=item B<Net::Pcap::strerror($errno);>

Return a string describing error number $errno.

=item B<Net::Pcap::perror($pcap_t, $prefix);>

Print the text of the last error associated with descriptor $pcap_t on
standard error, prefixed by $prefix.

=back

=head1 LIMITATIONS

The following limitations apply to this version of C<Net::Pcap>.

=over 

=item *

The memory associated with filters created using Net::Pcap::compile()
is not disposed of.

=item *

At present, only one callback function and user data scalar can be
current at any time as they are both stored in global variables.

=back

=head1 EXAMPLES

See the 't' directory of the C<Net::Pcap> distribution for examples
on using this module.

=head1 COPYRIGHT

Copyright (c) 1999 Tim Potter. All rights reserved. This program is
free software; you can redistribute it and/or modify it under the same
terms as Perl itself.

=head1 SEE ALSO

pcap(3), tcpdump(8)

The source code for libpcap is available from ftp://ftp.ee.lbl.gov/libpcap.tar.Z

=head1 AUTHOR

Tim Potter E<lt>tpot@acsys.anu.edu.auE<gt>

=cut

# any real autoloaded methods go after this line
vaikêÚ Î“ $�          Ü!   „>8äµ
7ÍH58      0  -˜  Ü!      ./usr/local/lib/perl5/site_perl/5.005/Net/PcapUtils.pm U             ó/      $�          #
# Net::PcapUtils
#
# Some code to abstract away some of the messier parts of using the
# Net::Pcap library.  The idea is to be able to write "one-liner" type
# scripts for packet capture without getting bogged down in the
# initialisation code. 
#
# Please send comments/suggestions to tpot@acsys.anu.edu.au
#
# $Id: PcapUtils.pm,v 1.5 1999/04/07 01:33:24 tpot Exp $
#

package Net::PcapUtils;

#
# Copyright (c) 1995,1996,1997,1998,1999 ANU and CSIRO on behalf of
# the participants in the CRC for Advanced Computational Systems
# ('ACSys').
#
# ACSys makes this software and all associated data and documentation
# ('Software') available free of charge.  You may make copies of the 
# Software but you must include all of this notice on any copy.
#
# The Software was developed for research purposes and ACSys does not
# warrant that it is error free or fit for any purpose.  ACSys
# disclaims any liability for all claims, expenses, losses, damages
# and costs any user may incur as a result of using, copying or
# modifying the Software.
#

use strict;
use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);

my $myclass;
BEGIN {
    $myclass = __PACKAGE__;
    $VERSION = "0.01";
}
sub Version () { "$myclass v$VERSION" }

BEGIN {
    @ISA = qw(Exporter);

# Items to export into callers namespace by default
# (move infrequently used names to @EXPORT_OK below)

    @EXPORT = qw(
    );

# Other items we are prepared to export if requested

    @EXPORT_OK = qw(
    );

# Tags:

    %EXPORT_TAGS = (
    ALL         => [@EXPORT, @EXPORT_OK],
);

}

use Net::Pcap 0.03;  # Not all functions implemented in previous Net::Pcap's

#
# Set up Net::Pcap to capture packets live from the wire, or play back
# packets from a savefile.  Call a Perl subroutine for each packet
# received.
#

sub loop {
    my($callback, @rest) = @_;
    my($errbuf, $bpf_prog);

    # Default arguments

    my %args = (
        SNAPLEN => 100,         # Num bytes to capture from packet
	PROMISC => 1,           # Operate in promiscuous mode?
        TIMEOUT => 1000,        # Read timeout (ms)
        NUMPACKETS => -1,       # Pkts to read (-1 = loop forever)
        FILTER => '',           # Filter string
	USERDATA => '',         # Passed as first arg to callback fn
	SAVEFILE => '',         # Default save file
        DEV => '',              # Network interface to open
	mode => '',             # Internal variable
        @rest);

    # Get pcap device if not specified

    if ($args{DEV} eq '') {
	$args{DEV} = Net::Pcap::lookupdev(\$errbuf);
	return $errbuf, unless $args{DEV};
    }

    # Get pcap network/netmask

    my($net, $mask);
    return $errbuf, if (Net::Pcap::lookupnet($args{DEV}, \$net, \$mask,
					     \$errbuf) == -1);    
    #
    # Open in specified mode
    #

    my $pcap_desc;

    if ($args{SAVEFILE} eq '') {

	# Open interface "live"

	$pcap_desc = Net::Pcap::open_live($args{DEV}, $args{SNAPLEN},
					  $args{PROMISC},
					  $args{TIMEOUT},
					  \$errbuf);

	return $errbuf, unless $pcap_desc;

    } else {

	# Open saved file

	$pcap_desc = Net::Pcap::open_offline($args{SAVEFILE}, \$errbuf);

	return $errbuf, unless $pcap_desc;

    }
    
    # Set up filter, if defined
    
    if ($args{FILTER} ne '') {
    	return(Net::Pcap::geterr($pcap_desc)), 
	  if ((Net::Pcap::compile($pcap_desc, \$bpf_prog, 
				  $args{FILTER}, 0, $mask) == -1) ||
	      (Net::Pcap::setfilter($pcap_desc, $bpf_prog) == -1));
    } 

    # Start looping

    if ($args{mode} ne "setup") {

	# Call loop function

	my $result = Net::Pcap::loop($pcap_desc, $args{NUMPACKETS}, 
				     \&$callback, $args{USERDATA});
        Net::Pcap::close($pcap_desc);

	if ($result == 0) {
	    return "";
	} else {
	    return(Net::Pcap::geterr($pcap_desc));
	}

    } else {

	# Just return the pcap descriptor is setup-only mode

	return $pcap_desc;
    }
}

# Open a live network interface or save file and return the pcap
# descriptor.  Takes the same arguments as Net::PcapUtils::loop()
# function.

sub open {
    return loop(undef, @_, mode => 'setup');
}

# Return the next packet available on the specified packet capture
# descriptor.

sub next {
    my($pcap_t) = @_;
    my($pkt, %hdr);

    while(!($pkt = Net::Pcap::next($pcap_t, \%hdr))) {
	# No packet available
    }

    return ($pkt, %hdr);
}

#
# Module initialisation
#

1;

# autoloaded methods go after the END token (&& pod) below

__END__

=head1 NAME

C<Net::PcapUtils> - Utility routines for Net::Pcap module

=head1 SYNOPSIS

  require Net::Pcap 0.03;
  use Net::PcapUtils;

  # Call function for all packets received

  Net::PcapUtils::loop(\&callbackfn, [optional args]);

  # Return the next packet available on the interface

  ($pkt, %hdr) = Net::PcapUtils::next($pcap_t);

  # Open a network device for processing

  $pcap_t = Net::PcapUtils::open([optional args]);

=head1 DESCRIPTION

Net::PcapUtils is a module to sit in front of Net::Pcap in order to
hide some of the pcap(3) initialisation by providing sensible
defaults.  This enables a programmer to easily write small, specific
scripts for a particular purpose without having to worry about too
many details.

The functions implemented in Net::PcapUtils are named after those in
Net::Pcap.  The B<loop> function sits in a loop and executes a
callback for each packet received, while B<next> retrieves the next
packet from the network device, and B<open> returns an opened packet
descriptor suitable for use with other Net::Pcap routines.

=head2 Functions

=over

=item B<Net::PcapUtils::loop(\&callback_fn, [ARG =E<gt> value]);>

Given a callback function and a list of optional named parameterss,
open a network interface, configure it, and execute the callback
function for each packet received on the interface.  If the SAVEFILE
parameter is present, a saved file of that name will be opened for
reading, else the network interface specified by the DEV parameter
will be opened.  If no saved file or device is specified, the
interface returned by Net::Pcap::lookupdev() is opened.

The optional arguments are those which are normally passed to the
pcap_open_live() function from the pcap(3) library.  Their defaults
are given below.

    my %args = (
        SNAPLEN => 100,         # Num bytes to capture from packet
	PROMISC => 1,           # Operate in promiscuous mode?
        TIMEOUT => 1000,        # Read timeout (ms)
        NUMPACKETS => -1,       # Pkts to read (-1 = loop forever)
        FILTER => '',           # Filter string
	USERDATA => '',         # Passed as first arg to callback fn
	SAVEFILE => '',         # Default save file
	DEV => '',              # Network interface to open
        );

Consult the documentation for the pcap(3) library for more details on
the nature of these parameters.

On error, this function returns an error string describing the error.
An empty string is returned upon success.

=item B<Net::PcapUtils::open([ARG =E<gt> value]);>

Return a packet capture descriptor.  The optional arguments passed to
this function are the same as those which can be passed to
Net::PcapUtils::loop().

If the open() command was successful, it returns a reference to a
packet capture descriptor, else a string containing an error message.

=item B<Net::PcapUtils::next($pcap_t);>

Return the next packet available on the interface specified by packet
capture descriptor $pcap_t.  This may be obtained from the
Net::PcapUtils::open() function, Net::Pcap::open_live() or
Net::Pcap::open_offline().

=back

=head1 EXAMPLE

The following script prints a message for each IP packet received.

  #!/usr/bin/perl -w

  use strict;
  use Net::PcapUtils;

  sub process_pkt {
      print("packet\n");
  }

  Net::PcapUtils::loop(\&process_pkt, FILTER => 'ip');

=head1 SEE ALSO

The C<Net::Pcap> module for XS bindings to the C<pcap(3)> library.

The pcap library is available from ftp://ftp.ee.lbl.gov/libpcap.tar.Z

=head1 COPYRIGHT

  Copyright (c) 1995,1996,1997,1998,1999 ANU and CSIRO on behalf of
  the participants in the CRC for Advanced Computational Systems
  ('ACSys').

  ACSys makes this software and all associated data and documentation
  ('Software') available free of charge.  You may make copies of the 
  Software but you must include all of this notice on any copy.

  The Software was developed for research purposes and ACSys does not
  warrant that it is error free or fit for any purpose.  ACSys
  disclaims any liability for all claims, expenses, losses, damages
  and costs any user may incur as a result of using, copying or
  modifying the Software.

=head1 AUTHOR

Tim Potter E<lt>tpot@acsys.anu.edu.auE<gt>

=cut

# any real autoloaded methods go after this line
ion kê~™ ™“ ¤�          ¾   „>8òC58òC58      p  NŽ  ¾      ./usr/local/lib/Net-Pcap-0.03/t/leaktest6.pl pUt             ó/      ¤�          #!/usr/bin/perl
#
# Test for memory leaks in stats() function
#
# $Id: leaktest6.pl,v 1.2 1999/03/14 03:14:10 tpot Exp $
#

use strict;
use English;

use ExtUtils::testlib;
use Net::Pcap;

die("Must run as root!\n"), if ($UID != 0);

my($dev, $err, $pcap_t);

$dev = Net::Pcap::lookupdev(\$err);
$pcap_t = Net::Pcap::open_live($dev, 1024, 1, 0, \$err);

if (!defined($pcap_t)) {
    die("Net::Pcap::open_live returned error $err");
}

my $count;

sub process_pkt {
    my($user, $hdr, $pkt) = @_;
    my(%stats);

    $count++;

    Net::Pcap::stats($pcap_t, \%stats);

    print("$count\n"), if (($count % 1000) == 0);
}

Net::Pcap::loop($pcap_t, 0, \&process_pkt, "1234");
Net::Pcap::close($pcap_t);
sikê@	 š“ ¤�             „>8òC58òC58      `  ¨Ž        ./usr/local/lib/Net-Pcap-0.03/t/11-misc.t pl pUt             ó/      ¤�          #!/usr/bin/perl
#
# Test misc functions
#
# $Id: 11-misc.t,v 1.3 1999/03/15 06:33:31 tpot Exp $
#

use strict;
use English;

use ExtUtils::testlib;
use Net::Pcap;

print("1..3\n");

# Must run as root

if ($UID != 0) {
    print("not ok\n");
    exit;
}

my($dev, $pcap_t, $err, $slen);

#
# Test snapshot
#

$dev = Net::Pcap::lookupdev(\$err);
$pcap_t = Net::Pcap::open_live($dev, 1024, 1, 0, \$err);

if (!defined($pcap_t)) {
    print("Net::Pcap::open_live returned error $err\n");
    print("not ok\n");
    exit;
}

$slen = Net::Pcap::snapshot($pcap_t);

if ($slen != 1024) {
    print("bad snapshot len $slen\n");
    print("not ok\n");
} else {
    print("ok\n");
}

Net::Pcap::close($pcap_t);

$pcap_t = Net::Pcap::open_live($dev, 2048, 1, 0, \$err);

if (!defined($pcap_t)) {
    print("Net::Pcap::open_live returned error $err");
    print("not ok\n");
    exit;
}

$slen = Net::Pcap::snapshot($pcap_t);

if ($slen != 2048) {
    print("bad snapshot len $slen\n");
    print("not ok\n");
} else {
    print("ok\n");
}

#
# Test datalink function
#

my $dlt = Net::Pcap::datalink($pcap_t);
print("Datalink is $dlt\n");


if (($dlt < 0) or !(defined($dlt))) {
    print("bad datalink type\n");
    print("not ok\n");
} else {
    print("ok\n");
}

Net::Pcap::close($pcap_t);
k devkê,6 ›“ ¤�          E   „>8òC58òC58      `  ÈŽ  E      ./usr/local/lib/Net-Pcap-0.03/t/08-filter.t  pUt             ó/      ¤�          #!/usr/bin/perl
#
# Test open_live functions
#
# $Id: 08-filter.t,v 1.5 1999/03/15 06:33:31 tpot Exp $
#

use strict;
use English;

use ExtUtils::testlib;
use Net::Pcap;

print("1..2\n");

# Must run as root

if ($UID != 0) {
    print("not ok\n");
    exit;
}

my($dev, $pcap_t, $err, $result, $net, $mask, $filter);

#
# Test filter compile function (& geterr incidentally)
#

$dev = Net::Pcap::lookupdev(\$err);
$result = Net::Pcap::lookupnet($dev, \$net, \$mask, \$err);
$pcap_t = Net::Pcap::open_live($dev, 1024, 1, 0, \$err);

if (!defined($pcap_t)) {
    print("Net::Pcap::open_live returned error $err\n");
    print("\n");
    exit;
}

$result = Net::Pcap::compile($pcap_t, \$filter, "tcp", 0, $mask);

if ($result == -1) {
    print("Net::Pcap::compile returned ", Net::Pcap::geterr($pcap_t), "\n");
    print("not ok\n");
} else {
    print("ok\n");
}

#
# Test setfilter function
#

$result = Net::Pcap::setfilter($pcap_t, $filter);

if ($result == -1) {
    print(Net::Pcap::geterr($pcap_t), "\n");
    print("not ok\n");
} else {
    print("ok\n");
}

Net::Pcap::close($pcap_t);
p_tkê|A œ“ ¤�          J   „>8òC58òC58      `  ÊŽ  J      ./usr/local/lib/Net-Pcap-0.03/t/09-error.t   pUt             ó/      ¤�          #!/usr/bin/perl
#
# Test open_live functions
#
# $Id: 09-error.t,v 1.5 1999/03/15 06:33:31 tpot Exp $
#

use strict;
use English;

use ExtUtils::testlib;
use Net::Pcap;

print("1..2\n");

# Must run as root

if ($UID != 0) {
    print("not ok\n");
    exit;
}

my($dev, $pcap_t, $err, $net, $mask);
my($result, $filter);

$dev = Net::Pcap::lookupdev(\$err);
$result = Net::Pcap::lookupnet($dev, \$net, \$mask, \$err);
$pcap_t = Net::Pcap::open_live($dev, 1024, 1, 0, \$err);

if (!defined($pcap_t)) {
    print("Net::Pcap::open_live returned error $err");
    print("not ok\n");
    exit;
}

$result = Net::Pcap::compile($pcap_t, \$filter, "beans and ham", 0, $mask);

if ($result == 0) {
    print("Call to Net::Pcap::compile actually worked!");
    print("not ok\n");
    exit;
}

my($geterr, $strerror);

$geterr = Net::Pcap::geterr($pcap_t);
($geterr eq "") ? print("not ok\n") : print("ok\n");

$strerror = Net::Pcap::strerror(1);
($strerror eq "") ? print("not ok\n") : print("ok\n");

# This test, if enabled, mucks up the test harness script 

#Net::Pcap::perror($pcap_t, "$0 test error");

printkê` �“ ¤�          ÿ   „>8òC58òC58      `  ÌŽ  ÿ      ./usr/local/lib/Net-Pcap-0.03/t/13-dispatch.t Ut             ó/      ¤�          #!/usr/bin/perl
#
# Test dispatch function
#
# $Id: 13-dispatch.t,v 1.3 1999/03/15 06:33:32 tpot Exp $
#

use strict;
use English;

use ExtUtils::testlib;
use Net::Pcap;

print("1..1\n");

# Must run as root

if ($UID != 0) {
    print("not ok\n");
    exit;
}

my($dev, $pcap_t, $err);

#
# Test loop on open_live interface
#

$dev = Net::Pcap::lookupdev(\$err);
$pcap_t = Net::Pcap::open_live($dev, 1024, 1, 1, \$err);

if (!defined($pcap_t)) {
    print("Net::Pcap::open_live returned error $err\n");
    print("not ok\n");
    exit;
}

sub process_pkt {
    my($user, $hdr, $pkt) = @_;

    if (($user ne "abc") or !defined($hdr) or !defined($pkt)) {
	print("Bad args passed to callback\n");
	print("Bad user data\n"), if ($user ne "abc");
	print("Bad pkthdr\n"), if (!defined($hdr));
	print("Bad pkt data\n"), if (!defined($pkt));
	print("not ok\n");
	exit;
    }

    print("Received packet of len $hdr->{len}\n");
}

Net::Pcap::dispatch($pcap_t, 10, \&process_pkt, "abc");
Net::Pcap::close($pcap_t);

print("ok\n");
ukêÌŸ ž“ ¤�          Ä   „>8òC58òC58      `  ÎŽ  Ä      ./usr/local/lib/Net-Pcap-0.03/t/07-stats.t .t Ut             ó/      ¤�          #!/usr/bin/perl
#
# Test stats
#
# $Id: 07-stats.t,v 1.4 1999/03/15 06:33:30 tpot Exp $
#

use strict;
use English;

use ExtUtils::testlib;
use Net::Pcap;

print("1..1\n");

# Must run as root

if ($UID != 0) {
    print("not ok\n");
    exit;
}

my($dev, $pcap_t, $err);

$dev = Net::Pcap::lookupdev(\$err);
$pcap_t = Net::Pcap::open_live($dev, 1024, 1, 0, \$err);

if (!defined($pcap_t)) {
    print("Net::Pcap::open_live returned error $err\n");
    print("not ok\n");
    exit;
}

my $count = 0;

sub process_pkt
{
    my($user, $hdr, $pkt) = @_;
    my %stats;
    
    print("In process_pkt:\n");

    Net::Pcap::stats($pcap_t, \%stats);

    $count++;

    if ($count != $stats{ps_recv}) {
	print("Bad statistics\n");
	print("not ok\n");
	exit;
    }

    print("Received $stats{ps_recv}, dropped $stats{ps_drop}, ", 
	  "interface dropped $stats{ps_ifdrop}\n");
}

Net::Pcap::loop($pcap_t, 10, \&process_pkt, 0);
Net::Pcap::close($pcap_t);

print("ok\n");
ss_pkê’  Ÿ“ ¤�          ¿   „>8òC58òC58      `  Ä‹  ¿      ./usr/local/lib/Net-Pcap-0.03/t/05-dump.t  .t Ut             ó/      ¤�          #!/usr/bin/perl
#
# Test loop function
#
# $Id: 05-dump.t,v 1.5 1999/03/15 06:37:26 tpot Exp $
#

use strict;
use English;

use ExtUtils::testlib;
use Net::Pcap;

print("1..1\n");

my($dev, $pcap_t, $pcap_dumper_t, $err);
my $dumpfile = "/tmp/Net-Pcap-dump.$$";

# Must run as root

if ($UID != 0) {
    print("not ok\n");
    exit;
}

#
# Test loop on open_live interface
#

$dev = Net::Pcap::lookupdev(\$err);
$pcap_t = Net::Pcap::open_live($dev, 1024, 1, 0, \$err);

if (!defined($pcap_t)) {
    print("Net::Pcap::open_live returned error $err\n");
    print("not ok\n");
    exit;
}

$pcap_dumper_t = Net::Pcap::dump_open($pcap_t, $dumpfile);

if (!defined($pcap_dumper_t)) {
    print("Net::Pcap::dump_open failed: ", Net::Pcap::geterr($pcap_t), "\n");
    print("not ok\n");
    exit;
}

my($count) = 0;

sub process_pkt {
    my($user, $hdr, $pkt) = @_;

    if (($user ne "xyz") or !defined($hdr) or !defined($pkt)) {
	print("Bad args passed to callback\n");
	print("Bad user data\n"), if ($user ne "xyz");
	print("Bad pkthdr\n"), if (!defined($hdr));
	print("Bad pkt data\n"), if (!defined($pkt));
	print("not ok\n");
	exit;
    }

    Net::Pcap::dump($pcap_dumper_t, $hdr, $pkt);

    $count++;
}

Net::Pcap::loop($pcap_t, 10, \&process_pkt, "xyz");
Net::Pcap::close($pcap_t);

Net::Pcap::dump_close($pcap_dumper_t);

if (!-f $dumpfile) {
    print("No save file created\n");
    print("not ok\n");
} else {
    print("ok\n");
}

END {
    unlink($dumpfile);
}
vkêÞ  “ ¤�          ¦   „>8òC58òC58      `  Æ‹  ¦      ./usr/local/lib/Net-Pcap-0.03/t/02-lookup.t t Ut             ó/      ¤�          #!/usr/bin/perl
#
# Test lookup functions
#
# $Id: 02-lookup.t,v 1.4 1999/03/15 06:33:29 tpot Exp $
#

use strict;

use ExtUtils::testlib;
use Net::Pcap;

print("1..2\n");

my($dev, $net, $mask, $err);

#
# Test lookupdev() function
#

$dev = Net::Pcap::lookupdev(\$err);

if ($dev eq "") {
    print("not ok\n");
} else {
    print("ok\n");
}

if ($dev eq "") {
    print("Net::Pcap::lookupdev returned error $err\n");
    print("not ok\n");
    exit;
} else {
    print("Net::Pcap::lookupdev returned device $dev\n");
}

#
# Test lookupnet() function
#

# From test.pl, Net-Pcap-0.01.tar.gz

sub dotquad {
    my($na, $nb, $nc, $nd);
    my ( $net ) = @_ ;
    $na=$net >> 24 & 255 ;
    $nb=$net >> 16 & 255 ;
    $nc=$net >>  8 & 255 ;
    $nd=$net & 255 ;
    return ( "$na.$nb.$nc.$nd") ;
}

my($result);

$result = Net::Pcap::lookupnet($dev, \$net, \$mask, \$err);

if ($result == -1) {
    print("not ok\n");
    print("Net::Pcap::lookupnet returned error $err\n");
    exit;	  
} else {
    print("Net::Pcap::lookupnet returned net ", dotquad($net),
	  " and mask ", dotquad($mask), "\n");
}

if (($net == 0) or ($mask == 0)) {
    print("not ok\n");
} else {
    print("ok\n");
}

 kêtg ¡“ ¤�          ²	   „>8òC58òC58      `  �  ²	      ./usr/local/lib/Net-Pcap-0.03/t/10-fileno.t t Ut             ó/      ¤�          #!/usr/bin/perl
#
# Test loop function
#
# $Id: 10-fileno.t,v 1.5 1999/03/15 06:37:26 tpot Exp $
#

use strict;
use English;

use ExtUtils::testlib;
use Net::Pcap;

print("1..4\n");

my($dev, $pcap_t, $pcap_dumper_t, $err);
my $dumpfile = "/tmp/Net-Pcap-dump.$$";

# Must run as root

if ($UID != 0) {
    print("not ok\n");
    exit;
}

#
# Test file and fileno on offline interface
#

$dev = Net::Pcap::lookupdev(\$err);
$pcap_t = Net::Pcap::open_live($dev, 1024, 1, 0, \$err);

if (!defined($pcap_t)) {
    print("Net::Pcap::open_live returned error $err\n");
    print("not ok\n");
    exit;
}

$pcap_dumper_t = Net::Pcap::dump_open($pcap_t, $dumpfile);

if (!defined($pcap_dumper_t)) {
    print("Net::Pcap::dump_open failed: ", Net::Pcap::geterr($pcap_t), "\n");
    print("not ok\n");
    exit;
}

sub process_pkt {
    my($user, $hdr, $pkt) = @_;

    if (($user ne "xyz") or !defined($hdr) or !defined($pkt)) {
	print("Bad args passed to callback\n");
	print("Bad user data\n"), if ($user ne "xyz");
	print("Bad pkthdr\n"), if (!defined($hdr));
	print("Bad pkt data\n"), if (!defined($pkt));
	print("not ok\n");
	exit;
    }

    Net::Pcap::dump($pcap_dumper_t, $hdr, $pkt);
}

Net::Pcap::loop($pcap_t, 10, \&process_pkt, "xyz");
Net::Pcap::close($pcap_t);
Net::Pcap::dump_close($pcap_dumper_t);

$pcap_t = Net::Pcap::open_offline($dumpfile, \$err);

if (!defined($pcap_t)) {
    print("Net::Pcap::open_offline returned error $err\n");
    print("not ok\n");
    exit;
}

my($fh, $fileno);

$fh = Net::Pcap::file($pcap_t);
$fileno = Net::Pcap::fileno($pcap_t);

if (!defined($fh)) {
    print("bad file handle returned by Net::Pcap::file\n");
    print("not ok\n");
} else {
    print("ok\n");
}

if ($fileno != -1) {
    print("Bad fileno returned by Net::Pcap::fileno\n");
    print("not ok\n");
} else {
    print("ok\n");
}

Net::Pcap::close($pcap_t);

#
# Test file and fileno on live connection
#

$dev = Net::Pcap::lookupdev(\$err);
$pcap_t = Net::Pcap::open_live($dev, 1024, 1, 0, \$err);

if (!defined($pcap_t)) {
    die("Net::Pcap::open_live returned error $err");
}

$fh = Net::Pcap::file($pcap_t);
$fileno = Net::Pcap::fileno($pcap_t);

if (defined($fh)) {
    print("bad file handle returned by Net::Pcap::file\n");
    print("not ok\n");
} else {
    print("ok\n");
}

if ($fileno < 0) {
    print("Bad fileno returned by Net::Pcap::fileno\n");
    print("not ok\n");
} else {
    print("ok\n");
}

Net::Pcap::close($pcap_t);

END {
    unlink($dumpfile);
}
 # DefkêRp ¢“ ¤�          Š   „>8òC58òC58      `  �  Š      ./usr/local/lib/Net-Pcap-0.03/t/04-loop.t t t Ut             ó/      ¤�          #!/usr/bin/perl
#
# Test loop function
#
# $Id: 04-loop.t,v 1.5 1999/03/15 06:33:29 tpot Exp $
#

use strict;
use English;

use ExtUtils::testlib;
use Net::Pcap;

print("1..1\n");

# Must run as root

if ($UID != 0) {
    print("must run as root!\n");
    print("not ok\n");
    exit;
}

my($dev, $pcap_t, $err);

#
# Test loop on open_live interface
#

$dev = Net::Pcap::lookupdev(\$err);
$pcap_t = Net::Pcap::open_live($dev, 1024, 1, 0, \$err);

if (!defined($pcap_t)) {
    print("Net::Pcap::open_live returned error $err\n");
    print("not ok\n");
    exit;
}

my $count = 0;

sub process_pkt {
    my($user, $hdr, $pkt) = @_;

    if (($user ne "abc") or !defined($hdr) or !defined($pkt)) {
	print("Bad args passed to callback\n");
	print("Bad user data\n"), if ($user ne "abc");
	print("Bad pkthdr\n"), if (!defined($hdr));
	print("Bad pkt data\n"), if (!defined($pkt));
	print("not ok\n");
	exit;
    }

    print("Received packet of len $hdr->{len}\n");
    $count++;
}

Net::Pcap::loop($pcap_t, 10, \&process_pkt, "abc");

if ($count != 10) {
    print("Bad pkt count\n");
    print("not ok\n");
    exit;
}

Net::Pcap::close($pcap_t);

print("ok\n");
umper_kêà £“ ¤�          X   „>8òC58òC58      p  OŽ  X      ./usr/local/lib/Net-Pcap-0.03/t/README .             ó/      ¤�          Most of these tests are required to be run as root.

Note that some of these tests require a working network interface with
actual traffic on it.  For example the loop test waits for 10 packets
to be received on the network before exiting.  If there is no traffic
on the interface, this test will block.

The memory leak tests do not complete.
kê,p ¤“ ¤�          X   „>8òC58òC58      `  N�  X      ./usr/local/lib/Net-Pcap-0.03/t/12-next.t t t Ut             ó/      ¤�          #!/usr/bin/perl
#
# Test next function
#
# $Id: 12-next.t,v 1.5 1999/03/15 06:33:32 tpot Exp $
#

use strict;
use English;

use ExtUtils::testlib;
use Net::Pcap;

print("1..1\n");

# Must run as root

if ($UID != 0) {
    print("not ok\n");
    exit;
}

my($dev, $pcap_t, $err, $net, $mask, $result, $filter);

#
# Test loop on open_live interface
#

$dev = Net::Pcap::lookupdev(\$err);
$result = Net::Pcap::lookupnet($dev, \$net, \$mask, \$err);
$pcap_t = Net::Pcap::open_live($dev, 1024, 1, 1, \$err);

# From test.pl, Net-Pcap-0.01.tar.gz
print( "dev is ", $dev, ", net is ", $net, ", mask is ", $mask. "\n");

sub dotquad {
    my($na, $nb, $nc, $nd);
    my ( $net ) = @_ ;
    $na=$net >> 24 & 255 ;
    $nb=$net >> 16 & 255 ;
    $nc=$net >>  8 & 255 ;
    $nd=$net & 255 ;
    return ( "$na.$nb.$nc.$nd") ;
}

print ("net is ", dotquad($net), " mask is ", dotquad($mask), "\n");

if (!defined($pcap_t)) {
    print("Net::Pcap::open_live returned error $err\n");
    print("not ok\n");
    exit;
}

$result = Net::Pcap::compile($pcap_t, \$filter, "ip", 0, $mask);

if ($result == -1) {
    print("Net::Pcap::compile returned ", Net::Pcap::geterr($pcap_t), "\n");
    print("not ok\n");
    exit;
}

$result = Net::Pcap::setfilter($pcap_t, $filter);

if ($result == -1) {
    print("Net::Pcap::setfilter returned ", Net::Pcap::geterr($pcap_t), "\n");
    print("not ok\n");
    exit;
}

for my $count (1..10) {
    my($pkt, %hdr);

    while (!($pkt = Net::Pcap::next($pcap_t, \%hdr))) {
	print("no pkt received (but that's OK)\n");
    }

    if (!defined(%hdr) or !defined($pkt)) {
	print("Bad args passed to callback\n");
	print("header is not defined\n"), if (!defined(%hdr));
	print("packet is not defined\n"), if (!defined($pkt));
	print("not ok\n");
	exit;
    }

    print("$count: received packet of len $hdr{len}\n");
}

Net::Pcap::close($pcap_t);

print("ok\n");
kêL© ¥“ ¤�          .   „>8òC58òC58      p  ªŽ  .      ./usr/local/lib/Net-Pcap-0.03/t/03-openlive.t Ut             ó/      ¤�          #!/usr/bin/perl
#
# Test open_live functions
#
# $Id: 03-openlive.t,v 1.4 1999/03/15 06:33:29 tpot Exp $
#

use strict;
use English;

use ExtUtils::testlib;
use Net::Pcap;

print("1..3\n");

# Must run as root

if ($UID != 0) {
    print("not ok\n");
    exit;
}

my($dev, $pcap_t, $err);

#
# Test open_live function
#

$dev = Net::Pcap::lookupdev(\$err);
$pcap_t = Net::Pcap::open_live($dev, 1024, 1, 0, \$err);

if (!defined($pcap_t)) {
    print("Net::Pcap::open_live returned error $err on device $dev\n");
    print("not ok\n");
    exit;
}

print("ok\n");

#
# Test close function
#

Net::Pcap::close($pcap_t);
print("ok\n");

#
# Test open_live() with dodgy device
#

$pcap_t = Net::Pcap::open_live("beans", 1024, 1, 0, \$err);

if (defined($pcap_t)) {
    print("not ok\n");
} else {
    print("ok\n");
}

}kêµ ¦“ ¤�          ­    „>8òC58òC58      p  òŽ  ­       ./usr/local/lib/Net-Pcap-0.03/t/01-module.t t Ut             ó/      ¤�          #!/usr/bin/perl
#
# Test module import
#
# $Id: 01-module.t,v 1.1 1999/03/10 02:48:40 tpot Exp $
#

use strict;

use ExtUtils::testlib;
use Net::Pcap;

print("1..1\nok\n");
prikê`’ §“ ¤�          à  ¡„>8òC58òC58      `  P�  à      ./usr/local/lib/Net-Pcap-0.03/t/leaktest1.pl  Ut             ó/      ¤�          #!/usr/bin/perl
#
# Test for memory leaks by sitting in an infinite loop and flood
# pinging from another window.  Memory leaks become apparent quickly.
#
# $Id: leaktest1.pl,v 1.2 1999/03/14 03:14:09 tpot Exp $
#

use strict;
use English;

use ExtUtils::testlib;
use Net::Pcap;

die("Must run as root!\n"), if ($UID != 0);

my($dev, $err, $pcap_t);

$dev = Net::Pcap::lookupdev(\$err);
$pcap_t = Net::Pcap::open_live($dev, 1024, 1, 0, \$err);

if (!defined($pcap_t)) {
    die("Net::Pcap::open_live returned error $err");
}

my $count;

sub process_pkt {
    my($user, $hdr, $pkt) = @_;

    $count++;

    print("$count\n"), if (($count % 1000) == 0);
}

Net::Pcap::loop($pcap_t, 0, \&process_pkt, "1234");
Net::Pcap::close($pcap_t);
kêþv ¨“ ¤�            ¡„>8óC58óC58      P  �        ./usr/local/lib/Net-Pcap-0.03/t/06-offline.t  Ut             ó/      ¤�          #!/usr/bin/perl
#
# Test open_offline
#
# $Id: 06-offline.t,v 1.6 1999/03/15 06:37:26 tpot Exp $
#

use strict;
use English;

use ExtUtils::testlib;
use Net::Pcap;

print("1..4\n");

my($pcap_t, $err);
my $dumpfile = "/tmp/Net-Pcap-dump.$$";

# Must run as root

if ($UID != 0) {
    print("not ok\n");
    exit;
}

#
# Test open_offline of bad file (not created yet)
#

$pcap_t = Net::Pcap::open_offline($dumpfile, \$err);

if (defined($pcap_t)) {
    print("Net::Pcap::open_offline worked for dummy file\n");
    print("not ok\n");
} else {
    print("ok\n");
}

#
# Test open_offline of good file.  Need to create it first.
#

my($dev, $pcap_dumper_t);

$dev = Net::Pcap::lookupdev(\$err);
$pcap_t = Net::Pcap::open_live($dev, 1024, 1, 0, \$err);

if (!defined($pcap_t)) {
    print("Net::Pcap::open_live returned error $err\n");
    print("not ok\n");
    exit;
}

$pcap_dumper_t = Net::Pcap::dump_open($pcap_t, $dumpfile);

if (!defined($pcap_dumper_t)) {
    print("Net::Pcap::dump_open failed: ", Net::Pcap::geterr($pcap_t), "\n");
    print("not ok\n");
    exit;
}

sub process_pkt {
    my($user, $hdr, $pkt) = @_;

    if (($user ne "xyz") or !defined($hdr) or !defined($pkt)) {
	print("Bad args passed to callback\n");
	print("Bad user data\n"), if ($user ne "xyz");
	print("Bad pkthdr\n"), if (!defined($hdr));
	print("Bad pkt data\n"), if (!defined($pkt));
	print("not ok\n");
	exit;
    }

    Net::Pcap::dump($pcap_dumper_t, $hdr, $pkt);
}

Net::Pcap::loop($pcap_t, 10, \&process_pkt, "xyz");
Net::Pcap::close($pcap_t);

Net::Pcap::dump_close($pcap_dumper_t);

if (!-f $dumpfile) {
    print("No save file created\n");
    print("not ok\n");
} else {
    print("ok\n");
}

$pcap_t = Net::Pcap::open_offline($dumpfile, \$err);

if (!defined($pcap_t)) {
    print("Net::Pcap::open_offline failed: $err\n");
    print("not ok\n");
    exit;
}

my($major, $minor, $swapped);

$major = Net::Pcap::major_version($pcap_t);
$minor = Net::Pcap::minor_version($pcap_t);
$swapped = Net::Pcap::is_swapped($pcap_t);

print("File saved with libpcap version $major.$minor, swap is $swapped\n");

if ($major == 0) {
    print("suspicious libpcap major version\n");
    print("not ok\n");
} else {
    print("ok\n");
}

my $count = 0;

sub process_pkt2 {
    my($user, $hdr, $pkt) = @_;

    if (($user ne "123") or !defined($hdr) or !defined($pkt)) {
	print("Bad args passed to callback2\n");
	print("Bad user data\n"), if ($user ne "123");
	print("Bad pkthdr\n"), if (!defined($hdr));
	print("Bad pkt data\n"), if (!defined($pkt));
	print("not ok\n");
	exit;
    }

    print("Received packet of len $hdr->{len}\n");
    $count++;
}

Net::Pcap::loop($pcap_t, 10, \&process_pkt2, "123");
Net::Pcap::close($pcap_t);

if ($count != 10) {
    print("not ok\n");
} else {
    print("ok\n");
}

END {
    unlink($dumpfile);
}
gt>kê@ º“ ¤�          Y  ¡„>8óC58óC58      p  "‰  Y      ./usr/local/lib/Net-Pcap-0.03/t/leaktest2.pl  Ut             ó/      ¤�          #!/usr/bin/perl
#
# Test for memory leaks in lookup functions
#
# $Id: leaktest2.pl,v 1.2 1999/03/14 03:14:10 tpot Exp $
#

use strict;
use English;

use ExtUtils::testlib;
use Net::Pcap;

my($dev, $net, $mask, $err, $result);

while(1) {
    $dev = Net::Pcap::lookupdev(\$err);
    $result = Net::Pcap::lookupnet($dev, \$net, \$mask, \$err);
}
file (nkê0O »“ ¤�          �  ¡„>8óC58óC58      p  1Ž  �      ./usr/local/lib/Net-Pcap-0.03/t/leaktest3.pl  Ut             ó/      ¤�          #!/usr/bin/perl
#
# Test for memory leaks in dispatch() function.
#
# $Id: leaktest3.pl,v 1.2 1999/03/14 03:14:10 tpot Exp $
#

use strict;
use English;

use ExtUtils::testlib;
use Net::Pcap;

die("Must run as root!\n"), if ($UID != 0);

my($dev, $err, $pcap_t);

$dev = Net::Pcap::lookupdev(\$err);
$pcap_t = Net::Pcap::open_live($dev, 1024, 1, 0, \$err);

if (!defined($pcap_t)) {
    die("Net::Pcap::open_live returned error $err");
}

my $count;

sub process_pkt {
    my($user, $hdr, $pkt) = @_;

    $count++;

    print("$count\n"), if (($count % 1000) == 0);
}

while(1) {
  Net::Pcap::dispatch($pcap_t, 0, \&process_pkt, "1234");
}

Net::Pcap::close($pcap_t);
Pcakêæ ¼“ ¤�          *  ¡„>8óC58óC58      `  �  *      ./usr/local/lib/Net-Pcap-0.03/t/leaktest4.pl  Ut             ó/      ¤�          #!/usr/bin/perl
#
# Test for memory leaks in dump() function
#
# $Id: leaktest4.pl,v 1.2 1999/03/14 03:14:10 tpot Exp $
#

use strict;
use English;

use ExtUtils::testlib;
use Net::Pcap;

die("Must run as root!\n"), if ($UID != 0);

my($dev, $err, $pcap_t, $pcap_dumper_t);

$dev = Net::Pcap::lookupdev(\$err);
$pcap_t = Net::Pcap::open_live($dev, 1024, 1, 0, \$err);
$pcap_dumper_t = Net::Pcap::dump_open($pcap_t, "/dev/null");

if (!defined($pcap_t)) {
    die("Net::Pcap::open_live returned error $err");
}

my $count;

sub process_pkt {
    my($user, $hdr, $pkt) = @_;

    $count++;

    Net::Pcap::dump($pcap_dumper_t, $hdr, $pkt);
    print("$count\n"), if (($count % 1000) == 0);
}

Net::Pcap::loop($pcap_t, 0, \&process_pkt, "1234");

Net::Pcap::dump_close($pcap_dumper_t);
Net::Pcap::close($pcap_t);
turnedkêŽ$ ½“ ¤�          ²  ¡„>8óC58óC58      `  �  ²      ./usr/local/lib/Net-Pcap-0.03/t/leaktest5.pl  Ut             ó/      ¤�          #!/usr/bin/perl
#
# Test for memory leaks in next() function.
#
# $Id: leaktest5.pl,v 1.2 1999/03/14 03:14:10 tpot Exp $
#

use strict;
use English;

use ExtUtils::testlib;
use Net::Pcap;

die("Must run as root!\n"), if ($UID != 0);

my($dev, $err, $pcap_t);

$dev = Net::Pcap::lookupdev(\$err);
$pcap_t = Net::Pcap::open_live($dev, 1024, 1, 0, \$err);

if (!defined($pcap_t)) {
    die("Net::Pcap::open_live returned error $err");
}

my $count;

while(1) {
    my($pkt, %hdr);

    while (!($pkt = Net::Pcap::next($pcap_t, \%hdr))) {
    }

    $count++;

    print("$count\n"), if (($count % 1000) == 0);
}


Net::Pcap::loop($pcap_t, 0, \&process_pkt, "1234");
Net::Pcap::close($pcap_t);

Net::kê´V ““ ¤�          H  ¡„>8ÖC58ÖC58      p  MŽ  H      ./usr/local/lib/Net-Pcap-0.03/MANIFEST t             ó/      ¤�          README
MANIFEST
Makefile.PL
Pcap.pm
Pcap.xs
typemap
t/README
t/01-module.t
t/02-lookup.t
t/03-openlive.t
t/04-loop.t
t/05-dump.t
t/06-offline.t
t/07-stats.t
t/08-filter.t
t/09-error.t
t/10-fileno.t
t/11-misc.t
t/12-next.t
t/13-dispatch.t
t/leaktest1.pl
t/leaktest2.pl
t/leaktest3.pl
t/leaktest4.pl
t/leaktest5.pl
t/leaktest6.pl
kên? ˜“ $�          l  ¡„>8ÖC58ÖC58      P  .Ž  l      ./usr/local/lib/Net-Pcap-0.03/README T t             ó/      $�          README for Net::Pcap 0.03
=========================

The Net::Pcap module is a Perl binding to the LBL pcap(3) packet
capture library.  It is a re-implementation of Peter Lister's
original Net::Pcap version 0.01.

Net::Pcap version 0.03 contains the following improvements over
previous versions:

	- all pcap library functions fully implemented

	- packet header and statistical information passed as
	  perl hashes

	- POD documentation

The source code for the LBL pcap library can be found at
ftp://ftp.ee.lbl.gov/libpcap.tar.Z.  If you're running Linux, there
should be a packaged up version of libpcap available for your system.
Check the nearest mirror site of your favourite distribution.


Installation Notes
==================

If your pcap header files are installed somewhere strange, create the
Makefile using the INC and/or LIBS option.

	$ perl Makefile.PL INC=-I/usr/local/include/pcap \
		LIBS='-L/usr/lib/pcap -lpcap'

Compile the extension as per usual:

	$ make
	$ make test

To install the extension, as root type:

	# make install

A ANSI-compliant compiler is required to compile the extension.  For
most of the tests, root access is required since opening a network
interface in promiscuous mode is a privileged operation.  Some tests
also require a working network interface with traffic on it.  Consult
the source for individual tests for more information.

Net::Pcap has been tested on the following systems, but is likely to
run on many more.

	- Solaris 2.6, gcc 2.8.1
	- Linux 2.2, gcc 2.8.1


Miscellaneous
=============

The original version of Net::Pcap, version 0.01, was written by Peter
Lister <p.lister@cranfield.ac.uk>.

Version 0.02 was created by Bo Adler <thumper@alumni.caltech.edu> and
not uploaded to CPAN.  It can be found at:

http://www.buttsoft.com/~thumper/software/perl/Net-Pcap/

Thanks to David N. Blank-Edelman <dnb@ccs.neu.edu> for testing and
general polishing up of this version of Net::Pcap.

Copyright (c) 1999 Tim Potter. All rights reserved. This program is free 
software; you can redistribute it and/or modify it under the same terms 
as Perl itself.


25/3/99
Tim Potter
tpot@acsys.anu.edu.au
ion\kê>å Ò“ ¤�          ¡  ¡„>8¬I58¬I58      `  á‘  ¡      ./usr/local/lib/Net-PcapUtils-0.01/README pl  Ut             ó/      ¤�          README for Net::PcapUtils 0.01
==============================

This module provides some code to abstract away some of the messier
parts of using the Net::Pcap library.  The idea is to be able to write
"one-liner" type scripts for packet capture without getting bogged
down in the initialisation code.  This makes it possible to write very
compact Perl scripts involving packet capture.

To use Net::PcapUtils, the latest version of the Net::Pcap module is
required (at the time of writing, this was version 0.03).

Net::PcapUtils provides three functions that are described below:

	- Net::PcapUtils::loop(\&callback_fn, [optional args]);

		Capture packets and execute callback function for evey
		packet received.

	- Net::PcapUtils::next($pcap_t);

		Return the next packet and packet header from an open
 		network interface.

	- Net::PcapUtils::open([optional args]);

		Open a network interface for packet capture and return
		a packet capture descriptor.

If none of the optional arguments are declared, then a reasonable set
of defaults are assumed.  See the Net::PcapUtils manpage for more
details.

I hope you enjoy Net::PcapUtils.


8/4/99
Tim Potter
tpot@acsys.anu.edu.au
work
inkêT Õ“ ¤�          >  ¡„>8¬I58¬I58      p  ã‘  >      ./usr/local/lib/Net-PcapUtils-0.01/t/03-next.t t             ó/      ¤�          #!/usr/bin/perl -w
#
# Test Net::PcapUtils::next() function
#
# $Id: 03-next.t,v 1.1 1999/04/07 01:23:21 tpot Exp $
#

use strict;
use ExtUtils::testlib;

use Net::PcapUtils;

print("1..2\n");

my $pcap_t = Net::PcapUtils::open();

if (!ref($pcap_t)) {
    print("$pcap_t\nnot ok\n");
    exit;
}

print("ok\n");

my($pkt, %hdr);
my $count = 0;

while(($pkt, %hdr) = Net::PcapUtils::next($pcap_t)) {
    use Data::Dumper;
    print("packet $count: ");
    print Dumper %hdr;
    $count++;

    last, if ($count == 25);
}

($count == 25) ? print("ok\n") : print("not ok\n");
 bkêº¬ Ö“ ¤�          ì  ¡„>8¬I58¬I58      p  (’  ì      ./usr/local/lib/Net-PcapUtils-0.01/t/01-loop.t t             ó/      ¤�          #!/usr/bin/perl -w
#
# Test Net::PcapUtils::loop() function
#
# $Id: 01-loop.t,v 1.1 1999/04/07 01:23:20 tpot Exp $
#

use strict;
use ExtUtils::testlib;

use Net::PcapUtils;

print("1..1\n");

my $count = 0;

sub process_pkt {
    my $pkt = $_[1];

    print("packet\n");
    exit, if ($count++ > 20);
}

my $result = Net::PcapUtils::loop(\&process_pkt);

if (!$result eq "") {
    print("$result\n");
}

END {
    if ($count > 20) {
	print("ok\n");
    } else {
	print("not ok\n");
    }
}
  lakê:° ×“ ¤�          H  ¡„>8¬I58¬I58      p  )’  H      ./usr/local/lib/Net-PcapUtils-0.01/t/02-open.t t             ó/      ¤�          #!/usr/bin/perl -w
#
# Test Net::PcapUtils::open() function
#
# $Id: 02-open.t,v 1.1 1999/04/07 01:23:20 tpot Exp $
#

use strict;
use ExtUtils::testlib;

use Net::Pcap;
use Net::PcapUtils;

print("1..1\n");

my $pcap_t = Net::PcapUtils::open();

if (!ref($pcap_t)) {
    print("$pcap_t\nnot ok\n");
    exit;
}

print("ok\n");
kê,‹ ¹“ $�          ý8  ¡„>8Ù 48¢C58      0  ’š  ý8      ./usr/local/man/man3/Net__Pcap.3 1/t/02-             ó/      $�          .rn '' }`
''' $RCSfile$$Revision$$Date$
'''
''' $Log$
'''
.de Sh
.br
.if t .Sp
.ne 5
.PP
\fB\\$1\fR
.PP
..
.de Sp
.if t .sp .5v
.if n .sp
..
.de Ip
.br
.ie \\n(.$>=3 .ne \\$3
.el .ne 3
.IP "\\$1" \\$2
..
.de Vb
.ft CW
.nf
.ne \\$1
..
.de Ve
.ft R

.fi
..
'''
'''
'''     Set up \*(-- to give an unbreakable dash;
'''     string Tr holds user defined translation string.
'''     Bell System Logo is used as a dummy character.
'''
.tr \(*W-|\(bv\*(Tr
.ie n \{\
.ds -- \(*W-
.ds PI pi
.if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
.if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
.ds L" ""
.ds R" ""
'''   \*(M", \*(S", \*(N" and \*(T" are the equivalent of
'''   \*(L" and \*(R", except that they are used on ".xx" lines,
'''   such as .IP and .SH, which do another additional levels of
'''   double-quote interpretation
.ds M" """
.ds S" """
.ds N" """""
.ds T" """""
.ds L' '
.ds R' '
.ds M' '
.ds S' '
.ds N' '
.ds T' '
'br\}
.el\{\
.ds -- \(em\|
.tr \*(Tr
.ds L" ``
.ds R" ''
.ds M" ``
.ds S" ''
.ds N" ``
.ds T" ''
.ds L' `
.ds R' '
.ds M' `
.ds S' '
.ds N' `
.ds T' '
.ds PI \(*p
'br\}
.\"	If the F register is turned on, we'll generate
.\"	index entries out stderr for the following things:
.\"		TH	Title 
.\"		SH	Header
.\"		Sh	Subsection 
.\"		Ip	Item
.\"		X<>	Xref  (embedded
.\"	Of course, you have to process the output yourself
.\"	in some meaninful fashion.
.if \nF \{
.de IX
.tm Index:\\$1\t\\n%\t"\\$2"
..
.nr % 0
.rr F
.\}
.TH Pcap 3 "perl 5.005, patch 03" "25/Mar/1999" "User Contributed Perl Documentation"
.UC
.if n .hy 0
.if n .na
.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
.de CQ          \" put $1 in typewriter font
.ft CW
'if n "\c
'if t \\&\\$1\c
'if n \\&\\$1\c
'if n \&"
\\&\\$2 \\$3 \\$4 \\$5 \\$6 \\$7
'.ft R
..
.\" @(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2
.	\" AM - accent mark definitions
.bd B 3
.	\" fudge factors for nroff and troff
.if n \{\
.	ds #H 0
.	ds #V .8m
.	ds #F .3m
.	ds #[ \f1
.	ds #] \fP
.\}
.if t \{\
.	ds #H ((1u-(\\\\n(.fu%2u))*.13m)
.	ds #V .6m
.	ds #F 0
.	ds #[ \&
.	ds #] \&
.\}
.	\" simple accents for nroff and troff
.if n \{\
.	ds ' \&
.	ds ` \&
.	ds ^ \&
.	ds , \&
.	ds ~ ~
.	ds ? ?
.	ds ! !
.	ds /
.	ds q
.\}
.if t \{\
.	ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
.	ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
.	ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
.	ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
.	ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
.	ds ? \s-2c\h'-\w'c'u*7/10'\u\h'\*(#H'\zi\d\s+2\h'\w'c'u*8/10'
.	ds ! \s-2\(or\s+2\h'-\w'\(or'u'\v'-.8m'.\v'.8m'
.	ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
.	ds q o\h'-\w'o'u*8/10'\s-4\v'.4m'\z\(*i\v'-.4m'\s+4\h'\w'o'u*8/10'
.\}
.	\" troff and (daisy-wheel) nroff accents
.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
.ds v \\k:\h'-(\\n(.wu*9/10-\*(#H)'\v'-\*(#V'\*(#[\s-4v\s0\v'\*(#V'\h'|\\n:u'\*(#]
.ds _ \\k:\h'-(\\n(.wu*9/10-\*(#H+(\*(#F*2/3))'\v'-.4m'\z\(hy\v'.4m'\h'|\\n:u'
.ds . \\k:\h'-(\\n(.wu*8/10)'\v'\*(#V*4/10'\z.\v'-\*(#V*4/10'\h'|\\n:u'
.ds 3 \*(#[\v'.2m'\s-2\&3\s0\v'-.2m'\*(#]
.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
.ds ae a\h'-(\w'a'u*4/10)'e
.ds Ae A\h'-(\w'A'u*4/10)'E
.ds oe o\h'-(\w'o'u*4/10)'e
.ds Oe O\h'-(\w'O'u*4/10)'E
.	\" corrections for vroff
.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
.	\" for low resolution devices (crt and lpr)
.if \n(.H>23 .if \n(.V>19 \
\{\
.	ds : e
.	ds 8 ss
.	ds v \h'-1'\o'\(aa\(ga'
.	ds _ \h'-1'^
.	ds . \h'-1'.
.	ds 3 3
.	ds o a
.	ds d- d\h'-1'\(ga
.	ds D- D\h'-1'\(hy
.	ds th \o'bp'
.	ds Th \o'LP'
.	ds ae ae
.	ds Ae AE
.	ds oe oe
.	ds Oe OE
.\}
.rm #[ #] #H #V #F C
.SH "NAME"
\f(CWNet::Pcap\fR \- Interface to \fIpcap\fR\|(3) LBL packet capture library
.SH "SYNOPSIS"
.PP
.Vb 1
\&  use Net::Pcap;
.Ve
.SH "DESCRIPTION"
\f(CWNet::Pcap\fR is a Perl binding to the LBL \fIpcap\fR\|(3) library, version
0.4.  The README for libpcap describes itself as:
.PP
.Vb 4
\&  "a system-independent interface for user-level packet capture.
\&  libpcap provides a portable framework for low-level network
\&  monitoring.  Applications include network statistics collection,
\&  security monitoring, network debugging, etc."
.Ve
.SH "FUNCTIONS"
All functions defined by \f(CWNet::Pcap\fR are direct mappings to the
libpcap functions.  Consult the \fIpcap\fR\|(3) documentation and source code
for more information.
.PP
Arguments that change a parameter, for example \fINet::Pcap::lookupdev()\fR,
are passed that parameter as a reference.  This is to retain
compatibility with previous versions of Net::Pcap.
.Sh "Lookup functions"
.Ip "\fBNet::Pcap::lookupdev(\e$err);\fR" 5
Returns the name of a network device that can be used with
\fINet::Pcap::open_live()\fR function.  On error, the \f(CW$err\fR parameter is
filled with an appropriate error message else it is undefined.
.Ip "\fBNet::Pcap::lookupnet($dev, \e$net, \e$mask, \e$err);\fR" 5
Determine the network number and netmask for the device specified in
\f(CW$dev\fR.  The function returns 0 on success and sets the \f(CW$net\fR and
\f(CW$mask\fR parameters with values.  On failure it returns \-1 and the
\f(CW$err\fR parameter is filled with an appropriate error message.z
.Sh "Packet capture functions"
.Ip "\fBNet::Pcap::open_live($dev, $snaplen, $promisc, $to_ms, \e$err);\fR" 10
Returns a packet capture descriptor for looking at packets on the
network.  The \f(CW$dev\fR parameter specifies which network interface to
capture packets from.  The \f(CW$snaplen\fR and \f(CW$promisc\fR parameters specify
the maximum number of bytes to capture from each packet, and whether
to put the interface into promiscuous mode, respectively.  The \f(CW$to_ms\fR
parameter specifies a read timeout in ms.  The packet descriptor will
be undefined if an error occurs, and the \f(CW$err\fR parameter will be set
with an appropriate error message.
.Ip "\fBNet::Pcap::loop($pcap_t, $cnt, \e&callback_fn, $user_data);\fR" 10
Read \f(CW$cnt\fR packets from the packet capture descriptor \f(CW$pcap_t\fR and call
the perl function &callback_fn with an argument of \f(CW$user_data\fR.  If \f(CW$cnt\fR is negative, then the function loops forever or until an error occurs.
.Sp
The callback function is also passed packet header information and
packet data like so:
.Sp
.Vb 2
\&  sub process_pkt {
\&      my($user_data, $hdr, $pkt) = @_;
.Ve
.Vb 2
\&      ...
\&  }
.Ve
The header information is a reference to a hash containing the
following fields.
.Ip "\(bu len" 15
The total length of the packet.
.Ip "\(bu caplen" 15
The actual captured length of the packet data.  This corresponds to
the snapshot length parameter passed to \fINet::Pcap::open_live()\fR.
.Ip "\(bu tv_sec" 15
Seconds value of the packet timestamp.
.Ip "\(bu tv_usec" 15
Microseconds value of the packet timestamp.
.Ip "\fBNet::Pcap::open_offline($filename, \e$err);\fR" 10
Return a packet capture descriptor to read from a previously created
\*(L"savefile\*(R".  The returned descriptor is undefined if there was an
error and in this case the \f(CW$err\fR parameter will be filled.  Savefiles
are created using the Net::Pcap::dump_* commands.
.Ip "\fBNet::Pcap::close($pcap_t);\fR" 10
Close the packet capture device associated with descriptor \f(CW$pcap_t\fR.
.Ip "\fBNet::Pcap::dispatch($pcap_t, $cnt, \e&callback_fn, $user_data);\fR" 10
Collect \f(CW$cnt\fR packets and process them with callback function
&callback_fn.  if \f(CW$cnt\fR is \-1, all packets currently buffered are
processed.  If \f(CW$cnt\fR is 0, process all packets until an error occurs. 
.Ip "\fBNet::Pcap::next($pcap_t, \e%hdr);\fR" 10
Return the next available packet on the interface associated with
packet descriptor \f(CW$pcap_t\fR.  Into the \f(CW%hdr\fR hash is stored the received
packet header.  If not packet is available, the return value and
header is undefined.
.Ip "\fBNet::Pcap::compile($pcap_t, \e$filter_t, $filter_str, $optimize, $netmask);\fR" 10
Compile the filter string contained in \f(CW$filter_str\fR and store it in
\f(CW$filter_t\fR.  A description of the filter language can be found in the
libpcap source code, or the manual page for \fItcpdump\fR\|(8) .  The filter
is optimized the filter if the \f(CW$optimize\fR variable is true.  The
netmask of the network device must be specified in the \f(CW$netmask\fR
parameter.  The function returns 0 if the compilation was successful,
or \-1 if there was a problem.
.Ip "\fBNet::Pcap::setfilter($pcap_t, $filter_t);\fR" 10
Associate the compiled filter stored in \f(CW$filter_t\fR with the packet
capture descriptor \f(CW$pcap_t\fR.
.Sh "Savefile commands"
.Ip "\fBNet::Pcap::dump_open($pcap_t, $filename);\fR" 10
Open a savefile for writing and return a descriptor for doing so.  If
\f(CW$filename\fR is \*(L"\-\*(R" data is written to standard output.  On error, the
return value is undefined and \fINet::Pcap::geterr()\fR can be used to
retrieve the error text.
.Ip "\fBNet::Pcap::dump($pcap_dumper_t, \e%hdr, $pkt);\fR" 10
Dump the packet described by header \f(CW%hdr\fR and packet data \f(CW$pkt\fR to the
savefile associated with \f(CW$pcap_dumper_t\fR.  The packet header has the
same format as that passed to the \fINet::Pcap::loop()\fR callback.
.Ip "\fBNet::Pcap::dump_close($pcap_dumper_t);\fR" 10
Close the savefile associated with descriptor \f(CW$pcap_dumper_t\fR.
.Sh "Status functions"
.Ip "\fBNet::Pcap::datalink($pcap_t);\fR" 10
Returns the link layer type associated with the currently open device.
.Ip "\fBNet::Pcap::snapshot($pcap_t);\fR" 10
Returns the snapshot length (snaplen) specified in the call to
\fINet::Pcap::open_live()\fR.
.Ip "\fBNet::Pcap::is_swapped($pcap_t);\fR" 10
This function returns true if the endianess of the currently open
savefile is different from the endianess of the machine.
.Ip "\fBNet::Pcap::major_version($pcap_t);\fR" 10
Return the major version number of the pcap library used to write the
currently open savefile.
.Ip "\fBNet::Pcap::minor_version($pcap_t);\fR" 10
Return the minor version of the pcap library used to write the
currently open savefile.
.Ip "\fBNet::Pcap::stats($pcap_t, \e%stats);\fR" 10
Returns a hash containing information about the status of packet
capture device \f(CW$pcap_t\fR.  The hash contains the following fields.
.Ip "\(bu \f(CWps_recv\fR" 15
The number of packets received by the packet capture software.
.Ip "\(bu \f(CWps_drop\fR" 15
The number of packets dropped by the packet capture software.
.Ip "\(bu \f(CWps_ifdrop\fR" 15
The number of packets dropped by the network interface.
.Ip "\fBNet::Pcap::file($pcap_t);\fR" 10
Return the filehandle associated with a savefile opened with
\fINet::Pcap::open_offline()\fR.
.Ip "\fBNet::Pcap::fileno($pcap_t);\fR" 10
Return the file number of the network device opened with
\fINet::Pcap::open_live()\fR.
.Sh "Error handling"
.Ip "\fBNet::Pcap::geterr($pcap_t);\fR" 10
Return an error message for the last error associated with the packet
capture device \f(CW$pcap_t\fR.
.Ip "\fBNet::Pcap::strerror($errno);\fR" 10
Return a string describing error number \f(CW$errno\fR.
.Ip "\fBNet::Pcap::perror($pcap_t, $prefix);\fR" 10
Print the text of the last error associated with descriptor \f(CW$pcap_t\fR on
standard error, prefixed by \f(CW$prefix\fR.
.SH "LIMITATIONS"
The following limitations apply to this version of \f(CWNet::Pcap\fR.
.Ip "\(bu" 10
The memory associated with filters created using \fINet::Pcap::compile()\fR
is not disposed of.
.Ip "\(bu" 10
At present, only one callback function and user data scalar can be
current at any time as they are both stored in global variables.
.SH "EXAMPLES"
See the \*(L't\*(R' directory of the \f(CWNet::Pcap\fR distribution for examples
on using this module.
.SH "COPYRIGHT"
Copyright (c) 1999 Tim Potter. All rights reserved. This program is
free software; you can redistribute it and/or modify it under the same
terms as Perl itself.
.SH "SEE ALSO"
\fIpcap\fR\|(3), \fItcpdump\fR\|(8)
.Sp
The source code for libpcap is available from ftp://ftp.ee.lbl.gov/libpcap.tar.Z
.SH "AUTHOR"
Tim Potter <tpot@acsys.anu.edu.au>

.rn }` ''
.IX Title "Pcap 3"
.IX Name "C<Net::Pcap> - Interface to pcap(3) LBL packet capture library"

.IX Header "NAME"

.IX Header "SYNOPSIS"

.IX Header "DESCRIPTION"

.IX Header "FUNCTIONS"

.IX Subsection "Lookup functions"

.IX Item "\fBNet::Pcap::lookupdev(\e$err);\fR"

.IX Item "\fBNet::Pcap::lookupnet($dev, \e$net, \e$mask, \e$err);\fR"

.IX Subsection "Packet capture functions"

.IX Item "\fBNet::Pcap::open_live($dev, $snaplen, $promisc, $to_ms, \e$err);\fR"

.IX Item "\fBNet::Pcap::loop($pcap_t, $cnt, \e&callback_fn, $user_data);\fR"

.IX Item "\(bu len"

.IX Item "\(bu caplen"

.IX Item "\(bu tv_sec"

.IX Item "\(bu tv_usec"

.IX Item "\fBNet::Pcap::open_offline($filename, \e$err);\fR"

.IX Item "\fBNet::Pcap::close($pcap_t);\fR"

.IX Item "\fBNet::Pcap::dispatch($pcap_t, $cnt, \e&callback_fn, $user_data);\fR"

.IX Item "\fBNet::Pcap::next($pcap_t, \e%hdr);\fR"

.IX Item "\fBNet::Pcap::compile($pcap_t, \e$filter_t, $filter_str, $optimize, $netmask);\fR"

.IX Item "\fBNet::Pcap::setfilter($pcap_t, $filter_t);\fR"

.IX Subsection "Savefile commands"

.IX Item "\fBNet::Pcap::dump_open($pcap_t, $filename);\fR"

.IX Item "\fBNet::Pcap::dump($pcap_dumper_t, \e%hdr, $pkt);\fR"

.IX Item "\fBNet::Pcap::dump_close($pcap_dumper_t);\fR"

.IX Subsection "Status functions"

.IX Item "\fBNet::Pcap::datalink($pcap_t);\fR"

.IX Item "\fBNet::Pcap::snapshot($pcap_t);\fR"

.IX Item "\fBNet::Pcap::is_swapped($pcap_t);\fR"

.IX Item "\fBNet::Pcap::major_version($pcap_t);\fR"

.IX Item "\fBNet::Pcap::minor_version($pcap_t);\fR"

.IX Item "\fBNet::Pcap::stats($pcap_t, \e%stats);\fR"

.IX Item "\(bu \f(CWps_recv\fR"

.IX Item "\(bu \f(CWps_drop\fR"

.IX Item "\(bu \f(CWps_ifdrop\fR"

.IX Item "\fBNet::Pcap::file($pcap_t);\fR"

.IX Item "\fBNet::Pcap::fileno($pcap_t);\fR"

.IX Subsection "Error handling"

.IX Item "\fBNet::Pcap::geterr($pcap_t);\fR"

.IX Item "\fBNet::Pcap::strerror($errno);\fR"

.IX Item "\fBNet::Pcap::perror($pcap_t, $prefix);\fR"

.IX Header "LIMITATIONS"

.IX Item "\(bu"

.IX Item "\(bu"

.IX Header "EXAMPLES"

.IX Header "COPYRIGHT"

.IX Header "SEE ALSO"

.IX Header "AUTHOR"

s($kêÎb Ô“ $�          ™#  ¡„>8.F58*I58      0  `œ  ™#      ./usr/local/man/man3/Net__PcapUtils.3 2-             ó/      $�          .rn '' }`
''' $RCSfile$$Revision$$Date$
'''
''' $Log$
'''
.de Sh
.br
.if t .Sp
.ne 5
.PP
\fB\\$1\fR
.PP
..
.de Sp
.if t .sp .5v
.if n .sp
..
.de Ip
.br
.ie \\n(.$>=3 .ne \\$3
.el .ne 3
.IP "\\$1" \\$2
..
.de Vb
.ft CW
.nf
.ne \\$1
..
.de Ve
.ft R

.fi
..
'''
'''
'''     Set up \*(-- to give an unbreakable dash;
'''     string Tr holds user defined translation string.
'''     Bell System Logo is used as a dummy character.
'''
.tr \(*W-|\(bv\*(Tr
.ie n \{\
.ds -- \(*W-
.ds PI pi
.if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
.if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
.ds L" ""
.ds R" ""
'''   \*(M", \*(S", \*(N" and \*(T" are the equivalent of
'''   \*(L" and \*(R", except that they are used on ".xx" lines,
'''   such as .IP and .SH, which do another additional levels of
'''   double-quote interpretation
.ds M" """
.ds S" """
.ds N" """""
.ds T" """""
.ds L' '
.ds R' '
.ds M' '
.ds S' '
.ds N' '
.ds T' '
'br\}
.el\{\
.ds -- \(em\|
.tr \*(Tr
.ds L" ``
.ds R" ''
.ds M" ``
.ds S" ''
.ds N" ``
.ds T" ''
.ds L' `
.ds R' '
.ds M' `
.ds S' '
.ds N' `
.ds T' '
.ds PI \(*p
'br\}
.\"	If the F register is turned on, we'll generate
.\"	index entries out stderr for the following things:
.\"		TH	Title 
.\"		SH	Header
.\"		Sh	Subsection 
.\"		Ip	Item
.\"		X<>	Xref  (embedded
.\"	Of course, you have to process the output yourself
.\"	in some meaninful fashion.
.if \nF \{
.de IX
.tm Index:\\$1\t\\n%\t"\\$2"
..
.nr % 0
.rr F
.\}
.TH PcapUtils 3 "perl 5.005, patch 03" "7/Apr/1999" "User Contributed Perl Documentation"
.UC
.if n .hy 0
.if n .na
.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
.de CQ          \" put $1 in typewriter font
.ft CW
'if n "\c
'if t \\&\\$1\c
'if n \\&\\$1\c
'if n \&"
\\&\\$2 \\$3 \\$4 \\$5 \\$6 \\$7
'.ft R
..
.\" @(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2
.	\" AM - accent mark definitions
.bd B 3
.	\" fudge factors for nroff and troff
.if n \{\
.	ds #H 0
.	ds #V .8m
.	ds #F .3m
.	ds #[ \f1
.	ds #] \fP
.\}
.if t \{\
.	ds #H ((1u-(\\\\n(.fu%2u))*.13m)
.	ds #V .6m
.	ds #F 0
.	ds #[ \&
.	ds #] \&
.\}
.	\" simple accents for nroff and troff
.if n \{\
.	ds ' \&
.	ds ` \&
.	ds ^ \&
.	ds , \&
.	ds ~ ~
.	ds ? ?
.	ds ! !
.	ds /
.	ds q
.\}
.if t \{\
.	ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
.	ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
.	ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
.	ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
.	ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
.	ds ? \s-2c\h'-\w'c'u*7/10'\u\h'\*(#H'\zi\d\s+2\h'\w'c'u*8/10'
.	ds ! \s-2\(or\s+2\h'-\w'\(or'u'\v'-.8m'.\v'.8m'
.	ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
.	ds q o\h'-\w'o'u*8/10'\s-4\v'.4m'\z\(*i\v'-.4m'\s+4\h'\w'o'u*8/10'
.\}
.	\" troff and (daisy-wheel) nroff accents
.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
.ds v \\k:\h'-(\\n(.wu*9/10-\*(#H)'\v'-\*(#V'\*(#[\s-4v\s0\v'\*(#V'\h'|\\n:u'\*(#]
.ds _ \\k:\h'-(\\n(.wu*9/10-\*(#H+(\*(#F*2/3))'\v'-.4m'\z\(hy\v'.4m'\h'|\\n:u'
.ds . \\k:\h'-(\\n(.wu*8/10)'\v'\*(#V*4/10'\z.\v'-\*(#V*4/10'\h'|\\n:u'
.ds 3 \*(#[\v'.2m'\s-2\&3\s0\v'-.2m'\*(#]
.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
.ds ae a\h'-(\w'a'u*4/10)'e
.ds Ae A\h'-(\w'A'u*4/10)'E
.ds oe o\h'-(\w'o'u*4/10)'e
.ds Oe O\h'-(\w'O'u*4/10)'E
.	\" corrections for vroff
.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
.	\" for low resolution devices (crt and lpr)
.if \n(.H>23 .if \n(.V>19 \
\{\
.	ds : e
.	ds 8 ss
.	ds v \h'-1'\o'\(aa\(ga'
.	ds _ \h'-1'^
.	ds . \h'-1'.
.	ds 3 3
.	ds o a
.	ds d- d\h'-1'\(ga
.	ds D- D\h'-1'\(hy
.	ds th \o'bp'
.	ds Th \o'LP'
.	ds ae ae
.	ds Ae AE
.	ds oe oe
.	ds Oe OE
.\}
.rm #[ #] #H #V #F C
.SH "NAME"
\f(CWNet::PcapUtils\fR \- Utility routines for Net::Pcap module
.SH "SYNOPSIS"
.PP
.Vb 2
\&  require Net::Pcap 0.03;
\&  use Net::PcapUtils;
.Ve
.Vb 1
\&  # Call function for all packets received
.Ve
.Vb 1
\&  Net::PcapUtils::loop(\e&callbackfn, [optional args]);
.Ve
.Vb 1
\&  # Return the next packet available on the interface
.Ve
.Vb 1
\&  ($pkt, %hdr) = Net::PcapUtils::next($pcap_t);
.Ve
.Vb 1
\&  # Open a network device for processing
.Ve
.Vb 1
\&  $pcap_t = Net::PcapUtils::open([optional args]);
.Ve
.SH "DESCRIPTION"
Net::PcapUtils is a module to sit in front of Net::Pcap in order to
hide some of the \fIpcap\fR\|(3) initialisation by providing sensible
defaults.  This enables a programmer to easily write small, specific
scripts for a particular purpose without having to worry about too
many details.
.PP
The functions implemented in Net::PcapUtils are named after those in
Net::Pcap.  The \fBloop\fR function sits in a loop and executes a
callback for each packet received, while \fBnext\fR retrieves the next
packet from the network device, and \fBopen\fR returns an opened packet
descriptor suitable for use with other Net::Pcap routines.
.Sh "Functions"
.Ip "\fBNet::PcapUtils::loop(\e&callback_fn, [\s-1ARG\s0 => value]);\fR" 5
Given a callback function and a list of optional named parameterss,
open a network interface, configure it, and execute the callback
function for each packet received on the interface.  If the \s-1SAVEFILE\s0
parameter is present, a saved file of that name will be opened for
reading, else the network interface specified by the \s-1DEV\s0 parameter
will be opened.  If no saved file or device is specified, the
interface returned by \fINet::Pcap::lookupdev()\fR is opened.
.Sp
The optional arguments are those which are normally passed to the
\fIpcap_open_live()\fR function from the \fIpcap\fR\|(3) library.  Their defaults
are given below.
.Sp
.Vb 10
\&    my %args = (
\&        SNAPLEN => 100,         # Num bytes to capture from packet
\&        PROMISC => 1,           # Operate in promiscuous mode?
\&        TIMEOUT => 1000,        # Read timeout (ms)
\&        NUMPACKETS => -1,       # Pkts to read (-1 = loop forever)
\&        FILTER => '',           # Filter string
\&        USERDATA => '',         # Passed as first arg to callback fn
\&        SAVEFILE => '',         # Default save file
\&        DEV => '',              # Network interface to open
\&        );
.Ve
Consult the documentation for the \fIpcap\fR\|(3) library for more details on
the nature of these parameters.
.Sp
On error, this function returns an error string describing the error.
An empty string is returned upon success.
.Ip "\fBNet::PcapUtils::open([\s-1ARG\s0 => value]);\fR" 5
Return a packet capture descriptor.  The optional arguments passed to
this function are the same as those which can be passed to
\fINet::PcapUtils::loop()\fR.
.Sp
If the \fIopen()\fR command was successful, it returns a reference to a
packet capture descriptor, else a string containing an error message.
.Ip "\fBNet::PcapUtils::next($pcap_t);\fR" 5
Return the next packet available on the interface specified by packet
capture descriptor \f(CW$pcap_t\fR.  This may be obtained from the
\fINet::PcapUtils::open()\fR function, \fINet::Pcap::open_live()\fR or
\fINet::Pcap::open_offline()\fR.
.SH "EXAMPLE"
The following script prints a message for each IP packet received.
.PP
.Vb 1
\&  #!/usr/bin/perl -w
.Ve
.Vb 2
\&  use strict;
\&  use Net::PcapUtils;
.Ve
.Vb 3
\&  sub process_pkt {
\&      print("packet\en");
\&  }
.Ve
.Vb 1
\&  Net::PcapUtils::loop(\e&process_pkt, FILTER => 'ip');
.Ve
.SH "SEE ALSO"
The \f(CWNet::Pcap\fR module for XS bindings to the \f(CWpcap(3)\fR library.
.PP
The pcap library is available from ftp://ftp.ee.lbl.gov/libpcap.tar.Z
.SH "COPYRIGHT"
.PP
.Vb 3
\&  Copyright (c) 1995,1996,1997,1998,1999 ANU and CSIRO on behalf of
\&  the participants in the CRC for Advanced Computational Systems
\&  ('ACSys').
.Ve
.Vb 3
\&  ACSys makes this software and all associated data and documentation
\&  ('Software') available free of charge.  You may make copies of the 
\&  Software but you must include all of this notice on any copy.
.Ve
.Vb 5
\&  The Software was developed for research purposes and ACSys does not
\&  warrant that it is error free or fit for any purpose.  ACSys
\&  disclaims any liability for all claims, expenses, losses, damages
\&  and costs any user may incur as a result of using, copying or
\&  modifying the Software.
.Ve
.SH "AUTHOR"
Tim Potter <tpot@acsys.anu.edu.au>

.rn }` ''
.IX Title "PcapUtils 3"
.IX Name "C<Net::PcapUtils> - Utility routines for Net::Pcap module"

.IX Header "NAME"

.IX Header "SYNOPSIS"

.IX Header "DESCRIPTION"

.IX Subsection "Functions"

.IX Item "\fBNet::PcapUtils::loop(\e&callback_fn, [\s-1ARG\s0 => value]);\fR"

.IX Item "\fBNet::PcapUtils::open([\s-1ARG\s0 => value]);\fR"

.IX Item "\fBNet::PcapUtils::next($pcap_t);\fR"

.IX Header "EXAMPLE"

.IX Header "SEE ALSO"

.IX Header "COPYRIGHT"

.IX Header "AUTHOR"

n sits 
kêR3 ’ íA             ¢„>8B58B58      p  ‰         ./usr/local man/             ó/      íA         
kê^i ’ íA             ¢„>8ýA58ýA58      p  ‰         ./usr/local/bin              ó/      íA         
kê¶F ’ íA             ¢„>8�I58�I58      p  ‰         ./usr/local/lib              ó/      íA         kêÑ ©“ íA             ¢„>8wI58wI58      p  aŠ         ./usr/local/lib/perl5 et             ó/      íA         kêJ× ¬“ íA             ¢„>8ÿB58ÿB58      p  eŒ         ./usr/local/lib/perl5/site_perl              ó/      íA         kêM ­“ íA             ¢„>8�ƒ>8�ƒ>8      p  kŒ         ./usr/local/lib/perl5/site_perl/5.005 2-             ó/      íA         kê~§ ®“ íA             ¢„>8FC58FC58      p  lŒ         ./usr/local/lib/perl5/site_perl/5.005/aix en.t t             ó/      íA         kêºô ¯“ íA             ¢„>8cr>8cr>8      p  �         ./usr/local/lib/perl5/site_perl/5.005/aix/auto t             ó/      íA         kêh °“ íA             ¢„>8ÍH58ÍH58      p  �         ./usr/local/lib/perl5/site_perl/5.005/aix/auto/Net .pm U             ó/      íA         kê„	 ±“ íA             ¢„>8FC58FC58      p  |�         ./usr/local/lib/perl5/site_perl/5.005/aix/auto/Net/Pcap              ó/      íA         kêÞ… Ï“ íA             ¢„>8ÍH58ÍH58      p   �         ./usr/local/lib/perl5/site_perl/5.005/aix/auto/Net/PcapUtils .pa             ó/      íA         kê†À ´“ íA             ¢„>8FC58FC58      p  }�         ./usr/local/lib/perl5/site_perl/5.005/aix/Net /N             ó/      íA         kêj¾ Í“ íA             ¢„>8ÌH58ÌH58      p  �         ./usr/local/lib/perl5/site_perl/5.005/Net Net /N             ó/      íA         kêl˜ »’ íA             ¢„>8òC58òC58      p   ‰         ./usr/local/lib/Net-Pcap-0.03 l/             ó/      íA         kê© ¼’ íA             £„>8óC58óC58      p  !‰         ./usr/local/lib/Net-Pcap-0.03/t              ó/      íA         kêlà Ñ“ íA             £„>8¬I58¬I58      p  0�         ./usr/local/lib/Net-PcapUtils-0.01 05/Ne             ó/      íA         kêtý Ó“ íA             £„>8¬I58¬I58      p  1�         ./usr/local/lib/Net-PcapUtils-0.01/t /Ne             ó/      íA         
kê˜ ß  íA             £„>8ŽC58ŽC58      p  Î         ./usr/local/man              ó/      íA         kêœ ¸“ íA             £„>8šr>8šr>8      p  Ç�         ./usr/local/man/man3 cap             ó/      íA         kêŠ
 Must run as root

if ($UID != 0) {
    print("not ok\n");
    exit;
}

my($dev, $pcap_t, $err);

$dev = Net::Pcap::lookupdev(\$err);
$pcap_t = Net::Pcap::open_live($dev, 1024, 1, 0, \$err);

if (!defined($pcap_t)) {
    print("Net::Pcap::open_live returned error $err\n");
    print("not ok\n");
    exit;
}

my $count = 0;

sub process_pkt
{
    my($user, $hdr, $pkt) = @_;
    my %stats;
    
    print("In process_pkt:\n");

    Net::Pcap::stats($pcap_t, \%stats);

    $count++;

    if ($count != $stats{ps_recv}) {
	print("Bad statistics\n");
	print("not ok\n");
	exit;
    }

    print("Received $stats{ps_recv}, dropped $stats{ps_drop}, ", 
	  "interface dropped $stats{ps_ifdrop}\n");
}

Net::Pcap::loop($pcap_t, 10, \&process_pkt, 0);
Net::Pcap::close($pcap_t);

print("ok\n");
ss_pkê’  Ÿ“ ¤�          ¿   „>8òC58òC58      `  Ä‹  ¿      ./usr/local/lib/Net-Pcap-0.03/t/05-dump.t  .t Ut             ó/      ¤�          #!/usr/bin/perl
#
# Test loop function
#
# $Id: 05-dump.t,v 1.5 1999/03/15 06:37:26 tpot Exp $
#

use strict;
use English;

use ExtUtils::testlib;
use Net::Pcap;

print("1..1\n");

my($dev, $pcap_t, $pcap_dumper_t, $err);
my $dumpfile = "/tmp/Net-Pcap-dump.$$";

# Must run as root

if ($UID != 0) {
    print("not ok\n");
    exit;
}

#
# Test loop on open_live interface
#

$dev = Net::Pcap::lookupdev(\$err);
$pcap_t = Net::Pcap::open_live($dev, 1024, 1, 0, \$err);

if (!defined($pcap_t)) {
    print("Net::Pcap::open_live returned error $err\n");
    print("not ok\n");
    exit;
}

$pcap_dumper_t = Net::Pcap::dump_open($pcap_t, $dumpfile);

if (!defined($pcap_dumper_t)) {
    print("Net::Pcap::dump_open failed: ", Net::Pcap::geterr($pcap_t), "\n");
    print("not ok\n");
    exit;
}

my($count) = 0;

sub process_pkt {
    my($user, $hdr, $pkt) = @_;

    if (($user ne "xyz") or !defined($hdr) or !defined($pkt)) {
	print("Bad args passed to callback\n");
	print("Bad user data\n"), if ($user ne "xyz");
	print("Bad pkthdr\n"), if (!defined($hdr));
	print("Bad pkt data\n"), if (!defined($pkt));
	print("not ok\n");
	exit;
    }

    Net::Pcap::dump($pcap_dumper_t, $hdr, $pkt);

    $count++;
}

Net::Pcap::loop($pcap_t, 10, \&process_pkt, "xyz");
Net::Pcap::close($pcap_t);

Net::Pcap::dump_close($pcap_dumper_t);

if (!-f $dumpfile) {
    print("No save file created\n");
    print("not ok\n");
} else {
    print("ok\n");
}

END {
    unlink($dumpfile);
}
vkêÞ  “ ¤�          ¦   „>8òC58òC58      `  Æ‹  ¦      ./usr/local/lib/Net-Pcap-0.03/t/02-lookup.t t Ut             ó/      ¤�          #!/usr/bin/perl
#
# Test lookup functions
#
# $Id: 02-lookup.t,v 1.4 1999/03/15 06:33:29 tpot Exp $
#

use strict;

use ExtUtils::testlib;
use Net::Pcap;

print("1..2\n");

my($dev, $net, $mask, $err);

#
# Test lookupdev() function
#

$dev = Net::Pcap::lookupdev(\$err);

if ($dev eq "") {
    print("not ok\n");
} else {
    print("ok\n");
}

if ($dev eq "") {
    print("Net::Pcap::lookupdev returned error $err\n");
    print("not ok\n");
    exit;
} else {
    print("Net::Pcap::lookupdev returned device $dev\n");
}

#
# Test lookupnet() function
#

# From test.pl, Net-Pcap-0.01.tar.gz

sub dotquad {
    my($na, $nb, $nc, $nd);
    my ( $net ) = @_ ;
    $na=$net >> 24 & 255 ;
    $nb=$net >> 16 & 255 ;
    $nc=$net >>  8 & 255 ;
    $nd=$net & 255 ;
    return ( "$na.$nb.$nc.$nd") ;
}

my($result);

$result = Net::Pcap::lookupnet($dev, \$net, \$mask, \$err);

if ($result == -1) {
    print("not ok\n");
    print("Net::Pcap::lookupnet returned error $err\n");
    exit;	  
} else {
    print("Net::Pcap::lookupnet returned net ", dotquad($net),
	  " and mask ", dotquad($mask), "\n");
}

if (($net == 0) or ($mask == 0)) {
    print("not ok\n");
} else {
    print("ok\n");
}

 kêtg ¡“ ¤�          ²	   „>8òC58òC58      `  �  ²	      ./usr/local/lib/Net-Pcap-0.03/t/10-fileno.t t Ut             ó/      ¤�          #!/usr/bin/perl
#
# Test loop function
#
# $Id: 10-fileno.t,v 1.5 1999/03/15 06:37:26 tpot Exp $
#

use strict;
use English;

use ExtUtils::testlib;
use Net::Pcap;

print("1..4\n");

my($dev, $pcap_t, $pcap_dumper_t, $err);
my $dumpfile = "/tmp/Net-Pcap-dump.$$";

# Must run as root

if ($UID != 0) {
    print("not ok\n");
    exit;
}

#
# Test file and fileno on offline interface
#

$dev = Net::Pcap::lookupdev(\$err);
$pcap_t = Net::Pcap::open_live($dev, 1024, 1, 0, \$err);

if (!defined($pcap_t)) {
    print("Net::Pcap::open_live returned error $err\n");
    print("not ok\n");
    exit;
}

$pcap_dumper_t = Net::Pcap::dump_open($pcap_t, $dumpfile);

if (!defined($pcap_dumper_t)) {
    print("Net::Pcap::dump_open failed: ", Net::Pcap::geterr($pcap_t), "\n");
    print("not ok\n");
    exit;
}

sub process_pkt {
    my($user, $hdr, $pkt) = @_;

    if (($user ne "xyz") or !defined($hdr) or !defined($pkt)) {
	print("Bad args passed to callback\n");
	print("Bad user data\n"), if ($user ne "xyz");
	print("Bad pkthdr\n"), if (!defined($hdr));
	print("Bad pkt data\n"), if (!defined($pkt));
	print("not ok\n");
	exit;
    }

    Net::Pcap::dump($pcap_dumper_t, $hdr, $pkt);
}

Net::Pcap::loop($pcap_t, 10, \&process_pkt, "xyz");
Net::Pcap::close($pcap_t);
Net::Pcap::dump_close($pcap_dumper_t);

$pcap_t = Net::Pcap::open_offline($dumpfile, \$err);

if (!defined($pcap_t)) {
    print("Net::Pcap::open_offline returned error $err\n");
    print("not ok\n");
    exit;
}

my($fh, $fileno);

$fh = Net::Pcap::file($pcap_t);
$fileno = Net::Pcap::fileno($pcap_t);

if (!defined($fh)) {
    print("bad file handle returned by Net::Pcap::file\n");
    print("not ok\n");
} else {
    print("ok\n");
}

if ($fileno != -1) {
    print("Bad fileno returned by Net::Pcap::fileno\n");
    print("not ok\n");
} else {
    print("ok\n");
}

Net::Pcap::close($pcap_t);

#
# Test file and fileno on live connection
#

$dev = Net::Pcap::lookupdev(\$err);
$pcap_t = Net::Pcap::open_live($dev, 1024, 1, 0, \$err);

if (!defined($pcap_t)) {
    die("Net::Pcap::open_live returned error $err");
}

$fh = Net::Pcap::file($pcap_t);
$fileno = Net::Pcap::fileno($pcap_t);

if (defined($fh)) {
    print("bad file handle returned by Net::Pcap::file\n");
    print("not ok\n");
} else {
    print("ok\n");
}

if ($fileno < 0) {
    print("Bad fileno returned by Net::Pcap::fileno\n");
    print("not ok\n");
} else {
    print("ok\n");
}

Net::Pcap::close($pcap_t);

END {
    unlink($dumpfile);
}
 # DefkêRp ¢“ ¤�          Š   „>8òC58òC58      `  �  Š      ./usr/local/lib/Net-Pcap-0.03/t/04-loop.t t t Ut             ó/      ¤�          #!/usr/bin/perl
#
# Test loop function
#
# $Id: 04-loop.t,v 1.5 1999/03/15 06:33:29 tpot Exp $
#

use strict;
use English;

use ExtUtils::testlib;
use Net::Pcap;

print("1..1\n");

# Must run as root

if ($UID != 0) {
    print("must run as root!\n");
    print("not ok\n");
    exit;
}

my($dev, $pcap_t, $err);

#
# Test loop on open_live interface
#

$dev = Net::Pcap::lookupdev(\$err);
$pcap_t = Net::Pcap::open_live($dev, 1024, 1, 0, \$err);

if (!defined($pcap_t)) {
    print("Net::Pcap::open_live returned error $err\n");
    print("not ok\n");
    exit;
}

my $count = 0;

sub process_pkt {
    my($user, $hdr, $pkt) = @_;

    if (($user ne "abc") or !defined($hdr) or !defined($pkt)) {
	print("Bad args passed to callback\n");
	print("Bad user data\n"), if ($user ne "abc");
	print("Bad pkthdr\n"), if (!defined($hdr));
	print("Bad pkt data\n"), if (!defined($pkt));
	print("not ok\n");
	exit;
    }

    print("Received packet of len $hdr->{len}\n");
    $count++;
}

Net::Pcap::loop($pcap_t, 10, \&process_pkt, "abc");

if ($count != 10) {
    print("Bad pkt count\n");
    print("not ok\n");
    exit;
}

Net::Pcap::close($pcap_t);

print("ok\n");
umper_kêà £“ ¤�          X   „>8òC58òC58      p  OŽ  X      ./usr/local/lib/Net-Pcap-0.03/t/README .             ó/      ¤�          Most of these tests are required to be run as root.

Note that some of these tests require a working network interface with
actual traffic on it.  For example the loop test waits for 10 packets
to be received on the network before exiting.  If there is no traffic
on the interface, this test will block.

The memory leak tests do not complete.
kê,p ¤“ ¤�          X   „>8òC58òC58      `  N�  X      ./usr/local/lib/Net-Pcap-0.03/t/12-next.t t t Ut             ó/      ¤�          #!/usr/bin/perl
#
# Test next function
#
# $Id: 12-next.t,v 1.5 1999/03/15 06:33:32 tpot Exp $
#

use strict;
use English;

use ExtUtils::testlib;
use Net::Pcap;

print("1..1\n");

# Must run as root

if ($UID != 0) {
    print("not ok\n");
    exit;
}

my($dev, $pcap_t, $err, $net, $mask, $result, $filter);

#
# Test loop on open_live interface
#

$dev = Net::Pcap::lookupdev(\$err);
$result = Net::Pcap::lookupnet($dev, \$net, \$mask, \$err);
$pcap_t = Net::Pcap::open_live($dev, 1024, 1, 1, \$err);

# From test.pl, Net-Pcap-0.01.tar.gz
print( "dev is ", $dev, ", net is ", $net, ", mask is ", $mask. "\n");

sub dotquad {
    my($na, $nb, $nc, $nd);
    my ( $net ) = @_ ;
    $na=$net >> 24 & 255 ;
    $nb=$net >> 16 & 255 ;
    $nc=$net >>  8 & 255 ;
    $nd=$net & 255 ;
    return ( "$na.$nb.$nc.$nd") ;
}

print ("net is ", dotquad($net), " mask is ", dotquad($mask), "\n");

if (!defined($pcap_t)) {
    print("Net::Pcap::open_live returned error $err\n");
    print("not ok\n");
    exit;
}

$result = Net::Pcap::compile($pcap_t, \$filter, "ip", 0, $mask);

if ($result == -1) {
    print("Net::Pcap::compile returned ", Net::Pcap::geterr($pcap_t), "\n");
    print("not ok\n");
    exit;
}

$result = Net::Pcap::setfilter($pcap_t, $filter);

if ($result == -1) {
    print("Net::Pcap::setfilter returned ", Net::Pcap::geterr($pcap_t), "\n");
    print("not ok\n");
    exit;
}

for my $count (1..10) {
    my($pkt, %hdr);

    while (!($pkt = Net::Pcap::next($pcap_t, \%hdr))) {
	print("no pkt received (but that's OK)\n");
    }

    if (!defined(%hdr) or !defined($pkt)) {
	print("Bad args passed to callback\n");
	print("header is not defined\n"), if (!defined(%hdr));
	print("packet is not defined\n"), if (!defined($pkt));
	print("not ok\n");
	exit;
    }

    print("$count: received packet of len $hdr{len}\n");
}

Net::Pcap::close($pcap_t);

print("ok\n");
kêL© ¥“ ¤�          .   „>8òC58òC58      p  ªŽ  .      ./usr/local/lib/Net-Pcap-0.03/t/03-openlive.t Ut             ó/      ¤�          #!/usr/bin/perl
#
# Test open_live functions
#
# $Id: 03-openlive.t,v 1.4 1999/03/15 06:33:29 tpot Exp $
#

use strict;
use English;

use ExtUtils::testlib;
use Net::Pcap;

print("1..3\n");

# Must run as root

if ($UID != 0) {
    print("not ok\n");
    exit;
}

my($dev, $pcap_t, $err);

#
# Test open_live function
#

$dev = Net::Pcap::lookupdev(\$err);
$pcap_t = Net::Pcap::open_live($dev, 1024, 1, 0, \$err);

if (!defined($pcap_t)) {
    print("Net::Pcap::open_live returned error $err on device $dev\n");
    print("not ok\n");
    exit;
}

print("ok\n");

#
# Test close function
#

Net::Pcap::close($pcap_t);
print("ok\n");

#
# Test open_live() with dodgy device
#

$pcap_t = Net::Pcap::open_live("beans", 1024, 1, 0, \$err);

if (defined($pcap_t)) {
    print("not ok\n");
} else {
    print("ok\n");
}

}kêµ ¦“ ¤�          ­    „>8òC58òC58      p  òŽ  ­       ./usr/local/lib/Net-Pcap-0.03/t/01-module.t t Ut             ó/      ¤�          #!/usr/bin/perl
#
# Test module import
#
# $Id: 01-module.t,v 1.1 1999/03/10 02:48:40 tpot Exp $
#

use strict;

use ExtUtils::testlib;
use Net::Pcap;

print("1..1\nok\n");
prikê`’ §“ ¤�          à  ¡„>8òC58òC58      `  P�  à      ./usr/local/lib/Net-Pcap-0.03/t/leaktest1.pl  Ut             ó/      ¤�          #!/usr/bin/perl
#
# Test for memory leaks by sitting in an infinite loop and flood
# pinging from another window.  Memory leaks become apparent quickly.
#
# $Id: leaktest1.pl,v 1.2 1999/03/14 03:14:09 tpot Exp $
#

use strict;
use English;

use ExtUtils::testlib;
use Net::Pcap;

die("Must run as root!\n"), if ($UID != 0);

my($dev, $err, $pcap_t);

$dev = Net::Pcap::lookupdev(\$err);
$pcap_t = Net::Pcap::open_live($dev, 1024, 1, 0, \$err);

if (!defined($pcap_t)) {
    die("Net::Pcap::open_live returned error $err");
}

my $count;

sub process_pkt {
    my($user, $hdr, $pkt) = @_;

    $count++;

    print("$count\n"), if (($count % 1000) == 0);
}

Net::Pcap::loop($pcap_t, 0, \&process_pkt, "1234");
Net::Pcap::close($pcap_t);
kêþv ¨“ ¤�            ¡„>8óC58óC58      P  �        ./usr/local/lib/Net-Pcap-0.03/t/06-offline.t  Ut             ó/      ¤�          #!/usr/bin/perl
#
# Test open_offline
#
# $Id: 06-offline.t,v 1.6 1999/03/15 06:37:26 tpot Exp $
#

use strict;
use English;

use ExtUtils::testlib;
use Net::Pcap;

print("1..4\n");

my($pcap_t, $err);
my $dumpfile = "/tmp/Net-Pcap-dump.$$";

# Must run as root

if ($UID != 0) {
    print("not ok\n");
    exit;
}

#
# Test open_offline of bad file (not created yet)
#

$pcap_t = Net::Pcap::open_offline($dumpfile, \$err);

if (defined($pcap_t)) {
    print("Net::Pcap::open_offline worked for dummy file\n");
    print("not ok\n");
} else {
    print("ok\n");
}

#
# Test open_offline of good file.  Need to create it first.
#

my($dev, $pcap_dumper_t);

$dev = Net::Pcap::lookupdev(\$err);
$pcap_t = Net::Pcap::open_live($dev, 1024, 1, 0, \$err);

if (!defined($pcap_t)) {
    print("Net::Pcap::open_live returned error $err\n");
    print("not ok\n");
    exit;
}

$pcap_dumper_t = Net::Pcap::dump_open($pcap_t, $dumpfile);

if (!defined($pcap_dumper_t)) {
    print("Net::Pcap::dump_open failed: ", Net::Pcap::geterr($pcap_t), "\n");
    print("not ok\n");
    exit;
}

sub process_pkt {
    my($user, $hdr, $pkt) = @_;

    if (($user ne "xyz") or !defined($hdr) or !defined($pkt)) {
	print("Bad args passed to callback\n");
	print("Bad user data\n"), if ($user ne "xyz");
	print("Bad pkthdr\n"), if (!defined($hdr));
	print("Bad pkt data\n"), if (!defined($pkt));
	print("not ok\n");
	exit;
    }

    Net::Pcap::dump($pcap_dumper_t, $hdr, $pkt);
}

Net::Pcap::loop($pcap_t, 10, \&process_pkt, "xyz");
Net::Pcap::close($pcap_t);

Net::Pcap::dump_close($pcap_dumper_t);

if (!-f $dumpfile) {
    print("No save file created\n");
    print("not ok\n");
} else {
    print("ok\n");
}

$pcap_t = Net::Pcap::open_offline($dumpfile, \$err);

if (!defined($pcap_t)) {
    print("Net::Pcap::open_offline failed: $err\n");
    print("not ok\n");
    exit;
}

my($major, $minor, $swapped);

$major = Net::Pcap::major_version($pcap_t);
$minor = Net::Pcap::minor_version($pcap_t);
$swapped = Net::Pcap::is_swapped($pcap_t);

print("File saved with libpcap versi