diff options
author | Thomas Haller <thaller@redhat.com> | 2022-08-26 10:23:27 +0200 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2022-08-31 19:20:11 +0200 |
commit | 71a111bb9cf8f42639a61ba345491fba828cfe9d (patch) | |
tree | 7b42be3610296a6d787e2d19da0dc7ef3bd2e5ce | |
parent | 686d9ebd4f42241d96c8a088866b9b3b7d68bc1f (diff) | |
download | NetworkManager-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.h | 17 | ||||
-rw-r--r-- | src/nmcli/settings.c | 11 |
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 * |