REQUEST_TYPE_DHCP4_CLIENT,
REQUEST_TYPE_DHCP6_CLIENT,
REQUEST_TYPE_NDISC,
- REQUEST_TYPE_RADV,
- REQUEST_TYPE_TC_QDISC,
- REQUEST_TYPE_TC_CLASS) ||
+ REQUEST_TYPE_RADV) ||
netlink_handler);
req = new(Request, 1);
return 1;
}
-static int qdisc_configure(QDisc *qdisc, Link *link) {
+static int qdisc_configure(QDisc *qdisc, Link *link, Request *req) {
_cleanup_(sd_netlink_message_unrefp) sd_netlink_message *m = NULL;
int r;
assert(link->manager);
assert(link->manager->rtnl);
assert(link->ifindex > 0);
+ assert(req);
log_qdisc_debug(qdisc, link, "Configuring");
return r;
}
- r = netlink_call_async(link->manager->rtnl, NULL, m, qdisc_handler, link_netlink_destroy_callback, link);
+ r = netlink_call_async(link->manager->rtnl, NULL, m, req->netlink_handler, link_netlink_destroy_callback, link);
if (r < 0)
return r;
if (!qdisc_is_ready_to_configure(qdisc, link))
return 0;
- r = qdisc_configure(qdisc, link);
+ r = qdisc_configure(qdisc, link, req);
if (r < 0)
return log_link_warning_errno(link, r, "Failed to configure QDisc: %m");
log_qdisc_debug(existing, link, "Requesting");
r = link_queue_request(link, REQUEST_TYPE_TC_QDISC, existing, false,
- &link->tc_messages, NULL, NULL);
+ &link->tc_messages, qdisc_handler, NULL);
if (r < 0)
return log_link_warning_errno(link, r, "Failed to request QDisc: %m");
if (r == 0)
return 1;
}
-static int tclass_configure(TClass *tclass, Link *link) {
+static int tclass_configure(TClass *tclass, Link *link, Request *req) {
_cleanup_(sd_netlink_message_unrefp) sd_netlink_message *m = NULL;
int r;
assert(link->manager);
assert(link->manager->rtnl);
assert(link->ifindex > 0);
+ assert(req);
log_tclass_debug(tclass, link, "Configuring");
return r;
}
- r = netlink_call_async(link->manager->rtnl, NULL, m, tclass_handler, link_netlink_destroy_callback, link);
+ r = netlink_call_async(link->manager->rtnl, NULL, m, req->netlink_handler, link_netlink_destroy_callback, link);
if (r < 0)
return r;
if (!tclass_is_ready_to_configure(tclass, link))
return 0;
- r = tclass_configure(tclass, link);
+ r = tclass_configure(tclass, link, req);
if (r < 0)
return log_link_warning_errno(link, r, "Failed to configure TClass: %m");
log_tclass_debug(existing, link, "Requesting");
r = link_queue_request(link, REQUEST_TYPE_TC_CLASS, existing, false,
- &link->tc_messages, NULL, NULL);
+ &link->tc_messages, tclass_handler, NULL);
if (r < 0)
return log_link_warning_errno(link, r, "Failed to request TClass: %m");
if (r == 0)