dev_fill_metadata_dst(9)

๐Ÿ“ฆ version 7.3.1, in nixpkgs unstable

๐Ÿ’… dev_fill_metadata_dst โ€” a Kernel API Manual moment (section 9, bestie)

okay so this vibe is from the kernel API manual, section 9 โ€” like, the section for kernel routines, iykyk. and the whole thing is about ONE tiny little function that does a very specific slay. let's get into it ๐Ÿฉท


โœจ NAME โœจ

dev_fill_metadata_dst โ€” literally just "Retrieve tunnel egress information." that's the whole assignment. periodt.


๐ŸŒธ SYNOPSIS ๐ŸŒธ

int dev_fill_metadata_dst (struct net_device *dev , struct sk_buff *skb
);

it returns an int, takes a struct net_device * and a struct sk_buff *, and that's the cast. no notes ๐Ÿ’…


๐ŸŽ€ ARGUMENTS ๐ŸŽ€

  • dev โ€” the targeted interface. the one we're pointing at ๐Ÿ‘‰๐Ÿฆ‹
  • skb โ€” The packet. the actual lil guy we're doing this to ๐Ÿ“ฆโœจ

๐Ÿงš DESCRIPTION ๐Ÿงš

so here's the lore: for better visibility of tunnel traffic, OVS needs to retrieve egress tunnel information for a packet. that's it, that's the reason. the following API allows the user to get this info ๐Ÿ™Œ

like the whole point of this function is that OVS wants to see what's coming out of the tunnel, and this is the lil doorway that gives it that info. no cap, that's the entire description โ€” it's short but it's iconic ๐Ÿ‘‘


๐Ÿ”ฅ SEE ALSO ๐Ÿ”ฅ

kernel file ./net/core/dev.c โ€” and bestie, buckle up, because this list is LONG. like, genuinely long. i'm not skipping a single one, we're doing the full roll call ๐ŸŒˆ:

dev_add_pack(9), __dev_remove_pack(9), dev_remove_pack(9), dev_get_iflink(9), netdev_napi_by_id_lock(9), __dev_get_by_name(9), dev_get_by_name_rcu(9), netdev_get_by_name(9), __dev_get_by_index(9), dev_get_by_index_rcu(9), netdev_get_by_index(9), dev_get_by_napi_id(9), netdev_get_by_index_lock(9), netdev_get_name(9), dev_getbyhwaddr_rcu(9), dev_getbyhwaddr(9), netdev_get_by_flags_rcu(9), dev_valid_name(9), __dev_alloc_name(9), dev_alloc_name(9), dev_get_alias(9), netdev_features_change(9), __netdev_notify_peers(9), netdev_notify_peers(9), dev_disable_gro_hw(9), register_netdevice_notifier(9), unregister_netdevice_notifier(9), register_netdevice_notifier_net(9), unregister_netdevice_notifier_net(9), call_netdevice_notifiers_info(9), call_netdevice_notifiers_info_robust(9), call_netdevice_notifiers(9), call_netdevice_notifiers_mtu(9), dev_forward_skb(9), dev_nit_active_rcu(9), netif_setup_tc(9), netif_set_real_num_rx_queues(9), netif_set_real_num_queues(9), netif_set_tso_max_size(9), netif_set_tso_max_segs(9), netif_inherit_tso_max(9), netif_get_num_default_rss_queues(9), netif_device_detach(9), netif_device_attach(9), dev_loopback_xmit(9), __dev_queue_xmit(9), rps_flow_is_active(9), rps_may_expire_flow(9), __netif_rx(9), netif_rx(9), netdev_is_rx_handler_busy(9), netdev_rx_handler_register(9), netdev_rx_handler_unregister(9), netif_receive_skb_core(9), netif_receive_skb(9), netif_receive_skb_list(9), __napi_schedule(9), napi_schedule_prep(9), __napi_schedule_irqoff(9), netif_threaded_enable(9), netif_queue_set_napi(9), napi_disable(9), napi_enable(9), netdev_has_upper_dev(9), netdev_has_upper_dev_all_rcu(9), netdev_has_any_upper_dev(9), netdev_master_upper_dev_get(9), netdev_has_any_lower_dev(9), netdev_upper_get_next_dev_rcu(9), netdev_lower_get_next_private(9), netdev_lower_get_next_private_rcu(9), netdev_lower_get_next(9), netdev_lower_get_first_private_rcu(9), netdev_master_upper_dev_get_rcu(9), netdev_upper_dev_link(9), netdev_master_upper_dev_link(9), netdev_upper_dev_unlink(9), netdev_bonding_info_change(9), netdev_get_xmit_slave(9), netdev_sk_get_lowest_dev(9), netdev_lower_state_changed(9), netif_get_flags(9), netif_set_mtu_ext(9), netif_pre_changeaddr_notify(9), dev_get_phys_port_id(9), dev_get_phys_port_name(9), netif_get_port_parent_id(9), netdev_port_same_parent_id(9), netdev_change_proto_down_reason_locked(9), dev_change_xdp_fd(9), dev_index_reserve(9), netdev_update_features(9), netdev_change_features(9), netif_stacked_transfer_operstate(9), register_netdevice(9), register_netdev(9), netdev_wait_allrefs_any(9), dev_get_stats(9), dev_fetch_sw_netstats(9), dev_get_tstats64(9), netdev_sw_irq_coalesce_default_on(9), alloc_netdev_mqs(9), free_netdev(9), alloc_netdev_dummy(9), synchronize_net(9), unregister_netdevice_queue(9), unregister_netdevice_many(9), unregister_netdev(9), netdev_increment_features(9), netdev_compute_master_upper_features(9), netdev_drivername(9)

likeโ€ฆ that's the whole friend group right there. every single one of them showed up to the party ๐Ÿ’œ๐Ÿซถ

ngl, that SEE ALSO list is giving "read the whole dev.c file while you're at it" energy ๐Ÿ˜ญ but honestly? valid.

okay that's the page!! and for the lil sign-off: this one lives in the source tree at ./net/core, and it's dated October 2026 โ€” a whole future date, main character energy honestly ๐Ÿ”ฎโญ mwah, go read your kernel source bestie, ily, bye ๐Ÿ’–๐ŸŽ€๐Ÿฆ‹

๐Ÿ“ฆ where this page comes from