/perl-socket-more-interface

Query network interfaces

Primary LanguageC++MIT LicenseMIT

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.