logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

Net::Ifconfig::Wrapper - provides a unified way to configure network interfaces on FreeBSD, OpenBSD,

Author

       Daniel Podolsky, <tpaba@cpan.org> As of 2015-11, maintained by Martin Thurn <mthurn@cpan.org>

Description

       This module provides a unified way to configure the network interfaces on FreeBSD, OpenBSD, Solaris,
       Linux, OS X, and WinNT (from Win2K) systems.

       Only"inet"(IPv4)and"ether"(MAC)addressesaresupportedatthistime

       On Unix, this module calls the system "ifconfig" command to gather the information.  On Windows, the
       functions from IpHlpAPI.DLL are called.

       For all supported Unixes, "Net::Ifconfig::Wrapper" expects the "ifconfig" command to be "/sbin/ifconfig".

       See the top-level README file for a list of tested OSes.

       OntheMSWin32family,onlyWindowsNTissupported.IntheWindowsNTfamily,onlyWindows2000orlaterissupported.

Name

       Net::Ifconfig::Wrapper - provides a unified way to configure network interfaces on FreeBSD, OpenBSD,
       Solaris, Linux, OS X, and WinNT (from Win2K).

See Also

ifconfig(8), InternetProtocolHelper in PlatformSDK.

perl v5.36.0                                       2022-11-19                        Net::Ifconfig::Wrapper(3pm)

Synopsis

         use Net::Ifconfig::Wrapper;
         my $rhInfo = Net::Ifconfig::Wrapper::Ifconfig('list');

