mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-02-03 13:40:39 +01:00
nm-setting-bridge: add 'multicast-query-interval' bridge option
https://bugzilla.redhat.com/show_bug.cgi?id=1755768
This commit is contained in:
parent
b9b9a95395
commit
9842c55503
8 changed files with 70 additions and 0 deletions
|
|
@ -4963,6 +4963,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_QUERY_INTERVAL,
|
||||
.property_type = &_pt_gobject_int,
|
||||
.hide_if_default = TRUE,
|
||||
),
|
||||
PROPERTY_INFO_WITH_DESC (NM_SETTING_BRIDGE_MULTICAST_QUERY_USE_IFADDR,
|
||||
.property_type = &_pt_gobject_bool,
|
||||
.hide_if_default = TRUE,
|
||||
|
|
|
|||
|
|
@ -125,6 +125,7 @@
|
|||
#define DESCRIBE_DOC_NM_SETTING_BRIDGE_MULTICAST_MEMBERSHIP_INTERVAL N_("Set delay (in deciseconds) after which the bridge will leave a group, if no membership reports for this group are received.")
|
||||
#define DESCRIBE_DOC_NM_SETTING_BRIDGE_MULTICAST_QUERIER N_("Enable or disable sending of multicast queries by the bridge. If not specified the option is disabled.")
|
||||
#define DESCRIBE_DOC_NM_SETTING_BRIDGE_MULTICAST_QUERIER_INTERVAL N_("If no queries are seen after this delay (in deciseconds) has passed, the bridge will start to send its own queries.")
|
||||
#define DESCRIBE_DOC_NM_SETTING_BRIDGE_MULTICAST_QUERY_INTERVAL N_("Interval (in deciseconds) between queries sent by the bridge after the end of the startup phase.")
|
||||
#define DESCRIBE_DOC_NM_SETTING_BRIDGE_MULTICAST_QUERY_USE_IFADDR N_("If enabled the bridge's own IP address is used as the source address for IGMP queries otherwise the default of 0.0.0.0 is used.")
|
||||
#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.")
|
||||
|
|
|
|||
|
|
@ -32,6 +32,7 @@
|
|||
#define BRIDGE_MULTICAST_QUERIER_INTERVAL_DEFAULT 25500
|
||||
#define BRIDGE_MULTICAST_HASH_MAX_DEFAULT 4096
|
||||
#define BRIDGE_MULTICAST_QUERIER_DEFAULT FALSE
|
||||
#define BRIDGE_MULTICAST_QUERY_INTERVAL_DEFAULT 12500
|
||||
#define BRIDGE_MULTICAST_QUERY_USE_IFADDR_DEFAULT FALSE
|
||||
#define BRIDGE_MULTICAST_SNOOPING_DEFAULT TRUE
|
||||
#define BRIDGE_PRIORITY_DEFAULT 0x8000
|
||||
|
|
@ -58,6 +59,7 @@ NM_GOBJECT_PROPERTIES_DEFINE (NMSettingBridge,
|
|||
PROP_MULTICAST_ROUTER,
|
||||
PROP_MULTICAST_QUERIER,
|
||||
PROP_MULTICAST_QUERIER_INTERVAL,
|
||||
PROP_MULTICAST_QUERY_INTERVAL,
|
||||
PROP_MULTICAST_QUERY_USE_IFADDR,
|
||||
PROP_MULTICAST_SNOOPING,
|
||||
PROP_VLAN_FILTERING,
|
||||
|
|
@ -76,6 +78,7 @@ typedef struct {
|
|||
guint64 multicast_last_member_interval;
|
||||
guint64 multicast_membership_interval;
|
||||
guint64 multicast_querier_interval;
|
||||
guint64 multicast_query_interval;
|
||||
guint32 ageing_time;
|
||||
guint32 multicast_hash_max;
|
||||
guint32 multicast_last_member_count;
|
||||
|
|
@ -1105,6 +1108,22 @@ nm_setting_bridge_get_multicast_querier_interval (const NMSettingBridge *setting
|
|||
return NM_SETTING_BRIDGE_GET_PRIVATE (setting)->multicast_querier_interval;
|
||||
}
|
||||
|
||||
/**
|
||||
* nm_setting_bridge_get_multicast_query_interval:
|
||||
* @setting: the #NMSettingBridge
|
||||
*
|
||||
* Returns: the #NMSettingBridge:multicast-query-interval property of the setting
|
||||
*
|
||||
* Since 1.26
|
||||
**/
|
||||
guint64
|
||||
nm_setting_bridge_get_multicast_query_interval (const NMSettingBridge *setting)
|
||||
{
|
||||
g_return_val_if_fail (NM_IS_SETTING_BRIDGE (setting), 0);
|
||||
|
||||
return NM_SETTING_BRIDGE_GET_PRIVATE (setting)->multicast_query_interval;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
static gboolean
|
||||
|
|
@ -1364,6 +1383,9 @@ get_property (GObject *object, guint prop_id,
|
|||
case PROP_MULTICAST_QUERIER_INTERVAL:
|
||||
g_value_set_uint64 (value, priv->multicast_querier_interval);
|
||||
break;
|
||||
case PROP_MULTICAST_QUERY_INTERVAL:
|
||||
g_value_set_uint64 (value, priv->multicast_query_interval);
|
||||
break;
|
||||
case PROP_MULTICAST_QUERY_USE_IFADDR:
|
||||
g_value_set_boolean (value, priv->multicast_query_use_ifaddr);
|
||||
break;
|
||||
|
|
@ -1453,6 +1475,9 @@ set_property (GObject *object, guint prop_id,
|
|||
case PROP_MULTICAST_QUERIER_INTERVAL:
|
||||
priv->multicast_querier_interval = g_value_get_uint64 (value);
|
||||
break;
|
||||
case PROP_MULTICAST_QUERY_INTERVAL:
|
||||
priv->multicast_query_interval = g_value_get_uint64 (value);
|
||||
break;
|
||||
case PROP_MULTICAST_QUERY_USE_IFADDR:
|
||||
priv->multicast_query_use_ifaddr = g_value_get_boolean (value);
|
||||
break;
|
||||
|
|
@ -1503,6 +1528,7 @@ nm_setting_bridge_init (NMSettingBridge *setting)
|
|||
priv->stp = BRIDGE_STP_DEFAULT;
|
||||
priv->vlan_default_pvid = BRIDGE_VLAN_DEFAULT_PVID_DEFAULT;
|
||||
priv->vlan_stats_enabled = BRIDGE_VLAN_STATS_ENABLED_DEFAULT;
|
||||
priv->multicast_query_interval = BRIDGE_MULTICAST_QUERY_INTERVAL_DEFAULT;
|
||||
priv->multicast_query_use_ifaddr = BRIDGE_MULTICAST_QUERY_USE_IFADDR_DEFAULT;
|
||||
priv->multicast_querier = BRIDGE_MULTICAST_QUERIER_DEFAULT;
|
||||
priv->multicast_querier_interval = BRIDGE_MULTICAST_QUERIER_INTERVAL_DEFAULT;
|
||||
|
|
@ -2094,6 +2120,28 @@ nm_setting_bridge_class_init (NMSettingBridgeClass *klass)
|
|||
NM_SETTING_PARAM_INFERRABLE |
|
||||
G_PARAM_STATIC_STRINGS);
|
||||
|
||||
/**
|
||||
* NMSettingBridge:multicast-query-interval:
|
||||
*
|
||||
* Interval (in deciseconds) between queries sent
|
||||
* by the bridge after the end of the startup phase.
|
||||
**/
|
||||
/* ---ifcfg-rh---
|
||||
* property: multicast-query-interval
|
||||
* variable: BRIDGING_OPTS: multicast_query_interval=
|
||||
* default: 12500
|
||||
* example: BRIDGING_OPTS="multicast_query_interval=22500"
|
||||
* ---end---
|
||||
*
|
||||
* Since: 1.26
|
||||
*/
|
||||
obj_properties[PROP_MULTICAST_QUERY_INTERVAL] =
|
||||
g_param_spec_uint64 (NM_SETTING_BRIDGE_MULTICAST_QUERY_INTERVAL, "", "",
|
||||
0, G_MAXUINT64, BRIDGE_MULTICAST_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,
|
||||
|
|
|
|||
|
|
@ -39,6 +39,7 @@ G_BEGIN_DECLS
|
|||
#define NM_SETTING_BRIDGE_MULTICAST_ROUTER "multicast-router"
|
||||
#define NM_SETTING_BRIDGE_MULTICAST_QUERIER "multicast-querier"
|
||||
#define NM_SETTING_BRIDGE_MULTICAST_QUERIER_INTERVAL "multicast-querier-interval"
|
||||
#define NM_SETTING_BRIDGE_MULTICAST_QUERY_INTERVAL "multicast-query-interval"
|
||||
#define NM_SETTING_BRIDGE_MULTICAST_QUERY_USE_IFADDR "multicast-query-use-ifaddr"
|
||||
#define NM_SETTING_BRIDGE_VLAN_FILTERING "vlan-filtering"
|
||||
#define NM_SETTING_BRIDGE_VLAN_DEFAULT_PVID "vlan-default-pvid"
|
||||
|
|
@ -160,6 +161,9 @@ guint64 nm_setting_bridge_get_multicast_membership_interval (const NMSettingBrid
|
|||
NM_AVAILABLE_IN_1_26
|
||||
guint64 nm_setting_bridge_get_multicast_querier_interval (const NMSettingBridge *setting);
|
||||
|
||||
NM_AVAILABLE_IN_1_26
|
||||
guint64 nm_setting_bridge_get_multicast_query_interval (const NMSettingBridge *setting);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#endif /* __NM_SETTING_BRIDGE_H__ */
|
||||
|
|
|
|||
|
|
@ -1703,5 +1703,6 @@ global:
|
|||
nm_setting_bridge_get_multicast_last_member_interval;
|
||||
nm_setting_bridge_get_multicast_membership_interval;
|
||||
nm_setting_bridge_get_multicast_querier_interval;
|
||||
nm_setting_bridge_get_multicast_query_interval;
|
||||
nm_setting_connection_get_mud_url;
|
||||
} libnm_1_24_0;
|
||||
|
|
|
|||
|
|
@ -298,6 +298,10 @@ static const Option master_options[] = {
|
|||
NULL, NULL,
|
||||
0, G_MAXUINT64, 25500,
|
||||
FALSE, FALSE, FALSE },
|
||||
{ NM_SETTING_BRIDGE_MULTICAST_QUERY_INTERVAL, "multicast_query_interval",
|
||||
NULL, NULL,
|
||||
0, G_MAXUINT64, 12500,
|
||||
FALSE, FALSE, FALSE },
|
||||
{ NM_SETTING_BRIDGE_MULTICAST_QUERY_USE_IFADDR, "multicast_query_use_ifaddr",
|
||||
NULL, NULL,
|
||||
0, 1, 0,
|
||||
|
|
|
|||
|
|
@ -5168,6 +5168,7 @@ handle_bridge_option (NMSetting *setting,
|
|||
{ "multicast_hash_max", NM_SETTING_BRIDGE_MULTICAST_HASH_MAX, BRIDGE_OPT_TYPE_OPTION },
|
||||
{ "multicast_querier", NM_SETTING_BRIDGE_MULTICAST_QUERIER, BRIDGE_OPT_TYPE_OPTION },
|
||||
{ "multicast_querier_interval", NM_SETTING_BRIDGE_MULTICAST_QUERIER_INTERVAL, BRIDGE_OPT_TYPE_OPTION },
|
||||
{ "multicast_query_interval", NM_SETTING_BRIDGE_MULTICAST_QUERY_INTERVAL, BRIDGE_OPT_TYPE_OPTION },
|
||||
{ "multicast_query_use_ifaddr", NM_SETTING_BRIDGE_MULTICAST_QUERY_USE_IFADDR, BRIDGE_OPT_TYPE_OPTION },
|
||||
{ "multicast_snooping", NM_SETTING_BRIDGE_MULTICAST_SNOOPING, BRIDGE_OPT_TYPE_OPTION },
|
||||
{ "multicast_router", NM_SETTING_BRIDGE_MULTICAST_ROUTER, BRIDGE_OPT_TYPE_OPTION },
|
||||
|
|
|
|||
|
|
@ -1562,6 +1562,13 @@ write_bridge_setting (NMConnection *connection, shvarFile *ifcfg, gboolean *wire
|
|||
g_string_append_printf (opts, "multicast_querier_interval=%"G_GUINT64_FORMAT, u64);
|
||||
}
|
||||
|
||||
u64 = nm_setting_bridge_get_multicast_query_interval (s_bridge);
|
||||
if (u64 != get_setting_default_uint64 (NM_SETTING (s_bridge), NM_SETTING_BRIDGE_MULTICAST_QUERY_INTERVAL)) {
|
||||
if (opts->len)
|
||||
g_string_append_c (opts, ' ');
|
||||
g_string_append_printf (opts, "multicast_query_interval=%"G_GUINT64_FORMAT, u64);
|
||||
}
|
||||
|
||||
b = nm_setting_bridge_get_multicast_query_use_ifaddr (s_bridge);
|
||||
if (b != get_setting_default_boolean (NM_SETTING (s_bridge), NM_SETTING_BRIDGE_MULTICAST_QUERY_USE_IFADDR)) {
|
||||
if (opts->len)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue