initrd: save hostname to a file in /run

Save the hostname read from command line to a file in /run so that it
can be applied later by the NM dracut module.

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/issues/419
This commit is contained in:
Beniamino Galvani 2020-05-04 10:03:21 +02:00
parent f14cc584d5
commit ff70adf873
4 changed files with 108 additions and 27 deletions

View file

@ -85,6 +85,7 @@ main (int argc, char *argv[])
}; };
GOptionContext *option_context; GOptionContext *option_context;
gs_free_error GError *error = NULL; gs_free_error GError *error = NULL;
gs_free char *hostname = NULL;
int errsv; int errsv;
option_context = g_option_context_new ("-- [ip=...] [rd.route=...] [bridge=...] [bond=...] [team=...] [vlan=...] " option_context = g_option_context_new ("-- [ip=...] [rd.route=...] [bridge=...] [bond=...] [team=...] [vlan=...] "
@ -122,7 +123,10 @@ main (int argc, char *argv[])
return 1; return 1;
} }
connections = nmi_cmdline_reader_parse (sysfs_dir, (const char *const*) remaining); connections = nmi_cmdline_reader_parse (sysfs_dir,
(const char *const*) remaining,
&hostname);
g_hash_table_foreach (connections, output_conn, connections_dir); g_hash_table_foreach (connections, output_conn, connections_dir);
g_hash_table_destroy (connections); g_hash_table_destroy (connections);
@ -131,5 +135,19 @@ main (int argc, char *argv[])
_LOGW (LOGD_CORE, "%s: %s", initrd_dir, nm_strerror_native (errsv)); _LOGW (LOGD_CORE, "%s: %s", initrd_dir, nm_strerror_native (errsv));
return 1; return 1;
} }
if (hostname) {
gs_free char *hostname_file = NULL;
gs_free char *data = NULL;
hostname_file = g_strdup_printf ("%s/hostname", initrd_dir);
data = g_strdup_printf ("%s\n", hostname);
if (!g_file_set_contents (hostname_file, data, strlen (data), &error)) {
_LOGW (LOGD_CORE, "%s: %s", hostname_file, error->message);
return 1;
}
}
return 0; return 0;
} }

View file

@ -28,6 +28,6 @@ gboolean nmi_ibft_update_connection_from_nic (NMConnection *connection, GHashTab
NMConnection *nmi_dt_reader_parse (const char *sysfs_dir); NMConnection *nmi_dt_reader_parse (const char *sysfs_dir);
GHashTable *nmi_cmdline_reader_parse (const char *sysfs_dir, const char *const*argv); GHashTable *nmi_cmdline_reader_parse (const char *sysfs_dir, const char *const*argv, char **hostname);
#endif /* __NM_INITRD_GENERATOR_H__ */ #endif /* __NM_INITRD_GENERATOR_H__ */

View file

@ -7,6 +7,7 @@
#include "nm-core-internal.h" #include "nm-core-internal.h"
#include "nm-initrd-generator.h" #include "nm-initrd-generator.h"
#include "systemd/nm-sd-utils-shared.h"
/*****************************************************************************/ /*****************************************************************************/
@ -22,6 +23,7 @@ typedef struct {
GPtrArray *array; GPtrArray *array;
NMConnection *bootdev_connection; /* connection for bootdev=$ifname */ NMConnection *bootdev_connection; /* connection for bootdev=$ifname */
NMConnection *default_connection; /* connection not bound to any ifname */ NMConnection *default_connection; /* connection not bound to any ifname */
char *hostname;
} Reader; } Reader;
static Reader * static Reader *
@ -45,6 +47,7 @@ reader_destroy (Reader *reader, gboolean free_hash)
g_ptr_array_unref (reader->array); g_ptr_array_unref (reader->array);
hash = g_steal_pointer (&reader->hash); hash = g_steal_pointer (&reader->hash);
nm_clear_g_free (&reader->hostname);
nm_g_slice_free (reader); nm_g_slice_free (reader);
if (!free_hash) if (!free_hash)
return g_steal_pointer (&hash); return g_steal_pointer (&hash);
@ -345,6 +348,14 @@ reader_parse_ip (Reader *reader, const char *sysfs_dir, char *argument)
ifname = tmp; ifname = tmp;
} }
if (client_hostname && !nm_sd_hostname_is_valid (client_hostname, FALSE))
client_hostname = NULL;
if (client_hostname) {
g_free (reader->hostname);
reader->hostname = g_strdup (client_hostname);
}
/* <ifname>:{none|off|dhcp|on|any|dhcp6|auto6|ibft} */ /* <ifname>:{none|off|dhcp|on|any|dhcp6|auto6|ibft} */
kind = get_word (&argument, ':'); kind = get_word (&argument, ':');
@ -875,7 +886,7 @@ reader_add_nameservers (Reader *reader, GPtrArray *nameservers)
} }
GHashTable * GHashTable *
nmi_cmdline_reader_parse (const char *sysfs_dir, const char *const*argv) nmi_cmdline_reader_parse (const char *sysfs_dir, const char *const*argv, char **hostname)
{ {
Reader *reader; Reader *reader;
const char *tag; const char *tag;
@ -1013,5 +1024,8 @@ nmi_cmdline_reader_parse (const char *sysfs_dir, const char *const*argv)
reader_set_ignore_auto_dns (reader); reader_set_ignore_auto_dns (reader);
g_hash_table_foreach (reader->hash, _normalize_conn, NULL); g_hash_table_foreach (reader->hash, _normalize_conn, NULL);
NM_SET_OUT (hostname, g_steal_pointer (&reader->hostname));
return reader_destroy (reader, FALSE); return reader_destroy (reader, FALSE);
} }

