[LEDE-DEV] [PATCH netifd] system-linux: add support for hotplug event 'move'
Hans Dedecker
dedeckeh at gmail.com
Fri Oct 6 04:53:54 PDT 2017
On Thu, Sep 28, 2017 at 10:32 AM, Martin Schiller <ms at dev.tdt.de> wrote:
> If you rename a network interface, there is a move uevent
> invoked instead of remove/add.
>
> This patch adds support for this kind of event.
>
> Signed-off-by: Martin Schiller <ms at dev.tdt.de>
Acked-by: Hans Dedecker <dedeckeh at gmail.com>
> ---
> system-linux.c | 31 ++++++++++++++++++++++++++++---
> 1 file changed, 28 insertions(+), 3 deletions(-)
>
> diff --git a/system-linux.c b/system-linux.c
> index 6d97a02..e2017d0 100644
> --- a/system-linux.c
> +++ b/system-linux.c
> @@ -543,16 +543,20 @@ out:
> static void
> handle_hotplug_msg(char *data, int size)
> {
> - const char *subsystem = NULL, *interface = NULL;
> + const char *subsystem = NULL, *interface = NULL, *interface_old = NULL;
> char *cur, *end, *sep;
> struct device *dev;
> int skip;
> - bool add;
> + bool add, move = false;
>
> if (!strncmp(data, "add@", 4))
> add = true;
> else if (!strncmp(data, "remove@", 7))
> add = false;
> + else if (!strncmp(data, "move@", 5)) {
> + add = true;
> + move = true;
> + }
> else
> return;
>
> @@ -574,11 +578,32 @@ handle_hotplug_msg(char *data, int size)
> if (strcmp(subsystem, "net") != 0)
> return;
> }
> - if (subsystem && interface)
> + else if (!strcmp(cur, "DEVPATH_OLD")) {
> + interface_old = strrchr(sep + 1, '/');
> + if (interface_old)
> + interface_old++;
> + }
> + }
> +
> + if (subsystem && interface) {
> + if (move && interface_old)
> + goto move;
> + else
> goto found;
> }
> +
> return;
>
> +move:
> + dev = device_find(interface_old);
> + if (!dev)
> + goto found;
> +
> + if (dev->type != &simple_device_type)
> + goto found;
> +
> + device_set_present(dev, false);
> +
> found:
> dev = device_find(interface);
> if (!dev)
> --
> 2.11.0
>
>
> _______________________________________________
> Lede-dev mailing list
> Lede-dev at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/lede-dev
More information about the Lede-dev
mailing list