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 (#7). 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 <anto...@mandelbit.com> --- M src/openvpn/dco_linux.c 1 file changed, 35 insertions(+), 4 deletions(-) git pull ssh://gerrit.openvpn.net:29418/openvpn refs/changes/41/841/7 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: 7 Gerrit-Owner: ordex <a...@unstable.cc> Gerrit-Reviewer: flichtenheld <fr...@lichtenheld.com> Gerrit-Reviewer: plaisthos <arne-open...@rfc2549.org> Gerrit-CC: openvpn-devel <openvpn-devel@lists.sourceforge.net> Gerrit-Attention: flichtenheld <fr...@lichtenheld.com> Gerrit-Attention: ordex <a...@unstable.cc> Gerrit-MessageType: newpatchset
_______________________________________________ Openvpn-devel mailing list Openvpn-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/openvpn-devel