batadv_dat_check_dhcp_ack(9)
π batadv_dat_check_dhcp_ack(9) π
okay so bestie, we're in the Kernel API Manual today and this one's a little function with a big job β think of it as the bouncer at the club door of your network stack, checking IDs for DHCP ACKs β¨
πΈ NAME πΈ
batadv_dat_check_dhcp_ack β examine a packet to see if it's a valid DHCP message, no cap π΅οΈββοΈ
π¦ SYNOPSIS π¦
bool batadv_dat_check_dhcp_ack (struct sk_buff *skb , __be16 proto ,
__be32 *ip_src , u8 *chaddr , __be32 *yiaddr );
like, that's the whole signature, literally all of it, don't @ me π
π ARGUMENTS π
skbβ the packet we're checking, the main character of this whole situation π¦protoβ the ethernet protocol hint (and yeah, it's behind a potential vlan, so heads up for that)ip_srcβ a buffer where we're gonna stash the IPv4 source address πchaddrβ a buffer for the DHCP Client Hardware Address (the client's MAC, iykyk)yiaddrβ a buffer for the DHCP Your IP Address field, yes that's the actual name, iconic
π₯ DESCRIPTION π₯
So what it does: it checks whether the given skb is a valid DHCPACK. And if it is? It stores three things in the buffers you so kindly provided π
- the IPv4 server source address β into
ip_src - the client MAC address β into
chaddr - the client IPv4 address β into
yiaddr
β οΈ real talk, bestie: the caller needs to make sure the skb network header is set correctly. That's not this function's problem, that's yours. Don't set it wrong and then act surprised. π
β RETURN β
Returns True if the skb is a valid DHCPACK β slay π
Returns False otherwise β not it, bestie π
π SEE ALSO π
Kernel file ./net/batman-adv/distributed-arp-table.c, plus a whole friend group of symbols:
enum batadv_bootpop(9)enum batadv_boothtype(9)enum batadv_dhcpoptioncode(9)enum batadv_dhcptype(9)struct batadv_dhcp_packet(9)struct batadv_dhcp_header(9)struct batadv_dhcp_option_header(9)batadv_dat_start_timer(9)batadv_dat_entry_release(9)batadv_dat_entry_put(9)batadv_dat_to_purge(9)__batadv_dat_purge(9)batadv_dat_purge(9)batadv_compare_dat(9)batadv_arp_hw_src(9)batadv_arp_ip_src(9)batadv_arp_hw_dst(9)batadv_arp_ip_dst(9)batadv_hash_dat(9)batadv_dat_entry_hash_find(9)batadv_dat_entry_add(9)batadv_dbg_arp(9)batadv_is_orig_node_eligible(9)batadv_choose_next_candidate(9)batadv_dat_select_candidates(9)batadv_dat_forward_data(9)batadv_dat_tvlv_container_update(9)batadv_dat_status_update(9)batadv_dat_tvlv_ogm_handler_v1(9)batadv_dat_hash_free(9)batadv_dat_init(9)batadv_dat_free(9)batadv_dat_cache_dump_entry(9)batadv_dat_cache_dump_bucket(9)batadv_dat_cache_dump(9)batadv_arp_get_type(9)batadv_dat_get_vid(9)batadv_dat_arp_create_reply(9)batadv_dat_snoop_outgoing_arp_request(9)batadv_dat_snoop_incoming_arp_request(9)batadv_dat_snoop_outgoing_arp_reply(9)batadv_dat_snoop_incoming_arp_reply(9)batadv_dat_check_dhcp_ipudp(9)batadv_dat_check_dhcp(9)batadv_dat_get_dhcp_message_type(9)batadv_dat_dhcp_get_yiaddr(9)batadv_dat_get_dhcp_chaddr(9)batadv_dat_put_dhcp(9)batadv_dat_snoop_outgoing_dhcp_ack(9)batadv_dat_snoop_incoming_dhcp_ack(9)batadv_dat_drop_broadcast_packet(9)
and that's the whole page, bestie π«Ά this little love letter lives in ./net/batman-adv, dated October 2026, and yes the header said batadv_dat_check_dhcp_ack(9) twice because it's extra like that π
β¨ go read your network headers correctly, mwah π
π¦ 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