STRUCT BATADV_ICMP_PACKET_RR(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… struct batadv_icmp_packet_rr β€” ICMP RouteRecord packet πŸ¦‹

Okay so bestie, welcome to the Kernel API Manual ✨ (that's the manual name, iykyk) β€” and today's main character is this little struct: struct batadv_icmp_packet_rr, aka the ICMP RouteRecord packet. It's giving networking royalty πŸ‘‘.


🌸 NAME 🌸

struct batadv_icmp_packet_rr β€” ICMP RouteRecord packet. That's it, that's the vibe πŸŽ€


✨ SYNOPSIS ✨

struct batadv_icmp_packet_rr {
    __u8 packet_type;
    __u8 version;
    __u8 ttl;
    __u8 msg_type;
    __u8 dst[ETH_ALEN];
    __u8 orig[ETH_ALEN];
    __u8 uid;
    __u8 rr_cur;
    __be16 seqno;
    __u8 rr[BATADV_RR_LEN][ETH_ALEN];
 };

Not me typing out every single field so you don't have to 😭 Copy it exactly, no cap β€” those are the exact types and those are the exact names πŸ’–


🫢 Members 🫢

Every field gets its moment, periodt. Let's do a vibe check on each one:

  • packet_type β€” batman-adv packet type, part of the general header. Literally the "what kind of packet am I" field 🌈
  • version β€” batman-adv protocol version, part of the general header. She's the version tag, iconic ✨
  • ttl β€” time to live for this packet, part of the general header. Lowkey the countdown clock πŸ’€
  • msg_type β€” ICMP packet type. Tells you which flavour of ICMP we're dealing with πŸ“
  • dst β€” address of the destination node. Where the packet's going, its final destination 🎯
  • orig β€” address of the source node. Where it came from, its origin story πŸ’œ
  • uid β€” local ICMP socket identifier. The socket's little name tag 🏷️
  • rr_cur β€” number of entries the rr array. (Yes, that's the original wording β€” I'm not touching the facts, only the flair 😌)
  • seqno β€” ICMP sequence number. Keeping track of order, main character energy πŸ”₯
  • rr β€” route record array. The whole route, recorded, the way that it holds the tea πŸ¦‹

🌟 SEE ALSO 🌟

Kernel file ./include/uapi/linux/batadv_packet.h β€” go read it, it's literally where the packets live πŸ’–

  • 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_header(9)
  • struct batadv_icmp_packet(9)
  • struct batadv_icmp_tp_packet(9)
  • enum batadv_icmp_tp_subtype(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)

That's the whole squad, all accounted for πŸ‘‘ No skips, no summaries β€” every single reference is there, fr fr.


Heads up bestie: this page is sourced from ./include/uapi/linux, dated October 2026, and the page identifier is struct batad...mp_packet_rr(9) 🫢 so that's your source, your version, and your date β€” all in one cute little sign-off πŸ’… ✨ πŸ¦‹

Stay iconique, go read those header files, mwah πŸ’–πŸŽ€πŸ’œ

πŸ“¦ where this page comes from