#550014 ifupdown: /etc/init.d/networking should support allow-hotplug

Package:
ifupdown
Source:
ifupdown
Description:
high level tools to configure network interfaces
Submitter:
Vincent Lefevre
Date:
2010-07-21 21:42:03 UTC
Severity:
normal
#550014#5
Date:
2009-10-07 00:31:05 UTC
From:
To:
If, in /etc/network/interfaces, one has "allow-hotplug eth0", the
eth0 interface is not brought up by "/etc/init.d/networking start"
even though the link is detected:

# ethtool eth0
Settings for eth0:
	Supported ports: [ TP ]
	Supported link modes:   10baseT/Half 10baseT/Full
	                        100baseT/Half 100baseT/Full
	                        1000baseT/Full
	Supports auto-negotiation: Yes
	Advertised link modes:  10baseT/Half 10baseT/Full
	                        100baseT/Half 100baseT/Full
	                        1000baseT/Full
	Advertised pause frame use: No
	Advertised auto-negotiation: Yes
	Link partner advertised link modes:  Not reported
	Link partner advertised pause frame use: No
	Link partner advertised auto-negotiation: No
	Speed: 100Mb/s
	Duplex: Full
	Port: Twisted Pair
	PHYAD: 2
	Transceiver: internal
	Auto-negotiation: on
	Supports Wake-on: pumbag
	Wake-on: g
	Current message level: 0x00000001 (1)
	Link detected: yes

FYI, here's the /etc/network/interfaces file:

auto lo
allow-hotplug eth0

iface lo inet loopback

mapping eth0
  script guessnet-wrapper
  map default: none
  map debug: true
  map timeout: 2

iface none inet dhcp

iface home inet static
  address 192.168.0.8
  netmask 255.255.255.0
  broadcast 192.168.0.255
  gateway 192.168.0.1
  test peer address 192.168.0.1 mac 00:00:c5:b4:98:74

#550014#10
Date:
2009-10-07 02:10:36 UTC
From:
To:
[...]

Well, it is not clear whether an additional package is needed.
If this is the case, interfaces(5) should make that clear, and
perhaps a package should be added to "Suggests:" (probably
something like ifplugd, except that it doesn't work at boot
time, but that's a bug, in fact several bugs).

#550014#15
Date:
2009-12-07 12:40:13 UTC
From:
To:
reassign 550014 netbase
thanks

Actually, since this is about /etc/init.d/networking (which is
responsible of setting up the network through ifup), I should have
reported the bug against netbase, but this isn't really clear...

I think that the user expects that interfaces with allow-hotplug
in /etc/network/interfaces be brought up when they are physically
available. Either /etc/init.d/networking should take care of that
by executing "ifup --allow=hotplug ..." as the interfaces(5) says:

  Lines beginning with "allow-" are used to  identify  interfaces  that
  should be brought up automatically by various subsystems. This may be
  done using a command such as "ifup --allow=hotplug eth0 eth1",  which
  will only bring up eth0 or eth1 if it is listed in an "allow-hotplug"
  line. Note that "allow-auto" and "auto" are synonyms.

(but according to bug 550240, which is about a similar problem, it
won't) or netbase should at least suggest a package that handles
allow-hotplug; in theory it could be ifplugd, but it doesn't work
as expected at boot time (bugs 204499, 407349, 432612 and 550019).

#550014#24
Date:
2009-12-07 18:28:36 UTC
From:
To:
reassign 550014 ifupdown
thanks
Thank you for your investigation. I considered using --allow=hotplug but
in the end decided that it would be both complex (the script would need
to find out which interfaces are actually up) and not really correct (an
hotplug-aware interface could have been shutdown manually or the link
could be temporarily down, etc).
Maybe a possible solution would be to take note of which interfaces are
up before shutting them down, but it would require knowledge of
implementation details of ifupdown so I am leaving this for its
maintainer when he will finally move the init script to his own package.

#550014#31
Date:
2010-07-21 21:27:22 UTC
From:
To:
Hello.

This bug is particularly dangerous on remote administration
scenarios, where the operator will, unexpectedly, get locked
out of the box, requiring physical access to the server.

It is expected that "/etc/init.d/networking restart" would
actually start again all those interfaces that were already
up, if they are available.

If you reconfigure an interface to add an IP alias, interfaces
will be shut down but will not be brought up again.