View file

@ -30,10 +30,12 @@ test_auto (void)
NMSettingWired *s_wired; NMSettingWired *s_wired;
NMSettingIPConfig *s_ip4; NMSettingIPConfig *s_ip4;
NMSettingIPConfig *s_ip6; NMSettingIPConfig *s_ip6;
gs_free char *hostname = NULL;
connections = nmi_cmdline_reader_parse (TEST_INITRD_DIR "/sysfs", ARGV); connections = nmi_cmdline_reader_parse (TEST_INITRD_DIR "/sysfs", ARGV, &hostname);
g_assert (connections); g_assert (connections);
g_assert_cmpint (g_hash_table_size (connections), ==, 1); g_assert_cmpint (g_hash_table_size (connections), ==, 1);
g_assert_cmpstr (hostname, ==, NULL);
connection = g_hash_table_lookup (connections, "default_connection"); connection = g_hash_table_lookup (connections, "default_connection");
g_assert (connection); g_assert (connection);
@ -81,10 +83,12 @@ test_if_auto_with_mtu (void)
NMSettingWired *s_wired; NMSettingWired *s_wired;
NMSettingIPConfig *s_ip4; NMSettingIPConfig *s_ip4;
NMSettingIPConfig *s_ip6; NMSettingIPConfig *s_ip6;
gs_free char *hostname = NULL;
connections = nmi_cmdline_reader_parse (TEST_INITRD_DIR "/sysfs", ARGV); connections = nmi_cmdline_reader_parse (TEST_INITRD_DIR "/sysfs", ARGV, &hostname);
g_assert (connections); g_assert (connections);
g_assert_cmpint (g_hash_table_size (connections), ==, 1); g_assert_cmpint (g_hash_table_size (connections), ==, 1);
g_assert_cmpstr (hostname, ==, NULL);
connection = g_hash_table_lookup (connections, "eth0"); connection = g_hash_table_lookup (connections, "eth0");
g_assert (connection); g_assert (connection);
@ -115,10 +119,13 @@ test_if_dhcp6 (void)
NMConnection *connection; NMConnection *connection;
NMSettingIPConfig *s_ip4; NMSettingIPConfig *s_ip4;
NMSettingIPConfig *s_ip6; NMSettingIPConfig *s_ip6;
gs_free char *hostname = NULL;
connections = nmi_cmdline_reader_parse (TEST_INITRD_DIR "/sysfs", ARGV); connections = nmi_cmdline_reader_parse (TEST_INITRD_DIR "/sysfs", ARGV, &hostname);
g_assert (connections); g_assert (connections);
g_assert_cmpint (g_hash_table_size (connections), ==, 1); g_assert_cmpint (g_hash_table_size (connections), ==, 1);
g_assert_cmpstr (hostname, ==, NULL);
connection = g_hash_table_lookup (connections, "eth1"); connection = g_hash_table_lookup (connections, "eth1");
g_assert (connection); g_assert (connection);
nmtst_assert_connection_verifies_without_normalization (connection); nmtst_assert_connection_verifies_without_normalization (connection);
@ -145,10 +152,12 @@ test_if_auto_with_mtu_and_mac (void)
NMSettingWired *s_wired; NMSettingWired *s_wired;
NMSettingIPConfig *s_ip4; NMSettingIPConfig *s_ip4;
NMSettingIPConfig *s_ip6; NMSettingIPConfig *s_ip6;
gs_free char *hostname = NULL;
connections = nmi_cmdline_reader_parse (TEST_INITRD_DIR "/sysfs", ARGV); connections = nmi_cmdline_reader_parse (TEST_INITRD_DIR "/sysfs", ARGV, &hostname);
g_assert (connections); g_assert (connections);
g_assert_cmpint (g_hash_table_size (connections), ==, 1); g_assert_cmpint (g_hash_table_size (connections), ==, 1);
g_assert_cmpstr (hostname, ==, NULL);
connection = g_hash_table_lookup (connections, "eth2"); connection = g_hash_table_lookup (connections, "eth2");
g_assert (connection); g_assert (connection);
@ -183,10 +192,12 @@ test_if_ip4_manual (void)
NMConnection *connection; NMConnection *connection;
NMSettingIPConfig *s_ip4; NMSettingIPConfig *s_ip4;
NMIPAddress *ip_addr; NMIPAddress *ip_addr;
gs_free char *hostname = NULL;
connections = nmi_cmdline_reader_parse (TEST_INITRD_DIR "/sysfs", ARGV); connections = nmi_cmdline_reader_parse (TEST_INITRD_DIR "/sysfs", ARGV, &hostname);
g_assert (connections); g_assert (connections);
g_assert_cmpint (g_hash_table_size (connections), ==, 2); g_assert_cmpint (g_hash_table_size (connections), ==, 2);
g_assert_cmpstr (hostname, ==, "hostname1.example.com");
connection = g_hash_table_lookup (connections, "eth3"); connection = g_hash_table_lookup (connections, "eth3");
g_assert (connection); g_assert (connection);
@ -237,10 +248,12 @@ test_if_ip6_manual (void)
NMConnection *connection; NMConnection *connection;
NMSettingIPConfig *s_ip6; NMSettingIPConfig *s_ip6;
NMIPAddress *ip_addr; NMIPAddress *ip_addr;
gs_free char *hostname = NULL;
connections = nmi_cmdline_reader_parse (TEST_INITRD_DIR "/sysfs", ARGV); connections = nmi_cmdline_reader_parse (TEST_INITRD_DIR "/sysfs", ARGV, &hostname);
g_assert (connections); g_assert (connections);
g_assert_cmpint (g_hash_table_size (connections), ==, 1); g_assert_cmpint (g_hash_table_size (connections), ==, 1);
g_assert_cmpstr (hostname, ==, "hostname0.example.com");
connection = g_hash_table_lookup (connections, "eth4"); connection = g_hash_table_lookup (connections, "eth4");
g_assert (connection); g_assert (connection);
@ -274,10 +287,12 @@ test_multiple_merge (void)
NMSettingIPConfig *s_ip4; NMSettingIPConfig *s_ip4;
NMSettingIPConfig *s_ip6; NMSettingIPConfig *s_ip6;
NMIPAddress *ip_addr; NMIPAddress *ip_addr;
gs_free char *hostname = NULL;
connections = nmi_cmdline_reader_parse (TEST_INITRD_DIR "/sysfs", ARGV); connections = nmi_cmdline_reader_parse (TEST_INITRD_DIR "/sysfs", ARGV, &hostname);
g_assert (connections); g_assert (connections);
g_assert_cmpint (g_hash_table_size (connections), ==, 1); g_assert_cmpint (g_hash_table_size (connections), ==, 1);
g_assert_cmpstr (hostname, ==, NULL);
connection = g_hash_table_lookup (connections, "eth0"); connection = g_hash_table_lookup (connections, "eth0");
g_assert (connection); g_assert (connection);
@ -317,10 +332,12 @@ test_multiple_bootdev (void)
NMConnection *connection; NMConnection *connection;
NMSettingIPConfig *s_ip4; NMSettingIPConfig *s_ip4;
NMSettingIPConfig *s_ip6; NMSettingIPConfig *s_ip6;
gs_free char *hostname = NULL;
connections = nmi_cmdline_reader_parse (TEST_INITRD_DIR "/sysfs", ARGV); connections = nmi_cmdline_reader_parse (TEST_INITRD_DIR "/sysfs", ARGV, &hostname);
g_assert (connections); g_assert (connections);
g_assert_cmpint (g_hash_table_size (connections), ==, 2); g_assert_cmpint (g_hash_table_size (connections), ==, 2);
g_assert_cmpstr (hostname, ==, NULL);
connection = g_hash_table_lookup (connections, "eth3"); connection = g_hash_table_lookup (connections, "eth3");
g_assert (connection); g_assert (connection);
@ -344,10 +361,12 @@ test_bootdev (void)
const char *const*ARGV = NM_MAKE_STRV ("vlan=vlan2:ens5", "bootdev=ens3"); const char *const*ARGV = NM_MAKE_STRV ("vlan=vlan2:ens5", "bootdev=ens3");
NMConnection *connection; NMConnection *connection;
NMSettingConnection *s_con; NMSettingConnection *s_con;
gs_free char *hostname = NULL;
connections = nmi_cmdline_reader_parse (TEST_INITRD_DIR "/sysfs", ARGV); connections = nmi_cmdline_reader_parse (TEST_INITRD_DIR "/sysfs", ARGV, &hostname);
g_assert (connections); g_assert (connections);
g_assert_cmpint (g_hash_table_size (connections), ==, 2); g_assert_cmpint (g_hash_table_size (connections), ==, 2);
g_assert_cmpstr (hostname, ==, NULL);
connection = g_hash_table_lookup (connections, "ens3"); connection = g_hash_table_lookup (connections, "ens3");
g_assert (connection); g_assert (connection);
@ -384,10 +403,12 @@ test_some_more (void)
NMSettingIPConfig *s_ip4; NMSettingIPConfig *s_ip4;
NMSettingIPConfig *s_ip6; NMSettingIPConfig *s_ip6;
NMIPRoute *ip_route; NMIPRoute *ip_route;
gs_free char *hostname = NULL;
connections = nmi_cmdline_reader_parse (TEST_INITRD_DIR "/sysfs", ARGV); connections = nmi_cmdline_reader_parse (TEST_INITRD_DIR "/sysfs", ARGV, &hostname);
g_assert (connections); g_assert (connections);
g_assert_cmpint (g_hash_table_size (connections), ==, 2); g_assert_cmpint (g_hash_table_size (connections), ==, 2);
g_assert_cmpstr (hostname, ==, NULL);
connection = g_hash_table_lookup (connections, "eth1"); connection = g_hash_table_lookup (connections, "eth1");
g_assert (connection); g_assert (connection);
@ -466,10 +487,12 @@ test_bond (void)
NMSettingBond *s_bond; NMSettingBond *s_bond;
NMIPRoute *ip_route; NMIPRoute *ip_route;
const char *master_uuid; const char *master_uuid;
gs_free char *hostname = NULL;
connections = nmi_cmdline_reader_parse (TEST_INITRD_DIR "/sysfs", ARGV); connections = nmi_cmdline_reader_parse (TEST_INITRD_DIR "/sysfs", ARGV, &hostname);
g_assert (connections); g_assert (connections);
g_assert_cmpint (g_hash_table_size (connections), ==, 3); g_assert_cmpint (g_hash_table_size (connections), ==, 3);
g_assert_cmpstr (hostname, ==, NULL);
connection = g_hash_table_lookup (connections, "bong0"); connection = g_hash_table_lookup (connections, "bong0");
g_assert (connection); g_assert (connection);
@ -545,10 +568,12 @@ test_bond_default (void)
NMSettingIPConfig *s_ip6; NMSettingIPConfig *s_ip6;
NMSettingBond *s_bond; NMSettingBond *s_bond;
const char *master_uuid; const char *master_uuid;
gs_free char *hostname = NULL;
connections = nmi_cmdline_reader_parse (TEST_INITRD_DIR "/sysfs", ARGV); connections = nmi_cmdline_reader_parse (TEST_INITRD_DIR "/sysfs", ARGV, &hostname);
g_assert (connections); g_assert (connections);
g_assert_cmpint (g_hash_table_size (connections), ==, 2); g_assert_cmpint (g_hash_table_size (connections), ==, 2);
g_assert_cmpstr (hostname, ==, NULL);
connection = g_hash_table_lookup (connections, "bond0"); connection = g_hash_table_lookup (connections, "bond0");
@ -606,10 +631,12 @@ test_bridge (void)
NMSettingBridge *s_bridge; NMSettingBridge *s_bridge;
NMIPRoute *ip_route; NMIPRoute *ip_route;
const char *master_uuid; const char *master_uuid;
gs_free char *hostname = NULL;
connections = nmi_cmdline_reader_parse (TEST_INITRD_DIR "/sysfs", ARGV); connections = nmi_cmdline_reader_parse (TEST_INITRD_DIR "/sysfs", ARGV, &hostname);
g_assert (connections); g_assert (connections);
g_assert_cmpint (g_hash_table_size (connections), ==, 3); g_assert_cmpint (g_hash_table_size (connections), ==, 3);
g_assert_cmpstr (hostname, ==, NULL);
connection = g_hash_table_lookup (connections, "bridge0"); connection = g_hash_table_lookup (connections, "bridge0");
g_assert (connection); g_assert (connection);
@ -682,10 +709,12 @@ test_bridge_default (void)
NMSettingIPConfig *s_ip6; NMSettingIPConfig *s_ip6;
NMSettingBridge *s_bridge; NMSettingBridge *s_bridge;
const char *master_uuid; const char *master_uuid;
gs_free char *hostname = NULL;
connections = nmi_cmdline_reader_parse (TEST_INITRD_DIR "/sysfs", ARGV); connections = nmi_cmdline_reader_parse (TEST_INITRD_DIR "/sysfs", ARGV, &hostname);
g_assert (connections); g_assert (connections);
g_assert_cmpint (g_hash_table_size (connections), ==, 2); g_assert_cmpint (g_hash_table_size (connections), ==, 2);
g_assert_cmpstr (hostname, ==, NULL);
connection = g_hash_table_lookup (connections, "br0"); connection = g_hash_table_lookup (connections, "br0");
@ -740,10 +769,12 @@ test_team (void)
NMSettingIPConfig *s_ip6; NMSettingIPConfig *s_ip6;
NMSettingTeam *s_team; NMSettingTeam *s_team;
const char *master_uuid; const char *master_uuid;
gs_free char *hostname = NULL;
connections = nmi_cmdline_reader_parse (TEST_INITRD_DIR "/sysfs", ARGV); connections = nmi_cmdline_reader_parse (TEST_INITRD_DIR "/sysfs", ARGV, &hostname);
g_assert (connections); g_assert (connections);
g_assert_cmpint (g_hash_table_size (connections), ==, 3); g_assert_cmpint (g_hash_table_size (connections), ==, 3);
g_assert_cmpstr (hostname, ==, NULL);
connection = g_hash_table_lookup (connections, "team0"); connection = g_hash_table_lookup (connections, "team0");
g_assert (connection); g_assert (connection);
@ -806,10 +837,12 @@ test_ibft_ip_dev (void)
gs_unref_hashtable GHashTable *connections = NULL; gs_unref_hashtable GHashTable *connections = NULL;
NMSettingConnection *s_con; NMSettingConnection *s_con;
NMConnection *connection; NMConnection *connection;
gs_free char *hostname = NULL;
connections = nmi_cmdline_reader_parse (TEST_INITRD_DIR "/sysfs", ARGV); connections = nmi_cmdline_reader_parse (TEST_INITRD_DIR "/sysfs", ARGV, &hostname);
g_assert (connections); g_assert (connections);
g_assert_cmpint (g_hash_table_size (connections), ==, 1); g_assert_cmpint (g_hash_table_size (connections), ==, 1);
g_assert_cmpstr (hostname, ==, NULL);
connection = g_hash_table_lookup (connections, "eth0"); connection = g_hash_table_lookup (connections, "eth0");
g_assert (connection); g_assert (connection);
@ -825,10 +858,12 @@ _test_ibft_ip (const char *const*ARGV)
{ {
gs_unref_hashtable GHashTable *connections = NULL; gs_unref_hashtable GHashTable *connections = NULL;
NMConnection *connection; NMConnection *connection;
gs_free char *hostname = NULL;
connections = nmi_cmdline_reader_parse (TEST_INITRD_DIR "/sysfs", ARGV); connections = nmi_cmdline_reader_parse (TEST_INITRD_DIR "/sysfs", ARGV, &hostname);
g_assert (connections); g_assert (connections);
g_assert_cmpint (g_hash_table_size (connections), ==, 2); g_assert_cmpint (g_hash_table_size (connections), ==, 2);
g_assert_cmpstr (hostname, ==, NULL);
connection = g_hash_table_lookup (connections, "ibft0"); connection = g_hash_table_lookup (connections, "ibft0");
g_assert (connection); g_assert (connection);
@ -864,10 +899,12 @@ test_ignore_extra (void)
{ {
gs_unref_hashtable GHashTable *connections = NULL; gs_unref_hashtable GHashTable *connections = NULL;
const char *const*ARGV = NM_MAKE_STRV ("blabla", "extra", "lalala"); const char *const*ARGV = NM_MAKE_STRV ("blabla", "extra", "lalala");
gs_free char *hostname = NULL;
connections = nmi_cmdline_reader_parse (TEST_INITRD_DIR "/sysfs", ARGV); connections = nmi_cmdline_reader_parse (TEST_INITRD_DIR "/sysfs", ARGV, &hostname);
g_assert (connections); g_assert (connections);
g_assert_cmpint (g_hash_table_size (connections), ==, 0); g_assert_cmpint (g_hash_table_size (connections), ==, 0);
g_assert_cmpstr (hostname, ==, NULL);
} }
static void static void
@ -886,10 +923,12 @@ test_rd_znet (void)
{ .name = "portno", .value_str = "1" }, { .name = "portno", .value_str = "1" },
}; };
int i_s390_options_keys; int i_s390_options_keys;
gs_free char *hostname = NULL;
connections = nmi_cmdline_reader_parse (TEST_INITRD_DIR "/sysfs", ARGV); connections = nmi_cmdline_reader_parse (TEST_INITRD_DIR "/sysfs", ARGV, &hostname);
g_assert (connections); g_assert (connections);
g_assert_cmpint (g_hash_table_size (connections), ==, 2); g_assert_cmpint (g_hash_table_size (connections), ==, 2);
g_assert_cmpstr (hostname, ==, "foo.example.com");
connection = g_hash_table_lookup (connections, "enc800"); connection = g_hash_table_lookup (connections, "enc800");
g_assert (NM_IS_CONNECTION (connection)); g_assert (NM_IS_CONNECTION (connection));
@ -963,10 +1002,12 @@ test_rd_znet_legacy (void)
"net.ifnames=0"); "net.ifnames=0");
NMConnection *connection; NMConnection *connection;
NMSettingConnection *s_con; NMSettingConnection *s_con;
gs_free char *hostname = NULL;
connections = nmi_cmdline_reader_parse (TEST_INITRD_DIR "/sysfs", ARGV); connections = nmi_cmdline_reader_parse (TEST_INITRD_DIR "/sysfs", ARGV, &hostname);
g_assert (connections); g_assert (connections);
g_assert_cmpint (g_hash_table_size (connections), ==, 2); g_assert_cmpint (g_hash_table_size (connections), ==, 2);
g_assert_cmpstr (hostname, ==, "foo.example.com");
connection = g_hash_table_lookup (connections, "eth0"); connection = g_hash_table_lookup (connections, "eth0");
g_assert (NM_IS_CONNECTION (connection)); g_assert (NM_IS_CONNECTION (connection));
@ -1001,10 +1042,12 @@ test_bootif (void)
NMSettingWired *s_wired; NMSettingWired *s_wired;
NMSettingIPConfig *s_ip4; NMSettingIPConfig *s_ip4;
NMSettingIPConfig *s_ip6; NMSettingIPConfig *s_ip6;
gs_free char *hostname = NULL;
connections = nmi_cmdline_reader_parse (TEST_INITRD_DIR "/sysfs", ARGV); connections = nmi_cmdline_reader_parse (TEST_INITRD_DIR "/sysfs", ARGV, &hostname);
g_assert (connections); g_assert (connections);
g_assert_cmpint (g_hash_table_size (connections), ==, 1); g_assert_cmpint (g_hash_table_size (connections), ==, 1);
g_assert_cmpstr (hostname, ==, NULL);
connection = g_hash_table_lookup (connections, "default_connection"); connection = g_hash_table_lookup (connections, "default_connection");
g_assert (connection); g_assert (connection);
@ -1037,10 +1080,12 @@ test_bootif_hwtype (void)
NMSettingWired *s_wired; NMSettingWired *s_wired;
NMSettingIPConfig *s_ip4; NMSettingIPConfig *s_ip4;
NMSettingIPConfig *s_ip6; NMSettingIPConfig *s_ip6;
gs_free char *hostname = NULL;
connections = nmi_cmdline_reader_parse (TEST_INITRD_DIR "/sysfs", ARGV); connections = nmi_cmdline_reader_parse (TEST_INITRD_DIR "/sysfs", ARGV, &hostname);
g_assert (connections); g_assert (connections);
g_assert_cmpint (g_hash_table_size (connections), ==, 2); g_assert_cmpint (g_hash_table_size (connections), ==, 2);
g_assert_cmpstr (hostname, ==, NULL);
connection = g_hash_table_lookup (connections, "eth0"); connection = g_hash_table_lookup (connections, "eth0");
g_assert (connection); g_assert (connection);
@ -1100,10 +1145,12 @@ test_nameserver (void)
"nameserver=[2606:4700:4700::1111]"); "nameserver=[2606:4700:4700::1111]");
NMConnection *connection; NMConnection *connection;
NMSettingIPConfig *s_ip; NMSettingIPConfig *s_ip;
gs_free char *hostname = NULL;
connections = nmi_cmdline_reader_parse (TEST_INITRD_DIR "/sysfs", ARGV); connections = nmi_cmdline_reader_parse (TEST_INITRD_DIR "/sysfs", ARGV, &hostname);
g_assert (connections); g_assert (connections);
g_assert_cmpint (g_hash_table_size (connections), ==, 3); g_assert_cmpint (g_hash_table_size (connections), ==, 3);
g_assert_cmpstr (hostname, ==, "foo.example.com");
connection = g_hash_table_lookup (connections, "eth0"); connection = g_hash_table_lookup (connections, "eth0");
g_assert (connection); g_assert (connection);
@ -1140,10 +1187,12 @@ test_bootif_off (void)
{ {
gs_unref_hashtable GHashTable *connections = NULL; gs_unref_hashtable GHashTable *connections = NULL;
const char *const*ARGV = NM_MAKE_STRV ("BOOTIF=01-00-53-AB-cd-02-03", "rd.bootif=0"); const char *const*ARGV = NM_MAKE_STRV ("BOOTIF=01-00-53-AB-cd-02-03", "rd.bootif=0");
gs_free char *hostname = NULL;
connections = nmi_cmdline_reader_parse (TEST_INITRD_DIR "/sysfs", ARGV); connections = nmi_cmdline_reader_parse (TEST_INITRD_DIR "/sysfs", ARGV, &hostname);
g_assert (connections); g_assert (connections);
g_assert_cmpint (g_hash_table_size (connections), ==, 0); g_assert_cmpint (g_hash_table_size (connections), ==, 0);
g_assert_cmpstr (hostname, ==, NULL);
} }
NMTST_DEFINE (); NMTST_DEFINE ();