mirror of
https://git.proxmox.com/git/systemd
synced 2026-02-03 20:40:08 +00:00
networkd: remove route if carrier is lost
Patch cherry-picked from upstream master. Gbp-Dch: Short
This commit is contained in:
parent
f3c4eafa52
commit
79e10aaee1
32
debian/patches/networkd-do-not-drop-config-for-unmanaged-interfaces.patch
vendored
Normal file
32
debian/patches/networkd-do-not-drop-config-for-unmanaged-interfaces.patch
vendored
Normal file
@ -0,0 +1,32 @@
|
||||
From: =?utf-8?q?Mantas_Mikul=C4=97nas?= <grawity@gmail.com>
|
||||
Date: Wed, 24 Aug 2016 18:26:48 +0300
|
||||
Subject: networkd: do not drop config for unmanaged interfaces
|
||||
|
||||
Flushing foreign configuration for unmanaged interfaces is outright
|
||||
evil, especially when it's a regular occurence with Wi-Fi.
|
||||
|
||||
Fixes: 3104883ddc24 "networkd: remove route if carrier is lost"
|
||||
Ref: #3831
|
||||
---
|
||||
src/network/networkd-link.c | 8 +++++---
|
||||
1 file changed, 5 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c
|
||||
index 0eaa25e..2a8bdd0 100644
|
||||
--- a/src/network/networkd-link.c
|
||||
+++ b/src/network/networkd-link.c
|
||||
@@ -2897,9 +2897,11 @@ static int link_carrier_lost(Link *link) {
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
- r = link_drop_foreign_config(link);
|
||||
- if (r < 0)
|
||||
- return r;
|
||||
+ if (link->state != LINK_STATE_UNMANAGED) {
|
||||
+ r = link_drop_foreign_config(link);
|
||||
+ if (r < 0)
|
||||
+ return r;
|
||||
+ }
|
||||
|
||||
r = link_handle_bound_by_list(link);
|
||||
if (r < 0)
|
||||
64
debian/patches/networkd-remove-route-if-carrier-is-lost-3831.patch
vendored
Normal file
64
debian/patches/networkd-remove-route-if-carrier-is-lost-3831.patch
vendored
Normal file
@ -0,0 +1,64 @@
|
||||
From: Susant Sahani <ssahani@users.noreply.github.com>
|
||||
Date: Thu, 4 Aug 2016 19:26:39 +0530
|
||||
Subject: networkd: remove route if carrier is lost (#3831)
|
||||
|
||||
Fixes #3669.
|
||||
---
|
||||
src/network/networkd-link.c | 37 +++++++++++++++++++++++++++++++++++++
|
||||
1 file changed, 37 insertions(+)
|
||||
|
||||
diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c
|
||||
index 82f5615..0eaa25e 100644
|
||||
--- a/src/network/networkd-link.c
|
||||
+++ b/src/network/networkd-link.c
|
||||
@@ -2318,6 +2318,35 @@ static int link_drop_foreign_config(Link *link) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
+static int link_drop_config(Link *link) {
|
||||
+ Address *address;
|
||||
+ Route *route;
|
||||
+ Iterator i;
|
||||
+ int r;
|
||||
+
|
||||
+ SET_FOREACH(address, link->addresses, 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, i) {
|
||||
+ /* do not touch routes managed by the kernel */
|
||||
+ if (route->protocol == RTPROT_KERNEL)
|
||||
+ continue;
|
||||
+
|
||||
+ r = route_remove(route, link, link_route_remove_handler);
|
||||
+ if (r < 0)
|
||||
+ return r;
|
||||
+ }
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
static int link_update_lldp(Link *link) {
|
||||
int r;
|
||||
|
||||
@@ -2864,6 +2893,14 @@ static int link_carrier_lost(Link *link) {
|
||||
return r;
|
||||
}
|
||||
|
||||
+ r = link_drop_config(link);
|
||||
+ if (r < 0)
|
||||
+ return r;
|
||||
+
|
||||
+ r = link_drop_foreign_config(link);
|
||||
+ if (r < 0)
|
||||
+ return r;
|
||||
+
|
||||
r = link_handle_bound_by_list(link);
|
||||
if (r < 0)
|
||||
return r;
|
||||
2
debian/patches/series
vendored
2
debian/patches/series
vendored
@ -13,6 +13,8 @@ nspawn-detect-SECCOMP-availability-skip-audit-filter-if-u.patch
|
||||
shared-recognize-DNS-names-with-more-than-one-trailing-do.patch
|
||||
networkd-limit-the-number-of-routes-to-the-kernel-limit-4.patch
|
||||
systemctl-consider-service-running-only-when-it-is-in-act.patch
|
||||
networkd-remove-route-if-carrier-is-lost-3831.patch
|
||||
networkd-do-not-drop-config-for-unmanaged-interfaces.patch
|
||||
debian/Use-Debian-specific-config-files.patch
|
||||
debian/don-t-try-to-start-autovt-units-when-not-running-wit.patch
|
||||
debian/Make-logind-hostnamed-localed-timedated-D-Bus-activa.patch
|
||||
|
||||
Loading…
Reference in New Issue
Block a user