bridge: set MTU at link creation time

https://bugzilla.redhat.com/show_bug.cgi?id=1778590

Signed-off-by: Antonio Cardace <acardace@redhat.com>
(cherry picked from commit 516c623618)
This commit is contained in:
Antonio Cardace 2020-10-30 16:35:25 +01:00
parent 05e8b018ec
commit 8d8017a620
No known key found for this signature in database
GPG key ID: 6BF80ABD43E377D3
4 changed files with 13 additions and 2 deletions

View file

@ -1027,6 +1027,7 @@ create_and_realize(NMDevice * device,
const NMPlatformLink **out_plink, const NMPlatformLink **out_plink,
GError ** error) GError ** error)
{ {
NMSettingWired * s_wired;
NMSettingBridge * s_bridge; NMSettingBridge * s_bridge;
const char * iface = nm_device_get_iface(device); const char * iface = nm_device_get_iface(device);
const char * hwaddr; const char * hwaddr;
@ -1034,12 +1035,17 @@ create_and_realize(NMDevice * device,
guint8 mac_address[NM_UTILS_HWADDR_LEN_MAX]; guint8 mac_address[NM_UTILS_HWADDR_LEN_MAX];
NMPlatformLnkBridge props; NMPlatformLnkBridge props;
int r; int r;
guint32 mtu = 0;
nm_assert(iface); nm_assert(iface);
s_bridge = nm_connection_get_setting_bridge(connection); s_bridge = nm_connection_get_setting_bridge(connection);
nm_assert(s_bridge); 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); hwaddr = nm_setting_bridge_get_mac_address(s_bridge);
if (!hwaddr if (!hwaddr
&& nm_device_hw_addr_get_cloned(device, connection, FALSE, &hwaddr_cloned, NULL, NULL)) { && nm_device_hw_addr_get_cloned(device, connection, FALSE, &hwaddr_cloned, NULL, NULL)) {
@ -1101,6 +1107,7 @@ create_and_realize(NMDevice * device,
iface, iface,
hwaddr ? mac_address : NULL, hwaddr ? mac_address : NULL,
hwaddr ? ETH_ALEN : 0, hwaddr ? ETH_ALEN : 0,
mtu,
&props, &props,
out_plink); out_plink);
if (r < 0) { if (r < 0) {

View file

@ -1557,6 +1557,7 @@ nm_platform_link_bridge_add(NMPlatform * self,
const char * name, const char * name,
const void * address, const void * address,
size_t address_len, size_t address_len,
guint32 mtu,
const NMPlatformLnkBridge *props, const NMPlatformLnkBridge *props,
const NMPlatformLink ** out_link) const NMPlatformLink ** out_link)
{ {
@ -1566,7 +1567,7 @@ nm_platform_link_bridge_add(NMPlatform * self,
0, 0,
address, address,
address_len, address_len,
0, mtu,
props, props,
out_link); out_link);
} }

View file

@ -1534,7 +1534,7 @@ nmtstp_link_bridge_add(NMPlatform * platform,
} }
if (!pllink) { 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); _assert_pllink(platform, r == 0, pllink, name, NM_LINK_TYPE_BRIDGE);

View file

@ -101,6 +101,7 @@ software_add(NMLinkType link_type, const char *name)
name, name,
NULL, NULL,
0, 0,
0,
&nm_platform_lnk_bridge_default, &nm_platform_lnk_bridge_default,
NULL)); NULL));
case NM_LINK_TYPE_BOND: case NM_LINK_TYPE_BOND:
@ -131,6 +132,7 @@ software_add(NMLinkType link_type, const char *name)
PARENT_NAME, PARENT_NAME,
NULL, NULL,
0, 0,
0,
&nm_platform_lnk_bridge_default, &nm_platform_lnk_bridge_default,
NULL))) NULL)))
accept_signal(parent_added); accept_signal(parent_added);
@ -581,6 +583,7 @@ test_bridge_addr(void)
DEVICE_NAME, DEVICE_NAME,
addr, addr,
sizeof(addr), sizeof(addr),
0,
&nm_platform_lnk_bridge_default, &nm_platform_lnk_bridge_default,
&plink))); &plink)));
g_assert(plink); g_assert(plink);