X-Git-Url: http://vcs.maemo.org/git/?a=blobdiff_plain;f=src%2Fnetwork.c;h=cf0586b87a47560f2a798ee5a83dbd52a8017412;hb=5ff3fa9a377546180d6b0b6acb59d3a278ca1896;hp=70f42897af7ef76ec8482a2d4fd8933cd1d2fbe2;hpb=a122608612253a3195c6098ce477ddb4c243c9e7;p=connman diff --git a/src/network.c b/src/network.c index 70f4289..cf0586b 100644 --- a/src/network.c +++ b/src/network.c @@ -23,6 +23,7 @@ #include #endif +#include #include #include @@ -861,6 +862,38 @@ int __connman_network_disconnect(struct connman_network *network) } /** + * connman_network_set_address: + * @network: network structure + * @address: binary address value + * @size: binary address length + * + * Set unique address value for network + */ +int connman_network_set_address(struct connman_network *network, + const void *address, unsigned int size) +{ + const unsigned char *addr_octet = address; + char *str; + + DBG("network %p size %d", network, size); + + if (size != 6) + return -EINVAL; + + str = g_strdup_printf("%02X:%02X:%02X:%02X:%02X:%02X", + addr_octet[0], addr_octet[1], addr_octet[2], + addr_octet[3], addr_octet[4], addr_octet[5]); + if (str == NULL) + return -ENOMEM; + + g_free(network->address); + network->address = str; + + return connman_element_set_string(&network->element, + "Address", network->address); +} + +/** * connman_network_set_name: * @network: network structure * @name: name value @@ -1052,6 +1085,9 @@ int connman_network_set_blob(struct connman_network *network, { DBG("network %p key %s size %d", network, key, size); + if (g_strcmp0(key, "Address") == 0) + return connman_network_set_address(network, data, size); + if (g_str_equal(key, "WiFi.SSID") == TRUE) { g_free(network->wifi.ssid); network->wifi.ssid = g_try_malloc(size);