Re: ifconfig network resolution
Okay, here it is in the common language:
---------------------------------
myadm@mycomp:~$ env LANG=en_US.UTF-8 sudo ifconfig eth0:1 down
myadm@mycomp:~$ env LANG=en_US.UTF-8 sudo ifconfig eth0:1
eth0:1 Link encap:Ethernet HWaddr 53:bc:81:02:21:bb
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:42 Base address:0xa000
# with everything cleared:
myadm@mycomp:~$ env LANG=en_US.UTF-8 sudo ifconfig eth0:1 netmask
255.255.255.224 broadcast 10.19.201.223 10.19.201.198
SIOCSIFNETMASK: Cannot assign requested address
SIOCSIFBRDADDR: Cannot assign requested address
SIOCSIFFLAGS: Cannot assign requested address
# check it,
myadm@mycomp:~$ env LANG=en_US.UTF-8 sudo ifconfig eth0:1
eth0:1 Link encap:Ethernet HWaddr 53:bc:81:02:21:bb
inet addr:10.19.201.198 Bcast:10.255.255.255 Mask:255.0.0.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:42 Base address:0xa000
# and apparently it is
# processing the arguments in the order they are given,
# and applying them to the state at the point they are given,
# which I sort of thought might be the case, but doesn't seem to be
# be clearly stated in the man pages.
# Thus, if you repeat the command as given,
myadm@mycomp:~$ env LANG=en_US.UTF-8 sudo ifconfig eth0:1 netmask
255.255.255.224 broadcast 10.19.201.223 10.19.201.198
# and check again,
myadm@mycomp:~$ env LANG=en_US.UTF-8 sudo ifconfig eth0:1
eth0:1 Link encap:Ethernet HWaddr 53:bc:81:02:21:bb
inet addr:10.19.201.198 Bcast:10.19.201.223 Mask:255.255.255.224
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:42 Base address:0xa000
# this time it sets them as intended.
# If the address to be assigned is given first, which I think everyone
# pretty much does:
myadm@mycomp:~$ env LANG=en_US.UTF-8 sudo ifconfig eth0:1 down
myadm@mycomp:~$ env LANG=en_US.UTF-8 sudo ifconfig eth0:1
10.19.201.198 netmask 255.255.255.224 broadcast 10.19.201.223
myadm@mycomp:~$ env LANG=en_US.UTF-8 sudo ifconfig eth0:1
eth0:1 Link encap:Ethernet HWaddr 53:bc:81:02:21:bb
inet addr:10.19.201.198 Bcast:10.19.201.223 Mask:255.255.255.224
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:42 Base address:0xa000
# it seems to see the address first and set things as intended in one pass.
---------------------------------
Which is confusing to my middle-aged brain. So I could suggest editing
the man page, something along the lines of the following
---------------------------------
SYNOPSIS
ifconfig [-v] [-a] [-s] [interface]
{change}
ifconfig [-v] interface [aftype] options | address ...
{change-to}
ifconfig [-v] interface [aftype] [ display-options ] [ address
] [ other-options ... ]
{end change}
DESCRIPTION
Ifconfig is used to configure the kernel-resident network interfaces.
It is used at boot time to set up interfaces as necessary. After
that, it is usually only needed when debugging or when system tuning
is needed.
If no arguments are given, ifconfig displays the status of the
currently active interfaces. If a single interface argument is given,
it displays the status of the given interface only; if a
single -a argument is given, it displays the status of all interfaces,
even those that are down. Otherwise, it configures an interface.
{move the interface paragraph here:}
interface
The name of the interface. This is usually a driver name followed by
a unit number, for example eth0 for the first Ethernet interface.
If your kernel supports alias interfaces, you can specify them with
eth0:0 for the first alias of eth0. You can use them to assign a second
address. To delete an alias interface use ifconfig eth0:0 down.
Note: for every scope (i.e. same net with address/netmask combina-
tion) all aliases are deleted, if you delete the first (primary).
{end move}
Address Families {insert}(aftype){end-insert}
If the first argument after the interface name is recognized as the
name of a supported address family, that address family is
used for decoding and displaying all protocol addresses. Currently
supported address families include inet (TCP/IP, default),
inet6 (IPv6), ax25 (AMPR Packet Radio), ddp (Appletalk Phase 2),
ipx (Novell IPX) and netrom (AMPR Packet radio).
{insert}DISPLAY{end-insert} OPTIONS
-a display all interfaces which are currently available,
even if down
-s display a short list (like netstat -i)
-v be more verbose for some error conditions
{move the address paragraph here:}
address
The IP address to be assigned to this interface.
{end move}
{insert}OTHER OPTIONS{end-insert}
up This flag causes the interface to be activated. It is
implicitly specified if an address is assigned to the
interface.
down This flag causes the driver for this interface to be shut
down.
{...}
netmask addr
Set the IP network mask for this interface. This value
defaults to the usual class A, B or C network mask (as
derived from the interface IP address), but it can be
set to any value.
{...}
[-]broadcast [addr]
If the address argument is given, set the protocol
broadcast address for this interface. Otherwise,
set (or clear) the IFF_BROADCAST flag for the interface.
{...}
NOTES
The parameters and options are processed in the order given, thus
if the address appears after the netmask and broadcast address,
the netmask and broadcast address may be re-interpreted and applied
to an existing address, or to the state of having no address
assigned, with unintended results which affect the security state
of the host.
{...}
---------------------------------
--
Joel Rees
randomly ranting:
http://reiisi.blogspot.com
Reply to: