1
1
mirror of https://github.com/systemd/systemd-stable.git synced 2024-12-27 03:21:32 +03:00

network: introduce {address,route}_remove_and_drop()

Preparation for later commits.
This commit is contained in:
Yu Watanabe 2022-10-03 12:39:56 +09:00
parent a115c60e0d
commit d4b7631468
4 changed files with 29 additions and 0 deletions

View File

@ -765,6 +765,18 @@ int address_remove(Address *address) {
return 0; return 0;
} }
int address_remove_and_drop(Address *address) {
if (!address)
return 0;
address_cancel_request(address);
if (address_exists(address))
return address_remove(address);
return address_drop(address);
}
bool link_address_is_dynamic(const Link *link, const Address *address) { bool link_address_is_dynamic(const Link *link, const Address *address) {
Route *route; Route *route;

View File

@ -78,6 +78,7 @@ Address* address_free(Address *address);
int address_get(Link *link, const Address *in, Address **ret); int address_get(Link *link, const Address *in, Address **ret);
int address_configure_handler_internal(sd_netlink *rtnl, sd_netlink_message *m, Link *link, const char *error_msg); int address_configure_handler_internal(sd_netlink *rtnl, sd_netlink_message *m, Link *link, const char *error_msg);
int address_remove(Address *address); int address_remove(Address *address);
int address_remove_and_drop(Address *address);
int address_dup(const Address *src, Address **ret); int address_dup(const Address *src, Address **ret);
bool address_is_ready(const Address *a); bool address_is_ready(const Address *a);
void address_set_broadcast(Address *a, Link *link); void address_set_broadcast(Address *a, Link *link);

View File

@ -781,6 +781,21 @@ int route_remove(Route *route) {
return 0; return 0;
} }
int route_remove_and_drop(Route *route) {
if (!route)
return 0;
route_cancel_request(route, NULL);
if (route_exists(route))
return route_remove(route);
if (route->state == 0)
route_free(route);
return 0;
}
static void manager_mark_routes(Manager *manager, bool foreign, const Link *except) { static void manager_mark_routes(Manager *manager, bool foreign, const Link *except) {
Route *route; Route *route;
Link *link; Link *link;

View File

@ -85,6 +85,7 @@ int route_dup(const Route *src, Route **ret);
int route_configure_handler_internal(sd_netlink *rtnl, sd_netlink_message *m, Link *link, const char *error_msg); int route_configure_handler_internal(sd_netlink *rtnl, sd_netlink_message *m, Link *link, const char *error_msg);
int route_remove(Route *route); int route_remove(Route *route);
int route_remove_and_drop(Route *route);
int route_get(Manager *manager, Link *link, const Route *in, Route **ret); int route_get(Manager *manager, Link *link, const Route *in, Route **ret);