diff options
author | Thomas Haller <thaller@redhat.com> | 2017-04-13 10:10:56 +0200 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2017-04-13 10:10:58 +0200 |
commit | ecec03c8b723191c7aa86946982ddd33e121e6e2 (patch) | |
tree | 71d336de7856e94dc3c890924b79ef6c19904cec | |
parent | 8b52e506a7bc9a3d57e65b3cf7ed78346176af1f (diff) | |
parent | 275ab5fb8f17c878772c737978a0a50ddaa35f8e (diff) | |
download | NetworkManager-ecec03c8b723191c7aa86946982ddd33e121e6e2.tar.gz |
cli: merge branch 'th/cli-meta-3'
-rw-r--r-- | clients/cli/connections.c | 112 | ||||
-rw-r--r-- | clients/cli/nmcli.c | 2 | ||||
-rw-r--r-- | clients/cli/utils.c | 337 | ||||
-rw-r--r-- | clients/cli/utils.h | 20 | ||||
-rw-r--r-- | clients/common/nm-meta-setting-access.c | 328 | ||||
-rw-r--r-- | clients/common/nm-meta-setting-access.h | 31 | ||||
-rw-r--r-- | clients/common/nm-meta-setting-desc.c | 1740 | ||||
-rw-r--r-- | clients/common/nm-meta-setting-desc.h | 35 | ||||
-rw-r--r-- | clients/common/tests/test-general.c | 20 | ||||
-rw-r--r-- | po/POTFILES.in | 1 |
10 files changed, 1175 insertions, 1451 deletions
diff --git a/clients/cli/connections.c b/clients/cli/connections.c index cdd19e907d..48454099f2 100644 --- a/clients/cli/connections.c +++ b/clients/cli/connections.c @@ -1314,8 +1314,8 @@ split_required_fields_for_con_show (const char *input, else if (!strcasecmp (*iter, CON_SHOW_DETAIL_GROUP_ACTIVE)) group_active = TRUE; else { - char *allowed1 = nmc_get_allowed_fields ((const NMMetaAbstractInfo *const*) nm_meta_setting_infos_editor_p (), NULL); - char *allowed2 = nmc_get_allowed_fields ((const NMMetaAbstractInfo *const*) nmc_fields_con_active_details_groups, NULL); + char *allowed1 = nm_meta_abstract_infos_get_names_str ((const NMMetaAbstractInfo *const*) nm_meta_setting_infos_editor_p (), NULL); + char *allowed2 = nm_meta_abstract_infos_get_names_str ((const NMMetaAbstractInfo *const*) nmc_fields_con_active_details_groups, NULL); g_set_error (error, NMCLI_ERROR, 0, _("invalid field '%s'; allowed fields: %s and %s, or %s,%s"), *iter, allowed1, allowed2, CON_SHOW_DETAIL_GROUP_PROFILE, CON_SHOW_DETAIL_GROUP_ACTIVE); g_free (allowed1); @@ -2907,7 +2907,7 @@ get_valid_properties_string (const NMMetaSettingValidPartItem *const*array, gchar *new; const char *arg_name; - arg_name = setting_info->properties[j].property_name; + arg_name = setting_info->properties[j]->property_name; /* If required, expand the alias too */ if (!postfix && setting_info->alias) { @@ -3319,7 +3319,7 @@ _meta_property_needs_bond_hack (const NMMetaPropertyInfo *property_info) if (!property_info) g_return_val_if_reached (FALSE); return property_info->property_typ_data - && property_info->property_typ_data->subtype.nested.data == &nm_meta_property_typ_data_bond; + && property_info->property_typ_data->nested == &nm_meta_property_typ_data_bond; } @@ -3353,28 +3353,16 @@ _meta_abstract_get (const NMMetaAbstractInfo *abstract_info, const char **out_prompt, const char **out_def_hint) { - /* _meta_property_needs_bond_hack () */ - if (abstract_info->meta_type == &nm_meta_type_nested_property_info) { - const NMMetaNestedPropertyTypeInfo *info = (const NMMetaNestedPropertyTypeInfo *) abstract_info; - - NM_SET_OUT (out_setting_info, info->parent_info->setting_info); - NM_SET_OUT (out_setting_name, info->parent_info->setting_info->general->setting_name); - NM_SET_OUT (out_property_name, info->parent_info->property_name); - NM_SET_OUT (out_option, info->field_name); - NM_SET_OUT (out_inf_flags, info->inf_flags); - NM_SET_OUT (out_prompt, info->prompt); - NM_SET_OUT (out_def_hint, info->def_hint); - } else { - const NMMetaPropertyInfo *info = (const NMMetaPropertyInfo *) abstract_info; + const NMMetaPropertyInfo *info = (const NMMetaPropertyInfo *) abstract_info; - NM_SET_OUT (out_setting_info, info->setting_info); - NM_SET_OUT (out_setting_name, info->setting_info->general->setting_name); - NM_SET_OUT (out_property_name, info->property_name); - NM_SET_OUT (out_option, info->property_alias); - NM_SET_OUT (out_inf_flags, info->inf_flags); - NM_SET_OUT (out_prompt, info->prompt); - NM_SET_OUT (out_def_hint, info->def_hint); - } + NM_SET_OUT (out_option, info->property_alias); + NM_SET_OUT (out_setting_info, info->setting_info); + NM_SET_OUT (out_setting_name, info->setting_info->general->setting_name); + NM_SET_OUT (out_property_name, info->property_name); + NM_SET_OUT (out_option, info->property_alias); + NM_SET_OUT (out_inf_flags, info->inf_flags); + NM_SET_OUT (out_prompt, info->prompt); + NM_SET_OUT (out_def_hint, info->def_hint); } static const OptionInfo *_meta_abstract_get_option_info (const NMMetaAbstractInfo *abstract_info); @@ -3397,11 +3385,11 @@ enable_options (const gchar *setting_name, const gchar *property, const gchar * guint i; for (i = 0; i < nm_meta_property_typ_data_bond.nested_len; i++) { - const NMMetaNestedPropertyTypeInfo *bi = &nm_meta_property_typ_data_bond.nested[i]; + const NMMetaNestedPropertyInfo *bi = &nm_meta_property_typ_data_bond.nested[i]; - if ( bi->inf_flags & NM_META_PROPERTY_INF_FLAG_DONT_ASK - && bi->field_name - && g_strv_contains (opts, bi->field_name)) + if ( bi->base.inf_flags & NM_META_PROPERTY_INF_FLAG_DONT_ASK + && bi->base.property_alias + && g_strv_contains (opts, bi->base.property_alias)) _dynamic_options_set ((const NMMetaAbstractInfo *) bi, PROPERTY_INF_FLAG_ENABLED, PROPERTY_INF_FLAG_ENABLED); } return; @@ -3446,7 +3434,9 @@ disable_options (const gchar *setting_name, const gchar *property) setting_info = nm_meta_setting_info_editor_find_by_name (setting_name, FALSE); if (!setting_info) g_return_if_reached (); - property_infos = nm_property_infos_for_setting_type (setting_info->general->meta_type); + property_infos = setting_info->properties; + if (!property_infos) + return; } for (p = 0; property_infos[p]; p++) { @@ -3456,7 +3446,7 @@ disable_options (const gchar *setting_name, const gchar *property) guint i; for (i = 0; i < nm_meta_property_typ_data_bond.nested_len; i++) { - const NMMetaNestedPropertyTypeInfo *bi = &nm_meta_property_typ_data_bond.nested[i]; + const NMMetaNestedPropertyInfo *bi = &nm_meta_property_typ_data_bond.nested[i]; _dynamic_options_set ((const NMMetaAbstractInfo *) bi, PROPERTY_INF_FLAG_DISABLED, PROPERTY_INF_FLAG_DISABLED); } @@ -3482,7 +3472,9 @@ reset_options (void) const NMMetaPropertyInfo *const*property_infos; guint p; - property_infos = nm_property_infos_for_setting_type (s); + property_infos = nm_meta_setting_infos_editor[s].properties; + if (!property_infos) + continue; for (p = 0; property_infos[p]; p++) { const NMMetaPropertyInfo *property_info = property_infos[p]; @@ -3490,7 +3482,7 @@ reset_options (void) guint i; for (i = 0; i < nm_meta_property_typ_data_bond.nested_len; i++) { - const NMMetaNestedPropertyTypeInfo *bi = &nm_meta_property_typ_data_bond.nested[i]; + const NMMetaNestedPropertyInfo *bi = &nm_meta_property_typ_data_bond.nested[i]; _dynamic_options_set ((const NMMetaAbstractInfo *) bi, PROPERTY_INF_FLAG_ALL, 0); } @@ -4062,7 +4054,9 @@ complete_property_name (NmCli *nmc, NMConnection *connection, if (!nm_connection_get_setting_by_name (connection, nm_meta_setting_infos_editor[s].general->setting_name)) continue; - property_infos = nm_property_infos_for_setting_type (s); + property_infos = nm_meta_setting_infos_editor[s].properties; + if (!property_infos) + continue; for (p = 0; property_infos[p]; p++) { const NMMetaPropertyInfo *property_info = property_infos[p]; @@ -4070,12 +4064,12 @@ complete_property_name (NmCli *nmc, NMConnection *connection, guint i; for (i = 0; i < nm_meta_property_typ_data_bond.nested_len; i++) { - const NMMetaNestedPropertyTypeInfo *bi = &nm_meta_property_typ_data_bond.nested[i]; + const NMMetaNestedPropertyInfo *bi = &nm_meta_property_typ_data_bond.nested[i]; - if ( !bi->field_name - || !g_str_has_prefix (bi->field_name, prefix)) + if ( !bi->base.property_alias + || !g_str_has_prefix (bi->base.property_alias, prefix)) continue; - g_print ("%s\n", bi->field_name); + g_print ("%s\n", bi->base.property_alias); } } else { if (!property_info->is_cli_option) @@ -4256,7 +4250,9 @@ nmc_read_connection_properties (NmCli *nmc, type_settings, slv_settings, NULL)) continue; - property_infos = nm_property_infos_for_setting_type (s); + property_infos = nm_meta_setting_infos_editor[s].properties; + if (!property_infos) + continue; for (p = 0; property_infos[p]; p++) { const NMMetaPropertyInfo *property_info = property_infos[p]; @@ -4264,9 +4260,9 @@ nmc_read_connection_properties (NmCli *nmc, guint i; for (i = 0; i < nm_meta_property_typ_data_bond.nested_len; i++) { - const NMMetaNestedPropertyTypeInfo *bi = &nm_meta_property_typ_data_bond.nested[i]; + const NMMetaNestedPropertyInfo *bi = &nm_meta_property_typ_data_bond.nested[i]; - if (!nm_streq0 (bi->field_name, option)) + if (!nm_streq0 (bi->base.property_alias, option)) continue; if (chosen) { g_set_error (error, NMCLI_ERROR, NMC_RESULT_ERROR_USER_INPUT, @@ -4420,7 +4416,9 @@ nmcli_con_add_tab_completion (const char *text, int start, int end) const NMMetaPropertyInfo *const*property_infos; guint p; - property_infos = nm_property_infos_for_setting_type (s); + property_infos = nm_meta_setting_infos_editor[s].properties; + if (!property_infos) + continue; for (p = 0; property_infos[p]; p++) { const NMMetaPropertyInfo *property_info = property_infos[p]; @@ -4428,10 +4426,10 @@ nmcli_con_add_tab_completion (const char *text, int start, int end) guint i; for (i = 0; i < nm_meta_property_typ_data_bond.nested_len; i++) { - const NMMetaNestedPropertyTypeInfo *bi = &nm_meta_property_typ_data_bond.nested[i]; + const NMMetaNestedPropertyInfo *bi = &nm_meta_property_typ_data_bond.nested[i]; - if ( bi->prompt - && g_str_has_prefix (rl_prompt, bi->prompt)) { + if ( bi->base.prompt + && g_str_has_prefix (rl_prompt, bi->base.prompt)) { goto next; } } @@ -4513,7 +4511,9 @@ questionnaire_mandatory (NmCli *nmc, NMConnection *connection) const NMMetaPropertyInfo *const*property_infos; guint p; - property_infos = nm_property_infos_for_setting_type (s); + property_infos = nm_meta_setting_infos_editor[s].properties; + if (!property_infos) + continue; for (p = 0; property_infos[p]; p++) { const NMMetaPropertyInfo *property_info = property_infos[p]; @@ -4521,11 +4521,11 @@ questionnaire_mandatory (NmCli *nmc, NMConnection *connection) guint i; for (i = 0; i < nm_meta_property_typ_data_bond.nested_len; i++) { - const NMMetaNestedPropertyTypeInfo *bi = &nm_meta_property_typ_data_bond.nested[i]; + const NMMetaNestedPropertyInfo *bi = &nm_meta_property_typ_data_bond.nested[i]; if (!option_relevant (connection, (const NMMetaAbstractInfo *) bi)) continue; - if ( (bi->inf_flags & NM_META_PROPERTY_INF_FLAG_REQD) + if ( (bi->base.inf_flags & NM_META_PROPERTY_INF_FLAG_REQD) || (_dynamic_options_get ((const NMMetaAbstractInfo *) bi) & PROPERTY_INF_FLAG_ENABLED)) ask_option (nmc, connection, (const NMMetaAbstractInfo *) bi); } @@ -4584,13 +4584,15 @@ again: && s != s_asking) continue; - property_infos = nm_property_infos_for_setting_type (s); + property_infos = nm_meta_setting_infos_editor[s].properties; + if (!property_infos) + continue; for (p = 0; property_infos[p]; p++) { const NMMetaPropertyInfo *property_info = property_infos[p]; if (_meta_property_needs_bond_hack (property_info)) { for (i = 0; i < nm_meta_property_typ_data_bond.nested_len; i++) { - const NMMetaNestedPropertyTypeInfo *bi = &nm_meta_property_typ_data_bond.nested[i]; + const NMMetaNestedPropertyInfo *bi = &nm_meta_property_typ_data_bond.nested[i]; if (!option_relevant (connection, (const NMMetaAbstractInfo *) bi)) continue; @@ -4755,7 +4757,9 @@ read_properties: const NMMetaPropertyInfo *const*property_infos; guint p; - property_infos = nm_property_infos_for_setting_type (s); + property_infos = nm_meta_setting_infos_editor[s].properties; + if (!property_infos) + continue; for (p = 0; property_infos[p]; p++) { const NMMetaPropertyInfo *property_info = property_infos[p]; @@ -4763,12 +4767,12 @@ read_properties: guint i; for (i = 0; i < nm_meta_property_typ_data_bond.nested_len; i++) { - const NMMetaNestedPropertyTypeInfo *bi = &nm_meta_property_typ_data_bond.nested[i]; + const NMMetaNestedPropertyInfo *bi = &nm_meta_property_typ_data_bond.nested[i]; if (!option_relevant (connection, (const NMMetaAbstractInfo *) bi)) continue; - if (bi->inf_flags & NM_META_PROPERTY_INF_FLAG_REQD) { - g_string_printf (nmc->return_text, _("Error: '%s' argument is required."), bi->field_name); + if (bi->base.inf_flags & NM_META_PROPERTY_INF_FLAG_REQD) { + g_string_printf (nmc->return_text, _("Error: '%s' argument is required."), bi->base.property_alias); nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; goto finish; } diff --git a/clients/cli/nmcli.c b/clients/cli/nmcli.c index 4420291719..c712fdec21 100644 --- a/clients/cli/nmcli.c +++ b/clients/cli/nmcli.c @@ -77,7 +77,7 @@ complete_field_setting (GHashTable *h, NMMetaSettingType setting_type) for (i = 0; i < setting_info->properties_num; i++) { g_hash_table_add (h, g_strdup_printf ("%s.%s", setting_info->general->setting_name, - setting_info->properties[i].property_name)); + setting_info->properties[i]->property_name)); } } diff --git a/clients/cli/utils.c b/clients/cli/utils.c index ebafaa127b..53f12dcbee 100644 --- a/clients/cli/utils.c +++ b/clients/cli/utils.c @@ -56,19 +56,11 @@ _meta_type_nmc_generic_info_get_nested (const NMMetaAbstractInfo *abstract_info, gpointer *out_to_free) { const NmcMetaGenericInfo *info; - guint n; info = (const NmcMetaGenericInfo *) abstract_info; - if (out_len) { - n = 0; - if (info->nested) { - for (; info->nested[n]; n++) { - } - } - *out_len = n; - } *out_to_free = NULL; + NM_SET_OUT (out_len, NM_PTRARRAY_LEN (info->nested)); return (const NMMetaAbstractInfo *const*) info->nested; } @@ -764,224 +756,10 @@ nmc_free_output_field_values (NmcOutputField fields_array[]) /*****************************************************************************/ -typedef struct { - guint idx; - gsize self_offset_plus_1; - gsize sub_offset_plus_1; -} OutputSelectionItem; - -static NmcOutputSelection * -_output_selection_pack (const NMMetaAbstractInfo *const* fields_array, - GArray *array, - GString *str) -{ - NmcOutputSelection *result; - guint i; - guint len; - - len = array ? array->len : 0; - - /* re-organize the collected output data in one buffer that can be freed using - * g_free(). This makes allocation more complicated, but saves us from special - * handling for free. */ - result = g_malloc0 (sizeof (NmcOutputSelection) + (len * sizeof (NmcOutputSelectionItem)) + (str ? str->len : 0)); - *((guint *) &result->num) = len; - if (len > 0) { - char *pdata = &((char *) result)[sizeof (NmcOutputSelection) + (len * sizeof (NmcOutputSelectionItem))]; - - if (str) - memcpy (pdata, str->str, str->len); - for (i = 0; i < len; i++) { - const OutputSelectionItem *a = &g_array_index (array, OutputSelectionItem, i); - NmcOutputSelectionItem *p = (NmcOutputSelectionItem *) &result->items[i]; - - p->info = fields_array[a->idx]; - p->idx = a->idx; - if (a->self_offset_plus_1 > 0) - p->self_selection = &pdata[a->self_offset_plus_1 - 1]; - if (a->sub_offset_plus_1 > 0) - p->sub_selection = &pdata[a->sub_offset_plus_1 - 1]; - } - } - - return result; -} - -static gboolean -_output_selection_select_one (const NMMetaAbstractInfo *const* fields_array, - const char *fields_prefix, - const char *fields_str, - gboolean validate_nested, - GArray **p_array, - GString **p_str, - GError **error) -{ - guint i, j; - const char *i_name; - const char *right; - gboolean found = FALSE; - const NMMetaAbstractInfo *fields_array_failure = NULL; - gs_free char *fields_str_clone = NULL; - - nm_assert (fields_str); - nm_assert (p_array); - nm_assert (p_str); - nm_assert (!error || !*error); - - right = strchr (fields_str, '.'); - if (right) { - fields_str_clone = g_strdup (fields_str); - fields_str_clone[right - fields_str] = '\0'; - i_name = fields_str_clone; - right = &fields_str_clone[right - fields_str + 1]; - } else - i_name = fields_str; - - if (!fields_array) - goto not_found; - - for (i = 0; fields_array[i]; i++) { - const NMMetaAbstractInfo *fi = fields_array[i]; - - if (g_ascii_strcasecmp (i_name, nm_meta_abstract_info_get_name (fi, FALSE)) != 0) - continue; - - if (!right || !validate_nested) { - found = TRUE; - break; - } - - if (fi->meta_type == &nm_meta_type_setting_info_editor) { - const NMMetaSettingInfoEditor *fi_s = (const NMMetaSettingInfoEditor *) fi; - - for (j = 0; j < fi_s->properties_num; j++) { - if (g_ascii_strcasecmp (right, fi_s->properties[j].property_name) == 0) { - found = TRUE; - break; - } - } - } else if (fi->meta_type == &nmc_meta_type_generic_info) { - const NmcMetaGenericInfo *fi_g = (const NmcMetaGenericInfo *) fi; - - for (j = 0; fi_g->nested && fi_g->nested[j]; j++) { - if (g_ascii_strcasecmp (right, nm_meta_abstract_info_get_name ((const NMMetaAbstractInfo *) fi_g->nested[j], FALSE)) == 0) { - found = TRUE; - break; - } - } - } - fields_array_failure = fields_array[i]; - break; - } - - if (!found) { -not_found: - if ( !right - && !fields_prefix - && ( !g_ascii_strcasecmp (i_name, "all") - || !g_ascii_strcasecmp (i_name, "common"))) - g_set_error (error, NMCLI_ERROR, 0, _("field '%s' has to be alone"), i_name); - else { - gs_free char *allowed_fields = NULL; - - if (fields_array_failure) { - gs_free char *p = NULL; - - if (fields_prefix) { - p = g_strdup_printf ("%s.%s", fields_prefix, - nm_meta_abstract_info_get_name (fields_array_failure, FALSE)); - } - allowed_fields = nmc_get_allowed_fields_nested (fields_array_failure, p); - } else - allowed_fields = nmc_get_allowed_fields (fields_array, NULL); - - g_set_error (error, NMCLI_ERROR, 1, _("invalid field '%s%s%s%s%s'; %s%s%s"), - fields_prefix ?: "", fields_prefix ? "." : "", - i_name, right ? "." : "", right ?: "", - NM_PRINT_FMT_QUOTED (allowed_fields, "allowed fields: ", allowed_fields, "", "no fields")); - } - return FALSE; - } - - { - GString *str; - OutputSelectionItem s = { - .idx = i, - }; - - if (!*p_str) - *p_str = g_string_sized_new (64); - str = *p_str; - - s.self_offset_plus_1 = str->len + 1; - if (fields_prefix) { - g_string_append (str, fields_prefix); - g_string_append_c (str, '.'); - } - g_string_append_len (str, i_name, strlen (i_name) + 1); - - if (right) { - s.sub_offset_plus_1 = str->len + 1; - g_string_append_len (str, right, strlen (right) + 1); - } - - if (!*p_array) - *p_array = g_array_new (FALSE, FALSE, sizeof (OutputSelectionItem)); - g_array_append_val (*p_array, s); - } - - return TRUE; -} - -static NmcOutputSelection * -_output_selection_create_all (const NMMetaAbstractInfo *const* fields_array) -{ - gs_unref_array GArray *array = NULL; - guint i; - - if (fields_array) { - array = g_array_new (FALSE, FALSE, sizeof (OutputSelectionItem)); - for (i = 0; fields_array[i]; i++) { - OutputSelectionItem s = { - .idx = i, - }; - - g_array_append_val (array, s); - } - } - - return _output_selection_pack (fields_array, array, NULL); -} - -static NmcOutputSelection * -_output_selection_create_one (const NMMetaAbstractInfo *const* fields_array, - const char *fields_prefix, - const char *fields_str, /* one field selector (contains not commas) and is alrady stripped of spaces. */ - gboolean validate_nested, - GError **error) -{ - gs_unref_array GArray *array = NULL; - nm_auto_free_gstring GString *str = NULL; - - g_return_val_if_fail (!error || !*error, NULL); - nm_assert (fields_str && !strchr (fields_str, ',')); - - if (!_output_selection_select_one (fields_array, - fields_prefix, - fields_str, - validate_nested, - &array, - &str, - error)) - return NULL; - return _output_selection_pack (fields_array, array, str); - -} - #define PRINT_DATA_COL_PARENT_NIL (G_MAXUINT) typedef struct { - const NmcOutputSelectionItem *selection_item; + const NMMetaSelectionItem *selection_item; guint parent_idx; guint self_idx; bool is_leaf; @@ -991,7 +769,7 @@ static gboolean _output_selection_append (GArray *cols, const char *fields_prefix, guint parent_idx, - const NmcOutputSelectionItem *selection_item, + const NMMetaSelectionItem *selection_item, GPtrArray *gfree_keeper, GError **error) { @@ -999,8 +777,8 @@ _output_selection_append (GArray *cols, guint col_idx; guint i; const NMMetaAbstractInfo *const*nested; - NmcOutputSelection *selection; - const NmcOutputSelectionItem *si; + NMMetaSelectionResultList *selection; + const NMMetaSelectionItem *si; col_idx = cols->len; @@ -1022,7 +800,7 @@ _output_selection_append (GArray *cols, if (parent_idx != PRINT_DATA_COL_PARENT_NIL) { si = g_array_index (cols, PrintDataCol, parent_idx).selection_item; - allowed_fields = nmc_get_allowed_fields_nested (si->info, si->self_selection); + allowed_fields = nm_meta_abstract_info_get_nested_names_str (si->info, si->self_selection); } if (!allowed_fields) { g_set_error (error, NMCLI_ERROR, 1, _("invalid field '%s%s%s'; no such field"), @@ -1037,13 +815,13 @@ _output_selection_append (GArray *cols, return FALSE; } - selection = _output_selection_create_one (nested, selection_item->self_selection, - selection_item->sub_selection, FALSE, error); + selection = nm_meta_selection_create_parse_one (nested, selection_item->self_selection, + selection_item->sub_selection, FALSE, error); if (!selection) return FALSE; nm_assert (selection->num == 1); } else if (nested) { - selection = _output_selection_create_all (nested); + selection = nm_meta_selection_create_all (nested); nm_assert (selection && selection->num > 0); } else selection = NULL; @@ -1069,47 +847,6 @@ _output_selection_append (GArray *cols, /*****************************************************************************/ -NmcOutputSelection * -nmc_output_selection_create (const NMMetaAbstractInfo *const* fields_array, - const char *fields_prefix, - const char *fields_str, /* a comma separated list of selectors */ - gboolean validate_nested, - GError **error) -{ - gs_unref_array GArray *array = NULL; - nm_auto_free_gstring GString *str = NULL; - gs_free char *fields_str_clone = NULL; - char *fields_str_cur; - char *fields_str_next; - - g_return_val_if_fail (!error || !*error, NULL); - - if (!fields_str) - return _output_selection_create_all (fields_array); - - fields_str_clone = g_strdup (fields_str); - for (fields_str_cur = fields_str_clone; fields_str_cur; fields_str_cur = fields_str_next) { - fields_str_cur = nm_str_skip_leading_spaces (fields_str_cur); - fields_str_next = strchr (fields_str_cur, ','); - if (fields_str_next) - *fields_str_next++ = '\0'; - - g_strchomp (fields_str_cur); - if (!fields_str_cur[0]) - continue; - if (!_output_selection_select_one (fields_array, - fields_prefix, - fields_str_cur, - validate_nested, - &array, - &str, - error)) - return NULL; - } - - return _output_selection_pack (fields_array, array, str); -} - /** * _output_selection_parse: * @fields: a %NULL terminated array of meta-data fields @@ -1133,12 +870,12 @@ _output_selection_parse (const NMMetaAbstractInfo *const*fields, GPtrArray **out_gfree_keeper, GError **error) { - NmcOutputSelection *selection; + NMMetaSelectionResultList *selection; gs_unref_ptrarray GPtrArray *gfree_keeper = NULL; gs_unref_array GArray *cols = NULL; guint i; - selection = nmc_output_selection_create (fields, NULL, fields_str, FALSE, error); + selection = nm_meta_selection_create_parse_list (fields, NULL, fields_str, FALSE, error); if (!selection) return FALSE; @@ -1153,7 +890,7 @@ _output_selection_parse (const NMMetaAbstractInfo *const*fields, cols = g_array_new (FALSE, TRUE, sizeof (PrintDataCol)); for (i = 0; i < selection->num; i++) { - const NmcOutputSelectionItem *si = &selection->items[i]; + const NMMetaSelectionItem *si = &selection->items[i]; if (!_output_selection_append (cols, NULL, PRINT_DATA_COL_PARENT_NIL, si, gfree_keeper, error)) @@ -1194,7 +931,7 @@ parse_output_fields (const char *fields_str, GPtrArray **out_group_fields, GError **error) { - gs_free NmcOutputSelection *selection = NULL; + gs_free NMMetaSelectionResultList *selection = NULL; GArray *array; GPtrArray *group_fields = NULL; guint i; @@ -1202,7 +939,7 @@ parse_output_fields (const char *fields_str, g_return_val_if_fail (!error || !*error, NULL); g_return_val_if_fail (!out_group_fields || !*out_group_fields, NULL); - selection = nmc_output_selection_create (fields_array, NULL, fields_str, TRUE, error); + selection = nm_meta_selection_create_parse_list (fields_array, NULL, fields_str, TRUE, error); if (!selection) return NULL; @@ -1223,50 +960,6 @@ parse_output_fields (const char *fields_str, return array; } -char * -nmc_get_allowed_fields_nested (const NMMetaAbstractInfo *abstract_info, const char *name_prefix) -{ - gs_free gpointer nested_to_free = NULL; - guint i; - const NMMetaAbstractInfo *const*nested; - GString *allowed_fields; - - nested = nm_meta_abstract_info_get_nested (abstract_info, NULL, &nested_to_free); - if (!nested) - return NULL; - - allowed_fields = g_string_sized_new (256); - - if (!name_prefix) - name_prefix = nm_meta_abstract_info_get_name (abstract_info, FALSE); - - for (i = 0; nested[i]; i++) { - g_string_append_printf (allowed_fields, "%s.%s,", - name_prefix, nm_meta_abstract_info_get_name (nested[i], FALSE)); - } - g_string_truncate (allowed_fields, allowed_fields->len - 1); - return g_string_free (allowed_fields, FALSE); -} - -char * -nmc_get_allowed_fields (const NMMetaAbstractInfo *const*fields_array, const char *name_prefix) -{ - GString *allowed_fields; - guint i; - - if (!fields_array || !fields_array[0]) - return NULL; - - allowed_fields = g_string_sized_new (256); - for (i = 0; fields_array[i]; i++) { - if (name_prefix) - g_string_append_printf (allowed_fields, "%s.", name_prefix); - g_string_append_printf (allowed_fields, "%s,", nm_meta_abstract_info_get_name (fields_array[i], FALSE)); - } - g_string_truncate (allowed_fields, allowed_fields->len - 1); - return g_string_free (allowed_fields, FALSE); -} - NmcOutputField * nmc_dup_fields_array (const NMMetaAbstractInfo *const*fields, NmcOfFlags flags) { @@ -1539,7 +1232,7 @@ static gboolean _print_skip_column (const NmcConfig *nmc_config, const PrintDataHeaderCell *header_cell) { - const NmcOutputSelectionItem *selection_item; + const NMMetaSelectionItem *selection_item; const NMMetaAbstractInfo *info; selection_item = header_cell->col->selection_item; diff --git a/clients/cli/utils.h b/clients/cli/utils.h index 01ad694ae2..996531bbf3 100644 --- a/clients/cli/utils.h +++ b/clients/cli/utils.h @@ -61,31 +61,11 @@ void set_val_color_all (NmcOutputField fields_array[], NMMetaTermColor color); void set_val_color_fmt_all (NmcOutputField fields_array[], NMMetaTermFormat format); void nmc_free_output_field_values (NmcOutputField fields_array[]); -typedef struct { - const NMMetaAbstractInfo *info; - const char *self_selection; - const char *sub_selection; - guint idx; -} NmcOutputSelectionItem; - -typedef struct { - const guint num; - const NmcOutputSelectionItem items[]; -} NmcOutputSelection; - -NmcOutputSelection *nmc_output_selection_create (const NMMetaAbstractInfo *const* fields_array, - const char *fields_prefix, - const char *fields_str, - gboolean validate_nested, - GError **error); - GArray *parse_output_fields (const char *fields_str, const NMMetaAbstractInfo *const* fields_array, gboolean parse_groups, GPtrArray **group_fields, GError **error); -char *nmc_get_allowed_fields_nested (const NMMetaAbstractInfo *abstract_info, const char *name_prefix); -char *nmc_get_allowed_fields (const NMMetaAbstractInfo *const*fields_array, const char *name_prefix); NmcOutputField *nmc_dup_fields_array (const NMMetaAbstractInfo *const*fields, NmcOfFlags flags); void nmc_empty_output_fields (NmcOutputData *output_data); void print_required_fields (const NmcConfig *nmc_config, diff --git a/clients/common/nm-meta-setting-access.c b/clients/common/nm-meta-setting-access.c index 4b5f82d3e4..7a0cefde9d 100644 --- a/clients/common/nm-meta-setting-access.c +++ b/clients/common/nm-meta-setting-access.c @@ -101,10 +101,10 @@ nm_meta_setting_info_editor_get_property_info (const NMMetaSettingInfoEditor *se g_return_val_if_fail (property_name, NULL); for (i = 0; i < setting_info->properties_num; i++) { - nm_assert (setting_info->properties[i].property_name); - nm_assert (setting_info->properties[i].setting_info == setting_info); - if (nm_streq (setting_info->properties[i].property_name, property_name)) - return &setting_info->properties[i]; + nm_assert (setting_info->properties[i]->property_name); + nm_assert (setting_info->properties[i]->setting_info == setting_info); + if (nm_streq (setting_info->properties[i]->property_name, property_name)) + return setting_info->properties[i]; } return NULL; @@ -170,31 +170,6 @@ nm_meta_setting_info_editor_new_setting (const NMMetaSettingInfoEditor *setting_ /*****************************************************************************/ -/* this basically returns NMMetaSettingType.properties, but with type - * (NMMetaPropertyInfo **) instead of (NMMetaPropertyInfo *), which is - * required by some APIs. */ -const NMMetaPropertyInfo *const* -nm_property_infos_for_setting_type (NMMetaSettingType setting_type) -{ - static const NMMetaPropertyInfo **cache[_NM_META_SETTING_TYPE_NUM] = { NULL }; - const NMMetaPropertyInfo **p; - guint i; - - nm_assert (setting_type < _NM_META_SETTING_TYPE_NUM); - nm_assert (setting_type == 0 || setting_type > 0); - - if (G_UNLIKELY (!(p = cache[setting_type]))) { - const NMMetaSettingInfoEditor *setting_info = &nm_meta_setting_infos_editor[setting_type]; - - p = g_new (const NMMetaPropertyInfo *, setting_info->properties_num + 1); - for (i = 0; i < setting_info->properties_num; i++) - p[i] = &setting_info->properties[i]; - p[i] = NULL; - cache[setting_type] = p; - } - return (const NMMetaPropertyInfo *const*) p; -} - const NMMetaSettingInfoEditor *const* nm_meta_setting_infos_editor_p (void) { @@ -349,3 +324,298 @@ nm_meta_abstract_info_complete (const NMMetaAbstractInfo *abstract_info, return (const char *const*) (*out_to_free = r); } } + +/*****************************************************************************/ + +char * +nm_meta_abstract_info_get_nested_names_str (const NMMetaAbstractInfo *abstract_info, const char *name_prefix) +{ + gs_free gpointer nested_to_free = NULL; + guint i; + const NMMetaAbstractInfo *const*nested; + GString *allowed_fields; + + nested = nm_meta_abstract_info_get_nested (abstract_info, NULL, &nested_to_free); + if (!nested) + return NULL; + + allowed_fields = g_string_sized_new (256); + + if (!name_prefix) + name_prefix = nm_meta_abstract_info_get_name (abstract_info, FALSE); + + for (i = 0; nested[i]; i++) { + g_string_append_printf (allowed_fields, "%s.%s,", + name_prefix, nm_meta_abstract_info_get_name (nested[i], FALSE)); + } + g_string_truncate (allowed_fields, allowed_fields->len - 1); + return g_string_free (allowed_fields, FALSE); +} + +char * +nm_meta_abstract_infos_get_names_str (const NMMetaAbstractInfo *const*fields_array, const char *name_prefix) +{ + GString *allowed_fields; + guint i; + + if (!fields_array || !fields_array[0]) + return NULL; + + allowed_fields = g_string_sized_new (256); + for (i = 0; fields_array[i]; i++) { + if (name_prefix) + g_string_append_printf (allowed_fields, "%s.", name_prefix); + g_string_append_printf (allowed_fields, "%s,", nm_meta_abstract_info_get_name (fields_array[i], FALSE)); + } + g_string_truncate (allowed_fields, allowed_fields->len - 1); + return g_string_free (allowed_fields, FALSE); +} + +/*****************************************************************************/ + +typedef struct { + guint idx; + gsize self_offset_plus_1; + gsize sub_offset_plus_1; +} OutputSelectionItem; + +static NMMetaSelectionResultList * +_output_selection_pack (const NMMetaAbstractInfo *const* fields_array, + GArray *array, + GString *str) +{ + NMMetaSelectionResultList *result; + guint i; + guint len; + + len = array ? array->len : 0; + + /* re-organize the collected output data in one buffer that can be freed using + * g_free(). This makes allocation more complicated, but saves us from special + * handling for free. */ + result = g_malloc0 (sizeof (NMMetaSelectionResultList) + (len * sizeof (NMMetaSelectionItem)) + (str ? str->len : 0)); + *((guint *) &result->num) = len; + if (len > 0) { + char *pdata = &((char *) result)[sizeof (NMMetaSelectionResultList) + (len * sizeof (NMMetaSelectionItem))]; + + if (str) + memcpy (pdata, str->str, str->len); + for (i = 0; i < len; i++) { + const OutputSelectionItem *a = &g_array_index (array, OutputSelectionItem, i); + NMMetaSelectionItem *p = (NMMetaSelectionItem *) &result->items[i]; + + p->info = fields_array[a->idx]; + p->idx = a->idx; + if (a->self_offset_plus_1 > 0) + p->self_selection = &pdata[a->self_offset_plus_1 - 1]; + if (a->sub_offset_plus_1 > 0) + p->sub_selection = &pdata[a->sub_offset_plus_1 - 1]; + } + } + + return result; +} + +static gboolean +_output_selection_select_one (const NMMetaAbstractInfo *const* fields_array, + const char *fields_prefix, + const char *fields_str, + gboolean validate_nested, + GArray **p_array, + GString **p_str, + GError **error) +{ + guint i, j; + const char *i_name; + const char *right; + gboolean found = FALSE; + const NMMetaAbstractInfo *fields_array_failure = NULL; + gs_free char *fields_str_clone = NULL; + + nm_assert (fields_str); + nm_assert (p_array); + nm_assert (p_str); + nm_assert (!error || !*error); + + right = strchr (fields_str, '.'); + if (right) { + fields_str_clone = g_strdup (fields_str); + fields_str_clone[right - fields_str] = '\0'; + i_name = fields_str_clone; + right = &fields_str_clone[right - fields_str + 1]; + } else + i_name = fields_str; + + if (!fields_array) + goto not_found; + + for (i = 0; fields_array[i]; i++) { + const NMMetaAbstractInfo *fi = fields_array[i]; + const NMMetaAbstractInfo *const*nested; + gs_free gpointer nested_to_free = NULL; + + if (g_ascii_strcasecmp (i_name, nm_meta_abstract_info_get_name (fi, FALSE)) != 0) + continue; + + if (!right || !validate_nested) { + found = TRUE; + break; + } + + nested = nm_meta_abstract_info_get_nested (fi, NULL, &nested_to_free); + if (nested) { + for (j = 0; nested[j]; nested++) { + if (g_ascii_strcasecmp (right, nm_meta_abstract_info_get_name (nested[j], FALSE)) == 0) { + found = TRUE; + break; + } + } + } + fields_array_failure = fields_array[i]; + break; + } + + if (!found) { +not_found: + if ( !right + && !fields_prefix + && ( !g_ascii_strcasecmp (i_name, "all") + || !g_ascii_strcasecmp (i_name, "common"))) + g_set_error (error, NM_UTILS_ERROR, NM_UTILS_ERROR_UNKNOWN, _("field '%s' has to be alone"), i_name); + else { + gs_free char *allowed_fields = NULL; + + if (fields_array_failure) { + gs_free char *p = NULL; + + if (fields_prefix) { + p = g_strdup_printf ("%s.%s", fields_prefix, + nm_meta_abstract_info_get_name (fields_array_failure, FALSE)); + } + allowed_fields = nm_meta_abstract_info_get_nested_names_str (fields_array_failure, p); + } else + allowed_fields = nm_meta_abstract_infos_get_names_str (fields_array, NULL); + + g_set_error (error, NM_UTILS_ERROR, NM_UTILS_ERROR_UNKNOWN, _("invalid field '%s%s%s%s%s'; %s%s%s"), + fields_prefix ?: "", fields_prefix ? "." : "", + i_name, right ? "." : "", right ?: "", + NM_PRINT_FMT_QUOTED (allowed_fields, "allowed fields: ", allowed_fields, "", "no fields")); + } + return FALSE; + } + + { + GString *str; + OutputSelectionItem s = { + .idx = i, + }; + + if (!*p_str) + *p_str = g_string_sized_new (64); + str = *p_str; + + s.self_offset_plus_1 = str->len + 1; + if (fields_prefix) { + g_string_append (str, fields_prefix); + g_string_append_c (str, '.'); + } + g_string_append_len (str, i_name, strlen (i_name) + 1); + + if (right) { + s.sub_offset_plus_1 = str->len + 1; + g_string_append_len (str, right, strlen (right) + 1); + } + + if (!*p_array) + *p_array = g_array_new (FALSE, FALSE, sizeof (OutputSelectionItem)); + g_array_append_val (*p_array, s); + } + + return TRUE; +} + +NMMetaSelectionResultList * +nm_meta_selection_create_all (const NMMetaAbstractInfo *const* fields_array) +{ + gs_unref_array GArray *array = NULL; + guint i; + + if (fields_array) { + array = g_array_new (FALSE, FALSE, sizeof (OutputSelectionItem)); + for (i = 0; fields_array[i]; i++) { + OutputSelectionItem s = { + .idx = i, + }; + + g_array_append_val (array, s); + } + } + + return _output_selection_pack (fields_array, array, NULL); +} + +NMMetaSelectionResultList * +nm_meta_selection_create_parse_one (const NMMetaAbstractInfo *const* fields_array, + const char *fields_prefix, + const char *fields_str, /* one field selector (contains no commas) and is already stripped of spaces. */ + gboolean validate_nested, + GError **error) +{ + gs_unref_array GArray *array = NULL; + nm_auto_free_gstring GString *str = NULL; + + g_return_val_if_fail (!error || !*error, NULL); + nm_assert (fields_str && !strchr (fields_str, ',')); + + if (!_output_selection_select_one (fields_array, + fields_prefix, + fields_str, + validate_nested, + &array, + &str, + error)) + return NULL; + return _output_selection_pack (fields_array, array, str); + +} + +NMMetaSelectionResultList * +nm_meta_selection_create_parse_list (const NMMetaAbstractInfo *const* fields_array, + const char *fields_prefix, + const char *fields_str, /* a comma separated list of selectors */ + gboolean validate_nested, + GError **error) +{ + gs_unref_array GArray *array = NULL; + nm_auto_free_gstring GString *str = NULL; + gs_free char *fields_str_clone = NULL; + char *fields_str_cur; + char *fields_str_next; + + g_return_val_if_fail (!error || !*error, NULL); + + if (!fields_str) + return nm_meta_selection_create_all (fields_array); + + fields_str_clone = g_strdup (fields_str); + for (fields_str_cur = fields_str_clone; fields_str_cur; fields_str_cur = fields_str_next) { + fields_str_cur = nm_str_skip_leading_spaces (fields_str_cur); + fields_str_next = strchr (fields_str_cur, ','); + if (fields_str_next) + *fields_str_next++ = '\0'; + + g_strchomp (fields_str_cur); + if (!fields_str_cur[0]) + continue; + if (!_output_selection_select_one (fields_array, + fields_prefix, + fields_str_cur, + validate_nested, + &array, + &str, + error)) + return NULL; + } + + return _output_selection_pack (fields_array, array, str); +} diff --git a/clients/common/nm-meta-setting-access.h b/clients/common/nm-meta-setting-access.h index 9863a96f14..54fc6c84d6 100644 --- a/clients/common/nm-meta-setting-access.h +++ b/clients/common/nm-meta-setting-access.h @@ -41,8 +41,6 @@ const NMMetaPropertyInfo *nm_meta_property_info_find_by_setting (NMSetting *sett /*****************************************************************************/ -const NMMetaPropertyInfo *const*nm_property_infos_for_setting_type (NMMetaSettingType setting_type); - const NMMetaSettingInfoEditor *const*nm_meta_setting_infos_editor_p (void); /*****************************************************************************/ @@ -71,4 +69,33 @@ const char *const*nm_meta_abstract_info_complete (const NMMetaAbstractInfo *abst /*****************************************************************************/ +char *nm_meta_abstract_info_get_nested_names_str (const NMMetaAbstractInfo *abstract_info, const char *name_prefix); +char *nm_meta_abstract_infos_get_names_str (const NMMetaAbstractInfo *const*fields_array, const char *name_prefix); + +/*****************************************************************************/ + +typedef struct { + const NMMetaAbstractInfo *info; + const char *self_selection; + const char *sub_selection; + guint idx; +} NMMetaSelectionItem; + +typedef struct { + const guint num; + const NMMetaSelectionItem items[]; +} NMMetaSelectionResultList; + +NMMetaSelectionResultList *nm_meta_selection_create_all (const NMMetaAbstractInfo *const* fields_array); +NMMetaSelectionResultList *nm_meta_selection_create_parse_one (const NMMetaAbstractInfo *const* fields_array, + const char *fields_prefix, + const char *fields_str, + gboolean validate_nested, + GError **error); +NMMetaSelectionResultList *nm_meta_selection_create_parse_list (const NMMetaAbstractInfo *const* fields_array, + const char *fields_prefix, + const char *fields_str, + gboolean validate_nested, + GError **error); + #endif /* _NM_META_SETTING_ACCESS_H__ */ diff --git a/clients/common/nm-meta-setting-desc.c b/clients/common/nm-meta-setting-desc.c index 981ecddf30..a55d03700b 100644 --- a/clients/common/nm-meta-setting-desc.c +++ b/clients/common/nm-meta-setting-desc.c @@ -4764,73 +4764,94 @@ _set_fcn_wireless_security_psk (ARGS_SET_FCN) /*****************************************************************************/ -static const NMMetaPropertyInfo property_infos_BOND[]; +static const NMMetaPropertyInfo property_info_BOND_OPTIONS; -#define NESTED_PROPERTY_INFO_BOND \ - .meta_type = &nm_meta_type_nested_property_info, \ - .parent_info = &property_infos_BOND[0] +#define NESTED_PROPERTY_INFO_BOND(...) \ + .parent_info = &property_info_BOND_OPTIONS, \ + .base = { \ + .meta_type = &nm_meta_type_nested_property_info, \ + .setting_info = &nm_meta_setting_infos_editor[NM_META_SETTING_TYPE_BOND], \ + __VA_ARGS__ \ + } -static const NMMetaNestedPropertyTypeInfo meta_nested_property_type_infos_bond[] = { +static const NMMetaNestedPropertyInfo meta_nested_property_infos_bond[] = { { - NESTED_PROPERTY_INFO_BOND, - .field_name = "mode", - .prompt = NM_META_TEXT_PROMPT_BOND_MODE, - .def_hint = "[balance-rr]", + NESTED_PROPERTY_INFO_BOND ( + .property_name = NM_SETTING_BOND_OPTIONS, + .property_alias = "mode", + .prompt = NM_META_TEXT_PROMPT_BOND_MODE, + .def_hint = "[balance-rr]", + ) }, { - NESTED_PROPERTY_INFO_BOND, - .field_name = "primary", - .inf_flags = NM_META_PROPERTY_INF_FLAG_DONT_ASK, - .prompt = N_("Bonding primary interface [none]"), + NESTED_PROPERTY_INFO_BOND ( + .property_name = NM_SETTING_BOND_OPTIONS, + .property_alias = "primary", + .inf_flags = NM_META_PROPERTY_INF_FLAG_DONT_ASK, + .prompt = N_("Bonding primary interface [none]"), + ) }, { - NESTED_PROPERTY_INFO_BOND, - /* this is a virtual property, only needed during "ask" mode. */ - .field_name = NULL, - .prompt = N_("Bonding monitoring mode"), - .def_hint = NM_META_TEXT_PROMPT_BOND_MON_MODE_CHOICES, + NESTED_PROPERTY_INFO_BOND ( + .property_name = NM_SETTING_BOND_OPTIONS, + /* this is a virtual property, only needed during "ask" mode. */ + .prompt = N_("Bonding monitoring mode"), + .def_hint = NM_META_TEXT_PROMPT_BOND_MON_MODE_CHOICES, + ) }, { - NESTED_PROPERTY_INFO_BOND, - .field_name = "miimon", - .inf_flags = NM_META_PROPERTY_INF_FLAG_DONT_ASK, - .prompt = N_("Bonding miimon [100]"), + NESTED_PROPERTY_INFO_BOND ( + .property_name = NM_SETTING_BOND_OPTIONS, + .property_alias = "miimon", + .inf_flags = NM_META_PROPERTY_INF_FLAG_DONT_ASK, + .prompt = N_("Bonding miimon [100]"), + ) }, { - NESTED_PROPERTY_INFO_BOND, - .field_name = "downdelay", - .inf_flags = NM_META_PROPERTY_INF_FLAG_DONT_ASK, - .prompt = N_("Bonding downdelay [0]"), + NESTED_PROPERTY_INFO_BOND ( + .property_name = NM_SETTING_BOND_OPTIONS, + .property_alias = "downdelay", + .inf_flags = NM_META_PROPERTY_INF_FLAG_DONT_ASK, + .prompt = N_("Bonding downdelay [0]"), + ) }, { - NESTED_PROPERTY_INFO_BOND, - .field_name = "updelay", - .inf_flags = NM_META_PROPERTY_INF_FLAG_DONT_ASK, - .prompt = N_("Bonding updelay [0]"), + NESTED_PROPERTY_INFO_BOND ( + .property_name = NM_SETTING_BOND_OPTIONS, + .property_alias = "updelay", + .inf_flags = NM_META_PROPERTY_INF_FLAG_DONT_ASK, + .prompt = N_("Bonding updelay [0]"), + ) }, { - NESTED_PROPERTY_INFO_BOND, - .field_name = "arp-interval", - .inf_flags = NM_META_PROPERTY_INF_FLAG_DONT_ASK, - .prompt = N_("Bonding arp-interval [0]"), + NESTED_PROPERTY_INFO_BOND ( + .property_name = NM_SETTING_BOND_OPTIONS, + .property_alias = "arp-interval", + .inf_flags = NM_META_PROPERTY_INF_FLAG_DONT_ASK, + .prompt = N_("Bonding arp-interval [0]"), + ) }, { - NESTED_PROPERTY_INFO_BOND, - .field_name = "arp-ip-target", - .inf_flags = NM_META_PROPERTY_INF_FLAG_DONT_ASK, - .prompt = N_("Bonding arp-ip-target [none]"), + NESTED_PROPERTY_INFO_BOND ( + .property_name = NM_SETTING_BOND_OPTIONS, + .property_alias = "arp-ip-target", + .inf_flags = NM_META_PROPERTY_INF_FLAG_DONT_ASK, + .prompt = N_("Bonding arp-ip-target [none]"), + ) }, { - NESTED_PROPERTY_INFO_BOND, - .field_name = "lacp-rate", - .inf_flags = NM_META_PROPERTY_INF_FLAG_DONT_ASK, - .prompt = N_("LACP rate ('slow' or 'fast') [slow]"), + NESTED_PROPERTY_INFO_BOND ( + .property_name = NM_SETTING_BOND_OPTIONS, + .property_alias = "lacp-rate", + .inf_flags = NM_META_PROPERTY_INF_FLAG_DONT_ASK, + .prompt = N_("LACP rate ('slow' or 'fast') [slow]"), + ) }, }; const NMMetaPropertyTypDataNested nm_meta_property_typ_data_bond = { - .nested = meta_nested_property_type_infos_bond, - .nested_len = G_N_ELEMENTS (meta_nested_property_type_infos_bond), + .nested = meta_nested_property_infos_bond, + .nested_len = G_N_ELEMENTS (meta_nested_property_infos_bond), }; /*****************************************************************************/ @@ -4914,14 +4935,20 @@ static const NMMetaPropertyType _pt_gobject_devices = { /*****************************************************************************/ -#define PROPERTY_INFO(name, doc) \ - .meta_type = &nm_meta_type_property_info, \ - .setting_info = &nm_meta_setting_infos_editor[_CURRENT_NM_META_SETTING_TYPE], \ - .property_name = N_ (name), \ - .describe_doc = N_ (doc) +#define PROPERTY_INFO_INIT(name, doc, ...) \ + { \ + .meta_type = &nm_meta_type_property_info, \ + .setting_info = &nm_meta_setting_infos_editor[_CURRENT_NM_META_SETTING_TYPE], \ + .property_name = N_ (name), \ + .describe_doc = N_ (doc), \ + __VA_ARGS__ \ + } -#define PROPERTY_INFO_WITH_DESC(name) \ - PROPERTY_INFO (name, DESCRIBE_DOC_##name) +#define PROPERTY_INFO(name, doc, ...) \ + (&((const NMMetaPropertyInfo) PROPERTY_INFO_INIT (name, doc, __VA_ARGS__))) + +#define PROPERTY_INFO_WITH_DESC(name, ...) \ + PROPERTY_INFO (name, DESCRIBE_DOC_##name, ##__VA_ARGS__) #define VALUES_STATIC(...) (((const char *[]) { __VA_ARGS__, NULL })) @@ -4946,9 +4973,8 @@ static const NMMetaPropertyType _pt_gobject_devices = { " set team.config /etc/my-team.conf\n" #define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_802_1X -static const NMMetaPropertyInfo property_infos_802_1X[] = { - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_EAP), +static const NMMetaPropertyInfo *const property_infos_802_1X[] = { + PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_EAP, .property_type = DEFINE_PROPERTY_TYPE ( .get_fcn = _get_fcn_gobject, .set_fcn = _set_fcn_802_1x_eap, @@ -4957,21 +4983,17 @@ static const NMMetaPropertyInfo property_infos_802_1X[] = { .property_typ_data = DEFINE_PROPERTY_TYP_DATA ( .values_static = VALUES_STATIC ("leap", "md5", "tls", "peap", "ttls", "sim", "fast", "pwd"), ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_IDENTITY), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_IDENTITY, .property_type = &_pt_gobject_string, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_ANONYMOUS_IDENTITY), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_ANONYMOUS_IDENTITY, .property_type = &_pt_gobject_string, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PAC_FILE), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PAC_FILE, .property_type = &_pt_gobject_string, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_CA_CERT), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_CA_CERT, .describe_message = N_ ("Enter file path to CA certificate (optionally prefixed with file://).\n" " [file://]<file path>\n" @@ -4981,38 +5003,31 @@ static const NMMetaPropertyInfo property_infos_802_1X[] = { .get_fcn = _get_fcn_802_1x_ca_cert, .set_fcn = _set_fcn_802_1x_ca_cert, ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_CA_CERT_PASSWORD), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_CA_CERT_PASSWORD, .is_secret = TRUE, .property_type = &_pt_gobject_string, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_CA_CERT_PASSWORD_FLAGS), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_CA_CERT_PASSWORD_FLAGS, .property_type = &_pt_gobject_secret_flags, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_CA_PATH), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_CA_PATH, .property_type = &_pt_gobject_string, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_SUBJECT_MATCH), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_SUBJECT_MATCH, .property_type = &_pt_gobject_string, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_ALTSUBJECT_MATCHES), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_ALTSUBJECT_MATCHES, .property_type = DEFINE_PROPERTY_TYPE ( .get_fcn = _get_fcn_gobject, .set_fcn = _set_fcn_802_1x_altsubject_matches, .remove_fcn = _remove_fcn_802_1x_altsubject_matches, ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_DOMAIN_SUFFIX_MATCH), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_DOMAIN_SUFFIX_MATCH, .property_type = &_pt_gobject_string, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_CLIENT_CERT), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_CLIENT_CERT, .describe_message = N_ ("Enter file path to client certificate (optionally prefixed with file://).\n" " [file://]<file path>\n" @@ -5022,39 +5037,33 @@ static const NMMetaPropertyInfo property_infos_802_1X[] = { .get_fcn = _get_fcn_802_1x_client_cert, .set_fcn = _set_fcn_802_1x_client_cert, ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_CLIENT_CERT_PASSWORD), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_CLIENT_CERT_PASSWORD, .is_secret = TRUE, .property_type = &_pt_gobject_string, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_CLIENT_CERT_PASSWORD_FLAGS), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_CLIENT_CERT_PASSWORD_FLAGS, .property_type = &_pt_gobject_secret_flags, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PHASE1_PEAPVER), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PHASE1_PEAPVER, .property_type = &_pt_gobject_string, .property_typ_data = DEFINE_PROPERTY_TYP_DATA ( .values_static = VALUES_STATIC ("0", "1"), ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PHASE1_PEAPLABEL), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PHASE1_PEAPLABEL, .property_type = &_pt_gobject_string, .property_typ_data = DEFINE_PROPERTY_TYP_DATA ( .values_static = VALUES_STATIC ("0", "1"), ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PHASE1_FAST_PROVISIONING), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PHASE1_FAST_PROVISIONING, .property_type = &_pt_gobject_string, .property_typ_data = DEFINE_PROPERTY_TYP_DATA ( .values_static = VALUES_STATIC ("0", "1", "2", "3"), ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PHASE1_AUTH_FLAGS), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PHASE1_AUTH_FLAGS, .property_type = &_pt_gobject_enum, .property_typ_data = DEFINE_PROPERTY_TYP_DATA ( PROPERTY_TYP_DATA_SUBTYPE (gobject_enum, @@ -5062,23 +5071,20 @@ static const NMMetaPropertyInfo property_infos_802_1X[] = { ), .typ_flags = NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PARSABLE_TEXT, ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PHASE2_AUTH), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PHASE2_AUTH, .property_type = &_pt_gobject_string, .property_typ_data = DEFINE_PROPERTY_TYP_DATA ( .values_static = VALUES_STATIC ("pap", "chap", "mschap", "mschapv2", "gtc", "otp", "md5", "tls"), ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PHASE2_AUTHEAP), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PHASE2_AUTHEAP, .property_type = &_pt_gobject_string, .property_typ_data = DEFINE_PROPERTY_TYP_DATA ( .values_static = VALUES_STATIC ("md5", "mschapv2", "otp", "gtc", "tls"), ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PHASE2_CA_CERT), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PHASE2_CA_CERT, .describe_message = N_ ("Enter file path to CA certificate for inner authentication (optionally prefixed\n" "with file://).\n" @@ -5089,38 +5095,31 @@ static const NMMetaPropertyInfo property_infos_802_1X[] = { .get_fcn = _get_fcn_802_1x_phase2_ca_cert, .set_fcn = _set_fcn_802_1x_phase2_ca_cert, ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PHASE2_CA_CERT_PASSWORD), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PHASE2_CA_CERT_PASSWORD, .is_secret = TRUE, .property_type = &_pt_gobject_string, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PHASE2_CA_CERT_PASSWORD_FLAGS), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PHASE2_CA_CERT_PASSWORD_FLAGS, .property_type = &_pt_gobject_secret_flags, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PHASE2_CA_PATH), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PHASE2_CA_PATH, .property_type = &_pt_gobject_string, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PHASE2_SUBJECT_MATCH), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PHASE2_SUBJECT_MATCH, .property_type = &_pt_gobject_string, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PHASE2_ALTSUBJECT_MATCHES), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PHASE2_ALTSUBJECT_MATCHES, .property_type = DEFINE_PROPERTY_TYPE ( .get_fcn = _get_fcn_gobject, .set_fcn = _set_fcn_802_1x_phase2_altsubject_matches, .remove_fcn = _remove_fcn_802_1x_phase2_altsubject_matches, ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PHASE2_DOMAIN_SUFFIX_MATCH), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PHASE2_DOMAIN_SUFFIX_MATCH, .property_type = &_pt_gobject_string, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PHASE2_CLIENT_CERT), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PHASE2_CLIENT_CERT, .describe_message = N_ ("Enter file path to client certificate for inner authentication (optionally prefixed\n" "with file://).\n" @@ -5131,27 +5130,22 @@ static const NMMetaPropertyInfo property_infos_802_1X[] = { .get_fcn = _get_fcn_802_1x_phase2_client_cert, .set_fcn = _set_fcn_802_1x_phase2_client_cert, ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PHASE2_CLIENT_CERT_PASSWORD), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PHASE2_CLIENT_CERT_PASSWORD, .is_secret = TRUE, .property_type = &_pt_gobject_string, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PHASE2_CLIENT_CERT_PASSWORD_FLAGS), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PHASE2_CLIENT_CERT_PASSWORD_FLAGS, .property_type = &_pt_gobject_secret_flags, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PASSWORD), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PASSWORD, .is_secret = TRUE, .property_type = &_pt_gobject_string, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PASSWORD_FLAGS), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PASSWORD_FLAGS, .property_type = &_pt_gobject_secret_flags, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PASSWORD_RAW), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PASSWORD_RAW, .is_secret = TRUE, .describe_message = N_ ("Enter bytes as a list of hexadecimal values.\n" @@ -5165,13 +5159,11 @@ static const NMMetaPropertyInfo property_infos_802_1X[] = { .get_fcn = _get_fcn_802_1x_password_raw, .set_fcn = _set_fcn_802_1x_password_raw, ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PASSWORD_RAW_FLAGS), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PASSWORD_RAW_FLAGS, .property_type = &_pt_gobject_secret_flags, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PRIVATE_KEY), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PRIVATE_KEY, .describe_message = N_ ("Enter path to a private key and the key password (if not set yet):\n" " [file://]<file path> [<password>]\n" @@ -5181,18 +5173,15 @@ static const NMMetaPropertyInfo property_infos_802_1X[] = { .get_fcn = _get_fcn_802_1x_private_key, .set_fcn = _set_fcn_802_1x_private_key, ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PRIVATE_KEY_PASSWORD), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PRIVATE_KEY_PASSWORD, .is_secret = TRUE, .property_type = &_pt_gobject_string, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PRIVATE_KEY_PASSWORD_FLAGS), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PRIVATE_KEY_PASSWORD_FLAGS, .property_type = &_pt_gobject_secret_flags, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PHASE2_PRIVATE_KEY), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PHASE2_PRIVATE_KEY, .describe_message = N_ ("Enter path to a private key and the key password (if not set yet):\n" " [file://]<file path> [<password>]\n" @@ -5202,60 +5191,51 @@ static const NMMetaPropertyInfo property_infos_802_1X[] = { .get_fcn = _get_fcn_802_1x_phase2_private_key, .set_fcn = _set_fcn_802_1x_phase2_private_key, ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PHASE2_PRIVATE_KEY_PASSWORD), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PHASE2_PRIVATE_KEY_PASSWORD, .is_secret = TRUE, .property_type = &_pt_gobject_string, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PHASE2_PRIVATE_KEY_PASSWORD_FLAGS), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PHASE2_PRIVATE_KEY_PASSWORD_FLAGS, .property_type = &_pt_gobject_secret_flags, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PIN), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PIN, .is_secret = TRUE, .property_type = &_pt_gobject_string, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PIN_FLAGS), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_PIN_FLAGS, .property_type = &_pt_gobject_secret_flags, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_SYSTEM_CA_CERTS), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_SYSTEM_CA_CERTS, .property_type = &_pt_gobject_bool, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_AUTH_TIMEOUT), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_802_1X_AUTH_TIMEOUT, .property_type = &_pt_gobject_int, - }, + ), + NULL }; #undef _CURRENT_NM_META_SETTING_TYPE #define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_ADSL -static const NMMetaPropertyInfo property_infos_ADSL[] = { - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_ADSL_USERNAME), +static const NMMetaPropertyInfo *const property_infos_ADSL[] = { + PROPERTY_INFO_WITH_DESC (NM_SETTING_ADSL_USERNAME, .is_cli_option = TRUE, .property_alias = "username", .inf_flags = NM_META_PROPERTY_INF_FLAG_REQD, .prompt = N_("Username"), .property_type = &_pt_gobject_string, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_ADSL_PASSWORD), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_ADSL_PASSWORD, .is_cli_option = TRUE, .property_alias = "password", .prompt = N_("Password [none]"), .is_secret = TRUE, .property_type = &_pt_gobject_string, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_ADSL_PASSWORD_FLAGS), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_ADSL_PASSWORD_FLAGS, .property_type = &_pt_gobject_secret_flags, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_ADSL_PROTOCOL), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_ADSL_PROTOCOL, .is_cli_option = TRUE, .property_alias = "protocol", .inf_flags = NM_META_PROPERTY_INF_FLAG_REQD, @@ -5267,9 +5247,8 @@ static const NMMetaPropertyInfo property_infos_ADSL[] = { NM_SETTING_ADSL_PROTOCOL_PPPOE, NM_SETTING_ADSL_PROTOCOL_IPOATM), ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_ADSL_ENCAPSULATION), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_ADSL_ENCAPSULATION, .is_cli_option = TRUE, .property_alias = "encapsulation", .prompt = NM_META_TEXT_PROMPT_ADSL_ENCAP, @@ -5279,30 +5258,27 @@ static const NMMetaPropertyInfo property_infos_ADSL[] = { .values_static = VALUES_STATIC (NM_SETTING_ADSL_ENCAPSULATION_VCMUX, NM_SETTING_ADSL_ENCAPSULATION_LLC), ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_ADSL_VPI), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_ADSL_VPI, .property_type = &_pt_gobject_uint, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_ADSL_VCI), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_ADSL_VCI, .property_type = &_pt_gobject_uint, - }, + ), + NULL }; #undef _CURRENT_NM_META_SETTING_TYPE #define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_BLUETOOTH -static const NMMetaPropertyInfo property_infos_BLUETOOTH[] = { - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_BLUETOOTH_BDADDR), +static const NMMetaPropertyInfo *const property_infos_BLUETOOTH[] = { + PROPERTY_INFO_WITH_DESC (NM_SETTING_BLUETOOTH_BDADDR, .is_cli_option = TRUE, .property_alias = "addr", .inf_flags = NM_META_PROPERTY_INF_FLAG_REQD, .prompt = N_("Bluetooth device address"), .property_type = &_pt_gobject_mac, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_BLUETOOTH_TYPE), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_BLUETOOTH_TYPE, .is_cli_option = TRUE, .property_alias = "bt-type", .prompt = NM_META_TEXT_PROMPT_BT_TYPE, @@ -5312,14 +5288,14 @@ static const NMMetaPropertyInfo property_infos_BLUETOOTH[] = { .values_static = VALUES_STATIC (NM_SETTING_BLUETOOTH_TYPE_DUN, NM_SETTING_BLUETOOTH_TYPE_PANU), ), - }, + ), + NULL }; #undef _CURRENT_NM_META_SETTING_TYPE #define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_BOND -static const NMMetaPropertyInfo property_infos_BOND[] = { - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_BOND_OPTIONS), +static const NMMetaPropertyInfo property_info_BOND_OPTIONS = + PROPERTY_INFO_INIT (NM_SETTING_BOND_OPTIONS, DESCRIBE_DOC_NM_SETTING_BOND_OPTIONS, .property_type = DEFINE_PROPERTY_TYPE ( .describe_fcn = _describe_fcn_bond_options, .get_fcn = _get_fcn_bond_options, @@ -5327,154 +5303,141 @@ static const NMMetaPropertyInfo property_infos_BOND[] = { .remove_fcn = _remove_fcn_bond_options, .values_fcn = _values_fcn_bond_options, ), - .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (nested, - .data = &nm_meta_property_typ_data_bond, + .property_typ_data = DEFINE_PROPERTY_TYP_DATA ( + .nested = &nm_meta_property_typ_data_bond, ), - }, + ); + +static const NMMetaPropertyInfo *const property_infos_BOND[] = { + &property_info_BOND_OPTIONS, + NULL }; #undef _CURRENT_NM_META_SETTING_TYPE #define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_BRIDGE -static const NMMetaPropertyInfo property_infos_BRIDGE[] = { - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_MAC_ADDRESS), +static const NMMetaPropertyInfo *const property_infos_BRIDGE[] = { + PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_MAC_ADDRESS, .is_cli_option = TRUE, .property_alias = "mac", .prompt = N_("MAC [none]"), .property_type = &_pt_gobject_mac, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_STP), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_STP, .is_cli_option = TRUE, .property_alias = "stp", .prompt = N_("Enable STP [no]"), .property_type = &_pt_gobject_bool, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_PRIORITY), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_PRIORITY, .is_cli_option = TRUE, .property_alias = "priority", .prompt = N_("STP priority [32768]"), .property_type = &_pt_gobject_uint, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_FORWARD_DELAY), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_FORWARD_DELAY, .is_cli_option = TRUE, .property_alias = "forward-delay", .prompt = N_("Forward delay [15]"), .property_type = &_pt_gobject_uint, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_HELLO_TIME), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_HELLO_TIME, .is_cli_option = TRUE, .property_alias = "hello-time", .prompt = N_("Hello time [2]"), .property_type = &_pt_gobject_uint, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_MAX_AGE), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_MAX_AGE, .is_cli_option = TRUE, .property_alias = "max-age", .prompt = N_("Max age [20]"), .property_type = &_pt_gobject_uint, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_AGEING_TIME), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_AGEING_TIME, .is_cli_option = TRUE, .property_alias = "ageing-time", .prompt = N_("MAC address ageing time [300]"), .property_type = &_pt_gobject_uint, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_MULTICAST_SNOOPING), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_MULTICAST_SNOOPING, .is_cli_option = TRUE, .property_alias = "multicast-snooping", .prompt = N_("Enable IGMP snooping [no]"), .property_type = &_pt_gobject_bool, - }, + ), + NULL }; #undef _CURRENT_NM_META_SETTING_TYPE #define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_BRIDGE_PORT -static const NMMetaPropertyInfo property_infos_BRIDGE_PORT[] = { - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_PORT_PRIORITY), +static const NMMetaPropertyInfo *const property_infos_BRIDGE_PORT[] = { + PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_PORT_PRIORITY, .is_cli_option = TRUE, .property_alias = "priority", .prompt = N_("Bridge port priority [32]"), .property_type = &_pt_gobject_uint, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_PORT_PATH_COST), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_PORT_PATH_COST, .is_cli_option = TRUE, .property_alias = "path-cost", .prompt = N_("Bridge port STP path cost [100]"), .property_type = &_pt_gobject_uint, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_PORT_HAIRPIN_MODE), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_PORT_HAIRPIN_MODE, .is_cli_option = TRUE, .property_alias = "hairpin", .prompt = N_("Hairpin [no]"), .property_type = &_pt_gobject_bool, - }, + ), + NULL }; #undef _CURRENT_NM_META_SETTING_TYPE #define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_CDMA -static const NMMetaPropertyInfo property_infos_CDMA[] = { - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_CDMA_NUMBER), +static const NMMetaPropertyInfo *const property_infos_CDMA[] = { + PROPERTY_INFO_WITH_DESC (NM_SETTING_CDMA_NUMBER, .property_type = &_pt_gobject_string, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_CDMA_USERNAME), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_CDMA_USERNAME, .is_cli_option = TRUE, .property_alias = "user", .prompt = N_("Username [none]"), .property_type = &_pt_gobject_string, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_CDMA_PASSWORD), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_CDMA_PASSWORD, .is_cli_option = TRUE, .property_alias = "password", .prompt = N_("Password [none]"), .is_secret = TRUE, .property_type = &_pt_gobject_string, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_CDMA_PASSWORD_FLAGS), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_CDMA_PASSWORD_FLAGS, .property_type = &_pt_gobject_secret_flags, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_CDMA_MTU), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_CDMA_MTU, .property_type = &_pt_gobject_mtu, .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (mtu, .get_fcn = MTU_GET_FCN (NMSettingCdma, nm_setting_cdma_get_mtu), ), - }, + ), + NULL }; #undef _CURRENT_NM_META_SETTING_TYPE #define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_CONNECTION -static const NMMetaPropertyInfo property_infos_CONNECTION[] = { - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_ID), +static const NMMetaPropertyInfo *const property_infos_CONNECTION[] = { + PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_ID, .is_cli_option = TRUE, .property_alias = "con-name", .inf_flags = NM_META_PROPERTY_INF_FLAG_DONT_ASK, .property_type = &_pt_gobject_string, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_UUID), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_UUID, .property_type = DEFINE_PROPERTY_TYPE ( .get_fcn = _get_fcn_gobject ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_STABLE_ID), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_STABLE_ID, .property_type = &_pt_gobject_string, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_INTERFACE_NAME), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_INTERFACE_NAME, .is_cli_option = TRUE, .property_alias = "ifname", .inf_flags = NM_META_PROPERTY_INF_FLAG_REQD, @@ -5484,9 +5447,9 @@ static const NMMetaPropertyInfo property_infos_CONNECTION[] = { .set_fcn = _set_fcn_gobject_ifname, .complete_fcn = _complete_fcn_gobject_devices, ), - }, - [_NM_META_PROPERTY_TYPE_CONNECTION_TYPE] = { - PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_TYPE), + ), +[_NM_META_PROPERTY_TYPE_CONNECTION_TYPE] = + PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_TYPE, .is_cli_option = TRUE, .property_alias = "type", .inf_flags = NM_META_PROPERTY_INF_FLAG_REQD, @@ -5496,35 +5459,29 @@ static const NMMetaPropertyInfo property_infos_CONNECTION[] = { .set_fcn = _set_fcn_connection_type, .complete_fcn = _complete_fcn_connection_type, ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_AUTOCONNECT), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_AUTOCONNECT, .is_cli_option = TRUE, .property_alias = "autoconnect", .inf_flags = NM_META_PROPERTY_INF_FLAG_DONT_ASK, .property_type = &_pt_gobject_bool, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_AUTOCONNECT_PRIORITY), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_AUTOCONNECT_PRIORITY, .property_type = &_pt_gobject_int, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_AUTOCONNECT_RETRIES), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_AUTOCONNECT_RETRIES, .property_type = DEFINE_PROPERTY_TYPE ( .get_fcn = _get_fcn_connection_autoconnect_retires, .set_fcn = _set_fcn_gobject_int, ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_TIMESTAMP), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_TIMESTAMP, .property_type = &_pt_gobject_readonly, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_READ_ONLY), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_READ_ONLY, .property_type = &_pt_gobject_readonly, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_PERMISSIONS), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_PERMISSIONS, .describe_message = N_ ("Enter a list of user permissions. This is a list of user names formatted as:\n" " [user:]<user name 1>, [user:]<user name 2>,...\n" @@ -5535,13 +5492,11 @@ static const NMMetaPropertyInfo property_infos_CONNECTION[] = { .set_fcn = _set_fcn_connection_permissions, .remove_fcn = _remove_fcn_connection_permissions, ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_ZONE), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_ZONE, .property_type = &_pt_gobject_string, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_MASTER), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_MASTER, .is_cli_option = TRUE, .property_alias = "master", .inf_flags = NM_META_PROPERTY_INF_FLAG_DONT_ASK, @@ -5551,9 +5506,8 @@ static const NMMetaPropertyInfo property_infos_CONNECTION[] = { .set_fcn = _set_fcn_connection_master, .complete_fcn = _complete_fcn_connection_master, ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_SLAVE_TYPE), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_SLAVE_TYPE, .is_cli_option = TRUE, .property_alias = "slave-type", .inf_flags = NM_META_PROPERTY_INF_FLAG_DONT_ASK, @@ -5563,16 +5517,14 @@ static const NMMetaPropertyInfo property_infos_CONNECTION[] = { NM_SETTING_BRIDGE_SETTING_NAME, NM_SETTING_TEAM_SETTING_NAME), ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_AUTOCONNECT_SLAVES), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_AUTOCONNECT_SLAVES, .property_type = DEFINE_PROPERTY_TYPE ( .get_fcn = _get_fcn_connection_autoconnect_slaves, .set_fcn = _set_fcn_gobject_trilean, ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_SECONDARIES), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_SECONDARIES, .describe_message = N_ ("Enter secondary connections that should be activated when this connection is\n" "activated. Connections can be specified either by UUID or ID (name). nmcli\n" @@ -5585,13 +5537,11 @@ static const NMMetaPropertyInfo property_infos_CONNECTION[] = { .set_fcn = _set_fcn_connection_secondaries, .remove_fcn = _remove_fcn_connection_secondaries, ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_GATEWAY_PING_TIMEOUT), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_GATEWAY_PING_TIMEOUT, .property_type = &_pt_gobject_uint, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_METERED), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_METERED, .describe_message = N_ ("Enter a value which indicates whether the connection is subject to a data\n" "quota, usage costs or other limitations. Accepted options are:\n" @@ -5605,9 +5555,8 @@ static const NMMetaPropertyInfo property_infos_CONNECTION[] = { .property_typ_data = DEFINE_PROPERTY_TYP_DATA ( .values_static = VALUES_STATIC ("yes", "no", "unknown"), ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_LLDP), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_LLDP, .property_type = &_pt_gobject_enum, .property_typ_data = DEFINE_PROPERTY_TYP_DATA ( PROPERTY_TYP_DATA_SUBTYPE (gobject_enum, @@ -5622,200 +5571,174 @@ static const NMMetaPropertyInfo property_infos_CONNECTION[] = { .typ_flags = NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PARSABLE_TEXT | NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PRETTY_TEXT, ), - }, + ), + NULL }; #undef _CURRENT_NM_META_SETTING_TYPE #define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_DCB -static const NMMetaPropertyInfo property_infos_DCB[] = { - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_DCB_APP_FCOE_FLAGS), +static const NMMetaPropertyInfo *const property_infos_DCB[] = { + PROPERTY_INFO_WITH_DESC (NM_SETTING_DCB_APP_FCOE_FLAGS, .property_type = DEFINE_PROPERTY_TYPE ( .get_fcn = _get_fcn_dcb_app_fcoe_flags, .set_fcn = _set_fcn_dcb_flags, ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_DCB_APP_FCOE_PRIORITY), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_DCB_APP_FCOE_PRIORITY, .property_type = DEFINE_PROPERTY_TYPE ( .get_fcn = _get_fcn_dcb_app_fcoe_priority, .set_fcn = _set_fcn_dcb_priority, ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_DCB_APP_FCOE_MODE), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_DCB_APP_FCOE_MODE, .property_type = &_pt_gobject_string, .property_typ_data = DEFINE_PROPERTY_TYP_DATA ( .values_static = VALUES_STATIC (NM_SETTING_DCB_FCOE_MODE_FABRIC, NM_SETTING_DCB_FCOE_MODE_VN2VN), ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_DCB_APP_ISCSI_FLAGS), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_DCB_APP_ISCSI_FLAGS, .property_type = DEFINE_PROPERTY_TYPE ( .get_fcn = _get_fcn_dcb_app_iscsi_flags, .set_fcn = _set_fcn_dcb_flags, ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_DCB_APP_ISCSI_PRIORITY), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_DCB_APP_ISCSI_PRIORITY, .property_type = DEFINE_PROPERTY_TYPE ( .get_fcn = _get_fcn_dcb_app_iscsi_priority, .set_fcn = _set_fcn_dcb_priority, ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_DCB_APP_FIP_FLAGS), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_DCB_APP_FIP_FLAGS, .property_type = DEFINE_PROPERTY_TYPE ( .get_fcn = _get_fcn_dcb_app_fip_flags, .set_fcn = _set_fcn_dcb_flags, ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_DCB_APP_FIP_PRIORITY), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_DCB_APP_FIP_PRIORITY, .property_type = DEFINE_PROPERTY_TYPE ( .get_fcn = _get_fcn_dcb_app_fip_priority, .set_fcn = _set_fcn_dcb_priority, ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_DCB_PRIORITY_FLOW_CONTROL_FLAGS), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_DCB_PRIORITY_FLOW_CONTROL_FLAGS, .property_type = DEFINE_PROPERTY_TYPE ( .get_fcn = _get_fcn_dcb_priority_flow_control_flags, .set_fcn = _set_fcn_dcb_flags, ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_DCB_PRIORITY_FLOW_CONTROL), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_DCB_PRIORITY_FLOW_CONTROL, .property_type = DEFINE_PROPERTY_TYPE ( .get_fcn = _get_fcn_dcb_priority_flow_control, .set_fcn = _set_fcn_dcb_priority_flow_control, ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_DCB_PRIORITY_GROUP_FLAGS), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_DCB_PRIORITY_GROUP_FLAGS, .property_type = DEFINE_PROPERTY_TYPE ( .get_fcn = _get_fcn_dcb_priority_group_flags, .set_fcn = _set_fcn_dcb_flags, ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_DCB_PRIORITY_GROUP_ID), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_DCB_PRIORITY_GROUP_ID, .property_type = DEFINE_PROPERTY_TYPE ( .get_fcn = _get_fcn_dcb_priority_group_id, .set_fcn = _set_fcn_dcb_priority_group_id, ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_DCB_PRIORITY_GROUP_BANDWIDTH), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_DCB_PRIORITY_GROUP_BANDWIDTH, .property_type = DEFINE_PROPERTY_TYPE ( .get_fcn = _get_fcn_dcb_priority_group_bandwidth, .set_fcn = _set_fcn_dcb_priority_group_bandwidth, ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_DCB_PRIORITY_BANDWIDTH), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_DCB_PRIORITY_BANDWIDTH, .property_type = DEFINE_PROPERTY_TYPE ( .get_fcn = _get_fcn_dcb_priority_bandwidth, .set_fcn = _set_fcn_dcb_priority_bandwidth, ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_DCB_PRIORITY_STRICT_BANDWIDTH), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_DCB_PRIORITY_STRICT_BANDWIDTH, .property_type = DEFINE_PROPERTY_TYPE ( .get_fcn = _get_fcn_dcb_priority_strict, .set_fcn = _set_fcn_dcb_priority_strict, ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_DCB_PRIORITY_TRAFFIC_CLASS), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_DCB_PRIORITY_TRAFFIC_CLASS, .property_type = DEFINE_PROPERTY_TYPE ( .get_fcn = _get_fcn_dcb_priority_traffic_class, .set_fcn = _set_fcn_dcb_priority_traffic_class, ), - }, + ), + NULL }; #undef _CURRENT_NM_META_SETTING_TYPE #define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_GSM -static const NMMetaPropertyInfo property_infos_GSM[] = { - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_GSM_NUMBER), +static const NMMetaPropertyInfo *const property_infos_GSM[] = { + PROPERTY_INFO_WITH_DESC (NM_SETTING_GSM_NUMBER, .property_type = &_pt_gobject_string, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_GSM_USERNAME), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_GSM_USERNAME, .is_cli_option = TRUE, .property_alias = "user", .prompt = N_("Username [none]"), .property_type = &_pt_gobject_string, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_GSM_PASSWORD), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_GSM_PASSWORD, .is_cli_option = TRUE, .property_alias = "password", .prompt = N_("Password [none]"), .is_secret = TRUE, .property_type = &_pt_gobject_string, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_GSM_PASSWORD_FLAGS), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_GSM_PASSWORD_FLAGS, .property_type = &_pt_gobject_secret_flags, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_GSM_APN), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_GSM_APN, .is_cli_option = TRUE, .property_alias = "apn", .inf_flags = NM_META_PROPERTY_INF_FLAG_REQD, .prompt = N_("APN"), .property_type = &_pt_gobject_string, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_GSM_NETWORK_ID), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_GSM_NETWORK_ID, .property_type = &_pt_gobject_string, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_GSM_PIN), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_GSM_PIN, .is_secret = TRUE, .property_type = &_pt_gobject_string, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_GSM_PIN_FLAGS), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_GSM_PIN_FLAGS, .property_type = &_pt_gobject_secret_flags, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_GSM_HOME_ONLY), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_GSM_HOME_ONLY, .property_type = &_pt_gobject_bool, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_GSM_DEVICE_ID), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_GSM_DEVICE_ID, .property_type = &_pt_gobject_string, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_GSM_SIM_ID), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_GSM_SIM_ID, .property_type = &_pt_gobject_string, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_GSM_SIM_OPERATOR_ID), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_GSM_SIM_OPERATOR_ID, .property_type = DEFINE_PROPERTY_TYPE ( .get_fcn = _get_fcn_gobject, .set_fcn = _set_fcn_gsm_sim_operator_id, ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_GSM_MTU), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_GSM_MTU, .property_type = &_pt_gobject_mtu, .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (mtu, .get_fcn = MTU_GET_FCN (NMSettingGsm, nm_setting_gsm_get_mtu), ), - }, + ), + NULL }; #undef _CURRENT_NM_META_SETTING_TYPE #define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_INFINIBAND -static const NMMetaPropertyInfo property_infos_INFINIBAND[] = { - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_INFINIBAND_MAC_ADDRESS), +static const NMMetaPropertyInfo *const property_infos_INFINIBAND[] = { + PROPERTY_INFO_WITH_DESC (NM_SETTING_INFINIBAND_MAC_ADDRESS, .is_cli_option = TRUE, .property_alias = "mac", .prompt = N_("MAC [none]"), @@ -5823,9 +5746,8 @@ static const NMMetaPropertyInfo property_infos_INFINIBAND[] = { .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (mac, .mode = NM_META_PROPERTY_TYPE_MAC_MODE_INFINIBAND, ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_INFINIBAND_MTU), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_INFINIBAND_MTU, .is_cli_option = TRUE, .property_alias = "mtu", .prompt = N_("MTU [auto]"), @@ -5833,9 +5755,8 @@ static const NMMetaPropertyInfo property_infos_INFINIBAND[] = { .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (mtu, .get_fcn = MTU_GET_FCN (NMSettingInfiniband, nm_setting_infiniband_get_mtu), ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_INFINIBAND_TRANSPORT_MODE), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_INFINIBAND_TRANSPORT_MODE, .is_cli_option = TRUE, .property_alias = "transport-mode", .prompt = NM_META_TEXT_PROMPT_IB_MODE, @@ -5844,9 +5765,8 @@ static const NMMetaPropertyInfo property_infos_INFINIBAND[] = { .property_typ_data = DEFINE_PROPERTY_TYP_DATA ( .values_static = VALUES_STATIC ("datagram", "connected"), ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_INFINIBAND_P_KEY), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_INFINIBAND_P_KEY, .is_cli_option = TRUE, .property_alias = "p-key", .prompt = N_("P_KEY [none]"), @@ -5854,9 +5774,8 @@ static const NMMetaPropertyInfo property_infos_INFINIBAND[] = { .get_fcn = _get_fcn_infiniband_p_key, .set_fcn = _set_fcn_infiniband_p_key, ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_INFINIBAND_PARENT), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_INFINIBAND_PARENT, .is_cli_option = TRUE, .property_alias = "parent", .prompt = N_("Parent interface [none]"), @@ -5864,14 +5783,14 @@ static const NMMetaPropertyInfo property_infos_INFINIBAND[] = { .get_fcn = _get_fcn_gobject, .set_fcn = _set_fcn_gobject_ifname, ), - }, + ), + NULL }; #undef _CURRENT_NM_META_SETTING_TYPE #define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_IP4_CONFIG -static const NMMetaPropertyInfo property_infos_IP4_CONFIG[] = { - { - PROPERTY_INFO (NM_SETTING_IP_CONFIG_METHOD, DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_METHOD), +static const NMMetaPropertyInfo *const property_infos_IP4_CONFIG[] = { + PROPERTY_INFO (NM_SETTING_IP_CONFIG_METHOD, DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_METHOD, .property_type = DEFINE_PROPERTY_TYPE ( .get_fcn = _get_fcn_gobject, .set_fcn = _set_fcn_ip4_config_method, @@ -5879,9 +5798,8 @@ static const NMMetaPropertyInfo property_infos_IP4_CONFIG[] = { .property_typ_data = DEFINE_PROPERTY_TYP_DATA ( .values_static = ipv4_valid_methods, ), - }, - { - PROPERTY_INFO (NM_SETTING_IP_CONFIG_DNS, DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_DNS), + ), + PROPERTY_INFO (NM_SETTING_IP_CONFIG_DNS, DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_DNS, .describe_message = N_ ("Enter a list of IPv4 addresses of DNS servers.\n\n" "Example: 8.8.8.8, 8.8.4.4\n"), @@ -5890,17 +5808,15 @@ static const NMMetaPropertyInfo property_infos_IP4_CONFIG[] = { .set_fcn = _set_fcn_ip4_config_dns, .remove_fcn = _remove_fcn_ipv4_config_dns, ), - }, - { - PROPERTY_INFO (NM_SETTING_IP_CONFIG_DNS_SEARCH, DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_DNS_SEARCH), + ), + PROPERTY_INFO (NM_SETTING_IP_CONFIG_DNS_SEARCH, DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_DNS_SEARCH, .property_type = DEFINE_PROPERTY_TYPE ( .get_fcn = _get_fcn_gobject, .set_fcn = _set_fcn_ip4_config_dns_search, .remove_fcn = _remove_fcn_ipv4_config_dns_search, ), - }, - { - PROPERTY_INFO (NM_SETTING_IP_CONFIG_DNS_OPTIONS, DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_DNS_OPTIONS), + ), + PROPERTY_INFO (NM_SETTING_IP_CONFIG_DNS_OPTIONS, DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_DNS_OPTIONS, .property_type = DEFINE_PROPERTY_TYPE ( .get_fcn = _get_fcn_nmc_with_default, .set_fcn = _set_fcn_ip4_config_dns_options, @@ -5909,13 +5825,11 @@ static const NMMetaPropertyInfo property_infos_IP4_CONFIG[] = { .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (get_with_default, .fcn = GET_FCN_WITH_DEFAULT (NMSettingIPConfig, nm_setting_ip_config_has_dns_options), ), - }, - { - PROPERTY_INFO (NM_SETTING_IP_CONFIG_DNS_PRIORITY, DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_DNS_PRIORITY), + ), + PROPERTY_INFO (NM_SETTING_IP_CONFIG_DNS_PRIORITY, DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_DNS_PRIORITY, .property_type = &_pt_gobject_int, - }, - { - PROPERTY_INFO (NM_SETTING_IP_CONFIG_ADDRESSES, DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_ADDRESSES), + ), + PROPERTY_INFO (NM_SETTING_IP_CONFIG_ADDRESSES, DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_ADDRESSES, .is_cli_option = TRUE, .property_alias = "ip4", .inf_flags = NM_META_PROPERTY_INF_FLAG_MULTI, @@ -5930,9 +5844,8 @@ static const NMMetaPropertyInfo property_infos_IP4_CONFIG[] = { .set_fcn = _set_fcn_ip4_config_addresses, .remove_fcn = _remove_fcn_ipv4_config_addresses, ), - }, - { - PROPERTY_INFO (NM_SETTING_IP_CONFIG_GATEWAY, DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_GATEWAY), + ), + PROPERTY_INFO (NM_SETTING_IP_CONFIG_GATEWAY, DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_GATEWAY, .is_cli_option = TRUE, .property_alias = "gw4", .prompt = N_("IPv4 gateway [none]"), @@ -5940,9 +5853,8 @@ static const NMMetaPropertyInfo property_infos_IP4_CONFIG[] = { .get_fcn = _get_fcn_gobject, .set_fcn = _set_fcn_ip4_config_gateway, ), - }, - { - PROPERTY_INFO (NM_SETTING_IP_CONFIG_ROUTES, DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_ROUTES), + ), + PROPERTY_INFO (NM_SETTING_IP_CONFIG_ROUTES, DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_ROUTES, .describe_message = N_ ("Enter a list of IPv4 routes formatted as:\n" " ip[/prefix] [next-hop] [metric],...\n\n" @@ -5956,61 +5868,50 @@ static const NMMetaPropertyInfo property_infos_IP4_CONFIG[] = { .set_fcn = _set_fcn_ip4_config_routes, .remove_fcn = _remove_fcn_ipv4_config_routes, ), - }, - { - PROPERTY_INFO (NM_SETTING_IP_CONFIG_ROUTE_METRIC, DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_ROUTE_METRIC), + ), + PROPERTY_INFO (NM_SETTING_IP_CONFIG_ROUTE_METRIC, DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_ROUTE_METRIC, .property_type = &_pt_gobject_int64, - }, - { - PROPERTY_INFO (NM_SETTING_IP_CONFIG_IGNORE_AUTO_ROUTES, DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_IGNORE_AUTO_ROUTES), + ), + PROPERTY_INFO (NM_SETTING_IP_CONFIG_IGNORE_AUTO_ROUTES, DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_IGNORE_AUTO_ROUTES, .property_type = &_pt_gobject_bool, - }, - { - PROPERTY_INFO (NM_SETTING_IP_CONFIG_IGNORE_AUTO_DNS, DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_IGNORE_AUTO_DNS), + ), + PROPERTY_INFO (NM_SETTING_IP_CONFIG_IGNORE_AUTO_DNS, DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_IGNORE_AUTO_DNS, .property_type = &_pt_gobject_bool, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_IP4_CONFIG_DHCP_CLIENT_ID), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_IP4_CONFIG_DHCP_CLIENT_ID, .property_type = &_pt_gobject_string, - }, - { - PROPERTY_INFO (NM_SETTING_IP_CONFIG_DHCP_TIMEOUT, DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_DHCP_TIMEOUT), + ), + PROPERTY_INFO (NM_SETTING_IP_CONFIG_DHCP_TIMEOUT, DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_DHCP_TIMEOUT, .property_type = &_pt_gobject_int, - }, - { - PROPERTY_INFO (NM_SETTING_IP_CONFIG_DHCP_SEND_HOSTNAME, DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_DHCP_SEND_HOSTNAME), + ), + PROPERTY_INFO (NM_SETTING_IP_CONFIG_DHCP_SEND_HOSTNAME, DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_DHCP_SEND_HOSTNAME, .property_type = &_pt_gobject_bool, - }, - { - PROPERTY_INFO (NM_SETTING_IP_CONFIG_DHCP_HOSTNAME, DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_DHCP_HOSTNAME), + ), + PROPERTY_INFO (NM_SETTING_IP_CONFIG_DHCP_HOSTNAME, DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_DHCP_HOSTNAME, .property_type = &_pt_gobject_string, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_IP4_CONFIG_DHCP_FQDN), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_IP4_CONFIG_DHCP_FQDN, .property_type = &_pt_gobject_string, - }, - { - PROPERTY_INFO (NM_SETTING_IP_CONFIG_NEVER_DEFAULT, DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_NEVER_DEFAULT), + ), + PROPERTY_INFO (NM_SETTING_IP_CONFIG_NEVER_DEFAULT, DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_NEVER_DEFAULT, .property_type = &_pt_gobject_bool, - }, - { - PROPERTY_INFO (NM_SETTING_IP_CONFIG_MAY_FAIL, DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_MAY_FAIL), + ), + PROPERTY_INFO (NM_SETTING_IP_CONFIG_MAY_FAIL, DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_MAY_FAIL, .property_type = &_pt_gobject_bool, - }, - { - PROPERTY_INFO (NM_SETTING_IP_CONFIG_DAD_TIMEOUT, DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_DAD_TIMEOUT), + ), + PROPERTY_INFO (NM_SETTING_IP_CONFIG_DAD_TIMEOUT, DESCRIBE_DOC_NM_SETTING_IP4_CONFIG_DAD_TIMEOUT, .property_type = DEFINE_PROPERTY_TYPE ( .get_fcn = _get_fcn_ip4_config_dad_timeout, .set_fcn = _set_fcn_gobject_int, ), - }, + ), + NULL }; #undef _CURRENT_NM_META_SETTING_TYPE #define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_IP6_CONFIG -static const NMMetaPropertyInfo property_infos_IP6_CONFIG[] = { - { - PROPERTY_INFO (NM_SETTING_IP_CONFIG_METHOD, DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_METHOD), +static const NMMetaPropertyInfo *const property_infos_IP6_CONFIG[] = { + PROPERTY_INFO (NM_SETTING_IP_CONFIG_METHOD, DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_METHOD, .property_type = DEFINE_PROPERTY_TYPE ( .get_fcn = _get_fcn_gobject, .set_fcn = _set_fcn_ip6_config_method, @@ -6018,9 +5919,8 @@ static const NMMetaPropertyInfo property_infos_IP6_CONFIG[] = { .property_typ_data = DEFINE_PROPERTY_TYP_DATA ( .values_static = ipv6_valid_methods, ), - }, - { - PROPERTY_INFO (NM_SETTING_IP_CONFIG_DNS, DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_DNS), + ), + PROPERTY_INFO (NM_SETTING_IP_CONFIG_DNS, DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_DNS, .describe_message = N_ ("Enter a list of IPv6 addresses of DNS servers. If the IPv6 " "configuration method is 'auto' these DNS servers are appended " @@ -6035,17 +5935,15 @@ static const NMMetaPropertyInfo property_infos_IP6_CONFIG[] = { .set_fcn = _set_fcn_ip6_config_dns, .remove_fcn = _remove_fcn_ipv6_config_dns, ), - }, - { - PROPERTY_INFO (NM_SETTING_IP_CONFIG_DNS_SEARCH, DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_DNS_SEARCH), + ), + PROPERTY_INFO (NM_SETTING_IP_CONFIG_DNS_SEARCH, DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_DNS_SEARCH, .property_type = DEFINE_PROPERTY_TYPE ( .get_fcn = _get_fcn_gobject, .set_fcn = _set_fcn_ip6_config_dns_search, .remove_fcn = _remove_fcn_ipv6_config_dns_search, ), - }, - { - PROPERTY_INFO (NM_SETTING_IP_CONFIG_DNS_OPTIONS, DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_DNS_OPTIONS), + ), + PROPERTY_INFO (NM_SETTING_IP_CONFIG_DNS_OPTIONS, DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_DNS_OPTIONS, .property_type = DEFINE_PROPERTY_TYPE ( .get_fcn = _get_fcn_nmc_with_default, .set_fcn = _set_fcn_ip6_config_dns_options, @@ -6054,13 +5952,11 @@ static const NMMetaPropertyInfo property_infos_IP6_CONFIG[] = { .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (get_with_default, .fcn = GET_FCN_WITH_DEFAULT (NMSettingIPConfig, nm_setting_ip_config_has_dns_options), ), - }, - { - PROPERTY_INFO (NM_SETTING_IP_CONFIG_DNS_PRIORITY, DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_DNS_PRIORITY), + ), + PROPERTY_INFO (NM_SETTING_IP_CONFIG_DNS_PRIORITY, DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_DNS_PRIORITY, .property_type = &_pt_gobject_int, - }, - { - PROPERTY_INFO (NM_SETTING_IP_CONFIG_ADDRESSES, DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_ADDRESSES), + ), + PROPERTY_INFO (NM_SETTING_IP_CONFIG_ADDRESSES, DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_ADDRESSES, .is_cli_option = TRUE, .property_alias = "ip6", .inf_flags = NM_META_PROPERTY_INF_FLAG_MULTI, @@ -6075,9 +5971,8 @@ static const NMMetaPropertyInfo property_infos_IP6_CONFIG[] = { .set_fcn = _set_fcn_ip6_config_addresses, .remove_fcn = _remove_fcn_ipv6_config_addresses, ), - }, - { - PROPERTY_INFO (NM_SETTING_IP_CONFIG_GATEWAY, DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_GATEWAY), + ), + PROPERTY_INFO (NM_SETTING_IP_CONFIG_GATEWAY, DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_GATEWAY, .is_cli_option = TRUE, .property_alias = "gw6", .prompt = N_("IPv6 gateway [none]"), @@ -6085,9 +5980,8 @@ static const NMMetaPropertyInfo property_infos_IP6_CONFIG[] = { .get_fcn = _get_fcn_gobject, .set_fcn = _set_fcn_ip6_config_gateway, ), - }, - { - PROPERTY_INFO (NM_SETTING_IP_CONFIG_ROUTES, DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_ROUTES), + ), + PROPERTY_INFO (NM_SETTING_IP_CONFIG_ROUTES, DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_ROUTES, .describe_message = N_ ("Enter a list of IPv6 routes formatted as:\n" " ip[/prefix] [next-hop] [metric],...\n\n" @@ -6101,36 +5995,29 @@ static const NMMetaPropertyInfo property_infos_IP6_CONFIG[] = { .set_fcn = _set_fcn_ip6_config_routes, .remove_fcn = _remove_fcn_ipv6_config_routes, ), - }, - { - PROPERTY_INFO (NM_SETTING_IP_CONFIG_ROUTE_METRIC, DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_ROUTE_METRIC), + ), + PROPERTY_INFO (NM_SETTING_IP_CONFIG_ROUTE_METRIC, DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_ROUTE_METRIC, .property_type = &_pt_gobject_int64, - }, - { - PROPERTY_INFO (NM_SETTING_IP_CONFIG_IGNORE_AUTO_ROUTES, DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_IGNORE_AUTO_ROUTES), + ), + PROPERTY_INFO (NM_SETTING_IP_CONFIG_IGNORE_AUTO_ROUTES, DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_IGNORE_AUTO_ROUTES, .property_type = &_pt_gobject_bool, - }, - { - PROPERTY_INFO (NM_SETTING_IP_CONFIG_IGNORE_AUTO_DNS, DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_IGNORE_AUTO_DNS), + ), + PROPERTY_INFO (NM_SETTING_IP_CONFIG_IGNORE_AUTO_DNS, DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_IGNORE_AUTO_DNS, .property_type = &_pt_gobject_bool, - }, - { - PROPERTY_INFO (NM_SETTING_IP_CONFIG_NEVER_DEFAULT, DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_NEVER_DEFAULT), + ), + PROPERTY_INFO (NM_SETTING_IP_CONFIG_NEVER_DEFAULT, DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_NEVER_DEFAULT, .property_type = &_pt_gobject_bool, - }, - { - PROPERTY_INFO (NM_SETTING_IP_CONFIG_MAY_FAIL, DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_MAY_FAIL), + ), + PROPERTY_INFO (NM_SETTING_IP_CONFIG_MAY_FAIL, DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_MAY_FAIL, .property_type = &_pt_gobject_bool, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_IP6_CONFIG_IP6_PRIVACY), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_IP6_CONFIG_IP6_PRIVACY, .property_type = DEFINE_PROPERTY_TYPE ( .get_fcn = _get_fcn_ip6_config_ip6_privacy, .set_fcn = _set_fcn_ip6_config_ip6_privacy, ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_IP6_CONFIG_ADDR_GEN_MODE), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_IP6_CONFIG_ADDR_GEN_MODE, .property_type = &_pt_gobject_enum, .property_typ_data = DEFINE_PROPERTY_TYP_DATA ( PROPERTY_TYP_DATA_SUBTYPE (gobject_enum, @@ -6139,26 +6026,23 @@ static const NMMetaPropertyInfo property_infos_IP6_CONFIG[] = { .typ_flags = NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PARSABLE_TEXT | NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PRETTY_TEXT, ), - }, - { - PROPERTY_INFO (NM_SETTING_IP_CONFIG_DHCP_SEND_HOSTNAME, DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_DHCP_SEND_HOSTNAME), + ), + PROPERTY_INFO (NM_SETTING_IP_CONFIG_DHCP_SEND_HOSTNAME, DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_DHCP_SEND_HOSTNAME, .property_type = &_pt_gobject_bool, - }, - { - PROPERTY_INFO (NM_SETTING_IP_CONFIG_DHCP_HOSTNAME, DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_DHCP_HOSTNAME), + ), + PROPERTY_INFO (NM_SETTING_IP_CONFIG_DHCP_HOSTNAME, DESCRIBE_DOC_NM_SETTING_IP6_CONFIG_DHCP_HOSTNAME, .property_type = &_pt_gobject_string, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_IP6_CONFIG_TOKEN), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_IP6_CONFIG_TOKEN, .property_type = &_pt_gobject_string, - }, + ), + NULL }; #undef _CURRENT_NM_META_SETTING_TYPE #define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_IP_TUNNEL -static const NMMetaPropertyInfo property_infos_IP_TUNNEL[] = { - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_IP_TUNNEL_MODE), +static const NMMetaPropertyInfo *const property_infos_IP_TUNNEL[] = { + PROPERTY_INFO_WITH_DESC (NM_SETTING_IP_TUNNEL_MODE, .is_cli_option = TRUE, .property_alias = "mode", .inf_flags = NM_META_PROPERTY_INF_FLAG_REQD, @@ -6173,76 +6057,64 @@ static const NMMetaPropertyInfo property_infos_IP_TUNNEL[] = { .min = NM_IP_TUNNEL_MODE_UNKNOWN + 1, .max = G_MAXINT, ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_IP_TUNNEL_PARENT), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_IP_TUNNEL_PARENT, .is_cli_option = TRUE, .property_alias = "dev", .prompt = N_("Parent device [none]"), .property_type = &_pt_gobject_devices, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_IP_TUNNEL_LOCAL), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_IP_TUNNEL_LOCAL, .is_cli_option = TRUE, .property_alias = "local", .prompt = N_("Local endpoint [none]"), .property_type = &_pt_gobject_string, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_IP_TUNNEL_REMOTE), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_IP_TUNNEL_REMOTE, .is_cli_option = TRUE, .property_alias = "remote", .inf_flags = NM_META_PROPERTY_INF_FLAG_REQD, .prompt = N_("Remote"), .property_type = &_pt_gobject_string, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_IP_TUNNEL_TTL), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_IP_TUNNEL_TTL, .property_type = &_pt_gobject_uint, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_IP_TUNNEL_TOS), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_IP_TUNNEL_TOS, .property_type = &_pt_gobject_uint, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_IP_TUNNEL_PATH_MTU_DISCOVERY), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_IP_TUNNEL_PATH_MTU_DISCOVERY, .property_type = &_pt_gobject_bool, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_IP_TUNNEL_INPUT_KEY), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_IP_TUNNEL_INPUT_KEY, .property_type = &_pt_gobject_string, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_IP_TUNNEL_OUTPUT_KEY), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_IP_TUNNEL_OUTPUT_KEY, .property_type = &_pt_gobject_string, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_IP_TUNNEL_ENCAPSULATION_LIMIT), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_IP_TUNNEL_ENCAPSULATION_LIMIT, .property_type = &_pt_gobject_uint, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_IP_TUNNEL_FLOW_LABEL), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_IP_TUNNEL_FLOW_LABEL, .property_type = &_pt_gobject_uint, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_IP_TUNNEL_MTU), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_IP_TUNNEL_MTU, .property_type = &_pt_gobject_mtu, - }, + ), + NULL }; #undef _CURRENT_NM_META_SETTING_TYPE #define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_MACSEC -static const NMMetaPropertyInfo property_infos_MACSEC[] = { - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_MACSEC_PARENT), +static const NMMetaPropertyInfo *const property_infos_MACSEC[] = { + PROPERTY_INFO_WITH_DESC (NM_SETTING_MACSEC_PARENT, .is_cli_option = TRUE, .property_alias = "dev", .inf_flags = NM_META_PROPERTY_INF_FLAG_REQD, .prompt = N_("MACsec parent device or connection UUID"), .property_type = &_pt_gobject_string, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_MACSEC_MODE), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_MACSEC_MODE, .is_cli_option = TRUE, .property_alias = "mode", .inf_flags = NM_META_PROPERTY_INF_FLAG_REQD, @@ -6256,42 +6128,36 @@ static const NMMetaPropertyInfo property_infos_MACSEC[] = { .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (gobject_enum, .get_gtype = nm_setting_macsec_mode_get_type, ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_MACSEC_ENCRYPT), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_MACSEC_ENCRYPT, .is_cli_option = TRUE, .property_alias = "encrypt", .prompt = N_("Enable encryption [yes]"), .property_type = &_pt_gobject_bool, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_MACSEC_MKA_CAK), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_MACSEC_MKA_CAK, .is_cli_option = TRUE, .property_alias = "cak", .prompt = N_("MKA CAK"), .is_secret = TRUE, .property_type = &_pt_gobject_string, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_MACSEC_MKA_CAK_FLAGS), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_MACSEC_MKA_CAK_FLAGS, .property_type = &_pt_gobject_secret_flags, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_MACSEC_MKA_CKN), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_MACSEC_MKA_CKN, .is_cli_option = TRUE, .property_alias = "ckn", .prompt = N_("MKA_CKN"), .property_type = &_pt_gobject_string, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_MACSEC_PORT), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_MACSEC_PORT, .is_cli_option = TRUE, .property_alias = "port", .prompt = N_("SCI port [1]"), .property_type = &_pt_gobject_int, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_MACSEC_VALIDATION), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_MACSEC_VALIDATION, .property_type = DEFINE_PROPERTY_TYPE ( .get_fcn = _get_fcn_macsec_validation, .set_fcn = _set_fcn_macsec_validation, @@ -6300,22 +6166,21 @@ static const NMMetaPropertyInfo property_infos_MACSEC[] = { .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (gobject_enum, .get_gtype = nm_setting_macsec_validation_get_type, ), - }, + ), + NULL }; #undef _CURRENT_NM_META_SETTING_TYPE #define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_MACVLAN -static const NMMetaPropertyInfo property_infos_MACVLAN[] = { - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_MACVLAN_PARENT), +static const NMMetaPropertyInfo *const property_infos_MACVLAN[] = { + PROPERTY_INFO_WITH_DESC (NM_SETTING_MACVLAN_PARENT, .is_cli_option = TRUE, .property_alias = "dev", .inf_flags = NM_META_PROPERTY_INF_FLAG_REQD, .prompt = N_("MACVLAN parent device or connection UUID"), .property_type = &_pt_gobject_devices, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_MACVLAN_MODE), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_MACVLAN_MODE, .is_cli_option = TRUE, .property_alias = "mode", .inf_flags = NM_META_PROPERTY_INF_FLAG_REQD, @@ -6330,25 +6195,23 @@ static const NMMetaPropertyInfo property_infos_MACVLAN[] = { .min = NM_SETTING_MACVLAN_MODE_UNKNOWN + 1, .max = G_MAXINT, ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_MACVLAN_PROMISCUOUS), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_MACVLAN_PROMISCUOUS, .property_type = &_pt_gobject_bool, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_MACVLAN_TAP), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_MACVLAN_TAP, .is_cli_option = TRUE, .property_alias = "tap", .prompt = N_("Tap [no]"), .property_type = &_pt_gobject_bool, - }, + ), + NULL }; #undef _CURRENT_NM_META_SETTING_TYPE #define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_OLPC_MESH -static const NMMetaPropertyInfo property_infos_OLPC_MESH[] = { - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_OLPC_MESH_SSID), +static const NMMetaPropertyInfo *const property_infos_OLPC_MESH[] = { + PROPERTY_INFO_WITH_DESC (NM_SETTING_OLPC_MESH_SSID, .is_cli_option = TRUE, .property_alias = "ssid", .inf_flags = NM_META_PROPERTY_INF_FLAG_REQD, @@ -6357,9 +6220,8 @@ static const NMMetaPropertyInfo property_infos_OLPC_MESH[] = { .get_fcn = _get_fcn_olpc_mesh_ssid, .set_fcn = _set_fcn_gobject_ssid, ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_OLPC_MESH_CHANNEL), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_OLPC_MESH_CHANNEL, .is_cli_option = TRUE, .property_alias = "channel", .prompt = N_("OLPC Mesh channel [1]"), @@ -6367,133 +6229,112 @@ static const NMMetaPropertyInfo property_infos_OLPC_MESH[] = { .get_fcn = _get_fcn_gobject, .set_fcn = _set_fcn_olpc_mesh_channel, ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_OLPC_MESH_DHCP_ANYCAST_ADDRESS), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_OLPC_MESH_DHCP_ANYCAST_ADDRESS, .is_cli_option = TRUE, .property_alias = "dhcp-anycast", .prompt = N_("DHCP anycast MAC address [none]"), .property_type = &_pt_gobject_mac, - }, + ), + NULL }; #undef _CURRENT_NM_META_SETTING_TYPE #define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_PPPOE -static const NMMetaPropertyInfo property_infos_PPPOE[] = { - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_PPPOE_SERVICE), +static const NMMetaPropertyInfo *const property_infos_PPPOE[] = { + PROPERTY_INFO_WITH_DESC (NM_SETTING_PPPOE_SERVICE, .is_cli_option = TRUE, .property_alias = "service", .prompt = N_("Service [none]"), .property_type = &_pt_gobject_string, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_PPPOE_USERNAME), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_PPPOE_USERNAME, .is_cli_option = TRUE, .property_alias = "username", .inf_flags = NM_META_PROPERTY_INF_FLAG_REQD, .prompt = N_("PPPoE username"), .property_type = &_pt_gobject_string, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_PPPOE_PASSWORD), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_PPPOE_PASSWORD, .is_cli_option = TRUE, .property_alias = "password", .prompt = N_("Password [none]"), .is_secret = TRUE, .property_type = &_pt_gobject_string, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_PPPOE_PASSWORD_FLAGS), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_PPPOE_PASSWORD_FLAGS, .property_type = &_pt_gobject_secret_flags, - }, + ), + NULL }; #undef _CURRENT_NM_META_SETTING_TYPE #define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_PPP -static const NMMetaPropertyInfo property_infos_PPP[] = { - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_PPP_NOAUTH), +static const NMMetaPropertyInfo *const property_infos_PPP[] = { + PROPERTY_INFO_WITH_DESC (NM_SETTING_PPP_NOAUTH, .property_type = &_pt_gobject_bool, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_PPP_REFUSE_EAP), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_PPP_REFUSE_EAP, .property_type = &_pt_gobject_bool, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_PPP_REFUSE_PAP), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_PPP_REFUSE_PAP, .property_type = &_pt_gobject_bool, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_PPP_REFUSE_CHAP), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_PPP_REFUSE_CHAP, .property_type = &_pt_gobject_bool, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_PPP_REFUSE_MSCHAP), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_PPP_REFUSE_MSCHAP, .property_type = &_pt_gobject_bool, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_PPP_REFUSE_MSCHAPV2), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_PPP_REFUSE_MSCHAPV2, .property_type = &_pt_gobject_bool, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_PPP_NOBSDCOMP), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_PPP_NOBSDCOMP, .property_type = &_pt_gobject_bool, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_PPP_NODEFLATE), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_PPP_NODEFLATE, .property_type = &_pt_gobject_bool, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_PPP_NO_VJ_COMP), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_PPP_NO_VJ_COMP, .property_type = &_pt_gobject_bool, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_PPP_REQUIRE_MPPE), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_PPP_REQUIRE_MPPE, .property_type = &_pt_gobject_bool, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_PPP_REQUIRE_MPPE_128), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_PPP_REQUIRE_MPPE_128, .property_type = &_pt_gobject_bool, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_PPP_MPPE_STATEFUL), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_PPP_MPPE_STATEFUL, .property_type = &_pt_gobject_bool, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_PPP_CRTSCTS), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_PPP_CRTSCTS, .property_type = &_pt_gobject_bool, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_PPP_BAUD), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_PPP_BAUD, .property_type = &_pt_gobject_uint, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_PPP_MRU), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_PPP_MRU, .property_type = &_pt_gobject_uint, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_PPP_MTU), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_PPP_MTU, .property_type = &_pt_gobject_mtu, .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (mtu, .get_fcn = MTU_GET_FCN (NMSettingPpp, nm_setting_ppp_get_mtu), ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_PPP_LCP_ECHO_FAILURE), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_PPP_LCP_ECHO_FAILURE, .property_type = &_pt_gobject_uint, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_PPP_LCP_ECHO_INTERVAL), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_PPP_LCP_ECHO_INTERVAL, .property_type = &_pt_gobject_uint, - }, + ), + NULL }; #undef _CURRENT_NM_META_SETTING_TYPE #define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_PROXY -static const NMMetaPropertyInfo property_infos_PROXY[] = { - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_PROXY_METHOD), +static const NMMetaPropertyInfo *const property_infos_PROXY[] = { + PROPERTY_INFO_WITH_DESC (NM_SETTING_PROXY_METHOD, .is_cli_option = TRUE, .property_alias = "method", .prompt = NM_META_TEXT_PROMPT_PROXY_METHOD, @@ -6508,23 +6349,20 @@ static const NMMetaPropertyInfo property_infos_PROXY[] = { .min = NM_SETTING_PROXY_METHOD_NONE, .max = G_MAXINT, ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_PROXY_BROWSER_ONLY), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_PROXY_BROWSER_ONLY, .is_cli_option = TRUE, .property_alias = "browser-only", .prompt = N_("Browser only [no]"), .property_type = &_pt_gobject_bool - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_PROXY_PAC_URL), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_PROXY_PAC_URL, .is_cli_option = TRUE, .property_alias = "pac-url", .prompt = N_("PAC URL"), .property_type = &_pt_gobject_string, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_PROXY_PAC_SCRIPT), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_PROXY_PAC_SCRIPT, .is_cli_option = TRUE, .property_alias = "pac-script", .prompt = N_("PAC script"), @@ -6532,14 +6370,14 @@ static const NMMetaPropertyInfo property_infos_PROXY[] = { .get_fcn = _get_fcn_gobject, .set_fcn = _set_fcn_proxy_pac_script, ), - }, + ), + NULL }; #undef _CURRENT_NM_META_SETTING_TYPE #define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_TEAM -static const NMMetaPropertyInfo property_infos_TEAM[] = { - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_TEAM_CONFIG), +static const NMMetaPropertyInfo *const property_infos_TEAM[] = { + PROPERTY_INFO_WITH_DESC (NM_SETTING_TEAM_CONFIG, .is_cli_option = TRUE, .property_alias = "config", .prompt = N_("Team JSON configuration [none]"), @@ -6548,14 +6386,14 @@ static const NMMetaPropertyInfo property_infos_TEAM[] = { .get_fcn = _get_fcn_gobject, .set_fcn = _set_fcn_team_config, ), - }, + ), + NULL }; #undef _CURRENT_NM_META_SETTING_TYPE #define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_TEAM_PORT -static const NMMetaPropertyInfo property_infos_TEAM_PORT[] = { - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_TEAM_PORT_CONFIG), +static const NMMetaPropertyInfo *const property_infos_TEAM_PORT[] = { + PROPERTY_INFO_WITH_DESC (NM_SETTING_TEAM_PORT_CONFIG, .is_cli_option = TRUE, .property_alias = "config", .prompt = N_("Team JSON configuration [none]"), @@ -6564,42 +6402,38 @@ static const NMMetaPropertyInfo property_infos_TEAM_PORT[] = { .get_fcn = _get_fcn_gobject, .set_fcn = _set_fcn_team_config, ), - }, + ), + NULL }; #undef _CURRENT_NM_META_SETTING_TYPE #define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_SERIAL -static const NMMetaPropertyInfo property_infos_SERIAL[] = { - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_SERIAL_BAUD), +static const NMMetaPropertyInfo *const property_infos_SERIAL[] = { + PROPERTY_INFO_WITH_DESC (NM_SETTING_SERIAL_BAUD, .property_type = &_pt_gobject_uint, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_SERIAL_BITS), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_SERIAL_BITS, .property_type = &_pt_gobject_uint, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_SERIAL_PARITY), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_SERIAL_PARITY, .property_type = DEFINE_PROPERTY_TYPE ( .get_fcn = _get_fcn_serial_parity, .set_fcn = _set_fcn_serial_parity, ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_SERIAL_STOPBITS), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_SERIAL_STOPBITS, .property_type = &_pt_gobject_uint, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_SERIAL_SEND_DELAY), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_SERIAL_SEND_DELAY, .property_type = &_pt_gobject_uint, - }, + ), + NULL }; #undef _CURRENT_NM_META_SETTING_TYPE #define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_TUN -static const NMMetaPropertyInfo property_infos_TUN[] = { - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_TUN_MODE), +static const NMMetaPropertyInfo *const property_infos_TUN[] = { + PROPERTY_INFO_WITH_DESC (NM_SETTING_TUN_MODE, .is_cli_option = TRUE, .property_alias = "mode", .prompt = NM_META_TEXT_PROMPT_TUN_MODE, @@ -6611,65 +6445,58 @@ static const NMMetaPropertyInfo property_infos_TUN[] = { .property_typ_data = DEFINE_PROPERTY_TYP_DATA ( .values_static = VALUES_STATIC ("tun", "tap", "unknown"), ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_TUN_OWNER), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_TUN_OWNER, .is_cli_option = TRUE, .property_alias = "owner", .prompt = N_("User ID [none]"), .property_type = &_pt_gobject_string, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_TUN_GROUP), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_TUN_GROUP, .is_cli_option = TRUE, .property_alias = "group", .prompt = N_("Group ID [none]"), .property_type = &_pt_gobject_string, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_TUN_PI), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_TUN_PI, .is_cli_option = TRUE, .property_alias = "pi", .prompt = N_("Enable PI [no]"), .property_type = &_pt_gobject_bool, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_TUN_VNET_HDR), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_TUN_VNET_HDR, .is_cli_option = TRUE, .property_alias = "vnet-hdr", .prompt = N_("Enable VNET header [no]"), .property_type = &_pt_gobject_bool, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_TUN_MULTI_QUEUE), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_TUN_MULTI_QUEUE, .is_cli_option = TRUE, .property_alias = "multi-queue", .prompt = N_("Enable multi queue [no]"), .property_type = &_pt_gobject_bool, - }, + ), + NULL }; #undef _CURRENT_NM_META_SETTING_TYPE #define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_VLAN -static const NMMetaPropertyInfo property_infos_VLAN[] = { - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_VLAN_PARENT), +static const NMMetaPropertyInfo *const property_infos_VLAN[] = { + PROPERTY_INFO_WITH_DESC (NM_SETTING_VLAN_PARENT, .is_cli_option = TRUE, .property_alias = "dev", .inf_flags = NM_META_PROPERTY_INF_FLAG_REQD, .prompt = N_("VLAN parent device or connection UUID"), .property_type = &_pt_gobject_devices, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_VLAN_ID), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_VLAN_ID, .is_cli_option = TRUE, .property_alias = "id", .inf_flags = NM_META_PROPERTY_INF_FLAG_REQD, .prompt = N_("VLAN ID (<0-4094>)"), .property_type = &_pt_gobject_uint, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_VLAN_FLAGS), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_VLAN_FLAGS, .is_cli_option = TRUE, .property_alias = "flags", .prompt = N_("VLAN flags (<0-7>) [none]"), @@ -6677,9 +6504,8 @@ static const NMMetaPropertyInfo property_infos_VLAN[] = { .get_fcn = _get_fcn_vlan_flags, .set_fcn = _set_fcn_gobject_flags, ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_VLAN_INGRESS_PRIORITY_MAP), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_VLAN_INGRESS_PRIORITY_MAP, .is_cli_option = TRUE, .property_alias = "ingress", .prompt = N_("Ingress priority maps [none]"), @@ -6688,9 +6514,8 @@ static const NMMetaPropertyInfo property_infos_VLAN[] = { .set_fcn = _set_fcn_vlan_ingress_priority_map, .remove_fcn = _remove_fcn_vlan_ingress_priority_map, ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_VLAN_EGRESS_PRIORITY_MAP), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_VLAN_EGRESS_PRIORITY_MAP, .is_cli_option = TRUE, .property_alias = "egress", .prompt = N_("Egress priority maps [none]"), @@ -6699,14 +6524,15 @@ static const NMMetaPropertyInfo property_infos_VLAN[] = { .set_fcn = _set_fcn_vlan_egress_priority_map, .remove_fcn = _remove_fcn_vlan_egress_priority_map, ), - }, + ), + NULL }; #undef _CURRENT_NM_META_SETTING_TYPE #define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_VPN -static const NMMetaPropertyInfo property_infos_VPN[] = { - [_NM_META_PROPERTY_TYPE_VPN_SERVICE_TYPE] = { - PROPERTY_INFO_WITH_DESC (NM_SETTING_VPN_SERVICE_TYPE), +static const NMMetaPropertyInfo *const property_infos_VPN[] = { +[_NM_META_PROPERTY_TYPE_VPN_SERVICE_TYPE] = + PROPERTY_INFO_WITH_DESC (NM_SETTING_VPN_SERVICE_TYPE, .is_cli_option = TRUE, .property_alias = "vpn-type", .inf_flags = NM_META_PROPERTY_INF_FLAG_REQD, @@ -6716,188 +6542,162 @@ static const NMMetaPropertyInfo property_infos_VPN[] = { .set_fcn = _set_fcn_vpn_service_type, .complete_fcn = _complete_fcn_vpn_service_type, ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_VPN_USER_NAME), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_VPN_USER_NAME, .is_cli_option = TRUE, .property_alias = "user", .prompt = N_("Username [none]"), .property_type = &_pt_gobject_string, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_VPN_DATA), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_VPN_DATA, .property_type = DEFINE_PROPERTY_TYPE ( .get_fcn = _get_fcn_vpn_data, .set_fcn = _set_fcn_vpn_data, .remove_fcn = _remove_fcn_vpn_data, ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_VPN_SECRETS), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_VPN_SECRETS, .is_secret = TRUE, .property_type = DEFINE_PROPERTY_TYPE ( .get_fcn = _get_fcn_vpn_secrets, .set_fcn = _set_fcn_vpn_secrets, .remove_fcn = _remove_fcn_vpn_secrets, ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_VPN_PERSISTENT), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_VPN_PERSISTENT, .property_type = &_pt_gobject_bool, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_VPN_TIMEOUT), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_VPN_TIMEOUT, .property_type = &_pt_gobject_uint, - }, + ), + NULL }; #undef _CURRENT_NM_META_SETTING_TYPE #define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_VXLAN -static const NMMetaPropertyInfo property_infos_VXLAN[] = { - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_VXLAN_PARENT), +static const NMMetaPropertyInfo *const property_infos_VXLAN[] = { + PROPERTY_INFO_WITH_DESC (NM_SETTING_VXLAN_PARENT, .is_cli_option = TRUE, .property_alias = "dev", .prompt = N_("Parent device [none]"), .property_type = &_pt_gobject_devices, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_VXLAN_ID), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_VXLAN_ID, .is_cli_option = TRUE, .property_alias = "id", .inf_flags = NM_META_PROPERTY_INF_FLAG_REQD, .prompt = N_("VXLAN ID"), .property_type = &_pt_gobject_uint, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_VXLAN_LOCAL), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_VXLAN_LOCAL, .is_cli_option = TRUE, .property_alias = "local", .prompt = N_("Local address [none]"), .property_type = &_pt_gobject_string, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_VXLAN_REMOTE), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_VXLAN_REMOTE, .is_cli_option = TRUE, .property_alias = "remote", .inf_flags = NM_META_PROPERTY_INF_FLAG_REQD, .prompt = N_("Remote"), .property_type = &_pt_gobject_string, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_VXLAN_SOURCE_PORT_MIN), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_VXLAN_SOURCE_PORT_MIN, .is_cli_option = TRUE, .property_alias = "source-port-min", .prompt = N_("Minimum source port [0]"), .property_type = &_pt_gobject_uint, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_VXLAN_SOURCE_PORT_MAX), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_VXLAN_SOURCE_PORT_MAX, .is_cli_option = TRUE, .property_alias = "source-port-max", .prompt = N_("Maximum source port [0]"), .property_type = &_pt_gobject_uint, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_VXLAN_DESTINATION_PORT), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_VXLAN_DESTINATION_PORT, .is_cli_option = TRUE, .property_alias = "destination-port", .prompt = N_("Destination port [8472]"), .property_type = &_pt_gobject_uint, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_VXLAN_TOS), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_VXLAN_TOS, .property_type = &_pt_gobject_uint, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_VXLAN_TTL), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_VXLAN_TTL, .property_type = &_pt_gobject_uint, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_VXLAN_AGEING), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_VXLAN_AGEING, .property_type = &_pt_gobject_uint, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_VXLAN_LIMIT), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_VXLAN_LIMIT, .property_type = &_pt_gobject_uint, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_VXLAN_LEARNING), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_VXLAN_LEARNING, .property_type = &_pt_gobject_bool, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_VXLAN_PROXY), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_VXLAN_PROXY, .property_type = &_pt_gobject_bool, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_VXLAN_RSC), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_VXLAN_RSC, .property_type = &_pt_gobject_bool, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_VXLAN_L2_MISS), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_VXLAN_L2_MISS, .property_type = &_pt_gobject_bool, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_VXLAN_L3_MISS), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_VXLAN_L3_MISS, .property_type = &_pt_gobject_bool, - }, + ), + NULL }; #undef _CURRENT_NM_META_SETTING_TYPE #define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_WIMAX -static const NMMetaPropertyInfo property_infos_WIMAX[] = { - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_WIMAX_MAC_ADDRESS), +static const NMMetaPropertyInfo *const property_infos_WIMAX[] = { + PROPERTY_INFO_WITH_DESC (NM_SETTING_WIMAX_MAC_ADDRESS, .is_cli_option = TRUE, .property_alias = "mac", .prompt = N_("MAC [none]"), .property_type = &_pt_gobject_string, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_WIMAX_NETWORK_NAME), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_WIMAX_NETWORK_NAME, .is_cli_option = TRUE, .property_alias = "nsp", .inf_flags = NM_META_PROPERTY_INF_FLAG_REQD, .prompt = N_("WiMAX NSP name"), .property_type = &_pt_gobject_mac, - }, + ), + NULL }; #undef _CURRENT_NM_META_SETTING_TYPE #define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_WIRED -static const NMMetaPropertyInfo property_infos_WIRED[] = { - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRED_PORT), +static const NMMetaPropertyInfo *const property_infos_WIRED[] = { + PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRED_PORT, /* Do not allow setting 'port' for now. It is not implemented in * NM core, nor in ifcfg-rh plugin. Enable this when it gets done. * wired_valid_ports[] = { "tp", "aui", "bnc", "mii", NULL }; */ .property_type = &_pt_gobject_readonly, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRED_SPEED), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRED_SPEED, .property_type = &_pt_gobject_uint, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRED_DUPLEX), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRED_DUPLEX, .property_type = &_pt_gobject_string, .property_typ_data = DEFINE_PROPERTY_TYP_DATA ( .values_static = VALUES_STATIC ("half", "full"), ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRED_AUTO_NEGOTIATE), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRED_AUTO_NEGOTIATE, .property_type = &_pt_gobject_bool, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRED_MAC_ADDRESS), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRED_MAC_ADDRESS, .is_cli_option = TRUE, .property_alias = "mac", .prompt = N_("MAC [none]"), .property_type = &_pt_gobject_mac, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRED_CLONED_MAC_ADDRESS), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRED_CLONED_MAC_ADDRESS, .is_cli_option = TRUE, .property_alias = "cloned-mac", .prompt = N_("Cloned MAC [none]"), @@ -6905,21 +6705,18 @@ static const NMMetaPropertyInfo property_infos_WIRED[] = { .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (mac, .mode = NM_META_PROPERTY_TYPE_MAC_MODE_CLONED, ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRED_GENERATE_MAC_ADDRESS_MASK), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRED_GENERATE_MAC_ADDRESS_MASK, .property_type = &_pt_gobject_string, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRED_MAC_ADDRESS_BLACKLIST), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRED_MAC_ADDRESS_BLACKLIST, .property_type = DEFINE_PROPERTY_TYPE ( .get_fcn = _get_fcn_gobject, .set_fcn = _set_fcn_wired_mac_address_blacklist, .remove_fcn = _remove_fcn_wired_mac_address_blacklist, ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRED_MTU), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRED_MTU, .is_cli_option = TRUE, .property_alias = "mtu", .prompt = N_("MTU [auto]"), @@ -6927,9 +6724,8 @@ static const NMMetaPropertyInfo property_infos_WIRED[] = { .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (mtu, .get_fcn = MTU_GET_FCN (NMSettingWired, nm_setting_wired_get_mtu), ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRED_S390_SUBCHANNELS), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRED_S390_SUBCHANNELS, .describe_message = N_ ("Enter a list of subchannels (comma or space separated).\n\n" "Example: 0.0.0e20 0.0.0e21 0.0.0e22\n"), @@ -6937,16 +6733,14 @@ static const NMMetaPropertyInfo property_infos_WIRED[] = { .get_fcn = _get_fcn_gobject, .set_fcn = _set_fcn_wired_s390_subchannels, ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRED_S390_NETTYPE), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRED_S390_NETTYPE, .property_type = &_pt_gobject_string, .property_typ_data = DEFINE_PROPERTY_TYP_DATA ( .values_static = VALUES_STATIC ("qeth", "lcs", "ctc"), ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRED_S390_OPTIONS), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRED_S390_OPTIONS, .property_type = DEFINE_PROPERTY_TYPE ( .describe_fcn = _describe_fcn_wired_s390_options, .get_fcn = _get_fcn_gobject, @@ -6954,25 +6748,23 @@ static const NMMetaPropertyInfo property_infos_WIRED[] = { .remove_fcn = _remove_fcn_wired_s390_options, .values_fcn = _values_fcn__wired_s390_options, ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRED_WAKE_ON_LAN), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRED_WAKE_ON_LAN, .property_type = DEFINE_PROPERTY_TYPE ( .get_fcn = _get_fcn_wired_wake_on_lan, .set_fcn = _set_fcn_wired_wake_on_lan, ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRED_WAKE_ON_LAN_PASSWORD), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRED_WAKE_ON_LAN_PASSWORD, .property_type = &_pt_gobject_mac, - }, + ), + NULL }; #undef _CURRENT_NM_META_SETTING_TYPE #define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_WIRELESS -static const NMMetaPropertyInfo property_infos_WIRELESS[] = { - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SSID), +static const NMMetaPropertyInfo *const property_infos_WIRELESS[] = { + PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SSID, .is_cli_option = TRUE, .property_alias = "ssid", .inf_flags = NM_META_PROPERTY_INF_FLAG_REQD, @@ -6981,9 +6773,8 @@ static const NMMetaPropertyInfo property_infos_WIRELESS[] = { .get_fcn = _get_fcn_wireless_ssid, .set_fcn = _set_fcn_gobject_ssid, ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_MODE), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_MODE, .is_cli_option = TRUE, .property_alias = "mode", .prompt = NM_META_TEXT_PROMPT_WIFI_MODE, @@ -6994,44 +6785,37 @@ static const NMMetaPropertyInfo property_infos_WIRELESS[] = { NM_SETTING_WIRELESS_MODE_ADHOC, NM_SETTING_WIRELESS_MODE_AP), ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_BAND), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_BAND, .property_type = &_pt_gobject_string, .property_typ_data = DEFINE_PROPERTY_TYP_DATA ( .values_static = VALUES_STATIC ("a", "bg"), ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_CHANNEL), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_CHANNEL, .property_type = DEFINE_PROPERTY_TYPE ( .get_fcn = _get_fcn_gobject, .set_fcn = _set_fcn_wireless_channel, ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_BSSID), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_BSSID, .property_type = &_pt_gobject_mac, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_RATE), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_RATE, /* Do not allow setting 'rate'. It is not implemented in NM core. */ .property_type = &_pt_gobject_readonly, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_TX_POWER), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_TX_POWER, /* Do not allow setting 'tx-power'. It is not implemented in NM core. */ .property_type = &_pt_gobject_readonly, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_MAC_ADDRESS), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_MAC_ADDRESS, .property_type = &_pt_gobject_mac, .is_cli_option = TRUE, .property_alias = "mac", .prompt = N_("MAC [none]"), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_CLONED_MAC_ADDRESS), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_CLONED_MAC_ADDRESS, .is_cli_option = TRUE, .property_alias = "cloned-mac", .prompt = N_("Cloned MAC [none]"), @@ -7039,28 +6823,24 @@ static const NMMetaPropertyInfo property_infos_WIRELESS[] = { .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (mac, .mode = NM_META_PROPERTY_TYPE_MAC_MODE_CLONED, ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_GENERATE_MAC_ADDRESS_MASK), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_GENERATE_MAC_ADDRESS_MASK, .property_type = &_pt_gobject_string, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_MAC_ADDRESS_BLACKLIST), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_MAC_ADDRESS_BLACKLIST, .property_type = DEFINE_PROPERTY_TYPE ( .get_fcn = _get_fcn_gobject, .set_fcn = _set_fcn_wireless_mac_address_blacklist, .remove_fcn = _remove_fcn_wireless_mac_address_blacklist, ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_MAC_ADDRESS_RANDOMIZATION), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_MAC_ADDRESS_RANDOMIZATION, .property_type = DEFINE_PROPERTY_TYPE ( .get_fcn = _get_fcn_wireless_mac_address_randomization, .set_fcn = _set_fcn_wireless_mac_address_randomization, ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_MTU), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_MTU, .is_cli_option = TRUE, .property_alias = "mtu", .prompt = N_("MTU [auto]"), @@ -7068,17 +6848,14 @@ static const NMMetaPropertyInfo property_infos_WIRELESS[] = { .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (mtu, .get_fcn = MTU_GET_FCN (NMSettingWireless, nm_setting_wireless_get_mtu), ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SEEN_BSSIDS), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SEEN_BSSIDS, .property_type = &_pt_gobject_readonly, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_HIDDEN), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_HIDDEN, .property_type = &_pt_gobject_bool, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_POWERSAVE), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_POWERSAVE, .property_type = &_pt_gobject_enum, .property_typ_data = DEFINE_PROPERTY_TYP_DATA ( PROPERTY_TYP_DATA_SUBTYPE (gobject_enum, @@ -7086,32 +6863,29 @@ static const NMMetaPropertyInfo property_infos_WIRELESS[] = { ), .typ_flags = NM_META_PROPERTY_TYP_FLAG_ENUM_GET_PARSABLE_TEXT, ), - }, + ), + NULL }; #undef _CURRENT_NM_META_SETTING_TYPE #define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_WIRELESS_SECURITY -static const NMMetaPropertyInfo property_infos_WIRELESS_SECURITY[] = { - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_KEY_MGMT), +static const NMMetaPropertyInfo *const property_infos_WIRELESS_SECURITY[] = { + PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_KEY_MGMT, .property_type = &_pt_gobject_string, .property_typ_data = DEFINE_PROPERTY_TYP_DATA ( .values_static = VALUES_STATIC ("none", "ieee8021x", "wpa-none", "wpa-psk", "wpa-eap"), ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_WEP_TX_KEYIDX), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_WEP_TX_KEYIDX, .property_type = &_pt_gobject_uint, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_AUTH_ALG), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_AUTH_ALG, .property_type = &_pt_gobject_string, .property_typ_data = DEFINE_PROPERTY_TYP_DATA ( .values_static = VALUES_STATIC ("open", "shared", "leap"), ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_PROTO), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_PROTO, .property_type = DEFINE_PROPERTY_TYPE ( .get_fcn = _get_fcn_gobject, .set_fcn = _set_fcn_wireless_security_proto, @@ -7120,9 +6894,8 @@ static const NMMetaPropertyInfo property_infos_WIRELESS_SECURITY[] = { .property_typ_data = DEFINE_PROPERTY_TYP_DATA ( .values_static = wifi_sec_valid_protos, ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_PAIRWISE), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_PAIRWISE, .property_type = DEFINE_PROPERTY_TYPE ( .get_fcn = _get_fcn_gobject, .set_fcn = _set_fcn_wireless_security_pairwise, @@ -7131,9 +6904,8 @@ static const NMMetaPropertyInfo property_infos_WIRELESS_SECURITY[] = { .property_typ_data = DEFINE_PROPERTY_TYP_DATA ( .values_static = wifi_sec_valid_pairwises, ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_GROUP), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_GROUP, .property_type = DEFINE_PROPERTY_TYPE ( .get_fcn = _get_fcn_gobject, .set_fcn = _set_fcn_wireless_security_group, @@ -7142,49 +6914,42 @@ static const NMMetaPropertyInfo property_infos_WIRELESS_SECURITY[] = { .property_typ_data = DEFINE_PROPERTY_TYP_DATA ( .values_static = wifi_sec_valid_groups, ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_LEAP_USERNAME), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_LEAP_USERNAME, .property_type = &_pt_gobject_string, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_WEP_KEY0), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_WEP_KEY0, .is_secret = TRUE, .property_type = DEFINE_PROPERTY_TYPE ( .get_fcn = _get_fcn_wireless_security_wep_key0, .set_fcn = _set_fcn_wireless_wep_key, ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_WEP_KEY1), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_WEP_KEY1, .is_secret = TRUE, .property_type = DEFINE_PROPERTY_TYPE ( .get_fcn = _get_fcn_wireless_security_wep_key1, .set_fcn = _set_fcn_wireless_wep_key, ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_WEP_KEY2), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_WEP_KEY2, .is_secret = TRUE, .property_type = DEFINE_PROPERTY_TYPE ( .get_fcn = _get_fcn_wireless_security_wep_key2, .set_fcn = _set_fcn_wireless_wep_key, ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_WEP_KEY3), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_WEP_KEY3, .is_secret = TRUE, .property_type = DEFINE_PROPERTY_TYPE ( .get_fcn = _get_fcn_wireless_security_wep_key3, .set_fcn = _set_fcn_wireless_wep_key, ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_WEP_KEY_FLAGS), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_WEP_KEY_FLAGS, .property_type = &_pt_gobject_secret_flags, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_WEP_KEY_TYPE), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_WEP_KEY_TYPE, .describe_message = N_ ("Enter the type of WEP keys. The accepted values are: " "0 or unknown, 1 or key, and 2 or passphrase.\n"), @@ -7192,28 +6957,25 @@ static const NMMetaPropertyInfo property_infos_WIRELESS_SECURITY[] = { .get_fcn = _get_fcn_wireless_security_wep_key_type, .set_fcn = _set_fcn_wireless_security_wep_key_type, ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_PSK), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_PSK, .is_secret = TRUE, .property_type = DEFINE_PROPERTY_TYPE ( .get_fcn = _get_fcn_gobject, .set_fcn = _set_fcn_wireless_security_psk, ), - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_PSK_FLAGS), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_PSK_FLAGS, .property_type = &_pt_gobject_secret_flags, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_LEAP_PASSWORD), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_LEAP_PASSWORD, .is_secret = TRUE, .property_type = &_pt_gobject_string, - }, - { - PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_LEAP_PASSWORD_FLAGS), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_WIRELESS_SECURITY_LEAP_PASSWORD_FLAGS, .property_type = &_pt_gobject_secret_flags, - }, + ), + NULL }; /*****************************************************************************/ @@ -7404,7 +7166,7 @@ const NMMetaSettingInfoEditor nm_meta_setting_infos_editor[] = { .meta_type = &nm_meta_type_setting_info_editor, \ .general = &nm_meta_setting_infos[NM_META_SETTING_TYPE_##type], \ .properties = property_infos_##type, \ - .properties_num = G_N_ELEMENTS (property_infos_##type), \ + .properties_num = G_N_ELEMENTS (property_infos_##type) - 1, \ .pretty_name = N_(SETTING_PRETTY_NAME_##type), \ __VA_ARGS__ \ } @@ -7737,7 +7499,7 @@ _meta_type_setting_info_editor_get_nested (const NMMetaAbstractInfo *abstract_in NM_SET_OUT (out_len, info->properties_num); *out_to_free = NULL; - return (const NMMetaAbstractInfo *const*) nm_property_infos_for_setting_type (info->general->meta_type); + return (const NMMetaAbstractInfo *const*) info->properties; } static const NMMetaAbstractInfo *const* diff --git a/clients/common/nm-meta-setting-desc.h b/clients/common/nm-meta-setting-desc.h index cfacd347bf..38aa50f95f 100644 --- a/clients/common/nm-meta-setting-desc.h +++ b/clients/common/nm-meta-setting-desc.h @@ -174,6 +174,8 @@ typedef struct _NMMetaPropertyInfo NMMetaPropertyInfo; typedef struct _NMMetaPropertyType NMMetaPropertyType; typedef struct _NMMetaPropertyTypData NMMetaPropertyTypData; typedef struct _NMMetaOperationContext NMMetaOperationContext; +typedef struct _NMMetaNestedPropertyInfo NMMetaNestedPropertyInfo; +typedef struct _NMMetaPropertyTypDataNested NMMetaPropertyTypDataNested; /* this gives some context information for virtual functions. * This command actually violates layering, and should be considered @@ -221,8 +223,6 @@ struct _NMMetaPropertyType { struct _NMUtilsEnumValueInfo; -struct _NMMetaPropertyTypDataNested; - struct _NMMetaPropertyTypData { union { struct { @@ -240,11 +240,9 @@ struct _NMMetaPropertyTypData { struct { NMMetaPropertyTypeMacMode mode; } mac; - struct { - const struct _NMMetaPropertyTypDataNested *data; - } nested; } subtype; const char *const*values_static; + const NMMetaPropertyTypDataNested *nested; NMMetaPropertyTypFlags typ_flags; }; @@ -260,8 +258,8 @@ enum { _NM_META_PROPERTY_TYPE_CONNECTION_TYPE = 4, }; -#define nm_meta_property_info_connection_type (&nm_meta_setting_infos_editor[NM_META_SETTING_TYPE_CONNECTION].properties[_NM_META_PROPERTY_TYPE_CONNECTION_TYPE]) -#define nm_meta_property_info_vpn_service_type (&nm_meta_setting_infos_editor[NM_META_SETTING_TYPE_VPN].properties[_NM_META_PROPERTY_TYPE_VPN_SERVICE_TYPE]) +#define nm_meta_property_info_connection_type (nm_meta_setting_infos_editor[NM_META_SETTING_TYPE_CONNECTION].properties[_NM_META_PROPERTY_TYPE_CONNECTION_TYPE]) +#define nm_meta_property_info_vpn_service_type (nm_meta_setting_infos_editor[NM_META_SETTING_TYPE_VPN].properties[_NM_META_PROPERTY_TYPE_VPN_SERVICE_TYPE]) struct _NMMetaPropertyInfo { const NMMetaType *meta_type; @@ -299,9 +297,7 @@ struct _NMMetaSettingInfoEditor { const NMMetaSettingInfo *general; const char *alias; const char *pretty_name; - /* the order of the properties matter. The first *must* be the - * "name", and then the order is as they are listed by default. */ - const NMMetaPropertyInfo *properties; + const NMMetaPropertyInfo *const*properties; guint properties_num; /* a NMConnection has a main type (connection.type), which is a @@ -394,19 +390,18 @@ struct _NMMetaEnvironment { extern const NMMetaType nm_meta_type_nested_property_info; -typedef struct _NMMetaNestedPropertyTypeInfo { - const NMMetaType *meta_type; +struct _NMMetaNestedPropertyInfo { + union { + const NMMetaType *meta_type; + NMMetaPropertyInfo base; + }; const NMMetaPropertyInfo *parent_info; - const char *field_name; - NMMetaPropertyInfFlags inf_flags; - const char *prompt; - const char *def_hint; -} NMMetaNestedPropertyTypeInfo; +}; -typedef struct _NMMetaPropertyTypDataNested { - const NMMetaNestedPropertyTypeInfo *nested; +struct _NMMetaPropertyTypDataNested { + const NMMetaNestedPropertyInfo *nested; guint nested_len; -} NMMetaPropertyTypDataNested; +}; const NMMetaPropertyTypDataNested nm_meta_property_typ_data_bond; diff --git a/clients/common/tests/test-general.c b/clients/common/tests/test-general.c index 058ee26994..591bcd98f0 100644 --- a/clients/common/tests/test-general.c +++ b/clients/common/tests/test-general.c @@ -74,13 +74,16 @@ test_client_meta_check (void) g_assert_cmpstr (info->general->setting_name, ==, info->meta_type->get_name ((const NMMetaAbstractInfo *) info, FALSE)); g_assert_cmpstr ("name", ==, info->meta_type->get_name ((const NMMetaAbstractInfo *) info, TRUE)); + g_assert (info->properties_num == NM_PTRARRAY_LEN (info->properties)); + if (info->properties_num) { gs_unref_hashtable GHashTable *property_names = g_hash_table_new (g_str_hash, g_str_equal); g_assert (info->properties); for (p = 0; p < info->properties_num; p++) { - const NMMetaPropertyInfo *pi = &info->properties[p]; + const NMMetaPropertyInfo *pi = info->properties[p]; + g_assert (pi); g_assert (pi->meta_type == &nm_meta_type_property_info); g_assert (pi->setting_info == info); g_assert (pi->property_name); @@ -93,6 +96,7 @@ test_client_meta_check (void) g_assert (pi->property_type); g_assert (pi->property_type->get_fcn); } + g_assert (!info->properties[info->properties_num]); } else g_assert (!info->properties); @@ -121,25 +125,13 @@ test_client_meta_check (void) } for (m = 0; m < _NM_META_SETTING_TYPE_NUM; m++) { - const NMMetaPropertyInfo *const*pis; - const NMMetaSettingInfoEditor *info = &nm_meta_setting_infos_editor[m]; - - pis = nm_property_infos_for_setting_type (m); - g_assert (pis); - - for (p = 0; p < info->properties_num; p++) - g_assert (pis[p] == &info->properties[p]); - g_assert (!pis[p]); - } - - for (m = 0; m < _NM_META_SETTING_TYPE_NUM; m++) { const NMMetaSettingInfoEditor *info = &nm_meta_setting_infos_editor[m]; g_assert (nm_meta_setting_info_editor_find_by_name (info->general->setting_name, FALSE) == info); g_assert (nm_meta_setting_info_editor_find_by_gtype (info->general->get_setting_gtype ()) == info); for (p = 0; p < info->properties_num; p++) { - const NMMetaPropertyInfo *pi = &info->properties[p]; + const NMMetaPropertyInfo *pi = info->properties[p]; g_assert (nm_meta_setting_info_editor_get_property_info (info, pi->property_name) == pi); g_assert (nm_meta_property_info_find_by_name (info->general->setting_name, pi->property_name) == pi); diff --git a/po/POTFILES.in b/po/POTFILES.in index e2995e63c1..7c3083f2ca 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -11,6 +11,7 @@ clients/cli/polkit-agent.c clients/cli/settings.c clients/cli/utils.c clients/common/nm-client-utils.c +clients/common/nm-meta-setting-access.c clients/common/nm-meta-setting-desc.c clients/common/nm-polkit-listener.c clients/common/nm-secret-agent-simple.c |