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.


configure  view on Meta::CPAN

#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])

defaults.h  view on Meta::CPAN

#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 )