Attention is currently required from: flichtenheld, ordex.
Hello flichtenheld, plaisthos,
I'd like you to reexamine a change. Please visit
http://gerrit.openvpn.net/c/openvpn/+/841?usp=email
to look at the new patch set (#6).
Change subject: dco_linux: extend netlink error cb with extra info
......................................................................
dco_linux: extend netlink error cb with extra info
A netlink error may contain more specific attributes: i.e.
missing attributes or missing neted objects.
Parse and print this information too.
Note that we are re-defining some enum entries that exist
in netlink.h starting with linux-6.1.
Since we do support distros not shipping an up-to-date
netlink.h, we had to re-define the entries we need for
this patch.
Change-Id: I9e27ff335d892429334137d028f8503da4e4ca5b
Signed-off-by: Antonio Quartulli <[email protected]>
---
M src/openvpn/Makefile.am
M src/openvpn/dco_linux.c
2 files changed, 36 insertions(+), 4 deletions(-)
git pull ssh://gerrit.openvpn.net:29418/openvpn refs/changes/41/841/6
diff --git a/src/openvpn/Makefile.am b/src/openvpn/Makefile.am
index ecb2bcf..7ed27a5 100644
--- a/src/openvpn/Makefile.am
+++ b/src/openvpn/Makefile.am
@@ -79,6 +79,7 @@
mbuf.c mbuf.h \
memdbg.h \
misc.c misc.h \
+ netlink.h \
ovpn_dco_freebsd.h \
ovpn_dco_linux.h \
ovpn_dco_win.h \
diff --git a/src/openvpn/dco_linux.c b/src/openvpn/dco_linux.c
index b038382..34f48f2 100644
--- a/src/openvpn/dco_linux.c
+++ b/src/openvpn/dco_linux.c
@@ -291,6 +291,25 @@
return NL_SKIP;
}
+/* The following enum members exist in netlink.h since linux-6.1.
+ * However, some distro we support still ship an old header, thus
+ * failing the OpenVPN compilation.
+ *
+ * For the time being we add the needed defines manually.
+ * We will drop this definition once we stop supporting those old
+ * distros.
+ *
+ * @NLMSGERR_ATTR_MISS_TYPE: type of a missing required attribute,
+ * %NLMSGERR_ATTR_MISS_NEST will not be present if the attribute was
+ * missing at the message level
+ * @NLMSGERR_ATTR_MISS_NEST: offset of the nest where attribute was missing
+ */
+enum ovpn_nlmsgerr_attrs {
+ OVPN_NLMSGERR_ATTR_MISS_TYPE = 5,
+ OVPN_NLMSGERR_ATTR_MISS_NEST = 6,
+ OVPN_NLMSGERR_ATTR_MAX = 6,
+};
+
/* This function is used as error callback on the netlink socket.
* When something goes wrong and the kernel returns an error, this function is
* invoked.
@@ -331,12 +350,24 @@
len -= ack_len;
nla_parse(tb_msg, NLMSGERR_ATTR_MAX, attrs, len, NULL);
- if (tb_msg[NLMSGERR_ATTR_MSG])
+ if (tb_msg[OVPN_NLMSGERR_ATTR_MSG])
{
- len = strnlen((char *)nla_data(tb_msg[NLMSGERR_ATTR_MSG]),
- nla_len(tb_msg[NLMSGERR_ATTR_MSG]));
+ len = strnlen((char *)nla_data(tb_msg[OVPN_NLMSGERR_ATTR_MSG]),
+ nla_len(tb_msg[OVPN_NLMSGERR_ATTR_MSG]));
msg(M_WARN, "kernel error: %*s\n", len,
- (char *)nla_data(tb_msg[NLMSGERR_ATTR_MSG]));
+ (char *)nla_data(tb_msg[OVPN_NLMSGERR_ATTR_MSG]));
+ }
+
+ if (tb_msg[OVPN_NLMSGERR_ATTR_MISS_NEST])
+ {
+ msg(M_WARN, "kernel error: missing required nesting type %u\n",
+ nla_get_u32(tb_msg[OVPN_NLMSGERR_ATTR_MISS_NEST]));
+ }
+
+ if (tb_msg[OVPN_NLMSGERR_ATTR_MISS_TYPE])
+ {
+ msg(M_WARN, "kernel error: missing required attribute type %u\n",
+ nla_get_u32(tb_msg[OVPN_NLMSGERR_ATTR_MISS_TYPE]));
}
return NL_STOP;
--
To view, visit http://gerrit.openvpn.net/c/openvpn/+/841?usp=email
To unsubscribe, or for help writing mail filters, visit
http://gerrit.openvpn.net/settings
Gerrit-Project: openvpn
Gerrit-Branch: master
Gerrit-Change-Id: I9e27ff335d892429334137d028f8503da4e4ca5b
Gerrit-Change-Number: 841
Gerrit-PatchSet: 6
Gerrit-Owner: ordex <[email protected]>
Gerrit-Reviewer: flichtenheld <[email protected]>
Gerrit-Reviewer: plaisthos <[email protected]>
Gerrit-CC: openvpn-devel <[email protected]>
Gerrit-Attention: flichtenheld <[email protected]>
Gerrit-Attention: ordex <[email protected]>
Gerrit-MessageType: newpatchset
_______________________________________________
Openvpn-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openvpn-devel