network: introduce link_drop_routes()
This commit is contained in:
parent
779804dd60
commit
62f0ea5fae
|
@ -2637,7 +2637,6 @@ static int remove_static_address_handler(sd_netlink *rtnl, sd_netlink_message *m
|
|||
|
||||
static int link_drop_config(Link *link) {
|
||||
Address *address, *pool_address;
|
||||
Route *route;
|
||||
int r;
|
||||
|
||||
SET_FOREACH(address, link->addresses) {
|
||||
|
@ -2664,15 +2663,9 @@ static int link_drop_config(Link *link) {
|
|||
if (r < 0)
|
||||
return r;
|
||||
|
||||
SET_FOREACH(route, link->routes) {
|
||||
/* do not touch routes managed by the kernel */
|
||||
if (route->protocol == RTPROT_KERNEL)
|
||||
continue;
|
||||
|
||||
r = route_remove(route, link, NULL);
|
||||
if (r < 0)
|
||||
return r;
|
||||
}
|
||||
r = link_drop_routes(link);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
ndisc_flush(link);
|
||||
|
||||
|
|
|
@ -566,6 +566,25 @@ int link_drop_foreign_routes(Link *link) {
|
|||
return r;
|
||||
}
|
||||
|
||||
int link_drop_routes(Link *link) {
|
||||
Route *route;
|
||||
int k, r = 0;
|
||||
|
||||
assert(link);
|
||||
|
||||
SET_FOREACH(route, link->routes) {
|
||||
/* do not touch routes managed by the kernel */
|
||||
if (route->protocol == RTPROT_KERNEL)
|
||||
continue;
|
||||
|
||||
k = route_remove(route, link, NULL);
|
||||
if (k < 0 && r >= 0)
|
||||
r = k;
|
||||
}
|
||||
|
||||
return r;
|
||||
}
|
||||
|
||||
int route_expire_handler(sd_event_source *s, uint64_t usec, void *userdata) {
|
||||
Route *route = userdata;
|
||||
int r;
|
||||
|
|
|
@ -72,6 +72,7 @@ int route_configure(Route *route, Link *link, link_netlink_message_handler_t cal
|
|||
int route_remove(Route *route, Link *link, link_netlink_message_handler_t callback);
|
||||
|
||||
int link_set_routes(Link *link);
|
||||
int link_drop_routes(Link *link);
|
||||
int link_drop_foreign_routes(Link *link);
|
||||
|
||||
int manager_rtnl_process_route(sd_netlink *rtnl, sd_netlink_message *message, Manager *m);
|
||||
|
|
Loading…
Reference in New Issue