diff options
Diffstat (limited to 'plugins/loopback.c')
-rwxr-xr-x | plugins/loopback.c | 84 |
1 files changed, 75 insertions, 9 deletions
diff --git a/plugins/loopback.c b/plugins/loopback.c index e113887d..cfb33a8e 100755 --- a/plugins/loopback.c +++ b/plugins/loopback.c @@ -23,6 +23,8 @@ #include <config.h> #endif +#include <stdio.h> + #include <errno.h> #include <unistd.h> #include <limits.h> @@ -34,6 +36,8 @@ #include <net/if.h> #include <glib.h> +#include <glib/gprintf.h> + #define CONNMAN_API_SUBJECT_TO_CHANGE #include <connman/plugin.h> @@ -62,16 +66,78 @@ static int setup_hostname(void) memset(system_hostname, 0, sizeof(system_hostname)); - if (gethostname(system_hostname, HOST_NAME_MAX) < 0) { - connman_error("Failed to get current hostname"); - return -EIO; - } +#if defined TIZEN_EXT + FILE *fp = NULL; + +#if defined TIZEN_WEARABLE +#define BT_MAC "/csa/bluetooth/.bd_addr" + { + gchar* dev_id = "GearS2"; + char bt_mac[HOST_NAME_MAX + 1]; + char addr[5] = {0, }; + + fp = fopen(BT_MAC, "r"); + if(!fp){ + connman_error("Failed to get current hostname"); + strncpy(system_hostname, dev_id, strlen(dev_id)); + goto host_name_end; + } + + // get the last line's address + while (fgets(bt_mac, HOST_NAME_MAX, fp)) {} + + if (strlen(bt_mac) == 6) { + addr[0] = bt_mac[2]; + addr[1] = bt_mac[3]; + addr[2] = bt_mac[4]; + addr[3] = bt_mac[5]; + g_sprintf(system_hostname, "%s-%s", dev_id, addr); + } else + strncpy(system_hostname, dev_id, strlen(dev_id)); + + fclose(fp); + } +#else +#define WIFI_MAC "/opt/etc/.mac.info" + { + char* rv = 0; + gchar* dev_id = "TIZEN"; + char wifi_mac[HOST_NAME_MAX + 1]; + + fp = fopen(WIFI_MAC, "r"); + if(!fp){ + connman_error("Failed to get current hostname"); + strncpy(system_hostname, dev_id, strlen(dev_id)); + goto host_name_end; + } + + rv = fgets(wifi_mac, HOST_NAME_MAX, fp); + if(!rv){ + connman_error("Failed to get current hostname"); + strncpy(system_hostname, dev_id, strlen(dev_id)); + fclose(fp); + goto host_name_end; + } + + dev_id = g_base64_encode((const guchar *)wifi_mac, strlen(wifi_mac)); + g_sprintf(system_hostname, "TIZEN-%s", dev_id); + g_free(dev_id); + fclose(fp); + } +#endif - if (strlen(system_hostname) > 0 && - strcmp(system_hostname, "(none)") != 0) - connman_info("System hostname is %s", system_hostname); - else - create_hostname(); + host_name_end : +#else + if (gethostname(system_hostname, HOST_NAME_MAX) < 0) { + connman_error("Failed to get current hostname"); + return -EIO; + } +#endif + if (strlen(system_hostname) > 0 && + strcmp(system_hostname, "(none)") != 0) + connman_info("System hostname is %s", system_hostname); + else + create_hostname(); memset(name, 0, sizeof(name)); |