STRUCT BATADV_ICMP_HEADER(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… struct batadv_icmp_header(9) β€” the group-chat lore ✨

okay so bestie, welcome to the struct batadv_icmp_header(9) page in the Kernel API Manual 🫢 this is the lowkey MVP struct that every single ICMP packet in batman-adv shares its opening moves with. no cap, she's the blueprint πŸ’–


🌸 NAME 🌸

struct batadv_icmp_header β€” the members literally every ICMP packet has in common πŸ‘‘ like the shared DNA of the whole ICMP family, fr fr


✨ SYNOPSIS ✨

here's the whole glow-up, character for character, don't touch a thing πŸ’…

struct batadv_icmp_header {
    __u8 packet_type;
    __u8 version;
    __u8 ttl;
    __u8 msg_type;
    __u8 dst[ETH_ALEN];
    __u8 orig[ETH_ALEN];
    __u8 uid;
    __u8 align[3];
 };

πŸŽ€ Members πŸŽ€

  • packet_type β€” the batman-adv packet type, and she's part of the general header πŸ‘‘ not a solo act
  • version β€” batman-adv protocol version, also part of the general header ✨
  • ttl β€” time to live for this packet, yep, part of the general header too πŸ¦‹
  • msg_type β€” the ICMP packet type πŸ’Œ
  • dst β€” address of the destination node, where she's headed 🎯
  • orig β€” address of the source node, where she came from 🌱
  • uid β€” local ICMP socket identifier, like her little local ID badge πŸ™ˆ
  • align β€” not used, it's only there for alignment purposes, she's purely structural bestie πŸ’€

πŸ’œ Description πŸ’œ

so here's the tea πŸ“ this structure is used for ICMP packet parsing only, and it is never sent over the wire. literally never, not even once, iykyk πŸš«πŸ“‘

the alignment field chilling at the end? she's there to make sure the members are padded the exact same way they are in real packets β€” so the vibes line up and the parsing goes off without a hitch ✨🧚

lowkey important: align is not data, she's just there so the padding matches. do NOT come for her, she's doing her job 🫢

πŸ”₯ SEE ALSO πŸ”₯

  • Kernel file ./include/uapi/linux/batadv_packet.h πŸ“
  • batadv_tp_is_error(9)
  • enum batadv_packettype(9)
  • enum batadv_subtype(9)
  • enum batadv_iv_flags(9)
  • enum batadv_icmp_packettype(9)
  • enum batadv_mcast_flags(9)
  • enum batadv_tt_data_flags(9)
  • enum batadv_vlan_flags(9)
  • enum batadv_bla_claimframe(9)
  • enum batadv_tvlv_type(9)
  • struct batadv_bla_claim_dst(9)
  • struct batadv_ogm_packet(9)
  • struct batadv_ogm2_packet(9)
  • struct batadv_elp_packet(9)
  • struct batadv_icmp_packet(9)
  • struct batadv_icmp_tp_packet(9)
  • enum batadv_icmp_tp_subtype(9)
  • struct batadv_icmp_packet_rr(9)
  • struct batadv_unicast_packet(9)
  • struct batadv_unicast_4addr_packet(9)
  • struct batadv_frag_packet(9)
  • struct batadv_bcast_packet(9)
  • struct batadv_mcast_packet(9)
  • struct batadv_coded_packet(9)
  • struct batadv_unicast_tvlv_packet(9)
  • struct batadv_tvlv_hdr(9)
  • struct batadv_tvlv_gateway_data(9)
  • struct batadv_tvlv_tt_vlan_data(9)
  • struct batadv_tvlv_tt_data(9)
  • struct batadv_tvlv_tt_change(9)
  • struct batadv_tvlv_roam_adv(9)
  • struct batadv_tvlv_mcast_data(9)
  • struct batadv_tvlv_mcast_tracker(9)

like, that's the whole friend group, go say hi πŸŒˆπŸ’–


and that's the page bestie!! πŸŽ€ she lives in ./include/uapi/linux, dated October 2026, and she's giving main character energy in the Kernel API Manual πŸ’…βœ¨ mwah, go read some more manpages, ily 🫢

πŸ“¦ where this page comes from