main: Support NetworkInterfaceBlacklist from main.conf
authorManfred Kober <manfred.kober@gmx.de>
Thu, 21 Jun 2012 07:40:31 +0000 (09:40 +0200)
committerPatrik Flykt <patrik.flykt@linux.intel.com>
Mon, 25 Jun 2012 06:32:51 +0000 (09:32 +0300)
This adds a settings variable and a function for fetching that list

src/main.c

index 10085bd..6d0963a 100644 (file)
@@ -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;
 }