github.com/vishvananda/netlink@v1.3.1/nl/link_linux.go (about)

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