initrd: generate initrd generator profiles with autoconnect-priority -100

... and profiles from firmware with autoconnect-priority -200.

In general, after switch root we remember the still activated profile in
/run, and NetworkManager would take over the device with the same
profile as before. In that case, autoconnect and autoconnect-priority
doesn't matter.

Autoconnect only matters when having a device in disconnected state and
not being blocked from autoconnect. For example, if you unplug and
replug the cable. In that case, it does make sense to me that
user-provided profiles from real-root are preferred.

To me the reasons for this change is not very strong (but neither are
the reasons against it). Read the discussion on rhbz #2089707.

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

Co-authored-by: Lubomir Rintel <lkundrak@v3.sk>

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1376
This commit is contained in:
Thomas Haller
2022-09-12 11:33:46 +02:00
parent d8aacba3b2
commit 98575bd513
4 changed files with 13 additions and 0 deletions

View File

@@ -12,6 +12,9 @@
#define NMI_WAIT_DEVICE_TIMEOUT_MSEC 60000 #define NMI_WAIT_DEVICE_TIMEOUT_MSEC 60000
#define NMI_IP_REQUIRED_TIMEOUT_MSEC 20000 #define NMI_IP_REQUIRED_TIMEOUT_MSEC 20000
#define NMI_AUTOCONNECT_PRIORITY_CMDLINE -100
#define NMI_AUTOCONNECT_PRIORITY_FIRMWARE -200
static inline int static inline int
get_ip_address_family(const char *str, gboolean with_prefix) get_ip_address_family(const char *str, gboolean with_prefix)
{ {

View File

@@ -99,6 +99,7 @@ reader_create_connection(Reader *reader,
const char *ifname, const char *ifname,
const char *mac, const char *mac,
const char *type_name, const char *type_name,
int autoconnect_priority,
NMConnectionMultiConnect multi_connect) NMConnectionMultiConnect multi_connect)
{ {
NMConnection *connection; NMConnection *connection;
@@ -155,6 +156,8 @@ reader_create_connection(Reader *reader,
multi_connect, multi_connect,
NM_SETTING_CONNECTION_AUTOCONNECT_RETRIES, NM_SETTING_CONNECTION_AUTOCONNECT_RETRIES,
1, 1,
NM_SETTING_CONNECTION_AUTOCONNECT_PRIORITY,
autoconnect_priority,
NULL); NULL);
if (nm_streq0(type_name, NM_SETTING_INFINIBAND_SETTING_NAME)) { if (nm_streq0(type_name, NM_SETTING_INFINIBAND_SETTING_NAME)) {
@@ -189,6 +192,7 @@ reader_get_default_connection(Reader *reader)
NULL, NULL,
NULL, NULL,
NM_SETTING_WIRED_SETTING_NAME, NM_SETTING_WIRED_SETTING_NAME,
NMI_AUTOCONNECT_PRIORITY_CMDLINE,
NM_CONNECTION_MULTI_CONNECT_MULTIPLE); NM_CONNECTION_MULTI_CONNECT_MULTIPLE);
nm_connection_add_setting(con, nm_setting_wired_new()); nm_connection_add_setting(con, nm_setting_wired_new());
reader->default_connection = con; reader->default_connection = con;
@@ -264,6 +268,7 @@ reader_get_connection(Reader *reader,
ifname, ifname,
mac, mac,
type_name, type_name,
NMI_AUTOCONNECT_PRIORITY_CMDLINE,
NM_CONNECTION_MULTI_CONNECT_SINGLE); NM_CONNECTION_MULTI_CONNECT_SINGLE);
} }
setting = (NMSetting *) nm_connection_get_setting_connection(connection); setting = (NMSetting *) nm_connection_get_setting_connection(connection);
@@ -1526,6 +1531,7 @@ nmi_cmdline_reader_parse(const char *etc_connections_dir,
NULL, NULL,
bootif, bootif,
NM_SETTING_WIRED_SETTING_NAME, NM_SETTING_WIRED_SETTING_NAME,
NMI_AUTOCONNECT_PRIORITY_FIRMWARE,
NM_CONNECTION_MULTI_CONNECT_SINGLE); NM_CONNECTION_MULTI_CONNECT_SINGLE);
} else { } else {
g_object_set(s_wired, NM_SETTING_WIRED_MAC_ADDRESS, bootif, NULL); g_object_set(s_wired, NM_SETTING_WIRED_MAC_ADDRESS, bootif, NULL);

View File

@@ -248,6 +248,8 @@ nmi_dt_reader_parse(const char *sysfs_dir)
NM_SETTING_WIRED_SETTING_NAME, NM_SETTING_WIRED_SETTING_NAME,
NM_SETTING_CONNECTION_ID, NM_SETTING_CONNECTION_ID,
"OpenFirmware Connection", "OpenFirmware Connection",
NM_SETTING_CONNECTION_AUTOCONNECT_PRIORITY,
NMI_AUTOCONNECT_PRIORITY_FIRMWARE,
NULL)); NULL));
s_ip4 = nm_setting_ip4_config_new(); s_ip4 = nm_setting_ip4_config_new();

View File

@@ -330,6 +330,8 @@ connection_setting_add(GHashTable *nic,
id, id,
NM_SETTING_CONNECTION_INTERFACE_NAME, NM_SETTING_CONNECTION_INTERFACE_NAME,
NULL, NULL,
NM_SETTING_CONNECTION_AUTOCONNECT_PRIORITY,
NMI_AUTOCONNECT_PRIORITY_FIRMWARE,
NULL); NULL);
g_free(uuid); g_free(uuid);