batadv_iv_ogm_receive(9)
π batadv_iv_ogm_receive(9) β the Kernel API Manual, bestie edition π¦
okay so picture this: it's a Kernel API Manual page (that's the manual name, iykyk β¨) and the star of the show is batadv_iv_ogm_receive. literally the moment a B.A.T.M.A.N. IV OGM packet rolls up to the door. let's get into it π
β¨ NAME β¨
batadv_iv_ogm_receive β receive a B.A.T.M.A.N. IV OGM packet π
π«Ά SYNOPSIS π«Ά
int batadv_iv_ogm_receive (struct sk_buff *skb , struct
batadv_hard_iface *if_incoming );
that's the whole signature, no cap. two args, one int coming back at you π₯
πΈ ARGUMENTS πΈ
skbβ theskbthat's carrying the OGM packet. this is the main character of the whole function, tbh πif_incomingβ the interface where the packet got received. the "where did this come from" of it all π§
π DESCRIPTION π
so here's the tea, bestie π
First up: the packet gets validated. vibe check, essentially β no sketchy packets getting through on this function's watch π
Then the glow-up happens: the aggregated OGM packet gets split into individual OGMs (one big packet becoming a bunch of little ones, iconic behaviour honestly), and each one of those gets handed off to batadv_iv_ogm_process. very "here you go, bestie, take it from here" π«Ά
and the big one: ownership of skb is always taken over by this function. not sometimes. not "if it feels like it." always. so don't go freeing it yourself afterwards, that's not your job anymore π
π RETURN π
NET_RX_SUCCESS or NET_RX_DROP β that's the whole menu, two options, pick your fighter β
π SEE ALSO π
like, so many friends. the whole batman-adv extended universe fr fr πΈ head to Kernel file ./net/batman-adv/bat_iv_ogm.c for the source, and then:
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_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)
that's the entire friend group. no one left behind π
okay that's the page!! mwah π this one shipped out from ./net/batman-adv back in October 2026 β so like, technically future-core of it all, but the manual said it so I said it π¦β¨ go read the source, ily, bye π
π¦ 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