Net-Connection-Sniffer
view release on metacpan or search on metacpan
#my $addr_off = $ETH_H + 12; # src address
#my $frag_off = $ETH_H + 6;
my $minlen = $ETH_H + $IPV4_H + 4; # need port numbers at a minimum
my $snaplen = $minlen;
my $oneday = 86400; # WARNING, set in XS also
my $unique = $$ -1; # dns sequence number
my($match,$nomatch,$payoff);
my $af_inet6 = eval { AF_INET6() };
$af_inet6 = 0 if $@;
#################################################
##### global vars reset by HUP
my ($purge,$nxpurge);
##### global vars used in 'collect', 'dump_stats', elsewhere
#### WARNING, these are set in the XS portion also
my ($now, $start, $rate, $bw);
sub set_gvars {
# need promiscious [t/f]
sub get_if($) {
my $naddr = ipanyto6(shift);
my %net;
my @ifs = interfaces Net::Interface ();
IF:
foreach my $if (@ifs) {
my @addrs = $if->address(AF_INET());
my @netms = $if->netmask(AF_INET());
if ($af_inet6) {
push @addrs, $if->address($af_inet6);
push @netms, $if->netmask($af_inet6);
}
foreach (0..$#addrs) {
my $iddr = ipanyto6($addrs[$_]);
my $name = $if->name();
if ($naddr eq $iddr) {
$match = $name;
last IF;
}
my $mask = maskanyto6($netms[$_]);
my $net = $iddr & $mask;
( run in 0.231 second using v1.01-cache-2.11-cpan-87723dcf8b7 )