summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrancesco Giudici <fgiudici@redhat.com>2017-10-12 12:02:06 +0200
committerFrancesco Giudici <fgiudici@redhat.com>2017-11-09 17:56:15 +0100
commit9715969b77300f47478b58482375dcd07dba1e85 (patch)
treef15c3bfce51f681fbd707d20c6141bdd3c03e9b5
parentb4c9bcd49f4b961b7065965bf69dfd5b43a27061 (diff)
downloadNetworkManager-9715969b77300f47478b58482375dcd07dba1e85.tar.gz
libnm-core: add explicit team properties to NMSettingTeam
-rw-r--r--clients/common/settings-docs.c.in14
-rw-r--r--libnm-core/nm-setting-team.c656
-rw-r--r--libnm-core/nm-setting-team.h59
-rw-r--r--libnm/libnm.ver18
4 files changed, 745 insertions, 2 deletions
diff --git a/clients/common/settings-docs.c.in b/clients/common/settings-docs.c.in
index 3547c833a7..c83ed9c8d5 100644
--- a/clients/common/settings-docs.c.in
+++ b/clients/common/settings-docs.c.in
@@ -316,7 +316,21 @@
#define DESCRIBE_DOC_NM_SETTING_SERIAL_SEND_DELAY N_("Time to delay between each byte sent to the modem, in microseconds.")
#define DESCRIBE_DOC_NM_SETTING_SERIAL_STOPBITS N_("Number of stop bits for communication on the serial port. Either 1 or 2. The 1 in \"8n1\" for example.")
#define DESCRIBE_DOC_NM_SETTING_TEAM_CONFIG N_("The JSON configuration for the team network interface. The property should contain raw JSON configuration data suitable for teamd, because the value is passed directly to teamd. If not specified, the default configuration is used. See man teamd.conf for the format details.")
+#define DESCRIBE_DOC_NM_SETTING_TEAM_MCAST_REJOIN_COUNT N_("Corresponds to the teamd mcast_rejoin.count.")
+#define DESCRIBE_DOC_NM_SETTING_TEAM_MCAST_REJOIN_INTERVAL N_("Corresponds to the teamd mcast_rejoin.interval.")
#define DESCRIBE_DOC_NM_SETTING_TEAM_NAME N_("The setting's name, which uniquely identifies the setting within the connection. Each setting type has a name unique to that type, for example \"ppp\" or \"wireless\" or \"wired\".")
+#define DESCRIBE_DOC_NM_SETTING_TEAM_NOTIFY_PEERS_COUNT N_("Corresponds to the teamd notify_peers.count.")
+#define DESCRIBE_DOC_NM_SETTING_TEAM_NOTIFY_PEERS_INTERVAL N_("Corresponds to the teamd notify_peers.interval.")
+#define DESCRIBE_DOC_NM_SETTING_TEAM_RUNNER N_("Corresponds to the teamd runner.name. Permitted values are: \"roundrobin\", \"broadcast\", \"activebackup\", \"loadbalance\", \"lacp\".")
+#define DESCRIBE_DOC_NM_SETTING_TEAM_RUNNER_ACTIVE N_("Corresponds to the teamd runner.active.")
+#define DESCRIBE_DOC_NM_SETTING_TEAM_RUNNER_AGG_SELECT_POLICY N_("Corresponds to the teamd runner.agg_select_policy.")
+#define DESCRIBE_DOC_NM_SETTING_TEAM_RUNNER_FAST_RATE N_("Corresponds to the teamd runner.fast_rate.")
+#define DESCRIBE_DOC_NM_SETTING_TEAM_RUNNER_HWADDR_POLICY N_("Corresponds to the teamd runner.hwaddr_policy.")
+#define DESCRIBE_DOC_NM_SETTING_TEAM_RUNNER_MIN_PORTS N_("Corresponds to the teamd runner.min_ports.")
+#define DESCRIBE_DOC_NM_SETTING_TEAM_RUNNER_SYS_PRIO N_("Corresponds to the teamd runner.sys_prio.")
+#define DESCRIBE_DOC_NM_SETTING_TEAM_RUNNER_TX_BALANCER N_("Corresponds to the teamd runner.tx_balancer.name.")
+#define DESCRIBE_DOC_NM_SETTING_TEAM_RUNNER_TX_BALANCER_INTERVAL N_("Corresponds to the teamd runner.tx_balancer.interval.")
+#define DESCRIBE_DOC_NM_SETTING_TEAM_RUNNER_TX_HASH N_("Corresponds to the teamd runner.tx_hash.")
#define DESCRIBE_DOC_NM_SETTING_TEAM_PORT_CONFIG N_("The JSON configuration for the team port. The property should contain raw JSON configuration data suitable for teamd, because the value is passed directly to teamd. If not specified, the default configuration is used. See man teamd.conf for the format details.")
#define DESCRIBE_DOC_NM_SETTING_TEAM_PORT_NAME N_("The setting's name, which uniquely identifies the setting within the connection. Each setting type has a name unique to that type, for example \"ppp\" or \"wireless\" or \"wired\".")
#define DESCRIBE_DOC_NM_SETTING_TUN_GROUP N_("The group ID which will own the device. If set to NULL everyone will be able to use the device.")
diff --git a/libnm-core/nm-setting-team.c b/libnm-core/nm-setting-team.c
index 0a09c4a677..9312fc21cc 100644
--- a/libnm-core/nm-setting-team.c
+++ b/libnm-core/nm-setting-team.c
@@ -44,11 +44,39 @@ NM_SETTING_REGISTER_TYPE (NM_TYPE_SETTING_TEAM)
typedef struct {
char *config;
+ gint notify_peers_count;
+ gint notify_peers_interval;
+ gint mcast_rejoin_count;
+ gint mcast_rejoin_interval;
+ char *runner;
+ char *runner_hwaddr_policy;
+ GPtrArray *runner_tx_hash;
+ char *runner_tx_balancer;
+ gint runner_tx_balancer_interval;
+ gboolean runner_active;
+ gboolean runner_fast_rate;
+ gint runner_sys_prio;
+ gint runner_min_ports;
+ char *runner_agg_select_policy;
} NMSettingTeamPrivate;
enum {
PROP_0,
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,
LAST_PROP
};
@@ -79,6 +107,339 @@ nm_setting_team_get_config (NMSettingTeam *setting)
return NM_SETTING_TEAM_GET_PRIVATE (setting)->config;
}
+/**
+ * nm_setting_team_get_notify_peers_count:
+ * @setting: the #NMSettingTeam
+ *
+ * Returns: the ##NMSettingTeam:notify-peers-count property of the setting
+ *
+ * Since 1.12
+ **/
+gint
+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;
+}
+
+/**
+ * nm_setting_team_get_notify_peers_interval:
+ * @setting: the #NMSettingTeam
+ *
+ * Returns: the ##NMSettingTeam:notify-peers-interval property of the setting
+ *
+ * Since 1.12
+ **/
+gint
+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;
+}
+
+/**
+ * nm_setting_team_get_mcast_rejoin_count:
+ * @setting: the #NMSettingTeam
+ *
+ * Returns: the ##NMSettingTeam:mcast-rejoin-count property of the setting
+ *
+ * Since 1.12
+ **/
+gint
+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;
+}
+
+/**
+ * nm_setting_team_get_mcast_rejoin_interval:
+ * @setting: the #NMSettingTeam
+ *
+ * Returns: the ##NMSettingTeam:mcast-rejoin-interval property of the setting
+ *
+ * Since 1.12
+ **/
+gint
+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;
+}
+
+/**
+ * nm_setting_team_get_runner:
+ * @setting: the #NMSettingTeam
+ *
+ * Returns: the ##NMSettingTeam:runner property of the setting
+ *
+ * Since 1.12
+ **/
+const char *
+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;
+}
+
+/**
+ * nm_setting_team_get_runner_hwaddr_policy:
+ * @setting: the #NMSettingTeam
+ *
+ * Returns: the ##NMSettingTeam:runner-hwaddr-policy property of the setting
+ *
+ * Since 1.12
+ **/
+const char *
+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;
+}
+
+/**
+ * nm_setting_team_get_runner_tx_balancer:
+ * @setting: the #NMSettingTeam
+ *
+ * Returns: the ##NMSettingTeam:runner-tx-balancer property of the setting
+ *
+ * Since 1.12
+ **/
+const char *
+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;
+}
+
+/**
+ * nm_setting_team_get_runner_tx_balancer_interval:
+ * @setting: the #NMSettingTeam
+ *
+ * Returns: the ##NMSettingTeam:runner-tx-balancer_interval property of the setting
+ *
+ * Since 1.12
+ **/
+gint
+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;
+}
+
+/**
+ * nm_setting_team_get_runner_active:
+ * @setting: the #NMSettingTeam
+ *
+ * Returns: the ##NMSettingTeam:runner_active property of the setting
+ *
+ * Since 1.12
+ **/
+gboolean
+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;
+}
+
+/**
+ * nm_setting_team_get_runner_fast_rate:
+ * @setting: the #NMSettingTeam
+ *
+ * Returns: the ##NMSettingTeam:runner-fast-rate property of the setting
+ *
+ * Since 1.12
+ **/
+gboolean
+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;
+}
+
+/**
+ * nm_setting_team_get_runner_sys_prio:
+ * @setting: the #NMSettingTeam
+ *
+ * Returns: the ##NMSettingTeam:runner-sys-prio property of the setting
+ *
+ * Since 1.12
+ **/
+gint
+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;
+}
+
+/**
+ * nm_setting_team_get_runner_min_ports:
+ * @setting: the #NMSettingTeam
+ *
+ * Returns: the ##NMSettingTeam:runner-min-ports property of the setting
+ *
+ * Since 1.12
+ **/
+gint
+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;
+}
+
+/**
+ * nm_setting_team_get_runner_agg_select_policy:
+ * @setting: the #NMSettingTeam
+ *
+ * Returns: the ##NMSettingTeam:runner-agg-select-policy property of the setting
+ *
+ * Since 1.12
+ **/
+const char *
+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;
+}
+
+/**
+ * nm_setting_team_remove_runner_tx_hash_by_value:
+ * @setting: the #NMSetetingTeam
+ * @txhash: the txhash element to remove
+ *
+ * Removes the txhash element #txhash
+ *
+ * Returns: %TRUE if the txhash element was found and removed; %FALSE if it was not.
+ *
+ * Since 1.12
+ **/
+gboolean
+nm_setting_team_remove_runner_tx_hash_by_value (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);
+
+ 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);
+ g_object_notify (G_OBJECT (setting), NM_SETTING_TEAM_RUNNER_TX_HASH);
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+/**
+ * nm_setting_team_get_num_runner_tx_hash:
+ * @setting: the #NMSettingTeam
+ *
+ * Returns: the number of elements in txhash
+ *
+ * Since: 1.12
+ **/
+guint
+nm_setting_team_get_num_runner_tx_hash (NMSettingTeam *setting)
+{
+ NMSettingTeamPrivate *priv = NM_SETTING_TEAM_GET_PRIVATE (setting);
+
+ g_return_val_if_fail (NM_IS_SETTING_TEAM (setting), 0);
+
+ return priv->runner_tx_hash ? priv->runner_tx_hash->len : 0;
+}
+
+/**
+ * nm_setting_team_get_runner_tx_hash
+ * @setting: the #NMSettingTeam
+ * @idx: index number of the txhash element to return
+ *
+ * Returns: the txhash element at index @idx
+ *
+ * Since 1.12
+ **/
+const char *
+nm_setting_team_get_runner_tx_hash (NMSettingTeam *setting, int idx)
+{
+ NMSettingTeamPrivate *priv = NM_SETTING_TEAM_GET_PRIVATE (setting);
+
+ g_return_val_if_fail (NM_IS_SETTING_TEAM (setting), NULL);
+ g_return_val_if_fail (idx >= 0 && idx < priv->runner_tx_hash->len, NULL);
+
+ return priv->runner_tx_hash->pdata[idx];
+}
+
+/**
+ * nm_setting_team_remove_runner_tx_hash:
+ * @setting: the #NMSettingTeam
+ * @idx: index number of the element to remove from txhash
+ *
+ * Removes the txhash element at index @idx.
+ *
+ * Since 1.12
+ **/
+void
+nm_setting_team_remove_runner_tx_hash (NMSettingTeam *setting, int idx)
+{
+ NMSettingTeamPrivate *priv = NM_SETTING_TEAM_GET_PRIVATE (setting);
+
+ g_return_if_fail (NM_IS_SETTING_TEAM (setting));
+ g_return_if_fail (idx >= 0 && idx < priv->runner_tx_hash->len);
+
+ g_ptr_array_remove_index (priv->runner_tx_hash, idx);
+ g_object_notify (G_OBJECT (setting), NM_SETTING_TEAM_RUNNER_TX_HASH);
+}
+
+/**
+ * nm_setting_team_add_runner_tx_hash:
+ * @setting: the #NMSettingTeam
+ * @txhash: the element to add to txhash
+ *
+ * Adds a new txhash element to the setting.
+ *
+ * Returns: %TRUE if the txhash element was added; %FALSE if the element
+ * was already knnown.
+ *
+ * Since 1.12
+ **/
+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);
+
+ 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));
+ g_object_notify (G_OBJECT (setting), NM_SETTING_TEAM_RUNNER_TX_HASH);
+ return TRUE;
+}
+
static gboolean
verify (NMSetting *setting, NMConnection *connection, GError **error)
{
@@ -108,6 +469,19 @@ verify (NMSetting *setting, NMConnection *connection, GError **error)
}
}
+ 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_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);
+ return FALSE;
+ }
+
/* NOTE: normalizable/normalizable-errors must appear at the end with decreasing severity.
* Take care to properly order statements with priv->config above. */
@@ -142,6 +516,10 @@ compare_property (NMSetting *setting,
static void
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_hash = g_ptr_array_new_with_free_func (g_free);
}
static void
@@ -150,6 +528,11 @@ 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);
+ g_ptr_array_unref (priv->runner_tx_hash);
G_OBJECT_CLASS (nm_setting_team_parent_class)->finalize (object);
}
@@ -165,6 +548,36 @@ set_property (GObject *object, guint prop_id,
g_free (priv->config);
priv->config = g_value_dup_string (value);
break;
+ case PROP_NOTIFY_PEERS_COUNT:
+ break;
+ case PROP_NOTIFY_PEERS_INTERVAL:
+ break;
+ case PROP_MCAST_REJOIN_COUNT:
+ break;
+ case PROP_MCAST_REJOIN_INTERVAL:
+ break;
+ case PROP_RUNNER:
+ g_free (priv->runner);
+ priv->runner = g_value_dup_string (value);
+ break;
+ case PROP_RUNNER_HWADDR_POLICY:
+ break;
+ case PROP_RUNNER_TX_HASH:
+ break;
+ case PROP_RUNNER_TX_BALANCER:
+ break;
+ case PROP_RUNNER_TX_BALANCER_INTERVAL:
+ break;
+ case PROP_RUNNER_ACTIVE:
+ break;
+ case PROP_RUNNER_FAST_RATE:
+ break;
+ case PROP_RUNNER_SYS_PRIO:
+ break;
+ case PROP_RUNNER_MIN_PORTS:
+ break;
+ case PROP_RUNNER_AGG_SELECT_POLICY:
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -176,11 +589,55 @@ get_property (GObject *object, guint prop_id,
GValue *value, GParamSpec *pspec)
{
NMSettingTeam *setting = NM_SETTING_TEAM (object);
+ NMSettingTeamPrivate *priv = NM_SETTING_TEAM_GET_PRIVATE (setting);
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);
+ break;
+ case PROP_NOTIFY_PEERS_INTERVAL:
+ g_value_set_int (value, priv->notify_peers_interval);
+ break;
+ case PROP_MCAST_REJOIN_COUNT:
+ g_value_set_int (value, priv->mcast_rejoin_count);
+ break;
+ case PROP_MCAST_REJOIN_INTERVAL:
+ g_value_set_int (value, priv->mcast_rejoin_interval);
+ 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:
+ g_value_take_boxed (value, priv->runner_tx_hash ?
+ _nm_utils_ptrarray_to_strv (priv->runner_tx_hash): 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;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -225,6 +682,205 @@ nm_setting_team_class_init (NMSettingTeamClass *setting_class)
NM_SETTING_PARAM_INFERRABLE |
G_PARAM_STATIC_STRINGS));
+ /**
+ * NMSettingTeam:notify-peers-count:
+ *
+ * Corresponds to the teamd notify_peers.count.
+ *
+ * Since: 1.12
+ **/
+ g_object_class_install_property
+ (object_class, PROP_NOTIFY_PEERS_COUNT,
+ g_param_spec_int (NM_SETTING_TEAM_NOTIFY_PEERS_COUNT, "", "",
+ G_MININT32, G_MAXINT32, 0,
+ G_PARAM_READWRITE |
+ G_PARAM_STATIC_STRINGS));
+
+ /**
+ * NMSettingTeam:notify-peers-interval:
+ *
+ * Corresponds to the teamd notify_peers.interval.
+ *
+ * Since: 1.12
+ **/
+ g_object_class_install_property
+ (object_class, PROP_NOTIFY_PEERS_INTERVAL,
+ g_param_spec_int (NM_SETTING_TEAM_NOTIFY_PEERS_INTERVAL, "", "",
+ G_MININT32, G_MAXINT32, 0,
+ G_PARAM_READWRITE |
+ G_PARAM_STATIC_STRINGS));
+
+ /**
+ * NMSettingTeam:mcast-rejoin-count:
+ *
+ * Corresponds to the teamd mcast_rejoin.count.
+ *
+ * Since: 1.12
+ **/
+ g_object_class_install_property
+ (object_class, PROP_MCAST_REJOIN_COUNT,
+ g_param_spec_int (NM_SETTING_TEAM_MCAST_REJOIN_COUNT, "", "",
+ G_MININT32, G_MAXINT32, 0,
+ G_PARAM_READWRITE |
+ G_PARAM_STATIC_STRINGS));
+
+ /**
+ * NMSettingTeam:mcast-rejoin-interval:
+ *
+ * Corresponds to the teamd mcast_rejoin.interval.
+ *
+ * Since: 1.12
+ **/
+ g_object_class_install_property
+ (object_class, PROP_MCAST_REJOIN_INTERVAL,
+ g_param_spec_int (NM_SETTING_TEAM_MCAST_REJOIN_INTERVAL, "", "",
+ G_MININT32, G_MAXINT32, 0,
+ G_PARAM_READWRITE |
+ G_PARAM_STATIC_STRINGS));
+
+ /**
+ * NMSettingTeam:runner:
+ *
+ * Corresponds to the teamd runner.name.
+ * Permitted values are: "roundrobin", "broadcast", "activebackup",
+ * "loadbalance", "lacp".
+ *
+ * Since: 1.12
+ **/
+ g_object_class_install_property
+ (object_class, PROP_RUNNER,
+ g_param_spec_string (NM_SETTING_TEAM_RUNNER, "", "",
+ NULL,
+ G_PARAM_READWRITE |
+ G_PARAM_STATIC_STRINGS));
+
+ /**
+ * NMSettingTeam:runner-hwaddr-policy:
+ *
+ * Corresponds to the teamd runner.hwaddr_policy.
+ *
+ * Since: 1.12
+ **/
+ g_object_class_install_property
+ (object_class, PROP_RUNNER_HWADDR_POLICY,
+ g_param_spec_string (NM_SETTING_TEAM_RUNNER_HWADDR_POLICY, "", "",
+ NULL,
+ G_PARAM_READWRITE |
+ G_PARAM_STATIC_STRINGS));
+
+ /**
+ * NMSettingTeam:runner-tx-hash:
+ *
+ * Corresponds to the teamd runner.tx_hash.
+ *
+ * Since: 1.12
+ **/
+ g_object_class_install_property
+ (object_class, PROP_RUNNER_TX_HASH,
+ g_param_spec_boxed (NM_SETTING_TEAM_RUNNER_TX_HASH, "", "",
+ G_TYPE_STRV,
+ G_PARAM_READWRITE |
+ NM_SETTING_PARAM_INFERRABLE |
+ G_PARAM_STATIC_STRINGS));
+
+ /**
+ * NMSettingTeam:runner-tx-balancer:
+ *
+ * Corresponds to the teamd runner.tx_balancer.name.
+ *
+ * Since: 1.12
+ **/
+ g_object_class_install_property
+ (object_class, PROP_RUNNER_TX_BALANCER,
+ g_param_spec_string (NM_SETTING_TEAM_RUNNER_TX_BALANCER, "", "",
+ NULL,
+ G_PARAM_READWRITE |
+ G_PARAM_STATIC_STRINGS));
+
+ /**
+ * NMSettingTeam:runner-tx-balancer-interval:
+ *
+ * Corresponds to the teamd runner.tx_balancer.interval.
+ *
+ * Since: 1.12
+ **/
+ g_object_class_install_property
+ (object_class, PROP_RUNNER_TX_BALANCER_INTERVAL,
+ g_param_spec_int (NM_SETTING_TEAM_RUNNER_TX_BALANCER_INTERVAL, "", "",
+ G_MININT32, G_MAXINT32, 0,
+ G_PARAM_READWRITE |
+ G_PARAM_STATIC_STRINGS));
+
+ /**
+ * NMSettingTeam:runner-active:
+ *
+ * Corresponds to the teamd runner.active.
+ *
+ * Since: 1.12
+ **/
+ g_object_class_install_property
+ (object_class, PROP_RUNNER_ACTIVE,
+ g_param_spec_boolean (NM_SETTING_TEAM_RUNNER_ACTIVE, "", "",
+ FALSE,
+ G_PARAM_READWRITE |
+ G_PARAM_STATIC_STRINGS));
+
+ /**
+ * NMSettingTeam:runner-fast-rate:
+ *
+ * Corresponds to the teamd runner.fast_rate.
+ *
+ * Since: 1.12
+ **/
+ g_object_class_install_property
+ (object_class, PROP_RUNNER_FAST_RATE,
+ g_param_spec_boolean (NM_SETTING_TEAM_RUNNER_FAST_RATE, "", "",
+ FALSE,
+ G_PARAM_READWRITE |
+ G_PARAM_STATIC_STRINGS));
+
+ /**
+ * NMSettingTeam:runner-sys-prio:
+ *
+ * Corresponds to the teamd runner.sys_prio.
+ *
+ * Since: 1.12
+ **/
+ g_object_class_install_property
+ (object_class, PROP_RUNNER_SYS_PRIO,
+ g_param_spec_int (NM_SETTING_TEAM_RUNNER_SYS_PRIO, "", "",
+ G_MININT32, G_MAXINT32, 0,
+ G_PARAM_READWRITE |
+ G_PARAM_STATIC_STRINGS));
+
+ /**
+ * NMSettingTeam:runner-min-ports:
+ *
+ * Corresponds to the teamd runner.min_ports.
+ *
+ * Since: 1.12
+ **/
+ g_object_class_install_property
+ (object_class, PROP_RUNNER_MIN_PORTS,
+ g_param_spec_int (NM_SETTING_TEAM_RUNNER_MIN_PORTS, "", "",
+ G_MININT32, G_MAXINT32, 0,
+ G_PARAM_READWRITE |
+ G_PARAM_STATIC_STRINGS));
+
+ /**
+ * NMSettingTeam:runner-agg-select-policy:
+ *
+ * Corresponds to the teamd runner.agg_select_policy.
+ *
+ * Since: 1.12
+ **/
+ g_object_class_install_property
+ (object_class, PROP_RUNNER_AGG_SELECT_POLICY,
+ g_param_spec_string (NM_SETTING_TEAM_RUNNER_AGG_SELECT_POLICY, "", "",
+ NULL,
+ G_PARAM_READWRITE |
+ G_PARAM_STATIC_STRINGS));
+
/* ---dbus---
* property: interface-name
* format: string
diff --git a/libnm-core/nm-setting-team.h b/libnm-core/nm-setting-team.h
index 532963aacb..254dd29348 100644
--- a/libnm-core/nm-setting-team.h
+++ b/libnm-core/nm-setting-team.h
@@ -38,7 +38,27 @@ G_BEGIN_DECLS
#define NM_SETTING_TEAM_SETTING_NAME "team"
-#define NM_SETTING_TEAM_CONFIG "config"
+#define NM_SETTING_TEAM_CONFIG "config"
+#define NM_SETTING_TEAM_NOTIFY_PEERS_COUNT "notify-peers-count"
+#define NM_SETTING_TEAM_NOTIFY_PEERS_INTERVAL "notify-peers-interval"
+#define NM_SETTING_TEAM_MCAST_REJOIN_COUNT "mcast-rejoin-count"
+#define NM_SETTING_TEAM_MCAST_REJOIN_INTERVAL "mcast-rejoin-interval"
+#define NM_SETTING_TEAM_RUNNER "runner"
+#define NM_SETTING_TEAM_RUNNER_HWADDR_POLICY "runner-hwaddr-policy"
+#define NM_SETTING_TEAM_RUNNER_TX_HASH "runner-tx-hash"
+#define NM_SETTING_TEAM_RUNNER_TX_BALANCER "runner-tx-balancer"
+#define NM_SETTING_TEAM_RUNNER_TX_BALANCER_INTERVAL "runner-tx-balancer-interval"
+#define NM_SETTING_TEAM_RUNNER_ACTIVE "runner-active"
+#define NM_SETTING_TEAM_RUNNER_FAST_RATE "runner-fast-rate"
+#define NM_SETTING_TEAM_RUNNER_SYS_PRIO "runner-sys-prio"
+#define NM_SETTING_TEAM_RUNNER_MIN_PORTS "runner-min-ports"
+#define NM_SETTING_TEAM_RUNNER_AGG_SELECT_POLICY "runner-agg-select-policy"
+
+#define NM_SETTING_TEAM_RUNNER_BROADCAST "broadcast"
+#define NM_SETTING_TEAM_RUNNER_ROUNDROBIN "roundrobin"
+#define NM_SETTING_TEAM_RUNNER_ACTIVEBACKUP "activebackup"
+#define NM_SETTING_TEAM_RUNNER_LOADBALANCE "loadbalance"
+#define NM_SETTING_TEAM_RUNNER_LACP "lacp"
/**
* NMSettingTeam:
@@ -61,7 +81,42 @@ GType nm_setting_team_get_type (void);
NMSetting * nm_setting_team_new (void);
const char * nm_setting_team_get_config (NMSettingTeam *setting);
-
+NM_AVAILABLE_IN_1_12
+gint nm_setting_team_get_notify_peers_count (NMSettingTeam *setting);
+NM_AVAILABLE_IN_1_12
+gint nm_setting_team_get_notify_peers_interval (NMSettingTeam *setting);
+NM_AVAILABLE_IN_1_12
+gint nm_setting_team_get_mcast_rejoin_count (NMSettingTeam *setting);
+NM_AVAILABLE_IN_1_12
+gint nm_setting_team_get_mcast_rejoin_interval (NMSettingTeam *setting);
+NM_AVAILABLE_IN_1_12
+const char * nm_setting_team_get_runner (NMSettingTeam *setting);
+NM_AVAILABLE_IN_1_12
+const char * nm_setting_team_get_runner_hwaddr_policy (NMSettingTeam *setting);
+NM_AVAILABLE_IN_1_12
+const char * nm_setting_team_get_runner_tx_balancer (NMSettingTeam *setting);
+NM_AVAILABLE_IN_1_12
+gint nm_setting_team_get_runner_tx_balancer_interval (NMSettingTeam *setting);
+NM_AVAILABLE_IN_1_12
+gboolean nm_setting_team_get_runner_active (NMSettingTeam *setting);
+NM_AVAILABLE_IN_1_12
+gboolean nm_setting_team_get_runner_fast_rate (NMSettingTeam *setting);
+NM_AVAILABLE_IN_1_12
+gint nm_setting_team_get_runner_sys_prio (NMSettingTeam *setting);
+NM_AVAILABLE_IN_1_12
+gint nm_setting_team_get_runner_min_ports (NMSettingTeam *setting);
+NM_AVAILABLE_IN_1_12
+const char * nm_setting_team_get_runner_agg_select_policy (NMSettingTeam *setting);
+NM_AVAILABLE_IN_1_12
+gboolean nm_setting_team_remove_runner_tx_hash_by_value (NMSettingTeam *setting, const char *txhash);
+NM_AVAILABLE_IN_1_12
+guint nm_setting_team_get_num_runner_tx_hash (NMSettingTeam *setting);
+NM_AVAILABLE_IN_1_12
+const char *nm_setting_team_get_runner_tx_hash (NMSettingTeam *setting, int idx);
+NM_AVAILABLE_IN_1_12
+void nm_setting_team_remove_runner_tx_hash (NMSettingTeam *setting, int idx);
+NM_AVAILABLE_IN_1_12
+gboolean nm_setting_team_add_runner_tx_hash (NMSettingTeam *setting, const char *txhash);
G_END_DECLS
#endif /* __NM_SETTING_TEAM_H__ */
diff --git a/libnm/libnm.ver b/libnm/libnm.ver
index 7b234ca762..3724c655ae 100644
--- a/libnm/libnm.ver
+++ b/libnm/libnm.ver
@@ -1235,4 +1235,22 @@ global:
nm_client_checkpoint_rollback_async;
nm_client_checkpoint_rollback_finish;
nm_client_get_checkpoints;
+ nm_setting_team_add_runner_tx_hash;
+ nm_setting_team_get_mcast_rejoin_count;
+ nm_setting_team_get_mcast_rejoin_interval;
+ nm_setting_team_get_notify_peers_count;
+ nm_setting_team_get_notify_peers_interval;
+ nm_setting_team_get_num_runner_tx_hash;
+ nm_setting_team_get_runner;
+ nm_setting_team_get_runner_hwaddr_policy;
+ nm_setting_team_get_runner_tx_balancer;
+ nm_setting_team_get_runner_tx_balancer_interval;
+ nm_setting_team_get_runner_tx_hash;
+ nm_setting_team_get_runner_active;
+ nm_setting_team_get_runner_fast_rate;
+ nm_setting_team_get_runner_sys_prio;
+ nm_setting_team_get_runner_min_ports;
+ nm_setting_team_get_runner_agg_select_policy;
+ nm_setting_team_remove_runner_tx_hash;
+ nm_setting_team_remove_runner_tx_hash_by_value;
} libnm_1_10_0;