ENUM OVS_VPORT_TYPE(9)
β¨ enum ovs_vport_type(9) β¨
okay bestie come closer β this is a page from the Kernel API Manual and it's literally just a little enum that tells you what kind of vport you're dealing with, for %OVS_VPORT_ATTR_TYPE. that's it. that's the whole vibe. π¦
πΈ NAME πΈ
enum ovs_vport_type β OVS vport types for %OVS_VPORT_ATTR_TYPE. yeah. that's the assignment and she ate. π
π SYNOPSIS π
enum ovs_vport_type {
OVS_VPORT_TYPE_NETDEV ,
OVS_VPORT_TYPE_INTERNAL ,
OVS_VPORT_TYPE_GRE ,
OVS_VPORT_TYPE_VXLAN ,
OVS_VPORT_TYPE_GENEVE
};
β Constants β
bestie there are five and i'm gonna walk you through each one, no skipping, we don't do that here π«Ά
OVS_VPORT_TYPE_NETDEVβ a network device that already exists and got attached as a vport. it's giving "i was here first" main character energy. πOVS_VPORT_TYPE_INTERNALβ a network device that's implemented by the OVS datapath itself. homemade. artisanal. β¨OVS_VPORT_TYPE_GREβ legacy GRE tunnel. not supported, and yes we're getting into that below. πOVS_VPORT_TYPE_VXLANβ legacy VXLAN tunnel. also not supported. see below. πOVS_VPORT_TYPE_GENEVEβ legacy Geneve tunnel. also not supported. yes, see below again. π
π Description π
so here's the tea and it's kind of a big deal: the tunnel vport types are not supported. periodt. π«
instead, you create the tunnel device using RTM_NEWLINK with the appropriate IFLA_INFO_KIND (e.g. gre, gretap, vxlan, geneve, or other tunnel types) and then you add it as OVS_VPORT_TYPE_NETDEV. that's the whole move. lowkey elegant ngl. π
and if you want to match and set tunnel parameters on a per-flow basis, the tunnel device should collect metadata. to do that, some tunnel types require an explicit flag β like IFLA_VXLAN_COLLECT_METADATA for vxlan β while others such as bareudp collect metadata unconditionally.
ngl the original page has a stray``hanging around afterbareudpthere and i'm choosing to believe it's a little sparkle, not a typo. we move. π«
π₯ SEE ALSO π₯
go read these next bestie, they're all in the kernel file ./include/uapi/linux/openvswitch.h and they're iconic in their own right:
struct ovs_header(9)enum ovs_datapath_attr(9)enum ovs_packet_attr(9)enum ovs_vport_attr(9)enum ovs_vport_upcall_attr(9)enum ovs_frag_type(9)enum ovs_flow_attr(9)enum ovs_sample_attr(9)enum ovs_userspace_attr(9)struct ovs_action_push_mpls(9)struct ovs_action_add_mpls(9)struct ovs_action_push_vlan(9)enum ovs_ct_attr(9)enum ovs_nat_attr(9)struct ovs_action_push_eth(9)enum ovs_check_pkt_len_attr(9)enum ovs_psample_attr(9)enum ovs_action_attr(9)
okay that's the whole page, mwah π this little blessing lives in ./include/uapi/linux and it's dated October 2026 β a whole vibe from the future, we love her, bye bestie π§πΈ
π¦ 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