xref: /OK3568_Linux_fs/buildroot/package/smcroute/0001-Avoid-trying-to-delete-inactive-VIFs.patch (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1From 8ce1d117a31e35d97fb955b82edf13514267eaab Mon Sep 17 00:00:00 2001
2From: Joachim Wiberg <troglobit@gmail.com>
3Date: Tue, 28 Sep 2021 11:09:47 +0200
4Subject: [PATCH] Avoid trying to delete inactive VIFs
5Organization: Westermo Network Technologies AB
6
7When probing interfaces at startup, there's a check for IFF_MULTICAST,
8if this flag is not set we try to delete its corresponding VIF/MIF.
9This is for hanlding .conf reload scenarios where an interface has had
10its MULTICAST flag dropped.
11
12However, when starting up on Linux systems, the loopback interface has
13no MULTICAST flag set.  This leads to the following bogus warning:
14
15   Failed deleting VIF for iface lo: Resource temporarily unavailable
16
17This patch makes sure to check if we have a registered kernel VIF/MIF
18for an interface before attempting to delete it.
19
20Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
21---
22 src/mroute.c | 6 ++++++
23 1 file changed, 6 insertions(+)
24
25diff --git a/src/mroute.c b/src/mroute.c
26index 291e9c4..6a80a47 100644
27--- a/src/mroute.c
28+++ b/src/mroute.c
29@@ -298,6 +298,9 @@ static int mroute4_del_vif(struct iface *iface)
30 	if (iface->mrdisc)
31 		rc = mrdisc_deregister(iface->vif);
32
33+	if (iface->vif == ALL_VIFS)
34+		return 0;
35+
36 	if (kern_vif_del(iface)) {
37 		switch (errno) {
38 		case ENOENT:
39@@ -910,6 +913,9 @@ static int mroute6_del_mif(struct iface *iface)
40 {
41 	int rc = 0;
42
43+	if (iface->mif == ALL_VIFS)
44+		return 0;
45+
46 	if (kern_mif_del(iface) && errno != ENOENT) {
47 		switch (errno) {
48 		case ENOENT:
49--
502.25.1
51
52