summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2015-12-10 14:36:45 +0100
committerThomas Haller <thaller@redhat.com>2015-12-10 14:36:45 +0100
commit9bc7b295a4a32cffa41f25fac3fa7846b2904ea2 (patch)
treeac3903eabc41da94e50b9f2b63018179d2ac80d5
parentefd5515f9627f83624faaf0cd3865b55896643e8 (diff)
parent76521816a572e8da5c1e094a14fc320e4d79dc3f (diff)
downloadNetworkManager-9bc7b295a4a32cffa41f25fac3fa7846b2904ea2.tar.gz
platform: merge branch 'th/platform-api-cleanup-bgo759261' into master
https://bugzilla.gnome.org/show_bug.cgi?id=759261
-rw-r--r--src/devices/nm-device-bond.c11
-rw-r--r--src/devices/nm-device-bridge.c21
-rw-r--r--src/devices/nm-device-ethernet.c2
-rw-r--r--src/devices/nm-device-generic.c2
-rw-r--r--src/devices/nm-device-infiniband.c8
-rw-r--r--src/devices/nm-device-ip-tunnel.c5
-rw-r--r--src/devices/nm-device-macvlan.c5
-rw-r--r--src/devices/nm-device-tun.c23
-rw-r--r--src/devices/nm-device-veth.c2
-rw-r--r--src/devices/nm-device-vlan.c18
-rw-r--r--src/devices/nm-device-vxlan.c5
-rw-r--r--src/devices/nm-device.c17
-rw-r--r--src/devices/nm-device.h12
-rw-r--r--src/devices/team/nm-device-team.c4
-rw-r--r--src/devices/wifi/nm-device-wifi.c2
-rw-r--r--src/platform/nm-fake-platform.c56
-rw-r--r--src/platform/nm-linux-platform.c227
-rw-r--r--src/platform/nm-platform.c205
-rw-r--r--src/platform/nm-platform.h108
-rw-r--r--src/platform/tests/test-address.c2
-rw-r--r--src/platform/tests/test-cleanup.c2
-rw-r--r--src/platform/tests/test-link.c94
-rw-r--r--src/platform/tests/test-route.c2
-rw-r--r--src/tests/test-route-manager.c4
24 files changed, 361 insertions, 476 deletions
diff --git a/src/devices/nm-device-bond.c b/src/devices/nm-device-bond.c
index 6471d3e4a2..5f72ebdae5 100644
--- a/src/devices/nm-device-bond.c
+++ b/src/devices/nm-device-bond.c
@@ -130,7 +130,7 @@ set_bond_attr (NMDevice *device, const char *attr, const char *value)
gboolean ret;
int ifindex = nm_device_get_ifindex (device);
- ret = nm_platform_master_set_option (NM_PLATFORM_GET, ifindex, attr, value);
+ ret = nm_platform_sysctl_master_set_option (NM_PLATFORM_GET, ifindex, attr, value);
if (!ret)
_LOGW (LOGD_HW, "failed to set bonding attribute '%s' to '%s'", attr, value);
return ret;
@@ -164,7 +164,7 @@ update_connection (NMDevice *device, NMConnection *connection)
/* Read bond options from sysfs and update the Bond setting to match */
options = nm_setting_bond_get_valid_options (s_bond);
while (options && *options) {
- gs_free char *value = nm_platform_master_get_option (NM_PLATFORM_GET, ifindex, *options);
+ gs_free char *value = nm_platform_sysctl_master_get_option (NM_PLATFORM_GET, ifindex, *options);
const char *defvalue = nm_setting_bond_get_option_default (s_bond, *options);
if (value && !ignore_if_zero (*options, value) && (g_strcmp0 (value, defvalue) != 0)) {
@@ -320,7 +320,7 @@ apply_bonding_config (NMDevice *device)
}
/* Clear ARP targets */
- contents = nm_platform_master_get_option (NM_PLATFORM_GET, ifindex, "arp_ip_target");
+ contents = nm_platform_sysctl_master_get_option (NM_PLATFORM_GET, ifindex, "arp_ip_target");
set_arp_targets (device, contents, " \n", "-");
g_free (contents);
@@ -448,16 +448,15 @@ static gboolean
create_and_realize (NMDevice *device,
NMConnection *connection,
NMDevice *parent,
- NMPlatformLink *out_plink,
+ const NMPlatformLink **out_plink,
GError **error)
{
const char *iface = nm_device_get_iface (device);
NMPlatformError plerr;
g_assert (iface);
- g_assert (out_plink);
- plerr = nm_platform_bond_add (NM_PLATFORM_GET, iface, out_plink);
+ plerr = nm_platform_link_bond_add (NM_PLATFORM_GET, iface, out_plink);
if (plerr != NM_PLATFORM_ERROR_SUCCESS && plerr != NM_PLATFORM_ERROR_EXISTS) {
g_set_error (error, NM_DEVICE_ERROR, NM_DEVICE_ERROR_CREATION_FAILED,
"Failed to create bond interface '%s' for '%s': %s",
diff --git a/src/devices/nm-device-bridge.c b/src/devices/nm-device-bridge.c
index 39d41ae4d4..69b67c259e 100644
--- a/src/devices/nm-device-bridge.c
+++ b/src/devices/nm-device-bridge.c
@@ -199,9 +199,9 @@ commit_option (NMDevice *device, NMSetting *setting, const Option *option, gbool
value = g_strdup_printf ("%u", uval);
if (slave)
- nm_platform_slave_set_option (NM_PLATFORM_GET, ifindex, option->sysname, value);
+ nm_platform_sysctl_slave_set_option (NM_PLATFORM_GET, ifindex, option->sysname, value);
else
- nm_platform_master_set_option (NM_PLATFORM_GET, ifindex, option->sysname, value);
+ nm_platform_sysctl_master_set_option (NM_PLATFORM_GET, ifindex, option->sysname, value);
}
static void
@@ -245,7 +245,7 @@ update_connection (NMDevice *device, NMConnection *connection)
}
for (option = master_options; option->name; option++) {
- gs_free char *str = nm_platform_master_get_option (NM_PLATFORM_GET, ifindex, option->sysname);
+ gs_free char *str = nm_platform_sysctl_master_get_option (NM_PLATFORM_GET, ifindex, option->sysname);
int value;
if (str) {
@@ -284,7 +284,7 @@ master_update_slave_connection (NMDevice *device,
}
for (option = slave_options; option->name; option++) {
- gs_free char *str = nm_platform_slave_get_option (NM_PLATFORM_GET, ifindex_slave, option->sysname);
+ gs_free char *str = nm_platform_sysctl_slave_get_option (NM_PLATFORM_GET, ifindex_slave, option->sysname);
int value;
if (str) {
@@ -377,7 +377,7 @@ static gboolean
create_and_realize (NMDevice *device,
NMConnection *connection,
NMDevice *parent,
- NMPlatformLink *out_plink,
+ const NMPlatformLink **out_plink,
GError **error)
{
NMSettingBridge *s_bridge;
@@ -387,7 +387,6 @@ create_and_realize (NMDevice *device,
NMPlatformError plerr;
g_assert (iface);
- g_assert (out_plink);
s_bridge = nm_connection_get_setting_bridge (connection);
g_assert (s_bridge);
@@ -401,11 +400,11 @@ create_and_realize (NMDevice *device,
}
}
- plerr = nm_platform_bridge_add (NM_PLATFORM_GET,
- iface,
- hwaddr ? mac_address : NULL,
- hwaddr ? ETH_ALEN : 0,
- out_plink);
+ plerr = nm_platform_link_bridge_add (NM_PLATFORM_GET,
+ iface,
+ hwaddr ? mac_address : NULL,
+ hwaddr ? ETH_ALEN : 0,
+ out_plink);
if (plerr != NM_PLATFORM_ERROR_SUCCESS && plerr != NM_PLATFORM_ERROR_EXISTS) {
g_set_error (error, NM_DEVICE_ERROR, NM_DEVICE_ERROR_CREATION_FAILED,
"Failed to create bridge interface '%s' for '%s': %s",
diff --git a/src/devices/nm-device-ethernet.c b/src/devices/nm-device-ethernet.c
index 9aec4ca66f..c9fd691cfd 100644
--- a/src/devices/nm-device-ethernet.c
+++ b/src/devices/nm-device-ethernet.c
@@ -305,7 +305,7 @@ nm_device_ethernet_init (NMDeviceEthernet *self)
}
static void
-setup_start (NMDevice *device, NMPlatformLink *plink)
+setup_start (NMDevice *device, const NMPlatformLink *plink)
{
NM_DEVICE_CLASS (nm_device_ethernet_parent_class)->setup_start (device, plink);
diff --git a/src/devices/nm-device-generic.c b/src/devices/nm-device-generic.c
index 0689d71676..b6fe16be65 100644
--- a/src/devices/nm-device-generic.c
+++ b/src/devices/nm-device-generic.c
@@ -61,7 +61,7 @@ get_type_description (NMDevice *device)
}
static void
-setup_start (NMDevice *device, NMPlatformLink *plink)
+setup_start (NMDevice *device, const NMPlatformLink *plink)
{
NMDeviceGeneric *self = NM_DEVICE_GENERIC (device);
NMDeviceGenericPrivate *priv = NM_DEVICE_GENERIC_GET_PRIVATE (self);
diff --git a/src/devices/nm-device-infiniband.c b/src/devices/nm-device-infiniband.c
index 50b7f1bb8f..50e1feb06d 100644
--- a/src/devices/nm-device-infiniband.c
+++ b/src/devices/nm-device-infiniband.c
@@ -226,7 +226,7 @@ update_connection (NMDevice *device, NMConnection *connection)
ifindex = nm_device_get_ifindex (device);
if (ifindex > 0) {
- if (!nm_platform_infiniband_get_properties (NM_PLATFORM_GET, ifindex, NULL, NULL, &transport_mode))
+ if (!nm_platform_link_infiniband_get_properties (NM_PLATFORM_GET, ifindex, NULL, NULL, &transport_mode))
transport_mode = "datagram";
}
g_object_set (G_OBJECT (s_infiniband), NM_SETTING_INFINIBAND_TRANSPORT_MODE, transport_mode, NULL);
@@ -236,15 +236,13 @@ static gboolean
create_and_realize (NMDevice *device,
NMConnection *connection,
NMDevice *parent,
- NMPlatformLink *out_plink,
+ const NMPlatformLink **out_plink,
GError **error)
{
NMSettingInfiniband *s_infiniband;
int parent_ifindex, p_key;
NMPlatformError plerr;
- g_assert (out_plink);
-
if (!NM_IS_DEVICE_INFINIBAND (parent)) {
g_set_error (error, NM_DEVICE_ERROR, NM_DEVICE_ERROR_CREATION_FAILED,
"Parent interface %s must be an InfiniBand interface",
@@ -270,7 +268,7 @@ create_and_realize (NMDevice *device,
return FALSE;
}
- plerr = nm_platform_infiniband_partition_add (NM_PLATFORM_GET, parent_ifindex, p_key, out_plink);
+ plerr = nm_platform_link_infiniband_add (NM_PLATFORM_GET, parent_ifindex, p_key, out_plink);
if (plerr != NM_PLATFORM_ERROR_SUCCESS && plerr != NM_PLATFORM_ERROR_EXISTS) {
g_set_error (error, NM_DEVICE_ERROR, NM_DEVICE_ERROR_CREATION_FAILED,
"Failed to create InfiniBand P_Key interface '%s' for '%s': %s",
diff --git a/src/devices/nm-device-ip-tunnel.c b/src/devices/nm-device-ip-tunnel.c
index 0e3e53d877..bcb6dbf247 100644
--- a/src/devices/nm-device-ip-tunnel.c
+++ b/src/devices/nm-device-ip-tunnel.c
@@ -613,7 +613,7 @@ static gboolean
create_and_realize (NMDevice *device,
NMConnection *connection,
NMDevice *parent,
- NMPlatformLink *out_plink,
+ const NMPlatformLink **out_plink,
GError **error)
{
const char *iface = nm_device_get_iface (device);
@@ -628,7 +628,6 @@ create_and_realize (NMDevice *device,
s_ip_tunnel = nm_connection_get_setting_ip_tunnel (connection);
g_assert (s_ip_tunnel);
- g_assert (out_plink);
switch (nm_setting_ip_tunnel_get_mode (s_ip_tunnel)) {
case NM_IP_TUNNEL_MODE_GRE:
@@ -771,7 +770,7 @@ create_and_realize (NMDevice *device,
}
static void
-setup_start (NMDevice *device, NMPlatformLink *plink)
+setup_start (NMDevice *device, const NMPlatformLink *plink)
{
NM_DEVICE_CLASS (nm_device_ip_tunnel_parent_class)->setup_start (device, plink);
diff --git a/src/devices/nm-device-macvlan.c b/src/devices/nm-device-macvlan.c
index c980fd17a2..12cd95ba58 100644
--- a/src/devices/nm-device-macvlan.c
+++ b/src/devices/nm-device-macvlan.c
@@ -220,7 +220,7 @@ static gboolean
create_and_realize (NMDevice *device,
NMConnection *connection,
NMDevice *parent,
- NMPlatformLink *out_plink,
+ const NMPlatformLink **out_plink,
GError **error)
{
const char *iface = nm_device_get_iface (device);
@@ -231,7 +231,6 @@ create_and_realize (NMDevice *device,
s_macvlan = nm_connection_get_setting_macvlan (connection);
g_assert (s_macvlan);
- g_assert (out_plink);
parent_ifindex = nm_device_get_ifindex (parent);
g_warn_if_fail (parent_ifindex > 0);
@@ -559,7 +558,7 @@ ip4_config_pre_commit (NMDevice *device, NMIP4Config *config)
}
static void
-setup_start (NMDevice *device, NMPlatformLink *plink)
+setup_start (NMDevice *device, const NMPlatformLink *plink)
{
NM_DEVICE_CLASS (nm_device_macvlan_parent_class)->setup_start (device, plink);
diff --git a/src/devices/nm-device-tun.c b/src/devices/nm-device-tun.c
index 36d87e250b..3501ddb466 100644
--- a/src/devices/nm-device-tun.c
+++ b/src/devices/nm-device-tun.c
@@ -68,7 +68,7 @@ reload_tun_properties (NMDeviceTun *self)
ifindex = nm_device_get_ifindex (NM_DEVICE (self));
if (ifindex > 0) {
- if (!nm_platform_tun_get_properties (NM_PLATFORM_GET, ifindex, &props)) {
+ if (!nm_platform_link_tun_get_properties (NM_PLATFORM_GET, ifindex, &props)) {
_LOGD (LOGD_DEVICE, "tun-properties: cannot loading tun properties from platform for ifindex %d", ifindex);
ifindex = 0;
} else if (g_strcmp0 (priv->mode, props.mode) != 0) {
@@ -162,7 +162,7 @@ update_connection (NMDevice *device, NMConnection *connection)
nm_connection_add_setting (connection, (NMSetting *) s_tun);
}
- if (!nm_platform_tun_get_properties (NM_PLATFORM_GET, nm_device_get_ifindex (device), &props)) {
+ if (!nm_platform_link_tun_get_properties (NM_PLATFORM_GET, nm_device_get_ifindex (device), &props)) {
_LOGW (LOGD_HW, "failed to get TUN interface info while updating connection.");
return;
}
@@ -199,7 +199,7 @@ static gboolean
create_and_realize (NMDevice *device,
NMConnection *connection,
NMDevice *parent,
- NMPlatformLink *out_plink,
+ const NMPlatformLink **out_plink,
GError **error)
{
const char *iface = nm_device_get_iface (device);
@@ -209,18 +209,17 @@ create_and_realize (NMDevice *device,
s_tun = nm_connection_get_setting_tun (connection);
g_assert (s_tun);
- g_assert (out_plink);
user = _nm_utils_ascii_str_to_int64 (nm_setting_tun_get_owner (s_tun), 10, 0, G_MAXINT32, -1);
group = _nm_utils_ascii_str_to_int64 (nm_setting_tun_get_group (s_tun), 10, 0, G_MAXINT32, -1);
- plerr = nm_platform_tun_add (NM_PLATFORM_GET, iface,
- nm_setting_tun_get_mode (s_tun) == NM_SETTING_TUN_MODE_TAP,
- user, group,
- nm_setting_tun_get_pi (s_tun),
- nm_setting_tun_get_vnet_hdr (s_tun),
- nm_setting_tun_get_multi_queue (s_tun),
- out_plink);
+ plerr = nm_platform_link_tun_add (NM_PLATFORM_GET, iface,
+ nm_setting_tun_get_mode (s_tun) == NM_SETTING_TUN_MODE_TAP,
+ user, group,
+ nm_setting_tun_get_pi (s_tun),
+ nm_setting_tun_get_vnet_hdr (s_tun),
+ nm_setting_tun_get_multi_queue (s_tun),
+ out_plink);
if (plerr != NM_PLATFORM_ERROR_SUCCESS && plerr != NM_PLATFORM_ERROR_EXISTS) {
g_set_error (error, NM_DEVICE_ERROR, NM_DEVICE_ERROR_CREATION_FAILED,
"Failed to create TUN/TAP interface '%s' for '%s': %s",
@@ -241,7 +240,7 @@ realize (NMDevice *device, NMPlatformLink *plink, GError **error)
}
static void
-setup_start (NMDevice *device, NMPlatformLink *plink)
+setup_start (NMDevice *device, const NMPlatformLink *plink)
{
NM_DEVICE_CLASS (nm_device_tun_parent_class)->setup_start (device, plink);
reload_tun_properties (device);
diff --git a/src/devices/nm-device-veth.c b/src/devices/nm-device-veth.c
index 07187205fb..986c93d8f9 100644
--- a/src/devices/nm-device-veth.c
+++ b/src/devices/nm-device-veth.c
@@ -81,7 +81,7 @@ get_peer (NMDeviceVeth *self)
if (priv->ever_had_peer)
return priv->peer;
- if (!nm_platform_veth_get_properties (NM_PLATFORM_GET, nm_device_get_ifindex (device), &peer_ifindex)) {
+ if (!nm_platform_link_veth_get_properties (NM_PLATFORM_GET, nm_device_get_ifindex (device), &peer_ifindex)) {
_LOGW (LOGD_HW, "could not read veth properties");
return NULL;
}
diff --git a/src/devices/nm-device-vlan.c b/src/devices/nm-device-vlan.c
index 63938c8968..401ef4fd3e 100644
--- a/src/devices/nm-device-vlan.c
+++ b/src/devices/nm-device-vlan.c
@@ -148,7 +148,7 @@ nm_device_vlan_set_parent (NMDeviceVlan *self, NMDevice *parent)
}
static void
-setup_start (NMDevice *device, NMPlatformLink *plink)
+setup_start (NMDevice *device, const NMPlatformLink *plink)
{
NMDeviceVlan *self = NM_DEVICE_VLAN (device);
NMDeviceVlanPrivate *priv = NM_DEVICE_VLAN_GET_PRIVATE (self);
@@ -207,7 +207,7 @@ static gboolean
create_and_realize (NMDevice *device,
NMConnection *connection,
NMDevice *parent,
- NMPlatformLink *out_plink,
+ const NMPlatformLink **out_plink,
GError **error)
{
NMDeviceVlanPrivate *priv = NM_DEVICE_VLAN_GET_PRIVATE (device);
@@ -216,8 +216,6 @@ create_and_realize (NMDevice *device,
int parent_ifindex, vlan_id;
NMPlatformError plerr;
- g_assert (out_plink);
-
s_vlan = nm_connection_get_setting_vlan (connection);
g_assert (s_vlan);
@@ -234,12 +232,12 @@ create_and_realize (NMDevice *device,
vlan_id = nm_setting_vlan_get_id (s_vlan);
- plerr = nm_platform_vlan_add (NM_PLATFORM_GET,
- iface,
- parent_ifindex,
- vlan_id,
- nm_setting_vlan_get_flags (s_vlan),
- out_plink);
+ plerr = nm_platform_link_vlan_add (NM_PLATFORM_GET,
+ iface,
+ parent_ifindex,
+ vlan_id,
+ nm_setting_vlan_get_flags (s_vlan),
+ out_plink);
if (plerr != NM_PLATFORM_ERROR_SUCCESS && plerr != NM_PLATFORM_ERROR_EXISTS) {
g_set_error (error, NM_DEVICE_ERROR, NM_DEVICE_ERROR_CREATION_FAILED,
"Failed to create VLAN interface '%s' for '%s': %s",
diff --git a/src/devices/nm-device-vxlan.c b/src/devices/nm-device-vxlan.c
index 7eabbcdb1f..514554c4c4 100644
--- a/src/devices/nm-device-vxlan.c
+++ b/src/devices/nm-device-vxlan.c
@@ -143,7 +143,7 @@ link_changed (NMDevice *device, NMPlatformLink *info)
}
static void
-setup_start (NMDevice *device, NMPlatformLink *plink)
+setup_start (NMDevice *device, const NMPlatformLink *plink)
{
g_assert (plink->type == NM_LINK_TYPE_VXLAN);
@@ -174,7 +174,7 @@ static gboolean
create_and_realize (NMDevice *device,
NMConnection *connection,
NMDevice *parent,
- NMPlatformLink *out_plink,
+ const NMPlatformLink **out_plink,
GError **error)
{
const char *iface = nm_device_get_iface (device);
@@ -186,7 +186,6 @@ create_and_realize (NMDevice *device,
s_vxlan = nm_connection_get_setting_vxlan (connection);
g_assert (s_vxlan);
- g_assert (out_plink);
if (parent)
props.parent_ifindex = nm_device_get_ifindex (parent);
diff --git a/src/devices/nm-device.c b/src/devices/nm-device.c
index 8b9c52f3db..b993a063a5 100644
--- a/src/devices/nm-device.c
+++ b/src/devices/nm-device.c
@@ -1761,7 +1761,8 @@ nm_device_create_and_realize (NMDevice *self,
GError **error)
{
NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE (self);
- NMPlatformLink plink = { .type = NM_LINK_TYPE_UNKNOWN };
+ NMPlatformLink plink_copy;
+ const NMPlatformLink *plink = NULL;
/* Must be set before device is realized */
priv->is_nm_owned = !nm_platform_link_get_by_ifname (NM_PLATFORM_GET, priv->iface);
@@ -1770,17 +1771,19 @@ nm_device_create_and_realize (NMDevice *self,
if (NM_DEVICE_GET_CLASS (self)->create_and_realize) {
if (!NM_DEVICE_GET_CLASS (self)->create_and_realize (self, connection, parent, &plink, error))
return FALSE;
+ plink_copy = *plink;
+ plink = &plink_copy;
}
- NM_DEVICE_GET_CLASS (self)->setup_start (self, (plink.type != NM_LINK_TYPE_UNKNOWN) ? &plink : NULL);
- nm_device_setup_finish (self, (plink.type != NM_LINK_TYPE_UNKNOWN) ? &plink : NULL);
+ NM_DEVICE_GET_CLASS (self)->setup_start (self, plink);
+ nm_device_setup_finish (self, plink);
g_return_val_if_fail (nm_device_check_connection_compatible (self, connection), TRUE);
return TRUE;
}
static void
-update_device_from_platform_link (NMDevice *self, NMPlatformLink *plink)
+update_device_from_platform_link (NMDevice *self, const NMPlatformLink *plink)
{
NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE (self);
const char *udi;
@@ -1836,7 +1839,7 @@ check_carrier (NMDevice *self)
}
static void
-setup_start (NMDevice *self, NMPlatformLink *plink)
+setup_start (NMDevice *self, const NMPlatformLink *plink)
{
NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE (self);
static guint32 id = 0;
@@ -1943,7 +1946,7 @@ setup_start (NMDevice *self, NMPlatformLink *plink)
}
static void
-setup_finish (NMDevice *self, NMPlatformLink *plink)
+setup_finish (NMDevice *self, const NMPlatformLink *plink)
{
if (plink) {
update_device_from_platform_link (self, plink);
@@ -1952,7 +1955,7 @@ setup_finish (NMDevice *self, NMPlatformLink *plink)
}
void
-nm_device_setup_finish (NMDevice *self, NMPlatformLink *plink)
+nm_device_setup_finish (NMDevice *self, const NMPlatformLink *plink)
{
g_return_if_fail (!plink || link_type_compatible (self, plink->type, NULL, NULL));
diff --git a/src/devices/nm-device.h b/src/devices/nm-device.h
index 36f5cc68d1..3ad900f385 100644
--- a/src/devices/nm-device.h
+++ b/src/devices/nm-device.h
@@ -170,7 +170,9 @@ typedef struct {
* @self: the #NMDevice
* @connection: the #NMConnection being activated
* @parent: the parent #NMDevice, if any
- * @out_plink: on success, a backing kernel network device if one exists
+ * @out_plink: on success, a backing kernel network device if one exists.
+ * The returned pointer is owned by platform and only valid until the
+ * next platform operation.
* @error: location to store error, or %NULL
*
* Create any backing resources (kernel devices, etc) required for this
@@ -183,7 +185,7 @@ typedef struct {
gboolean (*create_and_realize) (NMDevice *self,
NMConnection *connection,
NMDevice *parent,
- NMPlatformLink *out_plink,
+ const NMPlatformLink **out_plink,
GError **error);
/**
@@ -197,7 +199,7 @@ typedef struct {
* any tasks that affect other interfaces (like master/slave or parent/child
* stuff).
*/
- void (*setup_start) (NMDevice *self, NMPlatformLink *plink);
+ void (*setup_start) (NMDevice *self, const NMPlatformLink *plink);
/**
* setup_finish():
@@ -208,7 +210,7 @@ typedef struct {
* backing resource properties. After this function finishes, the device
* is ready for network connectivity.
*/
- void (*setup_finish) (NMDevice *self, NMPlatformLink *plink);
+ void (*setup_finish) (NMDevice *self, const NMPlatformLink *plink);
/**
* unrealize():
@@ -509,7 +511,7 @@ gboolean nm_device_create_and_realize (NMDevice *self,
NMDevice *parent,
GError **error);
void nm_device_setup_finish (NMDevice *self,
- NMPlatformLink *plink);
+ const NMPlatformLink *plink);
gboolean nm_device_unrealize (NMDevice *device,
gboolean remove_resources,
GError **error);
diff --git a/src/devices/team/nm-device-team.c b/src/devices/team/nm-device-team.c
index c91e2c404b..827a4efad9 100644
--- a/src/devices/team/nm-device-team.c
+++ b/src/devices/team/nm-device-team.c
@@ -673,13 +673,13 @@ static gboolean
create_and_realize (NMDevice *device,
NMConnection *connection,
NMDevice *parent,
- NMPlatformLink *out_plink,
+ const NMPlatformLink **out_plink,
GError **error)
{
const char *iface = nm_device_get_iface (device);
NMPlatformError plerr;
- plerr = nm_platform_team_add (NM_PLATFORM_GET, iface, out_plink);
+ plerr = nm_platform_link_team_add (NM_PLATFORM_GET, iface, out_plink);
if (plerr != NM_PLATFORM_ERROR_SUCCESS && plerr != NM_PLATFORM_ERROR_EXISTS) {
g_set_error (error, NM_DEVICE_ERROR, NM_DEVICE_ERROR_CREATION_FAILED,
"Failed to create team master interface '%s' for '%s': %s",
diff --git a/src/devices/wifi/nm-device-wifi.c b/src/devices/wifi/nm-device-wifi.c
index 6febd10b55..af8880dcfd 100644
--- a/src/devices/wifi/nm-device-wifi.c
+++ b/src/devices/wifi/nm-device-wifi.c
@@ -424,7 +424,7 @@ periodic_update_cb (gpointer user_data)
}
static void
-setup_start (NMDevice *device, NMPlatformLink *plink)
+setup_start (NMDevice *device, const NMPlatformLink *plink)
{
NM_DEVICE_CLASS (nm_device_wifi_parent_class)->setup_start (device, plink);
diff --git a/src/platform/nm-fake-platform.c b/src/platform/nm-fake-platform.c
index 09327a4d81..e6757078c7 100644
--- a/src/platform/nm-fake-platform.c
+++ b/src/platform/nm-fake-platform.c
@@ -292,10 +292,11 @@ link_add (NMPlatform *platform,
NMLinkType type,
const void *address,
size_t address_len,
- NMPlatformLink *out_link)
+ const NMPlatformLink **out_link)
{
NMFakePlatformPrivate *priv = NM_FAKE_PLATFORM_GET_PRIVATE (platform);
NMFakePlatformLink device;
+ NMFakePlatformLink *new_device;
link_init (&device, priv->links->len, type, name);
@@ -306,6 +307,7 @@ link_add (NMPlatform *platform,
}
g_array_append_val (priv->links, device);
+ new_device = &g_array_index (priv->links, NMFakePlatformLink, priv->links->len - 1);
if (device.link.ifindex) {
g_signal_emit_by_name (platform, NM_PLATFORM_SIGNAL_LINK_CHANGED, NMP_OBJECT_TYPE_LINK, device.link.ifindex, &device, NM_PLATFORM_SIGNAL_ADDED);
@@ -314,7 +316,7 @@ link_add (NMPlatform *platform,
}
if (out_link)
- *out_link = device.link;
+ *out_link = &new_device->link;
return TRUE;
}
@@ -640,43 +642,11 @@ link_release (NMPlatform *platform, int master_idx, int slave_idx)
}
static gboolean
-master_set_option (NMPlatform *platform, int master, const char *option, const char *value)
-{
- gs_free char *path = g_strdup_printf ("master:%d:%s", master, option);
-
- return sysctl_set (platform, path, value);
-}
-
-static char *
-master_get_option (NMPlatform *platform, int master, const char *option)
-{
- gs_free char *path = g_strdup_printf ("master:%d:%s", master, option);
-
- return sysctl_get (platform, path);
-}
-
-static gboolean
-slave_set_option (NMPlatform *platform, int slave, const char *option, const char *value)
-{
- gs_free char *path = g_strdup_printf ("slave:%d:%s", slave, option);
-
- return sysctl_set (platform, path, value);
-}
-
-static char *
-slave_get_option (NMPlatform *platform, int slave, const char *option)
-{
- gs_free char *path = g_strdup_printf ("slave:%d:%s", slave, option);
-
- return sysctl_get (platform, path);
-}
-
-static gboolean
-vlan_add (NMPlatform *platform, const char *name, int parent, int vlan_id, guint32 vlan_flags, NMPlatformLink *out_link)
+vlan_add (NMPlatform *platform, const char *name, int parent, int vlan_id, guint32 vlan_flags, const NMPlatformLink **out_link)
{
NMFakePlatformLink *device;
- if (!link_add (platform, name, NM_LINK_TYPE_VLAN, NULL, 0, NULL))
+ if (!link_add (platform, name, NM_LINK_TYPE_VLAN, NULL, 0, out_link))
return FALSE;
device = link_get (platform, nm_platform_link_get_ifindex (platform, name));
@@ -689,7 +659,7 @@ vlan_add (NMPlatform *platform, const char *name, int parent, int vlan_id, guint
device->link.parent = parent;
if (out_link)
- *out_link = device->link;
+ *out_link = &device->link;
return TRUE;
}
@@ -712,11 +682,11 @@ static gboolean
link_vxlan_add (NMPlatform *platform,
const char *name,
NMPlatformLnkVxlan *props,
- NMPlatformLink *out_link)
+ const NMPlatformLink **out_link)
{
NMFakePlatformLink *device;
- if (!link_add (platform, name, NM_LINK_TYPE_VXLAN, NULL, 0, NULL))
+ if (!link_add (platform, name, NM_LINK_TYPE_VXLAN, NULL, 0, out_link))
return FALSE;
device = link_get (platform, nm_platform_link_get_ifindex (platform, name));
@@ -729,12 +699,12 @@ link_vxlan_add (NMPlatform *platform,
device->link.parent = props->parent_ifindex;
if (out_link)
- *out_link = device->link;
+ *out_link = &device->link;
return TRUE;
}
static gboolean
-infiniband_partition_add (NMPlatform *platform, int parent, int p_key, NMPlatformLink *out_link)
+infiniband_partition_add (NMPlatform *platform, int parent, int p_key, const NMPlatformLink **out_link)
{
NMFakePlatformLink *device, *parent_device;
gs_free char *name = NULL;
@@ -1476,10 +1446,6 @@ nm_fake_platform_class_init (NMFakePlatformClass *klass)
platform_class->link_enslave = link_enslave;
platform_class->link_release = link_release;
- platform_class->master_set_option = master_set_option;
- platform_class->master_get_option = master_get_option;
- platform_class->slave_set_option = slave_set_option;
- platform_class->slave_get_option = slave_get_option;
platform_class->vlan_add = vlan_add;
platform_class->link_vlan_change = link_vlan_change;
diff --git a/src/platform/nm-linux-platform.c b/src/platform/nm-linux-platform.c
index 730f4b1c86..dc816cf8b1 100644
--- a/src/platform/nm-linux-platform.c
+++ b/src/platform/nm-linux-platform.c
@@ -618,7 +618,7 @@ _linktype_get_type (NMPlatform *platform,
NMPlatformTunProperties props;
if ( platform
- && nm_platform_tun_get_properties_ifname (platform, ifname, &props)) {
+ && nm_platform_link_tun_get_properties_ifname (platform, ifname, &props)) {
if (!g_strcmp0 (props.mode, "tap"))
return NM_LINK_TYPE_TAP;
if (!g_strcmp0 (props.mode, "tun"))
@@ -3592,7 +3592,7 @@ do_add_link_with_lookup (NMPlatform *platform,
NMLinkType link_type,
const char *name,
struct nl_msg *nlmsg,
- NMPlatformLink *out_link)
+ const NMPlatformLink **out_link)
{
const NMPObject *obj;
@@ -3600,8 +3600,8 @@ do_add_link_with_lookup (NMPlatform *platform,
obj = nmp_cache_lookup_link_full (NM_LINUX_PLATFORM_GET_PRIVATE (platform)->cache,
0, name, FALSE, link_type, NULL, NULL);
- if (out_link && obj)
- *out_link = obj->link;
+ if (out_link)
+ *out_link = obj ? &obj->link : NULL;
return !!obj;
}
@@ -3801,7 +3801,7 @@ link_add (NMPlatform *platform,
NMLinkType type,
const void *address,
size_t address_len,
- NMPlatformLink *out_link)
+ const NMPlatformLink **out_link)
{
nm_auto_nlmsg struct nl_msg *nlmsg = NULL;
@@ -4160,7 +4160,7 @@ vlan_add (NMPlatform *platform,
int parent,
int vlan_id,
guint32 vlan_flags,
- NMPlatformLink *out_link)
+ const NMPlatformLink **out_link)
{
nm_auto_nlmsg struct nl_msg *nlmsg = NULL;
@@ -4204,7 +4204,7 @@ static int
link_gre_add (NMPlatform *platform,
const char *name,
NMPlatformLnkGre *props,
- NMPlatformLink *out_link)
+ const NMPlatformLink **out_link)
{
nm_auto_nlmsg struct nl_msg *nlmsg = NULL;
struct nlattr *info;
@@ -4259,7 +4259,7 @@ static int
link_ip6tnl_add (NMPlatform *platform,
const char *name,
NMPlatformLnkIp6Tnl *props,
- NMPlatformLink *out_link)
+ const NMPlatformLink **out_link)
{
nm_auto_nlmsg struct nl_msg *nlmsg = NULL;
struct nlattr *info;
@@ -4320,7 +4320,7 @@ static int
link_ipip_add (NMPlatform *platform,
const char *name,
NMPlatformLnkIpIp *props,
- NMPlatformLink *out_link)
+ const NMPlatformLink **out_link)
{
nm_auto_nlmsg struct nl_msg *nlmsg = NULL;
struct nlattr *info;
@@ -4372,7 +4372,7 @@ link_macvlan_add (NMPlatform *platform,
const char *name,
int parent,
NMPlatformLnkMacvlan *props,
- NMPlatformLink *out_link)
+ const NMPlatformLink **out_link)
{
nm_auto_nlmsg struct nl_msg *nlmsg = NULL;
struct nlattr *info;
@@ -4420,7 +4420,7 @@ static int
link_sit_add (NMPlatform *platform,
const char *name,
NMPlatformLnkSit *props,
- NMPlatformLink *out_link)
+ const NMPlatformLink **out_link)
{
nm_auto_nlmsg struct nl_msg *nlmsg = NULL;
struct nlattr *info;
@@ -4471,7 +4471,7 @@ static gboolean
link_vxlan_add (NMPlatform *platform,
const char *name,
NMPlatformLnkVxlan *props,
- NMPlatformLink *out_link)
+ const NMPlatformLink **out_link)
{
nm_auto_nlmsg struct nl_msg *nlmsg = NULL;
struct nlattr *info;
@@ -4714,61 +4714,61 @@ link_vlan_change (NMPlatform *platform,
static int
tun_add (NMPlatform *platform, const char *name, gboolean tap,
gint64 owner, gint64 group, gboolean pi, gboolean vnet_hdr,
- gboolean multi_queue, NMPlatformLink *out_link)
-{
- const NMPObject *obj;
- struct ifreq ifr = { };
- int fd;
-
- _LOGD ("link: add %s '%s' owner %" G_GINT64_FORMAT " group %" G_GINT64_FORMAT,
- tap ? "tap" : "tun", name, owner, group);
-
- fd = open ("/dev/net/tun", O_RDWR);
- if (fd < 0)
- return FALSE;
-
- strncpy (ifr.ifr_name, name, IFNAMSIZ);
- ifr.ifr_flags = tap ? IFF_TAP : IFF_TUN;
-
- if (!pi)
- ifr.ifr_flags |= IFF_NO_PI;
- if (vnet_hdr)
- ifr.ifr_flags |= IFF_VNET_HDR;
- if (multi_queue)
- ifr.ifr_flags |= NM_IFF_MULTI_QUEUE;
-
- if (ioctl (fd, TUNSETIFF, &ifr)) {
- close (fd);
- return FALSE;
- }
-
- if (owner >= 0 && owner < G_MAXINT32) {
- if (ioctl (fd, TUNSETOWNER, (uid_t) owner)) {
- close (fd);
- return FALSE;
- }
- }
-
- if (group >= 0 && group < G_MAXINT32) {
- if (ioctl (fd, TUNSETGROUP, (gid_t) group)) {
- close (fd);
- return FALSE;
- }
- }
-
- if (ioctl (fd, TUNSETPERSIST, 1)) {
- close (fd);
- return FALSE;
- }
- do_request_link (platform, 0, name, TRUE);
- obj = nmp_cache_lookup_link_full (NM_LINUX_PLATFORM_GET_PRIVATE (platform)->cache,
- 0, name, FALSE,
- tap ? NM_LINK_TYPE_TAP : NM_LINK_TYPE_TUN,
- NULL, NULL);
- if (out_link && obj)
- *out_link = obj->link;
-
- return !!obj;
+ gboolean multi_queue, const NMPlatformLink **out_link)
+{
+ const NMPObject *obj;
+ struct ifreq ifr = { };
+ int fd;
+
+ _LOGD ("link: add %s '%s' owner %" G_GINT64_FORMAT " group %" G_GINT64_FORMAT,
+ tap ? "tap" : "tun", name, owner, group);
+
+ fd = open ("/dev/net/tun", O_RDWR);
+ if (fd < 0)
+ return FALSE;
+
+ strncpy (ifr.ifr_name, name, IFNAMSIZ);
+ ifr.ifr_flags = tap ? IFF_TAP : IFF_TUN;
+
+ if (!pi)
+ ifr.ifr_flags |= IFF_NO_PI;
+ if (vnet_hdr)
+ ifr.ifr_flags |= IFF_VNET_HDR;
+ if (multi_queue)
+ ifr.ifr_flags |= NM_IFF_MULTI_QUEUE;
+
+ if (ioctl (fd, TUNSETIFF, &ifr)) {
+ close (fd);
+ return FALSE;
+ }
+
+ if (owner >= 0 && owner < G_MAXINT32) {
+ if (ioctl (fd, TUNSETOWNER, (uid_t) owner)) {
+ close (fd);
+ return FALSE;
+ }
+ }
+
+ if (group >= 0 && group < G_MAXINT32) {
+ if (ioctl (fd, TUNSETGROUP, (gid_t) group)) {
+ close (fd);
+ return FALSE;
+ }
+ }
+
+ if (ioctl (fd, TUNSETPERSIST, 1)) {
+ close (fd);
+ return FALSE;
+ }
+ do_request_link (platform, 0, name, TRUE);
+ obj = nmp_cache_lookup_link_full (NM_LINUX_PLATFORM_GET_PRIVATE (platform)->cache,
+ 0, name, FALSE,
+ tap ? NM_LINK_TYPE_TAP : NM_LINK_TYPE_TUN,
+ NULL, NULL);
+ if (out_link)
+ *out_link = obj ? &obj->link : NULL;
+
+ return !!obj;
}
static gboolean
@@ -4801,93 +4801,10 @@ link_release (NMPlatform *platform, int master, int slave)
return link_enslave (platform, 0, slave);
}
-static char *
-link_option_path (NMPlatform *platform, int master, const char *category, const char *option)
-{
- const char *name = nm_platform_link_get_name (platform, master);
-
- if (!name || !category || !option)
- return NULL;
-
- return g_strdup_printf ("/sys/class/net/%s/%s/%s",
- ASSERT_VALID_PATH_COMPONENT (name),
- ASSERT_VALID_PATH_COMPONENT (category),
- ASSERT_VALID_PATH_COMPONENT (option));
-}
-
-static gboolean
-link_set_option (NMPlatform *platform, int master, const char *category, const char *option, const char *value)
-{
- gs_free char *path = link_option_path (platform, master, category, option);
-
- return path && nm_platform_sysctl_set (platform, path, value);
-}
-
-static char *
-link_get_option (NMPlatform *platform, int master, const char *category, const char *option)
-{
- gs_free char *path = link_option_path (platform, master, category, option);
-
- return path ? nm_platform_sysctl_get (platform, path) : NULL;
-}
-
-static const char *
-master_category (NMPlatform *platform, int master)
-{
- switch (nm_platform_link_get_type (platform, master)) {
- case NM_LINK_TYPE_BRIDGE:
- return "bridge";
- case NM_LINK_TYPE_BOND:
- return "bonding";
- default:
- return NULL;
- }
-}
-
-static const char *
-slave_category (NMPlatform *platform, int slave)
-{
- int master = nm_platform_link_get_master (platform, slave);
-
- if (master <= 0)
- return NULL;
-
- switch (nm_platform_link_get_type (platform, master)) {
- case NM_LINK_TYPE_BRIDGE:
- return "brport";
- default:
- return NULL;
- }
-}
-
-static gboolean
-master_set_option (NMPlatform *platform, int master, const char *option, const char *value)
-{
- return link_set_option (platform, master, master_category (platform, master), option, value);
-}
-
-static char *
-master_get_option (NMPlatform *platform, int master, const char *option)
-{
- return link_get_option (platform, master, master_category (platform, master), option);
-}
-
-static gboolean
-slave_set_option (NMPlatform *platform, int slave, const char *option, const char *value)
-{
- return link_set_option (platform, slave, slave_category (platform, slave), option, value);
-}
-
-static char *
-slave_get_option (NMPlatform *platform, int slave, const char *option)
-{
- return link_get_option (platform, slave, slave_category (platform, slave), option);
-}
-
/******************************************************************/
static gboolean
-infiniband_partition_add (NMPlatform *platform, int parent, int p_key, NMPlatformLink *out_link)
+infiniband_partition_add (NMPlatform *platform, int parent, int p_key, const NMPlatformLink **out_link)
{
NMLinuxPlatformPrivate *priv = NM_LINUX_PLATFORM_GET_PRIVATE (platform);
const NMPObject *obj_parent;
@@ -4911,8 +4828,8 @@ infiniband_partition_add (NMPlatform *platform, int parent, int p_key, NMPlatfor
obj = nmp_cache_lookup_link_full (NM_LINUX_PLATFORM_GET_PRIVATE (platform)->cache,
0, ifname, FALSE, NM_LINK_TYPE_INFINIBAND, NULL, NULL);
- if (out_link && obj)
- *out_link = obj->link;
+ if (out_link)
+ *out_link = obj ? &obj->link : NULL;
return !!obj;
}
@@ -5967,10 +5884,6 @@ nm_linux_platform_class_init (NMLinuxPlatformClass *klass)
platform_class->link_enslave = link_enslave;
platform_class->link_release = link_release;
- platform_class->master_set_option = master_set_option;
- platform_class->master_get_option = master_get_option;
- platform_class->slave_set_option = slave_set_option;
- platform_class->slave_get_option = slave_get_option;
platform_class->vlan_add = vlan_add;
platform_class->link_vlan_change = link_vlan_change;
diff --git a/src/platform/nm-platform.c b/src/platform/nm-platform.c
index fe42465c77..9eff6406e3 100644
--- a/src/platform/nm-platform.c
+++ b/src/platform/nm-platform.c
@@ -281,7 +281,6 @@ nm_platform_sysctl_set (NMPlatform *self, const char *path, const char *value)
g_return_val_if_fail (path, FALSE);
g_return_val_if_fail (value, FALSE);
- g_return_val_if_fail (klass->sysctl_set, FALSE);
return klass->sysctl_set (self, path, value);
}
@@ -333,7 +332,6 @@ nm_platform_sysctl_get (NMPlatform *self, const char *path)
_CHECK_SELF (self, klass, NULL);
g_return_val_if_fail (path, NULL);
- g_return_val_if_fail (klass->sysctl_get, NULL);
return klass->sysctl_get (self, path);
}
@@ -413,8 +411,6 @@ nm_platform_link_get_all (NMPlatform *self)
_CHECK_SELF (self, klass, NULL);
- g_return_val_if_fail (klass->link_get_all, NULL);
-
links = klass->link_get_all (self);
if (!links || links->len == 0)
@@ -571,7 +567,7 @@ nm_platform_link_get_by_address (NMPlatform *self,
}
static NMPlatformError
-_link_add_check_existing (NMPlatform *self, const char *name, NMLinkType type, NMPlatformLink *out_link)
+_link_add_check_existing (NMPlatform *self, const char *name, NMLinkType type, const NMPlatformLink **out_link)
{
const NMPlatformLink *pllink;
@@ -586,11 +582,13 @@ _link_add_check_existing (NMPlatform *self, const char *name, NMLinkType type, N
wrong_type ? ", expected " : "",
wrong_type ? nm_link_type_to_string (type) : "");
if (out_link)
- *out_link = *pllink;
+ *out_link = pllink;
if (wrong_type)
return NM_PLATFORM_ERROR_WRONG_TYPE;
return NM_PLATFORM_ERROR_EXISTS;
}
+ if (out_link)
+ *out_link = NULL;
return NM_PLATFORM_ERROR_SUCCESS;
}
@@ -619,14 +617,13 @@ nm_platform_link_add (NMPlatform *self,
NMLinkType type,
const void *address,
size_t address_len,
- NMPlatformLink *out_link)
+ const NMPlatformLink **out_link)
{
NMPlatformError plerr;
_CHECK_SELF (self, klass, NM_PLATFORM_ERROR_BUG);
g_return_val_if_fail (name, NM_PLATFORM_ERROR_BUG);
- g_return_val_if_fail (klass->link_add, NM_PLATFORM_ERROR_BUG);
g_return_val_if_fail ( (address != NULL) ^ (address_len == 0) , NM_PLATFORM_ERROR_BUG);
plerr = _link_add_check_existing (self, name, type, out_link);
@@ -640,7 +637,7 @@ nm_platform_link_add (NMPlatform *self,
}
/**
- * nm_platform_dummy_add:
+ * nm_platform_link_dummy_add:
* @self: platform instance
* @name: New interface name
* @out_link: on success, the link object
@@ -648,7 +645,7 @@ nm_platform_link_add (NMPlatform *self,
* Create a software ethernet-like interface
*/
NMPlatformError
-nm_platform_dummy_add (NMPlatform *self, const char *name, NMPlatformLink *out_link)
+nm_platform_link_dummy_add (NMPlatform *self, const char *name, const NMPlatformLink **out_link)
{
return nm_platform_link_add (self, name, NM_LINK_TYPE_DUMMY, NULL, 0, out_link);
}
@@ -742,8 +739,6 @@ nm_platform_link_get_type_name (NMPlatform *self, int ifindex)
{
_CHECK_SELF (self, klass, NULL);
- g_return_val_if_fail (klass->link_get_type_name, NULL);
-
return klass->link_get_type_name (self, ifindex);
}
@@ -969,7 +964,6 @@ nm_platform_link_set_user_ipv6ll_enabled (NMPlatform *self, int ifindex, gboolea
_CHECK_SELF (self, klass, FALSE);
g_return_val_if_fail (ifindex >= 0, FALSE);
- g_return_val_if_fail (klass->check_support_user_ipv6ll, FALSE);
if (klass->link_set_user_ipv6ll_enabled)
return klass->link_set_user_ipv6ll_enabled (self, ifindex, enabled);
@@ -992,7 +986,6 @@ nm_platform_link_set_address (NMPlatform *self, int ifindex, gconstpointer addre
g_return_val_if_fail (ifindex > 0, FALSE);
g_return_val_if_fail (address, FALSE);
g_return_val_if_fail (length > 0, FALSE);
- g_return_val_if_fail (klass->link_set_address, FALSE);
_LOGD ("link: setting '%s' (%d) hardware address", nm_platform_link_get_name (self, ifindex), ifindex);
return klass->link_set_address (self, ifindex, address, length);
@@ -1071,7 +1064,6 @@ nm_platform_link_supports_carrier_detect (NMPlatform *self, int ifindex)
_CHECK_SELF (self, klass, FALSE);
g_return_val_if_fail (ifindex >= 0, FALSE);
- g_return_val_if_fail (klass->link_supports_carrier_detect, FALSE);
return klass->link_supports_carrier_detect (self, ifindex);
}
@@ -1082,7 +1074,6 @@ nm_platform_link_supports_vlans (NMPlatform *self, int ifindex)
_CHECK_SELF (self, klass, FALSE);
g_return_val_if_fail (ifindex >= 0, FALSE);
- g_return_val_if_fail (klass->link_supports_vlans, FALSE);
return klass->link_supports_vlans (self, ifindex);
}
@@ -1101,7 +1092,6 @@ nm_platform_link_set_up (NMPlatform *self, int ifindex, gboolean *out_no_firmwar
_CHECK_SELF (self, klass, FALSE);
g_return_val_if_fail (ifindex > 0, FALSE);
- g_return_val_if_fail (klass->link_set_up, FALSE);
_LOGD ("link: setting up '%s' (%d)", nm_platform_link_get_name (self, ifindex), ifindex);
return klass->link_set_up (self, ifindex, out_no_firmware);
@@ -1120,7 +1110,6 @@ nm_platform_link_set_down (NMPlatform *self, int ifindex)
_CHECK_SELF (self, klass, FALSE);
g_return_val_if_fail (ifindex > 0, FALSE);
- g_return_val_if_fail (klass->link_set_down, FALSE);
_LOGD ("link: setting down '%s' (%d)", nm_platform_link_get_name (self, ifindex), ifindex);
return klass->link_set_down (self, ifindex);
@@ -1139,7 +1128,6 @@ nm_platform_link_set_arp (NMPlatform *self, int ifindex)
_CHECK_SELF (self, klass, FALSE);
g_return_val_if_fail (ifindex >= 0, FALSE);
- g_return_val_if_fail (klass->link_set_arp, FALSE);
_LOGD ("link: setting arp '%s' (%d)", nm_platform_link_get_name (self, ifindex), ifindex);
return klass->link_set_arp (self, ifindex);
@@ -1158,7 +1146,6 @@ nm_platform_link_set_noarp (NMPlatform *self, int ifindex)
_CHECK_SELF (self, klass, FALSE);
g_return_val_if_fail (ifindex >= 0, FALSE);
- g_return_val_if_fail (klass->link_set_noarp, FALSE);
_LOGD ("link: setting noarp '%s' (%d)", nm_platform_link_get_name (self, ifindex), ifindex);
return klass->link_set_noarp (self, ifindex);
@@ -1179,7 +1166,6 @@ nm_platform_link_set_mtu (NMPlatform *self, int ifindex, guint32 mtu)
g_return_val_if_fail (ifindex >= 0, FALSE);
g_return_val_if_fail (mtu > 0, FALSE);
- g_return_val_if_fail (klass->link_set_mtu, FALSE);
_LOGD ("link: setting '%s' (%d) mtu %"G_GUINT32_FORMAT, nm_platform_link_get_name (self, ifindex), ifindex, mtu);
return klass->link_set_mtu (self, ifindex, mtu);
@@ -1294,7 +1280,6 @@ nm_platform_link_get_driver_info (NMPlatform *self,
_CHECK_SELF (self, klass, FALSE);
g_return_val_if_fail (ifindex >= 0, FALSE);
- g_return_val_if_fail (klass->link_get_driver_info, FALSE);
return klass->link_get_driver_info (self,
ifindex,
@@ -1318,7 +1303,6 @@ nm_platform_link_enslave (NMPlatform *self, int master, int slave)
g_return_val_if_fail (master > 0, FALSE);
g_return_val_if_fail (slave> 0, FALSE);
- g_return_val_if_fail (klass->link_enslave, FALSE);
_LOGD ("link: enslaving '%s' (%d) to master '%s' (%d)",
nm_platform_link_get_name (self, slave), slave,
@@ -1341,7 +1325,6 @@ nm_platform_link_release (NMPlatform *self, int master, int slave)
g_return_val_if_fail (master > 0, FALSE);
g_return_val_if_fail (slave > 0, FALSE);
- g_return_val_if_fail (klass->link_release, FALSE);
if (nm_platform_link_get_master (self, slave) != master)
return FALSE;
@@ -1474,7 +1457,7 @@ nm_platform_link_get_lnk_vxlan (NMPlatform *self, int ifindex, const NMPlatformL
/*****************************************************************************/
/**
- * nm_platform_bridge_add:
+ * nm_platform_link_bridge_add:
* @self: platform instance
* @name: New interface name
* @address: (allow-none): set the mac address of the new bridge
@@ -1484,17 +1467,17 @@ nm_platform_link_get_lnk_vxlan (NMPlatform *self, int ifindex, const NMPlatformL
* Create a software bridge.
*/
NMPlatformError
-nm_platform_bridge_add (NMPlatform *self,
- const char *name,
- const void *address,
- size_t address_len,
- NMPlatformLink *out_link)
+nm_platform_link_bridge_add (NMPlatform *self,
+ const char *name,
+ const void *address,
+ size_t address_len,
+ const NMPlatformLink **out_link)
{
return nm_platform_link_add (self, name, NM_LINK_TYPE_BRIDGE, address, address_len, out_link);
}
/**
- * nm_platform_bond_add:
+ * nm_platform_link_bond_add:
* @self: platform instance
* @name: New interface name
* @out_link: on success, the link object
@@ -1502,13 +1485,13 @@ nm_platform_bridge_add (NMPlatform *self,
* Create a software bonding device.
*/
NMPlatformError
-nm_platform_bond_add (NMPlatform *self, const char *name, NMPlatformLink *out_link)
+nm_platform_link_bond_add (NMPlatform *self, const char *name, const NMPlatformLink **out_link)
{
return nm_platform_link_add (self, name, NM_LINK_TYPE_BOND, NULL, 0, out_link);
}
/**
- * nm_platform_team_add:
+ * nm_platform_link_team_add:
* @self: platform instance
* @name: New interface name
* @out_link: on success, the link object
@@ -1516,13 +1499,13 @@ nm_platform_bond_add (NMPlatform *self, const char *name, NMPlatformLink *out_li
* Create a software teaming device.
*/
NMPlatformError
-nm_platform_team_add (NMPlatform *self, const char *name, NMPlatformLink *out_link)
+nm_platform_link_team_add (NMPlatform *self, const char *name, const NMPlatformLink **out_link)
{
return nm_platform_link_add (self, name, NM_LINK_TYPE_TEAM, NULL, 0, out_link);
}
/**
- * nm_platform_vlan_add:
+ * nm_platform_link_vlan_add:
* @self: platform instance
* @name: New interface name
* @vlanid: VLAN identifier
@@ -1532,12 +1515,12 @@ nm_platform_team_add (NMPlatform *self, const char *name, NMPlatformLink *out_li
* Create a software VLAN device.
*/
NMPlatformError
-nm_platform_vlan_add (NMPlatform *self,
+nm_platform_link_vlan_add (NMPlatform *self,
const char *name,
int parent,
int vlanid,
guint32 vlanflags,
- NMPlatformLink *out_link)
+ const NMPlatformLink **out_link)
{
NMPlatformError plerr;
@@ -1546,7 +1529,6 @@ nm_platform_vlan_add (NMPlatform *self,
g_return_val_if_fail (parent >= 0, NM_PLATFORM_ERROR_BUG);
g_return_val_if_fail (vlanid >= 0, NM_PLATFORM_ERROR_BUG);
g_return_val_if_fail (name, NM_PLATFORM_ERROR_BUG);
- g_return_val_if_fail (klass->vlan_add, NM_PLATFORM_ERROR_BUG);
plerr = _link_add_check_existing (self, name, NM_LINK_TYPE_VLAN, out_link);
if (plerr != NM_PLATFORM_ERROR_SUCCESS)
@@ -1572,7 +1554,7 @@ NMPlatformError
nm_platform_link_vxlan_add (NMPlatform *self,
const char *name,
NMPlatformLnkVxlan *props,
- NMPlatformLink *out_link)
+ const NMPlatformLink **out_link)
{
NMPlatformError plerr;
@@ -1592,7 +1574,7 @@ nm_platform_link_vxlan_add (NMPlatform *self,
}
/**
- * nm_platform_tun_add:
+ * nm_platform_link_tun_add:
* @self: platform instance
* @name: new interface name
* @tap: whether the interface is a TAP
@@ -1606,16 +1588,21 @@ nm_platform_link_vxlan_add (NMPlatform *self,
* Create a TUN or TAP interface.
*/
NMPlatformError
-nm_platform_tun_add (NMPlatform *self, const char *name, gboolean tap,
- gint64 owner, gint64 group, gboolean pi, gboolean vnet_hdr,
- gboolean multi_queue, NMPlatformLink *out_link)
+nm_platform_link_tun_add (NMPlatform *self,
+ const char *name,
+ gboolean tap,
+ gint64 owner,
+ gint64 group,
+ gboolean pi,
+ gboolean vnet_hdr,
+ gboolean multi_queue,
+ const NMPlatformLink **out_link)
{
NMPlatformError plerr;
_CHECK_SELF (self, klass, NM_PLATFORM_ERROR_BUG);
g_return_val_if_fail (name, NM_PLATFORM_ERROR_BUG);
- g_return_val_if_fail (klass->tun_add, NM_PLATFORM_ERROR_BUG);
plerr = _link_add_check_existing (self, name, tap ? NM_LINK_TYPE_TAP : NM_LINK_TYPE_TUN, out_link);
if (plerr != NM_PLATFORM_ERROR_SUCCESS)
@@ -1628,56 +1615,115 @@ nm_platform_tun_add (NMPlatform *self, const char *name, gboolean tap,
return NM_PLATFORM_ERROR_SUCCESS;
}
+/*****************************************************************************/
+
+static char *
+link_option_path (NMPlatform *self, int master, const char *category, const char *option)
+{
+ const char *name = nm_platform_link_get_name (self, master);
+
+ if (!name || !category || !option)
+ return NULL;
+
+ return g_strdup_printf ("/sys/class/net/%s/%s/%s",
+ ASSERT_VALID_PATH_COMPONENT (name),
+ ASSERT_VALID_PATH_COMPONENT (category),
+ ASSERT_VALID_PATH_COMPONENT (option));
+}
+
+static gboolean
+link_set_option (NMPlatform *self, int master, const char *category, const char *option, const char *value)
+{
+ gs_free char *path = link_option_path (self, master, category, option);
+
+ return path && nm_platform_sysctl_set (self, path, value);
+}
+
+static char *
+link_get_option (NMPlatform *self, int master, const char *category, const char *option)
+{
+ gs_free char *path = link_option_path (self, master, category, option);
+
+ return path ? nm_platform_sysctl_get (self, path) : NULL;
+}
+
+static const char *
+master_category (NMPlatform *self, int master)
+{
+ switch (nm_platform_link_get_type (self, master)) {
+ case NM_LINK_TYPE_BRIDGE:
+ return "bridge";
+ case NM_LINK_TYPE_BOND:
+ return "bonding";
+ default:
+ return NULL;
+ }
+}
+
+static const char *
+slave_category (NMPlatform *self, int slave)
+{
+ int master = nm_platform_link_get_master (self, slave);
+
+ if (master <= 0)
+ return NULL;
+
+ switch (nm_platform_link_get_type (self, master)) {
+ case NM_LINK_TYPE_BRIDGE:
+ return "brport";
+ default:
+ return NULL;
+ }
+}
+
gboolean
-nm_platform_master_set_option (NMPlatform *self, int ifindex, const char *option, const char *value)
+nm_platform_sysctl_master_set_option (NMPlatform *self, int ifindex, const char *option, const char *value)
{
_CHECK_SELF (self, klass, FALSE);
g_return_val_if_fail (ifindex > 0, FALSE);
g_return_val_if_fail (option, FALSE);
g_return_val_if_fail (value, FALSE);
- g_return_val_if_fail (klass->master_set_option, FALSE);
- return klass->master_set_option (self, ifindex, option, value);
+ return link_set_option (self, ifindex, master_category (self, ifindex), option, value);
}
char *
-nm_platform_master_get_option (NMPlatform *self, int ifindex, const char *option)
+nm_platform_sysctl_master_get_option (NMPlatform *self, int ifindex, const char *option)
{
_CHECK_SELF (self, klass, NULL);
g_return_val_if_fail (ifindex > 0, FALSE);
g_return_val_if_fail (option, FALSE);
- g_return_val_if_fail (klass->master_set_option, FALSE);
- return klass->master_get_option (self, ifindex, option);
+ return link_get_option (self, ifindex, master_category (self, ifindex), option);
}
gboolean
-nm_platform_slave_set_option (NMPlatform *self, int ifindex, const char *option, const char *value)
+nm_platform_sysctl_slave_set_option (NMPlatform *self, int ifindex, const char *option, const char *value)
{
_CHECK_SELF (self, klass, FALSE);
g_return_val_if_fail (ifindex > 0, FALSE);
g_return_val_if_fail (option, FALSE);
g_return_val_if_fail (value, FALSE);
- g_return_val_if_fail (klass->slave_set_option, FALSE);
- return klass->slave_set_option (self, ifindex, option, value);
+ return link_set_option (self, ifindex, slave_category (self, ifindex), option, value);
}
char *
-nm_platform_slave_get_option (NMPlatform *self, int ifindex, const char *option)
+nm_platform_sysctl_slave_get_option (NMPlatform *self, int ifindex, const char *option)
{
_CHECK_SELF (self, klass, NULL);
g_return_val_if_fail (ifindex > 0, FALSE);
g_return_val_if_fail (option, FALSE);
- g_return_val_if_fail (klass->slave_set_option, FALSE);
- return klass->slave_get_option (self, ifindex, option);
+ return link_get_option (self, ifindex, slave_category (self, ifindex), option);
}
+/******************************************************************************/
+
gboolean
nm_platform_link_vlan_change (NMPlatform *self,
int ifindex,
@@ -1745,7 +1791,7 @@ nm_platform_link_vlan_change (NMPlatform *self,
}
gboolean
-nm_platform_vlan_set_ingress_map (NMPlatform *self, int ifindex, int from, int to)
+nm_platform_link_vlan_set_ingress_map (NMPlatform *self, int ifindex, int from, int to)
{
NMVlanQosMapping map = {
.from = from,
@@ -1756,7 +1802,7 @@ nm_platform_vlan_set_ingress_map (NMPlatform *self, int ifindex, int from, int t
}
gboolean
-nm_platform_vlan_set_egress_map (NMPlatform *self, int ifindex, int from, int to)
+nm_platform_link_vlan_set_egress_map (NMPlatform *self, int ifindex, int from, int to)
{
NMVlanQosMapping map = {
.from = from,
@@ -1779,7 +1825,7 @@ NMPlatformError
nm_platform_link_gre_add (NMPlatform *self,
const char *name,
NMPlatformLnkGre *props,
- NMPlatformLink *out_link)
+ const NMPlatformLink **out_link)
{
NMPlatformError plerr;
char buffer[INET_ADDRSTRLEN];
@@ -1806,7 +1852,7 @@ nm_platform_link_gre_add (NMPlatform *self,
}
NMPlatformError
-nm_platform_infiniband_partition_add (NMPlatform *self, int parent, int p_key, NMPlatformLink *out_link)
+nm_platform_link_infiniband_add (NMPlatform *self, int parent, int p_key, const NMPlatformLink **out_link)
{
gs_free char *parent_name = NULL;
gs_free char *name = NULL;
@@ -1816,7 +1862,6 @@ nm_platform_infiniband_partition_add (NMPlatform *self, int parent, int p_key, N
g_return_val_if_fail (parent >= 0, NM_PLATFORM_ERROR_BUG);
g_return_val_if_fail (p_key >= 0, NM_PLATFORM_ERROR_BUG);
- g_return_val_if_fail (klass->infiniband_partition_add, NM_PLATFORM_ERROR_BUG);
parent_name = g_strdup (nm_platform_link_get_name (self, parent));
if ( !parent_name
@@ -1836,11 +1881,11 @@ nm_platform_infiniband_partition_add (NMPlatform *self, int parent, int p_key, N
}
gboolean
-nm_platform_infiniband_get_properties (NMPlatform *self,
- int ifindex,
- int *out_parent,
- int *out_p_key,
- const char **out_mode)
+nm_platform_link_infiniband_get_properties (NMPlatform *self,
+ int ifindex,
+ int *out_parent,
+ int *out_p_key,
+ const char **out_mode)
{
const NMPlatformLnkInfiniband *plnk;
const NMPlatformLink *plink;
@@ -1915,7 +1960,7 @@ NMPlatformError
nm_platform_link_ip6tnl_add (NMPlatform *self,
const char *name,
NMPlatformLnkIp6Tnl *props,
- NMPlatformLink *out_link)
+ const NMPlatformLink **out_link)
{
NMPlatformError plerr;
char buffer[INET6_ADDRSTRLEN];
@@ -1954,7 +1999,7 @@ NMPlatformError
nm_platform_link_ipip_add (NMPlatform *self,
const char *name,
NMPlatformLnkIpIp *props,
- NMPlatformLink *out_link)
+ const NMPlatformLink **out_link)
{
NMPlatformError plerr;
char buffer[INET_ADDRSTRLEN];
@@ -1994,7 +2039,7 @@ nm_platform_link_macvlan_add (NMPlatform *self,
const char *name,
int parent,
NMPlatformLnkMacvlan *props,
- NMPlatformLink *out_link)
+ const NMPlatformLink **out_link)
{
NMPlatformError plerr;
NMLinkType type;
@@ -2034,7 +2079,7 @@ NMPlatformError
nm_platform_link_sit_add (NMPlatform *self,
const char *name,
NMPlatformLnkSit *props,
- NMPlatformLink *out_link)
+ const NMPlatformLink **out_link)
{
NMPlatformError plerr;
char buffer[INET_ADDRSTRLEN];
@@ -2061,7 +2106,7 @@ nm_platform_link_sit_add (NMPlatform *self,
}
gboolean
-nm_platform_veth_get_properties (NMPlatform *self, int ifindex, int *out_peer_ifindex)
+nm_platform_link_veth_get_properties (NMPlatform *self, int ifindex, int *out_peer_ifindex)
{
const NMPlatformLink *plink;
int peer_ifindex;
@@ -2091,7 +2136,7 @@ nm_platform_veth_get_properties (NMPlatform *self, int ifindex, int *out_peer_if
}
gboolean
-nm_platform_tun_get_properties_ifname (NMPlatform *self, const char *ifname, NMPlatformTunProperties *props)
+nm_platform_link_tun_get_properties_ifname (NMPlatform *self, const char *ifname, NMPlatformTunProperties *props)
{
char *path, *val;
gboolean success = TRUE;
@@ -2152,14 +2197,14 @@ nm_platform_tun_get_properties_ifname (NMPlatform *self, const char *ifname, NMP
}
gboolean
-nm_platform_tun_get_properties (NMPlatform *self, int ifindex, NMPlatformTunProperties *props)
+nm_platform_link_tun_get_properties (NMPlatform *self, int ifindex, NMPlatformTunProperties *props)
{
_CHECK_SELF (self, klass, FALSE);
g_return_val_if_fail (ifindex > 0, FALSE);
g_return_val_if_fail (props != NULL, FALSE);
- return nm_platform_tun_get_properties_ifname (self, nm_platform_link_get_name (self, ifindex), props);
+ return nm_platform_link_tun_get_properties_ifname (self, nm_platform_link_get_name (self, ifindex), props);
}
gboolean
@@ -2349,7 +2394,6 @@ nm_platform_ip4_address_get_all (NMPlatform *self, int ifindex)
_CHECK_SELF (self, klass, NULL);
g_return_val_if_fail (ifindex > 0, NULL);
- g_return_val_if_fail (klass->ip4_address_get_all, NULL);
return klass->ip4_address_get_all (self, ifindex);
}
@@ -2360,7 +2404,6 @@ nm_platform_ip6_address_get_all (NMPlatform *self, int ifindex)
_CHECK_SELF (self, klass, NULL);
g_return_val_if_fail (ifindex > 0, NULL);
- g_return_val_if_fail (klass->ip6_address_get_all, NULL);
return klass->ip6_address_get_all (self, ifindex);
}
@@ -2381,7 +2424,6 @@ nm_platform_ip4_address_add (NMPlatform *self,
g_return_val_if_fail (plen > 0, FALSE);
g_return_val_if_fail (lifetime > 0, FALSE);
g_return_val_if_fail (preferred <= lifetime, FALSE);
- g_return_val_if_fail (klass->ip4_address_add, FALSE);
g_return_val_if_fail (!label || strlen (label) < sizeof (((NMPlatformIP4Address *) NULL)->label), FALSE);
if (_LOGD_ENABLED ()) {
@@ -2418,7 +2460,6 @@ nm_platform_ip6_address_add (NMPlatform *self,
g_return_val_if_fail (plen > 0, FALSE);
g_return_val_if_fail (lifetime > 0, FALSE);
g_return_val_if_fail (preferred <= lifetime, FALSE);
- g_return_val_if_fail (klass->ip6_address_add, FALSE);
if (_LOGD_ENABLED ()) {
NMPlatformIP6Address addr = { 0 };
@@ -2448,7 +2489,6 @@ nm_platform_ip4_address_delete (NMPlatform *self, int ifindex, in_addr_t address
g_return_val_if_fail (ifindex > 0, FALSE);
g_return_val_if_fail (plen > 0, FALSE);
- g_return_val_if_fail (klass->ip4_address_delete, FALSE);
_LOGD ("address: deleting IPv4 address %s/%d, %sifindex %d%s",
nm_utils_inet4_ntop (address, NULL), plen,
@@ -2468,7 +2508,6 @@ nm_platform_ip6_address_delete (NMPlatform *self, int ifindex, struct in6_addr a
g_return_val_if_fail (ifindex > 0, FALSE);
g_return_val_if_fail (plen > 0, FALSE);
- g_return_val_if_fail (klass->ip6_address_delete, FALSE);
_LOGD ("address: deleting IPv6 address %s/%d, ifindex %d%s",
nm_utils_inet6_ntop (&address, NULL), plen, ifindex,
@@ -2701,7 +2740,6 @@ nm_platform_ip4_route_add (NMPlatform *self,
_CHECK_SELF (self, klass, FALSE);
g_return_val_if_fail (0 <= plen && plen <= 32, FALSE);
- g_return_val_if_fail (klass->ip4_route_add, FALSE);
if (_LOGD_ENABLED ()) {
NMPlatformIP4Route route = { 0 };
@@ -2729,7 +2767,6 @@ nm_platform_ip6_route_add (NMPlatform *self,
_CHECK_SELF (self, klass, FALSE);
g_return_val_if_fail (0 <= plen && plen <= 128, FALSE);
- g_return_val_if_fail (klass->ip6_route_add, FALSE);
if (_LOGD_ENABLED ()) {
NMPlatformIP6Route route = { 0 };
@@ -2754,8 +2791,6 @@ nm_platform_ip4_route_delete (NMPlatform *self, int ifindex, in_addr_t network,
_CHECK_SELF (self, klass, FALSE);
- g_return_val_if_fail (klass->ip4_route_delete, FALSE);
-
_LOGD ("route: deleting IPv4 route %s/%d, metric=%"G_GUINT32_FORMAT", ifindex %d%s",
nm_utils_inet4_ntop (network, NULL), plen, metric, ifindex,
_to_string_dev (self, ifindex, str_dev, sizeof (str_dev)));
@@ -2769,8 +2804,6 @@ nm_platform_ip6_route_delete (NMPlatform *self, int ifindex, struct in6_addr net
_CHECK_SELF (self, klass, FALSE);
- g_return_val_if_fail (klass->ip6_route_delete, FALSE);
-
_LOGD ("route: deleting IPv6 route %s/%d, metric=%"G_GUINT32_FORMAT", ifindex %d%s",
nm_utils_inet6_ntop (&network, NULL), plen, metric, ifindex,
_to_string_dev (self, ifindex, str_dev, sizeof (str_dev)));
diff --git a/src/platform/nm-platform.h b/src/platform/nm-platform.h
index cef962c29c..e57c023b7c 100644
--- a/src/platform/nm-platform.h
+++ b/src/platform/nm-platform.h
@@ -456,34 +456,6 @@ typedef struct {
/******************************************************************/
-/* NMPlatform abstract class and its implementations provide a layer between
- * networkmanager's device management classes and the operating system kernel.
- *
- * How it works, is best seen in tests/nm-platform-test.c source file.
- *
- * NMPlatform provides interface to configure kernel interfaces and receive
- * notifications about both internal and external configuration changes. It
- * respects the following rules:
- *
- * 1) Every change made through NMPlatform is readily available and the respective
- * signals are called synchronously.
- *
- * 2) State of an object retrieved from NMPlatform (through functions or events)
- * is at least as recent than the state retrieved before.
- *
- * Any failure of the above rules should be fixed in NMPlatform implementations
- * and tested in nm-platform-test. Synchronization hacks should never be put
- * to any other code. That's why NMPlatform was created and that's why the
- * testing code was written for it.
- *
- * In future, parts of linux platform implementation may be moved to the libnl
- * library.
- *
- * If you have any problems related to NMPlatform on your system, you should
- * always first run tests/nm-linux-platform-test as root and with all
- * network configuration daemons stopped. Look at the code first.
- */
-
struct _NMPlatform {
GObject parent;
};
@@ -506,7 +478,7 @@ typedef struct {
NMLinkType type,
const void *address,
size_t address_len,
- NMPlatformLink *out_link);
+ const NMPlatformLink **out_link);
gboolean (*link_delete) (NMPlatform *, int ifindex);
const char *(*link_get_type_name) (NMPlatform *, int ifindex);
gboolean (*link_get_unmanaged) (NMPlatform *, int ifindex, gboolean *unmanaged);
@@ -545,12 +517,8 @@ typedef struct {
gboolean (*link_enslave) (NMPlatform *, int master, int slave);
gboolean (*link_release) (NMPlatform *, int master, int slave);
- gboolean (*master_set_option) (NMPlatform *, int ifindex, const char *option, const char *value);
- char * (*master_get_option) (NMPlatform *, int ifindex, const char *option);
- gboolean (*slave_set_option) (NMPlatform *, int ifindex, const char *option, const char *value);
- char * (*slave_get_option) (NMPlatform *, int ifindex, const char *option);
- gboolean (*vlan_add) (NMPlatform *, const char *name, int parent, int vlanid, guint32 vlanflags, NMPlatformLink *out_link);
+ gboolean (*vlan_add) (NMPlatform *, const char *name, int parent, int vlanid, guint32 vlanflags, const NMPlatformLink **out_link);
gboolean (*link_vlan_change) (NMPlatform *self,
int ifindex,
NMVlanFlags flags_mask,
@@ -562,23 +530,23 @@ typedef struct {
const NMVlanQosMapping *egress_map,
gsize n_egress_map);
gboolean (*link_vxlan_add) (NMPlatform *, const char *name, NMPlatformLnkVxlan *props,
- NMPlatformLink *out_link);
+ const NMPlatformLink **out_link);
gboolean (*link_gre_add) (NMPlatform *, const char *name, NMPlatformLnkGre *props,
- NMPlatformLink *out_link);
+ const NMPlatformLink **out_link);
gboolean (*link_ip6tnl_add) (NMPlatform *, const char *name, NMPlatformLnkIp6Tnl *props,
- NMPlatformLink *out_link);
+ const NMPlatformLink **out_link);
gboolean (*link_ipip_add) (NMPlatform *, const char *name, NMPlatformLnkIpIp *props,
- NMPlatformLink *out_link);
+ const NMPlatformLink **out_link);
gboolean (*link_macvlan_add) (NMPlatform *, const char *name, int parent, NMPlatformLnkMacvlan *props,
- NMPlatformLink *out_link);
+ const NMPlatformLink **out_link);
gboolean (*link_sit_add) (NMPlatform *, const char *name, NMPlatformLnkSit *props,
- NMPlatformLink *out_link);
+ const NMPlatformLink **out_link);
- gboolean (*infiniband_partition_add) (NMPlatform *, int parent, int p_key, NMPlatformLink *out_link);
+ gboolean (*infiniband_partition_add) (NMPlatform *, int parent, int p_key, const NMPlatformLink **out_link);
gboolean (*tun_add) (NMPlatform *platform, const char *name, gboolean tap, gint64 owner, gint64 group, gboolean pi,
- gboolean vnet_hdr, gboolean multi_queue, NMPlatformLink *out_link);
+ gboolean vnet_hdr, gboolean multi_queue, const NMPlatformLink **out_link);
gboolean (*wifi_get_capabilities) (NMPlatform *, int ifindex, NMDeviceWifiCapabilities *caps);
gboolean (*wifi_get_bssid) (NMPlatform *, int ifindex, guint8 *bssid);
@@ -700,10 +668,10 @@ const NMPlatformLink *nm_platform_link_get_by_ifname (NMPlatform *self, const ch
const NMPlatformLink *nm_platform_link_get_by_address (NMPlatform *self, gconstpointer address, size_t length);
GArray *nm_platform_link_get_all (NMPlatform *self);
-NMPlatformError nm_platform_dummy_add (NMPlatform *self, const char *name, NMPlatformLink *out_link);
-NMPlatformError nm_platform_bridge_add (NMPlatform *self, const char *name, const void *address, size_t address_len, NMPlatformLink *out_link);
-NMPlatformError nm_platform_bond_add (NMPlatform *self, const char *name, NMPlatformLink *out_link);
-NMPlatformError nm_platform_team_add (NMPlatform *self, const char *name, NMPlatformLink *out_link);
+NMPlatformError nm_platform_link_dummy_add (NMPlatform *self, const char *name, const NMPlatformLink **out_link);
+NMPlatformError nm_platform_link_bridge_add (NMPlatform *self, const char *name, const void *address, size_t address_len, const NMPlatformLink **out_link);
+NMPlatformError nm_platform_link_bond_add (NMPlatform *self, const char *name, const NMPlatformLink **out_link);
+NMPlatformError nm_platform_link_team_add (NMPlatform *self, const char *name, const NMPlatformLink **out_link);
gboolean nm_platform_link_delete (NMPlatform *self, int ifindex);
/* convienience methods to lookup the link and access fields of NMPlatformLink. */
@@ -756,10 +724,11 @@ gboolean nm_platform_link_supports_vlans (NMPlatform *self, int ifindex);
gboolean nm_platform_link_enslave (NMPlatform *self, int master, int slave);
gboolean nm_platform_link_release (NMPlatform *self, int master, int slave);
-gboolean nm_platform_master_set_option (NMPlatform *self, int ifindex, const char *option, const char *value);
-char *nm_platform_master_get_option (NMPlatform *self, int ifindex, const char *option);
-gboolean nm_platform_slave_set_option (NMPlatform *self, int ifindex, const char *option, const char *value);
-char *nm_platform_slave_get_option (NMPlatform *self, int ifindex, const char *option);
+
+gboolean nm_platform_sysctl_master_set_option (NMPlatform *self, int ifindex, const char *option, const char *value);
+char *nm_platform_sysctl_master_get_option (NMPlatform *self, int ifindex, const char *option);
+gboolean nm_platform_sysctl_slave_set_option (NMPlatform *self, int ifindex, const char *option, const char *value);
+char *nm_platform_sysctl_slave_get_option (NMPlatform *self, int ifindex, const char *option);
const NMPObject *nm_platform_link_get_lnk (NMPlatform *self, int ifindex, NMLinkType link_type, const NMPlatformLink **out_link);
const NMPlatformLnkGre *nm_platform_link_get_lnk_gre (NMPlatform *self, int ifindex, const NMPlatformLink **out_link);
@@ -773,9 +742,9 @@ const NMPlatformLnkSit *nm_platform_link_get_lnk_sit (NMPlatform *self, int ifin
const NMPlatformLnkVlan *nm_platform_link_get_lnk_vlan (NMPlatform *self, int ifindex, const NMPlatformLink **out_link);
const NMPlatformLnkVxlan *nm_platform_link_get_lnk_vxlan (NMPlatform *self, int ifindex, const NMPlatformLink **out_link);
-NMPlatformError nm_platform_vlan_add (NMPlatform *self, const char *name, int parent, int vlanid, guint32 vlanflags, NMPlatformLink *out_link);
-gboolean nm_platform_vlan_set_ingress_map (NMPlatform *self, int ifindex, int from, int to);
-gboolean nm_platform_vlan_set_egress_map (NMPlatform *self, int ifindex, int from, int to);
+NMPlatformError nm_platform_link_vlan_add (NMPlatform *self, const char *name, int parent, int vlanid, guint32 vlanflags, const NMPlatformLink **out_link);
+gboolean nm_platform_link_vlan_set_ingress_map (NMPlatform *self, int ifindex, int from, int to);
+gboolean nm_platform_link_vlan_set_egress_map (NMPlatform *self, int ifindex, int from, int to);
gboolean nm_platform_link_vlan_change (NMPlatform *self,
int ifindex,
NMVlanFlags flags_mask,
@@ -787,18 +756,25 @@ gboolean nm_platform_link_vlan_change (NMPlatform *self,
const NMVlanQosMapping *egress_map,
gsize n_egress_map);
-NMPlatformError nm_platform_link_vxlan_add (NMPlatform *self, const char *name, NMPlatformLnkVxlan *props, NMPlatformLink *out_link);
+NMPlatformError nm_platform_link_vxlan_add (NMPlatform *self, const char *name, NMPlatformLnkVxlan *props, const NMPlatformLink **out_link);
-NMPlatformError nm_platform_tun_add (NMPlatform *self, const char *name, gboolean tap, gint64 owner, gint64 group, gboolean pi,
- gboolean vnet_hdr, gboolean multi_queue, NMPlatformLink *out_link);
+NMPlatformError nm_platform_link_tun_add (NMPlatform *self,
+ const char *name,
+ gboolean tap,
+ gint64 owner,
+ gint64 group,
+ gboolean pi,
+ gboolean vnet_hdr,
+ gboolean multi_queue,
+ const NMPlatformLink **out_link);
-NMPlatformError nm_platform_infiniband_partition_add (NMPlatform *self, int parent, int p_key, NMPlatformLink *out_link);
-gboolean nm_platform_infiniband_get_properties (NMPlatform *self, int ifindex, int *parent, int *p_key, const char **mode);
+NMPlatformError nm_platform_link_infiniband_add (NMPlatform *self, int parent, int p_key, const NMPlatformLink **out_link);
+gboolean nm_platform_link_infiniband_get_properties (NMPlatform *self, int ifindex, int *parent, int *p_key, const char **mode);
-gboolean nm_platform_veth_get_properties (NMPlatform *self, int ifindex, int *out_peer_ifindex);
-gboolean nm_platform_tun_get_properties (NMPlatform *self, int ifindex, NMPlatformTunProperties *properties);
+gboolean nm_platform_link_veth_get_properties (NMPlatform *self, int ifindex, int *out_peer_ifindex);
+gboolean nm_platform_link_tun_get_properties (NMPlatform *self, int ifindex, NMPlatformTunProperties *properties);
-gboolean nm_platform_tun_get_properties_ifname (NMPlatform *platform, const char *ifname, NMPlatformTunProperties *props);
+gboolean nm_platform_link_tun_get_properties_ifname (NMPlatform *platform, const char *ifname, NMPlatformTunProperties *props);
gboolean nm_platform_wifi_get_capabilities (NMPlatform *self, int ifindex, NMDeviceWifiCapabilities *caps);
gboolean nm_platform_wifi_get_bssid (NMPlatform *self, int ifindex, guint8 *bssid);
@@ -821,15 +797,15 @@ const struct in6_addr *nm_platform_ip6_address_get_peer (const NMPlatformIP6Addr
const NMPlatformIP4Address *nm_platform_ip4_address_get (NMPlatform *self, int ifindex, in_addr_t address, int plen, in_addr_t peer_address);
NMPlatformError nm_platform_link_gre_add (NMPlatform *self, const char *name, NMPlatformLnkGre *props,
- NMPlatformLink *out_link);
+ const NMPlatformLink **out_link);
NMPlatformError nm_platform_link_ip6tnl_add (NMPlatform *self, const char *name, NMPlatformLnkIp6Tnl *props,
- NMPlatformLink *out_link);
+ const NMPlatformLink **out_link);
NMPlatformError nm_platform_link_ipip_add (NMPlatform *self, const char *name, NMPlatformLnkIpIp *props,
- NMPlatformLink *out_link);
+ const NMPlatformLink **out_link);
NMPlatformError nm_platform_link_macvlan_add (NMPlatform *self, const char *name, int parent, NMPlatformLnkMacvlan *props,
- NMPlatformLink *out_link);
+ const NMPlatformLink **out_link);
NMPlatformError nm_platform_link_sit_add (NMPlatform *self, const char *name, NMPlatformLnkSit *props,
- NMPlatformLink *out_link);
+ const NMPlatformLink **out_link);
const NMPlatformIP6Address *nm_platform_ip6_address_get (NMPlatform *self, int ifindex, struct in6_addr address, int plen);
GArray *nm_platform_ip4_address_get_all (NMPlatform *self, int ifindex);
diff --git a/src/platform/tests/test-address.c b/src/platform/tests/test-address.c
index fdf24c7997..68bf2fd70e 100644
--- a/src/platform/tests/test-address.c
+++ b/src/platform/tests/test-address.c
@@ -354,7 +354,7 @@ _g_test_run (gconstpointer user_data)
nm_platform_link_delete (NM_PLATFORM_GET, nm_platform_link_get_ifindex (NM_PLATFORM_GET, DEVICE_NAME));
g_assert (!nm_platform_link_get_by_ifname (NM_PLATFORM_GET, DEVICE_NAME));
- g_assert_cmpint (nm_platform_dummy_add (NM_PLATFORM_GET, DEVICE_NAME, NULL), ==, NM_PLATFORM_ERROR_SUCCESS);
+ g_assert_cmpint (nm_platform_link_dummy_add (NM_PLATFORM_GET, DEVICE_NAME, NULL), ==, NM_PLATFORM_ERROR_SUCCESS);
ifindex = nm_platform_link_get_ifindex (NM_PLATFORM_GET, DEVICE_NAME);
g_assert_cmpint (ifindex, >, 0);
diff --git a/src/platform/tests/test-cleanup.c b/src/platform/tests/test-cleanup.c
index 94ce05491d..9e624a028a 100644
--- a/src/platform/tests/test-cleanup.c
+++ b/src/platform/tests/test-cleanup.c
@@ -35,7 +35,7 @@ test_cleanup_internal (void)
inet_pton (AF_INET6, "2001:db8:e:f:1:2:3:4", &gateway6);
/* Create and set up device */
- g_assert (nm_platform_dummy_add (NM_PLATFORM_GET, DEVICE_NAME, NULL) == NM_PLATFORM_ERROR_SUCCESS);
+ g_assert (nm_platform_link_dummy_add (NM_PLATFORM_GET, DEVICE_NAME, NULL) == NM_PLATFORM_ERROR_SUCCESS);
accept_signal (link_added);
free_signal (link_added);
g_assert (nm_platform_link_set_up (NM_PLATFORM_GET, nm_platform_link_get_ifindex (NM_PLATFORM_GET, DEVICE_NAME), NULL));
diff --git a/src/platform/tests/test-link.c b/src/platform/tests/test-link.c
index 9da6bff7fa..3446983b68 100644
--- a/src/platform/tests/test-link.c
+++ b/src/platform/tests/test-link.c
@@ -61,8 +61,8 @@ test_bogus(void)
g_assert (!nm_platform_link_supports_vlans (NM_PLATFORM_GET, BOGUS_IFINDEX));
g_assert (!nm_platform_link_get_lnk_vlan (NM_PLATFORM_GET, BOGUS_IFINDEX, NULL));
- g_assert (!nm_platform_vlan_set_ingress_map (NM_PLATFORM_GET, BOGUS_IFINDEX, 0, 0));
- g_assert (!nm_platform_vlan_set_egress_map (NM_PLATFORM_GET, BOGUS_IFINDEX, 0, 0));
+ g_assert (!nm_platform_link_vlan_set_ingress_map (NM_PLATFORM_GET, BOGUS_IFINDEX, 0, 0));
+ g_assert (!nm_platform_link_vlan_set_egress_map (NM_PLATFORM_GET, BOGUS_IFINDEX, 0, 0));
}
static void
@@ -83,15 +83,15 @@ software_add (NMLinkType link_type, const char *name)
{
switch (link_type) {
case NM_LINK_TYPE_DUMMY:
- return nm_platform_dummy_add (NM_PLATFORM_GET, name, NULL) == NM_PLATFORM_ERROR_SUCCESS;
+ return nm_platform_link_dummy_add (NM_PLATFORM_GET, name, NULL) == NM_PLATFORM_ERROR_SUCCESS;
case NM_LINK_TYPE_BRIDGE:
- return nm_platform_bridge_add (NM_PLATFORM_GET, name, NULL, 0, NULL) == NM_PLATFORM_ERROR_SUCCESS;
+ return nm_platform_link_bridge_add (NM_PLATFORM_GET, name, NULL, 0, NULL) == NM_PLATFORM_ERROR_SUCCESS;
case NM_LINK_TYPE_BOND:
{
gboolean bond0_exists = !!nm_platform_link_get_by_ifname (NM_PLATFORM_GET, "bond0");
NMPlatformError plerr;
- plerr = nm_platform_bond_add (NM_PLATFORM_GET, name, NULL);
+ plerr = nm_platform_link_bond_add (NM_PLATFORM_GET, name, NULL);
/* Check that bond0 is *not* automatically created. */
if (!bond0_exists)
@@ -99,14 +99,14 @@ software_add (NMLinkType link_type, const char *name)
return plerr == NM_PLATFORM_ERROR_SUCCESS;
}
case NM_LINK_TYPE_TEAM:
- return nm_platform_team_add (NM_PLATFORM_GET, name, NULL) == NM_PLATFORM_ERROR_SUCCESS;
+ return nm_platform_link_team_add (NM_PLATFORM_GET, name, NULL) == NM_PLATFORM_ERROR_SUCCESS;
case NM_LINK_TYPE_VLAN: {
SignalData *parent_added;
SignalData *parent_changed;
/* Don't call link_callback for the bridge interface */
parent_added = add_signal_ifname (NM_PLATFORM_SIGNAL_LINK_CHANGED, NM_PLATFORM_SIGNAL_ADDED, link_callback, PARENT_NAME);
- if (nm_platform_bridge_add (NM_PLATFORM_GET, PARENT_NAME, NULL, 0, NULL) == NM_PLATFORM_ERROR_SUCCESS)
+ if (nm_platform_link_bridge_add (NM_PLATFORM_GET, PARENT_NAME, NULL, 0, NULL) == NM_PLATFORM_ERROR_SUCCESS)
accept_signal (parent_added);
free_signal (parent_added);
@@ -123,7 +123,7 @@ software_add (NMLinkType link_type, const char *name)
accept_signal (parent_changed);
free_signal (parent_changed);
- return nm_platform_vlan_add (NM_PLATFORM_GET, name, parent_ifindex, VLAN_ID, 0, NULL) == NM_PLATFORM_ERROR_SUCCESS;
+ return nm_platform_link_vlan_add (NM_PLATFORM_GET, name, parent_ifindex, VLAN_ID, 0, NULL) == NM_PLATFORM_ERROR_SUCCESS;
}
}
default:
@@ -274,8 +274,8 @@ test_slave (int master, int type, SignalData *master_changed)
switch (type) {
case NM_LINK_TYPE_BRIDGE:
if (nmtstp_is_sysfs_writable ()) {
- g_assert (nm_platform_slave_set_option (NM_PLATFORM_GET, ifindex, "priority", "789"));
- value = nm_platform_slave_get_option (NM_PLATFORM_GET, ifindex, "priority");
+ g_assert (nm_platform_sysctl_slave_set_option (NM_PLATFORM_GET, ifindex, "priority", "789"));
+ value = nm_platform_sysctl_slave_get_option (NM_PLATFORM_GET, ifindex, "priority");
g_assert_cmpstr (value, ==, "789");
g_free (value);
}
@@ -367,16 +367,16 @@ test_software (NMLinkType link_type, const char *link_typename)
switch (link_type) {
case NM_LINK_TYPE_BRIDGE:
if (nmtstp_is_sysfs_writable ()) {
- g_assert (nm_platform_master_set_option (NM_PLATFORM_GET, ifindex, "forward_delay", "789"));
- value = nm_platform_master_get_option (NM_PLATFORM_GET, ifindex, "forward_delay");
+ g_assert (nm_platform_sysctl_master_set_option (NM_PLATFORM_GET, ifindex, "forward_delay", "789"));
+ value = nm_platform_sysctl_master_get_option (NM_PLATFORM_GET, ifindex, "forward_delay");
g_assert_cmpstr (value, ==, "789");
g_free (value);
}
break;
case NM_LINK_TYPE_BOND:
if (nmtstp_is_sysfs_writable ()) {
- g_assert (nm_platform_master_set_option (NM_PLATFORM_GET, ifindex, "mode", "active-backup"));
- value = nm_platform_master_get_option (NM_PLATFORM_GET, ifindex, "mode");
+ g_assert (nm_platform_sysctl_master_set_option (NM_PLATFORM_GET, ifindex, "mode", "active-backup"));
+ value = nm_platform_sysctl_master_get_option (NM_PLATFORM_GET, ifindex, "mode");
/* When reading back, the output looks slightly different. */
g_assert (g_str_has_prefix (value, "active-backup"));
g_free (value);
@@ -462,11 +462,13 @@ test_bridge_addr (void)
{
char addr[ETH_ALEN];
NMPlatformLink link;
- const NMPlatformLink *plink;
+ const NMPlatformLink *plink = NULL;
nm_utils_hwaddr_aton ("de:ad:be:ef:00:11", addr, sizeof (addr));
- g_assert_cmpint (nm_platform_bridge_add (NM_PLATFORM_GET, DEVICE_NAME, addr, sizeof (addr), &link), ==, NM_PLATFORM_ERROR_SUCCESS);
+ g_assert_cmpint (nm_platform_link_bridge_add (NM_PLATFORM_GET, DEVICE_NAME, addr, sizeof (addr), &plink), ==, NM_PLATFORM_ERROR_SUCCESS);
+ g_assert (plink);
+ link = *plink;
g_assert_cmpstr (link.name, ==, DEVICE_NAME);
g_assert_cmpint (link.addr.len, ==, sizeof (addr));
@@ -516,11 +518,11 @@ test_internal (void)
g_assert (!nm_platform_link_get_ifindex (NM_PLATFORM_GET, DEVICE_NAME));
/* Add device */
- g_assert (nm_platform_dummy_add (NM_PLATFORM_GET, DEVICE_NAME, NULL) == NM_PLATFORM_ERROR_SUCCESS);
+ g_assert (nm_platform_link_dummy_add (NM_PLATFORM_GET, DEVICE_NAME, NULL) == NM_PLATFORM_ERROR_SUCCESS);
accept_signal (link_added);
/* Try to add again */
- g_assert (nm_platform_dummy_add (NM_PLATFORM_GET, DEVICE_NAME, NULL) == NM_PLATFORM_ERROR_EXISTS);
+ g_assert (nm_platform_link_dummy_add (NM_PLATFORM_GET, DEVICE_NAME, NULL) == NM_PLATFORM_ERROR_EXISTS);
/* Check device index, name and type */
ifindex = nm_platform_link_get_ifindex (NM_PLATFORM_GET, DEVICE_NAME);
@@ -1090,58 +1092,58 @@ test_vlan_set_xgress (void)
/* ingress-qos-map */
- g_assert (nm_platform_vlan_set_ingress_map (NM_PLATFORM_GET, ifindex, 4, 5));
+ g_assert (nm_platform_link_vlan_set_ingress_map (NM_PLATFORM_GET, ifindex, 4, 5));
_assert_ingress_qos_mappings (ifindex, 1,
4, 5);
- g_assert (nm_platform_vlan_set_ingress_map (NM_PLATFORM_GET, ifindex, 3, 7));
+ g_assert (nm_platform_link_vlan_set_ingress_map (NM_PLATFORM_GET, ifindex, 3, 7));
_assert_ingress_qos_mappings (ifindex, 2,
3, 7,
4, 5);
- g_assert (nm_platform_vlan_set_ingress_map (NM_PLATFORM_GET, ifindex, 3, 8));
+ g_assert (nm_platform_link_vlan_set_ingress_map (NM_PLATFORM_GET, ifindex, 3, 8));
_assert_ingress_qos_mappings (ifindex, 2,
3, 8,
4, 5);
- g_assert (nm_platform_vlan_set_ingress_map (NM_PLATFORM_GET, ifindex, 0, 4));
+ g_assert (nm_platform_link_vlan_set_ingress_map (NM_PLATFORM_GET, ifindex, 0, 4));
_assert_ingress_qos_mappings (ifindex, 3,
0, 4,
3, 8,
4, 5);
- g_assert (nm_platform_vlan_set_ingress_map (NM_PLATFORM_GET, ifindex, 0, G_MAXUINT32));
+ g_assert (nm_platform_link_vlan_set_ingress_map (NM_PLATFORM_GET, ifindex, 0, G_MAXUINT32));
_assert_ingress_qos_mappings (ifindex, 3,
0, G_MAXUINT32,
3, 8,
4, 5);
- g_assert (nm_platform_vlan_set_ingress_map (NM_PLATFORM_GET, ifindex, 0, G_MAXUINT32 - 1));
+ g_assert (nm_platform_link_vlan_set_ingress_map (NM_PLATFORM_GET, ifindex, 0, G_MAXUINT32 - 1));
_assert_ingress_qos_mappings (ifindex, 3,
0, G_MAXUINT32 - 1,
3, 8,
4, 5);
- g_assert (nm_platform_vlan_set_ingress_map (NM_PLATFORM_GET, ifindex, 0, 5));
+ g_assert (nm_platform_link_vlan_set_ingress_map (NM_PLATFORM_GET, ifindex, 0, 5));
_assert_ingress_qos_mappings (ifindex, 3,
0, 5,
3, 8,
4, 5);
- g_assert (nm_platform_vlan_set_ingress_map (NM_PLATFORM_GET, ifindex, 0, 5));
+ g_assert (nm_platform_link_vlan_set_ingress_map (NM_PLATFORM_GET, ifindex, 0, 5));
_assert_ingress_qos_mappings (ifindex, 3,
0, 5,
3, 8,
4, 5);
/* Set invalid values: */
- g_assert (nm_platform_vlan_set_ingress_map (NM_PLATFORM_GET, ifindex, 8, 3));
+ g_assert (nm_platform_link_vlan_set_ingress_map (NM_PLATFORM_GET, ifindex, 8, 3));
_assert_ingress_qos_mappings (ifindex, 3,
0, 5,
3, 8,
4, 5);
- g_assert (nm_platform_vlan_set_ingress_map (NM_PLATFORM_GET, ifindex, 9, 4));
+ g_assert (nm_platform_link_vlan_set_ingress_map (NM_PLATFORM_GET, ifindex, 9, 4));
_assert_ingress_qos_mappings (ifindex, 3,
0, 5,
3, 8,
@@ -1149,36 +1151,36 @@ test_vlan_set_xgress (void)
/* egress-qos-map */
- g_assert (nm_platform_vlan_set_egress_map (NM_PLATFORM_GET, ifindex, 7, 3));
+ g_assert (nm_platform_link_vlan_set_egress_map (NM_PLATFORM_GET, ifindex, 7, 3));
_assert_egress_qos_mappings (ifindex, 1,
7, 3);
- g_assert (nm_platform_vlan_set_egress_map (NM_PLATFORM_GET, ifindex, 8, 4));
+ g_assert (nm_platform_link_vlan_set_egress_map (NM_PLATFORM_GET, ifindex, 8, 4));
_assert_egress_qos_mappings (ifindex, 2,
7, 3,
8, 4);
- g_assert (nm_platform_vlan_set_egress_map (NM_PLATFORM_GET, ifindex, 0, 4));
+ g_assert (nm_platform_link_vlan_set_egress_map (NM_PLATFORM_GET, ifindex, 0, 4));
_assert_egress_qos_mappings (ifindex, 3,
0, 4,
7, 3,
8, 4);
- g_assert (nm_platform_vlan_set_egress_map (NM_PLATFORM_GET, ifindex, 1, 4));
+ g_assert (nm_platform_link_vlan_set_egress_map (NM_PLATFORM_GET, ifindex, 1, 4));
_assert_egress_qos_mappings (ifindex, 4,
0, 4,
1, 4,
7, 3,
8, 4);
- g_assert (nm_platform_vlan_set_egress_map (NM_PLATFORM_GET, ifindex, 1, 5));
+ g_assert (nm_platform_link_vlan_set_egress_map (NM_PLATFORM_GET, ifindex, 1, 5));
_assert_egress_qos_mappings (ifindex, 4,
0, 4,
1, 5,
7, 3,
8, 4);
- g_assert (nm_platform_vlan_set_egress_map (NM_PLATFORM_GET, ifindex, 9, 5));
+ g_assert (nm_platform_link_vlan_set_egress_map (NM_PLATFORM_GET, ifindex, 9, 5));
_assert_egress_qos_mappings (ifindex, 5,
0, 4,
1, 5,
@@ -1186,7 +1188,7 @@ test_vlan_set_xgress (void)
8, 4,
9, 5);
- g_assert (nm_platform_vlan_set_egress_map (NM_PLATFORM_GET, ifindex, 8, 5));
+ g_assert (nm_platform_link_vlan_set_egress_map (NM_PLATFORM_GET, ifindex, 8, 5));
_assert_egress_qos_mappings (ifindex, 5,
0, 4,
1, 5,
@@ -1194,27 +1196,27 @@ test_vlan_set_xgress (void)
8, 5,
9, 5);
- g_assert (nm_platform_vlan_set_egress_map (NM_PLATFORM_GET, ifindex, 8, 0));
+ g_assert (nm_platform_link_vlan_set_egress_map (NM_PLATFORM_GET, ifindex, 8, 0));
_assert_egress_qos_mappings (ifindex, 4,
0, 4,
1, 5,
7, 3,
9, 5);
- g_assert (nm_platform_vlan_set_egress_map (NM_PLATFORM_GET, ifindex, 0, 0));
+ g_assert (nm_platform_link_vlan_set_egress_map (NM_PLATFORM_GET, ifindex, 0, 0));
_assert_egress_qos_mappings (ifindex, 3,
1, 5,
7, 3,
9, 5);
- g_assert (nm_platform_vlan_set_egress_map (NM_PLATFORM_GET, ifindex, 100, 4));
+ g_assert (nm_platform_link_vlan_set_egress_map (NM_PLATFORM_GET, ifindex, 100, 4));
_assert_egress_qos_mappings (ifindex, 4,
1, 5,
7, 3,
9, 5,
100, 4);
- g_assert (nm_platform_vlan_set_egress_map (NM_PLATFORM_GET, ifindex, G_MAXUINT32, 4));
+ g_assert (nm_platform_link_vlan_set_egress_map (NM_PLATFORM_GET, ifindex, G_MAXUINT32, 4));
_assert_egress_qos_mappings (ifindex, 5,
1, 5,
7, 3,
@@ -1222,7 +1224,7 @@ test_vlan_set_xgress (void)
100, 4,
G_MAXUINT32, 4);
- g_assert (nm_platform_vlan_set_egress_map (NM_PLATFORM_GET, ifindex, G_MAXUINT32, 8));
+ g_assert (nm_platform_link_vlan_set_egress_map (NM_PLATFORM_GET, ifindex, G_MAXUINT32, 8));
_assert_egress_qos_mappings (ifindex, 5,
1, 5,
7, 3,
@@ -1230,20 +1232,20 @@ test_vlan_set_xgress (void)
100, 4,
G_MAXUINT32, 4);
- g_assert (nm_platform_vlan_set_egress_map (NM_PLATFORM_GET, ifindex, G_MAXUINT32, 0));
+ g_assert (nm_platform_link_vlan_set_egress_map (NM_PLATFORM_GET, ifindex, G_MAXUINT32, 0));
_assert_egress_qos_mappings (ifindex, 4,
1, 5,
7, 3,
9, 5,
100, 4);
- g_assert (nm_platform_vlan_set_egress_map (NM_PLATFORM_GET, ifindex, 100, 0));
+ g_assert (nm_platform_link_vlan_set_egress_map (NM_PLATFORM_GET, ifindex, 100, 0));
_assert_egress_qos_mappings (ifindex, 3,
1, 5,
7, 3,
9, 5);
- g_assert (nm_platform_vlan_set_egress_map (NM_PLATFORM_GET, ifindex, 1, 0));
+ g_assert (nm_platform_link_vlan_set_egress_map (NM_PLATFORM_GET, ifindex, 1, 0));
_assert_egress_qos_mappings (ifindex, 2,
7, 3,
9, 5);
@@ -1557,11 +1559,11 @@ test_nl_bugs_veth (void)
ifindex_veth0 = nmtstp_assert_wait_for_link (IFACE_VETH0, NM_LINK_TYPE_VETH, 100)->ifindex;
ifindex_veth1 = nmtstp_assert_wait_for_link (IFACE_VETH1, NM_LINK_TYPE_VETH, 100)->ifindex;
- /* assert that nm_platform_veth_get_properties() returns the expected peer ifindexes. */
- g_assert (nm_platform_veth_get_properties (NM_PLATFORM_GET, ifindex_veth0, &i));
+ /* assert that nm_platform_link_veth_get_properties() returns the expected peer ifindexes. */
+ g_assert (nm_platform_link_veth_get_properties (NM_PLATFORM_GET, ifindex_veth0, &i));
g_assert_cmpint (i, ==, ifindex_veth1);
- g_assert (nm_platform_veth_get_properties (NM_PLATFORM_GET, ifindex_veth1, &i));
+ g_assert (nm_platform_link_veth_get_properties (NM_PLATFORM_GET, ifindex_veth1, &i));
g_assert_cmpint (i, ==, ifindex_veth0);
/* assert that NMPlatformLink.parent is the peer-ifindex. */
diff --git a/src/platform/tests/test-route.c b/src/platform/tests/test-route.c
index 0ceac56374..f7611f97dc 100644
--- a/src/platform/tests/test-route.c
+++ b/src/platform/tests/test-route.c
@@ -295,7 +295,7 @@ setup_tests (void)
nm_platform_link_delete (NM_PLATFORM_GET, nm_platform_link_get_ifindex (NM_PLATFORM_GET, DEVICE_NAME));
g_assert (!nm_platform_link_get_by_ifname (NM_PLATFORM_GET, DEVICE_NAME));
- g_assert (nm_platform_dummy_add (NM_PLATFORM_GET, DEVICE_NAME, NULL) == NM_PLATFORM_ERROR_SUCCESS);
+ g_assert (nm_platform_link_dummy_add (NM_PLATFORM_GET, DEVICE_NAME, NULL) == NM_PLATFORM_ERROR_SUCCESS);
accept_signal (link_added);
free_signal (link_added);
diff --git a/src/tests/test-route-manager.c b/src/tests/test-route-manager.c
index eba7d9ef77..347c122c36 100644
--- a/src/tests/test-route-manager.c
+++ b/src/tests/test-route-manager.c
@@ -876,7 +876,7 @@ fixture_setup (test_fixture *fixture, gconstpointer user_data)
"nm-test-device0");
nm_platform_link_delete (NM_PLATFORM_GET, nm_platform_link_get_ifindex (NM_PLATFORM_GET, "nm-test-device0"));
g_assert (!nm_platform_link_get_by_ifname (NM_PLATFORM_GET, "nm-test-device0"));
- g_assert (nm_platform_dummy_add (NM_PLATFORM_GET, "nm-test-device0", NULL) == NM_PLATFORM_ERROR_SUCCESS);
+ g_assert (nm_platform_link_dummy_add (NM_PLATFORM_GET, "nm-test-device0", NULL) == NM_PLATFORM_ERROR_SUCCESS);
accept_signal (link_added);
free_signal (link_added);
fixture->ifindex0 = nm_platform_link_get_ifindex (NM_PLATFORM_GET, "nm-test-device0");
@@ -888,7 +888,7 @@ fixture_setup (test_fixture *fixture, gconstpointer user_data)
"nm-test-device1");
nm_platform_link_delete (NM_PLATFORM_GET, nm_platform_link_get_ifindex (NM_PLATFORM_GET, "nm-test-device1"));
g_assert (!nm_platform_link_get_by_ifname (NM_PLATFORM_GET, "nm-test-device1"));
- g_assert (nm_platform_dummy_add (NM_PLATFORM_GET, "nm-test-device1", NULL) == NM_PLATFORM_ERROR_SUCCESS);
+ g_assert (nm_platform_link_dummy_add (NM_PLATFORM_GET, "nm-test-device1", NULL) == NM_PLATFORM_ERROR_SUCCESS);
accept_signal (link_added);
free_signal (link_added);
fixture->ifindex1 = nm_platform_link_get_ifindex (NM_PLATFORM_GET, "nm-test-device1");