github.com/sagernet/netlink@v0.0.0-20240612041022-b9a21c07ac6a/nl/link_linux.go (about)

     1  package nl
     2  
     3  import (
     4  	"bytes"
     5  	"encoding/binary"
     6  	"unsafe"
     7  )
     8  
     9  const (
    10  	DEFAULT_CHANGE = 0xFFFFFFFF
    11  )
    12  
    13  const (
    14  	IFLA_INFO_UNSPEC = iota
    15  	IFLA_INFO_KIND
    16  	IFLA_INFO_DATA
    17  	IFLA_INFO_XSTATS
    18  	IFLA_INFO_SLAVE_KIND
    19  	IFLA_INFO_SLAVE_DATA
    20  	IFLA_INFO_MAX = IFLA_INFO_SLAVE_DATA
    21  )
    22  
    23  const (
    24  	IFLA_VLAN_UNSPEC = iota
    25  	IFLA_VLAN_ID
    26  	IFLA_VLAN_FLAGS
    27  	IFLA_VLAN_EGRESS_QOS
    28  	IFLA_VLAN_INGRESS_QOS
    29  	IFLA_VLAN_PROTOCOL
    30  	IFLA_VLAN_MAX = IFLA_VLAN_PROTOCOL
    31  )
    32  
    33  const (
    34  	VETH_INFO_UNSPEC = iota
    35  	VETH_INFO_PEER
    36  	VETH_INFO_MAX = VETH_INFO_PEER
    37  )
    38  
    39  const (
    40  	IFLA_VXLAN_UNSPEC = iota
    41  	IFLA_VXLAN_ID
    42  	IFLA_VXLAN_GROUP
    43  	IFLA_VXLAN_LINK
    44  	IFLA_VXLAN_LOCAL
    45  	IFLA_VXLAN_TTL
    46  	IFLA_VXLAN_TOS
    47  	IFLA_VXLAN_LEARNING
    48  	IFLA_VXLAN_AGEING
    49  	IFLA_VXLAN_LIMIT
    50  	IFLA_VXLAN_PORT_RANGE
    51  	IFLA_VXLAN_PROXY
    52  	IFLA_VXLAN_RSC
    53  	IFLA_VXLAN_L2MISS
    54  	IFLA_VXLAN_L3MISS
    55  	IFLA_VXLAN_PORT
    56  	IFLA_VXLAN_GROUP6
    57  	IFLA_VXLAN_LOCAL6
    58  	IFLA_VXLAN_UDP_CSUM
    59  	IFLA_VXLAN_UDP_ZERO_CSUM6_TX
    60  	IFLA_VXLAN_UDP_ZERO_CSUM6_RX
    61  	IFLA_VXLAN_REMCSUM_TX
    62  	IFLA_VXLAN_REMCSUM_RX
    63  	IFLA_VXLAN_GBP
    64  	IFLA_VXLAN_REMCSUM_NOPARTIAL
    65  	IFLA_VXLAN_FLOWBASED
    66  	IFLA_VXLAN_MAX = IFLA_VXLAN_FLOWBASED
    67  )
    68  
    69  const (
    70  	BRIDGE_MODE_UNSPEC = iota
    71  	BRIDGE_MODE_HAIRPIN
    72  )
    73  
    74  const (
    75  	IFLA_BRPORT_UNSPEC = iota
    76  	IFLA_BRPORT_STATE
    77  	IFLA_BRPORT_PRIORITY
    78  	IFLA_BRPORT_COST
    79  	IFLA_BRPORT_MODE
    80  	IFLA_BRPORT_GUARD
    81  	IFLA_BRPORT_PROTECT
    82  	IFLA_BRPORT_FAST_LEAVE
    83  	IFLA_BRPORT_LEARNING
    84  	IFLA_BRPORT_UNICAST_FLOOD
    85  	IFLA_BRPORT_PROXYARP
    86  	IFLA_BRPORT_LEARNING_SYNC
    87  	IFLA_BRPORT_PROXYARP_WIFI
    88  	IFLA_BRPORT_MAX = IFLA_BRPORT_PROXYARP_WIFI
    89  )
    90  
    91  const (
    92  	IFLA_IPVLAN_UNSPEC = iota
    93  	IFLA_IPVLAN_MODE
    94  	IFLA_IPVLAN_FLAG
    95  	IFLA_IPVLAN_MAX = IFLA_IPVLAN_FLAG
    96  )
    97  
    98  const (
    99  	IFLA_MACVLAN_UNSPEC = iota
   100  	IFLA_MACVLAN_MODE
   101  	IFLA_MACVLAN_FLAGS
   102  	IFLA_MACVLAN_MACADDR_MODE
   103  	IFLA_MACVLAN_MACADDR
   104  	IFLA_MACVLAN_MACADDR_DATA
   105  	IFLA_MACVLAN_MACADDR_COUNT
   106  	IFLA_MACVLAN_MAX = IFLA_MACVLAN_FLAGS
   107  )
   108  
   109  const (
   110  	MACVLAN_MODE_PRIVATE  = 1
   111  	MACVLAN_MODE_VEPA     = 2
   112  	MACVLAN_MODE_BRIDGE   = 4
   113  	MACVLAN_MODE_PASSTHRU = 8
   114  	MACVLAN_MODE_SOURCE   = 16
   115  )
   116  
   117  const (
   118  	MACVLAN_MACADDR_ADD = iota
   119  	MACVLAN_MACADDR_DEL
   120  	MACVLAN_MACADDR_FLUSH
   121  	MACVLAN_MACADDR_SET
   122  )
   123  
   124  const (
   125  	IFLA_BOND_UNSPEC = iota
   126  	IFLA_BOND_MODE
   127  	IFLA_BOND_ACTIVE_SLAVE
   128  	IFLA_BOND_MIIMON
   129  	IFLA_BOND_UPDELAY
   130  	IFLA_BOND_DOWNDELAY
   131  	IFLA_BOND_USE_CARRIER
   132  	IFLA_BOND_ARP_INTERVAL
   133  	IFLA_BOND_ARP_IP_TARGET
   134  	IFLA_BOND_ARP_VALIDATE
   135  	IFLA_BOND_ARP_ALL_TARGETS
   136  	IFLA_BOND_PRIMARY
   137  	IFLA_BOND_PRIMARY_RESELECT
   138  	IFLA_BOND_FAIL_OVER_MAC
   139  	IFLA_BOND_XMIT_HASH_POLICY
   140  	IFLA_BOND_RESEND_IGMP
   141  	IFLA_BOND_NUM_PEER_NOTIF
   142  	IFLA_BOND_ALL_SLAVES_ACTIVE
   143  	IFLA_BOND_MIN_LINKS
   144  	IFLA_BOND_LP_INTERVAL
   145  	IFLA_BOND_PACKETS_PER_SLAVE
   146  	IFLA_BOND_AD_LACP_RATE
   147  	IFLA_BOND_AD_SELECT
   148  	IFLA_BOND_AD_INFO
   149  	IFLA_BOND_AD_ACTOR_SYS_PRIO
   150  	IFLA_BOND_AD_USER_PORT_KEY
   151  	IFLA_BOND_AD_ACTOR_SYSTEM
   152  	IFLA_BOND_TLB_DYNAMIC_LB
   153  )
   154  
   155  const (
   156  	IFLA_BOND_AD_INFO_UNSPEC = iota
   157  	IFLA_BOND_AD_INFO_AGGREGATOR
   158  	IFLA_BOND_AD_INFO_NUM_PORTS
   159  	IFLA_BOND_AD_INFO_ACTOR_KEY
   160  	IFLA_BOND_AD_INFO_PARTNER_KEY
   161  	IFLA_BOND_AD_INFO_PARTNER_MAC
   162  )
   163  
   164  const (
   165  	IFLA_BOND_SLAVE_UNSPEC = iota
   166  	IFLA_BOND_SLAVE_STATE
   167  	IFLA_BOND_SLAVE_MII_STATUS
   168  	IFLA_BOND_SLAVE_LINK_FAILURE_COUNT
   169  	IFLA_BOND_SLAVE_PERM_HWADDR
   170  	IFLA_BOND_SLAVE_QUEUE_ID
   171  	IFLA_BOND_SLAVE_AD_AGGREGATOR_ID
   172  	IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE
   173  	IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE
   174  )
   175  
   176  const (
   177  	IFLA_GENEVE_UNSPEC = iota
   178  	IFLA_GENEVE_ID     // vni
   179  	IFLA_GENEVE_REMOTE
   180  	IFLA_GENEVE_TTL
   181  	IFLA_GENEVE_TOS
   182  	IFLA_GENEVE_PORT // destination port
   183  	IFLA_GENEVE_COLLECT_METADATA
   184  	IFLA_GENEVE_REMOTE6
   185  	IFLA_GENEVE_UDP_CSUM
   186  	IFLA_GENEVE_UDP_ZERO_CSUM6_TX
   187  	IFLA_GENEVE_UDP_ZERO_CSUM6_RX
   188  	IFLA_GENEVE_LABEL
   189  	IFLA_GENEVE_MAX = IFLA_GENEVE_LABEL
   190  )
   191  
   192  const (
   193  	IFLA_GRE_UNSPEC = iota
   194  	IFLA_GRE_LINK
   195  	IFLA_GRE_IFLAGS
   196  	IFLA_GRE_OFLAGS
   197  	IFLA_GRE_IKEY
   198  	IFLA_GRE_OKEY
   199  	IFLA_GRE_LOCAL
   200  	IFLA_GRE_REMOTE
   201  	IFLA_GRE_TTL
   202  	IFLA_GRE_TOS
   203  	IFLA_GRE_PMTUDISC
   204  	IFLA_GRE_ENCAP_LIMIT
   205  	IFLA_GRE_FLOWINFO
   206  	IFLA_GRE_FLAGS
   207  	IFLA_GRE_ENCAP_TYPE
   208  	IFLA_GRE_ENCAP_FLAGS
   209  	IFLA_GRE_ENCAP_SPORT
   210  	IFLA_GRE_ENCAP_DPORT
   211  	IFLA_GRE_COLLECT_METADATA
   212  	IFLA_GRE_MAX = IFLA_GRE_COLLECT_METADATA
   213  )
   214  
   215  const (
   216  	GRE_CSUM    = 0x8000
   217  	GRE_ROUTING = 0x4000
   218  	GRE_KEY     = 0x2000
   219  	GRE_SEQ     = 0x1000
   220  	GRE_STRICT  = 0x0800
   221  	GRE_REC     = 0x0700
   222  	GRE_FLAGS   = 0x00F8
   223  	GRE_VERSION = 0x0007
   224  )
   225  
   226  const (
   227  	IFLA_VF_INFO_UNSPEC = iota
   228  	IFLA_VF_INFO
   229  	IFLA_VF_INFO_MAX = IFLA_VF_INFO
   230  )
   231  
   232  const (
   233  	IFLA_VF_UNSPEC = iota
   234  	IFLA_VF_MAC    /* Hardware queue specific attributes */
   235  	IFLA_VF_VLAN
   236  	IFLA_VF_TX_RATE      /* Max TX Bandwidth Allocation */
   237  	IFLA_VF_SPOOFCHK     /* Spoof Checking on/off switch */
   238  	IFLA_VF_LINK_STATE   /* link state enable/disable/auto switch */
   239  	IFLA_VF_RATE         /* Min and Max TX Bandwidth Allocation */
   240  	IFLA_VF_RSS_QUERY_EN /* RSS Redirection Table and Hash Key query
   241  	 * on/off switch
   242  	 */
   243  	IFLA_VF_STATS        /* network device statistics */
   244  	IFLA_VF_TRUST        /* Trust state of VF */
   245  	IFLA_VF_IB_NODE_GUID /* VF Infiniband node GUID */
   246  	IFLA_VF_IB_PORT_GUID /* VF Infiniband port GUID */
   247  	IFLA_VF_MAX          = IFLA_VF_IB_PORT_GUID
   248  )
   249  
   250  const (
   251  	IFLA_VF_LINK_STATE_AUTO    = iota /* link state of the uplink */
   252  	IFLA_VF_LINK_STATE_ENABLE         /* link always up */
   253  	IFLA_VF_LINK_STATE_DISABLE        /* link always down */
   254  	IFLA_VF_LINK_STATE_MAX     = IFLA_VF_LINK_STATE_DISABLE
   255  )
   256  
   257  const (
   258  	IFLA_VF_STATS_RX_PACKETS = iota
   259  	IFLA_VF_STATS_TX_PACKETS
   260  	IFLA_VF_STATS_RX_BYTES
   261  	IFLA_VF_STATS_TX_BYTES
   262  	IFLA_VF_STATS_BROADCAST
   263  	IFLA_VF_STATS_MULTICAST
   264  	IFLA_VF_STATS_RX_DROPPED
   265  	IFLA_VF_STATS_TX_DROPPED
   266  	IFLA_VF_STATS_MAX = IFLA_VF_STATS_TX_DROPPED
   267  )
   268  
   269  const (
   270  	SizeofVfMac        = 0x24
   271  	SizeofVfVlan       = 0x0c
   272  	SizeofVfTxRate     = 0x08
   273  	SizeofVfRate       = 0x0c
   274  	SizeofVfSpoofchk   = 0x08
   275  	SizeofVfLinkState  = 0x08
   276  	SizeofVfRssQueryEn = 0x08
   277  	SizeofVfTrust      = 0x08
   278  	SizeofVfGUID       = 0x10
   279  )
   280  
   281  // struct ifla_vf_mac {
   282  //   __u32 vf;
   283  //   __u8 mac[32]; /* MAX_ADDR_LEN */
   284  // };
   285  
   286  type VfMac struct {
   287  	Vf  uint32
   288  	Mac [32]byte
   289  }
   290  
   291  func (msg *VfMac) Len() int {
   292  	return SizeofVfMac
   293  }
   294  
   295  func DeserializeVfMac(b []byte) *VfMac {
   296  	return (*VfMac)(unsafe.Pointer(&b[0:SizeofVfMac][0]))
   297  }
   298  
   299  func (msg *VfMac) Serialize() []byte {
   300  	return (*(*[SizeofVfMac]byte)(unsafe.Pointer(msg)))[:]
   301  }
   302  
   303  // struct ifla_vf_vlan {
   304  //   __u32 vf;
   305  //   __u32 vlan; /* 0 - 4095, 0 disables VLAN filter */
   306  //   __u32 qos;
   307  // };
   308  
   309  type VfVlan struct {
   310  	Vf   uint32
   311  	Vlan uint32
   312  	Qos  uint32
   313  }
   314  
   315  func (msg *VfVlan) Len() int {
   316  	return SizeofVfVlan
   317  }
   318  
   319  func DeserializeVfVlan(b []byte) *VfVlan {
   320  	return (*VfVlan)(unsafe.Pointer(&b[0:SizeofVfVlan][0]))
   321  }
   322  
   323  func (msg *VfVlan) Serialize() []byte {
   324  	return (*(*[SizeofVfVlan]byte)(unsafe.Pointer(msg)))[:]
   325  }
   326  
   327  // struct ifla_vf_tx_rate {
   328  //   __u32 vf;
   329  //   __u32 rate; /* Max TX bandwidth in Mbps, 0 disables throttling */
   330  // };
   331  
   332  type VfTxRate struct {
   333  	Vf   uint32
   334  	Rate uint32
   335  }
   336  
   337  func (msg *VfTxRate) Len() int {
   338  	return SizeofVfTxRate
   339  }
   340  
   341  func DeserializeVfTxRate(b []byte) *VfTxRate {
   342  	return (*VfTxRate)(unsafe.Pointer(&b[0:SizeofVfTxRate][0]))
   343  }
   344  
   345  func (msg *VfTxRate) Serialize() []byte {
   346  	return (*(*[SizeofVfTxRate]byte)(unsafe.Pointer(msg)))[:]
   347  }
   348  
   349  //struct ifla_vf_stats {
   350  //	__u64 rx_packets;
   351  //	__u64 tx_packets;
   352  //	__u64 rx_bytes;
   353  //	__u64 tx_bytes;
   354  //	__u64 broadcast;
   355  //	__u64 multicast;
   356  //};
   357  
   358  type VfStats struct {
   359  	RxPackets uint64
   360  	TxPackets uint64
   361  	RxBytes   uint64
   362  	TxBytes   uint64
   363  	Multicast uint64
   364  	Broadcast uint64
   365  	RxDropped uint64
   366  	TxDropped uint64
   367  }
   368  
   369  func DeserializeVfStats(b []byte) VfStats {
   370  	var vfstat VfStats
   371  	stats, err := ParseRouteAttr(b)
   372  	if err != nil {
   373  		return vfstat
   374  	}
   375  	var valueVar uint64
   376  	for _, stat := range stats {
   377  		if err := binary.Read(bytes.NewBuffer(stat.Value), NativeEndian(), &valueVar); err != nil {
   378  			break
   379  		}
   380  		switch stat.Attr.Type {
   381  		case IFLA_VF_STATS_RX_PACKETS:
   382  			vfstat.RxPackets = valueVar
   383  		case IFLA_VF_STATS_TX_PACKETS:
   384  			vfstat.TxPackets = valueVar
   385  		case IFLA_VF_STATS_RX_BYTES:
   386  			vfstat.RxBytes = valueVar
   387  		case IFLA_VF_STATS_TX_BYTES:
   388  			vfstat.TxBytes = valueVar
   389  		case IFLA_VF_STATS_MULTICAST:
   390  			vfstat.Multicast = valueVar
   391  		case IFLA_VF_STATS_BROADCAST:
   392  			vfstat.Broadcast = valueVar
   393  		case IFLA_VF_STATS_RX_DROPPED:
   394  			vfstat.RxDropped = valueVar
   395  		case IFLA_VF_STATS_TX_DROPPED:
   396  			vfstat.TxDropped = valueVar
   397  		}
   398  	}
   399  	return vfstat
   400  }
   401  
   402  // struct ifla_vf_rate {
   403  //   __u32 vf;
   404  //   __u32 min_tx_rate; /* Min Bandwidth in Mbps */
   405  //   __u32 max_tx_rate; /* Max Bandwidth in Mbps */
   406  // };
   407  
   408  type VfRate struct {
   409  	Vf        uint32
   410  	MinTxRate uint32
   411  	MaxTxRate uint32
   412  }
   413  
   414  func (msg *VfRate) Len() int {
   415  	return SizeofVfRate
   416  }
   417  
   418  func DeserializeVfRate(b []byte) *VfRate {
   419  	return (*VfRate)(unsafe.Pointer(&b[0:SizeofVfRate][0]))
   420  }
   421  
   422  func (msg *VfRate) Serialize() []byte {
   423  	return (*(*[SizeofVfRate]byte)(unsafe.Pointer(msg)))[:]
   424  }
   425  
   426  // struct ifla_vf_spoofchk {
   427  //   __u32 vf;
   428  //   __u32 setting;
   429  // };
   430  
   431  type VfSpoofchk struct {
   432  	Vf      uint32
   433  	Setting uint32
   434  }
   435  
   436  func (msg *VfSpoofchk) Len() int {
   437  	return SizeofVfSpoofchk
   438  }
   439  
   440  func DeserializeVfSpoofchk(b []byte) *VfSpoofchk {
   441  	return (*VfSpoofchk)(unsafe.Pointer(&b[0:SizeofVfSpoofchk][0]))
   442  }
   443  
   444  func (msg *VfSpoofchk) Serialize() []byte {
   445  	return (*(*[SizeofVfSpoofchk]byte)(unsafe.Pointer(msg)))[:]
   446  }
   447  
   448  // struct ifla_vf_link_state {
   449  //   __u32 vf;
   450  //   __u32 link_state;
   451  // };
   452  
   453  type VfLinkState struct {
   454  	Vf        uint32
   455  	LinkState uint32
   456  }
   457  
   458  func (msg *VfLinkState) Len() int {
   459  	return SizeofVfLinkState
   460  }
   461  
   462  func DeserializeVfLinkState(b []byte) *VfLinkState {
   463  	return (*VfLinkState)(unsafe.Pointer(&b[0:SizeofVfLinkState][0]))
   464  }
   465  
   466  func (msg *VfLinkState) Serialize() []byte {
   467  	return (*(*[SizeofVfLinkState]byte)(unsafe.Pointer(msg)))[:]
   468  }
   469  
   470  // struct ifla_vf_rss_query_en {
   471  //   __u32 vf;
   472  //   __u32 setting;
   473  // };
   474  
   475  type VfRssQueryEn struct {
   476  	Vf      uint32
   477  	Setting uint32
   478  }
   479  
   480  func (msg *VfRssQueryEn) Len() int {
   481  	return SizeofVfRssQueryEn
   482  }
   483  
   484  func DeserializeVfRssQueryEn(b []byte) *VfRssQueryEn {
   485  	return (*VfRssQueryEn)(unsafe.Pointer(&b[0:SizeofVfRssQueryEn][0]))
   486  }
   487  
   488  func (msg *VfRssQueryEn) Serialize() []byte {
   489  	return (*(*[SizeofVfRssQueryEn]byte)(unsafe.Pointer(msg)))[:]
   490  }
   491  
   492  // struct ifla_vf_trust {
   493  //   __u32 vf;
   494  //   __u32 setting;
   495  // };
   496  
   497  type VfTrust struct {
   498  	Vf      uint32
   499  	Setting uint32
   500  }
   501  
   502  func (msg *VfTrust) Len() int {
   503  	return SizeofVfTrust
   504  }
   505  
   506  func DeserializeVfTrust(b []byte) *VfTrust {
   507  	return (*VfTrust)(unsafe.Pointer(&b[0:SizeofVfTrust][0]))
   508  }
   509  
   510  func (msg *VfTrust) Serialize() []byte {
   511  	return (*(*[SizeofVfTrust]byte)(unsafe.Pointer(msg)))[:]
   512  }
   513  
   514  // struct ifla_vf_guid {
   515  //   __u32 vf;
   516  //   __u32 rsvd;
   517  //   __u64 guid;
   518  // };
   519  
   520  type VfGUID struct {
   521  	Vf   uint32
   522  	Rsvd uint32
   523  	GUID uint64
   524  }
   525  
   526  func (msg *VfGUID) Len() int {
   527  	return SizeofVfGUID
   528  }
   529  
   530  func DeserializeVfGUID(b []byte) *VfGUID {
   531  	return (*VfGUID)(unsafe.Pointer(&b[0:SizeofVfGUID][0]))
   532  }
   533  
   534  func (msg *VfGUID) Serialize() []byte {
   535  	return (*(*[SizeofVfGUID]byte)(unsafe.Pointer(msg)))[:]
   536  }
   537  
   538  const (
   539  	XDP_FLAGS_UPDATE_IF_NOEXIST = 1 << iota
   540  	XDP_FLAGS_SKB_MODE
   541  	XDP_FLAGS_DRV_MODE
   542  	XDP_FLAGS_MASK = XDP_FLAGS_UPDATE_IF_NOEXIST | XDP_FLAGS_SKB_MODE | XDP_FLAGS_DRV_MODE
   543  )
   544  
   545  const (
   546  	IFLA_XDP_UNSPEC   = iota
   547  	IFLA_XDP_FD       /* fd of xdp program to attach, or -1 to remove */
   548  	IFLA_XDP_ATTACHED /* read-only bool indicating if prog is attached */
   549  	IFLA_XDP_FLAGS    /* xdp prog related flags */
   550  	IFLA_XDP_PROG_ID  /* xdp prog id */
   551  	IFLA_XDP_MAX      = IFLA_XDP_PROG_ID
   552  )
   553  
   554  // XDP program attach mode (used as dump value for IFLA_XDP_ATTACHED)
   555  const (
   556  	XDP_ATTACHED_NONE = iota
   557  	XDP_ATTACHED_DRV
   558  	XDP_ATTACHED_SKB
   559  	XDP_ATTACHED_HW
   560  )
   561  
   562  const (
   563  	IFLA_IPTUN_UNSPEC = iota
   564  	IFLA_IPTUN_LINK
   565  	IFLA_IPTUN_LOCAL
   566  	IFLA_IPTUN_REMOTE
   567  	IFLA_IPTUN_TTL
   568  	IFLA_IPTUN_TOS
   569  	IFLA_IPTUN_ENCAP_LIMIT
   570  	IFLA_IPTUN_FLOWINFO
   571  	IFLA_IPTUN_FLAGS
   572  	IFLA_IPTUN_PROTO
   573  	IFLA_IPTUN_PMTUDISC
   574  	IFLA_IPTUN_6RD_PREFIX
   575  	IFLA_IPTUN_6RD_RELAY_PREFIX
   576  	IFLA_IPTUN_6RD_PREFIXLEN
   577  	IFLA_IPTUN_6RD_RELAY_PREFIXLEN
   578  	IFLA_IPTUN_ENCAP_TYPE
   579  	IFLA_IPTUN_ENCAP_FLAGS
   580  	IFLA_IPTUN_ENCAP_SPORT
   581  	IFLA_IPTUN_ENCAP_DPORT
   582  	IFLA_IPTUN_COLLECT_METADATA
   583  	IFLA_IPTUN_MAX = IFLA_IPTUN_COLLECT_METADATA
   584  )
   585  
   586  const (
   587  	IFLA_VTI_UNSPEC = iota
   588  	IFLA_VTI_LINK
   589  	IFLA_VTI_IKEY
   590  	IFLA_VTI_OKEY
   591  	IFLA_VTI_LOCAL
   592  	IFLA_VTI_REMOTE
   593  	IFLA_VTI_MAX = IFLA_VTI_REMOTE
   594  )
   595  
   596  const (
   597  	IFLA_VRF_UNSPEC = iota
   598  	IFLA_VRF_TABLE
   599  )
   600  
   601  const (
   602  	IFLA_BR_UNSPEC = iota
   603  	IFLA_BR_FORWARD_DELAY
   604  	IFLA_BR_HELLO_TIME
   605  	IFLA_BR_MAX_AGE
   606  	IFLA_BR_AGEING_TIME
   607  	IFLA_BR_STP_STATE
   608  	IFLA_BR_PRIORITY
   609  	IFLA_BR_VLAN_FILTERING
   610  	IFLA_BR_VLAN_PROTOCOL
   611  	IFLA_BR_GROUP_FWD_MASK
   612  	IFLA_BR_ROOT_ID
   613  	IFLA_BR_BRIDGE_ID
   614  	IFLA_BR_ROOT_PORT
   615  	IFLA_BR_ROOT_PATH_COST
   616  	IFLA_BR_TOPOLOGY_CHANGE
   617  	IFLA_BR_TOPOLOGY_CHANGE_DETECTED
   618  	IFLA_BR_HELLO_TIMER
   619  	IFLA_BR_TCN_TIMER
   620  	IFLA_BR_TOPOLOGY_CHANGE_TIMER
   621  	IFLA_BR_GC_TIMER
   622  	IFLA_BR_GROUP_ADDR
   623  	IFLA_BR_FDB_FLUSH
   624  	IFLA_BR_MCAST_ROUTER
   625  	IFLA_BR_MCAST_SNOOPING
   626  	IFLA_BR_MCAST_QUERY_USE_IFADDR
   627  	IFLA_BR_MCAST_QUERIER
   628  	IFLA_BR_MCAST_HASH_ELASTICITY
   629  	IFLA_BR_MCAST_HASH_MAX
   630  	IFLA_BR_MCAST_LAST_MEMBER_CNT
   631  	IFLA_BR_MCAST_STARTUP_QUERY_CNT
   632  	IFLA_BR_MCAST_LAST_MEMBER_INTVL
   633  	IFLA_BR_MCAST_MEMBERSHIP_INTVL
   634  	IFLA_BR_MCAST_QUERIER_INTVL
   635  	IFLA_BR_MCAST_QUERY_INTVL
   636  	IFLA_BR_MCAST_QUERY_RESPONSE_INTVL
   637  	IFLA_BR_MCAST_STARTUP_QUERY_INTVL
   638  	IFLA_BR_NF_CALL_IPTABLES
   639  	IFLA_BR_NF_CALL_IP6TABLES
   640  	IFLA_BR_NF_CALL_ARPTABLES
   641  	IFLA_BR_VLAN_DEFAULT_PVID
   642  	IFLA_BR_PAD
   643  	IFLA_BR_VLAN_STATS_ENABLED
   644  	IFLA_BR_MCAST_STATS_ENABLED
   645  	IFLA_BR_MCAST_IGMP_VERSION
   646  	IFLA_BR_MCAST_MLD_VERSION
   647  	IFLA_BR_MAX = IFLA_BR_MCAST_MLD_VERSION
   648  )
   649  
   650  const (
   651  	IFLA_GTP_UNSPEC = iota
   652  	IFLA_GTP_FD0
   653  	IFLA_GTP_FD1
   654  	IFLA_GTP_PDP_HASHSIZE
   655  	IFLA_GTP_ROLE
   656  )
   657  
   658  const (
   659  	GTP_ROLE_GGSN = iota
   660  	GTP_ROLE_SGSN
   661  )
   662  
   663  const (
   664  	IFLA_XFRM_UNSPEC = iota
   665  	IFLA_XFRM_LINK
   666  	IFLA_XFRM_IF_ID
   667  
   668  	IFLA_XFRM_MAX = iota - 1
   669  )
   670  
   671  const (
   672  	IFLA_TUN_UNSPEC = iota
   673  	IFLA_TUN_OWNER
   674  	IFLA_TUN_GROUP
   675  	IFLA_TUN_TYPE
   676  	IFLA_TUN_PI
   677  	IFLA_TUN_VNET_HDR
   678  	IFLA_TUN_PERSIST
   679  	IFLA_TUN_MULTI_QUEUE
   680  	IFLA_TUN_NUM_QUEUES
   681  	IFLA_TUN_NUM_DISABLED_QUEUES
   682  	IFLA_TUN_MAX = IFLA_TUN_NUM_DISABLED_QUEUES
   683  )
   684  
   685  const (
   686  	IFLA_IPOIB_UNSPEC = iota
   687  	IFLA_IPOIB_PKEY
   688  	IFLA_IPOIB_MODE
   689  	IFLA_IPOIB_UMCAST
   690  	IFLA_IPOIB_MAX = IFLA_IPOIB_UMCAST
   691  )
   692  
   693  const (
   694  	IFLA_CAN_UNSPEC = iota
   695  	IFLA_CAN_BITTIMING
   696  	IFLA_CAN_BITTIMING_CONST
   697  	IFLA_CAN_CLOCK
   698  	IFLA_CAN_STATE
   699  	IFLA_CAN_CTRLMODE
   700  	IFLA_CAN_RESTART_MS
   701  	IFLA_CAN_RESTART
   702  	IFLA_CAN_BERR_COUNTER
   703  	IFLA_CAN_DATA_BITTIMING
   704  	IFLA_CAN_DATA_BITTIMING_CONST
   705  	IFLA_CAN_TERMINATION
   706  	IFLA_CAN_TERMINATION_CONST
   707  	IFLA_CAN_BITRATE_CONST
   708  	IFLA_CAN_DATA_BITRATE_CONST
   709  	IFLA_CAN_BITRATE_MAX
   710  	IFLA_CAN_MAX = IFLA_CAN_BITRATE_MAX
   711  )
   712  
   713  const (
   714  	IFLA_BAREUDP_UNSPEC = iota
   715  	IFLA_BAREUDP_PORT
   716  	IFLA_BAREUDP_ETHERTYPE
   717  	IFLA_BAREUDP_SRCPORT_MIN
   718  	IFLA_BAREUDP_MULTIPROTO_MODE
   719  	IFLA_BAREUDP_MAX = IFLA_BAREUDP_MULTIPROTO_MODE
   720  )
   721  
   722  const (
   723  	IFLA_UNSPEC       = iota
   724  	IFLA_GRO_MAX_SIZE = 0x3a
   725  )