nla_put_flag(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… nla_put_flag β€” Kernel API Manual πŸŽ€

okay so bestie, listen β€” this one's a little function from <net/netlink.h> (well, the SEE ALSO says ./include/net/netlink.h, and yes we're getting there) and it's literally the "just add a flag, nothing else, no payload, no drama" move. It's nla_put_flag(9) in the Kernel API Manual, and it's giving "minimalist icon" energy. ✨


🌸 NAME 🌸

nla_put_flag β€” add a flag netlink attribute to a socket buffer πŸ¦‹

Like, that's it. That's the whole job. You have a socket buffer, you have an attribute type, and this function drops a flag attribute in there. No value attached, because a flag is a flag, periodt. πŸ’…


⭐ SYNOPSIS ⭐

int nla_put_flag (struct sk_buff *skb , int attrtype );

Two arguments, one int coming back at you. Clean, simple, iconic. πŸ‘‘


πŸ’– ARGUMENTS πŸ’–

  • skb β€” socket buffer to add attribute to. This is the buffer you're putting the attribute into, bestie, it's the main character of this whole operation. πŸŽ€
  • attrtype β€” attribute type. The type of the attribute you're adding. That's the whole description, no cap, that's literally what the manpage says and we're not out here inventing lore. πŸ™ˆ
ngl the manpage is extremely chill about these two. Two args, two one-liners. It's giving "confident and unbothered." πŸ’€

πŸ¦‹ SEE ALSO πŸ¦‹

okay so this is the part where the manual page absolutely ate β€” it is a whole friend group of kernel netlink functions and structs and enums, and we are naming every single one because nobody gets left behind at this sleepover. 🌈

Kernel file ./include/net/netlink.h: 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_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_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, yes, that's the whole list, and yes, our girl nla_put_flag is the lowkey one in a friend group of like a hundred netlink functions. she's not loud about it. she just puts flags. πŸ”₯


bestie heads-up: the manual page itself doesn't spell out a return value description, no ERRORS section, no ENVIRONMENT, no FILES, no EXIT STATUS, no BUGS, no AUTHOR, no COPYRIGHT, no LICENSE. What you see above is literally the whole page. Don't let anyone tell you otherwise. πŸ’€

🌈✨ and that's the whole page, bestie β€” sourced from the kernel file path ./include/net πŸŽ€, dated October 2026 ⭐, and signed off with love from the Kernel API Manual crew πŸ’œπŸ«Ά you understood it, you slayed it, and honestly? nla_put_flag is kind of an icon for that. bye bestie! πŸ’…πŸ‘‘

πŸ“¦ where this page comes from