#include <connman/plugin.h>
#include <connman/driver.h>
+#include <connman/rtnl.h>
#include <connman/log.h>
struct ethernet_data {
int index;
- short flags;
+ unsigned flags;
};
-static GStaticMutex ethernet_mutex = G_STATIC_MUTEX_INIT;
static GSList *ethernet_list = NULL;
-static void ethernet_link_flags(int index, short flags)
+static void ethernet_newlink(unsigned short type, int index,
+ unsigned flags, unsigned change)
{
GSList *list;
- g_static_mutex_lock(ðernet_mutex);
+ DBG("index %d flags %ld change %ld", index, flags, change);
for (list = ethernet_list; list; list = list->next) {
struct connman_element *element = list->data;
connman_element_unregister_children(element);
}
}
-
- g_static_mutex_unlock(ðernet_mutex);
}
static struct connman_rtnl ethernet_rtnl = {
.name = "ethernet",
- .link_flags = ethernet_link_flags,
+ .newlink = ethernet_newlink,
};
static int iface_up(struct ethernet_data *ethernet)
if (ethernet == NULL)
return -ENOMEM;
- g_static_mutex_lock(ðernet_mutex);
ethernet_list = g_slist_append(ethernet_list, element);
- g_static_mutex_unlock(ðernet_mutex);
connman_element_set_data(element, ethernet);
iface_down(ethernet);
- g_static_mutex_lock(ðernet_mutex);
ethernet_list = g_slist_remove(ethernet_list, element);
- g_static_mutex_unlock(ðernet_mutex);
g_free(ethernet);
}
err = connman_driver_register(ðernet_driver);
if (err < 0) {
- connman_rtnl_unregister(ðernet_rtnl):
+ connman_rtnl_unregister(ðernet_rtnl);
return err;
}