Merge tag 'upstream/1.40' into tizen.
[platform/upstream/connman.git] / plugins / loopback.c
old mode 100644 (file)
new mode 100755 (executable)
index e113887..3809d8f
 #include <sys/socket.h>
 #include <arpa/inet.h>
 #include <net/if.h>
+#include <stdio.h>
 
 #include <glib.h>
+#include <glib/gprintf.h>
 
 #define CONNMAN_API_SUBJECT_TO_CHANGE
 #include <connman/plugin.h>
@@ -46,6 +48,39 @@ static in_addr_t loopback_netmask;
 
 static char system_hostname[HOST_NAME_MAX + 1];
 
+#if defined TIZEN_EXT
+static void _create_hostname(void)
+{
+       FILE *fp = NULL;
+#define WIFI_MAC "/opt/etc/.mac.info"
+
+       memset(system_hostname, 0, sizeof(system_hostname));
+
+       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));
+               return;
+       }
+
+       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);
+               return;
+       }
+
+       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);
+}
+#else
 static void create_hostname(void)
 {
        const char *name = "localhost";
@@ -56,6 +91,8 @@ static void create_hostname(void)
        strncpy(system_hostname, name, HOST_NAME_MAX);
 }
 
+#endif
+
 static int setup_hostname(void)
 {
        char name[HOST_NAME_MAX + 1];
@@ -67,11 +104,20 @@ static int setup_hostname(void)
                return -EIO;
        }
 
+#if defined TIZEN_EXT
+       if (strlen(system_hostname) > 0 &&
+                       strcmp(system_hostname, "(none)") != 0 &&
+                       strcmp(system_hostname, "localhost") != 0)
+               connman_info("System hostname is %s", system_hostname);
+       else
+               _create_hostname();
+#else
        if (strlen(system_hostname) > 0 &&
                                strcmp(system_hostname, "(none)") != 0)
                connman_info("System hostname is %s", system_hostname);
        else
                create_hostname();
+#endif
 
        memset(name, 0, sizeof(name));