Allow transport definition for device mode
[connman] / src / detect.c
index 781b8fa..57ea83e 100644 (file)
@@ -130,6 +130,7 @@ static void detect_newlink(unsigned short type, int index,
                                        unsigned flags, unsigned change)
 {
        enum connman_device_type devtype = CONNMAN_DEVICE_TYPE_UNKNOWN;
+       enum connman_device_mode mode;
        struct connman_device *device;
        gchar *name, *devname;
 
@@ -198,15 +199,28 @@ static void detect_newlink(unsigned short type, int index,
        }
 
        switch (devtype) {
+       case CONNMAN_DEVICE_TYPE_UNKNOWN:
+       case CONNMAN_DEVICE_TYPE_VENDOR:
+               mode = CONNMAN_DEVICE_MODE_UNKNOWN;
+               break;
+       case CONNMAN_DEVICE_TYPE_ETHERNET:
+               mode = CONNMAN_DEVICE_MODE_TRANSPORT_IP;
+               break;
+       case CONNMAN_DEVICE_TYPE_WIFI:
+       case CONNMAN_DEVICE_TYPE_WIMAX:
+               mode = CONNMAN_DEVICE_MODE_NETWORK_SINGLE;
+               break;
+       case CONNMAN_DEVICE_TYPE_BLUETOOTH:
+               mode = CONNMAN_DEVICE_MODE_NETWORK_MULTIPLE;
+               break;
        case CONNMAN_DEVICE_TYPE_HSO:
+               mode = CONNMAN_DEVICE_MODE_NETWORK_SINGLE;
                connman_device_set_policy(device, CONNMAN_DEVICE_POLICY_MANUAL);
-               connman_device_set_mode(device,
-                                       CONNMAN_DEVICE_MODE_SINGLE_NETWORK);
-               break;
-       default:
                break;
        }
 
+       connman_device_set_mode(device, mode);
+
        connman_device_set_index(device, index);
        connman_device_set_interface(device, devname);