summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorManfred Kober <manfred.kober@gmx.de>2012-06-21 09:40:31 +0200
committerPatrik Flykt <patrik.flykt@linux.intel.com>2012-06-25 09:32:51 +0300
commit8d403887bfd3facff8ecba0424d5fefd92bd8803 (patch)
tree5e46cead9ac292747d404a37f44ff429273576ad
parent0bfab55f1a737afedaffeff652fc3e75ee80f2b4 (diff)
downloadconnman-8d403887bfd3facff8ecba0424d5fefd92bd8803.tar.gz
connman-8d403887bfd3facff8ecba0424d5fefd92bd8803.tar.bz2
connman-8d403887bfd3facff8ecba0424d5fefd92bd8803.zip
main: Support NetworkInterfaceBlacklist from main.conf
This adds a settings variable and a function for fetching that list
-rw-r--r--src/main.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/main.c b/src/main.c
index 10085bdb..6d0963a9 100644
--- a/src/main.c
+++ b/src/main.c
@@ -50,6 +50,7 @@ static struct {
char **fallback_nameservers;
unsigned int timeout_inputreq;
unsigned int timeout_browserlaunch;
+ char **blacklisted_interfaces;
} connman_settings = {
.bg_scan = TRUE,
.pref_timeservers = NULL,
@@ -58,6 +59,7 @@ static struct {
.fallback_nameservers = NULL,
.timeout_inputreq = DEFAULT_INPUT_REQUEST_TIMEOUT,
.timeout_browserlaunch = DEFAULT_BROWSER_LAUNCH_TIMEOUT,
+ .blacklisted_interfaces = NULL,
};
static GKeyFile *load_config(const char *file)
@@ -136,6 +138,7 @@ static void parse_config(GKeyFile *config)
GError *error = NULL;
gboolean boolean;
char **timeservers;
+ char **interfaces;
char **str_list;
gsize len;
char *default_auto_connect[] = {
@@ -144,11 +147,18 @@ static void parse_config(GKeyFile *config)
"cellular",
NULL
};
+ char *default_blacklist[] = {
+ "vmnet",
+ "vboxnet",
+ "virbr",
+ NULL
+ };
int timeout;
if (config == NULL) {
connman_settings.auto_connect =
parse_service_types(default_auto_connect, 3);
+ connman_settings.blacklisted_interfaces = default_blacklist;
return;
}
@@ -217,6 +227,16 @@ static void parse_config(GKeyFile *config)
connman_settings.timeout_browserlaunch = timeout * 1000;
g_clear_error(&error);
+
+ interfaces = g_key_file_get_string_list(config, "General",
+ "NetworkInterfaceBlacklist", &len, &error);
+
+ if (error == NULL)
+ connman_settings.blacklisted_interfaces = interfaces;
+ else
+ connman_settings.blacklisted_interfaces = default_blacklist;
+
+ g_clear_error(&error);
}
static GMainLoop *main_loop = NULL;
@@ -375,6 +395,9 @@ char **connman_setting_get_string_list(const char *key)
if (g_str_equal(key, "FallbackNameservers") == TRUE)
return connman_settings.fallback_nameservers;
+ if (g_str_equal(key, "BlacklistedInterfaces") == TRUE)
+ return connman_settings.blacklisted_interfaces;
+
return NULL;
}