Use separate enable/disable callbacks
authorMarcel Holtmann <marcel@holtmann.org>
Fri, 5 Dec 2008 21:41:48 +0000 (22:41 +0100)
committerMarcel Holtmann <marcel@holtmann.org>
Fri, 5 Dec 2008 21:41:48 +0000 (22:41 +0100)
plugins/ethernet.c

index d6861f8..bd2ddc2 100644 (file)
@@ -193,8 +193,6 @@ static int ethernet_probe(struct connman_element *element)
 
        ethernet->index = element->index;
 
-       iface_up(ethernet);
-
        connman_rtnl_send_getlink();
 
        return 0;
@@ -208,19 +206,41 @@ static void ethernet_remove(struct connman_element *element)
 
        connman_element_set_data(element, NULL);
 
-       iface_down(ethernet);
-
        ethernet_list = g_slist_remove(ethernet_list, element);
 
        g_free(ethernet);
 }
 
+static int ethernet_enable(struct connman_element *element)
+{
+       struct ethernet_data *ethernet = connman_element_get_data(element);
+
+       DBG("element %p name %s", element, element->name);
+
+       iface_up(ethernet);
+
+       return 0;
+}
+
+static int ethernet_disable(struct connman_element *element)
+{
+       struct ethernet_data *ethernet = connman_element_get_data(element);
+
+       DBG("element %p name %s", element, element->name);
+
+       iface_down(ethernet);
+
+       return 0;
+}
+
 static struct connman_driver ethernet_driver = {
        .name           = "ethernet",
        .type           = CONNMAN_ELEMENT_TYPE_DEVICE,
        .subtype        = CONNMAN_ELEMENT_SUBTYPE_ETHERNET,
        .probe          = ethernet_probe,
        .remove         = ethernet_remove,
+       .enable         = ethernet_enable,
+       .disable        = ethernet_disable,
 };
 
 static int ethernet_init(void)