nlmsg_for_each_attr_type(9)
π NAME π
okay bestie, welcome to the nlmsg_for_each_attr_type(9) page in the Kernel API Manual β¨ This one is literally here to iterate over a stream of attributes. That's the whole vibe: loop through attributes, keep your counter cute, and let the required type do its thing π
π¦ SYNOPSIS π¦
nlmsg_for_each_attr_type (pos , type , nlh , hdrlen , rem );
No cap, that's the exact call shape β all five little arguments lined up and ready π«Ά
π ARGUMENTS π
posβ the loop counter, bestie; it gets set to the current attribute. Slay.typeβ the required attribute type forpos. It's the vibe check for which attribute you're on.nlhβ netlink message header. Yes, the header of the message. Iconic.hdrlenβ length of the family specific header. Keep it exact, okay?remβ initialized tolen, and it holds bytes currently remaining in stream. That's the little countdown tracker, periodt.
π SEE ALSO π
Kernel file ./include/net/netlink.h β and then the whole group chat of related refs, fr fr:
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_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_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)
That's the whole page, bestie β catch you later! Source/version: ./include/net; date: October 2026; and the page is still nlmsg_for_each_attr_type(9) ππ«Ά
π¦ 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