link_linux.go 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549
  1. package nl
  2. import (
  3. "unsafe"
  4. )
  5. const (
  6. DEFAULT_CHANGE = 0xFFFFFFFF
  7. )
  8. const (
  9. IFLA_INFO_UNSPEC = iota
  10. IFLA_INFO_KIND
  11. IFLA_INFO_DATA
  12. IFLA_INFO_XSTATS
  13. IFLA_INFO_MAX = IFLA_INFO_XSTATS
  14. )
  15. const (
  16. IFLA_VLAN_UNSPEC = iota
  17. IFLA_VLAN_ID
  18. IFLA_VLAN_FLAGS
  19. IFLA_VLAN_EGRESS_QOS
  20. IFLA_VLAN_INGRESS_QOS
  21. IFLA_VLAN_PROTOCOL
  22. IFLA_VLAN_MAX = IFLA_VLAN_PROTOCOL
  23. )
  24. const (
  25. VETH_INFO_UNSPEC = iota
  26. VETH_INFO_PEER
  27. VETH_INFO_MAX = VETH_INFO_PEER
  28. )
  29. const (
  30. IFLA_VXLAN_UNSPEC = iota
  31. IFLA_VXLAN_ID
  32. IFLA_VXLAN_GROUP
  33. IFLA_VXLAN_LINK
  34. IFLA_VXLAN_LOCAL
  35. IFLA_VXLAN_TTL
  36. IFLA_VXLAN_TOS
  37. IFLA_VXLAN_LEARNING
  38. IFLA_VXLAN_AGEING
  39. IFLA_VXLAN_LIMIT
  40. IFLA_VXLAN_PORT_RANGE
  41. IFLA_VXLAN_PROXY
  42. IFLA_VXLAN_RSC
  43. IFLA_VXLAN_L2MISS
  44. IFLA_VXLAN_L3MISS
  45. IFLA_VXLAN_PORT
  46. IFLA_VXLAN_GROUP6
  47. IFLA_VXLAN_LOCAL6
  48. IFLA_VXLAN_UDP_CSUM
  49. IFLA_VXLAN_UDP_ZERO_CSUM6_TX
  50. IFLA_VXLAN_UDP_ZERO_CSUM6_RX
  51. IFLA_VXLAN_REMCSUM_TX
  52. IFLA_VXLAN_REMCSUM_RX
  53. IFLA_VXLAN_GBP
  54. IFLA_VXLAN_REMCSUM_NOPARTIAL
  55. IFLA_VXLAN_FLOWBASED
  56. IFLA_VXLAN_MAX = IFLA_VXLAN_FLOWBASED
  57. )
  58. const (
  59. BRIDGE_MODE_UNSPEC = iota
  60. BRIDGE_MODE_HAIRPIN
  61. )
  62. const (
  63. IFLA_BRPORT_UNSPEC = iota
  64. IFLA_BRPORT_STATE
  65. IFLA_BRPORT_PRIORITY
  66. IFLA_BRPORT_COST
  67. IFLA_BRPORT_MODE
  68. IFLA_BRPORT_GUARD
  69. IFLA_BRPORT_PROTECT
  70. IFLA_BRPORT_FAST_LEAVE
  71. IFLA_BRPORT_LEARNING
  72. IFLA_BRPORT_UNICAST_FLOOD
  73. IFLA_BRPORT_PROXYARP
  74. IFLA_BRPORT_LEARNING_SYNC
  75. IFLA_BRPORT_PROXYARP_WIFI
  76. IFLA_BRPORT_MAX = IFLA_BRPORT_PROXYARP_WIFI
  77. )
  78. const (
  79. IFLA_IPVLAN_UNSPEC = iota
  80. IFLA_IPVLAN_MODE
  81. IFLA_IPVLAN_MAX = IFLA_IPVLAN_MODE
  82. )
  83. const (
  84. IFLA_MACVLAN_UNSPEC = iota
  85. IFLA_MACVLAN_MODE
  86. IFLA_MACVLAN_FLAGS
  87. IFLA_MACVLAN_MACADDR_MODE
  88. IFLA_MACVLAN_MACADDR
  89. IFLA_MACVLAN_MACADDR_DATA
  90. IFLA_MACVLAN_MACADDR_COUNT
  91. IFLA_MACVLAN_MAX = IFLA_MACVLAN_FLAGS
  92. )
  93. const (
  94. MACVLAN_MODE_PRIVATE = 1
  95. MACVLAN_MODE_VEPA = 2
  96. MACVLAN_MODE_BRIDGE = 4
  97. MACVLAN_MODE_PASSTHRU = 8
  98. MACVLAN_MODE_SOURCE = 16
  99. )
  100. const (
  101. MACVLAN_MACADDR_ADD = iota
  102. MACVLAN_MACADDR_DEL
  103. MACVLAN_MACADDR_FLUSH
  104. MACVLAN_MACADDR_SET
  105. )
  106. const (
  107. IFLA_BOND_UNSPEC = iota
  108. IFLA_BOND_MODE
  109. IFLA_BOND_ACTIVE_SLAVE
  110. IFLA_BOND_MIIMON
  111. IFLA_BOND_UPDELAY
  112. IFLA_BOND_DOWNDELAY
  113. IFLA_BOND_USE_CARRIER
  114. IFLA_BOND_ARP_INTERVAL
  115. IFLA_BOND_ARP_IP_TARGET
  116. IFLA_BOND_ARP_VALIDATE
  117. IFLA_BOND_ARP_ALL_TARGETS
  118. IFLA_BOND_PRIMARY
  119. IFLA_BOND_PRIMARY_RESELECT
  120. IFLA_BOND_FAIL_OVER_MAC
  121. IFLA_BOND_XMIT_HASH_POLICY
  122. IFLA_BOND_RESEND_IGMP
  123. IFLA_BOND_NUM_PEER_NOTIF
  124. IFLA_BOND_ALL_SLAVES_ACTIVE
  125. IFLA_BOND_MIN_LINKS
  126. IFLA_BOND_LP_INTERVAL
  127. IFLA_BOND_PACKETS_PER_SLAVE
  128. IFLA_BOND_AD_LACP_RATE
  129. IFLA_BOND_AD_SELECT
  130. IFLA_BOND_AD_INFO
  131. IFLA_BOND_AD_ACTOR_SYS_PRIO
  132. IFLA_BOND_AD_USER_PORT_KEY
  133. IFLA_BOND_AD_ACTOR_SYSTEM
  134. IFLA_BOND_TLB_DYNAMIC_LB
  135. )
  136. const (
  137. IFLA_BOND_AD_INFO_UNSPEC = iota
  138. IFLA_BOND_AD_INFO_AGGREGATOR
  139. IFLA_BOND_AD_INFO_NUM_PORTS
  140. IFLA_BOND_AD_INFO_ACTOR_KEY
  141. IFLA_BOND_AD_INFO_PARTNER_KEY
  142. IFLA_BOND_AD_INFO_PARTNER_MAC
  143. )
  144. const (
  145. IFLA_BOND_SLAVE_UNSPEC = iota
  146. IFLA_BOND_SLAVE_STATE
  147. IFLA_BOND_SLAVE_MII_STATUS
  148. IFLA_BOND_SLAVE_LINK_FAILURE_COUNT
  149. IFLA_BOND_SLAVE_PERM_HWADDR
  150. IFLA_BOND_SLAVE_QUEUE_ID
  151. IFLA_BOND_SLAVE_AD_AGGREGATOR_ID
  152. )
  153. const (
  154. IFLA_GRE_UNSPEC = iota
  155. IFLA_GRE_LINK
  156. IFLA_GRE_IFLAGS
  157. IFLA_GRE_OFLAGS
  158. IFLA_GRE_IKEY
  159. IFLA_GRE_OKEY
  160. IFLA_GRE_LOCAL
  161. IFLA_GRE_REMOTE
  162. IFLA_GRE_TTL
  163. IFLA_GRE_TOS
  164. IFLA_GRE_PMTUDISC
  165. IFLA_GRE_ENCAP_LIMIT
  166. IFLA_GRE_FLOWINFO
  167. IFLA_GRE_FLAGS
  168. IFLA_GRE_ENCAP_TYPE
  169. IFLA_GRE_ENCAP_FLAGS
  170. IFLA_GRE_ENCAP_SPORT
  171. IFLA_GRE_ENCAP_DPORT
  172. IFLA_GRE_COLLECT_METADATA
  173. IFLA_GRE_MAX = IFLA_GRE_COLLECT_METADATA
  174. )
  175. const (
  176. GRE_CSUM = 0x8000
  177. GRE_ROUTING = 0x4000
  178. GRE_KEY = 0x2000
  179. GRE_SEQ = 0x1000
  180. GRE_STRICT = 0x0800
  181. GRE_REC = 0x0700
  182. GRE_FLAGS = 0x00F8
  183. GRE_VERSION = 0x0007
  184. )
  185. const (
  186. IFLA_VF_INFO_UNSPEC = iota
  187. IFLA_VF_INFO
  188. IFLA_VF_INFO_MAX = IFLA_VF_INFO
  189. )
  190. const (
  191. IFLA_VF_UNSPEC = iota
  192. IFLA_VF_MAC /* Hardware queue specific attributes */
  193. IFLA_VF_VLAN
  194. IFLA_VF_TX_RATE /* Max TX Bandwidth Allocation */
  195. IFLA_VF_SPOOFCHK /* Spoof Checking on/off switch */
  196. IFLA_VF_LINK_STATE /* link state enable/disable/auto switch */
  197. IFLA_VF_RATE /* Min and Max TX Bandwidth Allocation */
  198. IFLA_VF_RSS_QUERY_EN /* RSS Redirection Table and Hash Key query
  199. * on/off switch
  200. */
  201. IFLA_VF_STATS /* network device statistics */
  202. IFLA_VF_TRUST /* Trust state of VF */
  203. IFLA_VF_MAX = IFLA_VF_TRUST
  204. )
  205. const (
  206. IFLA_VF_LINK_STATE_AUTO = iota /* link state of the uplink */
  207. IFLA_VF_LINK_STATE_ENABLE /* link always up */
  208. IFLA_VF_LINK_STATE_DISABLE /* link always down */
  209. IFLA_VF_LINK_STATE_MAX = IFLA_VF_LINK_STATE_DISABLE
  210. )
  211. const (
  212. IFLA_VF_STATS_RX_PACKETS = iota
  213. IFLA_VF_STATS_TX_PACKETS
  214. IFLA_VF_STATS_RX_BYTES
  215. IFLA_VF_STATS_TX_BYTES
  216. IFLA_VF_STATS_BROADCAST
  217. IFLA_VF_STATS_MULTICAST
  218. IFLA_VF_STATS_MAX = IFLA_VF_STATS_MULTICAST
  219. )
  220. const (
  221. SizeofVfMac = 0x24
  222. SizeofVfVlan = 0x0c
  223. SizeofVfTxRate = 0x08
  224. SizeofVfRate = 0x0c
  225. SizeofVfSpoofchk = 0x08
  226. SizeofVfLinkState = 0x08
  227. SizeofVfRssQueryEn = 0x08
  228. SizeofVfTrust = 0x08
  229. )
  230. // struct ifla_vf_mac {
  231. // __u32 vf;
  232. // __u8 mac[32]; /* MAX_ADDR_LEN */
  233. // };
  234. type VfMac struct {
  235. Vf uint32
  236. Mac [32]byte
  237. }
  238. func (msg *VfMac) Len() int {
  239. return SizeofVfMac
  240. }
  241. func DeserializeVfMac(b []byte) *VfMac {
  242. return (*VfMac)(unsafe.Pointer(&b[0:SizeofVfMac][0]))
  243. }
  244. func (msg *VfMac) Serialize() []byte {
  245. return (*(*[SizeofVfMac]byte)(unsafe.Pointer(msg)))[:]
  246. }
  247. // struct ifla_vf_vlan {
  248. // __u32 vf;
  249. // __u32 vlan; /* 0 - 4095, 0 disables VLAN filter */
  250. // __u32 qos;
  251. // };
  252. type VfVlan struct {
  253. Vf uint32
  254. Vlan uint32
  255. Qos uint32
  256. }
  257. func (msg *VfVlan) Len() int {
  258. return SizeofVfVlan
  259. }
  260. func DeserializeVfVlan(b []byte) *VfVlan {
  261. return (*VfVlan)(unsafe.Pointer(&b[0:SizeofVfVlan][0]))
  262. }
  263. func (msg *VfVlan) Serialize() []byte {
  264. return (*(*[SizeofVfVlan]byte)(unsafe.Pointer(msg)))[:]
  265. }
  266. // struct ifla_vf_tx_rate {
  267. // __u32 vf;
  268. // __u32 rate; /* Max TX bandwidth in Mbps, 0 disables throttling */
  269. // };
  270. type VfTxRate struct {
  271. Vf uint32
  272. Rate uint32
  273. }
  274. func (msg *VfTxRate) Len() int {
  275. return SizeofVfTxRate
  276. }
  277. func DeserializeVfTxRate(b []byte) *VfTxRate {
  278. return (*VfTxRate)(unsafe.Pointer(&b[0:SizeofVfTxRate][0]))
  279. }
  280. func (msg *VfTxRate) Serialize() []byte {
  281. return (*(*[SizeofVfTxRate]byte)(unsafe.Pointer(msg)))[:]
  282. }
  283. // struct ifla_vf_rate {
  284. // __u32 vf;
  285. // __u32 min_tx_rate; /* Min Bandwidth in Mbps */
  286. // __u32 max_tx_rate; /* Max Bandwidth in Mbps */
  287. // };
  288. type VfRate struct {
  289. Vf uint32
  290. MinTxRate uint32
  291. MaxTxRate uint32
  292. }
  293. func (msg *VfRate) Len() int {
  294. return SizeofVfRate
  295. }
  296. func DeserializeVfRate(b []byte) *VfRate {
  297. return (*VfRate)(unsafe.Pointer(&b[0:SizeofVfRate][0]))
  298. }
  299. func (msg *VfRate) Serialize() []byte {
  300. return (*(*[SizeofVfRate]byte)(unsafe.Pointer(msg)))[:]
  301. }
  302. // struct ifla_vf_spoofchk {
  303. // __u32 vf;
  304. // __u32 setting;
  305. // };
  306. type VfSpoofchk struct {
  307. Vf uint32
  308. Setting uint32
  309. }
  310. func (msg *VfSpoofchk) Len() int {
  311. return SizeofVfSpoofchk
  312. }
  313. func DeserializeVfSpoofchk(b []byte) *VfSpoofchk {
  314. return (*VfSpoofchk)(unsafe.Pointer(&b[0:SizeofVfSpoofchk][0]))
  315. }
  316. func (msg *VfSpoofchk) Serialize() []byte {
  317. return (*(*[SizeofVfSpoofchk]byte)(unsafe.Pointer(msg)))[:]
  318. }
  319. // struct ifla_vf_link_state {
  320. // __u32 vf;
  321. // __u32 link_state;
  322. // };
  323. type VfLinkState struct {
  324. Vf uint32
  325. LinkState uint32
  326. }
  327. func (msg *VfLinkState) Len() int {
  328. return SizeofVfLinkState
  329. }
  330. func DeserializeVfLinkState(b []byte) *VfLinkState {
  331. return (*VfLinkState)(unsafe.Pointer(&b[0:SizeofVfLinkState][0]))
  332. }
  333. func (msg *VfLinkState) Serialize() []byte {
  334. return (*(*[SizeofVfLinkState]byte)(unsafe.Pointer(msg)))[:]
  335. }
  336. // struct ifla_vf_rss_query_en {
  337. // __u32 vf;
  338. // __u32 setting;
  339. // };
  340. type VfRssQueryEn struct {
  341. Vf uint32
  342. Setting uint32
  343. }
  344. func (msg *VfRssQueryEn) Len() int {
  345. return SizeofVfRssQueryEn
  346. }
  347. func DeserializeVfRssQueryEn(b []byte) *VfRssQueryEn {
  348. return (*VfRssQueryEn)(unsafe.Pointer(&b[0:SizeofVfRssQueryEn][0]))
  349. }
  350. func (msg *VfRssQueryEn) Serialize() []byte {
  351. return (*(*[SizeofVfRssQueryEn]byte)(unsafe.Pointer(msg)))[:]
  352. }
  353. // struct ifla_vf_trust {
  354. // __u32 vf;
  355. // __u32 setting;
  356. // };
  357. type VfTrust struct {
  358. Vf uint32
  359. Setting uint32
  360. }
  361. func (msg *VfTrust) Len() int {
  362. return SizeofVfTrust
  363. }
  364. func DeserializeVfTrust(b []byte) *VfTrust {
  365. return (*VfTrust)(unsafe.Pointer(&b[0:SizeofVfTrust][0]))
  366. }
  367. func (msg *VfTrust) Serialize() []byte {
  368. return (*(*[SizeofVfTrust]byte)(unsafe.Pointer(msg)))[:]
  369. }
  370. const (
  371. XDP_FLAGS_UPDATE_IF_NOEXIST = 1 << iota
  372. XDP_FLAGS_SKB_MODE
  373. XDP_FLAGS_DRV_MODE
  374. XDP_FLAGS_MASK = XDP_FLAGS_UPDATE_IF_NOEXIST | XDP_FLAGS_SKB_MODE | XDP_FLAGS_DRV_MODE
  375. )
  376. const (
  377. IFLA_XDP_UNSPEC = iota
  378. IFLA_XDP_FD /* fd of xdp program to attach, or -1 to remove */
  379. IFLA_XDP_ATTACHED /* read-only bool indicating if prog is attached */
  380. IFLA_XDP_FLAGS /* xdp prog related flags */
  381. IFLA_XDP_PROG_ID /* xdp prog id */
  382. IFLA_XDP_MAX = IFLA_XDP_PROG_ID
  383. )
  384. const (
  385. IFLA_IPTUN_UNSPEC = iota
  386. IFLA_IPTUN_LINK
  387. IFLA_IPTUN_LOCAL
  388. IFLA_IPTUN_REMOTE
  389. IFLA_IPTUN_TTL
  390. IFLA_IPTUN_TOS
  391. IFLA_IPTUN_ENCAP_LIMIT
  392. IFLA_IPTUN_FLOWINFO
  393. IFLA_IPTUN_FLAGS
  394. IFLA_IPTUN_PROTO
  395. IFLA_IPTUN_PMTUDISC
  396. IFLA_IPTUN_6RD_PREFIX
  397. IFLA_IPTUN_6RD_RELAY_PREFIX
  398. IFLA_IPTUN_6RD_PREFIXLEN
  399. IFLA_IPTUN_6RD_RELAY_PREFIXLEN
  400. IFLA_IPTUN_ENCAP_TYPE
  401. IFLA_IPTUN_ENCAP_FLAGS
  402. IFLA_IPTUN_ENCAP_SPORT
  403. IFLA_IPTUN_ENCAP_DPORT
  404. IFLA_IPTUN_COLLECT_METADATA
  405. IFLA_IPTUN_MAX = IFLA_IPTUN_COLLECT_METADATA
  406. )
  407. const (
  408. IFLA_VTI_UNSPEC = iota
  409. IFLA_VTI_LINK
  410. IFLA_VTI_IKEY
  411. IFLA_VTI_OKEY
  412. IFLA_VTI_LOCAL
  413. IFLA_VTI_REMOTE
  414. IFLA_VTI_MAX = IFLA_VTI_REMOTE
  415. )
  416. const (
  417. IFLA_VRF_UNSPEC = iota
  418. IFLA_VRF_TABLE
  419. )
  420. const (
  421. IFLA_BR_UNSPEC = iota
  422. IFLA_BR_FORWARD_DELAY
  423. IFLA_BR_HELLO_TIME
  424. IFLA_BR_MAX_AGE
  425. IFLA_BR_AGEING_TIME
  426. IFLA_BR_STP_STATE
  427. IFLA_BR_PRIORITY
  428. IFLA_BR_VLAN_FILTERING
  429. IFLA_BR_VLAN_PROTOCOL
  430. IFLA_BR_GROUP_FWD_MASK
  431. IFLA_BR_ROOT_ID
  432. IFLA_BR_BRIDGE_ID
  433. IFLA_BR_ROOT_PORT
  434. IFLA_BR_ROOT_PATH_COST
  435. IFLA_BR_TOPOLOGY_CHANGE
  436. IFLA_BR_TOPOLOGY_CHANGE_DETECTED
  437. IFLA_BR_HELLO_TIMER
  438. IFLA_BR_TCN_TIMER
  439. IFLA_BR_TOPOLOGY_CHANGE_TIMER
  440. IFLA_BR_GC_TIMER
  441. IFLA_BR_GROUP_ADDR
  442. IFLA_BR_FDB_FLUSH
  443. IFLA_BR_MCAST_ROUTER
  444. IFLA_BR_MCAST_SNOOPING
  445. IFLA_BR_MCAST_QUERY_USE_IFADDR
  446. IFLA_BR_MCAST_QUERIER
  447. IFLA_BR_MCAST_HASH_ELASTICITY
  448. IFLA_BR_MCAST_HASH_MAX
  449. IFLA_BR_MCAST_LAST_MEMBER_CNT
  450. IFLA_BR_MCAST_STARTUP_QUERY_CNT
  451. IFLA_BR_MCAST_LAST_MEMBER_INTVL
  452. IFLA_BR_MCAST_MEMBERSHIP_INTVL
  453. IFLA_BR_MCAST_QUERIER_INTVL
  454. IFLA_BR_MCAST_QUERY_INTVL
  455. IFLA_BR_MCAST_QUERY_RESPONSE_INTVL
  456. IFLA_BR_MCAST_STARTUP_QUERY_INTVL
  457. IFLA_BR_NF_CALL_IPTABLES
  458. IFLA_BR_NF_CALL_IP6TABLES
  459. IFLA_BR_NF_CALL_ARPTABLES
  460. IFLA_BR_VLAN_DEFAULT_PVID
  461. IFLA_BR_PAD
  462. IFLA_BR_VLAN_STATS_ENABLED
  463. IFLA_BR_MCAST_STATS_ENABLED
  464. IFLA_BR_MCAST_IGMP_VERSION
  465. IFLA_BR_MCAST_MLD_VERSION
  466. IFLA_BR_MAX = IFLA_BR_MCAST_MLD_VERSION
  467. )
  468. const (
  469. IFLA_GTP_UNSPEC = iota
  470. IFLA_GTP_FD0
  471. IFLA_GTP_FD1
  472. IFLA_GTP_PDP_HASHSIZE
  473. IFLA_GTP_ROLE
  474. )
  475. const (
  476. GTP_ROLE_GGSN = iota
  477. GTP_ROLE_SGSN
  478. )