summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAntonio Cardace <acardace@redhat.com>2020-04-21 17:35:51 +0200
committerAntonio Cardace <acardace@redhat.com>2020-05-04 12:44:37 +0200
commit39cb559c9b89297c94628b956b22c7aa72ce805f (patch)
tree22db3e30f9f59e7458ed874ef15a166ea29460af
parentd2a0cd300ff4ecaff10ecec46053b2763813dc66 (diff)
downloadNetworkManager-ac/bridge_options_2.tar.gz
nm-setting-bridge: add 'multicast-startup-query-interval' bridge optionac/bridge_options_2
https://bugzilla.redhat.com/show_bug.cgi?id=1755768
-rw-r--r--clients/common/nm-meta-setting-desc.c4
-rw-r--r--clients/common/settings-docs.h.in1
-rw-r--r--libnm-core/nm-setting-bridge.c48
-rw-r--r--libnm-core/nm-setting-bridge.h4
-rw-r--r--libnm/libnm.ver1
-rw-r--r--src/devices/nm-device-bridge.c4
-rw-r--r--src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-reader.c1
-rw-r--r--src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-writer.c7
8 files changed, 70 insertions, 0 deletions
diff --git a/clients/common/nm-meta-setting-desc.c b/clients/common/nm-meta-setting-desc.c
index 9c4dfb0bc4..d2082fdaee 100644
--- a/clients/common/nm-meta-setting-desc.c
+++ b/clients/common/nm-meta-setting-desc.c
@@ -4985,6 +4985,10 @@ static const NMMetaPropertyInfo *const property_infos_BRIDGE[] = {
.property_type = &_pt_gobject_int,
.hide_if_default = TRUE,
),
+ PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_MULTICAST_STARTUP_QUERY_INTERVAL,
+ .property_type = &_pt_gobject_int,
+ .hide_if_default = TRUE,
+ ),
PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_MULTICAST_ROUTER,
.property_type = &_pt_gobject_string,
.hide_if_default = TRUE,
diff --git a/clients/common/settings-docs.h.in b/clients/common/settings-docs.h.in
index eff2c94f02..8b3c964919 100644
--- a/clients/common/settings-docs.h.in
+++ b/clients/common/settings-docs.h.in
@@ -131,6 +131,7 @@
#define DESCRIBE_DOC_NM_SETTING_BRIDGE_MULTICAST_ROUTER N_("Sets bridge's multicast router. multicast-snooping must be enabled for this option to work. Supported values are: 'auto', 'disabled', 'enabled'. If not specified the default value is 'auto'.")
#define DESCRIBE_DOC_NM_SETTING_BRIDGE_MULTICAST_SNOOPING N_("Controls whether IGMP snooping is enabled for this bridge. Note that if snooping was automatically disabled due to hash collisions, the system may refuse to enable the feature until the collisions are resolved.")
#define DESCRIBE_DOC_NM_SETTING_BRIDGE_MULTICAST_STARTUP_QUERY_COUNT N_("Set the number of IGMP queries to send during startup phase.")
+#define DESCRIBE_DOC_NM_SETTING_BRIDGE_MULTICAST_STARTUP_QUERY_INTERVAL N_("Sets the time (in deciseconds) between queries sent out at startup to determine membership information.")
#define DESCRIBE_DOC_NM_SETTING_BRIDGE_PRIORITY N_("Sets the Spanning Tree Protocol (STP) priority for this bridge. Lower values are \"better\"; the lowest priority bridge will be elected the root bridge.")
#define DESCRIBE_DOC_NM_SETTING_BRIDGE_STP N_("Controls whether Spanning Tree Protocol (STP) is enabled for this bridge.")
#define DESCRIBE_DOC_NM_SETTING_BRIDGE_VLAN_DEFAULT_PVID N_("The default PVID for the ports of the bridge, that is the VLAN id assigned to incoming untagged frames.")
diff --git a/libnm-core/nm-setting-bridge.c b/libnm-core/nm-setting-bridge.c
index 40e87e62c5..2b6d1ef5d5 100644
--- a/libnm-core/nm-setting-bridge.c
+++ b/libnm-core/nm-setting-bridge.c
@@ -37,6 +37,7 @@
#define BRIDGE_MULTICAST_QUERY_USE_IFADDR_DEFAULT FALSE
#define BRIDGE_MULTICAST_SNOOPING_DEFAULT TRUE
#define BRIDGE_MULTICAST_STARTUP_QUERY_COUNT_DEFAULT 2
+#define BRIDGE_MULTICAST_STARTUP_QUERY_INTERVAL_DEFAULT 3125
#define BRIDGE_PRIORITY_DEFAULT 0x8000
#define BRIDGE_STP_DEFAULT TRUE
#define BRIDGE_VLAN_DEFAULT_PVID_DEFAULT 1
@@ -66,6 +67,7 @@ NM_GOBJECT_PROPERTIES_DEFINE (NMSettingBridge,
PROP_MULTICAST_QUERY_USE_IFADDR,
PROP_MULTICAST_SNOOPING,
PROP_MULTICAST_STARTUP_QUERY_COUNT,
+ PROP_MULTICAST_STARTUP_QUERY_INTERVAL,
PROP_VLAN_FILTERING,
PROP_VLAN_DEFAULT_PVID,
PROP_VLAN_PROTOCOL,
@@ -84,6 +86,7 @@ typedef struct {
guint64 multicast_querier_interval;
guint64 multicast_query_interval;
guint64 multicast_query_response_interval;
+ guint64 multicast_startup_query_interval;
guint32 ageing_time;
guint32 multicast_hash_max;
guint32 multicast_last_member_count;
@@ -1162,6 +1165,22 @@ nm_setting_bridge_get_multicast_startup_query_count (const NMSettingBridge *sett
return NM_SETTING_BRIDGE_GET_PRIVATE (setting)->multicast_startup_query_count;
}
+/**
+ * nm_setting_bridge_get_multicast_startup_query_interval:
+ * @setting: the #NMSettingBridge
+ *
+ * Returns: the #NMSettingBridge:multicast-startup-query-interval property of the setting
+ *
+ * Since 1.26
+ **/
+guint64
+nm_setting_bridge_get_multicast_startup_query_interval (const NMSettingBridge *setting)
+{
+ g_return_val_if_fail (NM_IS_SETTING_BRIDGE (setting), 0);
+
+ return NM_SETTING_BRIDGE_GET_PRIVATE (setting)->multicast_startup_query_interval;
+}
+
/*****************************************************************************/
static gboolean
@@ -1433,6 +1452,9 @@ get_property (GObject *object, guint prop_id,
case PROP_MULTICAST_STARTUP_QUERY_COUNT:
g_value_set_uint (value, priv->multicast_startup_query_count);
break;
+ case PROP_MULTICAST_STARTUP_QUERY_INTERVAL:
+ g_value_set_uint64 (value, priv->multicast_startup_query_interval);
+ break;
case PROP_VLAN_FILTERING:
g_value_set_boolean (value, priv->vlan_filtering);
break;
@@ -1531,6 +1553,9 @@ set_property (GObject *object, guint prop_id,
case PROP_MULTICAST_STARTUP_QUERY_COUNT:
priv->multicast_startup_query_count = g_value_get_uint (value);
break;
+ case PROP_MULTICAST_STARTUP_QUERY_INTERVAL:
+ priv->multicast_startup_query_interval = g_value_get_uint64 (value);
+ break;
case PROP_VLAN_FILTERING:
priv->vlan_filtering = g_value_get_boolean (value);
break;
@@ -1584,6 +1609,7 @@ nm_setting_bridge_init (NMSettingBridge *setting)
priv->multicast_querier = BRIDGE_MULTICAST_QUERIER_DEFAULT;
priv->multicast_querier_interval = BRIDGE_MULTICAST_QUERIER_INTERVAL_DEFAULT;
priv->multicast_startup_query_count = BRIDGE_MULTICAST_STARTUP_QUERY_COUNT_DEFAULT;
+ priv->multicast_startup_query_interval = BRIDGE_MULTICAST_STARTUP_QUERY_INTERVAL_DEFAULT;
}
/**
@@ -2237,6 +2263,28 @@ nm_setting_bridge_class_init (NMSettingBridgeClass *klass)
NM_SETTING_PARAM_INFERRABLE |
G_PARAM_STATIC_STRINGS);
+ /**
+ * NMSettingBridge:multicast-startup-query-interval:
+ *
+ * Sets the time (in deciseconds) between queries sent out
+ * at startup to determine membership information.
+ **/
+ /* ---ifcfg-rh---
+ * property: multicast-startup-query-interval
+ * variable: BRIDGING_OPTS: multicast_startup_query_interval=
+ * default: 3125
+ * example: BRIDGING_OPTS="multicast_startup_query_interval=4000"
+ * ---end---
+ *
+ * Since: 1.26
+ */
+ obj_properties[PROP_MULTICAST_STARTUP_QUERY_INTERVAL] =
+ g_param_spec_uint64 (NM_SETTING_BRIDGE_MULTICAST_STARTUP_QUERY_INTERVAL, "", "",
+ 0, G_MAXUINT64, BRIDGE_MULTICAST_STARTUP_QUERY_INTERVAL_DEFAULT,
+ G_PARAM_READWRITE |
+ NM_SETTING_PARAM_INFERRABLE |
+ G_PARAM_STATIC_STRINGS);
+
g_object_class_install_properties (object_class, _PROPERTY_ENUMS_LAST, obj_properties);
_nm_setting_class_commit_full (setting_class, NM_META_SETTING_TYPE_BRIDGE,
diff --git a/libnm-core/nm-setting-bridge.h b/libnm-core/nm-setting-bridge.h
index 13b0f762e0..5f0ef0b321 100644
--- a/libnm-core/nm-setting-bridge.h
+++ b/libnm-core/nm-setting-bridge.h
@@ -43,6 +43,7 @@ G_BEGIN_DECLS
#define NM_SETTING_BRIDGE_MULTICAST_QUERY_RESPONSE_INTERVAL "multicast-query-response-interval"
#define NM_SETTING_BRIDGE_MULTICAST_QUERY_USE_IFADDR "multicast-query-use-ifaddr"
#define NM_SETTING_BRIDGE_MULTICAST_STARTUP_QUERY_COUNT "multicast-startup-query-count"
+#define NM_SETTING_BRIDGE_MULTICAST_STARTUP_QUERY_INTERVAL "multicast-startup-query-interval"
#define NM_SETTING_BRIDGE_VLAN_FILTERING "vlan-filtering"
#define NM_SETTING_BRIDGE_VLAN_DEFAULT_PVID "vlan-default-pvid"
#define NM_SETTING_BRIDGE_VLANS "vlans"
@@ -172,6 +173,9 @@ guint64 nm_setting_bridge_get_multicast_query_response_interval (const NMSetting
NM_AVAILABLE_IN_1_26
guint32 nm_setting_bridge_get_multicast_startup_query_count (const NMSettingBridge *setting);
+NM_AVAILABLE_IN_1_26
+guint64 nm_setting_bridge_get_multicast_startup_query_interval (const NMSettingBridge *setting);
+
G_END_DECLS
#endif /* __NM_SETTING_BRIDGE_H__ */
diff --git a/libnm/libnm.ver b/libnm/libnm.ver
index 66e11d31e5..b691becb13 100644
--- a/libnm/libnm.ver
+++ b/libnm/libnm.ver
@@ -1706,5 +1706,6 @@ global:
nm_setting_bridge_get_multicast_query_interval;
nm_setting_bridge_get_multicast_query_response_interval;
nm_setting_bridge_get_multicast_startup_query_count;
+ nm_setting_bridge_get_multicast_startup_query_interval;
nm_setting_connection_get_mud_url;
} libnm_1_24_0;
diff --git a/src/devices/nm-device-bridge.c b/src/devices/nm-device-bridge.c
index fb5b3d6171..1727eb8c67 100644
--- a/src/devices/nm-device-bridge.c
+++ b/src/devices/nm-device-bridge.c
@@ -322,6 +322,10 @@ static const Option master_options[] = {
NULL, NULL,
0, G_MAXUINT32, 2,
FALSE, FALSE, FALSE },
+ { NM_SETTING_BRIDGE_MULTICAST_STARTUP_QUERY_INTERVAL, "multicast_startup_query_interval",
+ NULL, NULL,
+ 0, G_MAXUINT64, 3125,
+ FALSE, FALSE, FALSE },
{ NM_SETTING_BRIDGE_GROUP_ADDRESS, "group_addr",
to_sysfs_group_address, from_sysfs_group_address,
0, 0, 0,
diff --git a/src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-reader.c b/src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-reader.c
index f3deca1891..d8b4d79bb7 100644
--- a/src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-reader.c
+++ b/src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-reader.c
@@ -5174,6 +5174,7 @@ handle_bridge_option (NMSetting *setting,
{ "multicast_snooping", NM_SETTING_BRIDGE_MULTICAST_SNOOPING, BRIDGE_OPT_TYPE_OPTION },
{ "multicast_router", NM_SETTING_BRIDGE_MULTICAST_ROUTER, BRIDGE_OPT_TYPE_OPTION },
{ "multicast_startup_query_count", NM_SETTING_BRIDGE_MULTICAST_STARTUP_QUERY_COUNT, BRIDGE_OPT_TYPE_OPTION },
+ { "multicast_startup_query_interval", NM_SETTING_BRIDGE_MULTICAST_STARTUP_QUERY_INTERVAL, BRIDGE_OPT_TYPE_OPTION },
{ "vlan_filtering", NM_SETTING_BRIDGE_VLAN_FILTERING, BRIDGE_OPT_TYPE_OPTION },
{ "default_pvid", NM_SETTING_BRIDGE_VLAN_DEFAULT_PVID, BRIDGE_OPT_TYPE_OPTION },
{ "group_address", NM_SETTING_BRIDGE_GROUP_ADDRESS, BRIDGE_OPT_TYPE_OPTION },
diff --git a/src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-writer.c b/src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-writer.c
index d2bdb21376..a9bc091655 100644
--- a/src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-writer.c
+++ b/src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-writer.c
@@ -1597,6 +1597,13 @@ write_bridge_setting (NMConnection *connection, shvarFile *ifcfg, gboolean *wire
g_string_append_printf (opts, "multicast_startup_query_count=%u", i);
}
+ u64 = nm_setting_bridge_get_multicast_startup_query_interval (s_bridge);
+ if (u64 != get_setting_default_uint64 (NM_SETTING (s_bridge), NM_SETTING_BRIDGE_MULTICAST_STARTUP_QUERY_INTERVAL)) {
+ if (opts->len)
+ g_string_append_c (opts, ' ');
+ g_string_append_printf (opts, "multicast_startup_query_interval=%"G_GUINT64_FORMAT, u64);
+ }
+
s = nm_setting_bridge_get_multicast_router (s_bridge);
if (s) {
if (opts->len)