diff options
author | Lubomir Rintel <lkundrak@v3.sk> | 2018-05-03 09:13:32 +0200 |
---|---|---|
committer | Lubomir Rintel <lkundrak@v3.sk> | 2018-09-18 17:40:47 +0200 |
commit | b544f7243da7b3ca862c2e48c6220a0134b4bf15 (patch) | |
tree | 564566ff2e38daaa4dca0c1d6bd023df46e03746 | |
parent | c263f5355cbd86da75aaa161987fee8b59cb8c8b (diff) |
initrd: add iBFT reader
This is loosely based on nms-ibft-reader, but with some significant
changes. Notably, it parses /sys/firmware/ibft directly instead of
iscsiadm output.
iscsiadm is not available on early boot (perhaps it's too large) and
turns out that parsing sysfs directly is easier and more
straightforwared anyways. A win-win situation.
It is not useful alone, it's in a separate commit just for the sake of
easier review.
198 files changed, 1231 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore index f71f1f88a..fafa43bda 100644 --- a/.gitignore +++ b/.gitignore @@ -252,6 +252,7 @@ test-*.trs /src/dhcp/tests/test-dhcp-options /src/dhcp/tests/test-dhcp-utils /src/dnsmasq/tests/test-dnsmasq-utils +/src/initrd/tests/test-ibft-reader /src/nm-iface-helper /src/ndisc/tests/test-ndisc-fake /src/ndisc/tests/test-ndisc-linux diff --git a/Makefile.am b/Makefile.am index afa6cfc85..5c75dfcbd 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1925,6 +1925,250 @@ $(src_nm_iface_helper_OBJECTS): $(libnm_core_lib_h_pub_mkenums) ############################################################################### +noinst_LTLIBRARIES += src/initrd/libnmi-core.la + +src_initrd_libnmi_core_la_CPPFLAGS = \ + $(src_cppflags) + +src_initrd_libnmi_core_la_SOURCES = \ + src/initrd/nm-initrd-generator.h \ + src/initrd/nmi-ibft-reader.c \ + $(NULL) + +check_programs += src/initrd/tests/test-ibft-reader + +src_initrd_tests_test_ibft_reader_CPPFLAGS = \ + -DNETWORKMANAGER_COMPILATION_TEST \ + -DTEST_INITRD_DIR=\"$(abs_srcdir)/src/initrd/tests\" \ + $(src_cppflags) + +src_initrd_tests_test_ibft_reader_LDFLAGS = \ + $(CODE_COVERAGE_LDFLAGS) \ + $(SANITIZER_EXEC_LDFLAGS) + +src_initrd_tests_test_ibft_reader_LDADD = \ + libnm-core/libnm-core.la \ + src/initrd/libnmi-core.la \ + src/libNetworkManagerTest.la \ + $(GLIB_LIBS) + +EXTRA_DIST += \ + src/initrd/tests/sysfs/class/net/eth0/address \ + src/initrd/tests/sysfs/class/net/eth2/address \ + src/initrd/tests/sysfs/firmware/ibft/ethernet0/prefix-len \ + src/initrd/tests/sysfs/firmware/ibft/ethernet0/hostname \ + src/initrd/tests/sysfs/firmware/ibft/ethernet0/gateway \ + src/initrd/tests/sysfs/firmware/ibft/ethernet0/mac \ + src/initrd/tests/sysfs/firmware/ibft/ethernet0/vlan \ + src/initrd/tests/sysfs/firmware/ibft/ethernet0/primary-dns \ + src/initrd/tests/sysfs/firmware/ibft/ethernet0/dhcp \ + src/initrd/tests/sysfs/firmware/ibft/ethernet0/origin \ + src/initrd/tests/sysfs/firmware/ibft/ethernet0/secondary-dns \ + src/initrd/tests/sysfs/firmware/ibft/ethernet0/ip-addr \ + src/initrd/tests/sysfs/firmware/ibft/ethernet0/subnet-mask \ + src/initrd/tests/sysfs/firmware/ibft/ethernet0/index \ + src/initrd/tests/sysfs/firmware/ibft/ethernet0/flags \ + src/initrd/tests/sysfs/firmware/ibft/initiator/isns-server \ + src/initrd/tests/sysfs/firmware/ibft/initiator/initiator-name \ + src/initrd/tests/sysfs/firmware/ibft/initiator/pri-radius-server \ + src/initrd/tests/sysfs/firmware/ibft/initiator/slp-server \ + src/initrd/tests/sysfs/firmware/ibft/initiator/sec-radius-server \ + src/initrd/tests/sysfs/firmware/ibft/initiator/index \ + src/initrd/tests/sysfs/firmware/ibft/initiator/flags \ + src/initrd/tests/sysfs/firmware/ibft/target0/nic-assoc \ + src/initrd/tests/sysfs/firmware/ibft/target0/ip-addr \ + src/initrd/tests/sysfs/firmware/ibft/target0/chap-type \ + src/initrd/tests/sysfs/firmware/ibft/target0/index \ + src/initrd/tests/sysfs/firmware/ibft/target0/lun \ + src/initrd/tests/sysfs/firmware/ibft/target0/flags \ + src/initrd/tests/sysfs/firmware/ibft/target0/port \ + src/initrd/tests/sysfs/firmware/ibft/target2/target-name \ + src/initrd/tests/sysfs/firmware/ibft/target2/nic-assoc \ + src/initrd/tests/sysfs/firmware/ibft/target2/ip-addr \ + src/initrd/tests/sysfs/firmware/ibft/target2/chap-type \ + src/initrd/tests/sysfs/firmware/ibft/target2/index \ + src/initrd/tests/sysfs/firmware/ibft/target2/lun \ + src/initrd/tests/sysfs/firmware/ibft/target2/flags \ + src/initrd/tests/sysfs/firmware/ibft/target2/port \ + src/initrd/tests/sysfs/firmware/ibft/acpi_header/oem_table_id \ + src/initrd/tests/sysfs/firmware/ibft/acpi_header/oem_id \ + src/initrd/tests/sysfs/firmware/ibft/acpi_header/signature \ + src/initrd/tests/sysfs/firmware/ibft/ethernet2/prefix-len \ + src/initrd/tests/sysfs/firmware/ibft/ethernet2/hostname \ + src/initrd/tests/sysfs/firmware/ibft/ethernet2/gateway \ + src/initrd/tests/sysfs/firmware/ibft/ethernet2/mac \ + src/initrd/tests/sysfs/firmware/ibft/ethernet2/vlan \ + src/initrd/tests/sysfs/firmware/ibft/ethernet2/primary-dns \ + src/initrd/tests/sysfs/firmware/ibft/ethernet2/dhcp \ + src/initrd/tests/sysfs/firmware/ibft/ethernet2/origin \ + src/initrd/tests/sysfs/firmware/ibft/ethernet2/secondary-dns \ + src/initrd/tests/sysfs/firmware/ibft/ethernet2/ip-addr \ + src/initrd/tests/sysfs/firmware/ibft/ethernet2/subnet-mask \ + src/initrd/tests/sysfs/firmware/ibft/ethernet2/index \ + src/initrd/tests/sysfs/firmware/ibft/ethernet2/flags \ + src/initrd/tests/sysfs-bad-dns1/class/net/eth0/address \ + src/initrd/tests/sysfs-bad-dns1/firmware/ibft/ethernet0/prefix-len \ + src/initrd/tests/sysfs-bad-dns1/firmware/ibft/ethernet0/gateway \ + src/initrd/tests/sysfs-bad-dns1/firmware/ibft/ethernet0/mac \ + src/initrd/tests/sysfs-bad-dns1/firmware/ibft/ethernet0/vlan \ + src/initrd/tests/sysfs-bad-dns1/firmware/ibft/ethernet0/primary-dns \ + src/initrd/tests/sysfs-bad-dns1/firmware/ibft/ethernet0/origin \ + src/initrd/tests/sysfs-bad-dns1/firmware/ibft/ethernet0/secondary-dns \ + src/initrd/tests/sysfs-bad-dns1/firmware/ibft/ethernet0/ip-addr \ + src/initrd/tests/sysfs-bad-dns1/firmware/ibft/ethernet0/subnet-mask \ + src/initrd/tests/sysfs-bad-dns1/firmware/ibft/ethernet0/index \ + src/initrd/tests/sysfs-bad-dns1/firmware/ibft/initiator/initiator-name \ + src/initrd/tests/sysfs-bad-dns1/firmware/ibft/target0/target-name \ + src/initrd/tests/sysfs-bad-dns1/firmware/ibft/target0/ip-addr \ + src/initrd/tests/sysfs-bad-dns1/firmware/ibft/target0/index \ + src/initrd/tests/sysfs-bad-dns1/firmware/ibft/target0/lun \ + src/initrd/tests/sysfs-bad-dns1/firmware/ibft/target0/port \ + src/initrd/tests/sysfs-bad-dns2/class/net/eth0/address \ + src/initrd/tests/sysfs-bad-dns2/firmware/ibft/ethernet0/prefix-len \ + src/initrd/tests/sysfs-bad-dns2/firmware/ibft/ethernet0/gateway \ + src/initrd/tests/sysfs-bad-dns2/firmware/ibft/ethernet0/mac \ + src/initrd/tests/sysfs-bad-dns2/firmware/ibft/ethernet0/vlan \ + src/initrd/tests/sysfs-bad-dns2/firmware/ibft/ethernet0/primary-dns \ + src/initrd/tests/sysfs-bad-dns2/firmware/ibft/ethernet0/origin \ + src/initrd/tests/sysfs-bad-dns2/firmware/ibft/ethernet0/secondary-dns \ + src/initrd/tests/sysfs-bad-dns2/firmware/ibft/ethernet0/ip-addr \ + src/initrd/tests/sysfs-bad-dns2/firmware/ibft/ethernet0/subnet-mask \ + src/initrd/tests/sysfs-bad-dns2/firmware/ibft/ethernet0/index \ + src/initrd/tests/sysfs-bad-dns2/firmware/ibft/initiator/initiator-name \ + src/initrd/tests/sysfs-bad-dns2/firmware/ibft/target0/target-name \ + src/initrd/tests/sysfs-bad-dns2/firmware/ibft/target0/ip-addr \ + src/initrd/tests/sysfs-bad-dns2/firmware/ibft/target0/index \ + src/initrd/tests/sysfs-bad-dns2/firmware/ibft/target0/lun \ + src/initrd/tests/sysfs-bad-dns2/firmware/ibft/target0/port \ + src/initrd/tests/sysfs-bad-gateway/class/net/eth0/address \ + src/initrd/tests/sysfs-bad-gateway/firmware/ibft/ethernet0/prefix-len \ + src/initrd/tests/sysfs-bad-gateway/firmware/ibft/ethernet0/gateway \ + src/initrd/tests/sysfs-bad-gateway/firmware/ibft/ethernet0/mac \ + src/initrd/tests/sysfs-bad-gateway/firmware/ibft/ethernet0/vlan \ + src/initrd/tests/sysfs-bad-gateway/firmware/ibft/ethernet0/primary-dns \ + src/initrd/tests/sysfs-bad-gateway/firmware/ibft/ethernet0/origin \ + src/initrd/tests/sysfs-bad-gateway/firmware/ibft/ethernet0/secondary-dns \ + src/initrd/tests/sysfs-bad-gateway/firmware/ibft/ethernet0/ip-addr \ + src/initrd/tests/sysfs-bad-gateway/firmware/ibft/ethernet0/subnet-mask \ + src/initrd/tests/sysfs-bad-gateway/firmware/ibft/ethernet0/index \ + src/initrd/tests/sysfs-bad-gateway/firmware/ibft/initiator/initiator-name \ + src/initrd/tests/sysfs-bad-gateway/firmware/ibft/target0/target-name \ + src/initrd/tests/sysfs-bad-gateway/firmware/ibft/target0/ip-addr \ + src/initrd/tests/sysfs-bad-gateway/firmware/ibft/target0/index \ + src/initrd/tests/sysfs-bad-gateway/firmware/ibft/target0/lun \ + src/initrd/tests/sysfs-bad-gateway/firmware/ibft/target0/port \ + src/initrd/tests/sysfs-bad-ipaddr/class/net/eth0/address \ + src/initrd/tests/sysfs-bad-ipaddr/firmware/ibft/ethernet0/prefix-len \ + src/initrd/tests/sysfs-bad-ipaddr/firmware/ibft/ethernet0/gateway \ + src/initrd/tests/sysfs-bad-ipaddr/firmware/ibft/ethernet0/mac \ + src/initrd/tests/sysfs-bad-ipaddr/firmware/ibft/ethernet0/vlan \ + src/initrd/tests/sysfs-bad-ipaddr/firmware/ibft/ethernet0/primary-dns \ + src/initrd/tests/sysfs-bad-ipaddr/firmware/ibft/ethernet0/origin \ + src/initrd/tests/sysfs-bad-ipaddr/firmware/ibft/ethernet0/secondary-dns \ + src/initrd/tests/sysfs-bad-ipaddr/firmware/ibft/ethernet0/ip-addr \ + src/initrd/tests/sysfs-bad-ipaddr/firmware/ibft/ethernet0/subnet-mask \ + src/initrd/tests/sysfs-bad-ipaddr/firmware/ibft/ethernet0/index \ + src/initrd/tests/sysfs-bad-ipaddr/firmware/ibft/initiator/initiator-name \ + src/initrd/tests/sysfs-bad-ipaddr/firmware/ibft/target0/target-name \ + src/initrd/tests/sysfs-bad-ipaddr/firmware/ibft/target0/ip-addr \ + src/initrd/tests/sysfs-bad-ipaddr/firmware/ibft/target0/index \ + src/initrd/tests/sysfs-bad-ipaddr/firmware/ibft/target0/lun \ + src/initrd/tests/sysfs-bad-ipaddr/firmware/ibft/target0/port \ + src/initrd/tests/sysfs-dhcp/class/net/eth0/address \ + src/initrd/tests/sysfs-dhcp/class/net/eth1/address \ + src/initrd/tests/sysfs-dhcp/firmware/ibft/ethernet0/gateway \ + src/initrd/tests/sysfs-dhcp/firmware/ibft/ethernet0/mac \ + src/initrd/tests/sysfs-dhcp/firmware/ibft/ethernet0/vlan \ + src/initrd/tests/sysfs-dhcp/firmware/ibft/ethernet0/primary-dns \ + src/initrd/tests/sysfs-dhcp/firmware/ibft/ethernet0/origin \ + src/initrd/tests/sysfs-dhcp/firmware/ibft/ethernet0/secondary-dns \ + src/initrd/tests/sysfs-dhcp/firmware/ibft/ethernet0/index \ + src/initrd/tests/sysfs-dhcp/firmware/ibft/initiator/initiator-name \ + src/initrd/tests/sysfs-dhcp/firmware/ibft/target0/target-name \ + src/initrd/tests/sysfs-dhcp/firmware/ibft/target0/ip-addr \ + src/initrd/tests/sysfs-dhcp/firmware/ibft/target0/index \ + src/initrd/tests/sysfs-dhcp/firmware/ibft/target0/lun \ + src/initrd/tests/sysfs-dhcp/firmware/ibft/target0/port \ + src/initrd/tests/sysfs-dhcp/firmware/ibft/ethernet1/gateway \ + src/initrd/tests/sysfs-dhcp/firmware/ibft/ethernet1/mac \ + src/initrd/tests/sysfs-dhcp/firmware/ibft/ethernet1/vlan \ + src/initrd/tests/sysfs-dhcp/firmware/ibft/ethernet1/primary-dns \ + src/initrd/tests/sysfs-dhcp/firmware/ibft/ethernet1/origin \ + src/initrd/tests/sysfs-dhcp/firmware/ibft/ethernet1/secondary-dns \ + src/initrd/tests/sysfs-dhcp/firmware/ibft/ethernet1/index \ + src/initrd/tests/sysfs-dhcp/firmware/ibft/target1/target-name \ + src/initrd/tests/sysfs-dhcp/firmware/ibft/target1/ip-addr \ + src/initrd/tests/sysfs-dhcp/firmware/ibft/target1/index \ + src/initrd/tests/sysfs-dhcp/firmware/ibft/target1/lun \ + src/initrd/tests/sysfs-dhcp/firmware/ibft/target1/port \ + src/initrd/tests/sysfs-static/class/net/eth0/address \ + src/initrd/tests/sysfs-static/class/net/eth1/address \ + src/initrd/tests/sysfs-static/firmware/ibft/ethernet0/prefix-len \ + src/initrd/tests/sysfs-static/firmware/ibft/ethernet0/gateway \ + src/initrd/tests/sysfs-static/firmware/ibft/ethernet0/mac \ + src/initrd/tests/sysfs-static/firmware/ibft/ethernet0/vlan \ + src/initrd/tests/sysfs-static/firmware/ibft/ethernet0/primary-dns \ + src/initrd/tests/sysfs-static/firmware/ibft/ethernet0/origin \ + src/initrd/tests/sysfs-static/firmware/ibft/ethernet0/secondary-dns \ + src/initrd/tests/sysfs-static/firmware/ibft/ethernet0/ip-addr \ + src/initrd/tests/sysfs-static/firmware/ibft/ethernet0/subnet-mask \ + src/initrd/tests/sysfs-static/firmware/ibft/ethernet0/index \ + src/initrd/tests/sysfs-static/firmware/ibft/initiator/initiator-name \ + src/initrd/tests/sysfs-static/firmware/ibft/target0/target-name \ + src/initrd/tests/sysfs-static/firmware/ibft/target0/ip-addr \ + src/initrd/tests/sysfs-static/firmware/ibft/target0/index \ + src/initrd/tests/sysfs-static/firmware/ibft/target0/lun \ + src/initrd/tests/sysfs-static/firmware/ibft/target0/port \ + src/initrd/tests/sysfs-static/firmware/ibft/ethernet1/gateway \ + src/initrd/tests/sysfs-static/firmware/ibft/ethernet1/mac \ + src/initrd/tests/sysfs-static/firmware/ibft/ethernet1/vlan \ + src/initrd/tests/sysfs-static/firmware/ibft/ethernet1/primary-dns \ + src/initrd/tests/sysfs-static/firmware/ibft/ethernet1/origin \ + src/initrd/tests/sysfs-static/firmware/ibft/ethernet1/secondary-dns \ + src/initrd/tests/sysfs-static/firmware/ibft/ethernet1/index \ + src/initrd/tests/sysfs-static/firmware/ibft/target1/target-name \ + src/initrd/tests/sysfs-static/firmware/ibft/target1/ip-addr \ + src/initrd/tests/sysfs-static/firmware/ibft/target1/index \ + src/initrd/tests/sysfs-static/firmware/ibft/target1/lun \ + src/initrd/tests/sysfs-static/firmware/ibft/target1/port \ + src/initrd/tests/sysfs-vlan/class/net/eth0/address \ + src/initrd/tests/sysfs-vlan/firmware/ibft/ethernet0/prefix-len \ + src/initrd/tests/sysfs-vlan/firmware/ibft/ethernet0/mac \ + src/initrd/tests/sysfs-vlan/firmware/ibft/ethernet0/vlan \ + src/initrd/tests/sysfs-vlan/firmware/ibft/ethernet0/origin \ + src/initrd/tests/sysfs-vlan/firmware/ibft/ethernet0/ip-addr \ + src/initrd/tests/sysfs-vlan/firmware/ibft/ethernet0/subnet-mask \ + src/initrd/tests/sysfs-vlan/firmware/ibft/ethernet0/index \ + src/initrd/tests/sysfs-vlan/firmware/ibft/initiator/initiator-name \ + src/initrd/tests/sysfs-vlan/firmware/ibft/target0/target-name \ + src/initrd/tests/sysfs-vlan/firmware/ibft/target0/ip-addr \ + src/initrd/tests/sysfs-vlan/firmware/ibft/target0/index \ + src/initrd/tests/sysfs-vlan/firmware/ibft/target0/lun \ + src/initrd/tests/sysfs-vlan/firmware/ibft/target0/port \ + $(NULL) + +check_programs += src/initrd/tests/test-cmdline-reader + +src_initrd_tests_test_cmdline_reader_CPPFLAGS = \ + -DNETWORKMANAGER_COMPILATION_TEST \ + -DTEST_INITRD_DIR=\"$(abs_srcdir)/src/initrd/tests\" \ + $(src_cppflags) + +src_initrd_tests_test_cmdline_reader_LDFLAGS = \ + $(CODE_COVERAGE_LDFLAGS) \ + $(SANITIZER_EXEC_LDFLAGS) + +src_initrd_tests_test_cmdline_reader_LDADD = \ + libnm-core/libnm-core.la \ + src/initrd/libnmi-core.la \ + src/libNetworkManagerTest.la \ + $(GLIB_LIBS) + +$(src_initrd_libnmi_core_la_OBJECTS): $(libnm_core_lib_h_pub_mkenums) +$(src_initrd_tests_test_ibft_reader_OBJECTS): $(libnm_core_lib_h_pub_mkenums) + +############################################################################### + EXTRA_DIST += \ src/org.freedesktop.NetworkManager.conf \ src/nm-test-utils-core.h \ diff --git a/src/initrd/nm-initrd-generator.h b/src/initrd/nm-initrd-generator.h new file mode 100644 index 000000000..1fa858fc6 --- /dev/null +++ b/src/initrd/nm-initrd-generator.h @@ -0,0 +1,45 @@ +/* NetworkManager initrd configuration generator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Copyright (C) 2014, 2018 Red Hat, Inc. + */ + +#ifndef __NM_INITRD_GENERATOR_H__ +#define __NM_INITRD_GENERATOR_H__ + +#include "nm-connection.h" +#include "nm-utils.h" + +static inline gboolean +guess_ip_address_family (const char *str) +{ + if (str == NULL) + return AF_UNSPEC; + else if (strchr (str, '.')) + return AF_INET; + else if (strchr (str, ':')) + return AF_INET6; + else + return AF_UNSPEC; +} + +GHashTable *nmi_ibft_read (const char *sysfs_dir); + +gboolean nmi_ibft_update_connection_from_nic (NMConnection *connection, GHashTable *nic, GError **error); + +GHashTable *nmi_cmdline_reader_parse (const char *sysfs_dir, char **argv); + +#endif /* __NM_INITRD_GENERATOR_H__ */ diff --git a/src/initrd/nmi-ibft-reader.c b/src/initrd/nmi-ibft-reader.c new file mode 100644 index 000000000..c92754674 --- /dev/null +++ b/src/initrd/nmi-ibft-reader.c @@ -0,0 +1,441 @@ +/* NetworkManager initrd configuration generator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Copyright 2014 - 2018 Red Hat, Inc. + */ + +#include "nm-default.h" + +#include "nm-initrd-generator.h" + +#include <stdlib.h> +#include <string.h> +#include <sys/types.h> +#include <sys/socket.h> +#include <arpa/inet.h> +#include <sys/wait.h> +#include <sys/inotify.h> +#include <errno.h> +#include <sys/ioctl.h> +#include <unistd.h> + +#include "nm-core-internal.h" +#include "platform/nm-platform.h" +#include "NetworkManagerUtils.h" + +/*****************************************************************************/ + +#define _NMLOG(level, domain, ...) \ + nm_log ((level), (domain), NULL, NULL, \ + "ibft-reader: " _NM_UTILS_MACRO_FIRST (__VA_ARGS__) \ + _NM_UTILS_MACRO_REST (__VA_ARGS__)) + +/*****************************************************************************/ + +static GHashTable * +load_one_nic (const char *sysfs_dir, const char *dir_name) +{ + gs_free char *nic_path = g_build_filename (sysfs_dir, dir_name, NULL); + GDir *nic_dir; + const char *entry_name; + char *content; + gs_free_error GError *error = NULL; + GHashTable *nic; + + g_return_val_if_fail (sysfs_dir != NULL, FALSE); + + nic_dir = g_dir_open (nic_path, 0, &error); + if (!nic_dir) { + _LOGW (LOGD_CORE, "Can't open %s: %s", nic_path, error->message); + return NULL; + } + + nic = g_hash_table_new_full (nm_str_hash, g_str_equal, g_free, g_free); + while ((entry_name = g_dir_read_name (nic_dir))) { + gs_free char *entry_path = g_build_filename (nic_path, entry_name, NULL); + + if (!g_file_test (entry_path, G_FILE_TEST_IS_REGULAR)) + continue; + + if (!g_file_get_contents (entry_path, &content, NULL, &error)) { + _LOGW (LOGD_CORE, "Can't read %s: %s", entry_path, error->message); + g_clear_error (&error); + continue; + } + + g_strchomp (content); + if (!g_hash_table_insert (nic, g_strdup (entry_name), content)) + _LOGW (LOGD_CORE, "Duplicate iBFT entry: %s", entry_name); + } + + g_dir_close (nic_dir); + + return nic; +} + +GHashTable * +nmi_ibft_read (const char *sysfs_dir) +{ + gs_free char *ibft_path = NULL; + GDir *ibft_dir; + const char *dir_name; + GHashTable *ibft, *nic; + char *mac; + gs_free_error GError *error = NULL; + + g_return_val_if_fail (sysfs_dir != NULL, FALSE); + + ibft_path = g_build_filename (sysfs_dir, "firmware", "ibft", NULL); + + ibft = g_hash_table_new_full (nm_str_hash, g_str_equal, g_free, + (GDestroyNotify) g_hash_table_unref); + + if (!g_file_test (ibft_path, G_FILE_TEST_IS_DIR)) + nm_utils_modprobe (NULL, FALSE, "iscsi_ibft", NULL); + if (!g_file_test (ibft_path, G_FILE_TEST_IS_DIR)) + return ibft; + + ibft_dir = g_dir_open (ibft_path, 0, &error); + if (!ibft_dir) { + _LOGW (LOGD_CORE, "Unable to open iBFT firmware directory: %s", error->message); + return ibft; + } + + while ((dir_name = g_dir_read_name (ibft_dir))) { + if (!g_str_has_prefix (dir_name, "ethernet")) + continue; + + nic = load_one_nic (ibft_path, dir_name); + mac = g_hash_table_lookup (nic, "mac"); + + if (!mac) { + _LOGW (LOGD_CORE, "Ignoring an iBFT record without a MAC address"); + g_hash_table_unref (nic); + continue; + } + + mac = g_ascii_strup (mac, -1); + if (!g_hash_table_insert (ibft, mac, nic)) + _LOGW (LOGD_CORE, "Duplicate iBFT record for %s", mac); + } + + g_dir_close (ibft_dir); + + return ibft; +} + +static gboolean +ip_setting_add_from_block (GHashTable *nic, + NMConnection *connection, + GError **error) +{ + NMSettingIPConfig *s_ip = NULL; + NMSettingIPConfig *s_ip4 = NULL; + NMSettingIPConfig *s_ip6 = NULL; + NMIPAddress *addr; + const char *s_ipaddr = NULL; + const char *s_prefix = NULL; + const char *s_gateway = NULL; + const char *s_dns1 = NULL; + const char *s_dns2 = NULL; + const char *s_origin = NULL; + const char *method = NULL; + int family; + gint64 prefix; + + s_ipaddr = (const char *)g_hash_table_lookup (nic, "ip-addr"); + s_prefix = (const char *)g_hash_table_lookup (nic, "prefix-len"); + s_gateway = (const char *)g_hash_table_lookup (nic, "gateway"); + s_dns1 = (const char *)g_hash_table_lookup (nic, "primary-dns"); + s_dns2 = (const char *)g_hash_table_lookup (nic, "secondary-dns"); + s_origin = (const char *)g_hash_table_lookup (nic, "origin"); + + s_ip4 = nm_connection_get_setting_ip4_config (connection); + if (!s_ip4) { + s_ip4 = (NMSettingIPConfig *) nm_setting_ip4_config_new (); + nm_connection_add_setting (connection, (NMSetting *) s_ip4); + } + + s_ip6 = nm_connection_get_setting_ip6_config (connection); + if (!s_ip6) { + s_ip6 = (NMSettingIPConfig *) nm_setting_ip6_config_new (); + nm_connection_add_setting (connection, (NMSetting *) s_ip6); + } + + family = guess_ip_address_family (s_ipaddr); + if (family == AF_UNSPEC) + family = guess_ip_address_family (s_gateway); + + switch (family) { + case AF_INET: + s_ip = s_ip4; + g_object_set (s_ip6, NM_SETTING_IP_CONFIG_METHOD, + NM_SETTING_IP6_CONFIG_METHOD_IGNORE, NULL); + break; + case AF_INET6: + s_ip = s_ip6; + g_object_set (s_ip4, NM_SETTING_IP_CONFIG_METHOD, + NM_SETTING_IP4_CONFIG_METHOD_DISABLED, NULL); + break; + default: + g_set_error (error, NM_SETTINGS_ERROR, NM_SETTINGS_ERROR_INVALID_CONNECTION, + "iBFT: invalid IP address '%s'.", + s_ipaddr); + return FALSE; + } + + if ( (g_strcmp0 (s_origin, "3") == 0 && family == AF_INET) + || (g_strcmp0 (s_origin, "4") == 0 && family == AF_INET)) { + method = NM_SETTING_IP4_CONFIG_METHOD_AUTO; + } else if (g_strcmp0 (s_origin, "3") == 0 && family == AF_INET6) { + method = NM_SETTING_IP6_CONFIG_METHOD_DHCP; + } else if (g_strcmp0 (s_origin, "4") == 0 && family == AF_INET6) { + method = NM_SETTING_IP6_CONFIG_METHOD_AUTO; + } else if (family == AF_INET) { + method = NM_SETTING_IP4_CONFIG_METHOD_MANUAL; + } else if (family == AF_INET6) { + method = NM_SETTING_IP6_CONFIG_METHOD_MANUAL; + } else { + g_return_val_if_reached (FALSE); + } + g_object_set (s_ip, + NM_SETTING_IP_CONFIG_METHOD, method, + NM_SETTING_IP_CONFIG_MAY_FAIL, FALSE, + NULL); + + if (s_gateway && !nm_utils_ipaddr_valid (family, s_gateway)) { + g_set_error (error, NM_SETTINGS_ERROR, NM_SETTINGS_ERROR_INVALID_CONNECTION, + "iBFT: invalid IP gateway '%s'.", s_gateway); + return FALSE; + } + + if (s_dns1 && !nm_utils_ipaddr_valid (family, s_dns1)) { + g_set_error (error, NM_SETTINGS_ERROR, NM_SETTINGS_ERROR_INVALID_CONNECTION, + "iBFT: invalid DNS1 address '%s'.", s_dns1); + return FALSE; + } + + if (s_dns2 && !nm_utils_ipaddr_valid (family, s_dns2)) { + g_set_error (error, NM_SETTINGS_ERROR, NM_SETTINGS_ERROR_INVALID_CONNECTION, + "iBFT: invalid DNS2 address '%s'.", s_dns2); + return FALSE; + } + + if (s_ipaddr) { + prefix = _nm_utils_ascii_str_to_int64 (s_prefix, 10, 0, 128, -1); + if (prefix == -1) { + g_set_error (error, NM_SETTINGS_ERROR, NM_SETTINGS_ERROR_INVALID_CONNECTION, + "iBFT: invalid IP prefix '%s'.", s_prefix); + return FALSE; + } + + addr = nm_ip_address_new (family, s_ipaddr, prefix, error); + if (!addr) { + g_prefix_error (error, "iBFT: "); + return FALSE; + } + + nm_setting_ip_config_add_address (s_ip, addr); + nm_ip_address_unref (addr); + + g_object_set (s_ip, NM_SETTING_IP_CONFIG_GATEWAY, s_gateway, NULL); + } + + if (s_dns1) + nm_setting_ip_config_add_dns (s_ip, s_dns1); + if (s_dns2) + nm_setting_ip_config_add_dns (s_ip, s_dns2); + + return TRUE; +} + +static gboolean +connection_setting_add (GHashTable *nic, + NMConnection *connection, + const char *type, + const char *prefix, + GError **error) +{ + NMSetting *s_con; + char *id, *uuid; + const char *s_index, *s_hwaddr, *s_ipaddr, *s_vlanid; + + s_index = (const char *)g_hash_table_lookup (nic, "index"); + s_hwaddr = (const char *)g_hash_table_lookup (nic, "mac"); + s_ipaddr = (const char *)g_hash_table_lookup (nic, "ip-addr"); + s_vlanid = (const char *)g_hash_table_lookup (nic, "vlan"); + + if (!s_hwaddr) { + g_set_error_literal (error, NM_SETTINGS_ERROR, NM_SETTINGS_ERROR_INVALID_CONNECTION, + "iBFT: missing MAC address"); + return FALSE; + } + + id = g_strdup_printf ("iBFT%s%s Connection%s%s", + prefix ? " " : "", + prefix ? prefix : "", + s_index ? " " : "", + s_index ? s_index : ""); + + uuid = _nm_utils_uuid_generate_from_strings ("ibft", + s_hwaddr, + s_vlanid ? "V" : "v", + s_vlanid ? s_vlanid : "", + s_ipaddr ? "A" : "DHCP", + s_ipaddr ? s_ipaddr : "", + NULL); + + s_con = (NMSetting *) nm_connection_get_setting_connection (connection); + if (!s_con) { + s_con = nm_setting_connection_new (); + nm_connection_add_setting (connection, s_con); + } + + g_object_set (s_con, + NM_SETTING_CONNECTION_TYPE, type, + NM_SETTING_CONNECTION_UUID, uuid, + NM_SETTING_CONNECTION_ID, id, + NULL); + + g_free (uuid); + g_free (id); + + return TRUE; +} + +static gboolean +is_ibft_vlan_device (GHashTable *nic) +{ + const char *s_vlan_id; + + g_assert (nic); + + s_vlan_id = (const char *)g_hash_table_lookup (nic, "vlan"); + + if (s_vlan_id) { + /* VLAN 0 is normally a valid VLAN ID, but in the iBFT case it + * means "no VLAN". + */ + if (_nm_utils_ascii_str_to_int64 (s_vlan_id, 10, 1, 4095, -1) != -1) + return TRUE; + } + + return FALSE; +} + +static gboolean +vlan_setting_add_from_block (GHashTable *nic, + NMConnection *connection, + GError **error) +{ + NMSetting *s_vlan = NULL; + const char *vlan_id_str = NULL; + gint64 vlan_id = -1; + + g_assert (nic); + g_assert (connection); + + /* This won't fail since this function shouldn't be called unless the + * iBFT VLAN ID exists and is > 0. + */ + vlan_id_str = (const char *)g_hash_table_lookup (nic, "vlan"); + g_assert (vlan_id_str); + + /* VLAN 0 is normally a valid VLAN ID, but in the iBFT case it means "no VLAN" */ + vlan_id = _nm_utils_ascii_str_to_int64 (vlan_id_str, 10, 1, 4095, -1); + if (vlan_id == -1) { + g_set_error (error, NM_SETTINGS_ERROR, NM_SETTINGS_ERROR_INVALID_CONNECTION, + "Invalid VLAN_ID '%s'", vlan_id_str); + return FALSE; + } + + s_vlan = (NMSetting *) nm_connection_get_setting_vlan (connection); + if (!s_vlan) { + s_vlan = nm_setting_vlan_new (); + nm_connection_add_setting (connection, s_vlan); + } + + g_object_set (s_vlan, NM_SETTING_VLAN_ID, (guint32) vlan_id, NULL); + + return TRUE; +} + +static gboolean +wired_setting_add_from_block (GHashTable *nic, + NMConnection *connection, + GError **error) +{ + NMSetting *s_wired = NULL; + const char *hwaddr = NULL; + + g_assert (nic); + g_assert (connection); + + + hwaddr = (const char *)g_hash_table_lookup (nic, "mac"); + if (!hwaddr) { + g_set_error_literal (error, NM_SETTINGS_ERROR, NM_SETTINGS_ERROR_INVALID_CONNECTION, + "iBFT: missing MAC address"); + return FALSE; + } + + if (!nm_utils_hwaddr_valid (hwaddr, ETH_ALEN)) { + g_set_error (error, NM_SETTINGS_ERROR, NM_SETTINGS_ERROR_INVALID_CONNECTION, + "iBFT: invalid MAC address '%s'.", hwaddr); + return FALSE; + } + + s_wired = (NMSetting *) nm_connection_get_setting_wired (connection); + if (!s_wired) { + s_wired = nm_setting_wired_new (); + nm_connection_add_setting (connection, s_wired); + } + + g_object_set (s_wired, NM_SETTING_WIRED_MAC_ADDRESS, hwaddr, NULL); + + return TRUE; +} + +gboolean +nmi_ibft_update_connection_from_nic (NMConnection *connection, GHashTable *nic, GError **error) +{ + gboolean is_vlan = FALSE; + + g_assert (nic); + + is_vlan = is_ibft_vlan_device (nic); + if (is_vlan && !vlan_setting_add_from_block (nic, connection, error)) + return FALSE; + + /* Always have a wired setting; for VLAN it defines the parent */ + if (!wired_setting_add_from_block (nic, connection, error)) + return FALSE; + + if (!ip_setting_add_from_block (nic, connection, error)) + return FALSE; + + if (!connection_setting_add (nic, + connection, + is_vlan ? NM_SETTING_VLAN_SETTING_NAME : NM_SETTING_WIRED_SETTING_NAME, + is_vlan ? "VLAN" : NULL, + error)) + return FALSE; + + if (!nm_connection_normalize (connection, NULL, NULL, error)) + return FALSE; + + return TRUE; +} diff --git a/src/initrd/tests/meson.build b/src/initrd/tests/meson.build new file mode 100644 index 000000000..0e74ea8d9 --- /dev/null +++ b/src/initrd/tests/meson.build @@ -0,0 +1,22 @@ +test_unit = 'test-ibft' + +test_ibft_dir = meson.current_source_dir() + +cflags = [ + '-DTEST_IBFT_DIR="@0@"'.format(test_ibft_dir), + '-DTEST_SCRATCH_DIR="@0@"'.format(test_ibft_dir) +] + +exe = executable( + test_unit, + test_unit + '.c', + dependencies: test_nm_dep, + c_args: cflags, + link_with: libnmi_ibft_core +) + +test( + 'ibft/' + test_unit, + test_script, + args: test_args + [exe.full_path()] +) diff --git a/src/initrd/tests/sysfs-bad-dns1/class/net/eth0/address b/src/initrd/tests/sysfs-bad-dns1/class/net/eth0/address new file mode 100644 index 000000000..20659db7e --- /dev/null +++ b/src/initrd/tests/sysfs-bad-dns1/class/net/eth0/address @@ -0,0 +1 @@ +00:33:21:98:b9:f0
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-bad-dns1/firmware/ibft/ethernet0/gateway b/src/initrd/tests/sysfs-bad-dns1/firmware/ibft/ethernet0/gateway new file mode 100644 index 000000000..bf6cf4543 --- /dev/null +++ b/src/initrd/tests/sysfs-bad-dns1/firmware/ibft/ethernet0/gateway @@ -0,0 +1 @@ +192.168.35.254
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-bad-dns1/firmware/ibft/ethernet0/index b/src/initrd/tests/sysfs-bad-dns1/firmware/ibft/ethernet0/index new file mode 100644 index 000000000..c22708346 --- /dev/null +++ b/src/initrd/tests/sysfs-bad-dns1/firmware/ibft/ethernet0/index @@ -0,0 +1 @@ +0
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-bad-dns1/firmware/ibft/ethernet0/ip-addr b/src/initrd/tests/sysfs-bad-dns1/firmware/ibft/ethernet0/ip-addr new file mode 100644 index 000000000..944c8d456 --- /dev/null +++ b/src/initrd/tests/sysfs-bad-dns1/firmware/ibft/ethernet0/ip-addr @@ -0,0 +1 @@ +192.168.32.72
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-bad-dns1/firmware/ibft/ethernet0/mac b/src/initrd/tests/sysfs-bad-dns1/firmware/ibft/ethernet0/mac new file mode 100644 index 000000000..20659db7e --- /dev/null +++ b/src/initrd/tests/sysfs-bad-dns1/firmware/ibft/ethernet0/mac @@ -0,0 +1 @@ +00:33:21:98:b9:f0
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-bad-dns1/firmware/ibft/ethernet0/origin b/src/initrd/tests/sysfs-bad-dns1/firmware/ibft/ethernet0/origin new file mode 100644 index 000000000..56a6051ca --- /dev/null +++ b/src/initrd/tests/sysfs-bad-dns1/firmware/ibft/ethernet0/origin @@ -0,0 +1 @@ +1
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-bad-dns1/firmware/ibft/ethernet0/prefix-len b/src/initrd/tests/sysfs-bad-dns1/firmware/ibft/ethernet0/prefix-len new file mode 100644 index 000000000..8fdd954df --- /dev/null +++ b/src/initrd/tests/sysfs-bad-dns1/firmware/ibft/ethernet0/prefix-len @@ -0,0 +1 @@ +22
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-bad-dns1/firmware/ibft/ethernet0/primary-dns b/src/initrd/tests/sysfs-bad-dns1/firmware/ibft/ethernet0/primary-dns new file mode 100644 index 000000000..2303dbdcb --- /dev/null +++ b/src/initrd/tests/sysfs-bad-dns1/firmware/ibft/ethernet0/primary-dns @@ -0,0 +1 @@ +10000.500.250.1
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-bad-dns1/firmware/ibft/ethernet0/secondary-dns b/src/initrd/tests/sysfs-bad-dns1/firmware/ibft/ethernet0/secondary-dns new file mode 100644 index 000000000..2eb9e1d0a --- /dev/null +++ b/src/initrd/tests/sysfs-bad-dns1/firmware/ibft/ethernet0/secondary-dns @@ -0,0 +1 @@ +10.16.255.3
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-bad-dns1/firmware/ibft/ethernet0/subnet-mask b/src/initrd/tests/sysfs-bad-dns1/firmware/ibft/ethernet0/subnet-mask new file mode 100644 index 000000000..7cb9d0a9b --- /dev/null +++ b/src/initrd/tests/sysfs-bad-dns1/firmware/ibft/ethernet0/subnet-mask @@ -0,0 +1 @@ +255.255.252.0
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-bad-dns1/firmware/ibft/ethernet0/vlan b/src/initrd/tests/sysfs-bad-dns1/firmware/ibft/ethernet0/vlan new file mode 100644 index 000000000..c22708346 --- /dev/null +++ b/src/initrd/tests/sysfs-bad-dns1/firmware/ibft/ethernet0/vlan @@ -0,0 +1 @@ +0
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-bad-dns1/firmware/ibft/initiator/initiator-name b/src/initrd/tests/sysfs-bad-dns1/firmware/ibft/initiator/initiator-name new file mode 100644 index 000000000..509a7ab8b --- /dev/null +++ b/src/initrd/tests/sysfs-bad-dns1/firmware/ibft/initiator/initiator-name @@ -0,0 +1 @@ +iqn.pjones6
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-bad-dns1/firmware/ibft/target0/index b/src/initrd/tests/sysfs-bad-dns1/firmware/ibft/target0/index new file mode 100644 index 000000000..c22708346 --- /dev/null +++ b/src/initrd/tests/sysfs-bad-dns1/firmware/ibft/target0/index @@ -0,0 +1 @@ +0
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-bad-dns1/firmware/ibft/target0/ip-addr b/src/initrd/tests/sysfs-bad-dns1/firmware/ibft/target0/ip-addr new file mode 100644 index 000000000..7450fdf90 --- /dev/null +++ b/src/initrd/tests/sysfs-bad-dns1/firmware/ibft/target0/ip-addr @@ -0,0 +1 @@ +10.16.52.16
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-bad-dns1/firmware/ibft/target0/lun b/src/initrd/tests/sysfs-bad-dns1/firmware/ibft/target0/lun new file mode 100644 index 000000000..c43d0930c --- /dev/null +++ b/src/initrd/tests/sysfs-bad-dns1/firmware/ibft/target0/lun @@ -0,0 +1 @@ +00000000
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-bad-dns1/firmware/ibft/target0/port b/src/initrd/tests/sysfs-bad-dns1/firmware/ibft/target0/port new file mode 100644 index 000000000..58f0d919f --- /dev/null +++ b/src/initrd/tests/sysfs-bad-dns1/firmware/ibft/target0/port @@ -0,0 +1 @@ +3260
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-bad-dns1/firmware/ibft/target0/target-name b/src/initrd/tests/sysfs-bad-dns1/firmware/ibft/target0/target-name new file mode 100644 index 000000000..32c9450a2 --- /dev/null +++ b/src/initrd/tests/sysfs-bad-dns1/firmware/ibft/target0/target-name @@ -0,0 +1 @@ +iqn.0.2008-11.com.blahblah:iscsi0
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-bad-dns2/class/net/eth0/address b/src/initrd/tests/sysfs-bad-dns2/class/net/eth0/address new file mode 100644 index 000000000..20659db7e --- /dev/null +++ b/src/initrd/tests/sysfs-bad-dns2/class/net/eth0/address @@ -0,0 +1 @@ +00:33:21:98:b9:f0
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-bad-dns2/firmware/ibft/ethernet0/gateway b/src/initrd/tests/sysfs-bad-dns2/firmware/ibft/ethernet0/gateway new file mode 100644 index 000000000..bf6cf4543 --- /dev/null +++ b/src/initrd/tests/sysfs-bad-dns2/firmware/ibft/ethernet0/gateway @@ -0,0 +1 @@ +192.168.35.254
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-bad-dns2/firmware/ibft/ethernet0/index b/src/initrd/tests/sysfs-bad-dns2/firmware/ibft/ethernet0/index new file mode 100644 index 000000000..c22708346 --- /dev/null +++ b/src/initrd/tests/sysfs-bad-dns2/firmware/ibft/ethernet0/index @@ -0,0 +1 @@ +0
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-bad-dns2/firmware/ibft/ethernet0/ip-addr b/src/initrd/tests/sysfs-bad-dns2/firmware/ibft/ethernet0/ip-addr new file mode 100644 index 000000000..944c8d456 --- /dev/null +++ b/src/initrd/tests/sysfs-bad-dns2/firmware/ibft/ethernet0/ip-addr @@ -0,0 +1 @@ +192.168.32.72
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-bad-dns2/firmware/ibft/ethernet0/mac b/src/initrd/tests/sysfs-bad-dns2/firmware/ibft/ethernet0/mac new file mode 100644 index 000000000..20659db7e --- /dev/null +++ b/src/initrd/tests/sysfs-bad-dns2/firmware/ibft/ethernet0/mac @@ -0,0 +1 @@ +00:33:21:98:b9:f0
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-bad-dns2/firmware/ibft/ethernet0/origin b/src/initrd/tests/sysfs-bad-dns2/firmware/ibft/ethernet0/origin new file mode 100644 index 000000000..56a6051ca --- /dev/null +++ b/src/initrd/tests/sysfs-bad-dns2/firmware/ibft/ethernet0/origin @@ -0,0 +1 @@ +1
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-bad-dns2/firmware/ibft/ethernet0/prefix-len b/src/initrd/tests/sysfs-bad-dns2/firmware/ibft/ethernet0/prefix-len new file mode 100644 index 000000000..8fdd954df --- /dev/null +++ b/src/initrd/tests/sysfs-bad-dns2/firmware/ibft/ethernet0/prefix-len @@ -0,0 +1 @@ +22
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-bad-dns2/firmware/ibft/ethernet0/primary-dns b/src/initrd/tests/sysfs-bad-dns2/firmware/ibft/ethernet0/primary-dns new file mode 100644 index 000000000..2e152cb08 --- /dev/null +++ b/src/initrd/tests/sysfs-bad-dns2/firmware/ibft/ethernet0/primary-dns @@ -0,0 +1 @@ +10.16.255.2
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-bad-dns2/firmware/ibft/ethernet0/secondary-dns b/src/initrd/tests/sysfs-bad-dns2/firmware/ibft/ethernet0/secondary-dns new file mode 100644 index 000000000..5ed7b7195 --- /dev/null +++ b/src/initrd/tests/sysfs-bad-dns2/firmware/ibft/ethernet0/secondary-dns @@ -0,0 +1 @@ +blah.foo.bar.baz
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-bad-dns2/firmware/ibft/ethernet0/subnet-mask b/src/initrd/tests/sysfs-bad-dns2/firmware/ibft/ethernet0/subnet-mask new file mode 100644 index 000000000..7cb9d0a9b --- /dev/null +++ b/src/initrd/tests/sysfs-bad-dns2/firmware/ibft/ethernet0/subnet-mask @@ -0,0 +1 @@ +255.255.252.0
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-bad-dns2/firmware/ibft/ethernet0/vlan b/src/initrd/tests/sysfs-bad-dns2/firmware/ibft/ethernet0/vlan new file mode 100644 index 000000000..c22708346 --- /dev/null +++ b/src/initrd/tests/sysfs-bad-dns2/firmware/ibft/ethernet0/vlan @@ -0,0 +1 @@ +0
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-bad-dns2/firmware/ibft/initiator/initiator-name b/src/initrd/tests/sysfs-bad-dns2/firmware/ibft/initiator/initiator-name new file mode 100644 index 000000000..509a7ab8b --- /dev/null +++ b/src/initrd/tests/sysfs-bad-dns2/firmware/ibft/initiator/initiator-name @@ -0,0 +1 @@ +iqn.pjones6
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-bad-dns2/firmware/ibft/target0/index b/src/initrd/tests/sysfs-bad-dns2/firmware/ibft/target0/index new file mode 100644 index 000000000..c22708346 --- /dev/null +++ b/src/initrd/tests/sysfs-bad-dns2/firmware/ibft/target0/index @@ -0,0 +1 @@ +0
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-bad-dns2/firmware/ibft/target0/ip-addr b/src/initrd/tests/sysfs-bad-dns2/firmware/ibft/target0/ip-addr new file mode 100644 index 000000000..7450fdf90 --- /dev/null +++ b/src/initrd/tests/sysfs-bad-dns2/firmware/ibft/target0/ip-addr @@ -0,0 +1 @@ +10.16.52.16
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-bad-dns2/firmware/ibft/target0/lun b/src/initrd/tests/sysfs-bad-dns2/firmware/ibft/target0/lun new file mode 100644 index 000000000..c43d0930c --- /dev/null +++ b/src/initrd/tests/sysfs-bad-dns2/firmware/ibft/target0/lun @@ -0,0 +1 @@ +00000000
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-bad-dns2/firmware/ibft/target0/port b/src/initrd/tests/sysfs-bad-dns2/firmware/ibft/target0/port new file mode 100644 index 000000000..58f0d919f --- /dev/null +++ b/src/initrd/tests/sysfs-bad-dns2/firmware/ibft/target0/port @@ -0,0 +1 @@ +3260
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-bad-dns2/firmware/ibft/target0/target-name b/src/initrd/tests/sysfs-bad-dns2/firmware/ibft/target0/target-name new file mode 100644 index 000000000..32c9450a2 --- /dev/null +++ b/src/initrd/tests/sysfs-bad-dns2/firmware/ibft/target0/target-name @@ -0,0 +1 @@ +iqn.0.2008-11.com.blahblah:iscsi0
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-bad-gateway/class/net/eth0/address b/src/initrd/tests/sysfs-bad-gateway/class/net/eth0/address new file mode 100644 index 000000000..20659db7e --- /dev/null +++ b/src/initrd/tests/sysfs-bad-gateway/class/net/eth0/address @@ -0,0 +1 @@ +00:33:21:98:b9:f0
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-bad-gateway/firmware/ibft/ethernet0/gateway b/src/initrd/tests/sysfs-bad-gateway/firmware/ibft/ethernet0/gateway new file mode 100644 index 000000000..1970856e0 --- /dev/null +++ b/src/initrd/tests/sysfs-bad-gateway/firmware/ibft/ethernet0/gateway @@ -0,0 +1 @@ +bb.cc.dd.ee
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-bad-gateway/firmware/ibft/ethernet0/index b/src/initrd/tests/sysfs-bad-gateway/firmware/ibft/ethernet0/index new file mode 100644 index 000000000..c22708346 --- /dev/null +++ b/src/initrd/tests/sysfs-bad-gateway/firmware/ibft/ethernet0/index @@ -0,0 +1 @@ +0
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-bad-gateway/firmware/ibft/ethernet0/ip-addr b/src/initrd/tests/sysfs-bad-gateway/firmware/ibft/ethernet0/ip-addr new file mode 100644 index 000000000..944c8d456 --- /dev/null +++ b/src/initrd/tests/sysfs-bad-gateway/firmware/ibft/ethernet0/ip-addr @@ -0,0 +1 @@ +192.168.32.72
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-bad-gateway/firmware/ibft/ethernet0/mac b/src/initrd/tests/sysfs-bad-gateway/firmware/ibft/ethernet0/mac new file mode 100644 index 000000000..20659db7e --- /dev/null +++ b/src/initrd/tests/sysfs-bad-gateway/firmware/ibft/ethernet0/mac @@ -0,0 +1 @@ +00:33:21:98:b9:f0
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-bad-gateway/firmware/ibft/ethernet0/origin b/src/initrd/tests/sysfs-bad-gateway/firmware/ibft/ethernet0/origin new file mode 100644 index 000000000..56a6051ca --- /dev/null +++ b/src/initrd/tests/sysfs-bad-gateway/firmware/ibft/ethernet0/origin @@ -0,0 +1 @@ +1
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-bad-gateway/firmware/ibft/ethernet0/prefix-len b/src/initrd/tests/sysfs-bad-gateway/firmware/ibft/ethernet0/prefix-len new file mode 100644 index 000000000..8fdd954df --- /dev/null +++ b/src/initrd/tests/sysfs-bad-gateway/firmware/ibft/ethernet0/prefix-len @@ -0,0 +1 @@ +22
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-bad-gateway/firmware/ibft/ethernet0/primary-dns b/src/initrd/tests/sysfs-bad-gateway/firmware/ibft/ethernet0/primary-dns new file mode 100644 index 000000000..2e152cb08 --- /dev/null +++ b/src/initrd/tests/sysfs-bad-gateway/firmware/ibft/ethernet0/primary-dns @@ -0,0 +1 @@ +10.16.255.2
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-bad-gateway/firmware/ibft/ethernet0/secondary-dns b/src/initrd/tests/sysfs-bad-gateway/firmware/ibft/ethernet0/secondary-dns new file mode 100644 index 000000000..2eb9e1d0a --- /dev/null +++ b/src/initrd/tests/sysfs-bad-gateway/firmware/ibft/ethernet0/secondary-dns @@ -0,0 +1 @@ +10.16.255.3
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-bad-gateway/firmware/ibft/ethernet0/subnet-mask b/src/initrd/tests/sysfs-bad-gateway/firmware/ibft/ethernet0/subnet-mask new file mode 100644 index 000000000..7cb9d0a9b --- /dev/null +++ b/src/initrd/tests/sysfs-bad-gateway/firmware/ibft/ethernet0/subnet-mask @@ -0,0 +1 @@ +255.255.252.0
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-bad-gateway/firmware/ibft/ethernet0/vlan b/src/initrd/tests/sysfs-bad-gateway/firmware/ibft/ethernet0/vlan new file mode 100644 index 000000000..c22708346 --- /dev/null +++ b/src/initrd/tests/sysfs-bad-gateway/firmware/ibft/ethernet0/vlan @@ -0,0 +1 @@ +0
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-bad-gateway/firmware/ibft/initiator/initiator-name b/src/initrd/tests/sysfs-bad-gateway/firmware/ibft/initiator/initiator-name new file mode 100644 index 000000000..509a7ab8b --- /dev/null +++ b/src/initrd/tests/sysfs-bad-gateway/firmware/ibft/initiator/initiator-name @@ -0,0 +1 @@ +iqn.pjones6
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-bad-gateway/firmware/ibft/target0/index b/src/initrd/tests/sysfs-bad-gateway/firmware/ibft/target0/index new file mode 100644 index 000000000..c22708346 --- /dev/null +++ b/src/initrd/tests/sysfs-bad-gateway/firmware/ibft/target0/index @@ -0,0 +1 @@ +0
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-bad-gateway/firmware/ibft/target0/ip-addr b/src/initrd/tests/sysfs-bad-gateway/firmware/ibft/target0/ip-addr new file mode 100644 index 000000000..7450fdf90 --- /dev/null +++ b/src/initrd/tests/sysfs-bad-gateway/firmware/ibft/target0/ip-addr @@ -0,0 +1 @@ +10.16.52.16
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-bad-gateway/firmware/ibft/target0/lun b/src/initrd/tests/sysfs-bad-gateway/firmware/ibft/target0/lun new file mode 100644 index 000000000..c43d0930c --- /dev/null +++ b/src/initrd/tests/sysfs-bad-gateway/firmware/ibft/target0/lun @@ -0,0 +1 @@ +00000000
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-bad-gateway/firmware/ibft/target0/port b/src/initrd/tests/sysfs-bad-gateway/firmware/ibft/target0/port new file mode 100644 index 000000000..58f0d919f --- /dev/null +++ b/src/initrd/tests/sysfs-bad-gateway/firmware/ibft/target0/port @@ -0,0 +1 @@ +3260
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-bad-gateway/firmware/ibft/target0/target-name b/src/initrd/tests/sysfs-bad-gateway/firmware/ibft/target0/target-name new file mode 100644 index 000000000..32c9450a2 --- /dev/null +++ b/src/initrd/tests/sysfs-bad-gateway/firmware/ibft/target0/target-name @@ -0,0 +1 @@ +iqn.0.2008-11.com.blahblah:iscsi0
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-bad-ipaddr/class/net/eth0/address b/src/initrd/tests/sysfs-bad-ipaddr/class/net/eth0/address new file mode 100644 index 000000000..20659db7e --- /dev/null +++ b/src/initrd/tests/sysfs-bad-ipaddr/class/net/eth0/address @@ -0,0 +1 @@ +00:33:21:98:b9:f0
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-bad-ipaddr/firmware/ibft/ethernet0/gateway b/src/initrd/tests/sysfs-bad-ipaddr/firmware/ibft/ethernet0/gateway new file mode 100644 index 000000000..bf6cf4543 --- /dev/null +++ b/src/initrd/tests/sysfs-bad-ipaddr/firmware/ibft/ethernet0/gateway @@ -0,0 +1 @@ +192.168.35.254
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-bad-ipaddr/firmware/ibft/ethernet0/index b/src/initrd/tests/sysfs-bad-ipaddr/firmware/ibft/ethernet0/index new file mode 100644 index 000000000..c22708346 --- /dev/null +++ b/src/initrd/tests/sysfs-bad-ipaddr/firmware/ibft/ethernet0/index @@ -0,0 +1 @@ +0
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-bad-ipaddr/firmware/ibft/ethernet0/ip-addr b/src/initrd/tests/sysfs-bad-ipaddr/firmware/ibft/ethernet0/ip-addr new file mode 100644 index 000000000..d526f3244 --- /dev/null +++ b/src/initrd/tests/sysfs-bad-ipaddr/firmware/ibft/ethernet0/ip-addr @@ -0,0 +1 @@ +aa.bb.cc.dd
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-bad-ipaddr/firmware/ibft/ethernet0/mac b/src/initrd/tests/sysfs-bad-ipaddr/firmware/ibft/ethernet0/mac new file mode 100644 index 000000000..20659db7e --- /dev/null +++ b/src/initrd/tests/sysfs-bad-ipaddr/firmware/ibft/ethernet0/mac @@ -0,0 +1 @@ +00:33:21:98:b9:f0
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-bad-ipaddr/firmware/ibft/ethernet0/origin b/src/initrd/tests/sysfs-bad-ipaddr/firmware/ibft/ethernet0/origin new file mode 100644 index 000000000..56a6051ca --- /dev/null +++ b/src/initrd/tests/sysfs-bad-ipaddr/firmware/ibft/ethernet0/origin @@ -0,0 +1 @@ +1
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-bad-ipaddr/firmware/ibft/ethernet0/prefix-len b/src/initrd/tests/sysfs-bad-ipaddr/firmware/ibft/ethernet0/prefix-len new file mode 100644 index 000000000..8fdd954df --- /dev/null +++ b/src/initrd/tests/sysfs-bad-ipaddr/firmware/ibft/ethernet0/prefix-len @@ -0,0 +1 @@ +22
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-bad-ipaddr/firmware/ibft/ethernet0/primary-dns b/src/initrd/tests/sysfs-bad-ipaddr/firmware/ibft/ethernet0/primary-dns new file mode 100644 index 000000000..2e152cb08 --- /dev/null +++ b/src/initrd/tests/sysfs-bad-ipaddr/firmware/ibft/ethernet0/primary-dns @@ -0,0 +1 @@ +10.16.255.2
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-bad-ipaddr/firmware/ibft/ethernet0/secondary-dns b/src/initrd/tests/sysfs-bad-ipaddr/firmware/ibft/ethernet0/secondary-dns new file mode 100644 index 000000000..2eb9e1d0a --- /dev/null +++ b/src/initrd/tests/sysfs-bad-ipaddr/firmware/ibft/ethernet0/secondary-dns @@ -0,0 +1 @@ +10.16.255.3
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-bad-ipaddr/firmware/ibft/ethernet0/subnet-mask b/src/initrd/tests/sysfs-bad-ipaddr/firmware/ibft/ethernet0/subnet-mask new file mode 100644 index 000000000..7cb9d0a9b --- /dev/null +++ b/src/initrd/tests/sysfs-bad-ipaddr/firmware/ibft/ethernet0/subnet-mask @@ -0,0 +1 @@ +255.255.252.0
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-bad-ipaddr/firmware/ibft/ethernet0/vlan b/src/initrd/tests/sysfs-bad-ipaddr/firmware/ibft/ethernet0/vlan new file mode 100644 index 000000000..c22708346 --- /dev/null +++ b/src/initrd/tests/sysfs-bad-ipaddr/firmware/ibft/ethernet0/vlan @@ -0,0 +1 @@ +0
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-bad-ipaddr/firmware/ibft/initiator/initiator-name b/src/initrd/tests/sysfs-bad-ipaddr/firmware/ibft/initiator/initiator-name new file mode 100644 index 000000000..509a7ab8b --- /dev/null +++ b/src/initrd/tests/sysfs-bad-ipaddr/firmware/ibft/initiator/initiator-name @@ -0,0 +1 @@ +iqn.pjones6
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-bad-ipaddr/firmware/ibft/target0/index b/src/initrd/tests/sysfs-bad-ipaddr/firmware/ibft/target0/index new file mode 100644 index 000000000..c22708346 --- /dev/null +++ b/src/initrd/tests/sysfs-bad-ipaddr/firmware/ibft/target0/index @@ -0,0 +1 @@ +0
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-bad-ipaddr/firmware/ibft/target0/ip-addr b/src/initrd/tests/sysfs-bad-ipaddr/firmware/ibft/target0/ip-addr new file mode 100644 index 000000000..7450fdf90 --- /dev/null +++ b/src/initrd/tests/sysfs-bad-ipaddr/firmware/ibft/target0/ip-addr @@ -0,0 +1 @@ +10.16.52.16
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-bad-ipaddr/firmware/ibft/target0/lun b/src/initrd/tests/sysfs-bad-ipaddr/firmware/ibft/target0/lun new file mode 100644 index 000000000..c43d0930c --- /dev/null +++ b/src/initrd/tests/sysfs-bad-ipaddr/firmware/ibft/target0/lun @@ -0,0 +1 @@ +00000000
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-bad-ipaddr/firmware/ibft/target0/port b/src/initrd/tests/sysfs-bad-ipaddr/firmware/ibft/target0/port new file mode 100644 index 000000000..58f0d919f --- /dev/null +++ b/src/initrd/tests/sysfs-bad-ipaddr/firmware/ibft/target0/port @@ -0,0 +1 @@ +3260
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-bad-ipaddr/firmware/ibft/target0/target-name b/src/initrd/tests/sysfs-bad-ipaddr/firmware/ibft/target0/target-name new file mode 100644 index 000000000..32c9450a2 --- /dev/null +++ b/src/initrd/tests/sysfs-bad-ipaddr/firmware/ibft/target0/target-name @@ -0,0 +1 @@ +iqn.0.2008-11.com.blahblah:iscsi0
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-dhcp/class/net/eth0/address b/src/initrd/tests/sysfs-dhcp/class/net/eth0/address new file mode 100644 index 000000000..20659db7e --- /dev/null +++ b/src/initrd/tests/sysfs-dhcp/class/net/eth0/address @@ -0,0 +1 @@ +00:33:21:98:b9:f0
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-dhcp/class/net/eth1/address b/src/initrd/tests/sysfs-dhcp/class/net/eth1/address new file mode 100644 index 000000000..befa7850f --- /dev/null +++ b/src/initrd/tests/sysfs-dhcp/class/net/eth1/address @@ -0,0 +1 @@ +00:33:21:98:b9:f1
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-dhcp/firmware/ibft/ethernet0/gateway b/src/initrd/tests/sysfs-dhcp/firmware/ibft/ethernet0/gateway new file mode 100644 index 000000000..59ea5b826 --- /dev/null +++ b/src/initrd/tests/sysfs-dhcp/firmware/ibft/ethernet0/gateway @@ -0,0 +1 @@ +10.16.52.254
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-dhcp/firmware/ibft/ethernet0/index b/src/initrd/tests/sysfs-dhcp/firmware/ibft/ethernet0/index new file mode 100644 index 000000000..c22708346 --- /dev/null +++ b/src/initrd/tests/sysfs-dhcp/firmware/ibft/ethernet0/index @@ -0,0 +1 @@ +0
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-dhcp/firmware/ibft/ethernet0/mac b/src/initrd/tests/sysfs-dhcp/firmware/ibft/ethernet0/mac new file mode 100644 index 000000000..20659db7e --- /dev/null +++ b/src/initrd/tests/sysfs-dhcp/firmware/ibft/ethernet0/mac @@ -0,0 +1 @@ +00:33:21:98:b9:f0
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-dhcp/firmware/ibft/ethernet0/origin b/src/initrd/tests/sysfs-dhcp/firmware/ibft/ethernet0/origin new file mode 100644 index 000000000..e440e5c84 --- /dev/null +++ b/src/initrd/tests/sysfs-dhcp/firmware/ibft/ethernet0/origin @@ -0,0 +1 @@ +3
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-dhcp/firmware/ibft/ethernet0/primary-dns b/src/initrd/tests/sysfs-dhcp/firmware/ibft/ethernet0/primary-dns new file mode 100644 index 000000000..2e152cb08 --- /dev/null +++ b/src/initrd/tests/sysfs-dhcp/firmware/ibft/ethernet0/primary-dns @@ -0,0 +1 @@ +10.16.255.2
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-dhcp/firmware/ibft/ethernet0/secondary-dns b/src/initrd/tests/sysfs-dhcp/firmware/ibft/ethernet0/secondary-dns new file mode 100644 index 000000000..2eb9e1d0a --- /dev/null +++ b/src/initrd/tests/sysfs-dhcp/firmware/ibft/ethernet0/secondary-dns @@ -0,0 +1 @@ +10.16.255.3
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-dhcp/firmware/ibft/ethernet0/vlan b/src/initrd/tests/sysfs-dhcp/firmware/ibft/ethernet0/vlan new file mode 100644 index 000000000..c22708346 --- /dev/null +++ b/src/initrd/tests/sysfs-dhcp/firmware/ibft/ethernet0/vlan @@ -0,0 +1 @@ +0
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-dhcp/firmware/ibft/ethernet1/gateway b/src/initrd/tests/sysfs-dhcp/firmware/ibft/ethernet1/gateway new file mode 100644 index 000000000..59ea5b826 --- /dev/null +++ b/src/initrd/tests/sysfs-dhcp/firmware/ibft/ethernet1/gateway @@ -0,0 +1 @@ +10.16.52.254
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-dhcp/firmware/ibft/ethernet1/index b/src/initrd/tests/sysfs-dhcp/firmware/ibft/ethernet1/index new file mode 100644 index 000000000..56a6051ca --- /dev/null +++ b/src/initrd/tests/sysfs-dhcp/firmware/ibft/ethernet1/index @@ -0,0 +1 @@ +1
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-dhcp/firmware/ibft/ethernet1/mac b/src/initrd/tests/sysfs-dhcp/firmware/ibft/ethernet1/mac new file mode 100644 index 000000000..befa7850f --- /dev/null +++ b/src/initrd/tests/sysfs-dhcp/firmware/ibft/ethernet1/mac @@ -0,0 +1 @@ +00:33:21:98:b9:f1
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-dhcp/firmware/ibft/ethernet1/origin b/src/initrd/tests/sysfs-dhcp/firmware/ibft/ethernet1/origin new file mode 100644 index 000000000..e440e5c84 --- /dev/null +++ b/src/initrd/tests/sysfs-dhcp/firmware/ibft/ethernet1/origin @@ -0,0 +1 @@ +3
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-dhcp/firmware/ibft/ethernet1/primary-dns b/src/initrd/tests/sysfs-dhcp/firmware/ibft/ethernet1/primary-dns new file mode 100644 index 000000000..2e152cb08 --- /dev/null +++ b/src/initrd/tests/sysfs-dhcp/firmware/ibft/ethernet1/primary-dns @@ -0,0 +1 @@ +10.16.255.2
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-dhcp/firmware/ibft/ethernet1/secondary-dns b/src/initrd/tests/sysfs-dhcp/firmware/ibft/ethernet1/secondary-dns new file mode 100644 index 000000000..2eb9e1d0a --- /dev/null +++ b/src/initrd/tests/sysfs-dhcp/firmware/ibft/ethernet1/secondary-dns @@ -0,0 +1 @@ +10.16.255.3
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-dhcp/firmware/ibft/ethernet1/vlan b/src/initrd/tests/sysfs-dhcp/firmware/ibft/ethernet1/vlan new file mode 100644 index 000000000..c22708346 --- /dev/null +++ b/src/initrd/tests/sysfs-dhcp/firmware/ibft/ethernet1/vlan @@ -0,0 +1 @@ +0
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-dhcp/firmware/ibft/initiator/initiator-name b/src/initrd/tests/sysfs-dhcp/firmware/ibft/initiator/initiator-name new file mode 100644 index 000000000..509a7ab8b --- /dev/null +++ b/src/initrd/tests/sysfs-dhcp/firmware/ibft/initiator/initiator-name @@ -0,0 +1 @@ +iqn.pjones6
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-dhcp/firmware/ibft/target0/index b/src/initrd/tests/sysfs-dhcp/firmware/ibft/target0/index new file mode 100644 index 000000000..c22708346 --- /dev/null +++ b/src/initrd/tests/sysfs-dhcp/firmware/ibft/target0/index @@ -0,0 +1 @@ +0
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-dhcp/firmware/ibft/target0/ip-addr b/src/initrd/tests/sysfs-dhcp/firmware/ibft/target0/ip-addr new file mode 100644 index 000000000..7450fdf90 --- /dev/null +++ b/src/initrd/tests/sysfs-dhcp/firmware/ibft/target0/ip-addr @@ -0,0 +1 @@ +10.16.52.16
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-dhcp/firmware/ibft/target0/lun b/src/initrd/tests/sysfs-dhcp/firmware/ibft/target0/lun new file mode 100644 index 000000000..c43d0930c --- /dev/null +++ b/src/initrd/tests/sysfs-dhcp/firmware/ibft/target0/lun @@ -0,0 +1 @@ +00000000
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-dhcp/firmware/ibft/target0/port b/src/initrd/tests/sysfs-dhcp/firmware/ibft/target0/port new file mode 100644 index 000000000..58f0d919f --- /dev/null +++ b/src/initrd/tests/sysfs-dhcp/firmware/ibft/target0/port @@ -0,0 +1 @@ +3260
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-dhcp/firmware/ibft/target0/target-name b/src/initrd/tests/sysfs-dhcp/firmware/ibft/target0/target-name new file mode 100644 index 000000000..32c9450a2 --- /dev/null +++ b/src/initrd/tests/sysfs-dhcp/firmware/ibft/target0/target-name @@ -0,0 +1 @@ +iqn.0.2008-11.com.blahblah:iscsi0
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-dhcp/firmware/ibft/target1/index b/src/initrd/tests/sysfs-dhcp/firmware/ibft/target1/index new file mode 100644 index 000000000..56a6051ca --- /dev/null +++ b/src/initrd/tests/sysfs-dhcp/firmware/ibft/target1/index @@ -0,0 +1 @@ +1
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-dhcp/firmware/ibft/target1/ip-addr b/src/initrd/tests/sysfs-dhcp/firmware/ibft/target1/ip-addr new file mode 100644 index 000000000..7450fdf90 --- /dev/null +++ b/src/initrd/tests/sysfs-dhcp/firmware/ibft/target1/ip-addr @@ -0,0 +1 @@ +10.16.52.16
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-dhcp/firmware/ibft/target1/lun b/src/initrd/tests/sysfs-dhcp/firmware/ibft/target1/lun new file mode 100644 index 000000000..c43d0930c --- /dev/null +++ b/src/initrd/tests/sysfs-dhcp/firmware/ibft/target1/lun @@ -0,0 +1 @@ +00000000
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-dhcp/firmware/ibft/target1/port b/src/initrd/tests/sysfs-dhcp/firmware/ibft/target1/port new file mode 100644 index 000000000..58f0d919f --- /dev/null +++ b/src/initrd/tests/sysfs-dhcp/firmware/ibft/target1/port @@ -0,0 +1 @@ +3260
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-dhcp/firmware/ibft/target1/target-name b/src/initrd/tests/sysfs-dhcp/firmware/ibft/target1/target-name new file mode 100644 index 000000000..ac3a6a2ab --- /dev/null +++ b/src/initrd/tests/sysfs-dhcp/firmware/ibft/target1/target-name @@ -0,0 +1 @@ +iqn.1.2008-11.com.blahblah:iscsi1
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-static/class/net/eth0/address b/src/initrd/tests/sysfs-static/class/net/eth0/address new file mode 100644 index 000000000..20659db7e --- /dev/null +++ b/src/initrd/tests/sysfs-static/class/net/eth0/address @@ -0,0 +1 @@ +00:33:21:98:b9:f0
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-static/class/net/eth1/address b/src/initrd/tests/sysfs-static/class/net/eth1/address new file mode 100644 index 000000000..befa7850f --- /dev/null +++ b/src/initrd/tests/sysfs-static/class/net/eth1/address @@ -0,0 +1 @@ +00:33:21:98:b9:f1
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-static/firmware/ibft/ethernet0/gateway b/src/initrd/tests/sysfs-static/firmware/ibft/ethernet0/gateway new file mode 100644 index 000000000..bf6cf4543 --- /dev/null +++ b/src/initrd/tests/sysfs-static/firmware/ibft/ethernet0/gateway @@ -0,0 +1 @@ +192.168.35.254
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-static/firmware/ibft/ethernet0/index b/src/initrd/tests/sysfs-static/firmware/ibft/ethernet0/index new file mode 100644 index 000000000..c22708346 --- /dev/null +++ b/src/initrd/tests/sysfs-static/firmware/ibft/ethernet0/index @@ -0,0 +1 @@ +0
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-static/firmware/ibft/ethernet0/ip-addr b/src/initrd/tests/sysfs-static/firmware/ibft/ethernet0/ip-addr new file mode 100644 index 000000000..944c8d456 --- /dev/null +++ b/src/initrd/tests/sysfs-static/firmware/ibft/ethernet0/ip-addr @@ -0,0 +1 @@ +192.168.32.72
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-static/firmware/ibft/ethernet0/mac b/src/initrd/tests/sysfs-static/firmware/ibft/ethernet0/mac new file mode 100644 index 000000000..20659db7e --- /dev/null +++ b/src/initrd/tests/sysfs-static/firmware/ibft/ethernet0/mac @@ -0,0 +1 @@ +00:33:21:98:b9:f0
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-static/firmware/ibft/ethernet0/origin b/src/initrd/tests/sysfs-static/firmware/ibft/ethernet0/origin new file mode 100644 index 000000000..56a6051ca --- /dev/null +++ b/src/initrd/tests/sysfs-static/firmware/ibft/ethernet0/origin @@ -0,0 +1 @@ +1
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-static/firmware/ibft/ethernet0/prefix-len b/src/initrd/tests/sysfs-static/firmware/ibft/ethernet0/prefix-len new file mode 100644 index 000000000..8fdd954df --- /dev/null +++ b/src/initrd/tests/sysfs-static/firmware/ibft/ethernet0/prefix-len @@ -0,0 +1 @@ +22
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-static/firmware/ibft/ethernet0/primary-dns b/src/initrd/tests/sysfs-static/firmware/ibft/ethernet0/primary-dns new file mode 100644 index 000000000..2e152cb08 --- /dev/null +++ b/src/initrd/tests/sysfs-static/firmware/ibft/ethernet0/primary-dns @@ -0,0 +1 @@ +10.16.255.2
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-static/firmware/ibft/ethernet0/secondary-dns b/src/initrd/tests/sysfs-static/firmware/ibft/ethernet0/secondary-dns new file mode 100644 index 000000000..2eb9e1d0a --- /dev/null +++ b/src/initrd/tests/sysfs-static/firmware/ibft/ethernet0/secondary-dns @@ -0,0 +1 @@ +10.16.255.3
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-static/firmware/ibft/ethernet0/subnet-mask b/src/initrd/tests/sysfs-static/firmware/ibft/ethernet0/subnet-mask new file mode 100644 index 000000000..7cb9d0a9b --- /dev/null +++ b/src/initrd/tests/sysfs-static/firmware/ibft/ethernet0/subnet-mask @@ -0,0 +1 @@ +255.255.252.0
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-static/firmware/ibft/ethernet0/vlan b/src/initrd/tests/sysfs-static/firmware/ibft/ethernet0/vlan new file mode 100644 index 000000000..c22708346 --- /dev/null +++ b/src/initrd/tests/sysfs-static/firmware/ibft/ethernet0/vlan @@ -0,0 +1 @@ +0
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-static/firmware/ibft/ethernet1/gateway b/src/initrd/tests/sysfs-static/firmware/ibft/ethernet1/gateway new file mode 100644 index 000000000..59ea5b826 --- /dev/null +++ b/src/initrd/tests/sysfs-static/firmware/ibft/ethernet1/gateway @@ -0,0 +1 @@ +10.16.52.254
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-static/firmware/ibft/ethernet1/index b/src/initrd/tests/sysfs-static/firmware/ibft/ethernet1/index new file mode 100644 index 000000000..56a6051ca --- /dev/null +++ b/src/initrd/tests/sysfs-static/firmware/ibft/ethernet1/index @@ -0,0 +1 @@ +1
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-static/firmware/ibft/ethernet1/mac b/src/initrd/tests/sysfs-static/firmware/ibft/ethernet1/mac new file mode 100644 index 000000000..befa7850f --- /dev/null +++ b/src/initrd/tests/sysfs-static/firmware/ibft/ethernet1/mac @@ -0,0 +1 @@ +00:33:21:98:b9:f1
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-static/firmware/ibft/ethernet1/origin b/src/initrd/tests/sysfs-static/firmware/ibft/ethernet1/origin new file mode 100644 index 000000000..e440e5c84 --- /dev/null +++ b/src/initrd/tests/sysfs-static/firmware/ibft/ethernet1/origin @@ -0,0 +1 @@ +3
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-static/firmware/ibft/ethernet1/primary-dns b/src/initrd/tests/sysfs-static/firmware/ibft/ethernet1/primary-dns new file mode 100644 index 000000000..2e152cb08 --- /dev/null +++ b/src/initrd/tests/sysfs-static/firmware/ibft/ethernet1/primary-dns @@ -0,0 +1 @@ +10.16.255.2
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-static/firmware/ibft/ethernet1/secondary-dns b/src/initrd/tests/sysfs-static/firmware/ibft/ethernet1/secondary-dns new file mode 100644 index 000000000..2eb9e1d0a --- /dev/null +++ b/src/initrd/tests/sysfs-static/firmware/ibft/ethernet1/secondary-dns @@ -0,0 +1 @@ +10.16.255.3
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-static/firmware/ibft/ethernet1/vlan b/src/initrd/tests/sysfs-static/firmware/ibft/ethernet1/vlan new file mode 100644 index 000000000..c22708346 --- /dev/null +++ b/src/initrd/tests/sysfs-static/firmware/ibft/ethernet1/vlan @@ -0,0 +1 @@ +0
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-static/firmware/ibft/initiator/initiator-name b/src/initrd/tests/sysfs-static/firmware/ibft/initiator/initiator-name new file mode 100644 index 000000000..509a7ab8b --- /dev/null +++ b/src/initrd/tests/sysfs-static/firmware/ibft/initiator/initiator-name @@ -0,0 +1 @@ +iqn.pjones6
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-static/firmware/ibft/target0/index b/src/initrd/tests/sysfs-static/firmware/ibft/target0/index new file mode 100644 index 000000000..c22708346 --- /dev/null +++ b/src/initrd/tests/sysfs-static/firmware/ibft/target0/index @@ -0,0 +1 @@ +0
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-static/firmware/ibft/target0/ip-addr b/src/initrd/tests/sysfs-static/firmware/ibft/target0/ip-addr new file mode 100644 index 000000000..7450fdf90 --- /dev/null +++ b/src/initrd/tests/sysfs-static/firmware/ibft/target0/ip-addr @@ -0,0 +1 @@ +10.16.52.16
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-static/firmware/ibft/target0/lun b/src/initrd/tests/sysfs-static/firmware/ibft/target0/lun new file mode 100644 index 000000000..c43d0930c --- /dev/null +++ b/src/initrd/tests/sysfs-static/firmware/ibft/target0/lun @@ -0,0 +1 @@ +00000000
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-static/firmware/ibft/target0/port b/src/initrd/tests/sysfs-static/firmware/ibft/target0/port new file mode 100644 index 000000000..58f0d919f --- /dev/null +++ b/src/initrd/tests/sysfs-static/firmware/ibft/target0/port @@ -0,0 +1 @@ +3260
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-static/firmware/ibft/target0/target-name b/src/initrd/tests/sysfs-static/firmware/ibft/target0/target-name new file mode 100644 index 000000000..32c9450a2 --- /dev/null +++ b/src/initrd/tests/sysfs-static/firmware/ibft/target0/target-name @@ -0,0 +1 @@ +iqn.0.2008-11.com.blahblah:iscsi0
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-static/firmware/ibft/target1/index b/src/initrd/tests/sysfs-static/firmware/ibft/target1/index new file mode 100644 index 000000000..56a6051ca --- /dev/null +++ b/src/initrd/tests/sysfs-static/firmware/ibft/target1/index @@ -0,0 +1 @@ +1
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-static/firmware/ibft/target1/ip-addr b/src/initrd/tests/sysfs-static/firmware/ibft/target1/ip-addr new file mode 100644 index 000000000..7450fdf90 --- /dev/null +++ b/src/initrd/tests/sysfs-static/firmware/ibft/target1/ip-addr @@ -0,0 +1 @@ +10.16.52.16
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-static/firmware/ibft/target1/lun b/src/initrd/tests/sysfs-static/firmware/ibft/target1/lun new file mode 100644 index 000000000..c43d0930c --- /dev/null +++ b/src/initrd/tests/sysfs-static/firmware/ibft/target1/lun @@ -0,0 +1 @@ +00000000
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-static/firmware/ibft/target1/port b/src/initrd/tests/sysfs-static/firmware/ibft/target1/port new file mode 100644 index 000000000..58f0d919f --- /dev/null +++ b/src/initrd/tests/sysfs-static/firmware/ibft/target1/port @@ -0,0 +1 @@ +3260
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-static/firmware/ibft/target1/target-name b/src/initrd/tests/sysfs-static/firmware/ibft/target1/target-name new file mode 100644 index 000000000..ac3a6a2ab --- /dev/null +++ b/src/initrd/tests/sysfs-static/firmware/ibft/target1/target-name @@ -0,0 +1 @@ +iqn.1.2008-11.com.blahblah:iscsi1
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-vlan/class/net/eth0/address b/src/initrd/tests/sysfs-vlan/class/net/eth0/address new file mode 100644 index 000000000..20659db7e --- /dev/null +++ b/src/initrd/tests/sysfs-vlan/class/net/eth0/address @@ -0,0 +1 @@ +00:33:21:98:b9:f0
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-vlan/firmware/ibft/ethernet0/index b/src/initrd/tests/sysfs-vlan/firmware/ibft/ethernet0/index new file mode 100644 index 000000000..c22708346 --- /dev/null +++ b/src/initrd/tests/sysfs-vlan/firmware/ibft/ethernet0/index @@ -0,0 +1 @@ +0
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-vlan/firmware/ibft/ethernet0/ip-addr b/src/initrd/tests/sysfs-vlan/firmware/ibft/ethernet0/ip-addr new file mode 100644 index 000000000..4923230c8 --- /dev/null +++ b/src/initrd/tests/sysfs-vlan/firmware/ibft/ethernet0/ip-addr @@ -0,0 +1 @@ +192.168.6.200
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-vlan/firmware/ibft/ethernet0/mac b/src/initrd/tests/sysfs-vlan/firmware/ibft/ethernet0/mac new file mode 100644 index 000000000..20659db7e --- /dev/null +++ b/src/initrd/tests/sysfs-vlan/firmware/ibft/ethernet0/mac @@ -0,0 +1 @@ +00:33:21:98:b9:f0
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-vlan/firmware/ibft/ethernet0/origin b/src/initrd/tests/sysfs-vlan/firmware/ibft/ethernet0/origin new file mode 100644 index 000000000..56a6051ca --- /dev/null +++ b/src/initrd/tests/sysfs-vlan/firmware/ibft/ethernet0/origin @@ -0,0 +1 @@ +1
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-vlan/firmware/ibft/ethernet0/prefix-len b/src/initrd/tests/sysfs-vlan/firmware/ibft/ethernet0/prefix-len new file mode 100644 index 000000000..cabf43b5d --- /dev/null +++ b/src/initrd/tests/sysfs-vlan/firmware/ibft/ethernet0/prefix-len @@ -0,0 +1 @@ +24
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-vlan/firmware/ibft/ethernet0/subnet-mask b/src/initrd/tests/sysfs-vlan/firmware/ibft/ethernet0/subnet-mask new file mode 100644 index 000000000..5a279b41f --- /dev/null +++ b/src/initrd/tests/sysfs-vlan/firmware/ibft/ethernet0/subnet-mask @@ -0,0 +1 @@ +255.255.255.0
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-vlan/firmware/ibft/ethernet0/vlan b/src/initrd/tests/sysfs-vlan/firmware/ibft/ethernet0/vlan new file mode 100644 index 000000000..d800886d9 --- /dev/null +++ b/src/initrd/tests/sysfs-vlan/firmware/ibft/ethernet0/vlan @@ -0,0 +1 @@ +123
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-vlan/firmware/ibft/initiator/initiator-name b/src/initrd/tests/sysfs-vlan/firmware/ibft/initiator/initiator-name new file mode 100644 index 000000000..8e9cd2c42 --- /dev/null +++ b/src/initrd/tests/sysfs-vlan/firmware/ibft/initiator/initiator-name @@ -0,0 +1 @@ +iqn.2010-04.org.ipxe:d05faa97-c4be-44f6-a723-efde9aa399a0
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-vlan/firmware/ibft/target0/index b/src/initrd/tests/sysfs-vlan/firmware/ibft/target0/index new file mode 100644 index 000000000..c22708346 --- /dev/null +++ b/src/initrd/tests/sysfs-vlan/firmware/ibft/target0/index @@ -0,0 +1 @@ +0
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-vlan/firmware/ibft/target0/ip-addr b/src/initrd/tests/sysfs-vlan/firmware/ibft/target0/ip-addr new file mode 100644 index 000000000..a32ce01ba --- /dev/null +++ b/src/initrd/tests/sysfs-vlan/firmware/ibft/target0/ip-addr @@ -0,0 +1 @@ +192.168.6.32
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-vlan/firmware/ibft/target0/lun b/src/initrd/tests/sysfs-vlan/firmware/ibft/target0/lun new file mode 100644 index 000000000..f309ca6a0 --- /dev/null +++ b/src/initrd/tests/sysfs-vlan/firmware/ibft/target0/lun @@ -0,0 +1 @@ +01000000
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-vlan/firmware/ibft/target0/port b/src/initrd/tests/sysfs-vlan/firmware/ibft/target0/port new file mode 100644 index 000000000..58f0d919f --- /dev/null +++ b/src/initrd/tests/sysfs-vlan/firmware/ibft/target0/port @@ -0,0 +1 @@ +3260
\ No newline at end of file diff --git a/src/initrd/tests/sysfs-vlan/firmware/ibft/target0/target-name b/src/initrd/tests/sysfs-vlan/firmware/ibft/target0/target-name new file mode 100644 index 000000000..f0e611579 --- /dev/null +++ b/src/initrd/tests/sysfs-vlan/firmware/ibft/target0/target-name @@ -0,0 +1 @@ +iqn.2003-01.org.x:disk1
\ No newline at end of file diff --git a/src/initrd/tests/sysfs/class/net/eth0/address b/src/initrd/tests/sysfs/class/net/eth0/address new file mode 100644 index 000000000..1f2f610ec --- /dev/null +++ b/src/initrd/tests/sysfs/class/net/eth0/address @@ -0,0 +1 @@ +00:53:00:AB:00:01 diff --git a/src/initrd/tests/sysfs/class/net/eth2/address b/src/initrd/tests/sysfs/class/net/eth2/address new file mode 100644 index 000000000..6ec1078ab --- /dev/null +++ b/src/initrd/tests/sysfs/class/net/eth2/address @@ -0,0 +1 @@ +00:53:06:66:ab:01 diff --git a/src/initrd/tests/sysfs/firmware/ibft/acpi_header/oem_id b/src/initrd/tests/sysfs/firmware/ibft/acpi_header/oem_id new file mode 100644 index 000000000..590d9cd21 --- /dev/null +++ b/src/initrd/tests/sysfs/firmware/ibft/acpi_header/oem_id @@ -0,0 +1 @@ +NMTst diff --git a/src/initrd/tests/sysfs/firmware/ibft/acpi_header/oem_table_id b/src/initrd/tests/sysfs/firmware/ibft/acpi_header/oem_table_id new file mode 100644 index 000000000..35d4d09ce --- /dev/null +++ b/src/initrd/tests/sysfs/firmware/ibft/acpi_header/oem_table_id @@ -0,0 +1 @@ +Whatevs diff --git a/src/initrd/tests/sysfs/firmware/ibft/acpi_header/signature b/src/initrd/tests/sysfs/firmware/ibft/acpi_header/signature new file mode 100644 index 000000000..e3a5d7ef2 --- /dev/null +++ b/src/initrd/tests/sysfs/firmware/ibft/acpi_header/signature @@ -0,0 +1 @@ +IBFT diff --git a/src/initrd/tests/sysfs/firmware/ibft/ethernet0/dhcp b/src/initrd/tests/sysfs/firmware/ibft/ethernet0/dhcp new file mode 100644 index 000000000..98a0d7974 --- /dev/null +++ b/src/initrd/tests/sysfs/firmware/ibft/ethernet0/dhcp @@ -0,0 +1 @@ +2001:0db8:0000:0000:0000:0000:0000:0002 diff --git a/src/initrd/tests/sysfs/firmware/ibft/ethernet0/flags b/src/initrd/tests/sysfs/firmware/ibft/ethernet0/flags new file mode 100644 index 000000000..00750edc0 --- /dev/null +++ b/src/initrd/tests/sysfs/firmware/ibft/ethernet0/flags @@ -0,0 +1 @@ +3 diff --git a/src/initrd/tests/sysfs/firmware/ibft/ethernet0/gateway b/src/initrd/tests/sysfs/firmware/ibft/ethernet0/gateway new file mode 100644 index 000000000..7f378f8f9 --- /dev/null +++ b/src/initrd/tests/sysfs/firmware/ibft/ethernet0/gateway @@ -0,0 +1 @@ +2001:0db8:0000:0000:0000:0000:0000:0001 diff --git a/src/initrd/tests/sysfs/firmware/ibft/ethernet0/hostname b/src/initrd/tests/sysfs/firmware/ibft/ethernet0/hostname new file mode 100644 index 000000000..3ed5163c8 --- /dev/null +++ b/src/initrd/tests/sysfs/firmware/ibft/ethernet0/hostname @@ -0,0 +1 @@ +host0.example.com diff --git a/src/initrd/tests/sysfs/firmware/ibft/ethernet0/index b/src/initrd/tests/sysfs/firmware/ibft/ethernet0/index new file mode 100644 index 000000000..573541ac9 --- /dev/null +++ b/src/initrd/tests/sysfs/firmware/ibft/ethernet0/index @@ -0,0 +1 @@ +0 diff --git a/src/initrd/tests/sysfs/firmware/ibft/ethernet0/ip-addr b/src/initrd/tests/sysfs/firmware/ibft/ethernet0/ip-addr new file mode 100644 index 000000000..98a0d7974 --- /dev/null +++ b/src/initrd/tests/sysfs/firmware/ibft/ethernet0/ip-addr @@ -0,0 +1 @@ +2001:0db8:0000:0000:0000:0000:0000:0002 diff --git a/src/initrd/tests/sysfs/firmware/ibft/ethernet0/mac b/src/initrd/tests/sysfs/firmware/ibft/ethernet0/mac new file mode 100644 index 000000000..f24413198 --- /dev/null +++ b/src/initrd/tests/sysfs/firmware/ibft/ethernet0/mac @@ -0,0 +1 @@ +00:53:00:ab:00:01 diff --git a/src/initrd/tests/sysfs/firmware/ibft/ethernet0/origin b/src/initrd/tests/sysfs/firmware/ibft/ethernet0/origin new file mode 100644 index 000000000..b8626c4cf --- /dev/null +++ b/src/initrd/tests/sysfs/firmware/ibft/ethernet0/origin @@ -0,0 +1 @@ +4 diff --git a/src/initrd/tests/sysfs/firmware/ibft/ethernet0/prefix-len b/src/initrd/tests/sysfs/firmware/ibft/ethernet0/prefix-len new file mode 100644 index 000000000..900731ffd --- /dev/null +++ b/src/initrd/tests/sysfs/firmware/ibft/ethernet0/prefix-len @@ -0,0 +1 @@ +64 diff --git a/src/initrd/tests/sysfs/firmware/ibft/ethernet0/primary-dns b/src/initrd/tests/sysfs/firmware/ibft/ethernet0/primary-dns new file mode 100644 index 000000000..e7511d5af --- /dev/null +++ b/src/initrd/tests/sysfs/firmware/ibft/ethernet0/primary-dns @@ -0,0 +1 @@ +2001:0db8:0000:0000:0000:0000:0000:0053 diff --git a/src/initrd/tests/sysfs/firmware/ibft/ethernet0/secondary-dns b/src/initrd/tests/sysfs/firmware/ibft/ethernet0/secondary-dns new file mode 100644 index 000000000..1f6c5c954 --- /dev/null +++ b/src/initrd/tests/sysfs/firmware/ibft/ethernet0/secondary-dns @@ -0,0 +1 @@ +2001:0db8:0000:0000:0000:0000:0000:5353 diff --git a/src/initrd/tests/sysfs/firmware/ibft/ethernet0/subnet-mask b/src/initrd/tests/sysfs/firmware/ibft/ethernet0/subnet-mask new file mode 100644 index 000000000..5df934545 --- /dev/null +++ b/src/initrd/tests/sysfs/firmware/ibft/ethernet0/subnet-mask @@ -0,0 +1 @@ +255.255.255.255 diff --git a/src/initrd/tests/sysfs/firmware/ibft/ethernet0/vlan b/src/initrd/tests/sysfs/firmware/ibft/ethernet0/vlan new file mode 100644 index 000000000..7cc86ad13 --- /dev/null +++ b/src/initrd/tests/sysfs/firmware/ibft/ethernet0/vlan @@ -0,0 +1 @@ +666 diff --git a/src/initrd/tests/sysfs/firmware/ibft/ethernet2/dhcp b/src/initrd/tests/sysfs/firmware/ibft/ethernet2/dhcp new file mode 100644 index 000000000..61ef5585e --- /dev/null +++ b/src/initrd/tests/sysfs/firmware/ibft/ethernet2/dhcp @@ -0,0 +1 @@ +192.0.2.2 diff --git a/src/initrd/tests/sysfs/firmware/ibft/ethernet2/flags b/src/initrd/tests/sysfs/firmware/ibft/ethernet2/flags new file mode 100644 index 000000000..00750edc0 --- /dev/null +++ b/src/initrd/tests/sysfs/firmware/ibft/ethernet2/flags @@ -0,0 +1 @@ +3 diff --git a/src/initrd/tests/sysfs/firmware/ibft/ethernet2/gateway b/src/initrd/tests/sysfs/firmware/ibft/ethernet2/gateway new file mode 100644 index 000000000..2096f194f --- /dev/null +++ b/src/initrd/tests/sysfs/firmware/ibft/ethernet2/gateway @@ -0,0 +1 @@ +192.0.2.1 diff --git a/src/initrd/tests/sysfs/firmware/ibft/ethernet2/hostname b/src/initrd/tests/sysfs/firmware/ibft/ethernet2/hostname new file mode 100644 index 000000000..5dc539d58 --- /dev/null +++ b/src/initrd/tests/sysfs/firmware/ibft/ethernet2/hostname @@ -0,0 +1 @@ +host2.example.com diff --git a/src/initrd/tests/sysfs/firmware/ibft/ethernet2/index b/src/initrd/tests/sysfs/firmware/ibft/ethernet2/index new file mode 100644 index 000000000..0cfbf0888 --- /dev/null +++ b/src/initrd/tests/sysfs/firmware/ibft/ethernet2/index @@ -0,0 +1 @@ +2 diff --git a/src/initrd/tests/sysfs/firmware/ibft/ethernet2/ip-addr b/src/initrd/tests/sysfs/firmware/ibft/ethernet2/ip-addr new file mode 100644 index 000000000..61ef5585e --- /dev/null +++ b/src/initrd/tests/sysfs/firmware/ibft/ethernet2/ip-addr @@ -0,0 +1 @@ +192.0.2.2 diff --git a/src/initrd/tests/sysfs/firmware/ibft/ethernet2/mac b/src/initrd/tests/sysfs/firmware/ibft/ethernet2/mac new file mode 100644 index 000000000..2fc3d5253 --- /dev/null +++ b/src/initrd/tests/sysfs/firmware/ibft/ethernet2/mac @@ -0,0 +1 @@ +00:53:06:66:AB:01 diff --git a/src/initrd/tests/sysfs/firmware/ibft/ethernet2/origin b/src/initrd/tests/sysfs/firmware/ibft/ethernet2/origin new file mode 100644 index 000000000..00750edc0 --- /dev/null +++ b/src/initrd/tests/sysfs/firmware/ibft/ethernet2/origin @@ -0,0 +1 @@ +3 diff --git a/src/initrd/tests/sysfs/firmware/ibft/ethernet2/prefix-len b/src/initrd/tests/sysfs/firmware/ibft/ethernet2/prefix-len new file mode 100644 index 000000000..a45fd52cc --- /dev/null +++ b/src/initrd/tests/sysfs/firmware/ibft/ethernet2/prefix-len @@ -0,0 +1 @@ +24 diff --git a/src/initrd/tests/sysfs/firmware/ibft/ethernet2/primary-dns b/src/initrd/tests/sysfs/firmware/ibft/ethernet2/primary-dns new file mode 100644 index 000000000..6fa8c7429 --- /dev/null +++ b/src/initrd/tests/sysfs/firmware/ibft/ethernet2/primary-dns @@ -0,0 +1 @@ +192.0.2.53 diff --git a/src/initrd/tests/sysfs/firmware/ibft/ethernet2/secondary-dns b/src/initrd/tests/sysfs/firmware/ibft/ethernet2/secondary-dns new file mode 100644 index 000000000..a7269ff5e --- /dev/null +++ b/src/initrd/tests/sysfs/firmware/ibft/ethernet2/secondary-dns @@ -0,0 +1 @@ +192.0.2.54 diff --git a/src/initrd/tests/sysfs/firmware/ibft/ethernet2/subnet-mask b/src/initrd/tests/sysfs/firmware/ibft/ethernet2/subnet-mask new file mode 100644 index 000000000..d30f9e9fd --- /dev/null +++ b/src/initrd/tests/sysfs/firmware/ibft/ethernet2/subnet-mask @@ -0,0 +1 @@ +255.255.255.0 diff --git a/src/initrd/tests/sysfs/firmware/ibft/ethernet2/vlan b/src/initrd/tests/sysfs/firmware/ibft/ethernet2/vlan new file mode 100644 index 000000000..573541ac9 --- /dev/null +++ b/src/initrd/tests/sysfs/firmware/ibft/ethernet2/vlan @@ -0,0 +1 @@ +0 diff --git a/src/initrd/tests/sysfs/firmware/ibft/initiator/flags b/src/initrd/tests/sysfs/firmware/ibft/initiator/flags new file mode 100644 index 000000000..00750edc0 --- /dev/null +++ b/src/initrd/tests/sysfs/firmware/ibft/initiator/flags @@ -0,0 +1 @@ +3 diff --git a/src/initrd/tests/sysfs/firmware/ibft/initiator/index b/src/initrd/tests/sysfs/firmware/ibft/initiator/index new file mode 100644 index 000000000..573541ac9 --- /dev/null +++ b/src/initrd/tests/sysfs/firmware/ibft/initiator/index @@ -0,0 +1 @@ +0 diff --git a/src/initrd/tests/sysfs/firmware/ibft/initiator/initiator-name b/src/initrd/tests/sysfs/firmware/ibft/initiator/initiator-name new file mode 100644 index 000000000..337b5a0f3 --- /dev/null +++ b/src/initrd/tests/sysfs/firmware/ibft/initiator/initiator-name @@ -0,0 +1 @@ +iqn.1994-05.com.example.initiator:48b055856417 diff --git a/src/initrd/tests/sysfs/firmware/ibft/initiator/isns-server b/src/initrd/tests/sysfs/firmware/ibft/initiator/isns-server new file mode 100644 index 000000000..4aff93986 --- /dev/null +++ b/src/initrd/tests/sysfs/firmware/ibft/initiator/isns-server @@ -0,0 +1 @@ +2001:0db8:0000:0000:0000:0000:0000:3205 diff --git a/src/initrd/tests/sysfs/firmware/ibft/initiator/pri-radius-server b/src/initrd/tests/sysfs/firmware/ibft/initiator/pri-radius-server new file mode 100644 index 000000000..a26fb6492 --- /dev/null +++ b/src/initrd/tests/sysfs/firmware/ibft/initiator/pri-radius-server @@ -0,0 +1 @@ +2001:0db8:0000:0000:0000:0000:0000:1812 diff --git a/src/initrd/tests/sysfs/firmware/ibft/initiator/sec-radius-server b/src/initrd/tests/sysfs/firmware/ibft/initiator/sec-radius-server new file mode 100644 index 000000000..908be27f4 --- /dev/null +++ b/src/initrd/tests/sysfs/firmware/ibft/initiator/sec-radius-server @@ -0,0 +1 @@ +192.0.2.181 diff --git a/src/initrd/tests/sysfs/firmware/ibft/initiator/slp-server b/src/initrd/tests/sysfs/firmware/ibft/initiator/slp-server new file mode 100644 index 000000000..fca9e24bd --- /dev/null +++ b/src/initrd/tests/sysfs/firmware/ibft/initiator/slp-server @@ -0,0 +1 @@ +2001:0db8:0000:0000:0000:0000:0000:0427 diff --git a/src/initrd/tests/sysfs/firmware/ibft/target0/chap-type b/src/initrd/tests/sysfs/firmware/ibft/target0/chap-type new file mode 100644 index 000000000..573541ac9 --- /dev/null +++ b/src/initrd/tests/sysfs/firmware/ibft/target0/chap-type @@ -0,0 +1 @@ +0 diff --git a/src/initrd/tests/sysfs/firmware/ibft/target0/flags b/src/initrd/tests/sysfs/firmware/ibft/target0/flags new file mode 100644 index 000000000..00750edc0 --- /dev/null +++ b/src/initrd/tests/sysfs/firmware/ibft/target0/flags @@ -0,0 +1 @@ +3 diff --git a/src/initrd/tests/sysfs/firmware/ibft/target0/index b/src/initrd/tests/sysfs/firmware/ibft/target0/index new file mode 100644 index 000000000..573541ac9 --- /dev/null +++ b/src/initrd/tests/sysfs/firmware/ibft/target0/index @@ -0,0 +1 @@ +0 diff --git a/src/initrd/tests/sysfs/firmware/ibft/target0/ip-addr b/src/initrd/tests/sysfs/firmware/ibft/target0/ip-addr new file mode 100644 index 000000000..994b6e9c6 --- /dev/null +++ b/src/initrd/tests/sysfs/firmware/ibft/target0/ip-addr @@ -0,0 +1 @@ +2001:0db8:0000:0000:0000:0000:0000:3260 diff --git a/src/initrd/tests/sysfs/firmware/ibft/target0/lun b/src/initrd/tests/sysfs/firmware/ibft/target0/lun new file mode 100644 index 000000000..7c295bd44 --- /dev/null +++ b/src/initrd/tests/sysfs/firmware/ibft/target0/lun @@ -0,0 +1 @@ +01000000 diff --git a/src/initrd/tests/sysfs/firmware/ibft/target0/nic-assoc b/src/initrd/tests/sysfs/firmware/ibft/target0/nic-assoc new file mode 100644 index 000000000..573541ac9 --- /dev/null +++ b/src/initrd/tests/sysfs/firmware/ibft/target0/nic-assoc @@ -0,0 +1 @@ +0 diff --git a/src/initrd/tests/sysfs/firmware/ibft/target0/port b/src/initrd/tests/sysfs/firmware/ibft/target0/port new file mode 100644 index 000000000..53f0295f3 --- /dev/null +++ b/src/initrd/tests/sysfs/firmware/ibft/target0/port @@ -0,0 +1 @@ +3260 diff --git a/src/initrd/tests/sysfs/firmware/ibft/target2/chap-type b/src/initrd/tests/sysfs/firmware/ibft/target2/chap-type new file mode 100644 index 000000000..573541ac9 --- /dev/null +++ b/src/initrd/tests/sysfs/firmware/ibft/target2/chap-type @@ -0,0 +1 @@ +0 diff --git a/src/initrd/tests/sysfs/firmware/ibft/target2/flags b/src/initrd/tests/sysfs/firmware/ibft/target2/flags new file mode 100644 index 000000000..00750edc0 --- /dev/null +++ b/src/initrd/tests/sysfs/firmware/ibft/target2/flags @@ -0,0 +1 @@ +3 diff --git a/src/initrd/tests/sysfs/firmware/ibft/target2/index b/src/initrd/tests/sysfs/firmware/ibft/target2/index new file mode 100644 index 000000000..0cfbf0888 --- /dev/null +++ b/src/initrd/tests/sysfs/firmware/ibft/target2/index @@ -0,0 +1 @@ +2 diff --git a/src/initrd/tests/sysfs/firmware/ibft/target2/ip-addr b/src/initrd/tests/sysfs/firmware/ibft/target2/ip-addr new file mode 100644 index 000000000..a210477e6 --- /dev/null +++ b/src/initrd/tests/sysfs/firmware/ibft/target2/ip-addr @@ -0,0 +1 @@ +2001:0db8:0000:0000:0000:0000:0002:3260 diff --git a/src/initrd/tests/sysfs/firmware/ibft/target2/lun b/src/initrd/tests/sysfs/firmware/ibft/target2/lun new file mode 100644 index 000000000..7c295bd44 --- /dev/null +++ b/src/initrd/tests/sysfs/firmware/ibft/target2/lun @@ -0,0 +1 @@ +01000000 diff --git a/src/initrd/tests/sysfs/firmware/ibft/target2/nic-assoc b/src/initrd/tests/sysfs/firmware/ibft/target2/nic-assoc new file mode 100644 index 000000000..0cfbf0888 --- /dev/null +++ b/src/initrd/tests/sysfs/firmware/ibft/target2/nic-assoc @@ -0,0 +1 @@ +2 diff --git a/src/initrd/tests/sysfs/firmware/ibft/target2/port b/src/initrd/tests/sysfs/firmware/ibft/target2/port new file mode 100644 index 000000000..53f0295f3 --- /dev/null +++ b/src/initrd/tests/sysfs/firmware/ibft/target2/port @@ -0,0 +1 @@ +3260 diff --git a/src/initrd/tests/sysfs/firmware/ibft/target2/target-name b/src/initrd/tests/sysfs/firmware/ibft/target2/target-name new file mode 100644 index 000000000..f40943204 --- /dev/null +++ b/src/initrd/tests/sysfs/firmware/ibft/target2/target-name @@ -0,0 +1 @@ +iqn.1994-05.com.example.target:48b055851337 diff --git a/src/initrd/tests/test-ibft-reader.c b/src/initrd/tests/test-ibft-reader.c new file mode 100644 index 000000000..340b3896c --- /dev/null +++ b/src/initrd/tests/test-ibft-reader.c @@ -0,0 +1,286 @@ +/* NetworkManager initrd configuration generator + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Copyright 2014 - 2018 Red Hat, Inc. + */ + +#include "nm-default.h" + +#include <stdio.h> +#include <stdarg.h> +#include <unistd.h> +#include <string.h> +#include <netinet/ether.h> +#include <netinet/in.h> +#include <arpa/inet.h> +#include <sys/socket.h> + +#include "nm-core-internal.h" +#include "NetworkManagerUtils.h" + +#include "../nm-initrd-generator.h" + +#include "nm-test-utils-core.h" + +static NMConnection * +read_connection (const char *sysfs_dir, const char *expected_mac, GError **error) +{ + NMConnection *connection = NULL; + gs_unref_hashtable GHashTable *ibft = NULL; + gs_free char *mac = NULL; + GHashTable *nic = NULL; + + ibft = nmi_ibft_read (sysfs_dir); + + mac = g_ascii_strup (expected_mac, -1); + nic = g_hash_table_lookup (ibft, mac); + if (!nic) + return NULL; + + connection = nm_simple_connection_new (); + + if (!nmi_ibft_update_connection_from_nic (connection, nic, error)) + g_clear_object (&connection); + + return connection; +} + +static void +test_read_ibft_dhcp (void) +{ + NMConnection *connection; + NMSettingConnection *s_con; + NMSettingWired *s_wired; + NMSettingIPConfig *s_ip4; + NMSettingIPConfig *s_ip6; + GError *error = NULL; + const char *mac_address; + const char *expected_mac_address = "00:33:21:98:b9:f1"; + + connection = read_connection (TEST_INITRD_DIR "/sysfs-dhcp", expected_mac_address, &error); + g_assert_no_error (error); + nmtst_assert_connection_verifies_without_normalization (connection); + + g_assert (!nm_connection_get_setting_vlan (connection)); + + s_con = nm_connection_get_setting_connection (connection); + g_assert (s_con); + g_assert_cmpstr (nm_setting_connection_get_connection_type (s_con), ==, NM_SETTING_WIRED_SETTING_NAME); + g_assert_cmpstr (nm_setting_connection_get_id (s_con), ==, "iBFT Connection 1"); + g_assert_cmpint (nm_setting_connection_get_timestamp (s_con), ==, 0); + g_assert (nm_setting_connection_get_autoconnect (s_con)); + + s_wired = nm_connection_get_setting_wired (connection); + g_assert (s_wired); + mac_address = nm_setting_wired_get_mac_address (s_wired); + g_assert (mac_address); + g_assert (nm_utils_hwaddr_matches (mac_address, -1, expected_mac_address, -1)); + g_assert_cmpint (nm_setting_wired_get_mtu (s_wired), ==, 0); + + s_ip4 = nm_connection_get_setting_ip4_config (connection); + g_assert (s_ip4); + g_assert_cmpstr (nm_setting_ip_config_get_method (s_ip4), ==, NM_SETTING_IP4_CONFIG_METHOD_AUTO); + + s_ip6 = nm_connection_get_setting_ip6_config (connection); + g_assert (s_ip6); + g_assert_cmpstr (nm_setting_ip_config_get_method (s_ip6), ==, NM_SETTING_IP6_CONFIG_METHOD_IGNORE); + + g_object_unref (connection); +} + +static void +test_read_ibft_static (void) +{ + NMConnection *connection; + NMSettingConnection *s_con; + NMSettingWired *s_wired; + NMSettingIPConfig *s_ip4; + NMSettingIPConfig *s_ip6; + GError *error = NULL; + const char *mac_address; + const char *expected_mac_address = "00:33:21:98:b9:f0"; + NMIPAddress *ip4_addr; + + connection = read_connection (TEST_INITRD_DIR "/sysfs-static", expected_mac_address, &error); + g_assert_no_error (error); + nmtst_assert_connection_verifies_without_normalization (connection); + + g_assert (!nm_connection_get_setting_vlan (connection)); + + s_con = nm_connection_get_setting_connection (connection); + g_assert (s_con); + g_assert_cmpstr (nm_setting_connection_get_connection_type (s_con), ==, NM_SETTING_WIRED_SETTING_NAME); + g_assert_cmpstr (nm_setting_connection_get_id (s_con), ==, "iBFT Connection 0"); + g_assert_cmpint (nm_setting_connection_get_timestamp (s_con), ==, 0); + g_assert (nm_setting_connection_get_autoconnect (s_con)); + + s_wired = nm_connection_get_setting_wired (connection); + g_assert (s_wired); + mac_address = nm_setting_wired_get_mac_address (s_wired); + g_assert (mac_address); + g_assert (nm_utils_hwaddr_matches (mac_address, -1, expected_mac_address, -1)); + g_assert_cmpint (nm_setting_wired_get_mtu (s_wired), ==, 0); + + s_ip4 = nm_connection_get_setting_ip4_config (connection); + g_assert (s_ip4); + g_assert_cmpstr (nm_setting_ip_config_get_method (s_ip4), ==, NM_SETTING_IP4_CONFIG_METHOD_MANUAL); + + g_assert_cmpint (nm_setting_ip_config_get_num_dns (s_ip4), ==, 2); + g_assert_cmpstr (nm_setting_ip_config_get_dns (s_ip4, 0), ==, "10.16.255.2"); + g_assert_cmpstr (nm_setting_ip_config_get_dns (s_ip4, 1), ==, "10.16.255.3"); + + g_assert_cmpint (nm_setting_ip_config_get_num_addresses (s_ip4), ==, 1); + ip4_addr = nm_setting_ip_config_get_address (s_ip4, 0); + g_assert (ip4_addr); + g_assert_cmpstr (nm_ip_address_get_address (ip4_addr), ==, "192.168.32.72"); + g_assert_cmpint (nm_ip_address_get_prefix (ip4_addr), ==, 22); + + g_assert_cmpstr (nm_setting_ip_config_get_gateway (s_ip4), ==, "192.168.35.254"); + + s_ip6 = nm_connection_get_setting_ip6_config (connection); + g_assert (s_ip6); + g_assert_cmpstr (nm_setting_ip_config_get_method (s_ip6), ==, NM_SETTING_IP6_CONFIG_METHOD_IGNORE); + + g_object_unref (connection); +} + + +static void +test_read_ibft_bad_address (gconstpointer user_data) +{ + const char *sysfs_dir = user_data; + NMConnection *connection; + GError *error = NULL; + + g_assert (g_file_test (sysfs_dir, G_FILE_TEST_EXISTS)); + + connection = read_connection (sysfs_dir, "00:33:21:98:b9:f0", &error); + g_assert (connection == NULL); + g_assert (error); + g_clear_error (&error); +} + +static void +test_read_ibft_vlan (void) +{ + NMConnection *connection; + NMSettingConnection *s_con; + NMSettingWired *s_wired; + NMSettingVlan *s_vlan; + NMSettingIPConfig *s_ip4; + const char *mac_address; + const char *expected_mac_address = "00:33:21:98:b9:f0"; + NMIPAddress *ip4_addr; + GError *error = NULL; + + connection = read_connection (TEST_INITRD_DIR "/sysfs-vlan", expected_mac_address, &error); + g_assert_no_error (error); + nmtst_assert_connection_verifies_without_normalization (connection); + + s_con = nm_connection_get_setting_connection (connection); + g_assert (s_con); + g_assert_cmpstr (nm_setting_connection_get_connection_type (s_con), ==, NM_SETTING_VLAN_SETTING_NAME); + + /* ===== WIRED SETTING ===== */ + s_wired = nm_connection_get_setting_wired (connection); + g_assert (s_wired); + mac_address = nm_setting_wired_get_mac_address (s_wired); + g_assert (mac_address); + g_assert (nm_utils_hwaddr_matches (mac_address, -1, expected_mac_address, -1)); + + /* ===== VLAN SETTING ===== */ + s_vlan = nm_connection_get_setting_vlan (connection); + g_assert (s_vlan); + g_assert_cmpint (nm_setting_vlan_get_id (s_vlan), ==, 123); + g_assert_cmpstr (nm_setting_vlan_get_parent (s_vlan), ==, NULL); + + /* ===== IPv4 SETTING ===== */ + s_ip4 = nm_connection_get_setting_ip4_config (connection); + g_assert (s_ip4); + g_assert_cmpstr (nm_setting_ip_config_get_method (s_ip4), ==, NM_SETTING_IP4_CONFIG_METHOD_MANUAL); + + g_assert_cmpint (nm_setting_ip_config_get_num_dns (s_ip4), ==, 0); + + g_assert_cmpint (nm_setting_ip_config_get_num_addresses (s_ip4), ==, 1); + ip4_addr = nm_setting_ip_config_get_address (s_ip4, 0); + g_assert (ip4_addr); + g_assert_cmpstr (nm_ip_address_get_address (ip4_addr), ==, "192.168.6.200"); + g_assert_cmpint (nm_ip_address_get_prefix (ip4_addr), ==, 24); + + g_assert_cmpstr (nm_setting_ip_config_get_gateway (s_ip4), ==, NULL); + + g_object_unref (connection); +} + +static void +test_read_ibft (void) +{ + NMConnection *connection; + NMSettingIPConfig *s_ip4; + NMSettingIPConfig *s_ip6; + GError *error = NULL; + + /* This test doesn't actually test too much (apart from the presence of + * IPv6 that is not covered by other tests), but the test fixture is a good + * example of about everything that can be included in iBFT table (as of + * ACPI 3.0b). */ + + connection = read_connection (TEST_INITRD_DIR "/sysfs", "00:53:00:AB:00:01", &error); + g_assert (connection); + g_assert_no_error (error); + + s_ip4 = nm_connection_get_setting_ip4_config (connection); + nmtst_assert_connection_verifies_without_normalization (connection); + g_assert (nm_setting_ip_config_get_num_addresses (s_ip4) == 0); + g_assert_cmpstr (nm_setting_ip_config_get_method (s_ip4), ==, NM_SETTING_IP4_CONFIG_METHOD_DISABLED); + + s_ip6 = nm_connection_get_setting_ip6_config (connection); + g_assert (nm_setting_ip_config_get_num_addresses (s_ip6) == 1); + g_assert_cmpstr (nm_setting_ip_config_get_method (s_ip6), ==, NM_SETTING_IP6_CONFIG_METHOD_AUTO); + g_object_unref (connection); + + connection = read_connection (TEST_INITRD_DIR "/sysfs", "00:53:06:66:AB:01", &error); + g_assert (connection); + g_assert_no_error (error); + nmtst_assert_connection_verifies_without_normalization (connection); + + s_ip4 = nm_connection_get_setting_ip4_config (connection); + g_assert (nm_setting_ip_config_get_num_addresses (s_ip4) == 1); + g_assert_cmpstr (nm_setting_ip_config_get_method (s_ip4), ==, NM_SETTING_IP4_CONFIG_METHOD_AUTO); + + s_ip6 = nm_connection_get_setting_ip6_config (connection); + g_assert (nm_setting_ip_config_get_num_addresses (s_ip6) == 0); + g_assert_cmpstr (nm_setting_ip_config_get_method (s_ip6), ==, NM_SETTING_IP6_CONFIG_METHOD_IGNORE); + g_object_unref (connection); +} + +NMTST_DEFINE (); + +int main (int argc, char **argv) +{ + nmtst_init_assert_logging (&argc, &argv, "INFO", "DEFAULT"); + + g_test_add_func ("/initrd/ibft", test_read_ibft); + g_test_add_func ("/initrd/ibft/dhcp", test_read_ibft_dhcp); + g_test_add_func ("/initrd/ibft/static", test_read_ibft_static); + g_test_add_func ("/initrd/ibft/vlan", test_read_ibft_vlan); + g_test_add_data_func ("/initrd/ibft/bad-ipaddr-read", TEST_INITRD_DIR "/sysfs-bad-ipaddr", test_read_ibft_bad_address); + g_test_add_data_func ("/initrd/ibft/bad-gateway-read", TEST_INITRD_DIR "/sysfs-bad-gateway", test_read_ibft_bad_address); + g_test_add_data_func ("/initrd/ibft/bad-dns1-read", TEST_INITRD_DIR "/sysfs-bad-dns1", test_read_ibft_bad_address); + g_test_add_data_func ("/initrd/ibft/bad-dns2-read", TEST_INITRD_DIR "/sysfs-bad-dns2", test_read_ibft_bad_address); + + return g_test_run (); +} |