Web lists-archives.com

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