nlmsg_parse...cated_strict(9)
π nlmsg_parse_deprecated_strict β a whole vibe (Kernel API Manual energy)
okay so bestie, welcome to the nlmsg_parse...cated_strict(9) page π yes the title is literally truncated like that, that's just how it lives, we don't question the kernel's choices. This is a Kernel API Manual entry and honestly? It's giving "one job, does it well." β¨
πΈ NAME πΈ
nlmsg_parse_deprecated_strict β parse attributes of a netlink message π
No cap, that's the whole elevator pitch. You hand it a netlink message, it goes through the attributes, and it's strict about it (iykyk β strict mode is a whole thing, see below).
β¨ SYNOPSIS β¨
int nlmsg_parse_deprecated_strict (const struct nlmsghdr *nlh , int
hdrlen , struct nlattr *tb[] , int maxtype , const struct nla_policy
*policy , struct netlink_ext_ack *extack );
six arguments, one int return, zero notes. slay. π«Ά
π¦ ARGUMENTS π¦
nlhβ the netlink message header. literally the message. the main character πhdrlenβ length of the family specific header. yes, this family, the netlink family, not your actual family πtbβ destination array withmaxtype+1elements. the vibes bucket where all the parsed attributes land πmaxtypeβ maximum attribute type to be expected. the ceiling. the limit. the "know your place" number βpolicyβ validation policy. this one decides what's acceptable and what's not, and bestie it does not play πextackβ extended ACK report struct. where the tea gets reported back π₯
π DESCRIPTION π
See nla_parse_deprecated_strict.
...and that's it. That's the whole description babes π The kernel devs said "the real description is in the other manpage" and honestly? iconic behaviour. Not me expecting lore and getting a redirect. Go read the nla_parse_deprecated_strict page if you want the actual details β this one is just the netlink-message-flavoured door to it πͺβ¨
π§ SEE ALSO π§
okay this list is long long. like, scroll-for-a-while long. but every single one is here because we don't skip β¨
Kernel file ./include/net/netlink.h, plus:
struct nla_policy(9)struct nl_info(9)enum netlink_validation(9)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)nla_parse(9)nla_parse_deprecated(9)nla_parse_deprecated_strict(9)__nlmsg_parse(9)nlmsg_parse(9)nlmsg_parse_deprecated(9)nlmsg_find_attr(9)nla_validate_deprecated(9)nla_validate(9)nlmsg_validate_deprecated(9)nlmsg_report(9)nlmsg_seq(9)nlmsg_for_each_attr(9)nlmsg_for_each_attr_type(9)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)nlmsg_multicast_filtered(9)nlmsg_multicast(9)nlmsg_unicast(9)nlmsg_for_each_msg(9)nl_dump_check_consistent(9)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)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)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)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. long long. but we ate and left no crumbs π
real talk though: the name has deprecated right there in it, so don't act surprised later bestie β this is the deprecated-and-strict flavour of the parser, not the shiny new one. read the other page before you commit π
and that's the whole page, mwah π this lil corner of the kernel lives in ./include/net and it was dated October 2026 β so mark your calendar, this manual page is a Libra (or Scorpio, depending on the exact day, don't @ me) π see you in the SEE ALSO of a hundred other pages, periodt β¨π
π¦ 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