aboutsummaryrefslogtreecommitdiff
path: root/sys/netlink/netlink_message_parser.c
diff options
context:
space:
mode:
authorAlexander V. Chernikov <melifaro@FreeBSD.org>2023-04-25 10:56:42 +0000
committerAlexander V. Chernikov <melifaro@FreeBSD.org>2023-04-25 10:56:42 +0000
commit70810dc8178cdc473f31f10bdfaec5de533dd67e (patch)
treef3d3659b4d6b1a0351ddf8a99612f977a0cd00db /sys/netlink/netlink_message_parser.c
parent34066d0008b6b5f0c7f9fbef8d82e468aaf3f7cf (diff)
Diffstat (limited to 'sys/netlink/netlink_message_parser.c')
-rw-r--r--sys/netlink/netlink_message_parser.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/sys/netlink/netlink_message_parser.c b/sys/netlink/netlink_message_parser.c
index d0aaf4301872..c6cd82260e5b 100644
--- a/sys/netlink/netlink_message_parser.c
+++ b/sys/netlink/netlink_message_parser.c
@@ -315,10 +315,22 @@ nlattr_get_ipvia(struct nlattr *nla, struct nl_pstate *npt, const void *arg, voi
int
+nlattr_get_uint8(struct nlattr *nla, struct nl_pstate *npt, const void *arg, void *target)
+{
+ if (__predict_false(NLA_DATA_LEN(nla) != sizeof(uint8_t))) {
+ NLMSG_REPORT_ERR_MSG(npt, "nla type %d size(%u) is not uint8",
+ nla->nla_type, NLA_DATA_LEN(nla));
+ return (EINVAL);
+ }
+ *((uint16_t *)target) = *((const uint16_t *)NL_RTA_DATA_CONST(nla));
+ return (0);
+}
+
+int
nlattr_get_uint16(struct nlattr *nla, struct nl_pstate *npt, const void *arg, void *target)
{
if (__predict_false(NLA_DATA_LEN(nla) != sizeof(uint16_t))) {
- NLMSG_REPORT_ERR_MSG(npt, "nla type %d size(%u) is not uint32",
+ NLMSG_REPORT_ERR_MSG(npt, "nla type %d size(%u) is not uint16",
nla->nla_type, NLA_DATA_LEN(nla));
return (EINVAL);
}