The Net::Ifconfig::Wrapper Methods

       "Ifconfig(Command, Interface, Address, Netmask);"
           The  one  and only method of the "Net::Ifconfig::Wrapper" module.  Does all the jobs.  The particular
           action is described by the $Command parameter.

           $Command could be:

           'list'  "Ifconfig('list', '', '', '')" will return a reference to a hash containing information about
                   interfaces.

                   The structure of this hash is the following:

                     {IfaceName => {'status' => 0|1          # The status of the interface. 0 means down, 1 means up
                                    'ether'  => MACaddr,     # The ethernet address of the interface if available
                                    'descr'  => Description, # The description of the interface if available
                                    'inet'   => {IPaddr1 => NetMask, # The IP address and his netmask, both are in AAA.BBB.CCC.DDD notation
                                                 IPaddr2 => NetMask,
                                                 ...
                                                },
                     ...
                     };

                   Interface, Address, Netmask parameters are ignored.

                   The following shows what program is called for each OS:

                   FreeBSD     "/sbin/ifconfig -a"

                   Solaris     "/sbin/ifconfig -a"

                   OpenBSD     "/sbin/ifconfig -A"

                   Linux       "/sbin/ifconfig -a"

                   OS X        "/sbin/ifconfig -a"

                   MSWin32     "GetAdaptersInfo" function from "IpHlpAPI.DLL"

                   Known Limitations:

                   OpenBSD: "/sbin/ifconfig -A" command is not returning information about MAC addresses  so  we
                   are  trying  to  get  it  from  '/usr/sbin/arp -a' command (first 'static' entry).  If no one
                   present the 'ff:ff:ff:ff:ff' address is returned.

                   MSWin32: "GetAdaptersInfo" function is not returning information about  the  interface  which
                   has address 127.0.0.1 bound to it, so we have no way to return it.

                   Not  a  limitation,  but a small problem: in MSWin32, interface names are not human-readable,
                   they look like "{843C2077-30EC-4C56-A401-658BB1E42BC7}" (on Win2K at least).

           'inet'  This function is used to set IPv4 address on interface.  It is called as

                     Ifconfig('inet', $IfaceName, $Addr, $Mask);

                   $IfaceName is an interface name as displayed by 'list' command

                   $Addr is an IPv4 address in the "AAA.AAA.AAA.AAA" notation

                   $Mask is an IPv4 subnet mask in the "MMM.MMM.MMM.MMM" notation

                   In order to accomplish this, the following actual "ifconfig" programs are called:

                   FreeBSD     "/sbin/ifconfig %Iface% inet %Addr% netmask  %Mask% up"

                   Solaris     "/sbin/ifconfig %Iface% inet %Addr% netmask %Mask% up"

                   OpenBSD     "/sbin/ifconfig %Iface% inet %Addr% netmask  %Mask% up"

                   Linux       "/sbin/ifconfig %Iface% inet %Addr% netmask  %Mask% up"

                   OS X        "/sbin/ifconfig %Iface% inet %Addr% netmask  %Mask% up"

                   MSWin32:    nothing :(

                   Known Limitations:

                   MSWin32: I did not find a reliable way to recognize the "main" address on the  Win32  network
                   interface, so I have disabled this functionality.  If you know how, please let me know.

           'up'    Just a synonym for 'inet'

           'down'  This function is used to bring specified interface down.  It is called as

                     Ifconfig('inet', $IfaceName, '', '');

                   $IfaceName is an interface name as displayed by 'list' command

                   Last two arguments are ignored.

                   In order to accomplish this, the following programs are called:

                   FreeBSD     "/sbin/ifconfig %Iface% down"

                   Solaris     "/sbin/ifconfig %Iface% down"

                   OpenBSD     "/sbin/ifconfig %Iface% down"

                   Linux       "/sbin/ifconfig %Iface% down"

                   OS X        "/sbin/ifconfig %Iface% down"

                   MSWin32     Sorry, this function is not possible.

                   Known Limitations:

                   MSWin32: I did not find the way to implement the 'up' command so I did not implement 'down'.

           '+alias'
                   This function is used to set IPv4 alias address on interface. It have to be called as

                     Ifconfig('+alias', $IfaceName, $Addr, $Mask);

                   $IfaceName is an interface name as displayed by 'list' command

                   $Addr is an IPv4 address in the "AAA.AAA.AAA.AAA" notation

                   $Mask is an IPv4 subnet mask in the "MMM.MMM.MMM.MMM" notation

                   In order to accomplish this, the following "ifconfig" programs are called:

                   FreeBSD     "/sbin/ifconfig %Iface%         inet %Addr% netmask  %Mask% alias"

                   Solaris     "/sbin/ifconfig %Iface%:%Logic% inet %Addr% netmask %Mask% up"

                   OpenBSD     "/sbin/ifconfig %Iface%         inet %Addr% netmask  %Mask% alias"

                   Linux       "/sbin/ifconfig %Iface%:%Logic% inet %Addr% netmask  %Mask% up"

                   OS X        "/sbin/ifconfig %Iface%         inet %Addr% netmask  %Mask% alias"

                   MSWin32     "AddIPAddress" function from "IpHlpAPI.DLL"

                   FirstavailablelogicinterfaceistakenautomaticallyforSolarisandLinux

           'alias' Just a synonim for '+alias'

           '-alias'
                   This function is used to remove IPv4 alias address from interface. It have to be called as

                     Ifconfig('-alias', $IfaceName, $Addr, '');

                   $IfaceName is an interface name as displayed by 'list' command.

                   $Addr is an IPv4 address in the "AAA.AAA.AAA.AAA" notation.

                   Last argument is ignored if present.

                   In order to accomplish this, the following "ifconfig" programs are called:

                   FreeBSD     "/sbin/ifconfig %Iface% inet %Addr% -alias"

                   Solaris     "/sbin/ifconfig %Iface%:%Logic% down"

                   OpenBSD     "/sbin/ifconfig %Iface% inet %Addr% -alias"

                   Linux       "/sbin/ifconfig %Iface%:%Logic% down"

                   OS X        "/sbin/ifconfig %Iface% inet %Addr% -alias"

                   MSWin32     "DeleteIPAddress" function from "IpHlpAPI.DLL"

                   AppropriatelogicinterfaceisobtainedautomaticallyforSolarisandLinux

           On  success,  the "Ifconfig(...)" function returns the defined value.  Actually, it is a reference to
           the array containing the output of the actual "ifconfig" program called.

           In case of error, "Ifconfig(...)" returns 'undef' value, and  the  $@  variable  contains  the  error
           message.

   EXPORT
       None by default.

See Also