network: make address_configure() and friends take Request object

This should not change any behavior.
Just a preparation for a later commit which introduces
request_call_netlink_async().
This commit is contained in:
Yu Watanabe
2022-03-11 10:40:59 +09:00
parent f1eef3675c
commit 54ff39f7ae
11 changed files with 48 additions and 74 deletions

View File

@@ -578,14 +578,14 @@ static int independent_netdev_create(NetDev *netdev) {
return 0;
}
static int stacked_netdev_create(NetDev *netdev, Link *link, link_netlink_message_handler_t callback) {
static int stacked_netdev_create(NetDev *netdev, Link *link, Request *req) {
_cleanup_(sd_netlink_message_unrefp) sd_netlink_message *m = NULL;
int r;
assert(netdev);
assert(netdev->manager);
assert(link);
assert(callback);
assert(req);
r = sd_rtnl_message_new_link(netdev->manager->rtnl, &m, RTM_NEWLINK, 0);
if (r < 0)
@@ -595,7 +595,7 @@ static int stacked_netdev_create(NetDev *netdev, Link *link, link_netlink_messag
if (r < 0)
return r;
r = netlink_call_async(netdev->manager->rtnl, NULL, m, callback,
r = netlink_call_async(netdev->manager->rtnl, NULL, m, req->netlink_handler,
link_netlink_destroy_callback, link);
if (r < 0)
return r;
@@ -639,7 +639,6 @@ int request_process_stacked_netdev(Request *req) {
assert(req);
assert(req->type == REQUEST_TYPE_NETDEV_STACKED);
assert(req->netlink_handler);
netdev = ASSERT_PTR(req->netdev);
link = ASSERT_PTR(req->link);
@@ -648,7 +647,7 @@ int request_process_stacked_netdev(Request *req) {
if (r <= 0)
return r;
r = stacked_netdev_create(netdev, link, req->netlink_handler);
r = stacked_netdev_create(netdev, link, req);
if (r < 0)
return log_netdev_warning_errno(netdev, r, "Failed to create netdev: %m");

View File

@@ -95,7 +95,7 @@ static int address_label_configure_handler(sd_netlink *rtnl, sd_netlink_message
return 1;
}
static int address_label_configure(AddressLabel *label, Link *link, link_netlink_message_handler_t callback) {
static int address_label_configure(AddressLabel *label, Link *link, Request *req) {
_cleanup_(sd_netlink_message_unrefp) sd_netlink_message *m = NULL;
int r;
@@ -104,7 +104,7 @@ static int address_label_configure(AddressLabel *label, Link *link, link_netlink
assert(link->ifindex > 0);
assert(link->manager);
assert(link->manager->rtnl);
assert(callback);
assert(req);
r = sd_rtnl_message_new_addrlabel(link->manager->rtnl, &m, RTM_NEWADDRLABEL,
link->ifindex, AF_INET6);
@@ -123,7 +123,7 @@ static int address_label_configure(AddressLabel *label, Link *link, link_netlink
if (r < 0)
return r;
r = netlink_call_async(link->manager->rtnl, NULL, m, callback,
r = netlink_call_async(link->manager->rtnl, NULL, m, req->netlink_handler,
link_netlink_destroy_callback, link);
if (r < 0)
return r;
@@ -145,7 +145,7 @@ int request_process_address_label(Request *req) {
if (!link_is_ready_to_configure(link, false))
return 0;
r = address_label_configure(req->label, link, req->netlink_handler);
r = address_label_configure(req->label, link, req);
if (r < 0)
return log_link_warning_errno(link, r, "Failed to configure address label: %m");

View File

@@ -1036,11 +1036,7 @@ int address_configure_handler_internal(sd_netlink *rtnl, sd_netlink_message *m,
return 1;
}
static int address_configure(
const Address *address,
Link *link,
link_netlink_message_handler_t callback) {
static int address_configure(const Address *address, Link *link, Request *req) {
_cleanup_(sd_netlink_message_unrefp) sd_netlink_message *m = NULL;
int r;
@@ -1050,7 +1046,7 @@ static int address_configure(
assert(link->ifindex > 0);
assert(link->manager);
assert(link->manager->rtnl);
assert(callback);
assert(req);
log_address_debug(address, "Configuring", link);
@@ -1091,7 +1087,7 @@ static int address_configure(
if (r < 0)
return r;
r = netlink_call_async(link->manager->rtnl, NULL, m, callback, 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;
@@ -1130,7 +1126,7 @@ int request_process_address(Request *req) {
if (!address_is_ready_to_configure(link, address))
return 0;
r = address_configure(address, link, req->netlink_handler);
r = address_configure(address, link, req);
if (r < 0)
return log_link_warning_errno(link, r, "Failed to configure address: %m");

View File

@@ -168,14 +168,14 @@ static int bridge_fdb_configure_message(const BridgeFDB *fdb, Link *link, sd_net
return 0;
}
static int bridge_fdb_configure(BridgeFDB *fdb, Link *link, link_netlink_message_handler_t callback) {
static int bridge_fdb_configure(BridgeFDB *fdb, Link *link, Request *req) {
_cleanup_(sd_netlink_message_unrefp) sd_netlink_message *m = NULL;
int r;
assert(fdb);
assert(link);
assert(link->manager);
assert(callback);
assert(req);
r = sd_rtnl_message_new_neigh(link->manager->rtnl, &m, RTM_NEWNEIGH, link->ifindex, AF_BRIDGE);
if (r < 0)
@@ -185,7 +185,7 @@ static int bridge_fdb_configure(BridgeFDB *fdb, Link *link, link_netlink_message
if (r < 0)
return r;
r = netlink_call_async(link->manager->rtnl, NULL, m, callback,
r = netlink_call_async(link->manager->rtnl, NULL, m, req->netlink_handler,
link_netlink_destroy_callback, link);
if (r < 0)
return r;
@@ -232,7 +232,7 @@ int request_process_bridge_fdb(Request *req) {
if (!bridge_fdb_is_ready_to_configure(fdb, link))
return 0;
r = bridge_fdb_configure(fdb, link, req->netlink_handler);
r = bridge_fdb_configure(fdb, link, req);
if (r < 0)
return log_link_warning_errno(link, r, "Failed to configure bridge FDB: %m");

View File

@@ -114,7 +114,7 @@ static int bridge_mdb_configure_handler(sd_netlink *rtnl, sd_netlink_message *m,
}
/* send a request to the kernel to add an MDB entry */
static int bridge_mdb_configure(BridgeMDB *mdb, Link *link, link_netlink_message_handler_t callback) {
static int bridge_mdb_configure(BridgeMDB *mdb, Link *link, Request *req) {
_cleanup_(sd_netlink_message_unrefp) sd_netlink_message *m = NULL;
struct br_mdb_entry entry;
int r;
@@ -122,7 +122,7 @@ static int bridge_mdb_configure(BridgeMDB *mdb, Link *link, link_netlink_message
assert(mdb);
assert(link);
assert(link->manager);
assert(callback);
assert(req);
if (DEBUG_LOGGING) {
_cleanup_free_ char *a = NULL;
@@ -164,7 +164,7 @@ static int bridge_mdb_configure(BridgeMDB *mdb, Link *link, link_netlink_message
if (r < 0)
return r;
r = netlink_call_async(link->manager->rtnl, NULL, m, callback,
r = netlink_call_async(link->manager->rtnl, NULL, m, req->netlink_handler,
link_netlink_destroy_callback, link);
if (r < 0)
return r;
@@ -217,7 +217,7 @@ int request_process_bridge_mdb(Request *req) {
if (!bridge_mdb_is_ready_to_configure(link))
return 0;
r = bridge_mdb_configure(req->mdb, link, req->netlink_handler);
r = bridge_mdb_configure(req->mdb, link, req);
if (r < 0)
return log_link_warning_errno(link, r, "Failed to configure bridge MDB: %m");

View File

@@ -48,11 +48,7 @@ static int ipv6_proxy_ndp_address_configure_handler(sd_netlink *rtnl, sd_netlink
}
/* send a request to the kernel to add an IPv6 Proxy entry to the neighbour table */
static int ipv6_proxy_ndp_address_configure(
const struct in6_addr *address,
Link *link,
link_netlink_message_handler_t callback) {
static int ipv6_proxy_ndp_address_configure(const struct in6_addr *address, Link *link, Request *req) {
_cleanup_(sd_netlink_message_unrefp) sd_netlink_message *m = NULL;
int r;
@@ -60,7 +56,7 @@ static int ipv6_proxy_ndp_address_configure(
assert(link);
assert(link->manager);
assert(link->manager->rtnl);
assert(callback);
assert(req);
/* create new netlink message */
r = sd_rtnl_message_new_neigh(link->manager->rtnl, &m, RTM_NEWNEIGH, link->ifindex, AF_INET6);
@@ -75,7 +71,7 @@ static int ipv6_proxy_ndp_address_configure(
if (r < 0)
return r;
r = netlink_call_async(link->manager->rtnl, NULL, m, callback,
r = netlink_call_async(link->manager->rtnl, NULL, m, req->netlink_handler,
link_netlink_destroy_callback, link);
if (r < 0)
return r;
@@ -96,7 +92,7 @@ int request_process_ipv6_proxy_ndp_address(Request *req) {
if (!link_is_ready_to_configure(link, false))
return 0;
r = ipv6_proxy_ndp_address_configure(req->ipv6_proxy_ndp, link, req->netlink_handler);
r = ipv6_proxy_ndp_address_configure(req->ipv6_proxy_ndp, link, req);
if (r < 0)
return log_link_warning_errno(link, r, "Failed to configure IPv6 proxy NDP address: %m");

View File

@@ -193,11 +193,7 @@ static int neighbor_configure_message(Neighbor *neighbor, Link *link, sd_netlink
return 0;
}
static int neighbor_configure(
Neighbor *neighbor,
Link *link,
link_netlink_message_handler_t callback) {
static int neighbor_configure(Neighbor *neighbor, Link *link, Request *req) {
_cleanup_(sd_netlink_message_unrefp) sd_netlink_message *m = NULL;
int r;
@@ -206,7 +202,7 @@ static int neighbor_configure(
assert(link->ifindex > 0);
assert(link->manager);
assert(link->manager->rtnl);
assert(callback);
assert(req);
log_neighbor_debug(neighbor, "Configuring", link);
@@ -219,7 +215,7 @@ static int neighbor_configure(
if (r < 0)
return r;
r = netlink_call_async(link->manager->rtnl, NULL, m, callback,
r = netlink_call_async(link->manager->rtnl, NULL, m, req->netlink_handler,
link_netlink_destroy_callback, link);
if (r < 0)
return r;
@@ -243,7 +239,7 @@ int request_process_neighbor(Request *req) {
if (!link_is_ready_to_configure(link, false))
return 0;
r = neighbor_configure(neighbor, link, req->netlink_handler);
r = neighbor_configure(neighbor, link, req);
if (r < 0)
return log_link_warning_errno(link, r, "Failed to configure neighbor: %m");

View File

@@ -425,11 +425,7 @@ static int nexthop_remove(NextHop *nexthop) {
return 0;
}
static int nexthop_configure(
NextHop *nexthop,
Link *link,
link_netlink_message_handler_t callback) {
static int nexthop_configure(NextHop *nexthop, Link *link, Request *req) {
_cleanup_(sd_netlink_message_unrefp) sd_netlink_message *m = NULL;
int r;
@@ -439,7 +435,7 @@ static int nexthop_configure(
assert(link->manager);
assert(link->manager->rtnl);
assert(link->ifindex > 0);
assert(callback);
assert(req);
log_nexthop_debug(nexthop, "Configuring", link);
@@ -489,7 +485,7 @@ static int nexthop_configure(
}
}
r = netlink_call_async(link->manager->rtnl, NULL, m, callback,
r = netlink_call_async(link->manager->rtnl, NULL, m, req->netlink_handler,
link_netlink_destroy_callback, link);
if (r < 0)
return r;
@@ -583,7 +579,7 @@ int request_process_nexthop(Request *req) {
if (!nexthop_is_ready_to_configure(link, nexthop))
return 0;
r = nexthop_configure(nexthop, link, req->netlink_handler);
r = nexthop_configure(nexthop, link, req);
if (r < 0)
return log_link_warning_errno(link, r, "Failed to configure nexthop");

View File

@@ -1154,11 +1154,7 @@ int route_configure_handler_internal(sd_netlink *rtnl, sd_netlink_message *m, Li
return 1;
}
static int route_configure(
const Route *route,
Link *link,
link_netlink_message_handler_t callback) {
static int route_configure(const Route *route, Link *link, Request *req) {
_cleanup_(sd_netlink_message_unrefp) sd_netlink_message *m = NULL;
int r;
@@ -1168,7 +1164,7 @@ static int route_configure(
assert(link->manager);
assert(link->manager->rtnl);
assert(link->ifindex > 0);
assert(callback);
assert(req);
log_route_debug(route, "Configuring", link, link->manager);
@@ -1250,7 +1246,7 @@ static int route_configure(
return r;
}
r = netlink_call_async(link->manager->rtnl, NULL, m, callback,
r = netlink_call_async(link->manager->rtnl, NULL, m, req->netlink_handler,
link_netlink_destroy_callback, link);
if (r < 0)
return r;
@@ -1373,7 +1369,7 @@ int request_process_route(Request *req) {
}
}
r = route_configure(route, link, req->netlink_handler);
r = route_configure(route, link, req);
if (r < 0)
return log_link_warning_errno(link, r, "Failed to configure route: %m");

View File

@@ -604,11 +604,7 @@ static int routing_policy_rule_remove(RoutingPolicyRule *rule) {
return 0;
}
static int routing_policy_rule_configure(
RoutingPolicyRule *rule,
Link *link,
link_netlink_message_handler_t callback) {
static int routing_policy_rule_configure(RoutingPolicyRule *rule, Link *link, Request *req) {
_cleanup_(sd_netlink_message_unrefp) sd_netlink_message *m = NULL;
int r;
@@ -618,7 +614,7 @@ static int routing_policy_rule_configure(
assert(link->ifindex > 0);
assert(link->manager);
assert(link->manager->rtnl);
assert(callback);
assert(req);
log_routing_policy_rule_debug(rule, "Configuring", link, link->manager);
@@ -630,7 +626,7 @@ static int routing_policy_rule_configure(
if (r < 0)
return r;
r = netlink_call_async(link->manager->rtnl, NULL, m, callback,
r = netlink_call_async(link->manager->rtnl, NULL, m, req->netlink_handler,
link_netlink_destroy_callback, link);
if (r < 0)
return r;
@@ -742,7 +738,7 @@ int request_process_routing_policy_rule(Request *req) {
if (!link_is_ready_to_configure(link, false))
return 0;
r = routing_policy_rule_configure(rule, link, req->netlink_handler);
r = routing_policy_rule_configure(rule, link, req);
if (r < 0)
return log_link_warning_errno(link, r, "Failed to configure routing policy rule: %m");

View File

@@ -1055,26 +1055,26 @@ static const char *up_or_down(bool up) {
return up ? "up" : "down";
}
static int link_up_or_down(Link *link, bool up, link_netlink_message_handler_t callback) {
_cleanup_(sd_netlink_message_unrefp) sd_netlink_message *req = NULL;
static int link_up_or_down(Link *link, bool up, Request *req) {
_cleanup_(sd_netlink_message_unrefp) sd_netlink_message *m = NULL;
int r;
assert(link);
assert(link->manager);
assert(link->manager->rtnl);
assert(callback);
assert(req);
log_link_debug(link, "Bringing link %s", up_or_down(up));
r = sd_rtnl_message_new_link(link->manager->rtnl, &req, RTM_SETLINK, link->ifindex);
r = sd_rtnl_message_new_link(link->manager->rtnl, &m, RTM_SETLINK, link->ifindex);
if (r < 0)
return r;
r = sd_rtnl_message_link_set_flags(req, up ? IFF_UP : 0, IFF_UP);
r = sd_rtnl_message_link_set_flags(m, up ? IFF_UP : 0, IFF_UP);
if (r < 0)
return r;
r = netlink_call_async(link->manager->rtnl, NULL, req, callback,
r = netlink_call_async(link->manager->rtnl, NULL, m, req->netlink_handler,
link_netlink_destroy_callback, link);
if (r < 0)
return r;
@@ -1104,7 +1104,6 @@ int request_process_activation(Request *req) {
assert(req);
assert(req->link);
assert(req->type == REQUEST_TYPE_ACTIVATE_LINK);
assert(req->netlink_handler);
link = req->link;
up = PTR_TO_INT(req->userdata);
@@ -1112,7 +1111,7 @@ int request_process_activation(Request *req) {
if (!link_is_ready_to_activate(link))
return 0;
r = link_up_or_down(link, up, req->netlink_handler);
r = link_up_or_down(link, up, req);
if (r < 0)
return log_link_warning_errno(link, r, "Failed to activate link: %m");
@@ -1207,7 +1206,7 @@ int request_process_link_up_or_down(Request *req) {
if (!link_is_ready_to_bring_up_or_down(link, up))
return 0;
r = link_up_or_down(link, up, req->netlink_handler);
r = link_up_or_down(link, up, req);
if (r < 0)
return log_link_warning_errno(link, r, "Failed to bring link %s: %m", up_or_down(up));