1
1
mirror of https://github.com/systemd/systemd-stable.git synced 2025-01-20 14:03:39 +03:00

Merge pull request #1851 from teg/networkd-drop-foreign

networkd: link - drop foreign config when configuring link
This commit is contained in:
Lennart Poettering 2015-11-11 18:47:12 +01:00
commit 2376020393

View File

@ -2017,6 +2017,35 @@ static int link_set_ipv6_hop_limit(Link *link) {
return 0;
}
static int link_drop_foreign_config(Link *link) {
Address *address;
Route *route;
Iterator i;
int r;
SET_FOREACH(address, link->addresses_foreign, i) {
/* we consider IPv6LL addresses to be managed by the kernel */
if (address->family == AF_INET6 && in_addr_is_link_local(AF_INET6, &address->in_addr) == 1)
continue;
r = address_remove(address, link, link_address_remove_handler);
if (r < 0)
return r;
}
SET_FOREACH(route, link->routes_foreign, i) {
/* do not touch routes managed by the kernel */
if (route->protocol == RTPROT_KERNEL)
continue;
r = route_remove(route, link, link_address_remove_handler);
if (r < 0)
return r;
}
return 0;
}
static int link_configure(Link *link) {
int r;
@ -2024,6 +2053,10 @@ static int link_configure(Link *link) {
assert(link->network);
assert(link->state == LINK_STATE_PENDING);
r = link_drop_foreign_config(link);
if (r < 0)
return r;
r = link_set_bridge_fdb(link);
if (r < 0)
return r;