diff options
author | Francesco Giudici <fgiudici@redhat.com> | 2017-10-12 18:08:08 +0200 |
---|---|---|
committer | Francesco Giudici <fgiudici@redhat.com> | 2017-11-09 17:56:15 +0100 |
commit | e1220c933f84a457c16f4b21ccdacd335d2755c4 (patch) | |
tree | 978768bce5118b90dfe4b3a279790551b4ce0134 | |
parent | fc3b7d61e29a56106a0ecb55deb7fcdcf7d9b691 (diff) | |
download | NetworkManager-e1220c933f84a457c16f4b21ccdacd335d2755c4.tar.gz |
cli: add team properties
-rw-r--r-- | clients/common/nm-meta-setting-desc.c | 179 |
1 files changed, 179 insertions, 0 deletions
diff --git a/clients/common/nm-meta-setting-desc.c b/clients/common/nm-meta-setting-desc.c index 1ed6b433d8..2884ce638a 100644 --- a/clients/common/nm-meta-setting-desc.c +++ b/clients/common/nm-meta-setting-desc.c @@ -461,6 +461,7 @@ _get_text_hidden (NMMetaAccessorGetType get_type) return NM_META_TEXT_HIDDEN; } + /*****************************************************************************/ G_GNUC_PRINTF (4, 5) @@ -3642,6 +3643,60 @@ _validate_fcn_team_config (const char *value, char **out_to_free, GError **error RETURN_STR_TO_FREE (json); } +static gboolean +_is_valid_team_runner_tx_hash_element (const char *tx_hash_element) +{ + const char *valid_tx_hashes[] = { "eth", "vlan", "ipv4", "ipv6", "ip", + "l3", "tcp", "udp", "sctp", "l4", NULL }; + if (nmc_string_is_valid (tx_hash_element, valid_tx_hashes, NULL)) + return TRUE; + return FALSE; +} + +static gboolean +_set_fcn_team_runner_tx_hash (ARGS_SET_FCN) +{ + char **strv = NULL; + guint i = 0; + + g_return_val_if_fail (error == NULL || *error == NULL, FALSE); + + strv = _nm_utils_strv_cleanup (g_strsplit_set (value, " \t,", 0), + TRUE, TRUE, TRUE); + if (!verify_string_list (strv, property_info->property_name, + _is_valid_team_runner_tx_hash_element, + error)) { + g_strfreev (strv); + return FALSE; + } + + while (strv && strv[i]) + nm_setting_team_add_runner_tx_hash (NM_SETTING_TEAM (setting), strv[i++]); + g_strfreev (strv); + + return TRUE; +} + +static gboolean +_validate_and_remove_team_runner_tx_hash (NMSettingTeam *setting, + const char *tx_hash, + GError **error) +{ + if (!nm_setting_team_remove_runner_tx_hash_by_value (setting, tx_hash)) { + g_set_error (error, 1, 0, + _("the property doesn't contain string '%s'"), + tx_hash); + return FALSE; + } + + return TRUE; +} +DEFINE_REMOVER_INDEX_OR_VALUE (_remove_fcn_team_runner_tx_hash, + NM_SETTING_TEAM, + nm_setting_team_get_num_runner_tx_hash, + nm_setting_team_remove_runner_tx_hash, + _validate_and_remove_team_runner_tx_hash) + static gconstpointer _get_fcn_vlan_flags (ARGS_GET_FCN) { @@ -6000,6 +6055,130 @@ static const NMMetaPropertyInfo *const property_infos_TEAM[] = { .validate_fcn = _validate_fcn_team_config, ), ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_TEAM_NOTIFY_PEERS_COUNT, + .property_type = &_pt_gobject_int, + .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (gobject_int, + .value_infos = INT_VALUE_INFOS ( + { + .value = 0, + .nick = "disabled", + } + ), + ), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_TEAM_NOTIFY_PEERS_INTERVAL, + .property_type = &_pt_gobject_int, + .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (gobject_int, + .value_infos = INT_VALUE_INFOS ( + { + .value = 0, + .nick = "default", + } + ), + ), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_TEAM_MCAST_REJOIN_COUNT, + .property_type = &_pt_gobject_int, + .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (gobject_int, + .value_infos = INT_VALUE_INFOS ( + { + .value = 0, + .nick = "disabled", + } + ), + ), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_TEAM_MCAST_REJOIN_INTERVAL, + .property_type = &_pt_gobject_int, + .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (gobject_int, + .value_infos = INT_VALUE_INFOS ( + { + .value = 0, + .nick = "default", + } + ), + ), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_TEAM_RUNNER, + .property_type = &_pt_gobject_string, + .property_typ_data = DEFINE_PROPERTY_TYP_DATA ( + .values_static = VALUES_STATIC (NM_SETTING_TEAM_RUNNER_BROADCAST, + NM_SETTING_TEAM_RUNNER_ROUNDROBIN, + NM_SETTING_TEAM_RUNNER_ACTIVEBACKUP, + NM_SETTING_TEAM_RUNNER_LOADBALANCE, + NM_SETTING_TEAM_RUNNER_LACP), + ), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_TEAM_RUNNER_HWADDR_POLICY, + .property_type = &_pt_gobject_string, + .property_typ_data = DEFINE_PROPERTY_TYP_DATA ( + .values_static = VALUES_STATIC (NM_SETTING_TEAM_RUNNER_HWADDR_POLICY_SAME_ALL, + NM_SETTING_TEAM_RUNNER_HWADDR_POLICY_BY_ACTIVE, + NM_SETTING_TEAM_RUNNER_HWADDR_POLICY_ONLY_ACTIVE), + ), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_TEAM_RUNNER_TX_HASH, + .property_type = DEFINE_PROPERTY_TYPE ( + .get_fcn = _get_fcn_gobject, + .set_fcn = _set_fcn_team_runner_tx_hash, + .remove_fcn = _remove_fcn_team_runner_tx_hash, + ), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_TEAM_RUNNER_TX_BALANCER, + .property_type = &_pt_gobject_string, + .property_typ_data = DEFINE_PROPERTY_TYP_DATA ( + .values_static = VALUES_STATIC ("basic"), + ), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_TEAM_RUNNER_TX_BALANCER_INTERVAL, + .property_type = &_pt_gobject_int, + .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (gobject_int, + .value_infos = INT_VALUE_INFOS ( + { + .value = 50, + .nick = "default", + } + ), + ), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_TEAM_RUNNER_ACTIVE, + .property_type = & _pt_gobject_bool, + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_TEAM_RUNNER_FAST_RATE, + .property_type = & _pt_gobject_bool, + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_TEAM_RUNNER_SYS_PRIO, + .property_type = &_pt_gobject_int, + .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (gobject_int, + .value_infos = INT_VALUE_INFOS ( + { + .value = 255, + .nick = "default", + } + ), + ), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_TEAM_RUNNER_MIN_PORTS, + .property_type = &_pt_gobject_int, + .property_typ_data = DEFINE_PROPERTY_TYP_DATA_SUBTYPE (gobject_int, + .value_infos = INT_VALUE_INFOS ( + { + .value = 0, + .nick = "default", + } + ), + ), + ), + PROPERTY_INFO_WITH_DESC (NM_SETTING_TEAM_RUNNER_AGG_SELECT_POLICY, + .property_type = &_pt_gobject_string, + .property_typ_data = DEFINE_PROPERTY_TYP_DATA ( + .values_static = VALUES_STATIC (NM_SETTING_TEAM_RUNNER_AGG_SELECT_POLICY_LACP_PRIO, + NM_SETTING_TEAM_RUNNER_AGG_SELECT_POLICY_LACP_PRIO_STABLE, + NM_SETTING_TEAM_RUNNER_AGG_SELECT_POLICY_BANDWIDTH, + NM_SETTING_TEAM_RUNNER_AGG_SELECT_POLICY_COUNT, + NM_SETTING_TEAM_RUNNER_AGG_SELECT_POLICY_PORT_CONFIG), + ), + ), NULL }; |