mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-05-01 03:18:06 +02:00
platform: add support for mcast_hash_max netlink attribute for bridges
Adding the mcast_hash_max property. The value must be the power of 2. https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/624
This commit is contained in:
parent
88425e569f
commit
518187e8db
6 changed files with 21 additions and 0 deletions
|
|
@ -1072,6 +1072,7 @@ create_and_realize (NMDevice *device,
|
|||
.mcast_router = to_sysfs_multicast_router_sys (nm_setting_bridge_get_multicast_router (s_bridge)),
|
||||
.mcast_query_use_ifaddr = nm_setting_bridge_get_multicast_query_use_ifaddr (s_bridge),
|
||||
.mcast_querier = nm_setting_bridge_get_multicast_querier (s_bridge),
|
||||
.mcast_hash_max = nm_setting_bridge_get_multicast_hash_max (s_bridge),
|
||||
.mcast_last_member_count = nm_setting_bridge_get_multicast_last_member_count (s_bridge),
|
||||
.mcast_startup_query_count = nm_setting_bridge_get_multicast_startup_query_count (s_bridge),
|
||||
.mcast_last_member_interval = nm_setting_bridge_get_multicast_last_member_interval (s_bridge),
|
||||
|
|
|
|||
|
|
@ -1317,6 +1317,7 @@ _parse_lnk_bridge (const char *kind, struct nlattr *info_data)
|
|||
[IFLA_BR_MCAST_ROUTER] = { .type = NLA_U8 },
|
||||
[IFLA_BR_MCAST_QUERY_USE_IFADDR] = { .type = NLA_U8 },
|
||||
[IFLA_BR_MCAST_QUERIER] = { .type = NLA_U8 },
|
||||
[IFLA_BR_MCAST_HASH_MAX] = { .type = NLA_U32 },
|
||||
[IFLA_BR_MCAST_LAST_MEMBER_CNT] = { .type = NLA_U32 },
|
||||
[IFLA_BR_MCAST_STARTUP_QUERY_CNT] = { .type = NLA_U32 },
|
||||
[IFLA_BR_MCAST_LAST_MEMBER_INTVL] = { .type = NLA_U64 },
|
||||
|
|
@ -1377,6 +1378,8 @@ _parse_lnk_bridge (const char *kind, struct nlattr *info_data)
|
|||
props->mcast_query_use_ifaddr = !!nla_get_u8 (tb[IFLA_BR_MCAST_QUERY_USE_IFADDR]);
|
||||
if (tb[IFLA_BR_MCAST_QUERIER])
|
||||
props->mcast_querier = nla_get_u8 (tb[IFLA_BR_MCAST_QUERIER]);
|
||||
if (tb[IFLA_BR_MCAST_HASH_MAX])
|
||||
props->mcast_hash_max = nla_get_u32 (tb[IFLA_BR_MCAST_HASH_MAX]);
|
||||
if (tb[IFLA_BR_MCAST_LAST_MEMBER_CNT])
|
||||
props->mcast_last_member_count = nla_get_u32 (tb[IFLA_BR_MCAST_LAST_MEMBER_CNT]);
|
||||
if (tb[IFLA_BR_MCAST_STARTUP_QUERY_CNT])
|
||||
|
|
@ -4082,6 +4085,7 @@ _nl_msg_new_link_set_linkinfo (struct nl_msg *msg,
|
|||
NLA_PUT_U8 (msg, IFLA_BR_MCAST_ROUTER, props->mcast_router);
|
||||
NLA_PUT_U8 (msg, IFLA_BR_MCAST_QUERY_USE_IFADDR, !!props->mcast_query_use_ifaddr);
|
||||
NLA_PUT_U8 (msg, IFLA_BR_MCAST_QUERIER, !!props->mcast_querier);
|
||||
NLA_PUT_U32 (msg, IFLA_BR_MCAST_HASH_MAX, props->mcast_hash_max);
|
||||
NLA_PUT_U32 (msg, IFLA_BR_MCAST_LAST_MEMBER_CNT, props->mcast_last_member_count);
|
||||
NLA_PUT_U32 (msg, IFLA_BR_MCAST_STARTUP_QUERY_CNT, props->mcast_startup_query_count);
|
||||
NLA_PUT_U64 (msg, IFLA_BR_MCAST_LAST_MEMBER_INTVL, props->mcast_last_member_interval);
|
||||
|
|
|
|||
|
|
@ -5434,6 +5434,7 @@ const NMPlatformLnkBridge nm_platform_lnk_bridge_default = {
|
|||
.mcast_router = 1,
|
||||
.mcast_query_use_ifaddr = NM_BRIDGE_MULTICAST_QUERY_USE_IFADDR_DEF,
|
||||
.mcast_querier = NM_BRIDGE_MULTICAST_QUERIER_DEF,
|
||||
.mcast_hash_max = NM_BRIDGE_MULTICAST_HASH_MAX_DEF,
|
||||
.mcast_last_member_count = NM_BRIDGE_MULTICAST_LAST_MEMBER_COUNT_DEF,
|
||||
.mcast_startup_query_count = NM_BRIDGE_MULTICAST_STARTUP_QUERY_COUNT_DEF,
|
||||
.mcast_last_member_interval = NM_BRIDGE_MULTICAST_LAST_MEMBER_INTERVAL_DEF,
|
||||
|
|
@ -5465,6 +5466,7 @@ nm_platform_lnk_bridge_to_string (const NMPlatformLnkBridge *lnk, char *buf, gsi
|
|||
" mcast_router %u"
|
||||
" mcast_query_use_ifaddr %d"
|
||||
" mcast_querier %d"
|
||||
" mcast_hash_max %u"
|
||||
" mcast_last_member_count %u"
|
||||
" mcast_startup_query_count %u"
|
||||
" mcast_last_member_interval %"G_GUINT64_FORMAT
|
||||
|
|
@ -5488,6 +5490,7 @@ nm_platform_lnk_bridge_to_string (const NMPlatformLnkBridge *lnk, char *buf, gsi
|
|||
lnk->mcast_router,
|
||||
(int) lnk->mcast_query_use_ifaddr,
|
||||
(int) lnk->mcast_querier,
|
||||
lnk->mcast_hash_max,
|
||||
lnk->mcast_last_member_count,
|
||||
lnk->mcast_startup_query_count,
|
||||
lnk->mcast_last_member_interval,
|
||||
|
|
@ -7000,6 +7003,7 @@ nm_platform_lnk_bridge_hash_update (const NMPlatformLnkBridge *obj, NMHashState
|
|||
obj->vlan_protocol,
|
||||
obj->group_fwd_mask,
|
||||
obj->group_addr,
|
||||
obj->mcast_hash_max,
|
||||
obj->mcast_last_member_count,
|
||||
obj->mcast_startup_query_count,
|
||||
obj->mcast_last_member_interval,
|
||||
|
|
@ -7035,6 +7039,7 @@ nm_platform_lnk_bridge_cmp (const NMPlatformLnkBridge *a, const NMPlatformLnkBri
|
|||
NM_CMP_FIELD (a, b, mcast_router);
|
||||
NM_CMP_FIELD_BOOL (a, b, mcast_query_use_ifaddr);
|
||||
NM_CMP_FIELD_BOOL (a, b, mcast_querier);
|
||||
NM_CMP_FIELD (a, b, mcast_hash_max);
|
||||
NM_CMP_FIELD (a, b, mcast_last_member_count);
|
||||
NM_CMP_FIELD (a, b, mcast_startup_query_count);
|
||||
NM_CMP_FIELD (a, b, mcast_last_member_interval);
|
||||
|
|
|
|||
|
|
@ -780,6 +780,7 @@ typedef struct {
|
|||
guint32 max_age;
|
||||
guint32 mcast_last_member_count;
|
||||
guint32 mcast_startup_query_count;
|
||||
guint32 mcast_hash_max;
|
||||
guint64 mcast_last_member_interval;
|
||||
guint64 mcast_membership_interval;
|
||||
guint64 mcast_querier_interval;
|
||||
|
|
|
|||
|
|
@ -1190,6 +1190,7 @@ nmtstp_link_bridge_add (NMPlatform *platform,
|
|||
|
||||
if (external_command) {
|
||||
char sbuf_gfw[100];
|
||||
char sbuf_mhm[100];
|
||||
char sbuf_mlmc[100];
|
||||
char sbuf_mlmi[100];
|
||||
char sbuf_mmi[100];
|
||||
|
|
@ -1214,6 +1215,7 @@ nmtstp_link_bridge_add (NMPlatform *platform,
|
|||
"mcast_router %u "
|
||||
"mcast_query_use_ifaddr %d "
|
||||
"mcast_querier %d "
|
||||
"%s" /* mcast_hash_max */
|
||||
"%s" /* mcast_last_member_count */
|
||||
"%s" /* mcast_startup_query_count */
|
||||
"%s" /* mcast_last_member_interval */
|
||||
|
|
@ -1240,6 +1242,9 @@ nmtstp_link_bridge_add (NMPlatform *platform,
|
|||
lnk->mcast_router,
|
||||
(int) lnk->mcast_query_use_ifaddr,
|
||||
(int) lnk->mcast_querier,
|
||||
lnk->mcast_hash_max != NM_BRIDGE_MULTICAST_HASH_MAX_DEF
|
||||
? nm_sprintf_buf (sbuf_mhm, "mcast_hash_max %u ",lnk->mcast_hash_max)
|
||||
: "",
|
||||
lnk->mcast_last_member_count != NM_BRIDGE_MULTICAST_LAST_MEMBER_COUNT_DEF
|
||||
? nm_sprintf_buf (sbuf_mlmc, "mcast_last_member_count %u ",lnk->mcast_last_member_count)
|
||||
: "",
|
||||
|
|
@ -1290,6 +1295,7 @@ nmtstp_link_bridge_add (NMPlatform *platform,
|
|||
g_assert_cmpint (lnk->mcast_router, ==, ll->mcast_router);
|
||||
g_assert_cmpint (lnk->mcast_query_use_ifaddr, ==, ll->mcast_query_use_ifaddr);
|
||||
g_assert_cmpint (lnk->mcast_querier, ==, ll->mcast_querier);
|
||||
g_assert_cmpint (lnk->mcast_hash_max, ==, ll->mcast_hash_max);
|
||||
g_assert_cmpint (lnk->mcast_last_member_count, ==, ll->mcast_last_member_count);
|
||||
g_assert_cmpint (lnk->mcast_startup_query_count, ==, ll->mcast_startup_query_count);
|
||||
g_assert_cmpint (lnk->mcast_last_member_interval, ==, ll->mcast_last_member_interval);
|
||||
|
|
|
|||
|
|
@ -964,6 +964,7 @@ test_software_detect (gconstpointer user_data)
|
|||
switch (test_data->link_type) {
|
||||
|
||||
case NM_LINK_TYPE_BRIDGE:
|
||||
|
||||
lnk_bridge.forward_delay = 1560;
|
||||
lnk_bridge.hello_time = 150;
|
||||
lnk_bridge.max_age = 2100;
|
||||
|
|
@ -980,6 +981,7 @@ test_software_detect (gconstpointer user_data)
|
|||
lnk_bridge.mcast_router = 1;
|
||||
lnk_bridge.mcast_query_use_ifaddr = TRUE;
|
||||
lnk_bridge.mcast_querier = TRUE;
|
||||
lnk_bridge.mcast_hash_max = 1024;
|
||||
lnk_bridge.mcast_last_member_count = 2;
|
||||
lnk_bridge.mcast_startup_query_count = 3;
|
||||
lnk_bridge.mcast_last_member_interval = 5000;
|
||||
|
|
@ -1362,6 +1364,7 @@ test_software_detect (gconstpointer user_data)
|
|||
const NMPlatformLnkBridge *plnk = &lnk->lnk_bridge;
|
||||
|
||||
g_assert (plnk == nm_platform_link_get_lnk_bridge (NM_PLATFORM_GET, ifindex, NULL));
|
||||
g_assert_cmpint (nm_platform_lnk_bridge_cmp (&lnk_bridge, plnk), ==, 0);
|
||||
g_assert_cmpint (plnk->forward_delay , ==, 1560);
|
||||
g_assert_cmpint (plnk->hello_time , ==, 150);
|
||||
g_assert_cmpint (plnk->max_age , ==, 2100);
|
||||
|
|
@ -1375,6 +1378,7 @@ test_software_detect (gconstpointer user_data)
|
|||
g_assert_cmpint (plnk->mcast_router , ==, 1);
|
||||
g_assert_cmpint (plnk->mcast_query_use_ifaddr , ==, TRUE);
|
||||
g_assert_cmpint (plnk->mcast_querier , ==, TRUE);
|
||||
g_assert_cmpint (plnk->mcast_hash_max , ==, 1024);
|
||||
g_assert_cmpint (plnk->mcast_last_member_count , ==, 2);
|
||||
g_assert_cmpint (plnk->mcast_startup_query_count , ==, 3);
|
||||
g_assert_cmpint (plnk->mcast_last_member_interval , ==, 5000);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue