nla_parse(9)
π nla_parse β NAME π
okay so bestie, welcome to nla_parse(9), straight out of the Kernel API Manual β¨ β it parses a stream of attributes into a tb buffer, and honestly? it's giving main character energy in the netlink world π
β¨ SYNOPSIS β¨
int nla_parse (struct nlattr **tb , int maxtype , const struct nlattr *head , int len , const struct nla_policy *policy , struct netlink_ext_ack *extack );
π«Ά ARGUMENTS π«Ά
tbβ the destination array, and it needsmaxtype+1elements in it. like, do the math first bestie, no cap πmaxtypeβ the maximum attribute type you're expecting. anything bigger is not invited to the party πheadβ the head of the attribute stream. the beginning. the origin story β¨lenβ the length of the attribute stream πΈpolicyβ the validation policy. yes you do have to bring one πextackβ the extended ACK pointer π
πΈ DESCRIPTION πΈ
so what it does is parse a stream of attributes and stash a pointer to each one in the tb array β and you get at each of those pointers via the attribute type π¦ iykyk.
attributes whose type exceeds maxtype get rejected, periodt π
. policy must be specified (not optional, we don't do optional here), and the attributes get validated in the strictest way possible π₯. she's thorough. she's not playing around.
β RETURN β
0 on success, or a negative error code π β so yeah, always check it, bestie, fr fr.
π SEE ALSO π
the whole extended friend group π«Ά first up, the kernel file itself: ./include/net/netlink.h, plus struct nla_policy(9), struct nl_info(9), and enum netlink_validation(9) β
the parsing & validation girlies π
nla_parse_deprecated(9),nla_parse_deprecated_strict(9),__nlmsg_parse(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),nlmsg_report(9),nlmsg_seq(9),nlmsg_for_each_attr(9),nlmsg_for_each_attr_type(9)
the nlmsg size & data 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 nlmsg putting / building / sending squad π
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)
the nla core icons π
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 nla_put_* besties (yes, all of them, we don't skip) π
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 nla_get_* besties (also all of them, obviously) π
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)
and the rest of the group chat, ily all ππ§
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)
ok that's literally the whole squad, nobody got left on read πβ¨
and that's the page, bestie π this lil love letter lives in ./include/net and it's dated October 2026 β go parse some attributes, you're gonna slay π
π¦
π¦ 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