link->stacked_netdevs_created = false;
r = link_queue_request_full(link, REQUEST_TYPE_NETDEV_STACKED,
- netdev_ref(netdev), (mfree_func_t) netdev_unref,
+ netdev, (mfree_func_t) netdev_unref,
trivial_hash_func, trivial_compare_func,
stacked_netdev_process_request,
&link->create_stacked_netdev_messages,
if (r < 0)
return log_link_error_errno(link, r, "Failed to request stacked netdev '%s': %m",
netdev->ifname);
+ if (r == 0)
+ return 0;
+ netdev_ref(netdev);
log_link_debug(link, "Requested stacked netdev '%s'", netdev->ifname);
- return 0;
+ return 1;
}
static int independent_netdev_process_request(Request *req, Link *link, void *userdata) {
.link = link_ref(link), /* link may be NULL, but link_ref() handles it gracefully. */
.type = type,
.userdata = userdata,
- .free_func = free_func,
.hash_func = hash_func,
.compare_func = compare_func,
.process = process,
return r;
req->manager = manager;
+ req->free_func = free_func;
req->counter = counter;
if (req->counter)
(*req->counter)++;