batadv_bla_send_loopdetect(9)
π batadv_bla_send_loopdetect β a Kernel API Manual moment β¨
okay bestie, so we're in the Kernel API Manual today and the star of the show is batadv_bla_send_loopdetect β literally the function that sends a loopdetect frame π
β¨ NAME β¨
batadv_bla_send_loopdetect β send a loopdetect frame πΈ
π¦ SYNOPSIS π¦
void batadv_bla_send_loopdetect (struct batadv_priv *bat_priv , struct
batadv_bla_backbone_gw *backbone_gw );
no cap, that's the whole signature β it returns void, so don't go looking for a return value, there isn't one π
π ARGUMENTS π
bat_privβ the bat priv with all the mesh interface information β¨ like, it's the whole mesh-interface-info situation in one structbackbone_gwβ the backbone gateway for which a loop should be detected π
π DESCRIPTION π
so here's the vibe check π«Ά β bridge loop avoidance has some loops it can't handle, and this function is the girlboss move for catching those. It sends a loop detection packet out on the backbone.
and here's the iconic little twist π β unlike other BLA frames, this frame will be allowed on the mesh by other nodes. That's the whole trick. So if it gets received on the mesh? that literally indicates that there is a loop ππ
fr fr, the frame showing back up on the mesh is the red flag π© β that's the detection working as intended, not the network being cute.
π SEE ALSO π
Kernel file: ./net/batman-adv/bridge_loop_avoidance.c π§
the whole friend group, one bullet each π:
batadv_choose_claim(9)batadv_choose_backbone_gw(9)batadv_compare_backbone_gw(9)batadv_compare_claim(9)batadv_backbone_gw_release(9)batadv_backbone_gw_put(9)batadv_claim_release(9)batadv_claim_put(9)batadv_claim_hash_find(9)batadv_backbone_hash_find(9)batadv_bla_del_backbone_claims(9)batadv_bla_send_claim(9)batadv_bla_loopdetect_report(9)batadv_bla_get_backbone_gw(9)batadv_bla_update_own_backbone_gw(9)batadv_bla_answer_request(9)batadv_bla_send_request(9)batadv_bla_send_announce(9)batadv_bla_add_claim(9)batadv_bla_claim_get_backbone_gw(9)batadv_bla_del_claim(9)batadv_handle_announce(9)batadv_handle_request(9)batadv_handle_unclaim(9)batadv_handle_claim(9)batadv_check_claim_group(9)batadv_bla_process_claim(9)batadv_bla_purge_backbone_gw(9)batadv_bla_purge_claims(9)batadv_bla_update_orig_address(9)batadv_bla_status_update(9)batadv_bla_periodic_work(9)batadv_bla_init(9)batadv_bla_check_duplist(9)batadv_bla_check_ucast_duplist(9)batadv_bla_check_bcast_duplist(9)batadv_bla_is_backbone_gw_orig(9)batadv_bla_is_backbone_gw(9)batadv_bla_free(9)batadv_bla_loopdetect_check(9)batadv_bla_rx(9)batadv_bla_tx(9)batadv_bla_claim_dump_entry(9)batadv_bla_claim_dump_bucket(9)batadv_bla_claim_dump(9)batadv_bla_backbone_dump_entry(9)batadv_bla_backbone_dump_bucket(9)batadv_bla_backbone_dump(9)batadv_bla_check_claim(9)
β¨ that's the page, bestie β¨ this one lives in ./net/batman-adv, dated October 2026 β go off, bridge loop avoidance, you ate π
ππ
π¦ 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