diff options
author | Manfred Kober <manfred.kober@gmx.de> | 2012-06-21 09:40:31 +0200 |
---|---|---|
committer | Patrik Flykt <patrik.flykt@linux.intel.com> | 2012-06-25 09:32:51 +0300 |
commit | 8d403887bfd3facff8ecba0424d5fefd92bd8803 (patch) | |
tree | 5e46cead9ac292747d404a37f44ff429273576ad /src/main.c | |
parent | 0bfab55f1a737afedaffeff652fc3e75ee80f2b4 (diff) | |
download | connman-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
Diffstat (limited to 'src/main.c')
-rw-r--r-- | src/main.c | 23 |
1 files changed, 23 insertions, 0 deletions
@@ -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; } |