Le 19/12/2018 à 19:02, Pontus Goffe a écrit :
> On 2018-12-19 18:23, Didier Kryn wrote:
>>
>>     Seems it can only work for one user because now it doesn't work 
>> for me any more (~:
>
>
> I got your patch to work nicely but only if I did not use "auto ethx" 
> in /etc/network/interfaces.
> I use only "allow-hotplug ethx" and "iface ethx inet dhcp"
> //PG
>
Le 20/12/2018 à 01:03, Tom H a écrit :
> [ off-list ]
>
> Hi Didier
>
> I've been meaning to email you since Saturday because that's when I
> read your "/etc/init.d/networking" patch and it didn't make sense to
> me.
>
> --- networking~    2016-09-16 15:02:20.000000000 +0200
> +++ networking    2017-12-18 17:25:49.902781233 +0100
> @@ -112,7 +112,12 @@ ifup_hotplug () {
>                   done)
>           if [ -n "$ifaces" ]
>           then
> -        ifup $ifaces "$@" || true
> +        # link detection does not work unless we up the link
> +        ip link set "$iface" up || true
> +        if [ "$(cat /sys/class/net/$link/operstate)" = up ]
> +        then
> +            echo "$iface"
> +        fi
>           fi
>       fi
>   }
>
> I see two problems.
>
> 1) You use "$iface" but the rest of the script uses "$ifaces".
>
> 2) 'ip link set "$iface" up' brings "$iface" up but 'ifup $ifaces
> "$@"" configures "$ifaces" and brings it up.
>
> So I'm not surprised that your edit's not working for you.
>
> What is/was the bug with "ifup_hotplug"?
>
> If eth0's plugged in during boot and "allow-hotplug eth0" isn't
> bringing it up, you can add "allow-auto eth0", eth0'll be brought up
> by "ifup -a ...", and "ifup_hotplug ..." will print an "already
> configured" warning to the console. It'll only work around your
> "allow-hotplug" bug but it's a start.
     You are right. The patched line was not the right one. But I had a 
little thinking about it all...
     The use case is a laptop with one ethernet interface (say eth0) and 
one wifi interface (say wlan0), where only one of the network interfaces 
is used: eth0 when it is connected to the network, wlan0 otherwise. To 
manage the changes, you need netplug or ifplugd, which are able to 
detect when a cable is plugged into eth0 or removed, a thing the init 
script does not try to detect.
     There are two ways to tell the init script to bring up interfaces. 
If a network interface can be hotplugged, then the interfaces file needs 
the 'allow-hotplug' stanza, otherwise, the good old 'auto' stanza is 
fine. However allow-hotplug works fine in all cases, provided a 
hotplugger (udev/eudev/vdev/mdev) is installed. ifplugd doesn't need 
these stanzas.
     For what concerns eth0, I found that the simplest solution is to 
remove any auto or allow-hotplug concerning eth0. netplug/ifplugd will 
take care of  bringinig it up (and wlan0 down) if it detects a carrier. 
It is just an error to leave the possibility to the init script to bring 
eth0 up when it cannot know if it is connected.
     I would just suggest to restore the original initscript and 
configure the interfaces file according to the previous explanation. 
Here is my working example (note the absence of 'auto eth0' or 
'allow-hotplug eth0'):
auto lo iface lo inet loopback iface eth0 inet dhcp
auto wlan0 iface wlan0 inet manualwpa-roam 
/etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp
             Didier