From 25c030ef2e380c47eda9051b236554f4b25a7196 Mon Sep 17 00:00:00 2001 From: Dan Williams Date: Fri, 20 Feb 2009 09:32:29 -0500 Subject: [PATCH] core: use IFF_LOWER_UP instead of IFF_RUNNING for carrier (lp #332064) We really have wanted to use IFF_LOWER_UP since 2.6.17 for carrier status, since that's tied to netif_carrier_ok()/netif_carrier_on() in the kernel. See kernel commit b00055aacdb172c05067612278ba27265fcd05ce for the introduction of IFF_LOWER_UP. --- src/nm-netlink-monitor.c | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/nm-netlink-monitor.c b/src/nm-netlink-monitor.c index 5cd80748ef..34f873bbc0 100644 --- a/src/nm-netlink-monitor.c +++ b/src/nm-netlink-monitor.c @@ -32,7 +32,7 @@ #include #include #include -#include +#include #include #include #include @@ -206,14 +206,18 @@ netlink_object_message_handler (struct nl_object *obj, void *arg) link_obj = (struct rtnl_link *) obj; flags = rtnl_link_get_flags (link_obj); - if (flags & IFF_RUNNING) { - g_signal_emit (G_OBJECT (monitor), - signals[CARRIER_ON], - 0, rtnl_link_get_ifindex (link_obj)); + + /* IFF_LOWER_UP is the indicator of carrier status since kernel commit + * b00055aacdb172c05067612278ba27265fcd05ce in 2.6.17. + */ + if (flags & IFF_LOWER_UP) { + g_signal_emit (G_OBJECT (monitor), + signals[CARRIER_ON], + 0, rtnl_link_get_ifindex (link_obj)); } else { - g_signal_emit (G_OBJECT (monitor), - signals[CARRIER_OFF], - 0, rtnl_link_get_ifindex (link_obj)); + g_signal_emit (G_OBJECT (monitor), + signals[CARRIER_OFF], + 0, rtnl_link_get_ifindex (link_obj)); } out: