mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-02-26 20:30:38 +01:00
ovs: also set cloned MAC address via netlink
We already set the MAC of OVS interfaces in the ovsdb. Unfortunately, vswitchd doesn't create the interface with the given MAC from the beginning, but first creates it with a random MAC and then changes it. This causes a race condition: as soon as NM sees the new link, it starts IP configuration on it and (possibly later) vswitchd will change the MAC. To avoid this, also set the desired MAC via netlink before starting IP configuration. https://bugzilla.redhat.com/show_bug.cgi?id=1852106 https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/issues/483 (cherry picked from commit47ec3d14d4) (cherry picked from commit60d10b146d) (cherry picked from commit0139995590) (cherry picked from commit69c5c5e767) (cherry picked from commit91d2b0fd5a)
This commit is contained in:
parent
9493f1f151
commit
037ff28708
1 changed files with 15 additions and 0 deletions
|
|
@ -117,6 +117,14 @@ link_changed (NMDevice *device,
|
|||
priv->waiting_for_interface = FALSE;
|
||||
|
||||
if (nm_device_get_state (device) == NM_DEVICE_STATE_IP_CONFIG) {
|
||||
if (!nm_device_hw_addr_set_cloned (device,
|
||||
nm_device_get_applied_connection (device),
|
||||
FALSE)) {
|
||||
nm_device_state_changed (device,
|
||||
NM_DEVICE_STATE_FAILED,
|
||||
NM_DEVICE_STATE_REASON_CONFIG_FAILED);
|
||||
return;
|
||||
}
|
||||
nm_device_bring_up (device, TRUE, NULL);
|
||||
nm_device_activate_schedule_stage3_ip_config_start (device);
|
||||
}
|
||||
|
|
@ -189,6 +197,13 @@ act_stage3_ip_config_start (NMDevice *device,
|
|||
return NM_ACT_STAGE_RETURN_POSTPONE;
|
||||
}
|
||||
|
||||
if (!nm_device_hw_addr_set_cloned (device,
|
||||
nm_device_get_applied_connection (device),
|
||||
FALSE)) {
|
||||
*out_failure_reason = NM_DEVICE_STATE_REASON_CONFIG_FAILED;
|
||||
return NM_ACT_STAGE_RETURN_FAILURE;
|
||||
}
|
||||
|
||||
return NM_DEVICE_CLASS (nm_device_ovs_interface_parent_class)->act_stage3_ip_config_start (device, addr_family, out_config, out_failure_reason);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue