Applied, thanks!

On Thu, Mar 29, 2018 at 2:12 PM, Stefan Agner <ste...@agner.ch> wrote:
> When using ifplugd on a RNDIS interface with monitor mode, using
> SIOCSIFFLAGS seems to fail with EADDRNOTAVAIL. Treat it the same
> as if iface disappeared again.
>
> Signed-off-by: Stefan Agner <ste...@agner.ch>
> ---
> This has been observed on a Tegra TK1 using Linux 4.14. There seem
> to be a race when the kernel is creating the device:
>   ifplugd(usb0): started: BusyBox v1.24.1 (2018-03-27 09:47:48 CEST)
>   ifplugd(usb0): interface doesn't exist, waiting
>   ifplugd(usb0): interface appeared
>   ifplugd(usb0): upping interface
>   ifplugd(usb0): setting interface flags failed: Cannot assign requested 
> address
>   <exit>
>
> With this patch ifplugd is successful in upping the device the second
> time around:
>
>   ifplugd(usb0): upping interface
>   ifplugd(usb0): using SIOCETHTOOL detection mode
>   ifplugd(usb0): interface appeared
>   ifplugd(usb0): upping interface
>   ifplugd(usb0): setting interface flags failed: Cannot assign requested 
> address
>   ifplugd(usb0): interface appeared
>   ifplugd(usb0): upping interface
>   ifplugd(usb0): using SIOCETHTOOL detection mode
>   ifplugd(usb0): link is up
>   ifplugd(usb0): executing '/etc/ifplugd/ifplugd.usb.action usb0 up'
>   ifplugd up
>   ifplugd(usb0): exit code: 0
>
> (BusyBox v1.24.1 with commit b11be131b7 ("ifplugd: if SIOCSIFFLAGS
> fails with ENODEV, don't die") applied.
>
> --
> Stefan
>
>  networking/ifplugd.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/networking/ifplugd.c b/networking/ifplugd.c
> index 9bc1a075f..5059eaf73 100644
> --- a/networking/ifplugd.c
> +++ b/networking/ifplugd.c
> @@ -367,7 +367,7 @@ static void up_iface(void)
>                 /* Let user know we mess up with interface */
>                 bb_error_msg("upping interface");
>                 if (network_ioctl(SIOCSIFFLAGS, &ifrequest, "setting 
> interface flags") < 0) {
> -                       if (errno != ENODEV)
> +                       if (errno != ENODEV && errno != EADDRNOTAVAIL)
>                                 xfunc_die();
>                         G.iface_exists = 0;
>                         return;
> --
> 2.16.2
>
> _______________________________________________
> busybox mailing list
> busybox@busybox.net
> http://lists.busybox.net/mailman/listinfo/busybox
_______________________________________________
busybox mailing list
busybox@busybox.net
http://lists.busybox.net/mailman/listinfo/busybox

Reply via email to