mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-01-20 09:00:26 +01:00
Merge branch 'wl/ifcfg' into main
https://bugzilla.redhat.com/show_bug.cgi?id=2122703
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1357
(cherry picked from commit f225344812)
This commit is contained in:
commit
c9fe11f91d
4 changed files with 92 additions and 50 deletions
|
|
@ -3433,6 +3433,7 @@ EXTRA_DIST += \
|
|||
src/core/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-ibft \
|
||||
src/core/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-infiniband \
|
||||
src/core/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-ip6-disabled.cexpected \
|
||||
src/core/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-ipoib \
|
||||
src/core/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-link_local \
|
||||
src/core/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-minimal \
|
||||
src/core/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-misc-variables \
|
||||
|
|
|
|||
|
|
@ -5355,59 +5355,41 @@ wired_connection_from_ifcfg(const char *file, shvarFile *ifcfg, GError **error)
|
|||
static gboolean
|
||||
parse_infiniband_p_key(shvarFile *ifcfg, int *out_p_key, char **out_parent, GError **error)
|
||||
{
|
||||
char *device = NULL, *physdev = NULL, *pkey_id = NULL;
|
||||
char *ifname = NULL;
|
||||
int id;
|
||||
gboolean ret = FALSE;
|
||||
|
||||
device = svGetValueStr_cp(ifcfg, "DEVICE");
|
||||
if (!device) {
|
||||
PARSE_WARNING("InfiniBand connection specified PKEY but not DEVICE");
|
||||
goto done;
|
||||
}
|
||||
gs_free char *physdev = NULL;
|
||||
gs_free char *pkey_id = NULL;
|
||||
int id;
|
||||
|
||||
physdev = svGetValueStr_cp(ifcfg, "PHYSDEV");
|
||||
if (!physdev) {
|
||||
PARSE_WARNING("InfiniBand connection specified PKEY but not PHYSDEV");
|
||||
goto done;
|
||||
g_set_error(error,
|
||||
NM_SETTINGS_ERROR,
|
||||
NM_SETTINGS_ERROR_INVALID_CONNECTION,
|
||||
"infiniband connection specified PKEY but not PHYSDEV");
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
pkey_id = svGetValueStr_cp(ifcfg, "PKEY_ID");
|
||||
if (!pkey_id) {
|
||||
PARSE_WARNING("InfiniBand connection specified PKEY but not PKEY_ID");
|
||||
goto done;
|
||||
g_set_error(error,
|
||||
NM_SETTINGS_ERROR,
|
||||
NM_SETTINGS_ERROR_INVALID_CONNECTION,
|
||||
"infiniband connection specified PKEY but not PKEY_ID");
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
id = _nm_utils_ascii_str_to_int64(pkey_id, 0, 0, 0xFFFF, -1);
|
||||
if (id == -1) {
|
||||
PARSE_WARNING("invalid InfiniBand PKEY_ID '%s'", pkey_id);
|
||||
goto done;
|
||||
}
|
||||
id = (id | 0x8000);
|
||||
|
||||
ifname = g_strdup_printf("%s.%04x", physdev, (unsigned) id);
|
||||
if (strcmp(device, ifname) != 0) {
|
||||
PARSE_WARNING("InfiniBand DEVICE (%s) does not match PHYSDEV+PKEY_ID (%s)", device, ifname);
|
||||
goto done;
|
||||
}
|
||||
|
||||
*out_p_key = id;
|
||||
*out_parent = g_strdup(physdev);
|
||||
ret = TRUE;
|
||||
|
||||
done:
|
||||
g_free(device);
|
||||
g_free(physdev);
|
||||
g_free(pkey_id);
|
||||
g_free(ifname);
|
||||
|
||||
if (!ret) {
|
||||
g_set_error(error,
|
||||
NM_SETTINGS_ERROR,
|
||||
NM_SETTINGS_ERROR_INVALID_CONNECTION,
|
||||
"Failed to create InfiniBand setting");
|
||||
"invalid infiniband PKEY_ID '%s'",
|
||||
pkey_id);
|
||||
return FALSE;
|
||||
}
|
||||
return ret;
|
||||
|
||||
*out_p_key = id;
|
||||
*out_parent = g_steal_pointer(&physdev);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static NMSetting *
|
||||
|
|
|
|||
|
|
@ -0,0 +1,9 @@
|
|||
TYPE=InfiniBand
|
||||
PKEY=yes
|
||||
PKEY_ID=12
|
||||
PHYSDEV=ib0
|
||||
CONNECTED_MODE=yes
|
||||
IPADDR=192.168.2.2
|
||||
NETMASK=255.255.255.0
|
||||
GATEWAY=192.168.2.1
|
||||
NAME=ib012
|
||||
|
|
@ -8211,8 +8211,35 @@ test_read_infiniband(void)
|
|||
}
|
||||
|
||||
static void
|
||||
test_write_infiniband(void)
|
||||
test_read_ipoib(void)
|
||||
{
|
||||
gs_unref_object NMConnection *connection = NULL;
|
||||
NMSettingInfiniband *s_infiniband;
|
||||
char *unmanaged = NULL;
|
||||
const char *transport_mode;
|
||||
int pkey;
|
||||
|
||||
connection = _connection_from_file(TEST_IFCFG_DIR "/ifcfg-test-ipoib",
|
||||
NULL,
|
||||
TYPE_INFINIBAND,
|
||||
&unmanaged);
|
||||
g_assert(!unmanaged);
|
||||
|
||||
s_infiniband = nmtst_connection_assert_setting(connection, NM_TYPE_SETTING_INFINIBAND);
|
||||
|
||||
pkey = nm_setting_infiniband_get_p_key(s_infiniband);
|
||||
g_assert(pkey);
|
||||
g_assert_cmpint(pkey, ==, 12);
|
||||
|
||||
transport_mode = nm_setting_infiniband_get_transport_mode(s_infiniband);
|
||||
g_assert(transport_mode);
|
||||
g_assert_cmpstr(transport_mode, ==, "connected");
|
||||
}
|
||||
|
||||
static void
|
||||
test_write_infiniband(gconstpointer test_data)
|
||||
{
|
||||
const int TEST_IDX = GPOINTER_TO_INT(test_data);
|
||||
nmtst_auto_unlinkfile char *testfile = NULL;
|
||||
gs_unref_object NMConnection *connection = NULL;
|
||||
gs_unref_object NMConnection *reread = NULL;
|
||||
|
|
@ -8223,14 +8250,15 @@ test_write_infiniband(void)
|
|||
const char *mac = "80:00:11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff:00:11:22";
|
||||
guint32 mtu = 65520;
|
||||
NMIPAddress *addr;
|
||||
GError *error = NULL;
|
||||
GError *error = NULL;
|
||||
const char *interface_name = NULL;
|
||||
|
||||
connection = nm_simple_connection_new();
|
||||
|
||||
s_con = _nm_connection_new_setting(connection, NM_TYPE_SETTING_CONNECTION);
|
||||
g_object_set(s_con,
|
||||
NM_SETTING_CONNECTION_ID,
|
||||
"Test Write InfiniBand",
|
||||
"Test Write Infiniband",
|
||||
NM_SETTING_CONNECTION_UUID,
|
||||
nm_uuid_generate_random_str_a(),
|
||||
NM_SETTING_CONNECTION_AUTOCONNECT,
|
||||
|
|
@ -8239,15 +8267,28 @@ test_write_infiniband(void)
|
|||
NM_SETTING_INFINIBAND_SETTING_NAME,
|
||||
NULL);
|
||||
|
||||
if (NM_IN_SET(TEST_IDX, 1, 3))
|
||||
interface_name = "ib0.000c";
|
||||
|
||||
g_object_set(s_con, NM_SETTING_CONNECTION_INTERFACE_NAME, interface_name, NULL);
|
||||
|
||||
s_infiniband = _nm_connection_new_setting(connection, NM_TYPE_SETTING_INFINIBAND);
|
||||
g_object_set(s_infiniband,
|
||||
NM_SETTING_INFINIBAND_MAC_ADDRESS,
|
||||
mac,
|
||||
NM_SETTING_INFINIBAND_MTU,
|
||||
mtu,
|
||||
NM_SETTING_INFINIBAND_TRANSPORT_MODE,
|
||||
"connected",
|
||||
NULL);
|
||||
g_object_set(s_infiniband, NM_SETTING_INFINIBAND_TRANSPORT_MODE, "connected", NULL);
|
||||
if (NM_IN_SET(TEST_IDX, 1, 2)) {
|
||||
g_object_set(s_infiniband,
|
||||
NM_SETTING_INFINIBAND_MAC_ADDRESS,
|
||||
mac,
|
||||
NM_SETTING_INFINIBAND_MTU,
|
||||
mtu,
|
||||
NULL);
|
||||
} else {
|
||||
g_object_set(s_infiniband,
|
||||
NM_SETTING_INFINIBAND_P_KEY,
|
||||
12,
|
||||
NM_SETTING_INFINIBAND_PARENT,
|
||||
"ib0",
|
||||
NULL);
|
||||
}
|
||||
|
||||
s_ip4 = _nm_connection_new_setting(connection, NM_TYPE_SETTING_IP4_CONFIG);
|
||||
g_object_set(s_ip4,
|
||||
|
|
@ -8267,6 +8308,9 @@ test_write_infiniband(void)
|
|||
s_ip6 = _nm_connection_new_setting(connection, NM_TYPE_SETTING_IP6_CONFIG);
|
||||
g_object_set(s_ip6, NM_SETTING_IP_CONFIG_METHOD, NM_SETTING_IP6_CONFIG_METHOD_IGNORE, NULL);
|
||||
|
||||
if (nmtst_get_rand_bool())
|
||||
nmtst_connection_normalize(connection);
|
||||
|
||||
nmtst_assert_connection_verifies(connection);
|
||||
|
||||
_writer_new_connection(connection, TEST_SCRATCH_DIR, &testfile);
|
||||
|
|
@ -8274,6 +8318,8 @@ test_write_infiniband(void)
|
|||
reread = _connection_from_file(testfile, NULL, TYPE_INFINIBAND, NULL);
|
||||
|
||||
nmtst_assert_connection_equals(connection, TRUE, reread, FALSE);
|
||||
|
||||
g_assert_cmpstr(interface_name, ==, nm_connection_get_interface_name(reread));
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
@ -10446,6 +10492,7 @@ main(int argc, char **argv)
|
|||
g_test_add_func(TPATH "wifi/read/wep-no-keys", test_read_wifi_wep_no_keys);
|
||||
g_test_add_func(TPATH "wifi/read/wep-agent-keys", test_read_wifi_wep_agent_keys);
|
||||
g_test_add_func(TPATH "infiniband/read", test_read_infiniband);
|
||||
g_test_add_func(TPATH "ipoib/read", test_read_ipoib);
|
||||
g_test_add_func(TPATH "vlan/read", test_read_vlan_interface);
|
||||
g_test_add_func(TPATH "vlan/read-flags-1", test_read_vlan_flags_1);
|
||||
g_test_add_func(TPATH "vlan/read-flags-2", test_read_vlan_flags_2);
|
||||
|
|
@ -10582,7 +10629,10 @@ main(int argc, char **argv)
|
|||
g_test_add_func(TPATH "permissions/read", test_read_permissions);
|
||||
g_test_add_func(TPATH "permissions/write", test_write_permissions);
|
||||
g_test_add_func(TPATH "wifi/write-wep-agent-keys", test_write_wifi_wep_agent_keys);
|
||||
g_test_add_func(TPATH "infiniband/write", test_write_infiniband);
|
||||
g_test_add_data_func(TPATH "infiniband/write/1", GINT_TO_POINTER(1), test_write_infiniband);
|
||||
g_test_add_data_func(TPATH "infiniband/write/2", GINT_TO_POINTER(2), test_write_infiniband);
|
||||
g_test_add_data_func(TPATH "infiniband/write/3", GINT_TO_POINTER(3), test_write_infiniband);
|
||||
g_test_add_data_func(TPATH "infiniband/write/4", GINT_TO_POINTER(4), test_write_infiniband);
|
||||
g_test_add_func(TPATH "vlan/write", test_write_vlan);
|
||||
g_test_add_func(TPATH "vlan/write-flags", test_write_vlan_flags);
|
||||
g_test_add_func(TPATH "vlan/write-only-vlanid", test_write_vlan_only_vlanid);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue