Beefy Boxes and Bandwidth Generously Provided by pair Networks
go ahead... be a heretic
 
PerlMonks  

Re^3: Net::Pcap installation help (and not with the library)

by VinsWorldcom (Prior)
on Apr 25, 2013 at 11:47 UTC ( [id://1030651]=note: print w/replies, xml ) Need Help??


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

You will get some test failures - I don't remember quite that many. But proceed with the process and create and run the test script in the install directory. Run it with 'perl -Mblib test.pl' from the install directory. If that runs fine, then do the 'dmake install'.

  • Comment on Re^3: Net::Pcap installation help (and not with the library)

Replies are listed 'Best First'.
Re^4: Net::Pcap installation help (and not with the library)
by taapm (Initiate) on Apr 26, 2013 at 01:00 UTC
    Thanks for the prompt reply. Here's what happens when I try to run the test script:
    D:\strawberry\Net-Pcap-0.17>perl -Mblib test.pl Undefined subroutine &main::pcap_findalldevs called at test.pl line 3

      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" }
        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) {

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1030651]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others browsing the Monastery: (5)
As of 2024-04-24 20:00 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found