return 0;
}
-int link_route_remove_handler_internal(sd_netlink *rtnl, sd_netlink_message *m, Link *link, const char *error_msg) {
+static int link_route_remove_handler(sd_netlink *rtnl, sd_netlink_message *m, Link *link) {
int r;
assert(m);
assert(link);
assert(link->route_remove_messages > 0);
- assert(error_msg);
link->route_remove_messages--;
r = sd_netlink_message_get_errno(m);
if (r < 0 && r != -ESRCH)
- log_link_message_warning_errno(link, m, r, error_msg);
+ log_link_message_warning_errno(link, m, r, "Could not drop route, ignoring");
return 1;
}
-static int link_route_remove_handler(sd_netlink *rtnl, sd_netlink_message *m, Link *link) {
- return link_route_remove_handler_internal(rtnl, m, link, "Could not drop route, ignoring");
-}
-
static int manager_route_remove_handler(sd_netlink *rtnl, sd_netlink_message *m, Manager *manager) {
int r;
return 1;
}
-int route_remove(
- const Route *route,
- Manager *manager,
- Link *link,
- link_netlink_message_handler_t callback) {
-
+int route_remove(const Route *route, Manager *manager, Link *link) {
_cleanup_(sd_netlink_message_unrefp) sd_netlink_message *req = NULL;
unsigned char type;
int r;
if (link) {
r = netlink_call_async(manager->rtnl, NULL, req,
- callback ?: link_route_remove_handler,
+ link_route_remove_handler,
link_netlink_destroy_callback, link);
if (r < 0)
return log_link_error_errno(link, r, "Could not send rtnetlink message: %m");
/* The existing links do not have the route. Let's drop this now. It may be
* re-configured later. */
- k = route_remove(route, manager, NULL, NULL);
+ k = route_remove(route, manager, NULL);
if (k < 0 && r >= 0)
r = k;
if (link_has_static_route(link, route))
k = route_add(NULL, link, route, NULL, NULL, NULL);
else
- k = route_remove(route, NULL, link, NULL);
+ k = route_remove(route, NULL, link);
if (k < 0 && r >= 0)
r = k;
}
if (route->protocol == RTPROT_KERNEL)
continue;
- k = route_remove(route, NULL, link, NULL);
+ k = route_remove(route, NULL, link);
if (k < 0 && r >= 0)
r = k;
}
assert(route);
- r = route_remove(route, route->manager, route->link, NULL);
+ r = route_remove(route, route->manager, route->link);
if (r < 0) {
log_link_warning_errno(route->link, r, "Could not remove route: %m");
route_free(route);