[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <AAE2573A-3C23-4C61-89E1-3A6F31D7B23E@holtmann.org>
Date: Tue, 25 Nov 2008 04:51:53 +0100
From: Marcel Holtmann <marcel@...tmann.org>
To: Stephen Hemminger <shemminger@...tta.com>
Cc: Ben Hutchings <bhutchings@...arflare.com>,
Kay Sievers <kay.sievers@...y.org>,
David Miller <davem@...emloft.net>,
linux-hotplug@...r.kernel.org, netdev@...r.kernel.org
Subject: Re: [PATCH] netdev: generate kobject uevent on network state transitions
Hi Stephen,
> It is easier for some applications to deal with text based interfaces
> like uevent, rather than using netlink to listen for events.
>
> Note, this does not deal with network namespaces but that is a generic
> problem that already exists with kobjects (see rename events).
>
> Signed-off-by: Stephen Hemminger <shemminger@...tta.com>
>
> ---
> net/core/Makefile | 1
> net/core/uevent.c | 61 ++++++++++++++++++++++++++++++++++++++++++++
> ++++++++++
> 2 files changed, 62 insertions(+)
>
> --- a/net/core/Makefile 2008-11-24 12:07:18.000000000 -0800
> +++ b/net/core/Makefile 2008-11-24 12:07:22.000000000 -0800
> @@ -17,3 +17,4 @@ obj-$(CONFIG_NET_PKTGEN) += pktgen.o
> obj-$(CONFIG_NETPOLL) += netpoll.o
> obj-$(CONFIG_NET_DMA) += user_dma.o
> obj-$(CONFIG_FIB_RULES) += fib_rules.o
> +obj-$(CONFIG_HOTPLUG) += uevent.o
> --- /dev/null 1970-01-01 00:00:00.000000000 +0000
> +++ b/net/core/uevent.c 2008-11-24 12:11:46.000000000 -0800
> @@ -0,0 +1,55 @@
> +/*
> + * Linux network device event notification
> + *
> + * Author:
> + * Stephen Hemminger <shemminger@...tta.com>
> + */
> +
> +#include <linux/kernel.h>
> +#include <linux/netdevice.h>
> +#include <linux/kobject.h>
> +#include <linux/notifier.h>
> +
> +/*
> + * Generate uevent in response to network device state changes.
> + * Other events are already handled by device subsystem.
> + */
> +static int netdev_event(struct notifier_block *this, unsigned long
> event, void *ptr)
> +{
> + struct net_device *netdev = ptr;
> +
> + switch (event) {
> + case NETDEV_UP:
> + kobject_uevent(&netdev->dev.kobj, KOBJ_ONLINE);
> + break;
> +
> + case NETDEV_DOWN:
> + kobject_uevent(&netdev->dev.kobj, KOBJ_OFFLINE);
> + break;
> +
> + case NETDEV_CHANGE: {
> + char str[64] = "DEVSTATE=UP";
> + char *envp[2] = { str, NULL };
> +
> + if (netif_oper_up(netdev))
> + strcat(str, ",RUNNING");
> + if (netif_carrier_ok(netdev))
> + strcat(str, ",LOWER_UP");
> + if (netif_dormant(netdev))
> + strcat(str, ",DORMANT");
> + kobject_uevent_env(&netdev->dev.kobj, KOBJ_CHANGE, envp);
> + break;
do we wanna copy just what ifconfig shows or do we might be a more
intelligent and have separate variables like RUNNING=1 etc.?
Regards
Marcel
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists