Add support for connect/disconnect on Ethernet devices
authorMarcel Holtmann <marcel@holtmann.org>
Fri, 26 Jun 2009 10:32:28 +0000 (12:32 +0200)
committerMarcel Holtmann <marcel@holtmann.org>
Fri, 26 Jun 2009 10:32:28 +0000 (12:32 +0200)
plugins/ethernet.c

index 3013271..2851bf5 100644 (file)
@@ -129,6 +129,34 @@ static int ethernet_disable(struct connman_device *device)
        return connman_inet_ifdown(ethernet->index);
 }
 
+static int ethernet_connect(struct connman_device *device)
+{
+       struct ethernet_data *ethernet = connman_device_get_data(device);
+
+       DBG("device %p", device);
+
+       if (!(ethernet->flags & IFF_LOWER_UP))
+               return -ENOTCONN;
+
+       connman_device_set_carrier(device, TRUE);
+
+       return 0;
+}
+
+static int ethernet_disconnect(struct connman_device *device)
+{
+       struct ethernet_data *ethernet = connman_device_get_data(device);
+
+       DBG("device %p", device);
+
+       if (!(ethernet->flags & IFF_LOWER_UP))
+               return -ENOTCONN;
+
+       connman_device_set_carrier(device, FALSE);
+
+       return 0;
+}
+
 static struct connman_device_driver ethernet_driver = {
        .name           = "ethernet",
        .type           = CONNMAN_DEVICE_TYPE_ETHERNET,
@@ -136,6 +164,8 @@ static struct connman_device_driver ethernet_driver = {
        .remove         = ethernet_remove,
        .enable         = ethernet_enable,
        .disable        = ethernet_disable,
+       .connect        = ethernet_connect,
+       .disconnect     = ethernet_disconnect,
 };
 
 static int ethernet_init(void)