STRUCT BATADV_ICMP_TP_PACKET(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– struct batadv_icmp_tp_packet(9) β€” ICMP TP Meter packet πŸ’–

okay so bestie, welcome to the Kernel API Manual ✨ β€” this page is all about struct batadv_icmp_tp_packet, which is literally the ICMP TP Meter packet. yes that's a mouthful, no i will not be pronouncing it out loud. sit down, grab a strawberry πŸ“, and let's go.


✨ NAME ✨

struct batadv_icmp_tp_packet β€” ICMP TP Meter packet πŸ”₯


πŸŽ€ SYNOPSIS πŸŽ€

here's the full glow-up of the struct, copied exactly because precision is the whole vibe πŸ’…

struct batadv_icmp_tp_packet {
    __u8 packet_type;
    __u8 version;
    __u8 ttl;
    __u8 msg_type;
    __u8 dst[ETH_ALEN];
    __u8 orig[ETH_ALEN];
    __u8 uid;
    __u8 subtype;
    __u8 session[2];
    __be32 seqno;
    __be32 timestamp;
 };

πŸ¦‹ Members πŸ¦‹

okay so every single field, in order, no skips β€” this is the roster bestie πŸ‘‘

  • packet_type β€” the batman-adv packet type, and it's part of the general header 🌸
  • version β€” the batman-adv protocol version, also part of the general header ✨
  • ttl β€” time to live for this packet, yep you guessed it, part of the general header 🫢
  • msg_type β€” the ICMP packet type πŸ’«
  • dst[ETH_ALEN] β€” address of the destination node πŸ“
  • orig[ETH_ALEN] β€” address of the source node 🌈
  • uid β€” local ICMP socket identifier πŸ”‘
  • subtype β€” the TP packet subtype (peep batadv_icmp_tp_subtype) πŸ‘€
  • session[2] β€” TP session identifier 🎟️
  • seqno β€” the TP sequence number πŸ”’
  • timestamp β€” time when the packet has been sent. this value is filled in a TP_MSG and echoed back in the next TP_ACK so that the sender can compute the RTT πŸ•. and here's the cute part: since it is read only by the host which wrote it, there is no need to store it using network order β€” so it's a __be32 that lowkey doesn't gotta be network order, ngl, that's iconic 😭

πŸ’€ SEE ALSO πŸ’€

bestie the link list is LONG and i respect it. 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_header(9)
  • struct batadv_icmp_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… go read them? they're all right there, iykyk πŸ“š


and that's the whole page, bestie! πŸ’œ this lil artifact lives in ./include/uapi/linux and the date on it is October 2026 β€” so yes, future me is still out here reading kernel headers. slay. periodt. 🧚✨

πŸ“¦ where this page comes from