summaryrefslogtreecommitdiff
path: root/src/nm-config-data.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/nm-config-data.c')
-rw-r--r--src/nm-config-data.c46
1 files changed, 46 insertions, 0 deletions
diff --git a/src/nm-config-data.c b/src/nm-config-data.c
index b5868b7b1a..6461331c0a 100644
--- a/src/nm-config-data.c
+++ b/src/nm-config-data.c
@@ -386,6 +386,52 @@ _nm_config_data_get_keyfile_user (const NMConfigData *self)
/*****************************************************************************/
+static NMAuthPolkitMode
+nm_auth_polkit_mode_from_string (const char *str)
+{
+ int as_bool;
+
+ if (!str)
+ return NM_AUTH_POLKIT_MODE_UNKNOWN;
+
+ if (nm_streq (str, "root-only"))
+ return NM_AUTH_POLKIT_MODE_ROOT_ONLY;
+
+ as_bool = _nm_utils_ascii_str_to_bool (str, -1);
+ if (as_bool != -1) {
+ return as_bool
+ ? NM_AUTH_POLKIT_MODE_USE_POLKIT
+ : NM_AUTH_POLKIT_MODE_ALLOW_ALL;
+ }
+
+ return NM_AUTH_POLKIT_MODE_UNKNOWN;
+}
+
+NMAuthPolkitMode
+nm_config_data_get_main_auth_polkit (const NMConfigData *self)
+{
+ NMAuthPolkitMode auth_polit_mode;
+ const char *str;
+
+ str = nm_config_data_get_value (self,
+ NM_CONFIG_KEYFILE_GROUP_MAIN,
+ NM_CONFIG_KEYFILE_KEY_MAIN_AUTH_POLKIT,
+ NM_CONFIG_GET_VALUE_STRIP
+ | NM_CONFIG_GET_VALUE_NO_EMPTY);
+ auth_polit_mode = nm_auth_polkit_mode_from_string (str);
+ if (auth_polit_mode == NM_AUTH_POLKIT_MODE_UNKNOWN) {
+ auth_polit_mode = nm_auth_polkit_mode_from_string (NM_CONFIG_DEFAULT_MAIN_AUTH_POLKIT);
+ if (auth_polit_mode == NM_AUTH_POLKIT_MODE_UNKNOWN) {
+ nm_assert_not_reached ();
+ auth_polit_mode = NM_AUTH_POLKIT_MODE_ROOT_ONLY;
+ }
+ }
+
+ return auth_polit_mode;
+}
+
+/*****************************************************************************/
+
/**
* nm_config_data_get_groups:
* @self: the #NMConfigData instance