The branch main has been updated by glebius:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=8b094a9801edcd4010d3fb8dc85cf2cec598abfc

commit 8b094a9801edcd4010d3fb8dc85cf2cec598abfc
Author:     Gleb Smirnoff <gleb...@freebsd.org>
AuthorDate: 2025-01-29 16:31:04 +0000
Commit:     Gleb Smirnoff <gleb...@freebsd.org>
CommitDate: 2025-01-29 23:48:55 +0000

    netlink: style(9) pass over message parsing code
    
    Mostly breaking long lines, few other changes.
---
 sys/netlink/netlink_message_parser.c | 113 ++++++++++++++++++++++-------------
 sys/netlink/netlink_message_parser.h |  77 +++++++++++++-----------
 2 files changed, 114 insertions(+), 76 deletions(-)

diff --git a/sys/netlink/netlink_message_parser.c 
b/sys/netlink/netlink_message_parser.c
index eafc2d83cbfb..368cb43cf496 100644
--- a/sys/netlink/netlink_message_parser.c
+++ b/sys/netlink/netlink_message_parser.c
@@ -122,8 +122,9 @@ search_states(const struct nlattr_parser *ps, int pslen, 
int key)
 }
 
 int
-nl_parse_attrs_raw(struct nlattr *nla_head, int len, const struct 
nlattr_parser *ps, int pslen,
-    struct nl_pstate *npt, void *target)
+nl_parse_attrs_raw(struct nlattr *nla_head, int len,
+    const struct nlattr_parser *ps, int pslen, struct nl_pstate *npt,
+    void *target)
 {
        struct nlattr *nla = NULL;
        int error = 0;
@@ -131,9 +132,11 @@ nl_parse_attrs_raw(struct nlattr *nla_head, int len, const 
struct nlattr_parser
        NL_LOG(LOG_DEBUG3, "parse %p remaining_len %d", nla_head, len);
        int orig_len = len;
        NLA_FOREACH(nla, nla_head, len) {
-               NL_LOG(LOG_DEBUG3, ">> parsing %p attr_type %d len %d (rem 
%d)", nla, nla->nla_type, nla->nla_len, len);
+               NL_LOG(LOG_DEBUG3, ">> parsing %p attr_type %d len %d (rem %d)",
+                   nla, nla->nla_type, nla->nla_len, len);
                if (nla->nla_len < sizeof(struct nlattr)) {
-                       NLMSG_REPORT_ERR_MSG(npt, "Invalid attr %p type %d len: 
%d",
+                       NLMSG_REPORT_ERR_MSG(npt,
+                           "Invalid attr %p type %d len: %d",
                            nla, nla->nla_type, nla->nla_len);
                        uint32_t off = (char *)nla - (char *)npt->hdr;
                        nlmsg_report_err_offset(npt, off);
@@ -148,7 +151,8 @@ nl_parse_attrs_raw(struct nlattr *nla_head, int len, const 
struct nlattr_parser
                        if (error != 0) {
                                uint32_t off = (char *)nla - (char *)npt->hdr;
                                nlmsg_report_err_offset(npt, off);
-                               NL_LOG(LOG_DEBUG3, "parse failed at offset %u", 
off);
+                               NL_LOG(LOG_DEBUG3,
+                                   "parse failed at offset %u", off);
                                return (error);
                        }
                } else {
@@ -167,7 +171,8 @@ nl_parse_attrs_raw(struct nlattr *nla_head, int len, const 
struct nlattr_parser
 }
 
 void
-nl_get_attrs_bmask_raw(struct nlattr *nla_head, int len, struct nlattr_bmask 
*bm)
+nl_get_attrs_bmask_raw(struct nlattr *nla_head, int len,
+    struct nlattr_bmask *bm)
 {
        struct nlattr *nla = NULL;
 
@@ -180,7 +185,8 @@ nl_get_attrs_bmask_raw(struct nlattr *nla_head, int len, 
struct nlattr_bmask *bm
                if (nla_type < NL_ATTR_BMASK_SIZE)
                        BIT_SET(NL_ATTR_BMASK_SIZE, nla_type, bm);
                else
-                       NL_LOG(LOG_DEBUG2, "Skipping type %d in the mask: too 
short",
+                       NL_LOG(LOG_DEBUG2,
+                           "Skipping type %d in the mask: too short",
                            nla_type);
        }
 }
@@ -194,7 +200,8 @@ nl_has_attr(const struct nlattr_bmask *bm, unsigned int 
nla_type)
 }
 
 int
-nlattr_get_flag(struct nlattr *nla, struct nl_pstate *npt, const void *arg, 
void *target)
+nlattr_get_flag(struct nlattr *nla, struct nl_pstate *npt, const void *arg,
+    void *target)
 {
        if (__predict_false(NLA_DATA_LEN(nla) != 0)) {
                NLMSG_REPORT_ERR_MSG(npt, "nla type %d size(%u) is not a flag",
@@ -211,7 +218,8 @@ parse_rta_ip4(void *rta_data, struct nl_pstate *npt, int 
*perror)
 {
        struct sockaddr_in *sin;
 
-       sin = (struct sockaddr_in *)npt_alloc_sockaddr(npt, sizeof(struct 
sockaddr_in));
+       sin = (struct sockaddr_in *)npt_alloc_sockaddr(npt,
+           sizeof(struct sockaddr_in));
        if (__predict_false(sin == NULL)) {
                *perror = ENOBUFS;
                return (NULL);
@@ -227,7 +235,8 @@ parse_rta_ip6(void *rta_data, struct nl_pstate *npt, int 
*perror)
 {
        struct sockaddr_in6 *sin6;
 
-       sin6 = (struct sockaddr_in6 *)npt_alloc_sockaddr(npt, sizeof(struct 
sockaddr_in6));
+       sin6 = (struct sockaddr_in6 *)npt_alloc_sockaddr(npt,
+           sizeof(struct sockaddr_in6));
        if (__predict_false(sin6 == NULL)) {
                *perror = ENOBUFS;
                return (NULL);
@@ -258,7 +267,8 @@ parse_rta_ip(struct rtattr *rta, struct nl_pstate *npt, int 
*perror)
 }
 
 int
-nlattr_get_ip(struct nlattr *nla, struct nl_pstate *npt, const void *arg, void 
*target)
+nlattr_get_ip(struct nlattr *nla, struct nl_pstate *npt, const void *arg,
+    void *target)
 {
        int error = 0;
 
@@ -302,7 +312,8 @@ parse_rta_via(struct rtattr *rta, struct nl_pstate *npt, 
int *perror)
 }
 
 int
-nlattr_get_ipvia(struct nlattr *nla, struct nl_pstate *npt, const void *arg, 
void *target)
+nlattr_get_ipvia(struct nlattr *nla, struct nl_pstate *npt, const void *arg,
+    void *target)
 {
        int error = 0;
 
@@ -313,7 +324,8 @@ nlattr_get_ipvia(struct nlattr *nla, struct nl_pstate *npt, 
const void *arg, voi
 }
 
 int
-nlattr_get_bool(struct nlattr *nla, struct nl_pstate *npt, const void *arg, 
void *target)
+nlattr_get_bool(struct nlattr *nla, struct nl_pstate *npt, const void *arg,
+    void *target)
 {
        if (__predict_false(NLA_DATA_LEN(nla) != sizeof(bool))) {
                NLMSG_REPORT_ERR_MSG(npt, "nla type %d size(%u) is not bool",
@@ -325,7 +337,8 @@ nlattr_get_bool(struct nlattr *nla, struct nl_pstate *npt, 
const void *arg, void
 }
 
 int
-nlattr_get_uint8(struct nlattr *nla, struct nl_pstate *npt, const void *arg, 
void *target)
+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",
@@ -337,7 +350,8 @@ nlattr_get_uint8(struct nlattr *nla, struct nl_pstate *npt, 
const void *arg, voi
 }
 
 int
-nlattr_get_uint16(struct nlattr *nla, struct nl_pstate *npt, const void *arg, 
void *target)
+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 uint16",
@@ -349,7 +363,8 @@ nlattr_get_uint16(struct nlattr *nla, struct nl_pstate 
*npt, const void *arg, vo
 }
 
 int
-nlattr_get_uint32(struct nlattr *nla, struct nl_pstate *npt, const void *arg, 
void *target)
+nlattr_get_uint32(struct nlattr *nla, struct nl_pstate *npt, const void *arg,
+    void *target)
 {
        if (__predict_false(NLA_DATA_LEN(nla) != sizeof(uint32_t))) {
                NLMSG_REPORT_ERR_MSG(npt, "nla type %d size(%u) is not uint32",
@@ -361,7 +376,8 @@ nlattr_get_uint32(struct nlattr *nla, struct nl_pstate 
*npt, const void *arg, vo
 }
 
 int
-nlattr_get_uint64(struct nlattr *nla, struct nl_pstate *npt, const void *arg, 
void *target)
+nlattr_get_uint64(struct nlattr *nla, struct nl_pstate *npt, const void *arg,
+    void *target)
 {
        if (__predict_false(NLA_DATA_LEN(nla) != sizeof(uint64_t))) {
                NLMSG_REPORT_ERR_MSG(npt, "nla type %d size(%u) is not uint64",
@@ -373,10 +389,12 @@ nlattr_get_uint64(struct nlattr *nla, struct nl_pstate 
*npt, const void *arg, vo
 }
 
 int
-nlattr_get_in_addr(struct nlattr *nla, struct nl_pstate *npt, const void *arg, 
void *target)
+nlattr_get_in_addr(struct nlattr *nla, struct nl_pstate *npt, const void *arg,
+    void *target)
 {
        if (__predict_false(NLA_DATA_LEN(nla) != sizeof(in_addr_t))) {
-               NLMSG_REPORT_ERR_MSG(npt, "nla type %d size(%u) is not 
in_addr_t",
+               NLMSG_REPORT_ERR_MSG(npt,
+                   "nla type %d size(%u) is not in_addr_t",
                    nla->nla_type, NLA_DATA_LEN(nla));
                return (EINVAL);
        }
@@ -385,10 +403,12 @@ nlattr_get_in_addr(struct nlattr *nla, struct nl_pstate 
*npt, const void *arg, v
 }
 
 int
-nlattr_get_in6_addr(struct nlattr *nla, struct nl_pstate *npt, const void 
*arg, void *target)
+nlattr_get_in6_addr(struct nlattr *nla, struct nl_pstate *npt, const void *arg,
+    void *target)
 {
        if (__predict_false(NLA_DATA_LEN(nla) != sizeof(struct in6_addr))) {
-               NLMSG_REPORT_ERR_MSG(npt, "nla type %d size(%u) is not struct 
in6_addr",
+               NLMSG_REPORT_ERR_MSG(npt,
+                   "nla type %d size(%u) is not struct in6_addr",
                    nla->nla_type, NLA_DATA_LEN(nla));
                return (EINVAL);
        }
@@ -428,26 +448,31 @@ nlattr_get_ifp_internal(struct nlattr *nla, struct 
nl_pstate *npt,
 }
 
 int
-nlattr_get_ifp(struct nlattr *nla, struct nl_pstate *npt, const void *arg, 
void *target)
+nlattr_get_ifp(struct nlattr *nla, struct nl_pstate *npt, const void *arg,
+    void *target)
 {
        return (nlattr_get_ifp_internal(nla, npt, target, false));
 }
 
 int
-nlattr_get_ifpz(struct nlattr *nla, struct nl_pstate *npt, const void *arg, 
void *target)
+nlattr_get_ifpz(struct nlattr *nla, struct nl_pstate *npt, const void *arg,
+    void *target)
 {
        return (nlattr_get_ifp_internal(nla, npt, target, true));
 }
 
 int
-nlattr_get_chara(struct nlattr *nla, struct nl_pstate *npt, const void *arg, 
void *target)
+nlattr_get_chara(struct nlattr *nla, struct nl_pstate *npt, const void *arg,
+    void *target)
 {
        int maxlen = NLA_DATA_LEN(nla);
        int target_size = (size_t)arg;
        int len = strnlen((char *)NLA_DATA(nla), maxlen);
 
-       if (__predict_false(len >= maxlen) || __predict_false(len >= 
target_size)) {
-               NLMSG_REPORT_ERR_MSG(npt, "nla type %d size(%u) is not 
NULL-terminated or longer than %u",
+       if (__predict_false(len >= maxlen) ||
+           __predict_false(len >= target_size)) {
+               NLMSG_REPORT_ERR_MSG(npt, "nla type %d size(%u) is not "
+                   "NULL-terminated or longer than %u",
                    nla->nla_type, maxlen, target_size);
                return (EINVAL);
        }
@@ -457,12 +482,14 @@ nlattr_get_chara(struct nlattr *nla, struct nl_pstate 
*npt, const void *arg, voi
 }
 
 int
-nlattr_get_string(struct nlattr *nla, struct nl_pstate *npt, const void *arg, 
void *target)
+nlattr_get_string(struct nlattr *nla, struct nl_pstate *npt, const void *arg,
+    void *target)
 {
        int maxlen = NLA_DATA_LEN(nla);
 
        if (__predict_false(strnlen((char *)NLA_DATA(nla), maxlen) >= maxlen)) {
-               NLMSG_REPORT_ERR_MSG(npt, "nla type %d size(%u) is not 
NULL-terminated",
+               NLMSG_REPORT_ERR_MSG(npt,
+                   "nla type %d size(%u) is not NULL-terminated",
                    nla->nla_type, maxlen);
                return (EINVAL);
        }
@@ -472,7 +499,8 @@ nlattr_get_string(struct nlattr *nla, struct nl_pstate 
*npt, const void *arg, vo
 }
 
 int
-nlattr_get_stringn(struct nlattr *nla, struct nl_pstate *npt, const void *arg, 
void *target)
+nlattr_get_stringn(struct nlattr *nla, struct nl_pstate *npt, const void *arg,
+    void *target)
 {
        int maxlen = NLA_DATA_LEN(nla);
 
@@ -487,7 +515,8 @@ nlattr_get_stringn(struct nlattr *nla, struct nl_pstate 
*npt, const void *arg, v
 }
 
 int
-nlattr_get_bytes(struct nlattr *nla, struct nl_pstate *npt, const void *arg, 
void *target)
+nlattr_get_bytes(struct nlattr *nla, struct nl_pstate *npt, const void *arg,
+    void *target)
 {
        size_t size = (size_t)arg;
 
@@ -500,7 +529,8 @@ nlattr_get_bytes(struct nlattr *nla, struct nl_pstate *npt, 
const void *arg, voi
 }
 
 int
-nlattr_get_nla(struct nlattr *nla, struct nl_pstate *npt, const void *arg, 
void *target)
+nlattr_get_nla(struct nlattr *nla, struct nl_pstate *npt, const void *arg,
+    void *target)
 {
        NL_LOG(LOG_DEBUG3, "STORING %p len %d", nla, nla->nla_len);
        *((struct nlattr **)target) = nla;
@@ -508,25 +538,25 @@ nlattr_get_nla(struct nlattr *nla, struct nl_pstate *npt, 
const void *arg, void
 }
 
 int
-nlattr_get_nested(struct nlattr *nla, struct nl_pstate *npt, const void *arg, 
void *target)
+nlattr_get_nested(struct nlattr *nla, struct nl_pstate *npt, const void *arg,
+    void *target)
 {
        const struct nlhdr_parser *p = (const struct nlhdr_parser *)arg;
-       int error;
 
-       /* Assumes target points to the beginning of the structure */
-       error = nl_parse_header(NLA_DATA(nla), NLA_DATA_LEN(nla), p, npt, 
target);
-       return (error);
+       /* Assumes target points to the beginning of the structure. */
+       return (nl_parse_header(NLA_DATA(nla), NLA_DATA_LEN(nla), p, npt,
+           target));
 }
 
 int
-nlattr_get_nested_ptr(struct nlattr *nla, struct nl_pstate *npt, const void 
*arg, void *target)
+nlattr_get_nested_ptr(struct nlattr *nla, struct nl_pstate *npt,
+    const void *arg, void *target)
 {
        const struct nlhdr_parser *p = (const struct nlhdr_parser *)arg;
-       int error;
 
-       /* Assumes target points to the beginning of the structure */
-       error = nl_parse_header(NLA_DATA(nla), NLA_DATA_LEN(nla), p, npt, 
*(void **)target);
-       return (error);
+       /* Assumes target points to the beginning of the structure. */
+       return (nl_parse_header(NLA_DATA(nla), NLA_DATA_LEN(nla), p, npt,
+           *(void **)target));
 }
 
 int
@@ -593,4 +623,3 @@ nlf_get_u32(void *src, struct nl_pstate *npt, void *target)
        *((uint32_t *)target) = *((const uint32_t *)src);
        return (0);
 }
-
diff --git a/sys/netlink/netlink_message_parser.h 
b/sys/netlink/netlink_message_parser.h
index 42a59f45b22a..13d52d80ecdc 100644
--- a/sys/netlink/netlink_message_parser.h
+++ b/sys/netlink/netlink_message_parser.h
@@ -64,15 +64,15 @@ lb_clear(struct linear_buffer *lb)
 #define        NL_MAX_ERROR_BUF        128
 #define        SCRATCH_BUFFER_SIZE     (1024 + NL_MAX_ERROR_BUF)
 struct nl_pstate {
-        struct linear_buffer    lb;            /* Per-message scratch buffer */
-        struct nlpcb           *nlp;           /* Originator socket */
-       struct nl_writer        *nw;            /* Message writer to use */
-       struct nlmsghdr         *hdr;           /* Current parsed message 
header */
-       uint32_t                err_off;        /* error offset from hdr start 
*/
-        int                    error;          /* last operation error */
-       char                    *err_msg;       /* Description of last error */
-       struct nlattr           *cookie;        /* NLA to return to the 
userspace */
-       bool                    strict;         /* Strict parsing required */
+       struct linear_buffer    lb;     /* Per-message scratch buffer */
+       struct nlpcb            *nlp;   /* Originator socket */
+       struct nl_writer        *nw;    /* Message writer to use */
+       struct nlmsghdr         *hdr;   /* Current parsed message header */
+       uint32_t                err_off; /* error offset from hdr start */
+       int                     error;  /* last operation error */
+       char                    *err_msg; /* Description of last error */
+       struct nlattr           *cookie; /* NLA to return to the userspace */
+       bool                    strict; /* Strict parsing required */
 };
 
 static inline void *
@@ -80,10 +80,10 @@ npt_alloc(struct nl_pstate *npt, int len)
 {
        return (lb_alloc(&npt->lb, len));
 }
-#define npt_alloc_sockaddr(_npt, _len)  ((struct sockaddr *)(npt_alloc(_npt, 
_len)))
+#define npt_alloc_sockaddr(_npt, _len) \
+       ((struct sockaddr *)(npt_alloc((_npt), (_len))))
 
-typedef int parse_field_f(void *hdr, struct nl_pstate *npt,
-    void *target);
+typedef int parse_field_f(void *hdr, struct nl_pstate *npt, void *target);
 struct nlfield_parser {
        uint16_t        off_in;
        uint16_t        off_out;
@@ -98,29 +98,28 @@ int nlf_get_u16(void *src, struct nl_pstate *npt, void 
*target);
 int nlf_get_u32(void *src, struct nl_pstate *npt, void *target);
 int nlf_get_u8_u32(void *src, struct nl_pstate *npt, void *target);
 
-
 struct nlattr_parser;
 typedef int parse_attr_f(struct nlattr *attr, struct nl_pstate *npt,
     const void *arg, void *target);
 struct nlattr_parser {
-       uint16_t                        type;   /* Attribute type */
-       uint16_t                        off;    /* field offset in the target 
structure */
-       parse_attr_f                    *cb;    /* parser function to call */
-       const void                      *arg;
+       uint16_t        type;   /* Attribute type */
+       uint16_t        off;    /* field offset in the target structure */
+       parse_attr_f    *cb;    /* parser function to call */
+       const void      *arg;
 };
 
 typedef bool strict_parser_f(void *hdr, struct nl_pstate *npt);
 typedef bool post_parser_f(void *parsed_attrs, struct nl_pstate *npt);
 
 struct nlhdr_parser {
-       int                             nl_hdr_off; /* aligned netlink header 
size */
-       int                             out_hdr_off; /* target header size */
-       int                             fp_size;
-       int                             np_size;
+       int                     nl_hdr_off; /* aligned netlink header size */
+       int                     out_hdr_off; /* target header size */
+       int                     fp_size;
+       int                     np_size;
        const struct nlfield_parser     *fp; /* array of header field parsers */
        const struct nlattr_parser      *np; /* array of attribute parsers */
-       strict_parser_f                 *sp; /* Pre-parse strict validation 
function */
-       post_parser_f                   *post_parse;
+       strict_parser_f         *sp; /* Pre-parse strict validation function */
+       post_parser_f           *post_parse;
 };
 
 #define        NL_DECLARE_PARSER_EXT(_name, _t, _sp, _fp, _np, _pp)    \
@@ -163,11 +162,13 @@ static const struct nlhdr_parser _name = {                
\
 #define        NL_ATTR_BMASK_SIZE      128
 BITSET_DEFINE(nlattr_bmask, NL_ATTR_BMASK_SIZE);
 
-void nl_get_attrs_bmask_raw(struct nlattr *nla_head, int len, struct 
nlattr_bmask *bm);
+void nl_get_attrs_bmask_raw(struct nlattr *nla_head, int len,
+    struct nlattr_bmask *bm);
 bool nl_has_attr(const struct nlattr_bmask *bm, unsigned int nla_type);
 
-int nl_parse_attrs_raw(struct nlattr *nla_head, int len, const struct 
nlattr_parser *ps,
-    int pslen, struct nl_pstate *npt, void *target);
+int nl_parse_attrs_raw(struct nlattr *nla_head, int len,
+    const struct nlattr_parser *ps, int pslen, struct nl_pstate *npt,
+    void *target);
 
 int nlattr_get_flag(struct nlattr *nla, struct nl_pstate *npt,
     const void *arg, void *target);
@@ -228,17 +229,24 @@ static inline int
 nl_parse_header(void *hdr, int len, const struct nlhdr_parser *parser,
     struct nl_pstate *npt, void *target)
 {
+       struct nlattr *nla;
        int error;
 
        if (__predict_false(len < parser->nl_hdr_off)) {
+               void *tmp_hdr;
+
                if (npt->strict) {
-                       nlmsg_report_err_msg(npt, "header too short: expected 
%d, got %d",
+                       nlmsg_report_err_msg(npt,
+                           "header too short: expected %d, got %d",
                            parser->nl_hdr_off, len);
                        return (EINVAL);
                }
 
-               /* Compat with older applications: pretend there's a full 
header */
-               void *tmp_hdr = npt_alloc(npt, parser->nl_hdr_off);
+               /*
+                * Compatibility with older applications:
+                * pretend there's a full header.
+                */
+               tmp_hdr = npt_alloc(npt, parser->nl_hdr_off);
                if (tmp_hdr == NULL)
                        return (EINVAL);
                memcpy(tmp_hdr, hdr, len);
@@ -260,8 +268,8 @@ nl_parse_header(void *hdr, int len, const struct 
nlhdr_parser *parser,
                        return (error);
        }
 
-       struct nlattr *nla_head = (struct nlattr *)((char *)hdr + 
parser->nl_hdr_off);
-       error = nl_parse_attrs_raw(nla_head, len - parser->nl_hdr_off, 
parser->np,
+       nla = (struct nlattr *)((char *)hdr + parser->nl_hdr_off);
+       error = nl_parse_attrs_raw(nla, len - parser->nl_hdr_off, parser->np,
            parser->np_size, npt, target);
 
        if (parser->post_parse != NULL && error == 0) {
@@ -314,12 +322,13 @@ static inline int
 nl_parse_nlmsg(struct nlmsghdr *hdr, const struct nlhdr_parser *parser,
     struct nl_pstate *npt, void *target)
 {
-       return (nl_parse_header(hdr + 1, hdr->nlmsg_len - sizeof(*hdr), parser, 
npt, target));
+       return (nl_parse_header(hdr + 1, hdr->nlmsg_len - sizeof(*hdr), parser,
+           npt, target));
 }
 
 static inline void
-nl_get_attrs_bmask_nlmsg(struct nlmsghdr *hdr, const struct nlhdr_parser 
*parser,
-    struct nlattr_bmask *bm)
+nl_get_attrs_bmask_nlmsg(struct nlmsghdr *hdr,
+    const struct nlhdr_parser *parser, struct nlattr_bmask *bm)
 {
        struct nlattr *nla_head;
 

Reply via email to