summaryrefslogtreecommitdiff
path: root/src/platform
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2017-11-29 13:10:39 +0100
committerLubomir Rintel <lkundrak@v3.sk>2017-12-11 10:30:26 +0100
commit7573594a2182d141e85b5fc1cb376b7e78a40853 (patch)
tree3d25bee7aef7e8f8258b468c2d41f07a1cb13971 /src/platform
parent44be0dfca7f1bc525bb56cbf36a6ed840ba42346 (diff)
downloadNetworkManager-7573594a2182d141e85b5fc1cb376b7e78a40853.tar.gz
platform: merge nm_platform_*_delete() delete functions
It only makes sense to call delete() with NMPObjects that we obtained from the platform cache. Otherwise, if we didn't get it from the cache in the first place, we wouldn't know what to delete. Hence, the input argument is (almost) always an NMPObject in the first place. That is different from add(), where we might create a new specific NMPlatform* instance on the stack. For add() it makes slightly more sense to have different functions depending on the type. For delete(), it doesn't.
Diffstat (limited to 'src/platform')
-rw-r--r--src/platform/nm-fake-platform.c4
-rw-r--r--src/platform/nm-linux-platform.c19
-rw-r--r--src/platform/nm-platform.c16
-rw-r--r--src/platform/nm-platform.h10
-rw-r--r--src/platform/tests/test-common.c4
-rw-r--r--src/platform/tests/test-route.c2
6 files changed, 30 insertions, 25 deletions
diff --git a/src/platform/nm-fake-platform.c b/src/platform/nm-fake-platform.c
index c76829a742..be43015281 100644
--- a/src/platform/nm-fake-platform.c
+++ b/src/platform/nm-fake-platform.c
@@ -1190,7 +1190,7 @@ ipx_route_delete (NMPlatform *platform,
}
static gboolean
-ip_route_delete (NMPlatform *platform, const NMPObject *obj)
+object_delete (NMPlatform *platform, const NMPObject *obj)
{
g_assert (NM_IS_FAKE_PLATFORM (platform));
g_assert (NM_IN_SET (NMP_OBJECT_GET_TYPE (obj), NMP_OBJECT_TYPE_IP4_ROUTE,
@@ -1462,5 +1462,5 @@ nm_fake_platform_class_init (NMFakePlatformClass *klass)
platform_class->ip6_address_delete = ip6_address_delete;
platform_class->ip_route_add = ip_route_add;
- platform_class->ip_route_delete = ip_route_delete;
+ platform_class->object_delete = object_delete;
}
diff --git a/src/platform/nm-linux-platform.c b/src/platform/nm-linux-platform.c
index a1fe17ef29..ab9957529a 100644
--- a/src/platform/nm-linux-platform.c
+++ b/src/platform/nm-linux-platform.c
@@ -6116,19 +6116,24 @@ ip_route_add (NMPlatform *platform,
}
static gboolean
-ip_route_delete (NMPlatform *platform,
- const NMPObject *obj)
+object_delete (NMPlatform *platform,
+ const NMPObject *obj)
{
nm_auto_nmpobj const NMPObject *obj_keep_alive = NULL;
nm_auto_nlmsg struct nl_msg *nlmsg = NULL;
- nm_assert (NM_IN_SET (NMP_OBJECT_GET_TYPE (obj), NMP_OBJECT_TYPE_IP4_ROUTE,
- NMP_OBJECT_TYPE_IP6_ROUTE));
-
if (!NMP_OBJECT_IS_STACKINIT (obj))
obj_keep_alive = nmp_object_ref (obj);
- nlmsg = _nl_msg_new_route (RTM_DELROUTE, 0, obj);
+ switch (NMP_OBJECT_GET_TYPE (obj)) {
+ case NMP_OBJECT_TYPE_IP4_ROUTE:
+ case NMP_OBJECT_TYPE_IP6_ROUTE:
+ nlmsg = _nl_msg_new_route (RTM_DELROUTE, 0, obj);
+ break;
+ default:
+ break;
+ }
+
if (!nlmsg)
g_return_val_if_reached (FALSE);
return do_delete_object (platform, obj, nlmsg);
@@ -6937,13 +6942,13 @@ nm_linux_platform_class_init (NMLinuxPlatformClass *klass)
platform_class->link_ipip_add = link_ipip_add;
platform_class->link_sit_add = link_sit_add;
+ platform_class->object_delete = object_delete;
platform_class->ip4_address_add = ip4_address_add;
platform_class->ip6_address_add = ip6_address_add;
platform_class->ip4_address_delete = ip4_address_delete;
platform_class->ip6_address_delete = ip6_address_delete;
platform_class->ip_route_add = ip_route_add;
- platform_class->ip_route_delete = ip_route_delete;
platform_class->ip_route_get = ip_route_get;
platform_class->check_kernel_support = check_kernel_support;
diff --git a/src/platform/nm-platform.c b/src/platform/nm-platform.c
index 25c20a2759..37610e8eae 100644
--- a/src/platform/nm-platform.c
+++ b/src/platform/nm-platform.c
@@ -3732,7 +3732,7 @@ nm_platform_ip_route_sync (NMPlatform *self,
/* we need to replace the existing route with a (slightly) differnt
* one. Delete it first. */
- if (!nm_platform_ip_route_delete (self, plat_o)) {
+ if (!nm_platform_object_delete (self, plat_o)) {
/* ignore error. */
}
}
@@ -3813,7 +3813,7 @@ nm_platform_ip_route_sync (NMPlatform *self,
prune_o))
continue;
- if (!nm_platform_ip_route_delete (self, prune_o)) {
+ if (!nm_platform_object_delete (self, prune_o)) {
/* ignore error... */
}
}
@@ -3991,8 +3991,8 @@ nm_platform_ip6_route_add (NMPlatform *self,
}
gboolean
-nm_platform_ip_route_delete (NMPlatform *self,
- const NMPObject *obj)
+nm_platform_object_delete (NMPlatform *self,
+ const NMPObject *obj)
{
_CHECK_SELF (self, klass, FALSE);
@@ -4000,11 +4000,11 @@ nm_platform_ip_route_delete (NMPlatform *self,
NMP_OBJECT_TYPE_IP6_ROUTE))
g_return_val_if_reached (FALSE);
- _LOGD ("route: delete IPv%c route %s",
- NMP_OBJECT_GET_TYPE (obj) == NMP_OBJECT_TYPE_IP4_ROUTE ? '4' : '6',
+ _LOGD ("%s: delete %s",
+ NMP_OBJECT_GET_CLASS (obj)->obj_type_name,
nmp_object_to_string (obj, NMP_OBJECT_TO_STRING_PUBLIC, NULL, 0));
- return klass->ip_route_delete (self, obj);
+ return klass->object_delete (self, obj);
}
/*****************************************************************************/
@@ -4115,7 +4115,7 @@ again:
_LOGT ("ip4-dev-route: delete %s",
nmp_object_to_string (p_obj, NMP_OBJECT_TO_STRING_PUBLIC, NULL, 0));
- nm_platform_ip_route_delete (self, p_obj);
+ nm_platform_object_delete (self, p_obj);
goto again;
}
diff --git a/src/platform/nm-platform.h b/src/platform/nm-platform.h
index bd2e4516fb..354cb79b76 100644
--- a/src/platform/nm-platform.h
+++ b/src/platform/nm-platform.h
@@ -15,7 +15,7 @@
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
- * Copyright (C) 2009 - 2010 Red Hat, Inc.
+ * Copyright (C) 2009 - 2017 Red Hat, Inc.
*/
#ifndef __NETWORKMANAGER_PLATFORM_H__
@@ -800,6 +800,8 @@ typedef struct {
gboolean (*mesh_set_channel) (NMPlatform *, int ifindex, guint32 channel);
gboolean (*mesh_set_ssid) (NMPlatform *, int ifindex, const guint8 *ssid, gsize len);
+ gboolean (*object_delete) (NMPlatform *, const NMPObject *obj);
+
gboolean (*ip4_address_add) (NMPlatform *,
int ifindex,
in_addr_t address,
@@ -824,8 +826,6 @@ typedef struct {
NMPNlmFlags flags,
int addr_family,
const NMPlatformIPRoute *route);
- gboolean (*ip_route_delete) (NMPlatform *, const NMPObject *obj);
-
NMPlatformError (*ip_route_get) (NMPlatform *self,
int addr_family,
gconstpointer address,
@@ -1189,6 +1189,8 @@ NMPlatformError nm_platform_link_sit_add (NMPlatform *self,
const NMPlatformIP6Address *nm_platform_ip6_address_get (NMPlatform *self, int ifindex, struct in6_addr address);
+gboolean nm_platform_object_delete (NMPlatform *self, const NMPObject *route);
+
gboolean nm_platform_ip4_address_add (NMPlatform *self,
int ifindex,
in_addr_t address,
@@ -1223,8 +1225,6 @@ NMPlatformError nm_platform_ip_route_add (NMPlatform *self,
NMPlatformError nm_platform_ip4_route_add (NMPlatform *self, NMPNlmFlags flags, const NMPlatformIP4Route *route);
NMPlatformError nm_platform_ip6_route_add (NMPlatform *self, NMPNlmFlags flags, const NMPlatformIP6Route *route);
-gboolean nm_platform_ip_route_delete (NMPlatform *self, const NMPObject *route);
-
GPtrArray *nm_platform_ip_route_get_prune_list (NMPlatform *self,
int addr_family,
int ifindex,
diff --git a/src/platform/tests/test-common.c b/src/platform/tests/test-common.c
index 33f8102325..df82e9163f 100644
--- a/src/platform/tests/test-common.c
+++ b/src/platform/tests/test-common.c
@@ -119,7 +119,7 @@ nmtstp_platform_ip4_route_delete (NMPlatform *platform, int ifindex, in_addr_t n
continue;
}
- return nm_platform_ip_route_delete (platform, NMP_OBJECT_UP_CAST (r));
+ return nm_platform_object_delete (platform, NMP_OBJECT_UP_CAST (r));
}
return TRUE;
@@ -145,7 +145,7 @@ nmtstp_platform_ip6_route_delete (NMPlatform *platform, int ifindex, struct in6_
continue;
}
- return nm_platform_ip_route_delete (platform, NMP_OBJECT_UP_CAST (r));
+ return nm_platform_object_delete (platform, NMP_OBJECT_UP_CAST (r));
}
return TRUE;
diff --git a/src/platform/tests/test-route.c b/src/platform/tests/test-route.c
index 44ee03bdfc..27c091ec06 100644
--- a/src/platform/tests/test-route.c
+++ b/src/platform/tests/test-route.c
@@ -793,7 +793,7 @@ again_find_idx:
order_len--;
r->ifindex = iface_data[idx].ifindex;
- g_assert (nm_platform_ip_route_delete (platform, &o));
+ g_assert (nm_platform_object_delete (platform, &o));
}
head_entry = nm_platform_lookup (platform,