ENUM NETDEV_PRIV_FLAGS(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… enum netdev_priv_flags(9) β€” the Kernel API Manual, bestie edition

okay so this is the enum netdev_priv_flags(9) page from the Kernel API Manual and honestly it's giving "backstage pass to the kernel's private business" energy. we're literally looking at &struct net_device priv_flags here. buckle up ✨


🌸 NAME 🌸

enum netdev_priv_flags β€” the &struct net_device priv_flags, aka the kernel's private little flag stash πŸ’…


πŸ¦‹ SYNOPSIS πŸ¦‹

here's the whole enum, no edits, exactly as it lives:

enum netdev_priv_flags {
    IFF_802_1Q_VLAN ,
    IFF_EBRIDGE ,
    IFF_BONDING ,
    IFF_ISATAP ,
    IFF_WAN_HDLC ,
    IFF_XMIT_DST_RELEASE ,
    IFF_DONT_BRIDGE ,
    IFF_DISABLE_NETPOLL ,
    IFF_MACVLAN_PORT ,
    IFF_BRIDGE_PORT ,
    IFF_OVS_DATAPATH ,
    IFF_TX_SKB_SHARING ,
    IFF_UNICAST_FLT ,
    IFF_TEAM_PORT ,
    IFF_SUPP_NOFCS ,
    IFF_LIVE_ADDR_CHANGE ,
    IFF_MACVLAN ,
    IFF_XMIT_DST_RELEASE_PERM ,
    IFF_L3MDEV_MASTER ,
    IFF_NO_QUEUE ,
    IFF_OPENVSWITCH ,
    IFF_L3MDEV_SLAVE ,
    IFF_TEAM ,
    IFF_PHONY_HEADROOM ,
    IFF_MACSEC ,
    IFF_NO_RX_HANDLER ,
    IFF_FAILOVER ,
    IFF_FAILOVER_SLAVE ,
    IFF_L3MDEV_RX_HANDLER ,
    IFF_NO_ADDRCONF ,
    IFF_TX_SKB_NO_LINEAR

};

πŸŽ€ CONSTANTS πŸŽ€

every single one, bestie, with the tea on each πŸ‘‘

  • IFF_802_1Q_VLAN β€” it's an 802.1Q VLAN device πŸ“
  • IFF_EBRIDGE β€” Ethernet bridging device, classic
  • IFF_BONDING β€” this one's either a bonding master or a slave, it contains multitudes
  • IFF_ISATAP β€” ISATAP interface (RFC4214), yes the RFC is cited, we stay scholarly πŸ’œ
  • IFF_WAN_HDLC β€” WAN HDLC device
  • IFF_XMIT_DST_RELEASE β€” big permission energy: dev_hard_start_xmit is allowed to release skb->dst πŸ”₯
  • IFF_DONT_BRIDGE β€” literally "disallow bridging this ether dev", the flag said no πŸ’€
  • IFF_DISABLE_NETPOLL β€” disables netpoll at run-time
  • IFF_MACVLAN_PORT β€” device is being used as a macvlan port
  • IFF_BRIDGE_PORT β€” device is being used as a bridge port
  • IFF_OVS_DATAPATH β€” device is used as an Open vSwitch datapath port
  • IFF_TX_SKB_SHARING β€” the interface supports sharing skbs on transmit, generous icon
  • IFF_UNICAST_FLT β€” supports unicast filtering πŸ¦‹
  • IFF_TEAM_PORT β€” device is used as a team port
  • IFF_SUPP_NOFCS β€” device supports sending custom FCS, fancy
  • IFF_LIVE_ADDR_CHANGE β€” device supports hardware address change when it's running, main character energy fr fr
  • IFF_MACVLAN β€” it's a Macvlan device
  • IFF_XMIT_DST_RELEASE_PERM β€” IFF_XMIT_DST_RELEASE but not taking into account underlying stacked devices
  • IFF_L3MDEV_MASTER β€” device is an L3 master device πŸ‘‘
  • IFF_NO_QUEUE β€” device can run without a qdisc attached
  • IFF_OPENVSWITCH β€” device is an Open vSwitch master
  • IFF_L3MDEV_SLAVE β€” device is enslaved to an L3 master device
  • IFF_TEAM β€” device is a team device
  • IFF_PHONY_HEADROOM β€” the headroom value is controlled by an external entity (i.e. the master device for bridged veth), yeah it's "phony", it said what it said πŸ™ˆ
  • IFF_MACSEC β€” device is a MACsec device
  • IFF_NO_RX_HANDLER β€” device doesn't support the rx_handler hook, no hook no problem
  • IFF_FAILOVER β€” device is a failover master device
  • IFF_FAILOVER_SLAVE β€” device is the lower dev of a failover master device
  • IFF_L3MDEV_RX_HANDLER β€” only invoke the rx handler of the L3 master device
  • IFF_NO_ADDRCONF β€” prevent ipv6 addrconf πŸ›‘
  • IFF_TX_SKB_NO_LINEAR β€” device/driver is capable of xmitting frames with skb_headlen(skb) == 0 (data starts from frag0) ⭐

🌈 DESCRIPTION 🌈

so these flags live in the struct net_device, and ngl they are only set internally by drivers and used in the kernel. that's the whole vibe.

these flags are invisible to userspace β€” which means (and this is the important part, don't skip it) the order of these flags can change during any kernel release 😭 so do not go assuming positions, bestie, the layout is not stable.

and if you were thinking about extending this enum? don't. you should add bitfield booleans after either net_device::priv_flags (hotpath) or ::threaded (slowpath) instead of extending these flags. periodt πŸ’…

🧚 SEE ALSO 🧚

Kernel file ./include/linux/netdevice.h β€” and the whole friend group:


🫢 SIGN-OFF 🫢

that's the whole page, bestie β€” brought to you by the source at ./include/linux, dated October 2026, and yeah this is still enum netdev_priv_flags(9) in the Kernel API Manual. go forth and do not touch the flags πŸ’–βœ¨

πŸ“¦ where this page comes from