batadv_iv_o..._dump_hardif(9)
π batadv_iv_ogm_neigh_dump_hardif(9) β like, the Kernel API Manual, bestie β¨
Okay so picture this: it's giving kernel-internals energy, the manual is literally called the Kernel API Manual, and today's main character is batadv_iv_ogm_neigh_dump_hardif(9). Yes the title got truncated with ... in the header, no that's not me being lazy, that's just how it's living. π
β¨ NAME β¨
batadv_iv_ogm_neigh_dump_hardif β dumps the neighbours of a hard interface straight into a message. That's the whole vibe. π«Ά
πΈ SYNOPSIS πΈ
int batadv_iv_ogm_neigh_dump_hardif (struct sk_buff *msg , u32 portid ,
u32 seq , struct batadv_priv *bat_priv , struct batadv_hard_iface
*hard_iface , int *idx_s );
π¦ ARGUMENTS π¦
msgβ the netlink message we're dumping into. This is the canvas, the message gets the neighbours poured into it πportidβ the port that's making the netlink request. Like, who's asking, basically.seqβ the sequence number of the netlink message. Gotta keep the messages in order, it's giving organized queen πbat_privβ the bat priv holding all the mesh interface information. The whole mesh brain trust lives here fr fr.hard_ifaceβ the hard interface whose neighbours we're dumping. This one's literally the subject of the whole function, no cap.idx_sβ number of entries to skip. Yes bestie, it's a skip counter, we're not starting from zero necessarily π
π DESCRIPTION π
So here's the thing β this function assumes the caller holds rcu_read_lock. That's not a suggestion, that's the rule. Like, the caller has to be holding it already. This function is not out here grabbing locks for you, she's assuming you did your homework. π§
Lowkey important caveat: the function assumes the caller holds rcu_read_lock. If you didn't, that's on you, and it's giving undefined-vibes territory π
β RETURN β
Returns an error code, or 0 on success. Slay when it's zero, cry when it's not π
π SEE ALSO π
The whole friend group, present and accounted for β plus the kernel file ./net/batman-adv/bat_iv_ogm.c they all live in:
enum batadv_dup_status(9)batadv_ring_buffer_set(9)batadv_ring_buffer_avg(9)batadv_iv_ogm_orig_get(9)batadv_iv_ogm_neigh_new(9)batadv_iv_ogm_iface_enable(9)batadv_iv_ogm_iface_disable(9)batadv_iv_ogm_iface_update_mac(9)batadv_iv_ogm_primary_iface_set(9)batadv_iv_ogm_emit_send_time(9)batadv_iv_ogm_fwd_send_time(9)batadv_hop_penalty(9)batadv_iv_ogm_aggr_packet(9)batadv_iv_ogm_send_to_if(9)batadv_iv_ogm_emit(9)batadv_iv_ogm_can_aggregate(9)batadv_iv_ogm_aggregate_new(9)batadv_iv_ogm_aggregate(9)batadv_iv_ogm_queue_add(9)batadv_iv_ogm_forward(9)batadv_iv_ogm_slide_own_bcast_window(9)batadv_iv_ogm_schedule_buff(9)batadv_iv_ogm_schedule(9)batadv_iv_ogm_reschedule(9)batadv_iv_orig_ifinfo_sum(9)batadv_iv_ogm_neigh_ifinfo_sum(9)batadv_iv_ogm_orig_update(9)batadv_iv_ogm_calc_tq(9)batadv_iv_ogm_update_seqnos(9)batadv_orig_to_direct_router(9)batadv_iv_ogm_process_per_outif(9)batadv_iv_ogm_process_reply(9)batadv_iv_ogm_process(9)batadv_iv_send_outstanding_bat_ogm_packet(9)batadv_iv_ogm_receive(9)batadv_iv_ogm_neigh_get_tq_avg(9)batadv_iv_ogm_orig_dump_subentry(9)batadv_iv_ogm_orig_dump_entry(9)batadv_iv_ogm_orig_dump_bucket(9)batadv_iv_ogm_orig_dump(9)batadv_iv_ogm_neigh_diff(9)batadv_iv_ogm_neigh_dump_neigh(9)batadv_iv_ogm_neigh_dump(9)batadv_iv_ogm_neigh_cmp(9)batadv_iv_ogm_neigh_is_sob(9)batadv_iv_iface_enabled(9)batadv_iv_init_sel_class(9)batadv_iv_gw_get_best_gw_node(9)batadv_iv_gw_is_eligible(9)batadv_iv_gw_dump_entry(9)batadv_iv_gw_dump(9)batadv_iv_init(9)batadv_iv_deinit(9)
That's the whole page, bestie, and yes it ate π
Signing off from ./net/batman-adv, dated October 2026 β see you in the next dump π¦β¨
π¦ 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