Net-Interface
view release on metacpan or search on metacpan
Interface.pm view on Meta::CPAN
bootstrap Net::Interface $VERSION;
# register the conditionally compiled family modules
Net::Interface::conreg();
# provide AF family data for use in this module
my $AF_inet = eval { 0 + AF_INET() } || 0;
my $AF_inet6 = eval { 0 + AF_INET6() } || 0;
sub af_inet { return $AF_inet; }
sub af_inet6 { return $AF_inet6; }
sub net_symbols() {
no strict;
my %sym;
my $max = AF_MAX();
foreach (
@{$EXPORT_TAGS{afs}},
@{$EXPORT_TAGS{pfs}},
@{$EXPORT_TAGS{ifs}},
@{$EXPORT_TAGS{iftype}},
Interface.pm view on Meta::CPAN
sub _address {
my($k,$if,$f,$i) = @_;
my $idx = $i || 0;
$f = 0 unless $f;
my $fam = 0 + $f;
unless ($f) { # if the family is missing
if (exists $if->{args}->{&af_inet}) {
$fam = &af_inet; # select default, AF_INET
}
else {
$fam = &af_inet6; # or AF_INET6 if present
}
}
if (! exists $if->{args}->{$fam} || # there is no such family
$idx < 0 || $idx > $#{$if->{args}->{$fam}->{addr}}) { # or the index is out of range
return () if wantarray; # PUNT!
return undef;
}
return @{$if->{args}->{$fam}->{$k}}
if wantarray;
Interface.pm view on Meta::CPAN
my ($mtu,$metric,$flags,$mac,$index) = @{$if->{args}}{qw(mtui metk flag maci indx)};
my $info = {
name => $name,
mtu => $mtu,
metric => $metric,
flags => $flags,
mac => $mac,
index => $index,
};
my $af_inet6 = eval { &af_inet6 } || 0;
foreach(&af_inet,$af_inet6) {
next unless $_;
if (exists $if->{args}->{$_}) {
$info->{$_}->{size} = $if->{args}->{$_}->{size};
$info->{$_}->{number} = @{$if->{args}->{$_}->{addr}};
}
}
return $info;
}
=item * I<-E<gt>type([$naddr6]);>
Interface.pm view on Meta::CPAN
=back
=cut
sub _family {
my $len = length($_[0]);
if ($len == 4) {
return &af_inet;
}
elsif ($len == 16) {
return &af_inet6;
}
return 0;
}
=head1 FUNCTIONS
Unless otherwise specified, errors for all methods return either B<undef> or
and empty array depending on the expected return context.
#define HAVE_NETDB_H 1
_ACEOF
fi
{ echo "$as_me:$LINENO: checking for netinet6/nd6.h" >&5
echo $ECHO_N "checking for netinet6/nd6.h... $ECHO_C" >&6; }
if test "${ac_cv_header_netinet6_nd6_h+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
#include "confdefs.h"
#include "defaults.h"
#include <netinet6/nd6.h>
_ACEOF
rm -f conftest.$ac_objext
if { (ac_try="$ac_compile"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
(eval "$ac_compile") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && {
test -z "$ac_c_werror_flag" ||
test ! -s conftest.err
} && test -s conftest.$ac_objext; then
ac_cv_header_netinet6_nd6_h=yes
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_header_netinet6_nd6_h=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
{ echo "$as_me:$LINENO: result: $ac_cv_header_netinet6_nd6_h" >&5
echo "${ECHO_T}$ac_cv_header_netinet6_nd6_h" >&6; }
if test $ac_cv_header_netinet6_nd6_h = yes; then
cat >>confdefs.h <<\_ACEOF
#define HAVE_NETINET6_ND6_H 1
_ACEOF
fi
configure.ac view on Meta::CPAN
AX_CHECK_INCLUDE([netinet/ip_carp.h],[NETINET_IP_CARP_H])
AX_CHECK_INCLUDE([net/if_media.h],[NET_IF_MEDIA_H])
AX_CHECK_INCLUDE([net80211/ieee80211.h],[NET80211_IEEE80211_H])
AX_CHECK_INCLUDE([net80211/ieee80211_crypto.h],[NET80211_IEEE80211_CRYPTO_H])
AX_CHECK_INCLUDE([net80211/ieee80211_ioctl.h],[NET80211_IEEE80211_IOCTL_H])
AX_CHECK_INCLUDE([net/if_lagg.h],[NET_IF_LAGG_H])
AX_CHECK_INCLUDE([net/if_vlan_var.h],[NET_IF_VLAN_VAR_H])
AX_CHECK_INCLUDE([net/ethernet.h],[NET_ETHERNET_H])
AX_CHECK_INCLUDE([ifaddrs.h],[IFADDRS_H])
AX_CHECK_INCLUDE([netdb.h],[NETDB_H])
AX_CHECK_INCLUDE([netinet6/nd6.h],[NETINET6_ND6_H])
AX_CHECK_INCLUDE([stdarg.h],[STDARG_H])
AX_CHECK_INCLUDE([net80211/ieee80211_freebsd.h],[NET80211_IEEE80211_FREEBSD_H])
AX_CHECK_INCLUDE([linux/rose.h],[LINUX_ROSE_H])
AX_CHECK_INCLUDE([fcntl.h],[FCNTL_H])
AX_CHECK_INCLUDE([malloc.h],[MALLOC_H])
AX_CHECK_INCLUDE([arpa/inet.h],[ARPA_INET_H])
# additional headers
AX_CHECK_INCLUDE([sys/dlpi.h],[SYS_DLPI_H])
AX_CHECK_INCLUDE([stropts.h],[STROPTS_H])
#ifdef HAVE_NET_ETHERNET_H
#include <net/ethernet.h>
#endif
#ifdef HAVE_IFADDRS_H
#include <ifaddrs.h>
#endif
#ifdef HAVE_NETDB_H
#include <netdb.h>
#endif
#ifdef HAVE_NETINET6_ND6_H
#include <netinet6/nd6.h>
#endif
#ifdef HAVE_STDARG_H
#include <stdarg.h>
#endif
#ifdef HAVE_NET80211_IEEE80211_FREEBSD_H
#include <net80211/ieee80211_freebsd.h>
#endif
#ifdef HAVE_LINUX_ROSE_H
#include <linux/rose.h>
#endif
ni_in6_ifreq.c view on Meta::CPAN
if (getnameinfo(&ifr->ni_saddr,LOCAL_SIZEOF_SOCKADDR_IN6,namebuf,NI_MAXHOST,NULL,0,NI_NUMERICHOST) != 0)
#endif
strcpy(namebuf,inet_ntop(AF_INET6,&ifr->ni_sin6.sin6_addr,namebuf,NI_MAXHOST));
addr6good = 1;
fd = ni_clos_reopn_dgrm(fd,af);
if(fd < 0)
printf("bad socket\n");
if (ioctl(fd,SIOCGIFNETMASK_IN6,ifr) < 0)
printf("Fafinet6 Netmask %s\n",strerror(errno));
else
prefix = ni_prefix(&ifr->ni_sin6.sin6_addr,sizeof(struct in6_addr));
NI_RESTORE_COPYS;
if (&nifp->refreshifr == NULL) {
printf("REFRESH NOT AVAILABLE\n");
errno = ENOSYS;
return -1;
}
if (nifp->refreshifr(fd,&ifc,(void **)&ifr,(void **)&lifr,nifp) < 0) {
printf("REFRESH failed\n");
return -1;
}
bzero(&lifetime,sizeof(struct in6_addrlifetime));
if (ioctl(fd,SIOCGIFALIFETIME_IN6,ifr) < 0)
printf("Fafinet6 LIFETIME %s\n",strerror(errno));
else
memcpy(&lifetime,&ifr->ni_lifetime,sizeof(struct in6_addrlifetime));
NI_RESTORE_COPYS;
if (nifp->refreshifr(fd,&ifc,(void **)&ifr,(void **)&lifr,nifp) < 0) {
printf("REFRESH failed\n");
return -1;
}
/* if ((flags = ni_getflags6(ifr,fd)) < 0) { */
if (ioctl(fd,SIOCGIFAFLAG_IN6,ifr) < 0) {
ni_in6_ifreq.c view on Meta::CPAN
printf("LinkLocal ");
else if (scopeid == RFC2373_SITELOCAL)
printf("SiteLocal ");
else if (scopeid == RFC2373_GLOBAL)
printf("Global ");
else if (scopeid == RFC2373_ORGLOCAL)
printf("OrgLocal ");
}
if (ioctl(fd,SIOCGIFMETRIC,ifr) < 0)
printf("Faf_inet6 SIOCGIFMETRIC ");
else
printf("metric %d ",ifr->ni_int);
if (ioctl(fd,SIOCGIFMTU,ifr) < 0)
printf("Fafinet6 SIOCIFMTU ");
else
printf("mtu %d",ifr->ni_int);
if (addr6good && prefix)
printf("\n\taddress %s/%d ",namebuf,prefix);
if (lifetgood) {
if (lifetime.ia6t_preferred || lifetime.ia6t_expire) {
printf("plt ");
if (lifetime.ia6t_preferred) {
ni_linuxproc.c view on Meta::CPAN
* or visit their web page on the internet at: *
* *
* http://www.gnu.org/copyleft/gpl.html. *
* ******************************************************************** */
#include "localconf.h"
#ifdef __ni_Linux
#define _PATH_PROCNET_DEV "/proc/net/dev"
#define _PATH_PROCNET_IFINET6 "/proc/net/if_inet6"
/* should be include from /linux/include/linux/rtnetlink.h */
/* ifa_flags */
#ifndef IFA_F_SECONDARY
#define IFA_F_SECONDARY 0x01
#endif
#ifndef IFA_F_TEMPORARY
#define IFA_F_TEMPORARY IFA_F_SECONDARY
#endif
t/faceinfo.t view on Meta::CPAN
my $i = $hvp->info();
unless (defined $i->{flags} && $i->{flags} & IFF_UP()) {
diag(sprintf("%s\t<DOWN>\n",$i->{name}));
next;
}
## Dump($i);
my $flags = getflags($i->{flags});
my $mac = (defined $i->{mac}) ? "\tMAC: ". mac_bin2hex($i->{mac}) : '';
my $mtu = $i->{mtu} ? 'MTU:'. $i->{mtu} : '';
my $metric = (defined $i->{metric}) ? 'Metric:'. $i->{metric} : '';
my $af_inet6 = eval {AF_INET6} || 0;
diag(sprintf("%s id %d\tflags:0x%02x%s %s %s\n",$i->{name},$i->{index},$i->{flags},$flags,$mtu,$metric));
dumpaddrs($hvp,$i,AF_INET,\$mac);
dumpaddrs($hvp,$i,$af_inet6,\$mac);
# print Dumper($i),"\n";
}
( run in 0.483 second using v1.01-cache-2.11-cpan-87723dcf8b7 )