[PATCH 1/3] main: Introduce 'DefaultEnabledTechnologies' setting.
Grant Erickson <[email protected]> Mon, 28 Jul 2025 15:32:15 -0700
| Newsgroups | dev.linux.lists.connman |
|---|---|
| Message-ID | <[email protected]> |
This introduces a new 'DefaultEnabledTechnologies' configuration
setting.
Since nearly the beginning of connman, it has behaved such that the
Ethernet technology is enabled (that is, powered) by
default. Currently, this is hard-coded behavior into
src/technology.c:technology_load.
However, if a different or additional technology is desired, there has
historically been no way to achieve this via configuration.
The 'DefaultEnabledTechnologies' key/value pair is a list of
technologies that are marked enabled (that is, powered) by default,
separated by commas ",". The default value for this entry when empty
is 'ethernet', matching the legacy behavior prior to the introduction
of this setting.
---
src/main.c | 32 ++++++++++++++++++++++++++++++++
1 file changed, 32 insertions(+)
diff --git a/src/main.c b/src/main.c
index 5d13fb7bbd27..7090926426eb 100644
--- a/src/main.c
+++ b/src/main.c
@@ -78,6 +78,11 @@ static char *default_auto_connect[] = {
NULL
};
+static char *default_enabled_techs[] = {
+ "ethernet",
+ NULL
+};
+
static char *default_favorite_techs[] = {
"ethernet",
NULL
@@ -99,6 +104,7 @@ static struct {
bool bg_scan;
char **pref_timeservers;
unsigned int *auto_connect;
+ unsigned int *enabled_techs;
unsigned int *favorite_techs;
unsigned int *preferred_techs;
unsigned int *always_connected_techs;
@@ -134,6 +140,7 @@ static struct {
.bg_scan = true,
.pref_timeservers = NULL,
.auto_connect = NULL,
+ .enabled_techs = NULL,
.favorite_techs = NULL,
.preferred_techs = NULL,
.always_connected_techs = NULL,
@@ -171,6 +178,7 @@ static struct {
#define CONF_BG_SCAN "BackgroundScanning"
#define CONF_PREF_TIMESERVERS "FallbackTimeservers"
#define CONF_AUTO_CONNECT_TECHS "DefaultAutoConnectTechnologies"
+#define CONF_ENABLED_TECHS "DefaultEnabledTechnologies"
#define CONF_FAVORITE_TECHS "DefaultFavoriteTechnologies"
#define CONF_ALWAYS_CONNECTED_TECHS "AlwaysConnectedTechnologies"
#define CONF_PREFERRED_TECHS "PreferredTechnologies"
@@ -207,6 +215,7 @@ static const char *supported_options[] = {
CONF_BG_SCAN,
CONF_PREF_TIMESERVERS,
CONF_AUTO_CONNECT_TECHS,
+ CONF_ENABLED_TECHS,
CONF_FAVORITE_TECHS,
CONF_ALWAYS_CONNECTED_TECHS,
CONF_PREFERRED_TECHS,
@@ -437,6 +446,9 @@ static void parse_config(GKeyFile *config, const char *file)
connman_settings.auto_connect =
parse_service_types(default_auto_connect,
CONF_ARRAY_SIZE(default_auto_connect));
+ connman_settings.enabled_techs =
+ parse_service_types(default_enabled_techs,
+ CONF_ARRAY_SIZE(default_enabled_techs));
connman_settings.favorite_techs =
parse_service_types(default_favorite_techs,
CONF_ARRAY_SIZE(default_favorite_techs));
@@ -481,6 +493,23 @@ static void parse_config(GKeyFile *config, const char *file)
g_clear_error(&error);
+ /* DefaultEnabledTechnologies */
+
+ str_list = __connman_config_get_string_list(config, GENERAL_GROUP,
+ CONF_ENABLED_TECHS, &len, &error);
+
+ if (!error)
+ connman_settings.enabled_techs =
+ parse_service_types(str_list, len);
+ else
+ connman_settings.enabled_techs =
+ parse_service_types(default_enabled_techs,
+ CONF_ARRAY_SIZE(default_enabled_techs));
+
+ g_strfreev(str_list);
+
+ g_clear_error(&error);
+
str_list = __connman_config_get_string_list(config, GENERAL_GROUP,
CONF_FAVORITE_TECHS, &len, &error);
@@ -1111,6 +1140,9 @@ unsigned int *connman_setting_get_uint_list(const char *key)
if (g_str_equal(key, CONF_AUTO_CONNECT_TECHS))
return connman_settings.auto_connect;
+ if (g_str_equal(key, CONF_ENABLED_TECHS))
+ return connman_settings.enabled_techs;
+
if (g_str_equal(key, CONF_FAVORITE_TECHS))
return connman_settings.favorite_techs;
--
2.45.0