From 8d8017a62073ae03471f982dbb01fc5caaefa698 Mon Sep 17 00:00:00 2001 From: Antonio Cardace Date: Fri, 30 Oct 2020 16:35:25 +0100 Subject: [PATCH] bridge: set MTU at link creation time https://bugzilla.redhat.com/show_bug.cgi?id=1778590 Signed-off-by: Antonio Cardace (cherry picked from commit 516c6236183b361eccf3e0693616b48c680d0f7b) --- src/devices/nm-device-bridge.c | 7 +++++++ src/platform/nm-platform.h | 3 ++- src/platform/tests/test-common.c | 2 +- src/platform/tests/test-link.c | 3 +++ 4 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/devices/nm-device-bridge.c b/src/devices/nm-device-bridge.c index 3c27b349d5..d9dbd5e356 100644 --- a/src/devices/nm-device-bridge.c +++ b/src/devices/nm-device-bridge.c @@ -1027,6 +1027,7 @@ create_and_realize(NMDevice * device, const NMPlatformLink **out_plink, GError ** error) { + NMSettingWired * s_wired; NMSettingBridge * s_bridge; const char * iface = nm_device_get_iface(device); const char * hwaddr; @@ -1034,12 +1035,17 @@ create_and_realize(NMDevice * device, guint8 mac_address[NM_UTILS_HWADDR_LEN_MAX]; NMPlatformLnkBridge props; int r; + guint32 mtu = 0; nm_assert(iface); s_bridge = nm_connection_get_setting_bridge(connection); nm_assert(s_bridge); + s_wired = nm_connection_get_setting_wired(connection); + if (s_wired) + mtu = nm_setting_wired_get_mtu(s_wired); + hwaddr = nm_setting_bridge_get_mac_address(s_bridge); if (!hwaddr && nm_device_hw_addr_get_cloned(device, connection, FALSE, &hwaddr_cloned, NULL, NULL)) { @@ -1101,6 +1107,7 @@ create_and_realize(NMDevice * device, iface, hwaddr ? mac_address : NULL, hwaddr ? ETH_ALEN : 0, + mtu, &props, out_plink); if (r < 0) { diff --git a/src/platform/nm-platform.h b/src/platform/nm-platform.h index a7396a7107..a1314000c3 100644 --- a/src/platform/nm-platform.h +++ b/src/platform/nm-platform.h @@ -1557,6 +1557,7 @@ nm_platform_link_bridge_add(NMPlatform * self, const char * name, const void * address, size_t address_len, + guint32 mtu, const NMPlatformLnkBridge *props, const NMPlatformLink ** out_link) { @@ -1566,7 +1567,7 @@ nm_platform_link_bridge_add(NMPlatform * self, 0, address, address_len, - 0, + mtu, props, out_link); } diff --git a/src/platform/tests/test-common.c b/src/platform/tests/test-common.c index e305357a7a..fb43004630 100644 --- a/src/platform/tests/test-common.c +++ b/src/platform/tests/test-common.c @@ -1534,7 +1534,7 @@ nmtstp_link_bridge_add(NMPlatform * platform, } if (!pllink) { - r = nm_platform_link_bridge_add(platform, name, NULL, 0, lnk, &pllink); + r = nm_platform_link_bridge_add(platform, name, NULL, 0, 0, lnk, &pllink); } _assert_pllink(platform, r == 0, pllink, name, NM_LINK_TYPE_BRIDGE); diff --git a/src/platform/tests/test-link.c b/src/platform/tests/test-link.c index 829abcc9ac..5fd67ec41f 100644 --- a/src/platform/tests/test-link.c +++ b/src/platform/tests/test-link.c @@ -101,6 +101,7 @@ software_add(NMLinkType link_type, const char *name) name, NULL, 0, + 0, &nm_platform_lnk_bridge_default, NULL)); case NM_LINK_TYPE_BOND: @@ -131,6 +132,7 @@ software_add(NMLinkType link_type, const char *name) PARENT_NAME, NULL, 0, + 0, &nm_platform_lnk_bridge_default, NULL))) accept_signal(parent_added); @@ -581,6 +583,7 @@ test_bridge_addr(void) DEVICE_NAME, addr, sizeof(addr), + 0, &nm_platform_lnk_bridge_default, &plink))); g_assert(plink);