diff options
author | Marcel Holtmann <marcel@holtmann.org> | 2008-08-10 11:58:32 +0200 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2008-08-10 11:58:32 +0200 |
commit | d3073cdb94002354fe6e37e39557402ddfb30561 (patch) | |
tree | 3d50d531620fad14b262f0891937c5a2336b3c86 /plugins/ethernet.c | |
parent | 746e33bd6337b3abb7e2823f3b6afc83bf29b549 (diff) | |
download | connman-d3073cdb94002354fe6e37e39557402ddfb30561.tar.gz connman-d3073cdb94002354fe6e37e39557402ddfb30561.tar.bz2 connman-d3073cdb94002354fe6e37e39557402ddfb30561.zip |
Let the core handle the children unregister task
Diffstat (limited to 'plugins/ethernet.c')
-rw-r--r-- | plugins/ethernet.c | 40 |
1 files changed, 1 insertions, 39 deletions
diff --git a/plugins/ethernet.c b/plugins/ethernet.c index b9089409..0f248bca 100644 --- a/plugins/ethernet.c +++ b/plugins/ethernet.c @@ -38,9 +38,6 @@ static GStaticMutex ethernet_mutex = G_STATIC_MUTEX_INIT; static GSList *ethernet_list = NULL; -static GStaticMutex element_mutex = G_STATIC_MUTEX_INIT; -static GSList *element_list = NULL; - static void create_element(struct connman_element *parent, enum connman_element_type type) { @@ -54,42 +51,9 @@ static void create_element(struct connman_element *parent, element->netdev.index = parent->netdev.index; element->netdev.name = g_strdup(parent->netdev.name); - g_static_mutex_lock(&element_mutex); - element_list = g_slist_append(element_list, element); - g_static_mutex_unlock(&element_mutex); - connman_element_register(element, parent); } -static void remove_elements(struct connman_element *parent) -{ - GSList *list = element_list; - - DBG("parent %p name %s", parent, parent->name); - - g_static_mutex_lock(&element_mutex); - - while (list) { - GSList *next = list->next; - struct connman_element *element = list->data; - - if (element->netdev.index != parent->netdev.index) { - list = next; - continue; - } - - element_list = g_slist_delete_link(element_list, list); - - connman_element_unregister(element); - - connman_element_unref(element); - - list = next; - } - - g_static_mutex_unlock(&element_mutex); -} - static void rtnl_link(struct nlmsghdr *hdr, const char *type) { GSList *list; @@ -127,7 +91,7 @@ static void rtnl_link(struct nlmsghdr *hdr, const char *type) } else { DBG("carrier off"); - remove_elements(element); + connman_element_unregister_children(element); } } @@ -327,8 +291,6 @@ static void ethernet_remove(struct connman_element *element) iface_down(element); - remove_elements(element); - g_static_mutex_lock(ðernet_mutex); ethernet_list = g_slist_remove(ethernet_list, element); g_static_mutex_unlock(ðernet_mutex); |