summaryrefslogtreecommitdiff
path: root/plugins/loopback.c
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/loopback.c')
-rwxr-xr-xplugins/loopback.c84
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));