register_ne...notifier_net(9)
π register_ne...notifier_net(9) π
okay bestie, so this is a page straight out of the Kernel API Manual and it's genuinely so good β we're talking about register_netdevice_notifier_net, the little function that gives you a per-netns</> network notifier block. yes, per-netns, she's namespace-aware, we love that for her β¨
πΈ NAME πΈ
register_netdevice_notifier_net β register a per-netns network notifier block π«Ά
β SYNOPSIS β
int register_netdevice_notifier_net (struct net *net , struct
notifier_block *nb );
π ARGUMENTS π
netβ the network namespace π¦ (yep, your netns, your rules)nbβ the notifier π
π₯ DESCRIPTION π₯
So here's the vibe: you register a notifier to be called when network device events occur. the notifier you pass in gets linked straight into the kernel structures, and β this is important, bestie, listen β it must not be reused until it has been unregistered. no cap. and if something goes wrong? you get a negative errno code back on a failure. π
When it's registered, all registration and up events are replayed to the new notifier, which lets the device have a race free view of the network device list. like it literally catches you up on everything you missed, it's giving main character energy π§
ngl, that "don't reuse it until unregistered" part is the whole ballgame. mess with it and the kernel will be very not slay about it π
π SEE ALSO π
Kernel file ./net/core/dev.c β and honestly the whole squad, here she is, the full lineup, no skips, no cuts, periodt π
dev_add_pack(9),__dev_remove_pack(9),dev_remove_pack(9),dev_get_iflink(9),dev_fill_metadata_dst(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),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)
and that's the whole page, babe π she lives in ./net/core, dated October 2026, and this absolute icon is filed under register_ne...notifier_net(9). go forth and register responsibly ππ«
π¦ 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