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