diff options
author | Marcel Holtmann <marcel@holtmann.org> | 2009-05-21 12:54:52 -0700 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2009-05-21 12:54:52 -0700 |
commit | 5ff3fa9a377546180d6b0b6acb59d3a278ca1896 (patch) | |
tree | 9c43476b448adb0dfd6ccb843d89842b8ac25d24 /plugins | |
parent | a122608612253a3195c6098ce477ddb4c243c9e7 (diff) | |
download | connman-5ff3fa9a377546180d6b0b6acb59d3a278ca1896.tar.gz connman-5ff3fa9a377546180d6b0b6acb59d3a278ca1896.tar.bz2 connman-5ff3fa9a377546180d6b0b6acb59d3a278ca1896.zip |
Add helper for setting network address and use it
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/supplicant.c | 25 |
1 files changed, 11 insertions, 14 deletions
diff --git a/plugins/supplicant.c b/plugins/supplicant.c index 6df89d6f..cb84cc5a 100644 --- a/plugins/supplicant.c +++ b/plugins/supplicant.c @@ -150,7 +150,8 @@ enum supplicant_state { struct supplicant_result { char *path; char *name; - char *addr; + unsigned char *addr; + unsigned int addr_len; unsigned char *ssid; unsigned int ssid_len; dbus_uint16_t capabilities; @@ -892,25 +893,20 @@ static void extract_addr(DBusMessageIter *value, if (addr_len != 6) return; - eth = (void *) addr; - - result->addr = g_try_malloc0(18); + result->addr = g_try_malloc(addr_len); if (result->addr == NULL) return; - snprintf(result->addr, 18, "%02X:%02X:%02X:%02X:%02X:%02X", - eth->ether_addr_octet[0], - eth->ether_addr_octet[1], - eth->ether_addr_octet[2], - eth->ether_addr_octet[3], - eth->ether_addr_octet[4], - eth->ether_addr_octet[5]); + memcpy(result->addr, addr, addr_len); + result->addr_len = addr_len; - result->path = g_try_malloc0(18); + result->path = g_try_malloc0(13); if (result->path == NULL) return; - snprintf(result->path, 18, "%02x%02x%02x%02x%02x%02x", + eth = (void *) addr; + + snprintf(result->path, 13, "%02x%02x%02x%02x%02x%02x", eth->ether_addr_octet[0], eth->ether_addr_octet[1], eth->ether_addr_octet[2], @@ -1167,7 +1163,8 @@ static void properties_reply(DBusPendingCall *call, void *user_data) connman_network_set_protocol(network, CONNMAN_NETWORK_PROTOCOL_IP); - connman_network_set_string(network, "Address", result.addr); + connman_network_set_address(network, result.addr, + result.addr_len); if (connman_device_add_network(task->device, network) < 0) { connman_network_unref(network); |