summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNiraj Kumar Goit <niraj.g@samsung.com>2019-09-27 16:05:24 +0530
committerJaehyun Kim <jeik01.kim@samsung.com>2019-10-08 00:37:20 +0000
commitb7ff33d7bc0b2b6efaf8e2f0c69c75b8efbc2490 (patch)
tree832ac3d6c92583fc803c445c7903e4bdf1acc882
parent0702eaff61dc1d59ed60800bd984b2a364849e5d (diff)
downloadconnman-b7ff33d7bc0b2b6efaf8e2f0c69c75b8efbc2490.tar.gz
connman-b7ff33d7bc0b2b6efaf8e2f0c69c75b8efbc2490.tar.bz2
connman-b7ff33d7bc0b2b6efaf8e2f0c69c75b8efbc2490.zip
Added an option in main.conf to set global DNS.
Change-Id: I52f95964f82a88389e98592c64bf4820c1da5887 Signed-off-by: Niraj Kumar Goit <niraj.g@samsung.com>
-rw-r--r--src/main.c17
-rwxr-xr-xsrc/main.conf5
-rw-r--r--src/service.c11
3 files changed, 33 insertions, 0 deletions
diff --git a/src/main.c b/src/main.c
index 0e603b8f..1fecef07 100644
--- a/src/main.c
+++ b/src/main.c
@@ -97,6 +97,7 @@ static struct {
char **cellular_interfaces;
bool tizen_tv_extension;
bool auto_ip;
+ char *global_nameserver;
#endif
} connman_settings = {
.bg_scan = true,
@@ -124,6 +125,7 @@ static struct {
.cellular_interfaces = NULL,
.tizen_tv_extension = false,
.auto_ip = true,
+ .global_nameserver = NULL,
#endif
};
@@ -152,6 +154,7 @@ static struct {
#define CONF_CELLULAR_INTERFACE "NetworkCellularInterfaceList"
#define CONF_TIZEN_TV_EXT "TizenTVExtension"
#define CONF_ENABLE_AUTO_IP "EnableAutoIp"
+#define CONF_GLOBAL_NAMESERVER "GlobalNameserver"
#endif
static const char *supported_options[] = {
@@ -178,6 +181,8 @@ static const char *supported_options[] = {
#if defined TIZEN_EXT
CONF_CELLULAR_INTERFACE,
CONF_TIZEN_TV_EXT,
+ CONF_ENABLE_AUTO_IP,
+ CONF_GLOBAL_NAMESERVER,
#endif
NULL
};
@@ -298,6 +303,7 @@ static void check_Tizen_configuration(GKeyFile *config)
{
GError *error = NULL;
char **cellular_interfaces;
+ char *global_nameserver;
bool boolean;
gsize len;
@@ -322,6 +328,13 @@ static void check_Tizen_configuration(GKeyFile *config)
connman_settings.auto_ip = boolean;
g_clear_error(&error);
+
+ global_nameserver = __connman_config_get_string(config, "General",
+ CONF_GLOBAL_NAMESERVER, &error);
+ if (!error)
+ connman_settings.global_nameserver = global_nameserver;
+
+ g_clear_error(&error);
}
static void set_nofile_inc(void)
@@ -735,6 +748,10 @@ const char *connman_option_get_string(const char *key)
return option_wifi;
}
+#if defined TIZEN_EXT
+ if (g_str_equal(key, CONF_GLOBAL_NAMESERVER))
+ return connman_settings.global_nameserver;
+#endif
return NULL;
}
diff --git a/src/main.conf b/src/main.conf
index f40ac13a..ab0dc2db 100755
--- a/src/main.conf
+++ b/src/main.conf
@@ -163,3 +163,8 @@ NetworkCellularInterfaceList = pdp,rmnet,seth_td,seth_w
# from DHCP server then device state will be set to disconnected.
# Default value is true.
# EnableAutoIp = false
+
+# Allow connman to set additional global nameserver and it will be used
+# if all nameservers are failed to resolve DNS query. The nameserver
+# entries must be in numeric format.
+# GlobalNameserver = 8.8.8.8
diff --git a/src/service.c b/src/service.c
index 9cbfa6ce..34de494a 100644
--- a/src/service.c
+++ b/src/service.c
@@ -1543,6 +1543,12 @@ static int nameserver_add_all(struct connman_service *service,
if (!i)
__connman_resolver_append_fallback_nameservers();
+#if defined TIZEN_EXT
+ const char *global_dns = connman_option_get_string("GlobalNameserver");
+ if (global_dns)
+ nameserver_add(service, type, global_dns);
+#endif
+
searchdomain_add_all(service);
return 0;
@@ -1712,6 +1718,11 @@ static int nameserver_remove_all(struct connman_service *service,
i++;
}
+#if defined TIZEN_EXT
+ const char *global_dns = connman_option_get_string("GlobalNameserver");
+ if (global_dns)
+ nameserver_remove(service, type, global_dns);
+#endif
searchdomain_remove_all(service);
return 0;