batadv_orig_...irect_router(9)
π batadv_orig_to_direct_router β kernel API manual, bestie edition π
okay so real talk, this is a page from the Kernel API Manual and it's about one tiny little function in batman-adv land. it's short, it's sweet, and honestly it's giving "small function, big job" energy. let's get into it β¨
π¦ NAME π¦
batadv_orig_to_direct_router β literally just: get the direct next hop neighbor for an orig address. that's the whole vibe. no cap. π
πΈ SYNOPSIS πΈ
struct batadv_neigh_node * batadv_orig_to_direct_router (struct
batadv_priv *bat_priv , u8 *orig_addr , struct batadv_hard_iface
*if_outgoing );
so you hand it three things and it hands you back a struct batadv_neigh_node *. cute little exchange, iykyk π
β¨ ARGUMENTS β¨
bat_privβ the bat priv, aka the big bag of mesh interface information. it knows everything, it's the main character fr πorig_addrβ the originator MAC address you're searching for the best next hop router for. it's au8 *, it's giving pointer energy π¦if_outgoingβ the interface where the OGM should be sent to. like, which door are we sending the packet out of πͺ
π RETURN π
you get back a neighbor node β the best router towards the given originator address, periodt.
heads up bestie: bonding candidates are ignored π like they literally do not get considered, so don't go looking for them in the result. no cap, that's a real caveat, keep it in mind.
π SEE ALSO π
okay this list is long and honestly it ate. it's all from the kernel file ./net/batman-adv/bat_iv_ogm.c, so bring snacks, this is a whole tour π
./net/batman-adv/bat_iv_ogm.cenum 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_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_hardif(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)
like i said. a lot. and every single one of them is here, i didn't skip a single one, you're welcome bestie π«Ά
π§ sign-off π§
this page came out of ./net/batman-adv in October 2026, under the Kernel API Manual, and yes it's still the same batadv_orig_...irect_router(9) energy we started with π« go read your kernel source, it's iconic, and remember: bonding candidates are ignored. slay. π
β¨
π¦ 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