summaryrefslogtreecommitdiff
path: root/src/detect.c
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2009-04-23 14:49:12 +0100
committerMarcel Holtmann <marcel@holtmann.org>2009-04-23 14:49:12 +0100
commit6d6df9a7a4c1dfb794830c08629a9f89a1dea68c (patch)
tree1f091016635b0173554088c0cd1e2096cccf7ef6 /src/detect.c
parent0dd4cfa689fa50f12d954fd8e5698d66c1e115a6 (diff)
downloadconnman-6d6df9a7a4c1dfb794830c08629a9f89a1dea68c.tar.gz
connman-6d6df9a7a4c1dfb794830c08629a9f89a1dea68c.tar.bz2
connman-6d6df9a7a4c1dfb794830c08629a9f89a1dea68c.zip
Add extra unique identifier to service object path
Diffstat (limited to 'src/detect.c')
-rw-r--r--src/detect.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/detect.c b/src/detect.c
index 9f3895df..0dce3d3f 100644
--- a/src/detect.c
+++ b/src/detect.c
@@ -157,7 +157,7 @@ static char *index2ident(int index, const char *prefix)
return NULL;
eth = (void *) &ifr.ifr_hwaddr.sa_data;
- snprintf(str, len, "%s%02X_%02X_%02X_%02X_%02X_%02X",
+ snprintf(str, len, "%s%02x%02x%02x%02x%02x%02x",
prefix ? prefix : "",
eth->ether_addr_octet[0],
eth->ether_addr_octet[1],
@@ -175,7 +175,7 @@ static void detect_newlink(unsigned short type, int index,
enum connman_device_type devtype = CONNMAN_DEVICE_TYPE_UNKNOWN;
enum connman_device_mode mode = CONNMAN_DEVICE_MODE_UNKNOWN;
struct connman_device *device;
- gchar *addr, *name, *devname;
+ char *addr, *name, *devname, *ident;
DBG("type %d index %d", type, index);
@@ -264,19 +264,24 @@ static void detect_newlink(unsigned short type, int index,
case CONNMAN_DEVICE_TYPE_NOVATEL:
case CONNMAN_DEVICE_TYPE_GPS:
mode = CONNMAN_DEVICE_MODE_UNKNOWN;
+ ident = NULL;
break;
case CONNMAN_DEVICE_TYPE_ETHERNET:
mode = CONNMAN_DEVICE_MODE_TRANSPORT_IP;
+ ident = index2ident(index, NULL);
break;
case CONNMAN_DEVICE_TYPE_WIFI:
case CONNMAN_DEVICE_TYPE_WIMAX:
mode = CONNMAN_DEVICE_MODE_NETWORK_SINGLE;
+ ident = index2ident(index, NULL);
break;
case CONNMAN_DEVICE_TYPE_BLUETOOTH:
mode = CONNMAN_DEVICE_MODE_NETWORK_MULTIPLE;
+ ident = NULL;
break;
case CONNMAN_DEVICE_TYPE_HSO:
mode = CONNMAN_DEVICE_MODE_NETWORK_SINGLE;
+ ident = NULL;
connman_device_set_policy(device, CONNMAN_DEVICE_POLICY_MANUAL);
break;
}
@@ -286,6 +291,11 @@ static void detect_newlink(unsigned short type, int index,
connman_device_set_index(device, index);
connman_device_set_interface(device, devname);
+ if (ident != NULL) {
+ connman_device_set_ident(device, ident);
+ g_free(ident);
+ }
+
connman_device_set_string(device, "Address", addr);
g_free(devname);