summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLubomir Rintel <lkundrak@v3.sk>2022-06-24 00:30:04 +0200
committerLubomir Rintel <lkundrak@v3.sk>2022-06-24 00:30:04 +0200
commit0cb971d1d6c7e267727cfaf26276b4cfc73685fb (patch)
tree256419b40ff27660f4e4f2af7cf12a83114985bf
parentfe82c3a37ae5f65845065d0c04be7e324ff64ab1 (diff)
downloadNetworkManager-0cb971d1d6c7e267727cfaf26276b4cfc73685fb.tar.gz
nmcli/connections: pass allow_reset to check_and_set() callback
Like the regular set_option() handler, the special ones also need to know whether to reset an option or keep the value.
-rw-r--r--src/nmcli/connections.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/src/nmcli/connections.c b/src/nmcli/connections.c
index 4d9f662bf5..787ea25c9f 100644
--- a/src/nmcli/connections.c
+++ b/src/nmcli/connections.c
@@ -52,6 +52,7 @@ typedef struct _OptionInfo {
NMConnection *connection,
const struct _OptionInfo *option,
const char *value,
+ gboolean allow_reset,
GError **error);
CompEntryFunc generator_func;
} OptionInfo;
@@ -4375,7 +4376,7 @@ set_option(NmCli *nmc,
NULL,
NULL);
if (option && option->check_and_set) {
- return option->check_and_set(nmc, connection, option, value, error);
+ return option->check_and_set(nmc, connection, option, value, allow_reset, error);
} else if (value || allow_reset) {
return set_property(nmc->client,
connection,
@@ -4506,6 +4507,7 @@ set_connection_type(NmCli *nmc,
NMConnection *con,
const OptionInfo *option,
const char *value,
+ gboolean allow_reset,
GError **error)
{
const NMMetaSettingValidPartItem *const *type_settings;
@@ -4516,6 +4518,8 @@ set_connection_type(NmCli *nmc,
value = check_valid_name_toplevel(value, &slave_type, &local);
if (!value) {
+ if (!allow_reset)
+ return TRUE;
g_set_error(error,
NMCLI_ERROR,
NMC_RESULT_ERROR_USER_INPUT,
@@ -4570,12 +4574,15 @@ set_connection_iface(NmCli *nmc,
NMConnection *con,
const OptionInfo *option,
const char *value,
+ gboolean allow_reset,
GError **error)
{
if (value) {
/* Special value of '*' means no specific interface name */
if (nm_streq(value, "*"))
value = NULL;
+ } else if (!allow_reset) {
+ return TRUE;
}
return set_property(nmc->client,
@@ -4592,6 +4599,7 @@ set_connection_master(NmCli *nmc,
NMConnection *con,
const OptionInfo *option,
const char *value,
+ gboolean allow_reset,
GError **error)
{
const GPtrArray *connections;
@@ -4602,6 +4610,8 @@ set_connection_master(NmCli *nmc,
g_return_val_if_fail(s_con, FALSE);
if (!value) {
+ if (!allow_reset)
+ return TRUE;
g_set_error_literal(error,
NMCLI_ERROR,
NMC_RESULT_ERROR_USER_INPUT,
@@ -4637,6 +4647,7 @@ set_bond_option(NmCli *nmc,
NMConnection *con,
const OptionInfo *option,
const char *value,
+ gboolean allow_reset,
GError **error)
{
NMSettingBond *s_bond;
@@ -4681,6 +4692,7 @@ set_bond_monitoring_mode(NmCli *nmc,
NMConnection *con,
const OptionInfo *option,
const char *value,
+ gboolean allow_reset,
GError **error)
{
NMSettingBond *s_bond;
@@ -4721,6 +4733,7 @@ set_bluetooth_type(NmCli *nmc,
NMConnection *con,
const OptionInfo *option,
const char *value,
+ gboolean allow_reset,
GError **error)
{
NMSetting *setting;
@@ -4769,6 +4782,7 @@ set_ip4_address(NmCli *nmc,
NMConnection *con,
const OptionInfo *option,
const char *value,
+ gboolean allow_reset,
GError **error)
{
NMSettingIPConfig *s_ip4;
@@ -4796,6 +4810,7 @@ set_ip6_address(NmCli *nmc,
NMConnection *con,
const OptionInfo *option,
const char *value,
+ gboolean allow_reset,
GError **error)
{
NMSettingIPConfig *s_ip6;