summaryrefslogtreecommitdiffstats
path: root/meta/recipes-core/systemd/systemd/selinux-hook-handling-to-enumerate-nexthop.patch
blob: b1c92ed713b0fad5284e4bdcafd05d0a395f9b9a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
From 92b555aaabf710e0a672a7244e8c0e3963075133 Mon Sep 17 00:00:00 2001
From: Purushottam choudhary <purushottam.choudhary@kpit.com>
Date: Wed, 28 Oct 2020 22:11:49 +0530
Subject: [PATCH] network: selinux hook handling to enumerate nexthop

When selinux is enabled, the call of
manager_rtnl_enumerate_nexthop() fails.

This fix is to facilitate selinux hook handling for enumerating
nexthop.

In manager_rtnl_enumerate_nexthop() there is a check
if "Not supported" is returned by the send_netlink() call.

This check expects that -EOPNOTSUPP is returned,
the selinux hook seems to return -EINVAL instead.

This happens in kernel older than 5.3
(more specificallytorvalds/linux@65ee00a) as it does not support
nexthop handling through netlink.

And if SELinux is enforced in the order kernel, callingRTM_GETNEXTHOP
returns -EINVAL.

Thus adding a call in the manager_rtnl_enumerate_nexthop for the
extra return -EINVAL.

Upstream-Status: Backport
https://github.com/systemd/systemd/commit/92b555aaabf710e0a672a7244e8c0e3963075133
---
 src/network/networkd-manager.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/network/networkd-manager.c b/src/network/networkd-manager.c
index a6c1a39..2a9be85 100644
--- a/src/network/networkd-manager.c
+++ b/src/network/networkd-manager.c
@@ -2121,7 +2121,7 @@ int manager_rtnl_enumerate_nexthop(Manager *m) {

         r = sd_netlink_call(m->rtnl, req, 0, &reply);
         if (r < 0) {
-                if (r == -EOPNOTSUPP) {
+                if (r == -EOPNOTSUPP || r == -EINVAL) {
                         log_debug("Nexthop are not supported by the kernel. Ignoring.");
                         return 0;
                 }