__nlmsg_parse(9)
π __nlmsg_parse β Kernel API Manual π
okay so bestie, welcome to the __nlmsg_parse(9) page β¨ this is the Kernel API Manual, and it's a short one β like, suspiciously short β but we're gonna give it the full main-character treatment anyway. Let's go π«Ά
πΈ NAME πΈ
__nlmsg_parse β parse attributes of a netlink message π
β¨ SYNOPSIS β¨
int __nlmsg_parse (const struct nlmsghdr *nlh, int hdrlen, struct nlattr *tb[],
int maxtype, const struct nla_policy *policy,
unsigned int validate, struct netlink_ext_ack *extack);
likeβ¦ it returns an int, it takes seven things, and it's giving "I have a very specific job" energy π
π ARGUMENTS π
nlhβ the netlink message header. the whole message's crown πhdrlenβ length of the family specific header. yes, family-specific, she's custom πtbβ destination array withmaxtype+1elements. destination array!! count your elements, bestie,maxtype+1of them, no more no less πmaxtypeβ maximum attribute type to be expected. the ceiling, the limit, the "we don't go past this" πpolicyβ validation policy. rules are rules πvalidateβ validation strictness. how hard are we gonna check? that's the vibe check π₯extackβ extended ACK report struct. the receipts struct π
π¦ DESCRIPTION π¦
so the entire description is, and I cannot stress this enough, literally:
See nla_parse
that's it. that's the description π she said "my story is told elsewhere, go ask my sibling." iconic, honestly. so like, nla_parse is where the actual tea is at π
π SEE ALSO π
the friend group is huge, buckle up:
- Kernel file
./include/net/netlink.hβ plusstruct nla_policy(9),struct nl_info(9),enum netlink_validation(9) - the message-size crew:
nlmsg_msg_size(9),nlmsg_total_size(9),nlmsg_padlen(9),nlmsg_data(9),nlmsg_len(9),nlmsg_payload(9),nlmsg_attrdata(9),nlmsg_attrlen(9),nlmsg_ok(9),nlmsg_next(9) - the actual parsing squad (go here first, fr fr):
nla_parse(9),nla_parse_deprecated(9),nla_parse_deprecated_strict(9),nlmsg_parse(9),nlmsg_parse_deprecated(9),nlmsg_parse_deprecated_strict(9),nlmsg_find_attr(9),nla_validate_deprecated(9),nla_validate(9),nlmsg_validate_deprecated(9) - reporting + looping:
nlmsg_report(9),nlmsg_seq(9),nlmsg_for_each_attr(9),nlmsg_for_each_attr_type(9) - building messages:
nlmsg_put(9),nlmsg_append(9),nlmsg_put_answer(9),nlmsg_new(9),nlmsg_new_large(9),nlmsg_end(9),nlmsg_get_pos(9),nlmsg_trim(9),nlmsg_cancel(9),nlmsg_free(9),nlmsg_consume(9) - sending + dumping:
nlmsg_multicast_filtered(9),nlmsg_multicast(9),nlmsg_unicast(9),nlmsg_for_each_msg(9),nl_dump_check_consistent(9) - attribute basics:
nla_attr_size(9),nla_total_size(9),nla_padlen(9),nla_type(9),nla_data(9),nla_len(9),nla_ok(9),nla_next(9),nla_find_nested(9),nla_parse_nested(9),nla_parse_nested_deprecated(9) - the
putgirlies (writing attrs in):nla_put_u8(9),nla_put_u16(9),nla_put_be16(9),nla_put_net16(9),nla_put_le16(9),nla_put_u32(9),nla_put_uint(9),nla_put_be32(9),nla_put_net32(9),nla_put_le32(9),nla_put_u64_64bit(9),nla_put_be64(9),nla_put_net64(9),nla_put_le64(9),nla_put_s8(9),nla_put_s16(9),nla_put_s32(9),nla_put_s64(9),nla_put_sint(9),nla_put_string(9),nla_put_flag(9),nla_put_msecs(9),nla_put_in_addr(9),nla_put_in6_addr(9),nla_put_bitfield32(9) - the
getgirlies (reading attrs back out):nla_get_u32(9),nla_get_u32_default(9),nla_get_be32(9),nla_get_be32_default(9),nla_get_le32(9),nla_get_le32_default(9),nla_get_u16(9),nla_get_u16_default(9),nla_get_be16(9),nla_get_be16_default(9),nla_get_le16(9),nla_get_le16_default(9),nla_get_u8(9),nla_get_u8_default(9),nla_get_u64(9),nla_get_u64_default(9),nla_get_uint(9),nla_get_uint_default(9),nla_get_be64(9),nla_get_be64_default(9),nla_get_le64(9),nla_get_le64_default(9),nla_get_s32(9),nla_get_s32_default(9),nla_get_s16(9),nla_get_s16_default(9),nla_get_s8(9),nla_get_s8_default(9),nla_get_s64(9),nla_get_s64_default(9),nla_get_sint(9),nla_get_sint_default(9),nla_get_flag(9),nla_get_msecs(9),nla_get_msecs_default(9),nla_get_in_addr(9),nla_get_in_addr_default(9),nla_get_in6_addr(9),nla_get_bitfield32(9) - the rest of the extended universe:
nla_memdup(9),nla_nest_start_noflag(9),nla_nest_start(9),nla_nest_end(9),nla_nest_end_safe(9),nla_nest_cancel(9),nla_put_empty_nest(9),__nla_validate_nested(9),nla_need_padding_for_64bit(9),nla_align_64bit(9),nla_total_size_64bit(9),nla_for_each_attr(9),nla_for_each_attr_type(9),nla_for_each_nested(9),nla_for_each_nested_type(9),nla_is_last(9)
like I said. huge friend group. go say hi to all of them π§π
and that's the whole page, bestie, short and sweet π this one came from the source at ./include/net, dated October 2026, and it lives in the Kernel API Manual β mwah, go parse some attributes, ily, bye πβ¨π
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms