From e3a76a4f3d04ece4a251589b28174ea0e6f9f84e Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Wed, 20 May 2015 13:54:25 +0200 Subject: [PATCH 1/9] ifcfg-rh: refactor svSetValue() and svEscape() not to clone string needlessly In the most cases we don't expect that our values need escaping. No need to do an additional copy of the unmodified string. (cherry picked from commit 32871deecc127cfa35dd5fc212e63d2e5bd468e2) --- src/settings/plugins/ifcfg-rh/shvar.c | 35 +++++++++++++------------- src/settings/plugins/ifcfg-rh/shvar.h | 4 +-- src/settings/plugins/ifcfg-rh/writer.c | 10 +++++--- 3 files changed, 26 insertions(+), 23 deletions(-) diff --git a/src/settings/plugins/ifcfg-rh/shvar.c b/src/settings/plugins/ifcfg-rh/shvar.c index ed12683072..0aa9569608 100644 --- a/src/settings/plugins/ifcfg-rh/shvar.c +++ b/src/settings/plugins/ifcfg-rh/shvar.c @@ -36,6 +36,7 @@ #include "shvar.h" +#include "gsystem-local-alloc.h" #include "nm-core-internal.h" #include "nm-logging.h" @@ -206,8 +207,8 @@ static const char escapees[] = "\"'\\$~`"; /* must be escaped */ static const char spaces[] = " \t|&;()<>"; /* only require "" */ static const char newlines[] = "\n\r"; /* will be removed */ -char * -svEscape (const char *s) +const char * +svEscape (const char *s, char **to_free) { char *new; int i, j, mangle = 0, space = 0, newline = 0; @@ -223,8 +224,10 @@ svEscape (const char *s) if (strchr (newlines, s[i])) newline++; } - if (!mangle && !space && !newline) - return strdup (s); + if (!mangle && !space && !newline) { + *to_free = NULL; + return s; + } newlen = slen + mangle - newline + 3; /* 3 is extra ""\0 */ new = g_malloc (newlen); @@ -243,6 +246,7 @@ svEscape (const char *s) new[j++] = '\0'; g_assert (j == slen + mangle - newline + 3); + *to_free = new; return new; } @@ -354,17 +358,19 @@ svGetValueInt64 (shvarFile *s, const char *key, guint base, gint64 min, gint64 m void svSetValue (shvarFile *s, const char *key, const char *value, gboolean verbatim) { - char *newval = NULL, *oldval = NULL; + gs_free char *newval_free = NULL; + gs_free char *oldval = NULL; + const char *newval; char *keyValue; g_return_if_fail (s != NULL); g_return_if_fail (key != NULL); /* value may be NULL */ - if (value) - newval = verbatim ? g_strdup (value) : svEscape (value); - keyValue = g_strdup_printf ("%s=%s", key, newval ? newval : ""); - + if (!value || verbatim) + newval = value; + else + newval = svEscape (value, &newval_free); oldval = svGetValue (s, key, FALSE); if (!newval || !newval[0]) { @@ -376,15 +382,15 @@ svSetValue (shvarFile *s, const char *key, const char *value, gboolean verbatim) g_list_free_1 (s->current); s->modified = TRUE; } - g_free (keyValue); - goto end; + return; } + keyValue = g_strdup_printf ("%s=%s", key, newval); if (!oldval) { /* append line */ s->lineList = g_list_append (s->lineList, keyValue); s->modified = TRUE; - goto end; + return; } if (strcmp (oldval, newval) != 0) { @@ -397,11 +403,6 @@ svSetValue (shvarFile *s, const char *key, const char *value, gboolean verbatim) s->modified = TRUE; } else g_free (keyValue); - - end: - g_free (newval); - g_free (oldval); - return; } /* Write the current contents iff modified. Returns FALSE on error diff --git a/src/settings/plugins/ifcfg-rh/shvar.h b/src/settings/plugins/ifcfg-rh/shvar.h index b2a2f2636e..28634ddd5d 100644 --- a/src/settings/plugins/ifcfg-rh/shvar.h +++ b/src/settings/plugins/ifcfg-rh/shvar.h @@ -84,8 +84,8 @@ gboolean svWriteFile (shvarFile *s, int mode, GError **error); /* Close the file descriptor (if open) and free the shvarFile. */ void svCloseFile (shvarFile *s); -/* Return a new escaped string */ -char *svEscape (const char *s); +/* Return @s unmodified or an escaped string */ +const char *svEscape (const char *s, char **to_free); /* Unescape a string in-place */ void svUnescape (char *s); diff --git a/src/settings/plugins/ifcfg-rh/writer.c b/src/settings/plugins/ifcfg-rh/writer.c index e877fa9b00..52bf51d18b 100644 --- a/src/settings/plugins/ifcfg-rh/writer.c +++ b/src/settings/plugins/ifcfg-rh/writer.c @@ -888,20 +888,22 @@ write_wireless_setting (NMConnection *connection, svSetValue (ifcfg, "ESSID", str->str, TRUE); g_string_free (str, TRUE); } else { + const char *tmp_escaped; + /* Printable SSIDs always get quoted */ memset (buf, 0, sizeof (buf)); memcpy (buf, ssid_data, ssid_len); - tmp = svEscape (buf); + tmp_escaped = svEscape (buf, &tmp); /* svEscape will usually quote the string, but just for consistency, * if svEscape doesn't quote the ESSID, we quote it ourselves. */ - if (tmp[0] != '"' && tmp[strlen (tmp) - 1] != '"') { - tmp2 = g_strdup_printf ("\"%s\"", tmp); + if (tmp_escaped[0] != '"' && tmp_escaped[strlen (tmp_escaped) - 1] != '"') { + tmp2 = g_strdup_printf ("\"%s\"", tmp_escaped); svSetValue (ifcfg, "ESSID", tmp2, TRUE); g_free (tmp2); } else - svSetValue (ifcfg, "ESSID", tmp, TRUE); + svSetValue (ifcfg, "ESSID", tmp_escaped, TRUE); g_free (tmp); } From 1cce24f346b5f6c8891f6cc7f72ff1bcae037fc7 Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Wed, 20 May 2015 13:41:31 +0200 Subject: [PATCH 2/9] ifcfg-rh: add svGetValueFull() function (cherry picked from commit 33aaa730c5b57ee406bd8e1affa29ee117209ca9) --- src/settings/plugins/ifcfg-rh/shvar.c | 23 +++++++++++++++++------ src/settings/plugins/ifcfg-rh/shvar.h | 1 + 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/src/settings/plugins/ifcfg-rh/shvar.c b/src/settings/plugins/ifcfg-rh/shvar.c index 0aa9569608..75c038ccaf 100644 --- a/src/settings/plugins/ifcfg-rh/shvar.c +++ b/src/settings/plugins/ifcfg-rh/shvar.c @@ -256,6 +256,22 @@ svEscape (const char *s, char **to_free) */ char * svGetValue (shvarFile *s, const char *key, gboolean verbatim) +{ + char *value; + + value = svGetValueFull (s, key, verbatim); + if (value && !*value) { + g_free (value); + return NULL; + } + return value; +} + +/* svGetValueFull() is identical to svGetValue() except that + * svGetValue() will never return an empty value (but %NULL instead). + * svGetValueFull() will return empty values if that is the value for the @key. */ +char * +svGetValueFull (shvarFile *s, const char *key, gboolean verbatim) { char *value = NULL; char *line; @@ -280,12 +296,7 @@ svGetValue (shvarFile *s, const char *key, gboolean verbatim) } g_free (keyString); - if (value && value[0]) { - return value; - } else { - g_free (value); - return NULL; - } + return value; } /* return TRUE if resolves to any truth value (e.g. "yes", "y", "true") diff --git a/src/settings/plugins/ifcfg-rh/shvar.h b/src/settings/plugins/ifcfg-rh/shvar.h index 28634ddd5d..738bce6d11 100644 --- a/src/settings/plugins/ifcfg-rh/shvar.h +++ b/src/settings/plugins/ifcfg-rh/shvar.h @@ -56,6 +56,7 @@ shvarFile *svOpenFile (const char *name, GError **error); * be freed by the caller. */ char *svGetValue (shvarFile *s, const char *key, gboolean verbatim); +char *svGetValueFull (shvarFile *s, const char *key, gboolean verbatim); /* return TRUE if resolves to any truth value (e.g. "yes", "y", "true") * return FALSE if resolves to any non-truth value (e.g. "no", "n", "false") From 5ad85e17db8b5446fcba46f8301f216cf69c0bc1 Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Wed, 20 May 2015 14:16:09 +0200 Subject: [PATCH 3/9] ifcfg-rh: use svGetValueFull() in svGetValueInt64() Previously, it would silently accept a value set to "empty". This is however not a valid number and we should raise a warning just like for any other invalid number. (cherry picked from commit c6efbeccf36d4205cd74fbeeb58b6ec8f71dd51f) --- src/settings/plugins/ifcfg-rh/shvar.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/settings/plugins/ifcfg-rh/shvar.c b/src/settings/plugins/ifcfg-rh/shvar.c index 75c038ccaf..f041aa6cb4 100644 --- a/src/settings/plugins/ifcfg-rh/shvar.c +++ b/src/settings/plugins/ifcfg-rh/shvar.c @@ -345,7 +345,7 @@ svGetValueInt64 (shvarFile *s, const char *key, guint base, gint64 min, gint64 m gint64 result; int errsv; - tmp = svGetValue (s, key, FALSE); + tmp = svGetValueFull (s, key, FALSE); if (!tmp) { errno = 0; return fallback; From 7a98e481d905763e822b8f89523166e9bacd1ec8 Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Wed, 20 May 2015 14:02:02 +0200 Subject: [PATCH 4/9] ifcfg-rh: fix svSetValue() to properly handle empty variables svSetValue() called svGetValue() which would return %NULL for empty variables. That is wrong, because it caused svSetValue() to add the variable anew. (cherry picked from commit 51255d8b64861ce57e40ff47f877dbe41188a1dd) --- src/settings/plugins/ifcfg-rh/shvar.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/settings/plugins/ifcfg-rh/shvar.c b/src/settings/plugins/ifcfg-rh/shvar.c index f041aa6cb4..8e174bd56b 100644 --- a/src/settings/plugins/ifcfg-rh/shvar.c +++ b/src/settings/plugins/ifcfg-rh/shvar.c @@ -382,7 +382,7 @@ svSetValue (shvarFile *s, const char *key, const char *value, gboolean verbatim) newval = value; else newval = svEscape (value, &newval_free); - oldval = svGetValue (s, key, FALSE); + oldval = svGetValueFull (s, key, FALSE); if (!newval || !newval[0]) { /* delete value */ From c933bacd4a32b31db5423fa6c13602c66fd1e70f Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Wed, 20 May 2015 14:07:57 +0200 Subject: [PATCH 5/9] ifcfg-rh: add svSetValueFull() to support writing empty values svSetValue() treated the empty word like %NULL. Handle empty differently from unset. (cherry picked from commit 0348bc9195b423f06cee6c4d8ff0a85befcc4882) --- src/settings/plugins/ifcfg-rh/shvar.c | 10 +++++++++- src/settings/plugins/ifcfg-rh/shvar.h | 1 + 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/settings/plugins/ifcfg-rh/shvar.c b/src/settings/plugins/ifcfg-rh/shvar.c index 8e174bd56b..4a5ca1d186 100644 --- a/src/settings/plugins/ifcfg-rh/shvar.c +++ b/src/settings/plugins/ifcfg-rh/shvar.c @@ -368,6 +368,14 @@ svGetValueInt64 (shvarFile *s, const char *key, guint base, gint64 min, gint64 m */ void svSetValue (shvarFile *s, const char *key, const char *value, gboolean verbatim) +{ + svSetValueFull (s, key, value && value[0] ? value : NULL, verbatim); +} + +/* Same as svSetValue() but it preserves empty @value -- contrary to + * svSetValue() for which "" effectively means to remove the value. */ +void +svSetValueFull (shvarFile *s, const char *key, const char *value, gboolean verbatim) { gs_free char *newval_free = NULL; gs_free char *oldval = NULL; @@ -384,7 +392,7 @@ svSetValue (shvarFile *s, const char *key, const char *value, gboolean verbatim) newval = svEscape (value, &newval_free); oldval = svGetValueFull (s, key, FALSE); - if (!newval || !newval[0]) { + if (!newval) { /* delete value */ if (oldval) { /* delete line */ diff --git a/src/settings/plugins/ifcfg-rh/shvar.h b/src/settings/plugins/ifcfg-rh/shvar.h index 738bce6d11..4902541b00 100644 --- a/src/settings/plugins/ifcfg-rh/shvar.h +++ b/src/settings/plugins/ifcfg-rh/shvar.h @@ -72,6 +72,7 @@ gint64 svGetValueInt64 (shvarFile *s, const char *key, guint base, gint64 min, g * to the top of the file. */ void svSetValue (shvarFile *s, const char *key, const char *value, gboolean verbatim); +void svSetValueFull (shvarFile *s, const char *key, const char *value, gboolean verbatim); /* Write the current contents iff modified. Returns FALSE on error From b81bbc134cb7b5ec5f56372fcff07080cf59bafd Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Thu, 21 May 2015 13:00:40 +0200 Subject: [PATCH 6/9] cli: refactor property to string conversion Instead of having a get_func() and out2in_func(), have only one get_func() that accepts an argument of the output format. This way, a conversion to parsable input format, doesn't have to go first thourgh get_func() and mangle the pretty string in out2in_func(). This fixes conversions via nmc_property_out2in_cut_paren(). For example, nmc_property_802_1X_get_private_key_password_flags() would return a localized string _("0 (none)"). There is no guarantee that out2in_func() would find the expected output format after localizing. This also fixes nmc_property_out2in_routes() which expected a format "dst =" (would be "ip =") and expects mandatory 'nh' and 'mt' arguments. In fact, the regex didn't match and nmc_property_out2in_routes() always failed. While at it, also combine the implementation of nmc_property_ipv4_get_routes() and nmc_property_ipv6_get_routes(). (cherry picked from commit 8a14851f93211baaa040a40d5dadfa1e3eb4f1e2) --- clients/cli/connections.c | 2 +- clients/cli/settings.c | 687 ++++++++++++++++++-------------------- clients/cli/settings.h | 6 +- 3 files changed, 323 insertions(+), 372 deletions(-) diff --git a/clients/cli/connections.c b/clients/cli/connections.c index 71eeb20724..e041314bac 100644 --- a/clients/cli/connections.c +++ b/clients/cli/connections.c @@ -7221,7 +7221,7 @@ property_edit_submenu (NmCli *nmc, case NMC_EDITOR_SUB_CMD_CHANGE: rl_startup_hook = nmc_rl_set_deftext; - nmc_rl_pre_input_deftext = nmc_setting_get_property_out2in (curr_setting, prop_name, NULL); + nmc_rl_pre_input_deftext = nmc_setting_get_property_parsable (curr_setting, prop_name, NULL); prop_val_user = nmc_readline (_("Edit '%s' value: "), prop_name); nmc_property_get_gvalue (curr_setting, prop_name, &prop_g_value); diff --git a/clients/cli/settings.c b/clients/cli/settings.c index 166c3076c0..4223603c4e 100644 --- a/clients/cli/settings.c +++ b/clients/cli/settings.c @@ -33,6 +33,11 @@ /* Forward declarations */ static char *wep_key_type_to_string (NMWepKeyType type); +typedef enum { + NMC_PROPERTY_GET_PRETTY, + NMC_PROPERTY_GET_PARSABLE, +} NmcPropertyGetType; + /* Helper macro to define fields */ #define SETTING_FIELD(setting, width) { setting, N_(setting), width, NULL, FALSE, FALSE, 0 } @@ -745,8 +750,11 @@ vlan_priorities_to_string (NMSettingVlan *s_vlan, NMVlanPriorityMap map) } static char * -ip6_privacy_to_string (NMSettingIP6ConfigPrivacy ip6_privacy) +ip6_privacy_to_string (NMSettingIP6ConfigPrivacy ip6_privacy, NmcPropertyGetType get_type) { + if (get_type == NMC_PROPERTY_GET_PARSABLE) + return g_strdup_printf ("%d", ip6_privacy); + switch (ip6_privacy) { case NM_SETTING_IP6_CONFIG_PRIVACY_DISABLED: return g_strdup_printf (_("%d (disabled)"), ip6_privacy); @@ -760,8 +768,11 @@ ip6_privacy_to_string (NMSettingIP6ConfigPrivacy ip6_privacy) } static char * -autoconnect_slaves_to_string (NMSettingConnectionAutoconnectSlaves autoconnect_slaves) +autoconnect_slaves_to_string (NMSettingConnectionAutoconnectSlaves autoconnect_slaves, NmcPropertyGetType get_type) { + if (get_type == NMC_PROPERTY_GET_PARSABLE) + return g_strdup_printf ("%d", (int) autoconnect_slaves); + switch (autoconnect_slaves) { case NM_SETTING_CONNECTION_AUTOCONNECT_SLAVES_NO: return g_strdup_printf (_("%d (no)"), autoconnect_slaves); @@ -774,15 +785,18 @@ autoconnect_slaves_to_string (NMSettingConnectionAutoconnectSlaves autoconnect_s } static char * -secret_flags_to_string (guint32 flags) +secret_flags_to_string (guint32 flags, NmcPropertyGetType get_type) { GString *flag_str; + if (get_type == NMC_PROPERTY_GET_PARSABLE) + return g_strdup_printf ("%u", flags); + if (flags == 0) return g_strdup (_("0 (none)")); flag_str = g_string_new (NULL); - g_string_printf (flag_str, "%d (", flags); + g_string_printf (flag_str, "%u (", flags); if (flags & NM_SETTING_SECRET_FLAG_AGENT_OWNED) g_string_append (flag_str, _("agent-owned, ")); @@ -816,7 +830,7 @@ vpn_data_item (const char *key, const char *value, gpointer user_data) /* === property get functions === */ #define DEFINE_GETTER(func_name, property_name) \ static char * \ - func_name (NMSetting *setting) \ + func_name (NMSetting *setting, NmcPropertyGetType get_type) \ { \ char *s; \ GValue val = G_VALUE_INIT; \ @@ -829,7 +843,7 @@ vpn_data_item (const char *key, const char *value, gpointer user_data) #define DEFINE_SECRET_FLAGS_GETTER(func_name, property_name) \ static char * \ - func_name (NMSetting *setting) \ + func_name (NMSetting *setting, NmcPropertyGetType get_type) \ { \ guint v; \ GValue val = G_VALUE_INIT; \ @@ -837,7 +851,7 @@ vpn_data_item (const char *key, const char *value, gpointer user_data) g_object_get_property (G_OBJECT (setting), property_name, &val); \ v = g_value_get_uint (&val); \ g_value_unset (&val); \ - return secret_flags_to_string (v); \ + return secret_flags_to_string (v, get_type); \ } /* --- NM_SETTING_802_1X_SETTING_NAME property get functions --- */ @@ -868,7 +882,7 @@ DEFINE_SECRET_FLAGS_GETTER (nmc_property_802_1X_get_pin_flags, NM_SETTING_802_1X DEFINE_GETTER (nmc_property_802_1X_get_system_ca_certs, NM_SETTING_802_1X_SYSTEM_CA_CERTS) static char * -nmc_property_802_1X_get_ca_cert (NMSetting *setting) +nmc_property_802_1X_get_ca_cert (NMSetting *setting, NmcPropertyGetType get_type) { NMSetting8021x *s_8021X = NM_SETTING_802_1X (setting); NMSetting8021xCKScheme scheme; @@ -884,7 +898,7 @@ nmc_property_802_1X_get_ca_cert (NMSetting *setting) } static char * -nmc_property_802_1X_get_client_cert (NMSetting *setting) +nmc_property_802_1X_get_client_cert (NMSetting *setting, NmcPropertyGetType get_type) { NMSetting8021x *s_8021X = NM_SETTING_802_1X (setting); NMSetting8021xCKScheme scheme; @@ -900,7 +914,7 @@ nmc_property_802_1X_get_client_cert (NMSetting *setting) } static char * -nmc_property_802_1X_get_phase2_ca_cert (NMSetting *setting) +nmc_property_802_1X_get_phase2_ca_cert (NMSetting *setting, NmcPropertyGetType get_type) { NMSetting8021x *s_8021X = NM_SETTING_802_1X (setting); NMSetting8021xCKScheme scheme; @@ -916,7 +930,7 @@ nmc_property_802_1X_get_phase2_ca_cert (NMSetting *setting) } static char * -nmc_property_802_1X_get_phase2_client_cert (NMSetting *setting) +nmc_property_802_1X_get_phase2_client_cert (NMSetting *setting, NmcPropertyGetType get_type) { NMSetting8021x *s_8021X = NM_SETTING_802_1X (setting); NMSetting8021xCKScheme scheme; @@ -932,14 +946,14 @@ nmc_property_802_1X_get_phase2_client_cert (NMSetting *setting) } static char * -nmc_property_802_1X_get_password_raw (NMSetting *setting) +nmc_property_802_1X_get_password_raw (NMSetting *setting, NmcPropertyGetType get_type) { NMSetting8021x *s_8021X = NM_SETTING_802_1X (setting); return bytes_to_string (nm_setting_802_1x_get_password_raw (s_8021X)); } static char * -nmc_property_802_1X_get_private_key (NMSetting *setting) +nmc_property_802_1X_get_private_key (NMSetting *setting, NmcPropertyGetType get_type) { NMSetting8021x *s_8021X = NM_SETTING_802_1X (setting); NMSetting8021xCKScheme scheme; @@ -955,7 +969,7 @@ nmc_property_802_1X_get_private_key (NMSetting *setting) } static char * -nmc_property_802_1X_get_phase2_private_key (NMSetting *setting) +nmc_property_802_1X_get_phase2_private_key (NMSetting *setting, NmcPropertyGetType get_type) { NMSetting8021x *s_8021X = NM_SETTING_802_1X (setting); NMSetting8021xCKScheme scheme; @@ -984,7 +998,7 @@ DEFINE_GETTER (nmc_property_bluetooth_get_bdaddr, NM_SETTING_BLUETOOTH_BDADDR) DEFINE_GETTER (nmc_property_bluetooth_get_type, NM_SETTING_BLUETOOTH_TYPE) static char * -nmc_property_bond_get_options (NMSetting *setting) +nmc_property_bond_get_options (NMSetting *setting, NmcPropertyGetType get_type) { NMSettingBond *s_bond = NM_SETTING_BOND (setting); GString *bond_options_s; @@ -1040,7 +1054,7 @@ DEFINE_GETTER (nmc_property_connection_get_timestamp, NM_SETTING_CONNECTION_TIME DEFINE_GETTER (nmc_property_connection_get_read_only, NM_SETTING_CONNECTION_READ_ONLY) static char * -nmc_property_connection_get_permissions (NMSetting *setting) +nmc_property_connection_get_permissions (NMSetting *setting, NmcPropertyGetType get_type) { NMSettingConnection *s_con = NM_SETTING_CONNECTION (setting); GString *perm = NULL; @@ -1064,10 +1078,10 @@ DEFINE_GETTER (nmc_property_connection_get_master, NM_SETTING_CONNECTION_MASTER) DEFINE_GETTER (nmc_property_connection_get_slave_type, NM_SETTING_CONNECTION_SLAVE_TYPE) static char * -nmc_property_connection_get_autoconnect_slaves (NMSetting *setting) +nmc_property_connection_get_autoconnect_slaves (NMSetting *setting, NmcPropertyGetType get_type) { NMSettingConnection *s_con = NM_SETTING_CONNECTION (setting); - return autoconnect_slaves_to_string (nm_setting_connection_get_autoconnect_slaves (s_con)); + return autoconnect_slaves_to_string (nm_setting_connection_get_autoconnect_slaves (s_con), get_type); } DEFINE_GETTER (nmc_property_connection_get_secondaries, NM_SETTING_CONNECTION_SECONDARIES) @@ -1104,7 +1118,7 @@ dcb_flags_to_string (NMSettingDcbFlags flags) #define DEFINE_DCB_FLAGS_GETTER(func_name, property_name) \ static char * \ - func_name (NMSetting *setting) \ + func_name (NMSetting *setting, NmcPropertyGetType get_type) \ { \ guint v; \ GValue val = G_VALUE_INIT; \ @@ -1123,7 +1137,7 @@ dcb_app_priority_to_string (gint priority) #define DEFINE_DCB_APP_PRIORITY_GETTER(func_name, property_name) \ static char * \ - func_name (NMSetting *setting) \ + func_name (NMSetting *setting, NmcPropertyGetType get_type) \ { \ int v; \ GValue val = G_VALUE_INIT; \ @@ -1136,7 +1150,7 @@ dcb_app_priority_to_string (gint priority) #define DEFINE_DCB_BOOL_GETTER(func_name, getter_func_name) \ static char * \ - func_name (NMSetting *setting) \ + func_name (NMSetting *setting, NmcPropertyGetType get_type) \ { \ NMSettingDcb *s_dcb = NM_SETTING_DCB (setting); \ GString *str; \ @@ -1158,7 +1172,7 @@ dcb_app_priority_to_string (gint priority) #define DEFINE_DCB_UINT_GETTER(func_name, getter_func_name) \ static char * \ - func_name (NMSetting *setting) \ + func_name (NMSetting *setting, NmcPropertyGetType get_type) \ { \ NMSettingDcb *s_dcb = NM_SETTING_DCB (setting); \ GString *str; \ @@ -1208,7 +1222,7 @@ DEFINE_GETTER (nmc_property_ib_get_mac_address, NM_SETTING_INFINIBAND_MAC_ADDRES DEFINE_GETTER (nmc_property_ib_get_transport_mode, NM_SETTING_INFINIBAND_TRANSPORT_MODE) static char * -nmc_property_ib_get_mtu (NMSetting *setting) +nmc_property_ib_get_mtu (NMSetting *setting, NmcPropertyGetType get_type) { NMSettingInfiniband *s_infiniband = NM_SETTING_INFINIBAND (setting); int mtu; @@ -1221,7 +1235,7 @@ nmc_property_ib_get_mtu (NMSetting *setting) } static char * -nmc_property_ib_get_p_key (NMSetting *setting) +nmc_property_ib_get_p_key (NMSetting *setting, NmcPropertyGetType get_type) { NMSettingInfiniband *s_infiniband = NM_SETTING_INFINIBAND (setting); int p_key; @@ -1241,7 +1255,7 @@ DEFINE_GETTER (nmc_property_ipv4_get_dns, NM_SETTING_IP_CONFIG_DNS) DEFINE_GETTER (nmc_property_ipv4_get_dns_search, NM_SETTING_IP_CONFIG_DNS_SEARCH) static char * -nmc_property_ip_get_addresses (NMSetting *setting) +nmc_property_ip_get_addresses (NMSetting *setting, NmcPropertyGetType get_type) { NMSettingIPConfig *s_ip = NM_SETTING_IP_CONFIG (setting); GString *printable; @@ -1266,42 +1280,62 @@ nmc_property_ip_get_addresses (NMSetting *setting) } static char * -nmc_property_ipv4_get_routes (NMSetting *setting) +nmc_property_ipvx_get_routes (NMSetting *setting, NmcPropertyGetType get_type) { - NMSettingIPConfig *s_ip4 = NM_SETTING_IP_CONFIG (setting); + NMSettingIPConfig *s_ip = NM_SETTING_IP_CONFIG (setting); GString *printable; guint32 num_routes, i; NMIPRoute *route; printable = g_string_new (NULL); - num_routes = nm_setting_ip_config_get_num_routes (s_ip4); + num_routes = nm_setting_ip_config_get_num_routes (s_ip); for (i = 0; i < num_routes; i++) { - route = nm_setting_ip_config_get_route (s_ip4, i); + route = nm_setting_ip_config_get_route (s_ip, i); - if (printable->len > 0) - g_string_append (printable, "; "); + if (get_type == NMC_PROPERTY_GET_PARSABLE) { + if (printable->len > 0) + g_string_append (printable, ", "); - g_string_append (printable, "{ "); + g_string_append_printf (printable, "%s/%u", + nm_ip_route_get_dest (route), + nm_ip_route_get_prefix (route)); - g_string_append_printf (printable, "ip = %s/%u", - nm_ip_route_get_dest (route), - nm_ip_route_get_prefix (route)); + if (nm_ip_route_get_next_hop (route)) + g_string_append_printf (printable, " %s", nm_ip_route_get_next_hop (route)); + if (nm_ip_route_get_metric (route) != -1) + g_string_append_printf (printable, " %u", (guint32) nm_ip_route_get_metric (route)); + } else { + if (printable->len > 0) + g_string_append (printable, "; "); - if (nm_ip_route_get_next_hop (route)) { - g_string_append_printf (printable, ", nh = %s", - nm_ip_route_get_next_hop (route)); + g_string_append (printable, "{ "); + + g_string_append_printf (printable, "ip = %s/%u", + nm_ip_route_get_dest (route), + nm_ip_route_get_prefix (route)); + + if (nm_ip_route_get_next_hop (route)) { + g_string_append_printf (printable, ", nh = %s", + nm_ip_route_get_next_hop (route)); + } + + if (nm_ip_route_get_metric (route) != -1) + g_string_append_printf (printable, ", mt = %u", (guint32) nm_ip_route_get_metric (route)); + + g_string_append (printable, " }"); } - - if (nm_ip_route_get_metric (route) != -1) - g_string_append_printf (printable, ", mt = %u", (guint32) nm_ip_route_get_metric (route)); - - g_string_append (printable, " }"); } return g_string_free (printable, FALSE); } +static char * +nmc_property_ipv4_get_routes (NMSetting *setting, NmcPropertyGetType get_type) +{ + return nmc_property_ipvx_get_routes (setting, get_type); +} + DEFINE_GETTER (nmc_property_ipv4_get_gateway, NM_SETTING_IP_CONFIG_GATEWAY) DEFINE_GETTER (nmc_property_ipv4_get_route_metric, NM_SETTING_IP_CONFIG_ROUTE_METRIC) DEFINE_GETTER (nmc_property_ipv4_get_ignore_auto_routes, NM_SETTING_IP_CONFIG_IGNORE_AUTO_ROUTES) @@ -1318,40 +1352,9 @@ DEFINE_GETTER (nmc_property_ipv6_get_dns, NM_SETTING_IP_CONFIG_DNS) DEFINE_GETTER (nmc_property_ipv6_get_dns_search, NM_SETTING_IP_CONFIG_DNS_SEARCH) static char * -nmc_property_ipv6_get_routes (NMSetting *setting) +nmc_property_ipv6_get_routes (NMSetting *setting, NmcPropertyGetType get_type) { - NMSettingIPConfig *s_ip6 = NM_SETTING_IP_CONFIG (setting); - GString *printable; - guint32 num_routes, i; - NMIPRoute *route; - - printable = g_string_new (NULL); - - num_routes = nm_setting_ip_config_get_num_routes (s_ip6); - for (i = 0; i < num_routes; i++) { - route = nm_setting_ip_config_get_route (s_ip6, i); - - if (printable->len > 0) - g_string_append (printable, "; "); - - g_string_append (printable, "{ "); - - g_string_append_printf (printable, "ip = %s/%u", - nm_ip_route_get_dest (route), - nm_ip_route_get_prefix (route)); - - if (nm_ip_route_get_next_hop (route)) { - g_string_append_printf (printable, ", nh = %s", - nm_ip_route_get_next_hop (route)); - } - - if (nm_ip_route_get_metric (route) != -1) - g_string_append_printf (printable, ", mt = %u", (guint32) nm_ip_route_get_metric (route)); - - g_string_append (printable, " }"); - } - - return g_string_free (printable, FALSE); + return nmc_property_ipvx_get_routes (setting, get_type); } DEFINE_GETTER (nmc_property_ipv6_get_gateway, NM_SETTING_IP_CONFIG_GATEWAY) @@ -1364,10 +1367,10 @@ DEFINE_GETTER (nmc_property_ipv6_get_dhcp_send_hostname, NM_SETTING_IP_CONFIG_DH DEFINE_GETTER (nmc_property_ipv6_get_dhcp_hostname, NM_SETTING_IP_CONFIG_DHCP_HOSTNAME) static char * -nmc_property_ipv6_get_ip6_privacy (NMSetting *setting) +nmc_property_ipv6_get_ip6_privacy (NMSetting *setting, NmcPropertyGetType get_type) { NMSettingIP6Config *s_ip6 = NM_SETTING_IP6_CONFIG (setting); - return ip6_privacy_to_string (nm_setting_ip6_config_get_ip6_privacy (s_ip6)); + return ip6_privacy_to_string (nm_setting_ip6_config_get_ip6_privacy (s_ip6), get_type); } /* --- NM_SETTING_OLPC_MESH_SETTING_NAME property get functions --- */ @@ -1375,7 +1378,7 @@ DEFINE_GETTER (nmc_property_olpc_get_channel, NM_SETTING_OLPC_MESH_CHANNEL) DEFINE_GETTER (nmc_property_olpc_get_anycast_address, NM_SETTING_OLPC_MESH_DHCP_ANYCAST_ADDRESS) static char * -nmc_property_olpc_get_ssid (NMSetting *setting) +nmc_property_olpc_get_ssid (NMSetting *setting, NmcPropertyGetType get_type) { NMSettingOlpcMesh *s_olpc_mesh = NM_SETTING_OLPC_MESH (setting); GBytes *ssid; @@ -1428,21 +1431,21 @@ DEFINE_GETTER (nmc_property_vlan_get_id, NM_SETTING_VLAN_ID) static char * -nmc_property_vlan_get_flags (NMSetting *setting) +nmc_property_vlan_get_flags (NMSetting *setting, NmcPropertyGetType get_type) { NMSettingVlan *s_vlan = NM_SETTING_VLAN (setting); return vlan_flags_to_string (nm_setting_vlan_get_flags (s_vlan)); } static char * -nmc_property_vlan_get_ingress_priority_map (NMSetting *setting) +nmc_property_vlan_get_ingress_priority_map (NMSetting *setting, NmcPropertyGetType get_type) { NMSettingVlan *s_vlan = NM_SETTING_VLAN (setting); return vlan_priorities_to_string (s_vlan, NM_VLAN_INGRESS_MAP); } static char * -nmc_property_vlan_get_egress_priority_map (NMSetting *setting) +nmc_property_vlan_get_egress_priority_map (NMSetting *setting, NmcPropertyGetType get_type) { NMSettingVlan *s_vlan = NM_SETTING_VLAN (setting); return vlan_priorities_to_string (s_vlan, NM_VLAN_EGRESS_MAP); @@ -1453,7 +1456,7 @@ DEFINE_GETTER (nmc_property_vpn_get_service_type, NM_SETTING_VPN_SERVICE_TYPE) DEFINE_GETTER (nmc_property_vpn_get_user_name, NM_SETTING_VPN_USER_NAME) static char * -nmc_property_vpn_get_data (NMSetting *setting) +nmc_property_vpn_get_data (NMSetting *setting, NmcPropertyGetType get_type) { NMSettingVpn *s_vpn = NM_SETTING_VPN (setting); GString *data_item_str; @@ -1465,7 +1468,7 @@ nmc_property_vpn_get_data (NMSetting *setting) } static char * -nmc_property_vpn_get_secrets (NMSetting *setting) +nmc_property_vpn_get_secrets (NMSetting *setting, NmcPropertyGetType get_type) { NMSettingVpn *s_vpn = NM_SETTING_VPN (setting); GString *secret_str; @@ -1495,7 +1498,7 @@ DEFINE_GETTER (nmc_property_wired_get_s390_nettype, NM_SETTING_WIRED_S390_NETTYP DEFINE_GETTER (nmc_property_wired_get_s390_options, NM_SETTING_WIRED_S390_OPTIONS) static char * -nmc_property_wired_get_mtu (NMSetting *setting) +nmc_property_wired_get_mtu (NMSetting *setting, NmcPropertyGetType get_type) { NMSettingWired *s_wired = NM_SETTING_WIRED (setting); int mtu; @@ -1521,7 +1524,7 @@ DEFINE_GETTER (nmc_property_wireless_get_seen_bssids, NM_SETTING_WIRELESS_SEEN_B DEFINE_GETTER (nmc_property_wireless_get_hidden, NM_SETTING_WIRELESS_HIDDEN) static char * -nmc_property_wireless_get_ssid (NMSetting *setting) +nmc_property_wireless_get_ssid (NMSetting *setting, NmcPropertyGetType get_type) { NMSettingWireless *s_wireless = NM_SETTING_WIRELESS (setting); GBytes *ssid; @@ -1537,7 +1540,7 @@ nmc_property_wireless_get_ssid (NMSetting *setting) } static char * -nmc_property_wireless_get_mtu (NMSetting *setting) +nmc_property_wireless_get_mtu (NMSetting *setting, NmcPropertyGetType get_type) { NMSettingWireless *s_wireless = NM_SETTING_WIRELESS (setting); int mtu; @@ -1564,35 +1567,35 @@ DEFINE_GETTER (nmc_property_wifi_sec_get_leap_password, NM_SETTING_WIRELESS_SECU DEFINE_SECRET_FLAGS_GETTER (nmc_property_wifi_sec_get_leap_password_flags, NM_SETTING_WIRELESS_SECURITY_LEAP_PASSWORD_FLAGS) static char * -nmc_property_wifi_sec_get_wep_key0 (NMSetting *setting) +nmc_property_wifi_sec_get_wep_key0 (NMSetting *setting, NmcPropertyGetType get_type) { NMSettingWirelessSecurity *s_wireless_sec = NM_SETTING_WIRELESS_SECURITY (setting); return g_strdup (nm_setting_wireless_security_get_wep_key (s_wireless_sec, 0)); } static char * -nmc_property_wifi_sec_get_wep_key1 (NMSetting *setting) +nmc_property_wifi_sec_get_wep_key1 (NMSetting *setting, NmcPropertyGetType get_type) { NMSettingWirelessSecurity *s_wireless_sec = NM_SETTING_WIRELESS_SECURITY (setting); return g_strdup (nm_setting_wireless_security_get_wep_key (s_wireless_sec, 1)); } static char * -nmc_property_wifi_sec_get_wep_key2 (NMSetting *setting) +nmc_property_wifi_sec_get_wep_key2 (NMSetting *setting, NmcPropertyGetType get_type) { NMSettingWirelessSecurity *s_wireless_sec = NM_SETTING_WIRELESS_SECURITY (setting); return g_strdup (nm_setting_wireless_security_get_wep_key (s_wireless_sec, 2)); } static char * -nmc_property_wifi_sec_get_wep_key3 (NMSetting *setting) +nmc_property_wifi_sec_get_wep_key3 (NMSetting *setting, NmcPropertyGetType get_type) { NMSettingWirelessSecurity *s_wireless_sec = NM_SETTING_WIRELESS_SECURITY (setting); return g_strdup (nm_setting_wireless_security_get_wep_key (s_wireless_sec, 3)); } static char * -nmc_property_wifi_sec_get_wep_key_type (NMSetting *setting) +nmc_property_wifi_sec_get_wep_key_type (NMSetting *setting, NmcPropertyGetType get_type) { NMSettingWirelessSecurity *s_wireless_sec = NM_SETTING_WIRELESS_SECURITY (setting); return wep_key_type_to_string (nm_setting_wireless_security_get_wep_key_type (s_wireless_sec)); @@ -1625,12 +1628,11 @@ register_nmcli_value_transforms (void) /* Main hash table storing function pointer for manipulating properties */ static GHashTable *nmc_properties = NULL; -typedef char * (*NmcPropertyGetFunc) (NMSetting *); +typedef char * (*NmcPropertyGetFunc) (NMSetting *, NmcPropertyGetType); typedef gboolean (*NmcPropertySetFunc) (NMSetting *, const char *, const char *, GError **); typedef gboolean (*NmcPropertyRemoveFunc) (NMSetting *, const char *, const char *, guint32, GError **); typedef const char * (*NmcPropertyDescribeFunc) (NMSetting *, const char *); typedef const char ** (*NmcPropertyValuesFunc) (NMSetting *, const char *); -typedef char * (*NmcPropertyOut2InFunc) (const char *); typedef struct { NmcPropertyGetFunc get_func; /* func getting property values */ @@ -1638,7 +1640,6 @@ typedef struct { NmcPropertyRemoveFunc remove_func; /* func removing items from container options */ NmcPropertyDescribeFunc describe_func; /* func returning property description */ NmcPropertyValuesFunc values_func; /* func returning allowed property values */ - NmcPropertyOut2InFunc out2in_func; /* func converting property values from output to input format */ } NmcPropertyFuncs; /* @@ -2449,17 +2450,6 @@ done: return TRUE; \ } -static char * -nmc_property_out2in_cut_paren (const char *out_format) -{ - const char *p; - size_t n; - - p = strstr (out_format, " ("); - n = p ? p - out_format : strlen (out_format); - return g_strndup (out_format, n); -} - /* --- NM_SETTING_CONNECTION_SETTING_NAME property setter functions --- */ #if 0 /* @@ -3459,37 +3449,6 @@ nmc_property_ipv4_describe_routes (NMSetting *setting, const char *prop) " 10.1.2.0/24\n"); } -static char * -nmc_property_out2in_routes (const char *out_format) -{ - GRegex *regex; - GString *str; - char **strv; - int i; - - str = g_string_sized_new (128); - regex = g_regex_new ("\\{ dst = ([^/]+)/([^,]+), nh = ([^,]+), mt = ([^ ]+) \\}", 0, 0, NULL); - - strv = g_regex_split (regex, out_format, 0); - for (i = 1; strv && strv[i] && strv[i+1] && strv[i+2] && strv[i+3]; i=i+5) { - g_string_append (str, strv[i]); /* IP */ - g_string_append_c (str, '/'); - g_string_append (str, strv[i+1]); /* prefix */ - g_string_append_c (str, ' '); - g_string_append (str, strv[i+2]); /* next hop */ - g_string_append_c (str, ' '); - g_string_append (str, strv[i+3]); /* metric */ - g_string_append (str, ", "); - } - if (str->len > 0) - g_string_truncate (str, str->len - 2); - - g_strfreev (strv); - g_regex_unref (regex); - - return g_string_free (str, FALSE); -} - /* --- NM_SETTING_IP6_CONFIG_SETTING_NAME property setter functions --- */ /* 'method' */ static const char *ipv6_valid_methods[] = { @@ -3807,7 +3766,7 @@ nmc_property_olpc_set_channel (NMSetting *setting, const char *prop, const char /* --- NM_SETTING_SERIAL_SETTING_NAME property setter functions --- */ static char * -nmc_property_serial_get_parity (NMSetting *setting) +nmc_property_serial_get_parity (NMSetting *setting, NmcPropertyGetType get_type) { NMSettingSerial *s_serial = NM_SETTING_SERIAL (setting); @@ -4756,7 +4715,7 @@ nmc_add_prop_funcs (char *key, NmcPropertyRemoveFunc remove_func, NmcPropertyDescribeFunc describe_func, NmcPropertyValuesFunc values_func, - NmcPropertyOut2InFunc out2in_func) + gpointer dummy) { NmcPropertyFuncs *item = g_malloc0 (sizeof (NmcPropertyFuncs)); item->get_func = get_func; @@ -4764,7 +4723,6 @@ nmc_add_prop_funcs (char *key, item->remove_func = remove_func; item->describe_func = describe_func; item->values_func = values_func; - item->out2in_func = out2in_func; g_hash_table_insert (nmc_properties, key, item); } @@ -4929,7 +4887,7 @@ nmc_properties_init (void) NULL, NULL, NULL, - nmc_property_out2in_cut_paren); + NULL); nmc_add_prop_funcs (GLUE (802_1X, PASSWORD_RAW), nmc_property_802_1X_get_password_raw, nmc_property_802_1X_set_password_raw, @@ -4943,7 +4901,7 @@ nmc_properties_init (void) NULL, NULL, NULL, - nmc_property_out2in_cut_paren); + NULL); nmc_add_prop_funcs (GLUE (802_1X, PRIVATE_KEY), nmc_property_802_1X_get_private_key, nmc_property_802_1X_set_private_key, @@ -4964,7 +4922,7 @@ nmc_properties_init (void) NULL, NULL, NULL, - nmc_property_out2in_cut_paren); + NULL); nmc_add_prop_funcs (GLUE (802_1X, PHASE2_PRIVATE_KEY), nmc_property_802_1X_get_phase2_private_key, nmc_property_802_1X_set_phase2_private_key, @@ -4985,7 +4943,7 @@ nmc_properties_init (void) NULL, NULL, NULL, - nmc_property_out2in_cut_paren); + NULL); nmc_add_prop_funcs (GLUE (802_1X, PIN), nmc_property_802_1X_get_pin, nmc_property_set_string, @@ -4999,7 +4957,7 @@ nmc_properties_init (void) NULL, NULL, NULL, - nmc_property_out2in_cut_paren); + NULL); nmc_add_prop_funcs (GLUE (802_1X, SYSTEM_CA_CERTS), nmc_property_802_1X_get_system_ca_certs, nmc_property_set_bool, @@ -5029,7 +4987,7 @@ nmc_properties_init (void) NULL, NULL, NULL, - nmc_property_out2in_cut_paren); + NULL); nmc_add_prop_funcs (GLUE (ADSL, PROTOCOL), nmc_property_adsl_get_protocol, nmc_property_adsl_set_protocol, @@ -5186,7 +5144,7 @@ nmc_properties_init (void) NULL, NULL, NULL, - nmc_property_out2in_cut_paren); + NULL); /* Add editable properties for NM_SETTING_CONNECTION_SETTING_NAME */ nmc_add_prop_funcs (GLUE (CONNECTION, ID), @@ -5430,7 +5388,7 @@ nmc_properties_init (void) NULL, NULL, NULL, - nmc_property_out2in_cut_paren); + NULL); nmc_add_prop_funcs (GLUE (GSM, APN), nmc_property_gsm_get_apn, nmc_property_set_string, @@ -5458,7 +5416,7 @@ nmc_properties_init (void) NULL, NULL, NULL, - nmc_property_out2in_cut_paren); + NULL); nmc_add_prop_funcs (GLUE (GSM, HOME_ONLY), nmc_property_gsm_get_home_only, nmc_property_set_bool, @@ -5546,7 +5504,7 @@ nmc_properties_init (void) nmc_property_ipv4_remove_routes, nmc_property_ipv4_describe_routes, NULL, - nmc_property_out2in_routes); + NULL); nmc_add_prop_funcs (GLUE_IP (4, ROUTE_METRIC), nmc_property_ipv4_get_route_metric, nmc_property_set_int64, @@ -5646,7 +5604,7 @@ nmc_properties_init (void) nmc_property_ipv6_remove_routes, nmc_property_ipv6_describe_routes, NULL, - nmc_property_out2in_routes); + NULL); nmc_add_prop_funcs (GLUE_IP (6, ROUTE_METRIC), nmc_property_ipv6_get_route_metric, nmc_property_set_int64, @@ -5688,7 +5646,7 @@ nmc_properties_init (void) NULL, NULL, NULL, - nmc_property_out2in_cut_paren); + NULL); nmc_add_prop_funcs (GLUE_IP (6, DHCP_SEND_HOSTNAME), nmc_property_ipv6_get_dhcp_send_hostname, nmc_property_set_bool, @@ -5883,7 +5841,7 @@ nmc_properties_init (void) NULL, NULL, NULL, - nmc_property_out2in_cut_paren); + NULL); /* Add editable properties for NM_SETTING_SERIAL_SETTING_NAME */ nmc_add_prop_funcs (GLUE (SERIAL, BAUD), @@ -6290,7 +6248,7 @@ nmc_properties_init (void) NULL, NULL, NULL, - nmc_property_out2in_cut_paren); + NULL); nmc_add_prop_funcs (GLUE (WIRELESS_SECURITY, WEP_KEY_TYPE), nmc_property_wifi_sec_get_wep_key_type, nmc_property_wifi_set_wep_key_type, @@ -6311,7 +6269,7 @@ nmc_properties_init (void) NULL, NULL, NULL, - nmc_property_out2in_cut_paren); + NULL); nmc_add_prop_funcs (GLUE (WIRELESS_SECURITY, LEAP_PASSWORD), nmc_property_wifi_sec_get_leap_password, nmc_property_set_string, @@ -6325,7 +6283,7 @@ nmc_properties_init (void) NULL, NULL, NULL, - nmc_property_out2in_cut_paren); + NULL); } void @@ -6352,7 +6310,7 @@ nmc_properties_find (const char *s_name, const char *p_name) } static char * -get_property_val (NMSetting *setting, const char *prop, gboolean convert, GError **error) +get_property_val (NMSetting *setting, const char *prop, NmcPropertyGetType get_type, GError **error) { const NmcPropertyFuncs *item; @@ -6360,15 +6318,8 @@ get_property_val (NMSetting *setting, const char *prop, gboolean convert, GError g_return_val_if_fail (error == NULL || *error == NULL, FALSE); item = nmc_properties_find (nm_setting_get_name (setting), prop); - if (item && item->get_func) { - char *prop_val = item->get_func (setting); - if (convert && item->out2in_func) { - char *converted = item->out2in_func (prop_val); - g_free (prop_val); - return converted; - } else - return prop_val; - } + if (item && item->get_func) + return item->get_func (setting, get_type); g_set_error_literal (error, 1, 0, _("don't know how to get the property value")); return NULL; @@ -6384,17 +6335,17 @@ get_property_val (NMSetting *setting, const char *prop, gboolean convert, GError char * nmc_setting_get_property (NMSetting *setting, const char *prop, GError **error) { - return get_property_val (setting, prop, FALSE, error); + return get_property_val (setting, prop, NMC_PROPERTY_GET_PRETTY, error); } /* - * The same as nmc_setting_get_property(), but in addition converts - * usual output format into a simpler one, used as input in the editor. + * Similar to nmc_setting_get_property(), but returns the property in a string + * format that can be parsed via nmc_setting_set_property(). */ char * -nmc_setting_get_property_out2in (NMSetting *setting, const char *prop, GError **error) +nmc_setting_get_property_parsable (NMSetting *setting, const char *prop, GError **error) { - return get_property_val (setting, prop, TRUE, error); + return get_property_val (setting, prop, NMC_PROPERTY_GET_PARSABLE, error); } /* @@ -6626,7 +6577,7 @@ nmc_property_set_gvalue (NMSetting *setting, const char *prop, GValue *value) /*----------------------------------------------------------------------------*/ #define GET_SECRET(show, setting, func) \ - (show ? func (setting) : g_strdup (_(""))) + (show ? func (setting, NMC_PROPERTY_GET_PRETTY) : g_strdup (_(""))) static gboolean setting_connection_details (NMSetting *setting, NmCli *nmc, const char *one_prop, gboolean secrets) @@ -6646,21 +6597,21 @@ setting_connection_details (NMSetting *setting, NmCli *nmc, const char *one_pro arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_SECTION_PREFIX); set_val_str (arr, 0, g_strdup (nm_setting_get_name (setting))); - set_val_str (arr, 1, nmc_property_connection_get_id (setting)); - set_val_str (arr, 2, nmc_property_connection_get_uuid (setting)); - set_val_str (arr, 3, nmc_property_connection_get_interface_name (setting)); - set_val_str (arr, 4, nmc_property_connection_get_type (setting)); - set_val_str (arr, 5, nmc_property_connection_get_autoconnect (setting)); - set_val_str (arr, 6, nmc_property_connection_get_autoconnect_priority (setting)); - set_val_str (arr, 7, nmc_property_connection_get_timestamp (setting)); - set_val_str (arr, 8, nmc_property_connection_get_read_only (setting)); - set_val_str (arr, 9, nmc_property_connection_get_permissions (setting)); - set_val_str (arr, 10, nmc_property_connection_get_zone (setting)); - set_val_str (arr, 11, nmc_property_connection_get_master (setting)); - set_val_str (arr, 12, nmc_property_connection_get_slave_type (setting)); - set_val_str (arr, 13, nmc_property_connection_get_autoconnect_slaves (setting)); - set_val_str (arr, 14, nmc_property_connection_get_secondaries (setting)); - set_val_str (arr, 15, nmc_property_connection_get_gateway_ping_timeout (setting)); + set_val_str (arr, 1, nmc_property_connection_get_id (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 2, nmc_property_connection_get_uuid (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 3, nmc_property_connection_get_interface_name (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 4, nmc_property_connection_get_type (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 5, nmc_property_connection_get_autoconnect (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 6, nmc_property_connection_get_autoconnect_priority (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 7, nmc_property_connection_get_timestamp (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 8, nmc_property_connection_get_read_only (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 9, nmc_property_connection_get_permissions (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 10, nmc_property_connection_get_zone (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 11, nmc_property_connection_get_master (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 12, nmc_property_connection_get_slave_type (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 13, nmc_property_connection_get_autoconnect_slaves (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 14, nmc_property_connection_get_secondaries (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 15, nmc_property_connection_get_gateway_ping_timeout (setting, NMC_PROPERTY_GET_PRETTY)); g_ptr_array_add (nmc->output_data, arr); print_data (nmc); /* Print all data */ @@ -6686,17 +6637,17 @@ setting_wired_details (NMSetting *setting, NmCli *nmc, const char *one_prop, gb arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_SECTION_PREFIX); set_val_str (arr, 0, g_strdup (nm_setting_get_name (setting))); - set_val_str (arr, 1, nmc_property_wired_get_port (setting)); - set_val_str (arr, 2, nmc_property_wired_get_speed (setting)); - set_val_str (arr, 3, nmc_property_wired_get_duplex (setting)); - set_val_str (arr, 4, nmc_property_wired_get_auto_negotiate (setting)); - set_val_str (arr, 5, nmc_property_wired_get_mac_address (setting)); - set_val_str (arr, 6, nmc_property_wired_get_cloned_mac_address (setting)); - set_val_str (arr, 7, nmc_property_wired_get_mac_address_blacklist (setting)); - set_val_str (arr, 8, nmc_property_wired_get_mtu (setting)); - set_val_str (arr, 9, nmc_property_wired_get_s390_subchannels (setting)); - set_val_str (arr, 10, nmc_property_wired_get_s390_nettype (setting)); - set_val_str (arr, 11, nmc_property_wired_get_s390_options (setting)); + set_val_str (arr, 1, nmc_property_wired_get_port (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 2, nmc_property_wired_get_speed (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 3, nmc_property_wired_get_duplex (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 4, nmc_property_wired_get_auto_negotiate (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 5, nmc_property_wired_get_mac_address (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 6, nmc_property_wired_get_cloned_mac_address (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 7, nmc_property_wired_get_mac_address_blacklist (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 8, nmc_property_wired_get_mtu (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 9, nmc_property_wired_get_s390_subchannels (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 10, nmc_property_wired_get_s390_nettype (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 11, nmc_property_wired_get_s390_options (setting, NMC_PROPERTY_GET_PRETTY)); g_ptr_array_add (nmc->output_data, arr); print_data (nmc); /* Print all data */ @@ -6722,38 +6673,38 @@ setting_802_1X_details (NMSetting *setting, NmCli *nmc, const char *one_prop, g arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_SECTION_PREFIX); set_val_str (arr, 0, g_strdup (nm_setting_get_name (setting))); - set_val_str (arr, 1, nmc_property_802_1X_get_eap (setting)); - set_val_str (arr, 2, nmc_property_802_1X_get_identity (setting)); - set_val_str (arr, 3, nmc_property_802_1X_get_anonymous_identity (setting)); - set_val_str (arr, 4, nmc_property_802_1X_get_pac_file (setting)); - set_val_str (arr, 5, nmc_property_802_1X_get_ca_cert (setting)); - set_val_str (arr, 6, nmc_property_802_1X_get_ca_path (setting)); - set_val_str (arr, 7, nmc_property_802_1X_get_subject_match (setting)); - set_val_str (arr, 8, nmc_property_802_1X_get_altsubject_matches (setting)); - set_val_str (arr, 9, nmc_property_802_1X_get_client_cert (setting)); - set_val_str (arr, 10, nmc_property_802_1X_get_phase1_peapver (setting)); - set_val_str (arr, 11, nmc_property_802_1X_get_phase1_peaplabel (setting)); - set_val_str (arr, 12, nmc_property_802_1X_get_phase1_fast_provisioning (setting)); - set_val_str (arr, 13, nmc_property_802_1X_get_phase2_auth (setting)); - set_val_str (arr, 14, nmc_property_802_1X_get_phase2_autheap (setting)); - set_val_str (arr, 15, nmc_property_802_1X_get_phase2_ca_cert (setting)); - set_val_str (arr, 16, nmc_property_802_1X_get_phase2_ca_path (setting)); - set_val_str (arr, 17, nmc_property_802_1X_get_phase2_subject_match (setting)); - set_val_str (arr, 18, nmc_property_802_1X_get_phase2_altsubject_matches (setting)); - set_val_str (arr, 19, nmc_property_802_1X_get_phase2_client_cert (setting)); + set_val_str (arr, 1, nmc_property_802_1X_get_eap (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 2, nmc_property_802_1X_get_identity (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 3, nmc_property_802_1X_get_anonymous_identity (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 4, nmc_property_802_1X_get_pac_file (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 5, nmc_property_802_1X_get_ca_cert (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 6, nmc_property_802_1X_get_ca_path (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 7, nmc_property_802_1X_get_subject_match (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 8, nmc_property_802_1X_get_altsubject_matches (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 9, nmc_property_802_1X_get_client_cert (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 10, nmc_property_802_1X_get_phase1_peapver (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 11, nmc_property_802_1X_get_phase1_peaplabel (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 12, nmc_property_802_1X_get_phase1_fast_provisioning (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 13, nmc_property_802_1X_get_phase2_auth (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 14, nmc_property_802_1X_get_phase2_autheap (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 15, nmc_property_802_1X_get_phase2_ca_cert (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 16, nmc_property_802_1X_get_phase2_ca_path (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 17, nmc_property_802_1X_get_phase2_subject_match (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 18, nmc_property_802_1X_get_phase2_altsubject_matches (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 19, nmc_property_802_1X_get_phase2_client_cert (setting, NMC_PROPERTY_GET_PRETTY)); set_val_str (arr, 20, GET_SECRET (secrets, setting, nmc_property_802_1X_get_password)); - set_val_str (arr, 21, nmc_property_802_1X_get_password_flags (setting)); + set_val_str (arr, 21, nmc_property_802_1X_get_password_flags (setting, NMC_PROPERTY_GET_PRETTY)); set_val_str (arr, 22, GET_SECRET (secrets, setting, nmc_property_802_1X_get_password_raw)); - set_val_str (arr, 23, nmc_property_802_1X_get_password_raw_flags (setting)); - set_val_str (arr, 24, nmc_property_802_1X_get_private_key (setting)); + set_val_str (arr, 23, nmc_property_802_1X_get_password_raw_flags (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 24, nmc_property_802_1X_get_private_key (setting, NMC_PROPERTY_GET_PRETTY)); set_val_str (arr, 25, GET_SECRET (secrets, setting, nmc_property_802_1X_get_private_key_password)); - set_val_str (arr, 26, nmc_property_802_1X_get_private_key_password_flags (setting)); - set_val_str (arr, 27, nmc_property_802_1X_get_phase2_private_key (setting)); + set_val_str (arr, 26, nmc_property_802_1X_get_private_key_password_flags (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 27, nmc_property_802_1X_get_phase2_private_key (setting, NMC_PROPERTY_GET_PRETTY)); set_val_str (arr, 28, GET_SECRET (secrets, setting, nmc_property_802_1X_get_phase2_private_key_password)); - set_val_str (arr, 29, nmc_property_802_1X_get_phase2_private_key_password_flags (setting)); + set_val_str (arr, 29, nmc_property_802_1X_get_phase2_private_key_password_flags (setting, NMC_PROPERTY_GET_PRETTY)); set_val_str (arr, 30, GET_SECRET (secrets, setting, nmc_property_802_1X_get_pin)); - set_val_str (arr, 31, nmc_property_802_1X_get_pin_flags (setting)); - set_val_str (arr, 32, nmc_property_802_1X_get_system_ca_certs (setting)); + set_val_str (arr, 31, nmc_property_802_1X_get_pin_flags (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 32, nmc_property_802_1X_get_system_ca_certs (setting, NMC_PROPERTY_GET_PRETTY)); g_ptr_array_add (nmc->output_data, arr); print_data (nmc); /* Print all data */ @@ -6779,19 +6730,19 @@ setting_wireless_details (NMSetting *setting, NmCli *nmc, const char *one_prop, arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_SECTION_PREFIX); set_val_str (arr, 0, g_strdup (nm_setting_get_name (setting))); - set_val_str (arr, 1, nmc_property_wireless_get_ssid (setting)); - set_val_str (arr, 2, nmc_property_wireless_get_mode (setting)); - set_val_str (arr, 3, nmc_property_wireless_get_band (setting)); - set_val_str (arr, 4, nmc_property_wireless_get_channel (setting)); - set_val_str (arr, 5, nmc_property_wireless_get_bssid (setting)); - set_val_str (arr, 6, nmc_property_wireless_get_rate (setting)); - set_val_str (arr, 7, nmc_property_wireless_get_tx_power (setting)); - set_val_str (arr, 8, nmc_property_wireless_get_mac_address (setting)); - set_val_str (arr, 9, nmc_property_wireless_get_cloned_mac_address (setting)); - set_val_str (arr, 10, nmc_property_wireless_get_mac_address_blacklist (setting)); - set_val_str (arr, 11, nmc_property_wireless_get_mtu (setting)); - set_val_str (arr, 12, nmc_property_wireless_get_seen_bssids (setting)); - set_val_str (arr, 13, nmc_property_wireless_get_hidden (setting)); + set_val_str (arr, 1, nmc_property_wireless_get_ssid (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 2, nmc_property_wireless_get_mode (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 3, nmc_property_wireless_get_band (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 4, nmc_property_wireless_get_channel (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 5, nmc_property_wireless_get_bssid (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 6, nmc_property_wireless_get_rate (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 7, nmc_property_wireless_get_tx_power (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 8, nmc_property_wireless_get_mac_address (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 9, nmc_property_wireless_get_cloned_mac_address (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 10, nmc_property_wireless_get_mac_address_blacklist (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 11, nmc_property_wireless_get_mtu (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 12, nmc_property_wireless_get_seen_bssids (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 13, nmc_property_wireless_get_hidden (setting, NMC_PROPERTY_GET_PRETTY)); g_ptr_array_add (nmc->output_data, arr); print_data (nmc); /* Print all data */ @@ -6817,23 +6768,23 @@ setting_wireless_security_details (NMSetting *setting, NmCli *nmc, const char *o arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_SECTION_PREFIX); set_val_str (arr, 0, g_strdup (nm_setting_get_name (setting))); - set_val_str (arr, 1, nmc_property_wifi_sec_get_key_mgmt (setting)); - set_val_str (arr, 2, nmc_property_wifi_sec_get_wep_tx_keyidx (setting)); - set_val_str (arr, 3, nmc_property_wifi_sec_get_auth_alg (setting)); - set_val_str (arr, 4, nmc_property_wifi_sec_get_proto (setting)); - set_val_str (arr, 5, nmc_property_wifi_sec_get_pairwise (setting)); - set_val_str (arr, 6, nmc_property_wifi_sec_get_group (setting)); - set_val_str (arr, 7, nmc_property_wifi_sec_get_leap_username (setting)); + set_val_str (arr, 1, nmc_property_wifi_sec_get_key_mgmt (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 2, nmc_property_wifi_sec_get_wep_tx_keyidx (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 3, nmc_property_wifi_sec_get_auth_alg (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 4, nmc_property_wifi_sec_get_proto (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 5, nmc_property_wifi_sec_get_pairwise (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 6, nmc_property_wifi_sec_get_group (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 7, nmc_property_wifi_sec_get_leap_username (setting, NMC_PROPERTY_GET_PRETTY)); set_val_str (arr, 8, GET_SECRET (secrets, setting, nmc_property_wifi_sec_get_wep_key0)); set_val_str (arr, 9, GET_SECRET (secrets, setting, nmc_property_wifi_sec_get_wep_key1)); set_val_str (arr, 10, GET_SECRET (secrets, setting, nmc_property_wifi_sec_get_wep_key2)); set_val_str (arr, 11, GET_SECRET (secrets, setting, nmc_property_wifi_sec_get_wep_key3)); - set_val_str (arr, 12, nmc_property_wifi_sec_get_wep_key_flags (setting)); - set_val_str (arr, 13, nmc_property_wifi_sec_get_wep_key_type (setting)); + set_val_str (arr, 12, nmc_property_wifi_sec_get_wep_key_flags (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 13, nmc_property_wifi_sec_get_wep_key_type (setting, NMC_PROPERTY_GET_PRETTY)); set_val_str (arr, 14, GET_SECRET (secrets, setting, nmc_property_wifi_sec_get_psk)); - set_val_str (arr, 15, nmc_property_wifi_sec_get_psk_flags (setting)); + set_val_str (arr, 15, nmc_property_wifi_sec_get_psk_flags (setting, NMC_PROPERTY_GET_PRETTY)); set_val_str (arr, 16, GET_SECRET (secrets, setting, nmc_property_wifi_sec_get_leap_password)); - set_val_str (arr, 17, nmc_property_wifi_sec_get_leap_password_flags (setting)); + set_val_str (arr, 17, nmc_property_wifi_sec_get_leap_password_flags (setting, NMC_PROPERTY_GET_PRETTY)); g_ptr_array_add (nmc->output_data, arr); print_data (nmc); /* Print all data */ @@ -6859,20 +6810,20 @@ setting_ip4_config_details (NMSetting *setting, NmCli *nmc, const char *one_pro arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_SECTION_PREFIX); set_val_str (arr, 0, g_strdup (nm_setting_get_name (setting))); - set_val_str (arr, 1, nmc_property_ipv4_get_method (setting)); - set_val_str (arr, 2, nmc_property_ipv4_get_dns (setting)); - set_val_str (arr, 3, nmc_property_ipv4_get_dns_search (setting)); - set_val_str (arr, 4, nmc_property_ip_get_addresses (setting)); - set_val_str (arr, 5, nmc_property_ipv4_get_gateway (setting)); - set_val_str (arr, 6, nmc_property_ipv4_get_routes (setting)); - set_val_str (arr, 7, nmc_property_ipv4_get_route_metric (setting)); - set_val_str (arr, 8, nmc_property_ipv4_get_ignore_auto_routes (setting)); - set_val_str (arr, 9, nmc_property_ipv4_get_ignore_auto_dns (setting)); - set_val_str (arr, 10, nmc_property_ipv4_get_dhcp_client_id (setting)); - set_val_str (arr, 11, nmc_property_ipv4_get_dhcp_send_hostname (setting)); - set_val_str (arr, 12, nmc_property_ipv4_get_dhcp_hostname (setting)); - set_val_str (arr, 13, nmc_property_ipv4_get_never_default (setting)); - set_val_str (arr, 14, nmc_property_ipv4_get_may_fail (setting)); + set_val_str (arr, 1, nmc_property_ipv4_get_method (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 2, nmc_property_ipv4_get_dns (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 3, nmc_property_ipv4_get_dns_search (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 4, nmc_property_ip_get_addresses (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 5, nmc_property_ipv4_get_gateway (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 6, nmc_property_ipv4_get_routes (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 7, nmc_property_ipv4_get_route_metric (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 8, nmc_property_ipv4_get_ignore_auto_routes (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 9, nmc_property_ipv4_get_ignore_auto_dns (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 10, nmc_property_ipv4_get_dhcp_client_id (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 11, nmc_property_ipv4_get_dhcp_send_hostname (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 12, nmc_property_ipv4_get_dhcp_hostname (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 13, nmc_property_ipv4_get_never_default (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 14, nmc_property_ipv4_get_may_fail (setting, NMC_PROPERTY_GET_PRETTY)); g_ptr_array_add (nmc->output_data, arr); print_data (nmc); /* Print all data */ @@ -6898,20 +6849,20 @@ setting_ip6_config_details (NMSetting *setting, NmCli *nmc, const char *one_pro arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_SECTION_PREFIX); set_val_str (arr, 0, g_strdup (nm_setting_get_name (setting))); - set_val_str (arr, 1, nmc_property_ipv6_get_method (setting)); - set_val_str (arr, 2, nmc_property_ipv6_get_dns (setting)); - set_val_str (arr, 3, nmc_property_ipv6_get_dns_search (setting)); - set_val_str (arr, 4, nmc_property_ip_get_addresses (setting)); - set_val_str (arr, 5, nmc_property_ipv6_get_gateway (setting)); - set_val_str (arr, 6, nmc_property_ipv6_get_routes (setting)); - set_val_str (arr, 7, nmc_property_ipv6_get_route_metric (setting)); - set_val_str (arr, 8, nmc_property_ipv6_get_ignore_auto_routes (setting)); - set_val_str (arr, 9, nmc_property_ipv6_get_ignore_auto_dns (setting)); - set_val_str (arr, 10, nmc_property_ipv6_get_never_default (setting)); - set_val_str (arr, 11, nmc_property_ipv6_get_may_fail (setting)); - set_val_str (arr, 12, nmc_property_ipv6_get_ip6_privacy (setting)); - set_val_str (arr, 13, nmc_property_ipv6_get_dhcp_send_hostname (setting)); - set_val_str (arr, 14, nmc_property_ipv6_get_dhcp_hostname (setting)); + set_val_str (arr, 1, nmc_property_ipv6_get_method (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 2, nmc_property_ipv6_get_dns (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 3, nmc_property_ipv6_get_dns_search (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 4, nmc_property_ip_get_addresses (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 5, nmc_property_ipv6_get_gateway (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 6, nmc_property_ipv6_get_routes (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 7, nmc_property_ipv6_get_route_metric (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 8, nmc_property_ipv6_get_ignore_auto_routes (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 9, nmc_property_ipv6_get_ignore_auto_dns (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 10, nmc_property_ipv6_get_never_default (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 11, nmc_property_ipv6_get_may_fail (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 12, nmc_property_ipv6_get_ip6_privacy (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 13, nmc_property_ipv6_get_dhcp_send_hostname (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 14, nmc_property_ipv6_get_dhcp_hostname (setting, NMC_PROPERTY_GET_PRETTY)); g_ptr_array_add (nmc->output_data, arr); print_data (nmc); /* Print all data */ @@ -6937,11 +6888,11 @@ setting_serial_details (NMSetting *setting, NmCli *nmc, const char *one_prop, g arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_SECTION_PREFIX); set_val_str (arr, 0, g_strdup (nm_setting_get_name (setting))); - set_val_str (arr, 1, nmc_property_serial_get_baud (setting)); - set_val_str (arr, 2, nmc_property_serial_get_bits (setting)); - set_val_str (arr, 3, nmc_property_serial_get_parity (setting)); - set_val_str (arr, 4, nmc_property_serial_get_stopbits (setting)); - set_val_str (arr, 5, nmc_property_serial_get_send_delay (setting)); + set_val_str (arr, 1, nmc_property_serial_get_baud (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 2, nmc_property_serial_get_bits (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 3, nmc_property_serial_get_parity (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 4, nmc_property_serial_get_stopbits (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 5, nmc_property_serial_get_send_delay (setting, NMC_PROPERTY_GET_PRETTY)); g_ptr_array_add (nmc->output_data, arr); print_data (nmc); /* Print all data */ @@ -6967,24 +6918,24 @@ setting_ppp_details (NMSetting *setting, NmCli *nmc, const char *one_prop, gboo arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_SECTION_PREFIX); set_val_str (arr, 0, g_strdup (nm_setting_get_name (setting))); - set_val_str (arr, 1, nmc_property_ppp_get_noauth (setting)); - set_val_str (arr, 2, nmc_property_ppp_get_refuse_eap (setting)); - set_val_str (arr, 3, nmc_property_ppp_get_refuse_pap (setting)); - set_val_str (arr, 4, nmc_property_ppp_get_refuse_chap (setting)); - set_val_str (arr, 5, nmc_property_ppp_get_refuse_mschap (setting)); - set_val_str (arr, 6, nmc_property_ppp_get_refuse_mschapv2 (setting)); - set_val_str (arr, 7, nmc_property_ppp_get_nobsdcomp (setting)); - set_val_str (arr, 8, nmc_property_ppp_get_nodeflate (setting)); - set_val_str (arr, 9, nmc_property_ppp_get_no_vj_comp (setting)); - set_val_str (arr, 10, nmc_property_ppp_get_require_mppe (setting)); - set_val_str (arr, 11, nmc_property_ppp_get_require_mppe_128 (setting)); - set_val_str (arr, 12, nmc_property_ppp_get_mppe_stateful (setting)); - set_val_str (arr, 13, nmc_property_ppp_get_crtscts (setting)); - set_val_str (arr, 14, nmc_property_ppp_get_baud (setting)); - set_val_str (arr, 15, nmc_property_ppp_get_mru (setting)); - set_val_str (arr, 16, nmc_property_ppp_get_mtu (setting)); - set_val_str (arr, 17, nmc_property_ppp_get_lcp_echo_failure (setting)); - set_val_str (arr, 18, nmc_property_ppp_get_lcp_echo_interval (setting)); + set_val_str (arr, 1, nmc_property_ppp_get_noauth (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 2, nmc_property_ppp_get_refuse_eap (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 3, nmc_property_ppp_get_refuse_pap (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 4, nmc_property_ppp_get_refuse_chap (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 5, nmc_property_ppp_get_refuse_mschap (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 6, nmc_property_ppp_get_refuse_mschapv2 (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 7, nmc_property_ppp_get_nobsdcomp (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 8, nmc_property_ppp_get_nodeflate (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 9, nmc_property_ppp_get_no_vj_comp (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 10, nmc_property_ppp_get_require_mppe (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 11, nmc_property_ppp_get_require_mppe_128 (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 12, nmc_property_ppp_get_mppe_stateful (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 13, nmc_property_ppp_get_crtscts (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 14, nmc_property_ppp_get_baud (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 15, nmc_property_ppp_get_mru (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 16, nmc_property_ppp_get_mtu (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 17, nmc_property_ppp_get_lcp_echo_failure (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 18, nmc_property_ppp_get_lcp_echo_interval (setting, NMC_PROPERTY_GET_PRETTY)); g_ptr_array_add (nmc->output_data, arr); print_data (nmc); /* Print all data */ @@ -7010,10 +6961,10 @@ setting_pppoe_details (NMSetting *setting, NmCli *nmc, const char *one_prop, gb arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_SECTION_PREFIX); set_val_str (arr, 0, g_strdup (nm_setting_get_name (setting))); - set_val_str (arr, 1, nmc_property_pppoe_get_service (setting)); - set_val_str (arr, 2, nmc_property_pppoe_get_username (setting)); + set_val_str (arr, 1, nmc_property_pppoe_get_service (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 2, nmc_property_pppoe_get_username (setting, NMC_PROPERTY_GET_PRETTY)); set_val_str (arr, 3, GET_SECRET (secrets, setting, nmc_property_pppoe_get_password)); - set_val_str (arr, 4, nmc_property_pppoe_get_password_flags (setting)); + set_val_str (arr, 4, nmc_property_pppoe_get_password_flags (setting, NMC_PROPERTY_GET_PRETTY)); g_ptr_array_add (nmc->output_data, arr); print_data (nmc); /* Print all data */ @@ -7039,15 +6990,15 @@ setting_gsm_details (NMSetting *setting, NmCli *nmc, const char *one_prop, gboo arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_SECTION_PREFIX); set_val_str (arr, 0, g_strdup (nm_setting_get_name (setting))); - set_val_str (arr, 1, nmc_property_gsm_get_number (setting)); - set_val_str (arr, 2, nmc_property_gsm_get_username (setting)); + set_val_str (arr, 1, nmc_property_gsm_get_number (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 2, nmc_property_gsm_get_username (setting, NMC_PROPERTY_GET_PRETTY)); set_val_str (arr, 3, GET_SECRET (secrets, setting, nmc_property_gsm_get_password)); - set_val_str (arr, 4, nmc_property_gsm_get_password_flags (setting)); - set_val_str (arr, 5, nmc_property_gsm_get_apn (setting)); - set_val_str (arr, 6, nmc_property_gsm_get_network_id (setting)); + set_val_str (arr, 4, nmc_property_gsm_get_password_flags (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 5, nmc_property_gsm_get_apn (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 6, nmc_property_gsm_get_network_id (setting, NMC_PROPERTY_GET_PRETTY)); set_val_str (arr, 7, GET_SECRET (secrets, setting, nmc_property_gsm_get_pin)); - set_val_str (arr, 8, nmc_property_gsm_get_pin_flags (setting)); - set_val_str (arr, 9, nmc_property_gsm_get_home_only (setting)); + set_val_str (arr, 8, nmc_property_gsm_get_pin_flags (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 9, nmc_property_gsm_get_home_only (setting, NMC_PROPERTY_GET_PRETTY)); g_ptr_array_add (nmc->output_data, arr); print_data (nmc); /* Print all data */ @@ -7073,10 +7024,10 @@ setting_cdma_details (NMSetting *setting, NmCli *nmc, const char *one_prop, gbo arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_SECTION_PREFIX); set_val_str (arr, 0, g_strdup (nm_setting_get_name (setting))); - set_val_str (arr, 1, nmc_property_cdma_get_number (setting)); - set_val_str (arr, 2, nmc_property_cdma_get_username (setting)); + set_val_str (arr, 1, nmc_property_cdma_get_number (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 2, nmc_property_cdma_get_username (setting, NMC_PROPERTY_GET_PRETTY)); set_val_str (arr, 3, GET_SECRET (secrets, setting, nmc_property_cdma_get_password)); - set_val_str (arr, 4, nmc_property_cdma_get_password_flags (setting)); + set_val_str (arr, 4, nmc_property_cdma_get_password_flags (setting, NMC_PROPERTY_GET_PRETTY)); g_ptr_array_add (nmc->output_data, arr); print_data (nmc); /* Print all data */ @@ -7102,8 +7053,8 @@ setting_bluetooth_details (NMSetting *setting, NmCli *nmc, const char *one_prop arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_SECTION_PREFIX); set_val_str (arr, 0, g_strdup (nm_setting_get_name (setting))); - set_val_str (arr, 1, nmc_property_bluetooth_get_bdaddr (setting)); - set_val_str (arr, 2, nmc_property_bluetooth_get_type (setting)); + set_val_str (arr, 1, nmc_property_bluetooth_get_bdaddr (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 2, nmc_property_bluetooth_get_type (setting, NMC_PROPERTY_GET_PRETTY)); g_ptr_array_add (nmc->output_data, arr); print_data (nmc); /* Print all data */ @@ -7129,9 +7080,9 @@ setting_olpc_mesh_details (NMSetting *setting, NmCli *nmc, const char *one_prop arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_SECTION_PREFIX); set_val_str (arr, 0, g_strdup (nm_setting_get_name (setting))); - set_val_str (arr, 1, nmc_property_olpc_get_ssid (setting)); - set_val_str (arr, 2, nmc_property_olpc_get_channel (setting)); - set_val_str (arr, 3, nmc_property_olpc_get_anycast_address (setting)); + set_val_str (arr, 1, nmc_property_olpc_get_ssid (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 2, nmc_property_olpc_get_channel (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 3, nmc_property_olpc_get_anycast_address (setting, NMC_PROPERTY_GET_PRETTY)); g_ptr_array_add (nmc->output_data, arr); print_data (nmc); /* Print all data */ @@ -7157,11 +7108,11 @@ setting_vpn_details (NMSetting *setting, NmCli *nmc, const char *one_prop, gboo arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_SECTION_PREFIX); set_val_str (arr, 0, g_strdup (nm_setting_get_name (setting))); - set_val_str (arr, 1, nmc_property_vpn_get_service_type (setting)); - set_val_str (arr, 2, nmc_property_vpn_get_user_name (setting)); - set_val_str (arr, 3, nmc_property_vpn_get_data (setting)); + set_val_str (arr, 1, nmc_property_vpn_get_service_type (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 2, nmc_property_vpn_get_user_name (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 3, nmc_property_vpn_get_data (setting, NMC_PROPERTY_GET_PRETTY)); set_val_str (arr, 4, GET_SECRET (secrets, setting, nmc_property_vpn_get_secrets)); - set_val_str (arr, 5, nmc_property_vpn_get_persistent (setting)); + set_val_str (arr, 5, nmc_property_vpn_get_persistent (setting, NMC_PROPERTY_GET_PRETTY)); g_ptr_array_add (nmc->output_data, arr); print_data (nmc); /* Print all data */ @@ -7187,8 +7138,8 @@ setting_wimax_details (NMSetting *setting, NmCli *nmc, const char *one_prop, gb arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_SECTION_PREFIX); set_val_str (arr, 0, g_strdup (nm_setting_get_name (setting))); - set_val_str (arr, 1, nmc_property_wimax_get_mac_address (setting)); - set_val_str (arr, 2, nmc_property_wimax_get_network_name (setting)); + set_val_str (arr, 1, nmc_property_wimax_get_mac_address (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 2, nmc_property_wimax_get_network_name (setting, NMC_PROPERTY_GET_PRETTY)); g_ptr_array_add (nmc->output_data, arr); print_data (nmc); /* Print all data */ @@ -7214,11 +7165,11 @@ setting_infiniband_details (NMSetting *setting, NmCli *nmc, const char *one_pro arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_SECTION_PREFIX); set_val_str (arr, 0, g_strdup (nm_setting_get_name (setting))); - set_val_str (arr, 1, nmc_property_ib_get_mac_address (setting)); - set_val_str (arr, 2, nmc_property_ib_get_mtu (setting)); - set_val_str (arr, 3, nmc_property_ib_get_transport_mode (setting)); - set_val_str (arr, 4, nmc_property_ib_get_p_key (setting)); - set_val_str (arr, 5, nmc_property_ib_get_parent (setting)); + set_val_str (arr, 1, nmc_property_ib_get_mac_address (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 2, nmc_property_ib_get_mtu (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 3, nmc_property_ib_get_transport_mode (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 4, nmc_property_ib_get_p_key (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 5, nmc_property_ib_get_parent (setting, NMC_PROPERTY_GET_PRETTY)); g_ptr_array_add (nmc->output_data, arr); print_data (nmc); /* Print all data */ @@ -7244,7 +7195,7 @@ setting_bond_details (NMSetting *setting, NmCli *nmc, const char *one_prop, gbo arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_SECTION_PREFIX); set_val_str (arr, 0, g_strdup (nm_setting_get_name (setting))); - set_val_str (arr, 1, nmc_property_bond_get_options (setting)); + set_val_str (arr, 1, nmc_property_bond_get_options (setting, NMC_PROPERTY_GET_PRETTY)); g_ptr_array_add (nmc->output_data, arr); print_data (nmc); /* Print all data */ @@ -7270,11 +7221,11 @@ setting_vlan_details (NMSetting *setting, NmCli *nmc, const char *one_prop, gbo arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_SECTION_PREFIX); set_val_str (arr, 0, g_strdup (nm_setting_get_name (setting))); - set_val_str (arr, 1, nmc_property_vlan_get_parent (setting)); - set_val_str (arr, 2, nmc_property_vlan_get_id (setting)); - set_val_str (arr, 3, nmc_property_vlan_get_flags (setting)); - set_val_str (arr, 4, nmc_property_vlan_get_ingress_priority_map (setting)); - set_val_str (arr, 5, nmc_property_vlan_get_egress_priority_map (setting)); + set_val_str (arr, 1, nmc_property_vlan_get_parent (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 2, nmc_property_vlan_get_id (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 3, nmc_property_vlan_get_flags (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 4, nmc_property_vlan_get_ingress_priority_map (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 5, nmc_property_vlan_get_egress_priority_map (setting, NMC_PROPERTY_GET_PRETTY)); g_ptr_array_add (nmc->output_data, arr); print_data (nmc); /* Print all data */ @@ -7300,13 +7251,13 @@ setting_adsl_details (NMSetting *setting, NmCli *nmc, const char *one_prop, gbo arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_SECTION_PREFIX); set_val_str (arr, 0, g_strdup (nm_setting_get_name (setting))); - set_val_str (arr, 1, nmc_property_adsl_get_username (setting)); + set_val_str (arr, 1, nmc_property_adsl_get_username (setting, NMC_PROPERTY_GET_PRETTY)); set_val_str (arr, 2, GET_SECRET (secrets, setting, nmc_property_adsl_get_password)); - set_val_str (arr, 3, nmc_property_adsl_get_password_flags (setting)); - set_val_str (arr, 4, nmc_property_adsl_get_protocol (setting)); - set_val_str (arr, 5, nmc_property_adsl_get_encapsulation (setting)); - set_val_str (arr, 6, nmc_property_adsl_get_vpi (setting)); - set_val_str (arr, 7, nmc_property_adsl_get_vci (setting)); + set_val_str (arr, 3, nmc_property_adsl_get_password_flags (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 4, nmc_property_adsl_get_protocol (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 5, nmc_property_adsl_get_encapsulation (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 6, nmc_property_adsl_get_vpi (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 7, nmc_property_adsl_get_vci (setting, NMC_PROPERTY_GET_PRETTY)); g_ptr_array_add (nmc->output_data, arr); print_data (nmc); /* Print all data */ @@ -7332,13 +7283,13 @@ setting_bridge_details (NMSetting *setting, NmCli *nmc, const char *one_prop, g arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_SECTION_PREFIX); set_val_str (arr, 0, g_strdup (nm_setting_get_name (setting))); - set_val_str (arr, 1, nmc_property_bridge_get_mac_address (setting)); - set_val_str (arr, 2, nmc_property_bridge_get_stp (setting)); - set_val_str (arr, 3, nmc_property_bridge_get_priority (setting)); - set_val_str (arr, 4, nmc_property_bridge_get_forward_delay (setting)); - set_val_str (arr, 5, nmc_property_bridge_get_hello_time (setting)); - set_val_str (arr, 6, nmc_property_bridge_get_max_age (setting)); - set_val_str (arr, 7, nmc_property_bridge_get_ageing_time (setting)); + set_val_str (arr, 1, nmc_property_bridge_get_mac_address (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 2, nmc_property_bridge_get_stp (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 3, nmc_property_bridge_get_priority (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 4, nmc_property_bridge_get_forward_delay (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 5, nmc_property_bridge_get_hello_time (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 6, nmc_property_bridge_get_max_age (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 7, nmc_property_bridge_get_ageing_time (setting, NMC_PROPERTY_GET_PRETTY)); g_ptr_array_add (nmc->output_data, arr); print_data (nmc); /* Print all data */ @@ -7364,9 +7315,9 @@ setting_bridge_port_details (NMSetting *setting, NmCli *nmc, const char *one_pr arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_SECTION_PREFIX); set_val_str (arr, 0, g_strdup (nm_setting_get_name (setting))); - set_val_str (arr, 1, nmc_property_bridge_port_get_priority (setting)); - set_val_str (arr, 2, nmc_property_bridge_port_get_path_cost (setting)); - set_val_str (arr, 3, nmc_property_bridge_port_get_hairpin_mode (setting)); + set_val_str (arr, 1, nmc_property_bridge_port_get_priority (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 2, nmc_property_bridge_port_get_path_cost (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 3, nmc_property_bridge_port_get_hairpin_mode (setting, NMC_PROPERTY_GET_PRETTY)); g_ptr_array_add (nmc->output_data, arr); print_data (nmc); /* Print all data */ @@ -7392,7 +7343,7 @@ setting_team_details (NMSetting *setting, NmCli *nmc, const char *one_prop, gbo arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_SECTION_PREFIX); set_val_str (arr, 0, g_strdup (nm_setting_get_name (setting))); - set_val_str (arr, 1, nmc_property_team_get_config (setting)); + set_val_str (arr, 1, nmc_property_team_get_config (setting, NMC_PROPERTY_GET_PRETTY)); g_ptr_array_add (nmc->output_data, arr); print_data (nmc); /* Print all data */ @@ -7418,7 +7369,7 @@ setting_team_port_details (NMSetting *setting, NmCli *nmc, const char *one_prop arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_SECTION_PREFIX); set_val_str (arr, 0, g_strdup (nm_setting_get_name (setting))); - set_val_str (arr, 1, nmc_property_team_port_get_config (setting)); + set_val_str (arr, 1, nmc_property_team_port_get_config (setting, NMC_PROPERTY_GET_PRETTY)); g_ptr_array_add (nmc->output_data, arr); print_data (nmc); /* Print all data */ @@ -7444,21 +7395,21 @@ setting_dcb_details (NMSetting *setting, NmCli *nmc, const char *one_prop, gboo arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_SECTION_PREFIX); set_val_str (arr, 0, g_strdup (nm_setting_get_name (setting))); - set_val_str (arr, 1, nmc_property_dcb_get_app_fcoe_flags (setting)); - set_val_str (arr, 2, nmc_property_dcb_get_app_fcoe_priority (setting)); - set_val_str (arr, 3, nmc_property_dcb_get_app_fcoe_mode (setting)); - set_val_str (arr, 4, nmc_property_dcb_get_app_iscsi_flags (setting)); - set_val_str (arr, 5, nmc_property_dcb_get_app_iscsi_priority (setting)); - set_val_str (arr, 6, nmc_property_dcb_get_app_fip_flags (setting)); - set_val_str (arr, 7, nmc_property_dcb_get_app_fip_priority (setting)); - set_val_str (arr, 8, nmc_property_dcb_get_pfc_flags (setting)); - set_val_str (arr, 9, nmc_property_dcb_get_pfc (setting)); - set_val_str (arr, 10, nmc_property_dcb_get_pg_flags (setting)); - set_val_str (arr, 11, nmc_property_dcb_get_pg_group_id (setting)); - set_val_str (arr, 12, nmc_property_dcb_get_pg_group_bandwidth (setting)); - set_val_str (arr, 13, nmc_property_dcb_get_pg_bandwidth (setting)); - set_val_str (arr, 14, nmc_property_dcb_get_pg_strict (setting)); - set_val_str (arr, 15, nmc_property_dcb_get_pg_traffic_class (setting)); + set_val_str (arr, 1, nmc_property_dcb_get_app_fcoe_flags (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 2, nmc_property_dcb_get_app_fcoe_priority (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 3, nmc_property_dcb_get_app_fcoe_mode (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 4, nmc_property_dcb_get_app_iscsi_flags (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 5, nmc_property_dcb_get_app_iscsi_priority (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 6, nmc_property_dcb_get_app_fip_flags (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 7, nmc_property_dcb_get_app_fip_priority (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 8, nmc_property_dcb_get_pfc_flags (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 9, nmc_property_dcb_get_pfc (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 10, nmc_property_dcb_get_pg_flags (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 11, nmc_property_dcb_get_pg_group_id (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 12, nmc_property_dcb_get_pg_group_bandwidth (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 13, nmc_property_dcb_get_pg_bandwidth (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 14, nmc_property_dcb_get_pg_strict (setting, NMC_PROPERTY_GET_PRETTY)); + set_val_str (arr, 15, nmc_property_dcb_get_pg_traffic_class (setting, NMC_PROPERTY_GET_PRETTY)); g_ptr_array_add (nmc->output_data, arr); print_data (nmc); /* Print all data */ diff --git a/clients/cli/settings.h b/clients/cli/settings.h index 179ef751cf..bab00ee908 100644 --- a/clients/cli/settings.h +++ b/clients/cli/settings.h @@ -41,9 +41,9 @@ const char **nmc_setting_get_property_allowed_values (NMSetting *setting, const char *nmc_setting_get_property (NMSetting *setting, const char *prop, GError **error); -char *nmc_setting_get_property_out2in (NMSetting *setting, - const char *prop, - GError **error); +char *nmc_setting_get_property_parsable (NMSetting *setting, + const char *prop, + GError **error); gboolean nmc_setting_set_property (NMSetting *setting, const char *prop, const char *val, From 8d6cced2c54f586a4bb5dcde5b8bc20dbe654e7c Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Thu, 21 May 2015 13:22:16 +0200 Subject: [PATCH 7/9] cli: do not create a copy of static strings for nmc_properties hash The keys of the hash are static strings. No need to make a copy of it. If we ever need dynamics properties, we should intern those strings. (cherry picked from commit 16f089ce64ac38b6dd5f5912e4c3e19cad18aa69) --- clients/cli/settings.c | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/clients/cli/settings.c b/clients/cli/settings.c index 4223603c4e..620c6b56cf 100644 --- a/clients/cli/settings.c +++ b/clients/cli/settings.c @@ -4709,13 +4709,13 @@ DEFINE_ALLOWED_VAL_FUNC (nmc_property_dcb_allowed_app_fcoe_modes, _dcb_valid_fco /*----------------------------------------------------------------------------*/ static void -nmc_add_prop_funcs (char *key, - NmcPropertyGetFunc get_func, - NmcPropertySetFunc set_func, - NmcPropertyRemoveFunc remove_func, - NmcPropertyDescribeFunc describe_func, - NmcPropertyValuesFunc values_func, - gpointer dummy) +_nmc_add_prop_funcs (const char *key, + NmcPropertyGetFunc get_func, + NmcPropertySetFunc set_func, + NmcPropertyRemoveFunc remove_func, + NmcPropertyDescribeFunc describe_func, + NmcPropertyValuesFunc values_func, + gpointer dummy) { NmcPropertyFuncs *item = g_malloc0 (sizeof (NmcPropertyFuncs)); item->get_func = get_func; @@ -4724,12 +4724,14 @@ nmc_add_prop_funcs (char *key, item->describe_func = describe_func; item->values_func = values_func; - g_hash_table_insert (nmc_properties, key, item); + g_hash_table_insert (nmc_properties, (gpointer) key, item); } +#define nmc_add_prop_funcs(key, ...) _nmc_add_prop_funcs ("" key, __VA_ARGS__) + /* concatenate setting name and property name */ -#define GLUE(A,B) (g_strconcat ((NM_SETTING_##A##_SETTING_NAME),(NM_SETTING_##A##_##B), NULL)) -#define GLUE_IP(A,B) (g_strconcat ((NM_SETTING_IP##A##_CONFIG_SETTING_NAME),(NM_SETTING_IP_CONFIG_##B), NULL)) +#define GLUE(A,B) "" NM_SETTING_##A##_SETTING_NAME "" NM_SETTING_##A##_##B "" +#define GLUE_IP(A,B) "" NM_SETTING_IP##A##_CONFIG_SETTING_NAME "" NM_SETTING_IP_CONFIG_##B "" void nmc_properties_init (void) @@ -4738,7 +4740,7 @@ nmc_properties_init (void) return; /* create properties hash table */ - nmc_properties = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free); + nmc_properties = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, g_free); /* Add editable properties for NM_SETTING_802_1X_SETTING_NAME */ nmc_add_prop_funcs (GLUE (802_1X, EAP), From 77fa56a5e7912099c25927762c23e76a7d137a69 Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Thu, 21 May 2015 13:38:20 +0200 Subject: [PATCH 8/9] cli: refactor nmc_add_prop_funcs() to use variadic macro The advantage of this is that if we later add another function pointer we don't have to touch any existing calls which would only pass NULL to that argument. Using a variadic argument and partial initialization of an auto variable gives us that flexibility. (cherry picked from commit 035e31327bc3e59eb5b9981469756cf71c0c833d) --- clients/cli/settings.c | 50 ++++++++++++++++++++++++++---------------- 1 file changed, 31 insertions(+), 19 deletions(-) diff --git a/clients/cli/settings.c b/clients/cli/settings.c index 620c6b56cf..b93ce543c9 100644 --- a/clients/cli/settings.c +++ b/clients/cli/settings.c @@ -29,6 +29,7 @@ #include "common.h" #include "settings.h" #include "nm-glib-compat.h" +#include "nm-macros-internal.h" /* Forward declarations */ static char *wep_key_type_to_string (NMWepKeyType type); @@ -1635,11 +1636,16 @@ typedef const char * (*NmcPropertyDescribeFunc) (NMSetting *, const char *); typedef const char ** (*NmcPropertyValuesFunc) (NMSetting *, const char *); typedef struct { - NmcPropertyGetFunc get_func; /* func getting property values */ - NmcPropertySetFunc set_func; /* func adding/setting property values */ - NmcPropertyRemoveFunc remove_func; /* func removing items from container options */ - NmcPropertyDescribeFunc describe_func; /* func returning property description */ - NmcPropertyValuesFunc values_func; /* func returning allowed property values */ + /* The order of the fields is important as they correspond + * to the order as _nmc_add_prop_funcs() passes the arguments. */ +#define NmcPropertyFuncsFields \ + NmcPropertyGetFunc get_func; /* func getting property values */ \ + NmcPropertySetFunc set_func; /* func adding/setting property values */ \ + NmcPropertyRemoveFunc remove_func; /* func removing items from container options */ \ + NmcPropertyDescribeFunc describe_func; /* func returning property description */ \ + NmcPropertyValuesFunc values_func; /* func returning allowed property values */ \ + ; + NmcPropertyFuncsFields } NmcPropertyFuncs; /* @@ -4708,26 +4714,32 @@ DEFINE_ALLOWED_VAL_FUNC (nmc_property_dcb_allowed_app_fcoe_modes, _dcb_valid_fco /*----------------------------------------------------------------------------*/ -static void +static inline void _nmc_add_prop_funcs (const char *key, - NmcPropertyGetFunc get_func, - NmcPropertySetFunc set_func, - NmcPropertyRemoveFunc remove_func, - NmcPropertyDescribeFunc describe_func, - NmcPropertyValuesFunc values_func, - gpointer dummy) + const NmcPropertyFuncs *item_init) { - NmcPropertyFuncs *item = g_malloc0 (sizeof (NmcPropertyFuncs)); - item->get_func = get_func; - item->set_func = set_func; - item->remove_func = remove_func; - item->describe_func = describe_func; - item->values_func = values_func; + NmcPropertyFuncs *item; + item = g_malloc (sizeof (NmcPropertyFuncs)); + *item = *item_init; g_hash_table_insert (nmc_properties, (gpointer) key, item); } -#define nmc_add_prop_funcs(key, ...) _nmc_add_prop_funcs ("" key, __VA_ARGS__) +#define nmc_add_prop_funcs(key, ...) \ + G_STMT_START { \ + struct { \ + NmcPropertyFuncsFields; \ + /* The _dummy field is here so that the last argument can be always + * NULL. That means every call to nmc_add_prop_funcs() below ends + * with a separate line "NULL);". */ \ + gpointer _dummy; \ + } _item_init = { \ + __VA_ARGS__ \ + };\ + \ + nm_assert (_item_init._dummy == NULL); \ + _nmc_add_prop_funcs ("" key, (NmcPropertyFuncs *) &_item_init); \ + } G_STMT_END /* concatenate setting name and property name */ #define GLUE(A,B) "" NM_SETTING_##A##_SETTING_NAME "" NM_SETTING_##A##_##B "" From c741edaf76377fc4d0441be842da5c87ec58b660 Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Thu, 21 May 2015 18:10:40 +0200 Subject: [PATCH 9/9] cli: stack allocate search string in nmc_properties_find() (cherry picked from commit 350900d0a54c8536f1910b06d42f00a240c7cae9) --- clients/cli/settings.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/clients/cli/settings.c b/clients/cli/settings.c index b93ce543c9..297e173dbc 100644 --- a/clients/cli/settings.c +++ b/clients/cli/settings.c @@ -6310,17 +6310,17 @@ nmc_properties_cleanup () static const NmcPropertyFuncs * nmc_properties_find (const char *s_name, const char *p_name) { - NmcPropertyFuncs *item = NULL; char *key; + gsize p_l, s_l; - /* FIXME: maybe it's better to init it globally */ nmc_properties_init (); - key = g_strdup_printf ("%s%s", s_name, p_name); - item = (NmcPropertyFuncs *) g_hash_table_lookup (nmc_properties, key); - g_free (key); - - return item; + s_l = strlen (s_name); + p_l = strlen (p_name); + key = g_alloca (s_l + p_l + 1); + memcpy (&key[ 0], s_name, s_l); + memcpy (&key[s_l], p_name, p_l + 1); + return (NmcPropertyFuncs *) g_hash_table_lookup (nmc_properties, key); } static char *