summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2009-01-01 18:52:16 +0100
committerMarcel Holtmann <marcel@holtmann.org>2009-01-01 18:52:16 +0100
commit3909f166fb41fba2521bf84ed5fc87d367c163b8 (patch)
tree80fa5f4c0bc5057805f4bf209447ca34b04af7ae
parent5be6dc3d4b22d736bb47e6fd6d4d5c8c11f70364 (diff)
downloadconnman-3909f166fb41fba2521bf84ed5fc87d367c163b8.tar.gz
connman-3909f166fb41fba2521bf84ed5fc87d367c163b8.tar.bz2
connman-3909f166fb41fba2521bf84ed5fc87d367c163b8.zip
Allow transport definition for device mode
-rw-r--r--include/device.h7
-rw-r--r--plugins/bluetooth.c2
-rw-r--r--plugins/wifi.c2
-rw-r--r--src/detect.c22
-rw-r--r--src/device.c50
5 files changed, 64 insertions, 19 deletions
diff --git a/include/device.h b/include/device.h
index c9f6d767..b434db54 100644
--- a/include/device.h
+++ b/include/device.h
@@ -46,9 +46,10 @@ enum connman_device_type {
};
enum connman_device_mode {
- CONNMAN_DEVICE_MODE_NO_NETWORK = 0,
- CONNMAN_DEVICE_MODE_SINGLE_NETWORK = 1,
- CONNMAN_DEVICE_MODE_MULTIPLE_NETWORKS = 2,
+ CONNMAN_DEVICE_MODE_UNKNOWN = 0,
+ CONNMAN_DEVICE_MODE_NETWORK_SINGLE = 1,
+ CONNMAN_DEVICE_MODE_NETWORK_MULTIPLE = 2,
+ CONNMAN_DEVICE_MODE_TRANSPORT_IP = 3,
};
enum connman_device_policy {
diff --git a/plugins/bluetooth.c b/plugins/bluetooth.c
index 8f90a98f..ba5c3a29 100644
--- a/plugins/bluetooth.c
+++ b/plugins/bluetooth.c
@@ -627,7 +627,7 @@ static void adapter_properties(DBusConnection *connection, const char *path,
connman_device_set_interface(adapter, node);
connman_device_set_policy(adapter, CONNMAN_DEVICE_POLICY_MANUAL);
- connman_device_set_mode(adapter, CONNMAN_DEVICE_MODE_MULTIPLE_NETWORKS);
+ connman_device_set_mode(adapter, CONNMAN_DEVICE_MODE_NETWORK_MULTIPLE);
if (connman_device_register(adapter) < 0) {
connman_device_unref(adapter);
diff --git a/plugins/wifi.c b/plugins/wifi.c
index 10541f28..e07901c8 100644
--- a/plugins/wifi.c
+++ b/plugins/wifi.c
@@ -568,7 +568,7 @@ static void wifi_newlink(unsigned short type, int index,
g_free(devname);
g_free(name);
- connman_device_set_mode(device, CONNMAN_DEVICE_MODE_SINGLE_NETWORK);
+ connman_device_set_mode(device, CONNMAN_DEVICE_MODE_NETWORK_SINGLE);
if (connman_device_register(device) < 0) {
connman_device_unregister(device);
diff --git a/src/detect.c b/src/detect.c
index 781b8fa9..57ea83ee 100644
--- a/src/detect.c
+++ b/src/detect.c
@@ -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);
diff --git a/src/device.c b/src/device.c
index 84be26ea..d5e836b7 100644
--- a/src/device.c
+++ b/src/device.c
@@ -48,6 +48,9 @@ struct connman_device {
static const char *type2description(enum connman_device_type type)
{
switch (type) {
+ case CONNMAN_DEVICE_TYPE_UNKNOWN:
+ case CONNMAN_DEVICE_TYPE_VENDOR:
+ break;
case CONNMAN_DEVICE_TYPE_ETHERNET:
return "Ethernet";
case CONNMAN_DEVICE_TYPE_WIFI:
@@ -58,14 +61,17 @@ static const char *type2description(enum connman_device_type type)
return "Bluetooth";
case CONNMAN_DEVICE_TYPE_HSO:
return "Cellular";
- default:
- return NULL;
}
+
+ return NULL;
}
static const char *type2string(enum connman_device_type type)
{
switch (type) {
+ case CONNMAN_DEVICE_TYPE_UNKNOWN:
+ case CONNMAN_DEVICE_TYPE_VENDOR:
+ break;
case CONNMAN_DEVICE_TYPE_ETHERNET:
return "ethernet";
case CONNMAN_DEVICE_TYPE_WIFI:
@@ -76,9 +82,9 @@ static const char *type2string(enum connman_device_type type)
return "bluetooth";
case CONNMAN_DEVICE_TYPE_HSO:
return "cellular";
- default:
- return NULL;
}
+
+ return NULL;
}
static const char *policy2string(enum connman_device_policy policy)
@@ -264,11 +270,17 @@ static DBusMessage *get_properties(DBusConnection *conn,
connman_dbus_dict_append_variant(&dict, "Scanning",
DBUS_TYPE_BOOLEAN, &device->scanning);
- if (device->mode != CONNMAN_DEVICE_MODE_NO_NETWORK) {
+ switch (device->mode) {
+ case CONNMAN_DEVICE_MODE_UNKNOWN:
+ case CONNMAN_DEVICE_MODE_TRANSPORT_IP:
+ break;
+ case CONNMAN_DEVICE_MODE_NETWORK_SINGLE:
+ case CONNMAN_DEVICE_MODE_NETWORK_MULTIPLE:
dbus_message_iter_open_container(&dict, DBUS_TYPE_DICT_ENTRY,
NULL, &entry);
append_networks(device, &entry);
dbus_message_iter_close_container(&dict, &entry);
+ break;
}
dbus_message_iter_close_container(&array, &dict);
@@ -357,8 +369,14 @@ static DBusMessage *propose_scan(DBusConnection *conn,
DBG("conn %p", conn);
- if (device->mode == CONNMAN_DEVICE_MODE_NO_NETWORK)
+ switch (device->mode) {
+ case CONNMAN_DEVICE_MODE_UNKNOWN:
+ case CONNMAN_DEVICE_MODE_TRANSPORT_IP:
return __connman_error_not_supported(msg);
+ case CONNMAN_DEVICE_MODE_NETWORK_SINGLE:
+ case CONNMAN_DEVICE_MODE_NETWORK_MULTIPLE:
+ break;
+ }
if (!device->driver || !device->driver->scan)
return __connman_error_not_supported(msg);
@@ -557,8 +575,8 @@ struct connman_device *connman_device_create(const char *node,
device->element.device = device;
device->element.destruct = device_destruct;
- device->type = type;
- device->mode = CONNMAN_DEVICE_MODE_NO_NETWORK;
+ device->type = type;
+ device->mode = CONNMAN_DEVICE_MODE_UNKNOWN;
device->policy = CONNMAN_DEVICE_POLICY_AUTO;
device->networks = g_hash_table_new_full(g_str_hash, g_str_equal,
@@ -748,8 +766,14 @@ int connman_device_set_carrier(struct connman_device *device,
{
DBG("driver %p carrier %d", device, carrier);
- if (device->mode != CONNMAN_DEVICE_MODE_NO_NETWORK)
+ switch (device->mode) {
+ case CONNMAN_DEVICE_MODE_UNKNOWN:
+ case CONNMAN_DEVICE_MODE_NETWORK_SINGLE:
+ case CONNMAN_DEVICE_MODE_NETWORK_MULTIPLE:
return -EINVAL;
+ case CONNMAN_DEVICE_MODE_TRANSPORT_IP:
+ break;
+ }
if (device->carrier == carrier)
return -EALREADY;
@@ -833,8 +857,14 @@ int connman_device_add_network(struct connman_device *device,
DBG("device %p network %p", device, network);
- if (device->mode == CONNMAN_DEVICE_MODE_NO_NETWORK)
+ switch (device->mode) {
+ case CONNMAN_DEVICE_MODE_UNKNOWN:
+ case CONNMAN_DEVICE_MODE_TRANSPORT_IP:
return -EINVAL;
+ case CONNMAN_DEVICE_MODE_NETWORK_SINGLE:
+ case CONNMAN_DEVICE_MODE_NETWORK_MULTIPLE:
+ break;
+ }
__connman_network_set_device(network, device);