"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.