NAME
Socket::More::Interface - Query network interfaces of your system
SYNOPOSIS
use v5.36;
use Socket::More::Interface;
# Return a list of interface structures (hashes)
my @interfaces=getifaddrs();
# Lookup the interface index from its name
my $index=if_nametoindex($name);
# Lookup the interface name from its index
my $name=if_nametoindex($index);
# Get the key/value array of names and indexes
@kvpairs=if_nameindex;
DESCRIPTION
Simple wrapper to library calls. Consult you man page for what they do. getifaddrs
, if_nametoindex
, if_indextoname
and if_nameindex
are exported by default.
API
getifaddrs
my @interfaces=getifaddrs;
Queries the OS via getifaddr
for the list of interfaces currently active. Returns a list of hash references representing the network interfaces. The keys of these hashes include:
- name
-
The text name of the interface
- flags
-
Flags set on the interface
- addr
-
Packed sockaddr structure suitable for use with
bind
- netmask
-
Packed sockaddr structure of the netmask
- dstmask
-
Packed sockaddr structure of the dstmask
if_nametoindex
my $index=if_nametoindex($name);
Returns the index of an interface by name. If the interface is not found, returns 0 and sets $!
with error code.
if_indextoname
my $name=if_indextoname($index);
Returns the name of an interface by index. If the index does not represent an interface, undef
is returned and sets $!
with error code
if_nameindex
my @pairs=if_nameindex;
Returns a list of key value pairs. The key is the interface index, and the value is the name of the interface.
Return undef
on error and sets $!
with error code.
TODO
- Network interface queries for byte counts, rates.. etc
- Expand address family types support(i.e link)
- Network change events/notifications
AUTHOR
Ruben Westerberg, <drclaw@mac.com<gt>
REPOSITORTY and BUGS
Please report any bugs via git hub: https://github.com/drclaw1394/perl-socket-more-interface
COPYRIGHT AND LICENSE
Copyright (C) 2023 by Ruben Westerberg
This library is free software; you can redistribute it and/or modify it under the same terms as Perl or the MIT license.
DISCLAIMER OF WARRANTIES
THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.