summaryrefslogtreecommitdiff
path: root/libnm-core/nm-setting-team.c
diff options
context:
space:
mode:
Diffstat (limited to 'libnm-core/nm-setting-team.c')
-rw-r--r--libnm-core/nm-setting-team.c694
1 files changed, 218 insertions, 476 deletions
diff --git a/libnm-core/nm-setting-team.c b/libnm-core/nm-setting-team.c
index 663d7d819c..01a1a12232 100644
--- a/libnm-core/nm-setting-team.c
+++ b/libnm-core/nm-setting-team.c
@@ -27,6 +27,7 @@
#include "nm-utils.h"
#include "nm-utils-private.h"
+#include "nm-team-utils.h"
#include "nm-connection-private.h"
/**
@@ -721,61 +722,10 @@ nm_team_link_watcher_get_flags (const NMTeamLinkWatcher *watcher)
/*****************************************************************************/
-NM_GOBJECT_PROPERTIES_DEFINE (NMSettingTeam,
- PROP_CONFIG,
- PROP_NOTIFY_PEERS_COUNT,
- PROP_NOTIFY_PEERS_INTERVAL,
- PROP_MCAST_REJOIN_COUNT,
- PROP_MCAST_REJOIN_INTERVAL,
- PROP_RUNNER,
- PROP_RUNNER_HWADDR_POLICY,
- PROP_RUNNER_TX_HASH,
- PROP_RUNNER_TX_BALANCER,
- PROP_RUNNER_TX_BALANCER_INTERVAL,
- PROP_RUNNER_ACTIVE,
- PROP_RUNNER_FAST_RATE,
- PROP_RUNNER_SYS_PRIO,
- PROP_RUNNER_MIN_PORTS,
- PROP_RUNNER_AGG_SELECT_POLICY,
- PROP_LINK_WATCHERS,
-);
-
-static const _NMUtilsTeamPropertyKeys _prop_to_keys[_PROPERTY_ENUMS_LAST] = {
- [PROP_CONFIG] = { },
- [PROP_NOTIFY_PEERS_COUNT] = { .key1 = "notify_peers", .key2 = "count", },
- [PROP_NOTIFY_PEERS_INTERVAL] = { .key1 = "notify_peers", .key2 = "interval", },
- [PROP_MCAST_REJOIN_COUNT] = { .key1 = "mcast_rejoin", .key2 = "count", },
- [PROP_MCAST_REJOIN_INTERVAL] = { .key1 = "mcast_rejoin", .key2 = "interval", },
- [PROP_RUNNER] = { .key1 = "runner", .key2 = "name", .default_str = NM_SETTING_TEAM_RUNNER_DEFAULT, },
- [PROP_RUNNER_HWADDR_POLICY] = { .key1 = "runner", .key2 = "hwaddr_policy", },
- [PROP_RUNNER_TX_HASH] = { .key1 = "runner", .key2 = "tx_hash", },
- [PROP_RUNNER_TX_BALANCER] = { .key1 = "runner", .key2 = "tx_balancer", .key3 = "name", },
- [PROP_RUNNER_TX_BALANCER_INTERVAL] = { .key1 = "runner", .key2 = "tx_balancer", .key3 = "balancing_interval", .default_int = -1 },
- [PROP_RUNNER_ACTIVE] = { .key1 = "runner", .key2 = "active", },
- [PROP_RUNNER_FAST_RATE] = { .key1 = "runner", .key2 = "fast_rate", },
- [PROP_RUNNER_SYS_PRIO] = { .key1 = "runner", .key2 = "sys_prio", .default_int = -1, },
- [PROP_RUNNER_MIN_PORTS] = { .key1 = "runner", .key2 = "min_ports", .default_int = -1, },
- [PROP_RUNNER_AGG_SELECT_POLICY] = { .key1 = "runner", .key2 = "agg_select_policy", },
- [PROP_LINK_WATCHERS] = { .key1 = "link_watch", },
-};
+static GParamSpec *obj_properties[_NM_TEAM_ATTRIBUTE_MASTER_NUM] = { NULL, };
typedef struct {
- char *config;
- int notify_peers_count;
- int notify_peers_interval;
- int mcast_rejoin_count;
- int mcast_rejoin_interval;
- char *runner;
- char *runner_hwaddr_policy;
- GPtrArray *runner_tx_hash;
- char *runner_tx_balancer;
- int runner_tx_balancer_interval;
- gboolean runner_active;
- gboolean runner_fast_rate;
- int runner_sys_prio;
- int runner_min_ports;
- char *runner_agg_select_policy;
- GPtrArray *link_watchers; /* Array of NMTeamLinkWatcher */
+ NMTeamSetting *team_setting;
} NMSettingTeamPrivate;
G_DEFINE_TYPE (NMSettingTeam, nm_setting_team, NM_TYPE_SETTING)
@@ -784,6 +734,15 @@ G_DEFINE_TYPE (NMSettingTeam, nm_setting_team, NM_TYPE_SETTING)
/*****************************************************************************/
+#define _maybe_changed(self, changed) \
+ nm_team_setting_maybe_changed (NM_SETTING (_NM_ENSURE_TYPE (NMSettingTeam *, self)), (const GParamSpec *const*) obj_properties, (changed))
+
+#define _maybe_changed_with_assert(self, changed) \
+ G_STMT_START { \
+ if (!_maybe_changed ((self), (changed))) \
+ nm_assert_not_reached (); \
+ } G_STMT_END
+
/**
* nm_setting_team_get_config:
* @setting: the #NMSettingTeam
@@ -795,7 +754,7 @@ nm_setting_team_get_config (NMSettingTeam *setting)
{
g_return_val_if_fail (NM_IS_SETTING_TEAM (setting), NULL);
- return NM_SETTING_TEAM_GET_PRIVATE (setting)->config;
+ return nm_team_setting_config_get (NM_SETTING_TEAM_GET_PRIVATE (setting)->team_setting);
}
/**
@@ -811,7 +770,7 @@ nm_setting_team_get_notify_peers_count (NMSettingTeam *setting)
{
g_return_val_if_fail (NM_IS_SETTING_TEAM (setting), 0);
- return NM_SETTING_TEAM_GET_PRIVATE (setting)->notify_peers_count;
+ return NM_SETTING_TEAM_GET_PRIVATE (setting)->team_setting->d.master.notify_peers_count;
}
/**
@@ -827,7 +786,7 @@ nm_setting_team_get_notify_peers_interval (NMSettingTeam *setting)
{
g_return_val_if_fail (NM_IS_SETTING_TEAM (setting), 0);
- return NM_SETTING_TEAM_GET_PRIVATE (setting)->notify_peers_interval;
+ return NM_SETTING_TEAM_GET_PRIVATE (setting)->team_setting->d.master.notify_peers_interval;
}
/**
@@ -843,7 +802,7 @@ nm_setting_team_get_mcast_rejoin_count (NMSettingTeam *setting)
{
g_return_val_if_fail (NM_IS_SETTING_TEAM (setting), 0);
- return NM_SETTING_TEAM_GET_PRIVATE (setting)->mcast_rejoin_count;
+ return NM_SETTING_TEAM_GET_PRIVATE (setting)->team_setting->d.master.mcast_rejoin_count;
}
/**
@@ -859,7 +818,7 @@ nm_setting_team_get_mcast_rejoin_interval (NMSettingTeam *setting)
{
g_return_val_if_fail (NM_IS_SETTING_TEAM (setting), 0);
- return NM_SETTING_TEAM_GET_PRIVATE (setting)->mcast_rejoin_interval;
+ return NM_SETTING_TEAM_GET_PRIVATE (setting)->team_setting->d.master.mcast_rejoin_interval;
}
/**
@@ -875,7 +834,7 @@ nm_setting_team_get_runner (NMSettingTeam *setting)
{
g_return_val_if_fail (NM_IS_SETTING_TEAM (setting), NULL);
- return NM_SETTING_TEAM_GET_PRIVATE (setting)->runner;
+ return NM_SETTING_TEAM_GET_PRIVATE (setting)->team_setting->d.master.runner;
}
/**
@@ -891,7 +850,7 @@ nm_setting_team_get_runner_hwaddr_policy (NMSettingTeam *setting)
{
g_return_val_if_fail (NM_IS_SETTING_TEAM (setting), NULL);
- return NM_SETTING_TEAM_GET_PRIVATE (setting)->runner_hwaddr_policy;
+ return NM_SETTING_TEAM_GET_PRIVATE (setting)->team_setting->d.master.runner_hwaddr_policy;
}
/**
@@ -907,7 +866,7 @@ nm_setting_team_get_runner_tx_balancer (NMSettingTeam *setting)
{
g_return_val_if_fail (NM_IS_SETTING_TEAM (setting), NULL);
- return NM_SETTING_TEAM_GET_PRIVATE (setting)->runner_tx_balancer;
+ return NM_SETTING_TEAM_GET_PRIVATE (setting)->team_setting->d.master.runner_tx_balancer;
}
/**
@@ -923,7 +882,7 @@ nm_setting_team_get_runner_tx_balancer_interval (NMSettingTeam *setting)
{
g_return_val_if_fail (NM_IS_SETTING_TEAM (setting), 0);
- return NM_SETTING_TEAM_GET_PRIVATE (setting)->runner_tx_balancer_interval;
+ return NM_SETTING_TEAM_GET_PRIVATE (setting)->team_setting->d.master.runner_tx_balancer_interval;
}
/**
@@ -939,7 +898,7 @@ nm_setting_team_get_runner_active (NMSettingTeam *setting)
{
g_return_val_if_fail (NM_IS_SETTING_TEAM (setting), FALSE);
- return NM_SETTING_TEAM_GET_PRIVATE (setting)->runner_active;
+ return NM_SETTING_TEAM_GET_PRIVATE (setting)->team_setting->d.master.runner_active;
}
/**
@@ -955,7 +914,7 @@ nm_setting_team_get_runner_fast_rate (NMSettingTeam *setting)
{
g_return_val_if_fail (NM_IS_SETTING_TEAM (setting), FALSE);
- return NM_SETTING_TEAM_GET_PRIVATE (setting)->runner_fast_rate;
+ return NM_SETTING_TEAM_GET_PRIVATE (setting)->team_setting->d.master.runner_fast_rate;
}
/**
@@ -971,7 +930,7 @@ nm_setting_team_get_runner_sys_prio (NMSettingTeam *setting)
{
g_return_val_if_fail (NM_IS_SETTING_TEAM (setting), 0);
- return NM_SETTING_TEAM_GET_PRIVATE (setting)->runner_sys_prio;
+ return NM_SETTING_TEAM_GET_PRIVATE (setting)->team_setting->d.master.runner_sys_prio;
}
/**
@@ -987,7 +946,7 @@ nm_setting_team_get_runner_min_ports (NMSettingTeam *setting)
{
g_return_val_if_fail (NM_IS_SETTING_TEAM (setting), 0);
- return NM_SETTING_TEAM_GET_PRIVATE (setting)->runner_min_ports;
+ return NM_SETTING_TEAM_GET_PRIVATE (setting)->team_setting->d.master.runner_min_ports;
}
/**
@@ -1003,7 +962,7 @@ nm_setting_team_get_runner_agg_select_policy (NMSettingTeam *setting)
{
g_return_val_if_fail (NM_IS_SETTING_TEAM (setting), NULL);
- return NM_SETTING_TEAM_GET_PRIVATE (setting)->runner_agg_select_policy;
+ return NM_SETTING_TEAM_GET_PRIVATE (setting)->team_setting->d.master.runner_agg_select_policy;
}
/**
@@ -1019,19 +978,22 @@ nm_setting_team_get_runner_agg_select_policy (NMSettingTeam *setting)
**/
gboolean
nm_setting_team_remove_runner_tx_hash_by_value (NMSettingTeam *setting,
- const char *txhash)
+ const char *txhash)
{
NMSettingTeamPrivate *priv = NM_SETTING_TEAM_GET_PRIVATE (setting);
+ const GPtrArray *arr;
guint i;
g_return_val_if_fail (NM_IS_SETTING_TEAM (setting), FALSE);
g_return_val_if_fail (txhash != NULL, FALSE);
- if (priv->runner_tx_hash) {
- for (i = 0; i < priv->runner_tx_hash->len; i++) {
- if (nm_streq (txhash, priv->runner_tx_hash->pdata[i])) {
- g_ptr_array_remove_index (priv->runner_tx_hash, i);
- _notify (setting, PROP_RUNNER_TX_HASH);
+ arr = priv->team_setting->d.master.runner_tx_hash;
+ if (arr) {
+ for (i = 0; i < arr->len; i++) {
+ if (nm_streq (txhash, arr->pdata[i])) {
+ _maybe_changed_with_assert (setting,
+ nm_team_setting_value_master_runner_tx_hash_remove (priv->team_setting,
+ i));
return TRUE;
}
}
@@ -1050,11 +1012,12 @@ nm_setting_team_remove_runner_tx_hash_by_value (NMSettingTeam *setting,
guint
nm_setting_team_get_num_runner_tx_hash (NMSettingTeam *setting)
{
- NMSettingTeamPrivate *priv = NM_SETTING_TEAM_GET_PRIVATE (setting);
+ const GPtrArray *arr;
g_return_val_if_fail (NM_IS_SETTING_TEAM (setting), 0);
- return priv->runner_tx_hash ? priv->runner_tx_hash->len : 0;
+ arr = NM_SETTING_TEAM_GET_PRIVATE (setting)->team_setting->d.master.runner_tx_hash;
+ return arr ? arr->len : 0u;
}
/**
@@ -1069,13 +1032,16 @@ nm_setting_team_get_num_runner_tx_hash (NMSettingTeam *setting)
const char *
nm_setting_team_get_runner_tx_hash (NMSettingTeam *setting, guint idx)
{
- NMSettingTeamPrivate *priv = NM_SETTING_TEAM_GET_PRIVATE (setting);
+ const GPtrArray *arr;
g_return_val_if_fail (NM_IS_SETTING_TEAM (setting), NULL);
- g_return_val_if_fail (priv->runner_tx_hash, NULL);
- g_return_val_if_fail (idx < priv->runner_tx_hash->len, NULL);
- return priv->runner_tx_hash->pdata[idx];
+ arr = NM_SETTING_TEAM_GET_PRIVATE (setting)->team_setting->d.master.runner_tx_hash;
+
+ g_return_val_if_fail (arr, NULL);
+ g_return_val_if_fail (idx < arr->len, NULL);
+
+ return arr->pdata[idx];
}
/**
@@ -1090,14 +1056,18 @@ nm_setting_team_get_runner_tx_hash (NMSettingTeam *setting, guint idx)
void
nm_setting_team_remove_runner_tx_hash (NMSettingTeam *setting, guint idx)
{
- NMSettingTeamPrivate *priv = NM_SETTING_TEAM_GET_PRIVATE (setting);
+ NMSettingTeamPrivate *priv;
g_return_if_fail (NM_IS_SETTING_TEAM (setting));
- g_return_if_fail (priv->runner_tx_hash);
- g_return_if_fail (idx < priv->runner_tx_hash->len);
- g_ptr_array_remove_index (priv->runner_tx_hash, idx);
- _notify (setting, PROP_RUNNER_TX_HASH);
+ priv = NM_SETTING_TEAM_GET_PRIVATE (setting);
+
+ g_return_if_fail (priv->team_setting->d.master.runner_tx_hash);
+ g_return_if_fail (idx < priv->team_setting->d.master.runner_tx_hash->len);
+
+ _maybe_changed_with_assert (setting,
+ nm_team_setting_value_master_runner_tx_hash_remove (priv->team_setting,
+ idx));
}
/**
@@ -1115,23 +1085,12 @@ nm_setting_team_remove_runner_tx_hash (NMSettingTeam *setting, guint idx)
gboolean
nm_setting_team_add_runner_tx_hash (NMSettingTeam *setting, const char *txhash)
{
- NMSettingTeamPrivate *priv = NM_SETTING_TEAM_GET_PRIVATE (setting);
- guint i;
-
g_return_val_if_fail (NM_IS_SETTING_TEAM (setting), FALSE);
- g_return_val_if_fail (txhash != NULL, FALSE);
- g_return_val_if_fail (txhash[0] != '\0', FALSE);
+ g_return_val_if_fail (txhash, FALSE);
- if (!priv->runner_tx_hash)
- priv->runner_tx_hash = g_ptr_array_new_with_free_func (g_free);
- for (i = 0; i < priv->runner_tx_hash->len; i++) {
- if (nm_streq (txhash, priv->runner_tx_hash->pdata[i]))
- return FALSE;
- }
-
- g_ptr_array_add (priv->runner_tx_hash, g_strdup (txhash));
- _notify (setting, PROP_RUNNER_TX_HASH);
- return TRUE;
+ return _maybe_changed (setting,
+ nm_team_setting_value_master_runner_tx_hash_add (NM_SETTING_TEAM_GET_PRIVATE (setting)->team_setting,
+ txhash));
}
/**
@@ -1145,11 +1104,9 @@ nm_setting_team_add_runner_tx_hash (NMSettingTeam *setting, const char *txhash)
guint
nm_setting_team_get_num_link_watchers (NMSettingTeam *setting)
{
- NMSettingTeamPrivate *priv = NM_SETTING_TEAM_GET_PRIVATE (setting);
-
g_return_val_if_fail (NM_IS_SETTING_TEAM (setting), 0);
- return priv->link_watchers->len;
+ return NM_SETTING_TEAM_GET_PRIVATE (setting)->team_setting->d.link_watchers->len;
}
/**
@@ -1164,12 +1121,15 @@ nm_setting_team_get_num_link_watchers (NMSettingTeam *setting)
NMTeamLinkWatcher *
nm_setting_team_get_link_watcher (NMSettingTeam *setting, guint idx)
{
- NMSettingTeamPrivate *priv = NM_SETTING_TEAM_GET_PRIVATE (setting);
+ const GPtrArray *arr;
g_return_val_if_fail (NM_IS_SETTING_TEAM (setting), NULL);
- g_return_val_if_fail (idx < priv->link_watchers->len, NULL);
- return priv->link_watchers->pdata[idx];
+ arr = NM_SETTING_TEAM_GET_PRIVATE (setting)->team_setting->d.link_watchers;
+
+ g_return_val_if_fail (idx < arr->len, NULL);
+
+ return arr->pdata[idx];
}
/**
@@ -1188,20 +1148,12 @@ gboolean
nm_setting_team_add_link_watcher (NMSettingTeam *setting,
NMTeamLinkWatcher *link_watcher)
{
- NMSettingTeamPrivate *priv = NM_SETTING_TEAM_GET_PRIVATE (setting);
- guint i;
-
g_return_val_if_fail (NM_IS_SETTING_TEAM (setting), FALSE);
g_return_val_if_fail (link_watcher != NULL, FALSE);
- for (i = 0; i < priv->link_watchers->len; i++) {
- if (nm_team_link_watcher_equal (priv->link_watchers->pdata[i], link_watcher))
- return FALSE;
- }
-
- g_ptr_array_add (priv->link_watchers, _nm_team_link_watcher_ref (link_watcher));
- _notify (setting, PROP_LINK_WATCHERS);
- return TRUE;
+ return _maybe_changed (setting,
+ nm_team_setting_value_link_watchers_add (NM_SETTING_TEAM_GET_PRIVATE (setting)->team_setting,
+ link_watcher));
}
/**
@@ -1216,13 +1168,17 @@ nm_setting_team_add_link_watcher (NMSettingTeam *setting,
void
nm_setting_team_remove_link_watcher (NMSettingTeam *setting, guint idx)
{
- NMSettingTeamPrivate *priv = NM_SETTING_TEAM_GET_PRIVATE (setting);
+ NMSettingTeamPrivate *priv;
g_return_if_fail (NM_IS_SETTING_TEAM (setting));
- g_return_if_fail (idx < priv->link_watchers->len);
- g_ptr_array_remove_index (priv->link_watchers, idx);
- _notify (setting, PROP_LINK_WATCHERS);
+ priv = NM_SETTING_TEAM_GET_PRIVATE (setting);
+
+ g_return_if_fail (idx < priv->team_setting->d.link_watchers->len);
+
+ _maybe_changed_with_assert (setting,
+ nm_team_setting_value_link_watchers_remove (priv->team_setting,
+ idx));
}
/**
@@ -1240,19 +1196,12 @@ gboolean
nm_setting_team_remove_link_watcher_by_value (NMSettingTeam *setting,
NMTeamLinkWatcher *link_watcher)
{
- NMSettingTeamPrivate *priv = NM_SETTING_TEAM_GET_PRIVATE (setting);
- guint i;
-
g_return_val_if_fail (NM_IS_SETTING_TEAM (setting), FALSE);
+ g_return_val_if_fail (link_watcher, FALSE);
- for (i = 0; i < priv->link_watchers->len; i++) {
- if (nm_team_link_watcher_equal (priv->link_watchers->pdata[i], link_watcher)) {
- g_ptr_array_remove_index (priv->link_watchers, i);
- _notify (setting, PROP_LINK_WATCHERS);
- return TRUE;
- }
- }
- return FALSE;
+ return _maybe_changed (setting,
+ nm_team_setting_value_link_watchers_remove_by_value (NM_SETTING_TEAM_GET_PRIVATE (setting)->team_setting,
+ link_watcher));
}
/**
@@ -1264,15 +1213,14 @@ nm_setting_team_remove_link_watcher_by_value (NMSettingTeam *setting,
* Since: 1.12
**/
void
-nm_setting_team_clear_link_watchers (NMSettingTeam *setting) {
- NMSettingTeamPrivate *priv = NM_SETTING_TEAM_GET_PRIVATE (setting);
-
+nm_setting_team_clear_link_watchers (NMSettingTeam *setting)
+{
g_return_if_fail (NM_IS_SETTING_TEAM (setting));
- if (priv->link_watchers->len != 0) {
- g_ptr_array_set_size (priv->link_watchers, 0);
- _notify (setting, PROP_LINK_WATCHERS);
- }
+ _maybe_changed (setting,
+ nm_team_setting_value_link_watchers_set_list (NM_SETTING_TEAM_GET_PRIVATE (setting)->team_setting,
+ NULL,
+ 0));
}
static GVariant *
@@ -1292,90 +1240,12 @@ static gboolean
verify (NMSetting *setting, NMConnection *connection, GError **error)
{
NMSettingTeamPrivate *priv = NM_SETTING_TEAM_GET_PRIVATE (setting);
- guint i;
if (!_nm_connection_verify_required_interface_name (connection, error))
return FALSE;
- if (priv->config) {
- if (strlen (priv->config) > 1*1024*1024) {
- g_set_error (error, NM_CONNECTION_ERROR, NM_CONNECTION_ERROR_INVALID_PROPERTY,
- _("team config exceeds size limit"));
- g_prefix_error (error,
- "%s.%s: ",
- NM_SETTING_TEAM_SETTING_NAME,
- NM_SETTING_TEAM_CONFIG);
- return FALSE;
- }
-
- if (!nm_utils_is_json_object (priv->config, error)) {
- g_prefix_error (error,
- "%s.%s: ",
- NM_SETTING_TEAM_SETTING_NAME,
- NM_SETTING_TEAM_CONFIG);
- /* We treat an empty string as no config for compatibility. */
- return *priv->config ? FALSE : NM_SETTING_VERIFY_NORMALIZABLE;
- }
- }
-
- if ( priv->runner
- && g_ascii_strcasecmp (priv->runner, NM_SETTING_TEAM_RUNNER_BROADCAST)
- && g_ascii_strcasecmp (priv->runner, NM_SETTING_TEAM_RUNNER_ROUNDROBIN)
- && g_ascii_strcasecmp (priv->runner, NM_SETTING_TEAM_RUNNER_RANDOM)
- && g_ascii_strcasecmp (priv->runner, NM_SETTING_TEAM_RUNNER_ACTIVEBACKUP)
- && g_ascii_strcasecmp (priv->runner, NM_SETTING_TEAM_RUNNER_LOADBALANCE)
- && g_ascii_strcasecmp (priv->runner, NM_SETTING_TEAM_RUNNER_LACP)) {
- g_set_error (error, NM_CONNECTION_ERROR, NM_CONNECTION_ERROR_INVALID_SETTING,
- _("invalid runner \"%s\""), priv->runner);
-
- g_prefix_error (error, "%s.%s: ", nm_setting_get_name (setting), NM_SETTING_TEAM_RUNNER);
+ if (!nm_team_setting_verify (priv->team_setting, error))
return FALSE;
- }
-
- /* Validate link watchers */
- for (i = 0; i < priv->link_watchers->len; i++) {
- NMTeamLinkWatcher *link_watcher = priv->link_watchers->pdata[i];
- const char *name = nm_team_link_watcher_get_name (link_watcher);
-
- if (!name) {
- g_set_error (error, NM_CONNECTION_ERROR, NM_CONNECTION_ERROR_MISSING_SETTING,
- _("missing link watcher name"));
- g_prefix_error (error, "%s.%s: ", nm_setting_get_name (setting),
- NM_SETTING_TEAM_LINK_WATCHERS);
- return FALSE;
- }
- if (!NM_IN_STRSET (name,
- NM_TEAM_LINK_WATCHER_ETHTOOL,
- NM_TEAM_LINK_WATCHER_ARP_PING,
- NM_TEAM_LINK_WATCHER_NSNA_PING)) {
- g_set_error (error, NM_CONNECTION_ERROR, NM_CONNECTION_ERROR_INVALID_SETTING,
- _("unknown link watcher \"%s\""), name);
- g_prefix_error (error, "%s.%s: ", nm_setting_get_name (setting),
- NM_SETTING_TEAM_LINK_WATCHERS);
- return FALSE;
- }
-
- if (NM_IN_STRSET (name,
- NM_TEAM_LINK_WATCHER_ARP_PING,
- NM_TEAM_LINK_WATCHER_NSNA_PING)
- && !nm_team_link_watcher_get_target_host (link_watcher)) {
- g_set_error (error, NM_CONNECTION_ERROR, NM_CONNECTION_ERROR_MISSING_SETTING,
- _("missing target host"));
- g_prefix_error (error, "%s.%s: ", nm_setting_get_name (setting),
- NM_SETTING_TEAM_LINK_WATCHERS);
- return FALSE;
- }
- if (nm_streq (name, NM_TEAM_LINK_WATCHER_ARP_PING)
- && !nm_team_link_watcher_get_source_host (link_watcher)) {
- g_set_error (error, NM_CONNECTION_ERROR, NM_CONNECTION_ERROR_MISSING_SETTING,
- _("missing source address"));
- g_prefix_error (error, "%s.%s: ", nm_setting_get_name (setting),
- NM_SETTING_TEAM_LINK_WATCHERS);
- return FALSE;
- }
- }
- /* NOTE: normalizable/normalizable-errors must appear at the end with decreasing severity.
- * Take care to properly order statements with priv->config above. */
return TRUE;
}
@@ -1398,27 +1268,26 @@ compare_property (const NMSettInfoSetting *sett_info,
return TRUE;
a_priv = NM_SETTING_TEAM_GET_PRIVATE (set_a);
b_priv = NM_SETTING_TEAM_GET_PRIVATE (set_b);
- return nm_team_link_watchers_equal (a_priv->link_watchers,
- b_priv->link_watchers,
+ return nm_team_link_watchers_equal (a_priv->team_setting->d.link_watchers,
+ b_priv->team_setting->d.link_watchers,
TRUE);
}
if (nm_streq (sett_info->property_infos[property_idx].name, NM_SETTING_TEAM_CONFIG)) {
if (set_b) {
- a_priv = NM_SETTING_TEAM_GET_PRIVATE (set_a);
- b_priv = NM_SETTING_TEAM_GET_PRIVATE (set_b);
-
if (NM_FLAGS_HAS (flags, NM_SETTING_COMPARE_FLAG_INFERRABLE)) {
/* If we are trying to match a connection in order to assume it (and thus
* @flags contains INFERRABLE), use the "relaxed" matching for team
* configuration. Otherwise, for all other purposes (including connection
* comparison before an update), resort to the default string comparison. */
- return _nm_utils_team_config_equal (a_priv->config,
- b_priv->config,
- TRUE);
+ return TRUE;
}
- return nm_streq0 (a_priv->config, b_priv->config);
+ a_priv = NM_SETTING_TEAM_GET_PRIVATE (set_a);
+ b_priv = NM_SETTING_TEAM_GET_PRIVATE (set_b);
+
+ return nm_streq0 (nm_team_setting_config_get (a_priv->team_setting),
+ nm_team_setting_config_get (b_priv->team_setting));
}
return TRUE;
@@ -1433,56 +1302,38 @@ compare_property (const NMSettInfoSetting *sett_info,
flags);
}
-#define JSON_TO_VAL(typ, id) _nm_utils_json_extract_##typ (priv->config, _prop_to_keys[id], FALSE)
-
static void
-_align_team_properties (NMSettingTeam *setting)
+duplicate_copy_properties (const NMSettInfoSetting *sett_info,
+ NMSetting *src,
+ NMSetting *dst)
{
- NMSettingTeamPrivate *priv = NM_SETTING_TEAM_GET_PRIVATE (setting);
- char **strv;
- gsize i;
-
- priv->notify_peers_count = JSON_TO_VAL (int, PROP_NOTIFY_PEERS_COUNT);
- priv->notify_peers_interval = JSON_TO_VAL (int, PROP_NOTIFY_PEERS_INTERVAL);
- priv->mcast_rejoin_count = JSON_TO_VAL (int, PROP_MCAST_REJOIN_COUNT);
- priv->mcast_rejoin_interval = JSON_TO_VAL (int, PROP_MCAST_REJOIN_INTERVAL);
- priv->runner_tx_balancer_interval = JSON_TO_VAL (int, PROP_RUNNER_TX_BALANCER_INTERVAL);
- priv->runner_sys_prio = JSON_TO_VAL (int, PROP_RUNNER_SYS_PRIO);
- priv->runner_min_ports = JSON_TO_VAL (int, PROP_RUNNER_MIN_PORTS);
-
- priv->runner_active = JSON_TO_VAL (boolean, PROP_RUNNER_ACTIVE);
- priv->runner_fast_rate = JSON_TO_VAL (boolean, PROP_RUNNER_FAST_RATE);
-
- g_free (priv->runner);
- g_free (priv->runner_hwaddr_policy);
- g_free (priv->runner_tx_balancer);
- g_free (priv->runner_agg_select_policy);
- priv->runner = JSON_TO_VAL (string, PROP_RUNNER);
- priv->runner_hwaddr_policy = JSON_TO_VAL (string, PROP_RUNNER_HWADDR_POLICY);
- priv->runner_tx_balancer = JSON_TO_VAL (string, PROP_RUNNER_TX_BALANCER);
- priv->runner_agg_select_policy = JSON_TO_VAL (string, PROP_RUNNER_AGG_SELECT_POLICY);
-
- strv = JSON_TO_VAL (strv, PROP_RUNNER_TX_HASH);
- if (_nm_utils_strv_cmp_n (( priv->runner_tx_hash
- ? (const char *const*) priv->runner_tx_hash->pdata
- : NULL),
- ( priv->runner_tx_hash
- ? (gssize) priv->runner_tx_hash->len
- : (gssize) -1),
- NM_CAST_STRV_CC (strv),
- -1) != 0) {
- nm_clear_pointer (&priv->runner_tx_hash, g_ptr_array_unref);
- if (strv) {
- priv->runner_tx_hash = g_ptr_array_new_full (NM_PTRARRAY_LEN (strv), g_free);
- for (i = 0; strv[i]; i++)
- g_ptr_array_add (priv->runner_tx_hash, strv[i]);
- nm_clear_g_free (&strv);
- }
- }
- nm_clear_pointer (&strv, g_strfreev);
+ _maybe_changed (NM_SETTING_TEAM (dst),
+ nm_team_setting_reset (NM_SETTING_TEAM_GET_PRIVATE (dst)->team_setting,
+ NM_SETTING_TEAM_GET_PRIVATE (src)->team_setting));
+}
+
+static gboolean
+init_from_dbus (NMSetting *setting,
+ GHashTable *keys,
+ GVariant *setting_dict,
+ GVariant *connection_dict,
+ guint /* NMSettingParseFlags */ parse_flags,
+ GError **error)
+{
+ guint32 changed = 0;
+ gboolean success;
- g_ptr_array_unref (priv->link_watchers);
- priv->link_watchers = JSON_TO_VAL (ptr_array, PROP_LINK_WATCHERS);
+ if (keys)
+ g_hash_table_remove (keys, "interface-name");
+
+ success = nm_team_setting_reset_from_dbus (NM_SETTING_TEAM_GET_PRIVATE (setting)->team_setting,
+ setting_dict,
+ keys,
+ &changed,
+ parse_flags,
+ error);
+ _maybe_changed (NM_SETTING_TEAM (setting), changed);
+ return success;
}
/*****************************************************************************/
@@ -1493,58 +1344,47 @@ get_property (GObject *object, guint prop_id,
{
NMSettingTeam *setting = NM_SETTING_TEAM (object);
NMSettingTeamPrivate *priv = NM_SETTING_TEAM_GET_PRIVATE (setting);
+ const GPtrArray *v_ptrarr;
switch (prop_id) {
- case PROP_CONFIG:
- g_value_set_string (value, nm_setting_team_get_config (setting));
- break;
- case PROP_NOTIFY_PEERS_COUNT:
- g_value_set_int (value, priv->notify_peers_count);
+ case NM_TEAM_ATTRIBUTE_CONFIG:
+ g_value_set_string (value,
+ nm_team_setting_config_get (priv->team_setting));
break;
- case PROP_NOTIFY_PEERS_INTERVAL:
- g_value_set_int (value, priv->notify_peers_interval);
+ case NM_TEAM_ATTRIBUTE_MASTER_RUNNER_ACTIVE:
+ case NM_TEAM_ATTRIBUTE_MASTER_RUNNER_FAST_RATE:
+ g_value_set_boolean (value,
+ nm_team_setting_value_get_bool (priv->team_setting,
+ prop_id));
break;
- case PROP_MCAST_REJOIN_COUNT:
- g_value_set_int (value, priv->mcast_rejoin_count);
+ case NM_TEAM_ATTRIBUTE_MASTER_NOTIFY_PEERS_COUNT:
+ case NM_TEAM_ATTRIBUTE_MASTER_NOTIFY_PEERS_INTERVAL:
+ case NM_TEAM_ATTRIBUTE_MASTER_MCAST_REJOIN_COUNT:
+ case NM_TEAM_ATTRIBUTE_MASTER_MCAST_REJOIN_INTERVAL:
+ case NM_TEAM_ATTRIBUTE_MASTER_RUNNER_TX_BALANCER_INTERVAL:
+ case NM_TEAM_ATTRIBUTE_MASTER_RUNNER_SYS_PRIO:
+ case NM_TEAM_ATTRIBUTE_MASTER_RUNNER_MIN_PORTS:
+ g_value_set_int (value,
+ nm_team_setting_value_get_int32 (priv->team_setting,
+ prop_id));
break;
- case PROP_MCAST_REJOIN_INTERVAL:
- g_value_set_int (value, priv->mcast_rejoin_interval);
+ case NM_TEAM_ATTRIBUTE_MASTER_RUNNER:
+ case NM_TEAM_ATTRIBUTE_MASTER_RUNNER_HWADDR_POLICY:
+ case NM_TEAM_ATTRIBUTE_MASTER_RUNNER_TX_BALANCER:
+ case NM_TEAM_ATTRIBUTE_MASTER_RUNNER_AGG_SELECT_POLICY:
+ g_value_set_string (value,
+ nm_team_setting_value_get_string (priv->team_setting,
+ prop_id));
break;
- case PROP_RUNNER:
- g_value_set_string (value, nm_setting_team_get_runner (setting));
- break;
- case PROP_RUNNER_HWADDR_POLICY:
- g_value_set_string (value, nm_setting_team_get_runner_hwaddr_policy (setting));
- break;
- case PROP_RUNNER_TX_HASH:
+ case NM_TEAM_ATTRIBUTE_MASTER_RUNNER_TX_HASH:
+ v_ptrarr = priv->team_setting->d.master.runner_tx_hash;
g_value_take_boxed (value,
- priv->runner_tx_hash
- ? _nm_utils_ptrarray_to_strv (priv->runner_tx_hash)
+ v_ptrarr
+ ? _nm_utils_ptrarray_to_strv ((GPtrArray *) v_ptrarr)
: NULL);
break;
- case PROP_RUNNER_TX_BALANCER:
- g_value_set_string (value, nm_setting_team_get_runner_tx_balancer (setting));
- break;
- case PROP_RUNNER_TX_BALANCER_INTERVAL:
- g_value_set_int (value, priv->runner_tx_balancer_interval);
- break;
- case PROP_RUNNER_ACTIVE:
- g_value_set_boolean (value, nm_setting_team_get_runner_active (setting));
- break;
- case PROP_RUNNER_FAST_RATE:
- g_value_set_boolean (value, nm_setting_team_get_runner_fast_rate (setting));
- break;
- case PROP_RUNNER_SYS_PRIO:
- g_value_set_int (value, priv->runner_sys_prio);
- break;
- case PROP_RUNNER_MIN_PORTS:
- g_value_set_int (value, priv->runner_min_ports);
- break;
- case PROP_RUNNER_AGG_SELECT_POLICY:
- g_value_set_string (value, nm_setting_team_get_runner_agg_select_policy (setting));
- break;
- case PROP_LINK_WATCHERS:
- g_value_take_boxed (value, _nm_utils_copy_array (priv->link_watchers,
+ case NM_TEAM_ATTRIBUTE_LINK_WATCHERS:
+ g_value_take_boxed (value, _nm_utils_copy_array (priv->team_setting->d.link_watchers,
(NMUtilsCopyFunc) _nm_team_link_watcher_ref,
(GDestroyNotify) nm_team_link_watcher_unref));
break;
@@ -1560,141 +1400,56 @@ set_property (GObject *object, guint prop_id,
{
NMSettingTeam *setting = NM_SETTING_TEAM (object);
NMSettingTeamPrivate *priv = NM_SETTING_TEAM_GET_PRIVATE (object);
- const GValue *align_value = NULL;
- gboolean align_config = FALSE;
- char **strv;
+ guint32 changed;
+ const GPtrArray *v_ptrarr;
switch (prop_id) {
- case PROP_CONFIG:
- g_free (priv->config);
- priv->config = g_value_dup_string (value);
- _align_team_properties (setting);
+ case NM_TEAM_ATTRIBUTE_CONFIG:
+ changed = nm_team_setting_config_set (priv->team_setting, g_value_get_string (value));
break;
- case PROP_NOTIFY_PEERS_COUNT:
- if (priv->notify_peers_count == g_value_get_int (value))
- break;
- priv->notify_peers_count = g_value_get_int (value);
- align_value = value;
- align_config = TRUE;
+ case NM_TEAM_ATTRIBUTE_MASTER_RUNNER_ACTIVE:
+ case NM_TEAM_ATTRIBUTE_MASTER_RUNNER_FAST_RATE:
+ changed = nm_team_setting_value_set_bool (priv->team_setting,
+ prop_id,
+ g_value_get_boolean (value));
break;
- case PROP_NOTIFY_PEERS_INTERVAL:
- if (priv->notify_peers_interval == g_value_get_int (value))
- break;
- priv->notify_peers_interval = g_value_get_int (value);
- align_value = value;
- align_config = TRUE;
+ case NM_TEAM_ATTRIBUTE_MASTER_NOTIFY_PEERS_COUNT:
+ case NM_TEAM_ATTRIBUTE_MASTER_NOTIFY_PEERS_INTERVAL:
+ case NM_TEAM_ATTRIBUTE_MASTER_MCAST_REJOIN_COUNT:
+ case NM_TEAM_ATTRIBUTE_MASTER_MCAST_REJOIN_INTERVAL:
+ case NM_TEAM_ATTRIBUTE_MASTER_RUNNER_TX_BALANCER_INTERVAL:
+ case NM_TEAM_ATTRIBUTE_MASTER_RUNNER_SYS_PRIO:
+ case NM_TEAM_ATTRIBUTE_MASTER_RUNNER_MIN_PORTS:
+ changed = nm_team_setting_value_set_int32 (priv->team_setting,
+ prop_id,
+ g_value_get_int (value));
break;
- case PROP_MCAST_REJOIN_COUNT:
- if (priv->mcast_rejoin_count == g_value_get_int (value))
- break;
- priv->mcast_rejoin_count = g_value_get_int (value);
- align_value = value;
- align_config = TRUE;
+ case NM_TEAM_ATTRIBUTE_MASTER_RUNNER:
+ case NM_TEAM_ATTRIBUTE_MASTER_RUNNER_TX_BALANCER:
+ case NM_TEAM_ATTRIBUTE_MASTER_RUNNER_HWADDR_POLICY:
+ case NM_TEAM_ATTRIBUTE_MASTER_RUNNER_AGG_SELECT_POLICY:
+ changed = nm_team_setting_value_set_string (priv->team_setting,
+ prop_id,
+ g_value_get_string (value));
break;
- case PROP_MCAST_REJOIN_INTERVAL:
- if (priv->mcast_rejoin_interval == g_value_get_int (value))
- break;
- priv->mcast_rejoin_interval = g_value_get_int (value);
- align_value = value;
- align_config = TRUE;
+ case NM_TEAM_ATTRIBUTE_MASTER_RUNNER_TX_HASH:
+ v_ptrarr = g_value_get_boxed (value);
+ changed = nm_team_setting_value_master_runner_tx_hash_set_list (priv->team_setting,
+ v_ptrarr ? (const char *const*) v_ptrarr->pdata : NULL,
+ v_ptrarr ? v_ptrarr->len : 0u);
break;
- case PROP_RUNNER:
- if ( !g_value_get_string (value)
- || nm_streq (priv->runner, g_value_get_string (value)))
- break;
- g_free (priv->runner);
- priv->runner = g_value_dup_string (value);
- _nm_utils_json_append_gvalue (&priv->config, _prop_to_keys[prop_id], value);
- _align_team_properties (setting);
- break;
- case PROP_RUNNER_HWADDR_POLICY:
- if (nm_streq0 (priv->runner_hwaddr_policy, g_value_get_string (value)))
- break;
- g_free (priv->runner_hwaddr_policy);
- priv->runner_hwaddr_policy = g_value_dup_string (value);
- align_value = value;
- align_config = TRUE;
- break;
- case PROP_RUNNER_TX_HASH:
- if (priv->runner_tx_hash)
- g_ptr_array_unref (priv->runner_tx_hash);
- strv = g_value_get_boxed (value);
- if (strv && strv[0]) {
- priv->runner_tx_hash = _nm_utils_strv_to_ptrarray (strv);
- align_value = value;
- } else
- priv->runner_tx_hash = NULL;
- align_config = TRUE;
- break;
- case PROP_RUNNER_TX_BALANCER:
- if (nm_streq0 (priv->runner_tx_balancer, g_value_get_string (value)))
- break;
- g_free (priv->runner_tx_balancer);
- priv->runner_tx_balancer = g_value_dup_string (value);
- align_value = value;
- align_config = TRUE;
- break;
- case PROP_RUNNER_TX_BALANCER_INTERVAL:
- if (priv->runner_tx_balancer_interval == g_value_get_int (value))
- break;
- priv->runner_tx_balancer_interval = g_value_get_int (value);
- align_value = value;
- align_config = TRUE;
- break;
- case PROP_RUNNER_ACTIVE:
- if (priv->runner_active == g_value_get_boolean (value))
- break;
- priv->runner_active = g_value_get_boolean (value);
- align_value = value;
- align_config = TRUE;
- break;
- case PROP_RUNNER_FAST_RATE:
- if (priv->runner_fast_rate == g_value_get_boolean (value))
- break;
- priv->runner_fast_rate = g_value_get_boolean (value);
- align_value = value;
- align_config = TRUE;
- break;
- case PROP_RUNNER_SYS_PRIO:
- if (priv->runner_sys_prio == g_value_get_int (value))
- break;
- priv->runner_sys_prio = g_value_get_int (value);
- align_value = value;
- align_config = TRUE;
- break;
- case PROP_RUNNER_MIN_PORTS:
- if (priv->runner_min_ports == g_value_get_int (value))
- break;
- priv->runner_min_ports = g_value_get_int (value);
- align_value = value;
- align_config = TRUE;
- break;
- case PROP_RUNNER_AGG_SELECT_POLICY:
- if (nm_streq0 (priv->runner_agg_select_policy, g_value_get_string (value)))
- break;
- g_free (priv->runner_agg_select_policy);
- priv->runner_agg_select_policy = g_value_dup_string (value);
- align_value = value;
- align_config = TRUE;
- break;
- case PROP_LINK_WATCHERS:
- g_ptr_array_unref (priv->link_watchers);
- priv->link_watchers = _nm_utils_copy_array (g_value_get_boxed (value),
- (NMUtilsCopyFunc) _nm_team_link_watcher_ref,
- (GDestroyNotify) nm_team_link_watcher_unref);
- if (priv->link_watchers->len)
- align_value = value;
- align_config = TRUE;
+ case NM_TEAM_ATTRIBUTE_LINK_WATCHERS:
+ v_ptrarr = g_value_get_boxed (value);
+ changed = nm_team_setting_value_link_watchers_set_list (priv->team_setting,
+ v_ptrarr ? (const NMTeamLinkWatcher *const*) v_ptrarr->pdata : NULL,
+ v_ptrarr ? v_ptrarr->len : 0u);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
+ return;
}
- if (align_config) {
- _nm_utils_json_append_gvalue (&priv->config, _prop_to_keys[prop_id], align_value);
- _align_team_properties (setting);
- }
+ _maybe_changed (setting, changed & ~(((guint32) 1) << prop_id));
}
/*****************************************************************************/
@@ -1704,11 +1459,7 @@ nm_setting_team_init (NMSettingTeam *setting)
{
NMSettingTeamPrivate *priv = NM_SETTING_TEAM_GET_PRIVATE (setting);
- priv->runner = g_strdup (NM_SETTING_TEAM_RUNNER_ROUNDROBIN);
- priv->runner_tx_balancer_interval = -1;
- priv->runner_sys_prio = -1;
- priv->runner_min_ports = -1;
- priv->link_watchers = g_ptr_array_new_with_free_func ((GDestroyNotify) nm_team_link_watcher_unref);
+ priv->team_setting = nm_team_setting_new (FALSE, NULL);
}
/**
@@ -1729,14 +1480,7 @@ finalize (GObject *object)
{
NMSettingTeamPrivate *priv = NM_SETTING_TEAM_GET_PRIVATE (object);
- g_free (priv->config);
- g_free (priv->runner);
- g_free (priv->runner_hwaddr_policy);
- g_free (priv->runner_tx_balancer);
- g_free (priv->runner_agg_select_policy);
- if (priv->runner_tx_hash)
- g_ptr_array_unref (priv->runner_tx_hash);
- g_ptr_array_unref (priv->link_watchers);
+ nm_team_setting_free (priv->team_setting);
G_OBJECT_CLASS (nm_setting_team_parent_class)->finalize (object);
}
@@ -1754,8 +1498,10 @@ nm_setting_team_class_init (NMSettingTeamClass *klass)
object_class->set_property = set_property;
object_class->finalize = finalize;
- setting_class->compare_property = compare_property;
- setting_class->verify = verify;
+ setting_class->compare_property = compare_property;
+ setting_class->verify = verify;
+ setting_class->duplicate_copy_properties = duplicate_copy_properties;
+ setting_class->init_from_dbus = init_from_dbus;
/**
* NMSettingTeam:config:
@@ -1771,7 +1517,7 @@ nm_setting_team_class_init (NMSettingTeamClass *klass)
* description: Team configuration in JSON. See man teamd.conf for details.
* ---end---
*/
- obj_properties[PROP_CONFIG] =
+ obj_properties[NM_TEAM_ATTRIBUTE_CONFIG] =
g_param_spec_string (NM_SETTING_TEAM_CONFIG, "", "",
NULL,
G_PARAM_READWRITE |
@@ -1785,7 +1531,7 @@ nm_setting_team_class_init (NMSettingTeamClass *klass)
*
* Since: 1.12
**/
- obj_properties[PROP_NOTIFY_PEERS_COUNT] =
+ obj_properties[NM_TEAM_ATTRIBUTE_MASTER_NOTIFY_PEERS_COUNT] =
g_param_spec_int (NM_SETTING_TEAM_NOTIFY_PEERS_COUNT, "", "",
G_MININT32, G_MAXINT32, 0,
G_PARAM_READWRITE |
@@ -1798,7 +1544,7 @@ nm_setting_team_class_init (NMSettingTeamClass *klass)
*
* Since: 1.12
**/
- obj_properties[PROP_NOTIFY_PEERS_INTERVAL] =
+ obj_properties[NM_TEAM_ATTRIBUTE_MASTER_NOTIFY_PEERS_INTERVAL] =
g_param_spec_int (NM_SETTING_TEAM_NOTIFY_PEERS_INTERVAL, "", "",
G_MININT32, G_MAXINT32, 0,
G_PARAM_READWRITE |
@@ -1811,7 +1557,7 @@ nm_setting_team_class_init (NMSettingTeamClass *klass)
*
* Since: 1.12
**/
- obj_properties[PROP_MCAST_REJOIN_COUNT] =
+ obj_properties[NM_TEAM_ATTRIBUTE_MASTER_MCAST_REJOIN_COUNT] =
g_param_spec_int (NM_SETTING_TEAM_MCAST_REJOIN_COUNT, "", "",
G_MININT32, G_MAXINT32, 0,
G_PARAM_READWRITE |
@@ -1824,7 +1570,7 @@ nm_setting_team_class_init (NMSettingTeamClass *klass)
*
* Since: 1.12
**/
- obj_properties[PROP_MCAST_REJOIN_INTERVAL] =
+ obj_properties[NM_TEAM_ATTRIBUTE_MASTER_MCAST_REJOIN_INTERVAL] =
g_param_spec_int (NM_SETTING_TEAM_MCAST_REJOIN_INTERVAL, "", "",
G_MININT32, G_MAXINT32, 0,
G_PARAM_READWRITE |
@@ -1836,14 +1582,10 @@ nm_setting_team_class_init (NMSettingTeamClass *klass)
* Corresponds to the teamd runner.name.
* Permitted values are: "roundrobin", "broadcast", "activebackup",
* "loadbalance", "lacp", "random".
- * When setting the runner, all the properties specific to the runner
- * will be reset to the default value; all the properties specific to
- * other runners will be set to an empty value (or if not possible to
- * a default value).
*
* Since: 1.12
**/
- obj_properties[PROP_RUNNER] =
+ obj_properties[NM_TEAM_ATTRIBUTE_MASTER_RUNNER] =
g_param_spec_string (NM_SETTING_TEAM_RUNNER, "", "",
NULL,
G_PARAM_READWRITE |
@@ -1856,7 +1598,7 @@ nm_setting_team_class_init (NMSettingTeamClass *klass)
*
* Since: 1.12
**/
- obj_properties[PROP_RUNNER_HWADDR_POLICY] =
+ obj_properties[NM_TEAM_ATTRIBUTE_MASTER_RUNNER_HWADDR_POLICY] =
g_param_spec_string (NM_SETTING_TEAM_RUNNER_HWADDR_POLICY, "", "",
NULL,
G_PARAM_READWRITE |
@@ -1869,7 +1611,7 @@ nm_setting_team_class_init (NMSettingTeamClass *klass)
*
* Since: 1.12
**/
- obj_properties[PROP_RUNNER_TX_HASH] =
+ obj_properties[NM_TEAM_ATTRIBUTE_MASTER_RUNNER_TX_HASH] =
g_param_spec_boxed (NM_SETTING_TEAM_RUNNER_TX_HASH, "", "",
G_TYPE_STRV,
G_PARAM_READWRITE |
@@ -1883,7 +1625,7 @@ nm_setting_team_class_init (NMSettingTeamClass *klass)
*
* Since: 1.12
**/
- obj_properties[PROP_RUNNER_TX_BALANCER] =
+ obj_properties[NM_TEAM_ATTRIBUTE_MASTER_RUNNER_TX_BALANCER] =
g_param_spec_string (NM_SETTING_TEAM_RUNNER_TX_BALANCER, "", "",
NULL,
G_PARAM_READWRITE |
@@ -1896,7 +1638,7 @@ nm_setting_team_class_init (NMSettingTeamClass *klass)
*
* Since: 1.12
**/
- obj_properties[PROP_RUNNER_TX_BALANCER_INTERVAL] =
+ obj_properties[NM_TEAM_ATTRIBUTE_MASTER_RUNNER_TX_BALANCER_INTERVAL] =
g_param_spec_int (NM_SETTING_TEAM_RUNNER_TX_BALANCER_INTERVAL, "", "",
G_MININT32, G_MAXINT32, 0,
G_PARAM_READWRITE |
@@ -1909,7 +1651,7 @@ nm_setting_team_class_init (NMSettingTeamClass *klass)
*
* Since: 1.12
**/
- obj_properties[PROP_RUNNER_ACTIVE] =
+ obj_properties[NM_TEAM_ATTRIBUTE_MASTER_RUNNER_ACTIVE] =
g_param_spec_boolean (NM_SETTING_TEAM_RUNNER_ACTIVE, "", "",
FALSE,
G_PARAM_READWRITE |
@@ -1922,7 +1664,7 @@ nm_setting_team_class_init (NMSettingTeamClass *klass)
*
* Since: 1.12
**/
- obj_properties[PROP_RUNNER_FAST_RATE] =
+ obj_properties[NM_TEAM_ATTRIBUTE_MASTER_RUNNER_FAST_RATE] =
g_param_spec_boolean (NM_SETTING_TEAM_RUNNER_FAST_RATE, "", "",
FALSE,
G_PARAM_READWRITE |
@@ -1935,7 +1677,7 @@ nm_setting_team_class_init (NMSettingTeamClass *klass)
*
* Since: 1.12
**/
- obj_properties[PROP_RUNNER_SYS_PRIO] =
+ obj_properties[NM_TEAM_ATTRIBUTE_MASTER_RUNNER_SYS_PRIO] =
g_param_spec_int (NM_SETTING_TEAM_RUNNER_SYS_PRIO, "", "",
G_MININT32, G_MAXINT32, 0,
G_PARAM_READWRITE |
@@ -1948,7 +1690,7 @@ nm_setting_team_class_init (NMSettingTeamClass *klass)
*
* Since: 1.12
**/
- obj_properties[PROP_RUNNER_MIN_PORTS] =
+ obj_properties[NM_TEAM_ATTRIBUTE_MASTER_RUNNER_MIN_PORTS] =
g_param_spec_int (NM_SETTING_TEAM_RUNNER_MIN_PORTS, "", "",
G_MININT32, G_MAXINT32, 0,
G_PARAM_READWRITE |
@@ -1961,7 +1703,7 @@ nm_setting_team_class_init (NMSettingTeamClass *klass)
*
* Since: 1.12
**/
- obj_properties[PROP_RUNNER_AGG_SELECT_POLICY] =
+ obj_properties[NM_TEAM_ATTRIBUTE_MASTER_RUNNER_AGG_SELECT_POLICY] =
g_param_spec_string (NM_SETTING_TEAM_RUNNER_AGG_SELECT_POLICY, "", "",
NULL,
G_PARAM_READWRITE |
@@ -1981,14 +1723,14 @@ nm_setting_team_class_init (NMSettingTeamClass *klass)
*
* Since: 1.12
**/
- obj_properties[PROP_LINK_WATCHERS] =
+ obj_properties[NM_TEAM_ATTRIBUTE_LINK_WATCHERS] =
g_param_spec_boxed (NM_SETTING_TEAM_LINK_WATCHERS, "", "",
G_TYPE_PTR_ARRAY,
G_PARAM_READWRITE |
G_PARAM_STATIC_STRINGS);
_properties_override_add_transform (properties_override,
- obj_properties[PROP_LINK_WATCHERS],
+ obj_properties[NM_TEAM_ATTRIBUTE_LINK_WATCHERS],
G_VARIANT_TYPE ("aa{sv}"),
team_link_watchers_to_dbus,
team_link_watchers_from_dbus);
@@ -2007,7 +1749,7 @@ nm_setting_team_class_init (NMSettingTeamClass *klass)
_nm_setting_get_deprecated_virtual_interface_name,
NULL);
- g_object_class_install_properties (object_class, _PROPERTY_ENUMS_LAST, obj_properties);
+ g_object_class_install_properties (object_class, G_N_ELEMENTS (obj_properties), obj_properties);
_nm_setting_class_commit_full (setting_class, NM_META_SETTING_TYPE_TEAM,
NULL, properties_override);