mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager
synced 2024-07-21 10:14:41 +00:00
initrd: don't add a connection if there's a connection dir with rd.neednet
Only create a default connection with rd.neednet if we're starting with a totally blank slate. Otherwise it could be that the user already included configuration in the initrd and merely wants us to activate it. https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/999
This commit is contained in:
parent
af1903fe3f
commit
79885656d3
|
@ -74,6 +74,21 @@
|
|||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>
|
||||
<group choice='plain'>
|
||||
<arg choice='plain'><option>-p</option></arg>
|
||||
<arg choice='plain'><option>--persistent-connections-dir</option></arg>
|
||||
</group>
|
||||
<arg choice='plain'><replaceable>path</replaceable></arg>
|
||||
</term>
|
||||
|
||||
<listitem>
|
||||
<para>Persistent connection directory. If it exists, rd.neednet will not
|
||||
cause a default connection to be generated in absence of other options.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>
|
||||
<group choice='plain'>
|
||||
|
|
|
@ -80,13 +80,14 @@ int
|
|||
main(int argc, char *argv[])
|
||||
{
|
||||
GHashTable *connections;
|
||||
gs_free char *connections_dir = NULL;
|
||||
gs_free char *initrd_dir = NULL;
|
||||
gs_free char *sysfs_dir = NULL;
|
||||
gs_free char *run_config_dir = NULL;
|
||||
gboolean dump_to_stdout = FALSE;
|
||||
gs_strfreev char **remaining = NULL;
|
||||
GOptionEntry option_entries[] = {
|
||||
gs_free char *connections_dir = NULL;
|
||||
gs_free char *etc_connections_dir = NULL;
|
||||
gs_free char *initrd_dir = NULL;
|
||||
gs_free char *sysfs_dir = NULL;
|
||||
gs_free char *run_config_dir = NULL;
|
||||
gboolean dump_to_stdout = FALSE;
|
||||
gs_strfreev char **remaining = NULL;
|
||||
GOptionEntry option_entries[] = {
|
||||
{"connections-dir",
|
||||
'c',
|
||||
0,
|
||||
|
@ -94,6 +95,13 @@ main(int argc, char *argv[])
|
|||
&connections_dir,
|
||||
"Output connection directory",
|
||||
NM_KEYFILE_PATH_NAME_RUN},
|
||||
{"persistent-connections-dir",
|
||||
'p',
|
||||
0,
|
||||
G_OPTION_ARG_FILENAME,
|
||||
&etc_connections_dir,
|
||||
"Persistent connection directory",
|
||||
NM_KEYFILE_PATH_NAME_ETC_DEFAULT},
|
||||
{"initrd-data-dir",
|
||||
'i',
|
||||
0,
|
||||
|
@ -153,6 +161,8 @@ main(int argc, char *argv[])
|
|||
return 0;
|
||||
}
|
||||
|
||||
if (!etc_connections_dir)
|
||||
etc_connections_dir = g_strdup(NM_KEYFILE_PATH_NAME_ETC_DEFAULT);
|
||||
if (!connections_dir)
|
||||
connections_dir = g_strdup(NM_KEYFILE_PATH_NAME_RUN);
|
||||
if (!sysfs_dir)
|
||||
|
@ -162,7 +172,8 @@ main(int argc, char *argv[])
|
|||
if (!run_config_dir)
|
||||
run_config_dir = g_strdup(DEFAULT_RUN_CONFIG_DIR);
|
||||
|
||||
connections = nmi_cmdline_reader_parse(sysfs_dir,
|
||||
connections = nmi_cmdline_reader_parse(etc_connections_dir,
|
||||
sysfs_dir,
|
||||
(const char *const *) remaining,
|
||||
&hostname,
|
||||
&carrier_timeout_sec);
|
||||
|
|
|
@ -38,7 +38,8 @@ nmi_ibft_update_connection_from_nic(NMConnection *connection, GHashTable *nic, G
|
|||
|
||||
NMConnection *nmi_dt_reader_parse(const char *sysfs_dir);
|
||||
|
||||
GHashTable *nmi_cmdline_reader_parse(const char *sysfs_dir,
|
||||
GHashTable *nmi_cmdline_reader_parse(const char *etc_connections_dir,
|
||||
const char *sysfs_dir,
|
||||
const char *const *argv,
|
||||
char **hostname,
|
||||
gint64 *carrier_timeout_sec);
|
||||
|
|
|
@ -1316,7 +1316,8 @@ connection_set_needed_cb(gpointer key, gpointer value, gpointer user_data)
|
|||
}
|
||||
|
||||
GHashTable *
|
||||
nmi_cmdline_reader_parse(const char *sysfs_dir,
|
||||
nmi_cmdline_reader_parse(const char *etc_connections_dir,
|
||||
const char *sysfs_dir,
|
||||
const char *const *argv,
|
||||
char **hostname,
|
||||
gint64 *carrier_timeout_sec)
|
||||
|
@ -1512,7 +1513,8 @@ nmi_cmdline_reader_parse(const char *sysfs_dir,
|
|||
}
|
||||
|
||||
if (neednet) {
|
||||
if (g_hash_table_size(reader->hash) == 0) {
|
||||
if (!(etc_connections_dir && g_file_test(etc_connections_dir, G_FILE_TEST_IS_DIR))
|
||||
&& g_hash_table_size(reader->hash) == 0) {
|
||||
/* Make sure there's some connection. */
|
||||
reader_get_default_connection(reader);
|
||||
}
|
||||
|
|
|
@ -29,7 +29,8 @@
|
|||
gint64 *const _out_carrier_timeout_sec = (out_carrier_timeout_sec); \
|
||||
GHashTable *_connections; \
|
||||
\
|
||||
_connections = nmi_cmdline_reader_parse(TEST_INITRD_DIR "/sysfs", \
|
||||
_connections = nmi_cmdline_reader_parse(NULL, \
|
||||
TEST_INITRD_DIR "/sysfs", \
|
||||
_ARGV, \
|
||||
_out_hostname, \
|
||||
_out_carrier_timeout_sec); \
|
||||
|
|
Loading…
Reference in a new issue