summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2022-08-26 10:23:27 +0200
committerThomas Haller <thaller@redhat.com>2022-08-31 19:20:11 +0200
commit71a111bb9cf8f42639a61ba345491fba828cfe9d (patch)
tree7b42be3610296a6d787e2d19da0dc7ef3bd2e5ce
parent686d9ebd4f42241d96c8a088866b9b3b7d68bc1f (diff)
downloadNetworkManager-71a111bb9cf8f42639a61ba345491fba828cfe9d.tar.gz
nmcli: add get_env_flags() accessor to NMMetaEnvironment for checking offline mode
We will want to know whether we are in offline mode. Add an accessor to get environment flags, which libnmc-setting can use.
-rw-r--r--src/libnmc-setting/nm-meta-setting-desc.h17
-rw-r--r--src/nmcli/settings.c11
2 files changed, 28 insertions, 0 deletions
diff --git a/src/libnmc-setting/nm-meta-setting-desc.h b/src/libnmc-setting/nm-meta-setting-desc.h
index ca04457131..8e3383cc56 100644
--- a/src/libnmc-setting/nm-meta-setting-desc.h
+++ b/src/libnmc-setting/nm-meta-setting-desc.h
@@ -486,6 +486,11 @@ typedef enum {
NM_META_ENV_WARN_LEVEL_WARN,
} NMMetaEnvWarnLevel;
+typedef enum {
+ NM_META_ENV_FLAGS_NONE = 0,
+ NM_META_ENV_FLAGS_OFFLINE = 0x1,
+} NMMetaEnvFlags;
+
/* the settings-meta data is supposed to be independent of an actual client
* implementation. Hence, there is a need for hooks to the meta-data.
* The meta-data handlers may call back to the environment with certain
@@ -506,8 +511,20 @@ struct _NMMetaEnvironment {
struct _NMRemoteConnection *const *(*get_nm_connections)(const NMMetaEnvironment *environment,
gpointer environment_user_data,
guint *out_len);
+
+ NMMetaEnvFlags (*get_env_flags)(const NMMetaEnvironment *environment,
+ gpointer environment_user_data);
};
+static inline NMMetaEnvFlags
+nm_meta_environment_get_env_flags(const NMMetaEnvironment *environment,
+ gpointer environment_user_data)
+{
+ if (environment && environment->get_env_flags)
+ return environment->get_env_flags(environment, environment_user_data);
+ return NM_META_ENV_FLAGS_NONE;
+}
+
/*****************************************************************************/
/* NMSettingBond is special in that it has nested properties.
diff --git a/src/nmcli/settings.c b/src/nmcli/settings.c
index c80d0c7c5b..d6c36ac023 100644
--- a/src/nmcli/settings.c
+++ b/src/nmcli/settings.c
@@ -488,12 +488,23 @@ _env_get_nm_connections(const NMMetaEnvironment *environment,
return (NMRemoteConnection *const *) values->pdata;
}
+static NMMetaEnvFlags
+_env_get_env_flags(const NMMetaEnvironment *environment, gpointer environment_user_data)
+{
+ NmCli *nmc = environment_user_data;
+
+ nm_assert(nmc);
+
+ return (nmc->offline ? NM_META_ENV_FLAGS_OFFLINE : NM_META_ENV_FLAGS_NONE);
+}
+
/*****************************************************************************/
const NMMetaEnvironment *const nmc_meta_environment = &((NMMetaEnvironment){
.warn_fcn = _env_warn_fcn_handle,
.get_nm_devices = _env_get_nm_devices,
.get_nm_connections = _env_get_nm_connections,
+ .get_env_flags = _env_get_env_flags,
});
static char *