link_linux.go 17 KB

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