mirror of
https://github.com/morgan9e/systemd
synced 2026-04-15 00:47:10 +09:00
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:
@@ -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");
|
||||
|
||||
|
||||
@@ -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");
|
||||
|
||||
|
||||
@@ -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");
|
||||
|
||||
|
||||
@@ -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");
|
||||
|
||||
|
||||
@@ -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");
|
||||
|
||||
|
||||
@@ -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");
|
||||
|
||||
|
||||
@@ -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");
|
||||
|
||||
|
||||
@@ -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");
|
||||
|
||||
|
||||
@@ -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");
|
||||
|
||||
|
||||
@@ -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");
|
||||
|
||||
|
||||
@@ -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));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user