http://www.perlmonks.org?node_id=1030816


in reply to Re^4: Net::Pcap installation help (and not with the library)
in thread Net::Pcap installation help (and not with the library)

I don't know if it matters, but I have different versions:

Win7 x64

Strawberry Perl 5.16.1

Net::Pcap = 0.16

WinPcap = 4.1.2

The patches mentioned were written against Net::Pcap 0.16, not sure how the update to 0.17 will effect them?

Also, not sure how using WinPcap 4.1.3 with the headers / libraries (WpdPack) for 4.1.2 will effect compile and run?

UPDATE: The patches definitely don't work by just running 'patch' on the Net::Pcap 0.17 version as the Makefile.PL has some additional lines throwing off the patch files. However, looking at the patches and manually adding them worked fine for me.

I did get a compilation error at first about "undefined reference to `pcap_..." but that was resolved by simply recreating the x64 libraries according to step 4 of the process above.

The test.pl file also didn't work - gave an "Undefined subroutine &main::pcap_findalldevs called at test.pl line 3". It seems the 0.17 version of Net::Pcap handles the ':functions' export tag differently. This is resolved with a new test.pl as follows:

use Net::Pcap; @devs = Net::Pcap::pcap_findalldevs(\%devinfo, \$err); for my $dev (@devs) { print "$dev : $devinfo{$dev}\n" }

Replies are listed 'Best First'.
Re^6: Net::Pcap installation help (and not with the library)
by taapm (Initiate) on Apr 27, 2013 at 19:28 UTC
    Thanks VERY much, Vin, for your help! In addition to your modified test.pl, for the benefit of others here are the minor patches to apply to Net-Pcap-0.17 to get it to compile correctly. Strangely, I did not have to redo step 4 like you had to.

    Apply these patches with the same command line option '-p1' as in Vin's original post:

    patch -p1 < net-pcap-0.17-makefile.patch patch -p1 < net-pcap-0.17-stubs.patch
    Here is net-pcap-0.17-makefile.patch:
    --- a/Makefile.PL Wed Apr 24 21:16:02 2013 +++ b/Makefile.PL Fri Apr 26 23:00:40 2013 @@ -296,7 +296,7 @@ $has_Win32 = !$@; $is_Win32 = ($^O eq 'MSWin32'); if ($is_Win32) { - $DEVNULL = 'DEVNULL'; + $DEVNULL = 'NUL:'; } else { $DEVNULL = eval { File::Spec->devnull }; if ($@) { $DEVNULL = '/dev/null' }
    And net-pcap-0.17-stubs.patch:
    --- a/stubs.inc Sun Oct 15 15:00:58 2006 +++ b/stubs.inc Fri Apr 26 23:09:52 2013 @@ -516,10 +516,13 @@ #ifdef _MSC_VER #pragma message( "Warning: the function pcap_setsampling() is not ava +ilable" ) #endif + +#ifndef HAVE_REMOTE struct pcap_samp { int method; int value; }; +#endif struct pcap_samp *pcap_setsampling(pcap_t *p); struct pcap_samp *pcap_setsampling(pcap_t *p) {