1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
|
# Copyright 2018 syzkaller project authors. All rights reserved.
# Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.
# AF_NETLINK/NETLINK_ROUTE support.
include <linux/net.h>
include <linux/netdevice.h>
include <uapi/linux/if.h>
include <uapi/linux/if_link.h>
include <uapi/linux/if_addr.h>
include <uapi/linux/netlink.h>
include <uapi/linux/netconf.h>
include <uapi/linux/rtnetlink.h>
include <uapi/linux/lwtunnel.h>
include <uapi/linux/neighbour.h>
include <uapi/linux/fib_rules.h>
include <uapi/linux/if_tunnel.h>
include <uapi/linux/net_namespace.h>
include <uapi/linux/veth.h>
include <uapi/linux/can/gw.h>
resource sock_nl_route[sock_netlink]
type netns_id int32[0:4]
socket$nl_route(domain const[AF_NETLINK], type const[SOCK_RAW], proto const[NETLINK_ROUTE]) sock_nl_route
sendmsg$nl_route(fd sock_nl_route, msg ptr[in, msghdr_netlink[netlink_msg_route]], f flags[send_flags])
netlink_msg_route [
newlink netlink_msg[RTM_NEWLINK, ifinfomsg[AF_UNSPEC], ifla_policy]
getlink netlink_msg[RTM_GETLINK, ifinfomsg[AF_UNSPEC], ifla_policy]
setlink netlink_msg[RTM_SETLINK, ifinfomsg[AF_UNSPEC], ifla_policy]
dellink netlink_msg[RTM_DELLINK, ifinfomsg[AF_UNSPEC], ifla_policy]
getaddr netlink_msg[RTM_GETADDR, rtgenmsg[AF_UNSPEC], void]
getroute netlink_msg[RTM_GETROUTE, rtgenmsg[AF_UNSPEC], void]
getrule netlink_msg[RTM_GETRULE, rtgenmsg[AF_UNSPEC], void]
getnetconf netlink_msg[RTM_GETNETCONF, rtgenmsg[AF_UNSPEC], void]
getstats netlink_msg[RTM_GETSTATS, if_stats_msg[AF_UNSPEC], void]
newneigh netlink_msg[RTM_NEWNEIGH, ndmsg, nd_policy]
delneigh netlink_msg[RTM_DELNEIGH, ndmsg, nd_policy]
getneigh netlink_msg[RTM_GETNEIGH, rtgenmsg[AF_UNSPEC], void]
getneightbl netlink_msg[RTM_GETNEIGHTBL, rtgenmsg[AF_UNSPEC], void]
setneightbl netlink_msg[RTM_SETNEIGHTBL, ndtmsg, nl_neightbl_policy]
ipv4_newaddr netlink_msg[RTM_NEWADDR, ifaddrmsg[AF_INET], ifa_ipv4_policy]
ipv4_deladdr netlink_msg[RTM_DELADDR, ifaddrmsg[AF_INET], ifa_ipv4_policy]
ipv4_getaddr netlink_msg[RTM_GETADDR, ifaddrmsg[AF_INET], ifa_ipv4_policy]
ipv4_newroute netlink_msg[RTM_NEWROUTE, rtmsg[AF_INET], rtm_ipv4_policy]
ipv4_delroute netlink_msg[RTM_DELROUTE, rtmsg[AF_INET], rtm_ipv4_policy]
ipv4_getroute netlink_msg[RTM_GETROUTE, rtmsg[AF_INET], void]
ipv4_getnetconf netlink_msg[RTM_GETNETCONF, netconfmsg[AF_INET], devconf_ip_policy]
ipv4_newrule netlink_msg[RTM_NEWRULE, fib_rule_hdr[AF_INET], fib4_rule_policy]
ipv4_delrule netlink_msg[RTM_DELRULE, fib_rule_hdr[AF_INET], fib4_rule_policy]
ipv4_getrule netlink_msg[RTM_GETRULE, fib_rule_hdr[AF_INET], void]
ipv6_newaddr netlink_msg[RTM_NEWADDR, ifaddrmsg[AF_INET6], ifa_ipv6_policy]
ipv6_deladdr netlink_msg[RTM_DELADDR, ifaddrmsg[AF_INET6], ifa_ipv6_policy]
ipv6_getaddr netlink_msg[RTM_GETADDR, ifaddrmsg[AF_INET6], ifa_ipv6_policy]
ipv6_newroute netlink_msg[RTM_NEWROUTE, rtmsg[AF_INET6], rtm_ipv6_policy]
ipv6_delroute netlink_msg[RTM_DELROUTE, rtmsg[AF_INET6], rtm_ipv6_policy]
ipv6_getroute netlink_msg[RTM_GETROUTE, rtmsg[AF_INET6], rtm_ipv6_policy]
ipv6_getmulticast netlink_msg[RTM_GETMULTICAST, rtgenmsg[AF_INET6], void]
ipv6_getanyicast netlink_msg[RTM_GETANYCAST, rtgenmsg[AF_INET6], void]
ipv6_getnetconf netlink_msg[RTM_GETNETCONF, netconfmsg[AF_INET6], devconf_ip_policy]
ipv6_newrule netlink_msg[RTM_NEWRULE, fib_rule_hdr[AF_INET6], fib6_rule_policy]
ipv6_delrule netlink_msg[RTM_DELRULE, fib_rule_hdr[AF_INET6], fib6_rule_policy]
ipv6_getrule netlink_msg[RTM_GETRULE, fib_rule_hdr[AF_INET6], void]
ipmr_newroute netlink_msg[RTM_NEWROUTE, rtmsg[RTNL_FAMILY_IPMR], rtm_ipv4_policy]
ipmr_delroute netlink_msg[RTM_DELROUTE, rtmsg[RTNL_FAMILY_IPMR], rtm_ipv4_policy]
ipmr_getroute netlink_msg[RTM_GETROUTE, rtmsg[RTNL_FAMILY_IPMR], void]
mpls_newroute netlink_msg[RTM_NEWROUTE, rtmsg[AF_MPLS], rtm_mpls_policy]
mpls_delroute netlink_msg[RTM_DELROUTE, rtmsg[AF_MPLS], rtm_mpls_policy]
mpls_getroute netlink_msg[RTM_GETROUTE, rtmsg[AF_MPLS], rtm_mpls_policy]
mpls_getnetconf netlink_msg[RTM_GETNETCONF, netconfmsg[AF_MPLS], devconf_mpls_policy]
bridge_newneigh netlink_msg[RTM_NEWNEIGH, ndmsg, nd_policy]
bridge_delneigh netlink_msg[RTM_DELNEIGH, ndmsg, nd_policy]
bridge_getneigh netlink_msg[RTM_GETNEIGH, ifinfomsg[AF_BRIDGE], ifla_policy]
bridge_getlink netlink_msg[RTM_GETLINK, ifinfomsg[AF_BRIDGE], ifla_policy]
bridge_setlink netlink_msg[RTM_SETLINK, ifinfomsg[AF_BRIDGE], ifla_policy]
bridge_dellink netlink_msg[RTM_DELLINK, ifinfomsg[AF_BRIDGE], ifla_policy]
RTM_NEWNSID netlink_msg[RTM_NEWNSID, rtgenmsg[AF_UNSPEC], rtnl_net_policy]
RTM_GETNSID netlink_msg[RTM_GETNSID, rtgenmsg[AF_UNSPEC], rtnl_net_policy]
can_newroute netlink_msg[RTM_NEWROUTE, rtcanmsg, cgw_policy]
can_delroute netlink_msg[RTM_DELROUTE, rtcanmsg, cgw_policy]
] [varlen]
type rtgenmsg[FAMILY] {
rtgen_family const[FAMILY, int8]
}
type netconfmsg[FAMILY] {
ncm_family const[FAMILY, int8]
}
type ifinfomsg[FAMILY] {
ifi_family const[FAMILY, int8]
__ifi_pad const[0, int8]
ifi_type const[0, int16]
ifi_index ifindex[opt]
ifi_flags flags[net_device_flags, int32]
ifi_change flags[net_device_flags, int32]
}
type ifaddrmsg[FAMILY] {
ifa_family const[FAMILY, int8]
ifa_prefixlen flags[ifa_prefixlen, int8]
ifa_flags flags[ifa_flags, int8]
ifa_scope flags[rt_scope_t, int8]
ifa_index ifindex
}
type rtmsg[FAMILY] {
rtm_family const[FAMILY, int8]
rtm_dst_len flags[rtm_addr_len, int8]
rtmsrcdst_len flags[rtm_addr_len, int8]
rtm_tos int8
rtm_table flags[rt_table_types, int8]
rtm_protocol flags[rtm_protocol, int8]
rtm_scope flags[rt_scope_t, int8]
rtm_type flags[rtm_type, int8]
rtm_flags flags[rtm_flags, int32]
}
ndmsg {
ndm_family flags[rtnl_af, int8]
ndm_pad1 const[0, int8]
ndm_pad2 const[0, int16]
ndm_ifindex ifindex
ndm_state flags[ndm_state, int16]
ndm_flags flags[ndm_flags, int8]
ndm_type flags[rtm_type, int8]
}
ndtmsg {
ndm_family flags[rtnl_af, int8]
ndm_pad1 const[0, int8]
ndm_pad2 const[0, int16]
}
type if_stats_msg[FAMILY] {
family const[FAMILY, int8]
pad1 const[0, int8]
pad2 const[0, int16]
ifindex ifindex
filter_mask flags[filter_mask, int32]
}
ifla_policy [
IFLA_IFNAME nlattr[IFLA_IFNAME, devname]
IFLA_ADDRESS nlattr[IFLA_ADDRESS, mac_addr]
IFLA_BROADCAST nlattr[IFLA_BROADCAST, mac_addr]
IFLA_MAP nlattr[IFLA_MAP, rtnl_link_ifmap]
IFLA_MTU nlattr[IFLA_MAP, int32]
IFLA_LINK nlattr[IFLA_LINK, int32]
IFLA_MASTER nlattr[IFLA_MASTER, ifindex]
IFLA_CARRIER nlattr[IFLA_CARRIER, int8]
IFLA_TXQLEN nlattr[IFLA_TXQLEN, int32]
IFLA_WEIGHT nlattr[IFLA_WEIGHT, int32]
IFLA_OPERSTATE nlattr[IFLA_OPERSTATE, int8]
IFLA_LINKMODE nlattr[IFLA_LINKMODE, int8]
IFLA_LINKINFO nlattr[IFLA_LINKINFO, ifla_info_policy]
IFLA_NET_NS_PID nlattr[IFLA_NET_NS_PID, pid]
IFLA_NET_NS_FD nlattr[IFLA_NET_NS_FD, fd_namespace]
IFLA_IFALIAS nlattr[IFLA_IFALIAS, devname]
IFLA_IFALIASn nlattr[IFLA_IFALIAS, void]
IFLA_VFINFO_LIST nlattr[IFLA_VFINFO_LIST, array[nlattr[IFLA_VF_INFO, array[ifla_vf_policy]]]]
IFLA_VF_PORTS nlattr[IFLA_VF_PORTS, array[nlattr[IFLA_VF_PORT, array[ifla_port_policy]]]]
IFLA_PORT_SELF nlattr[IFLA_PORT_SELF, array[ifla_port_policy]]
IFLA_AF_SPEC nlattr[IFLA_AF_SPEC, array[nlattr_t[flags[rtnl_af, int16], void]]]
IFLA_EXT_MASK nlattr[IFLA_EXT_MASK, int32]
IFLA_PROMISCUITY nlattr[IFLA_PROMISCUITY, int32]
IFLA_NUM_TX_QUEUES nlattr[IFLA_NUM_TX_QUEUES, int32]
IFLA_NUM_RX_QUEUES nlattr[IFLA_NUM_RX_QUEUES, int32]
IFLA_PHYS_PORT_ID nlattr[IFLA_PHYS_PORT_ID, array[int8, 0:MAX_PHYS_ITEM_ID_LEN]]
IFLA_CARRIER_CHANGES nlattr[IFLA_CARRIER_CHANGES, int32]
IFLA_PHYS_SWITCH_ID nlattr[IFLA_PHYS_SWITCH_ID, array[int8, 0:MAX_PHYS_ITEM_ID_LEN]]
IFLA_LINK_NETNSID nlattr[IFLA_LINK_NETNSID, netns_id]
IFLA_PROTO_DOWN nlattr[IFLA_PROTO_DOWN, int8]
IFLA_XDP nlattr[IFLA_XDP, array[ifla_xdp_policy]]
IFLA_EVENT nlattr[IFLA_EVENT, int32]
IFLA_GROUP nlattr[IFLA_GROUP, int32]
IFLA_IF_NETNSID nlattr[IFLA_IF_NETNSID, netns_id]
] [varlen]
type ifla_info_policy_t[TYPE, DATA_TYPE, DATA] {
IFLA_INFO_KIND nlattr[IFLA_INFO_KIND, string[TYPE]]
IFLA_INFO_DATA nlattr[DATA_TYPE, DATA]
}
# TODO: can, dummy, geneve, hsr, ifb, ipoib, ipvlan, macvlan, macvtap, netdevsim
# nlmon, vlan, vrf, vxlan, macsec
ifla_info_policy [
bond ifla_info_policy_t["bond", IFLA_INFO_DATA, array[bond_policy]]
bond_slave ifla_info_policy_t["bond_slave", IFLA_INFO_SLAVE_DATA, bond_slave_policy]
bridge ifla_info_policy_t["bridge", IFLA_INFO_DATA, array[br_policy]]
bridge_slave ifla_info_policy_t["bridge_slave", IFLA_INFO_SLAVE_DATA, array[br_port_policy]]
gre ifla_info_policy_t["gre", IFLA_INFO_DATA, array[ipgre_policy]]
gretap ifla_info_policy_t["gretap", IFLA_INFO_DATA, array[ipgre_policy]]
erspan ifla_info_policy_t["erspan", IFLA_INFO_DATA, array[ipgre_policy]]
ip6gre ifla_info_policy_t["ip6gre", IFLA_INFO_DATA, array[ip6gre_policy]]
ip6gretap ifla_info_policy_t["ip6gretap", IFLA_INFO_DATA, array[ip6gre_policy]]
ip6erspan ifla_info_policy_t["ip6erspan", IFLA_INFO_DATA, array[ip6gre_policy]]
ipip ifla_info_policy_t["ipip", IFLA_INFO_DATA, array[ipip_policy]]
ipip6 ifla_info_policy_t["ip6tnl", IFLA_INFO_DATA, array[ipip6_policy]]
ip6ip6 ifla_info_policy_t["ip6tnl", IFLA_INFO_DATA, array[ip6ip6_policy]]
sit ifla_info_policy_t["sit", IFLA_INFO_DATA, array[sit_policy]]
veth ifla_info_policy_t["veth", IFLA_INFO_DATA, veth_policy]
vti ifla_info_policy_t["vti", IFLA_INFO_DATA, array[vti_policy]]
ip6vti ifla_info_policy_t["ip6vti", IFLA_INFO_DATA, array[ip6vti_policy]]
# TODO: this should be a net device fd. How does one even obtain these?
ppp ifla_info_policy_t["ppp", IFLA_INFO_DATA, nlattr[IFLA_PPP_DEV_FD, fd]]
] [varlen]
bond_policy [
IFLA_BOND_MODE nlattr[IFLA_BOND_MODE, int8[0:6]]
IFLA_BOND_ACTIVE_SLAVE nlattr[IFLA_BOND_ACTIVE_SLAVE, ifindex]
IFLA_BOND_MIIMON nlattr[IFLA_BOND_MIIMON, int32]
IFLA_BOND_UPDELAY nlattr[IFLA_BOND_UPDELAY, int32]
IFLA_BOND_DOWNDELAY nlattr[IFLA_BOND_DOWNDELAY, int32]
IFLA_BOND_USE_CARRIER nlattr[IFLA_BOND_USE_CARRIER, int8]
IFLA_BOND_ARP_INTERVAL nlattr[IFLA_BOND_ARP_INTERVAL, int32]
IFLA_BOND_ARP_IP_TARGET nlattr[IFLA_BOND_ARP_IP_TARGET, array[ipv4_addr]]
IFLA_BOND_ARP_VALIDATE nlattr[IFLA_BOND_ARP_VALIDATE, int32[0:3]]
IFLA_BOND_ARP_ALL_TARGETS nlattr[IFLA_BOND_ARP_ALL_TARGETS, int32[0:1]]
IFLA_BOND_PRIMARY nlattr[IFLA_BOND_PRIMARY, ifindex]
IFLA_BOND_PRIMARY_RESELECT nlattr[IFLA_BOND_PRIMARY_RESELECT, int8[0:2]]
IFLA_BOND_FAIL_OVER_MAC nlattr[IFLA_BOND_FAIL_OVER_MAC, int8[0:2]]
IFLA_BOND_XMIT_HASH_POLICY nlattr[IFLA_BOND_XMIT_HASH_POLICY, int8[0:4]]
IFLA_BOND_RESEND_IGMP nlattr[IFLA_BOND_RESEND_IGMP, int32]
IFLA_BOND_NUM_PEER_NOTIF nlattr[IFLA_BOND_NUM_PEER_NOTIF, int8]
IFLA_BOND_ALL_SLAVES_ACTIVE nlattr[IFLA_BOND_ALL_SLAVES_ACTIVE, int8]
IFLA_BOND_MIN_LINKS nlattr[IFLA_BOND_MIN_LINKS, int32]
IFLA_BOND_LP_INTERVAL nlattr[IFLA_BOND_LP_INTERVAL, int32]
IFLA_BOND_PACKETS_PER_SLAVE nlattr[IFLA_BOND_PACKETS_PER_SLAVE, int32]
IFLA_BOND_AD_LACP_RATE nlattr[IFLA_BOND_AD_LACP_RATE, int8[0:1]]
IFLA_BOND_AD_SELECT nlattr[IFLA_BOND_AD_SELECT, int8[0:2]]
IFLA_BOND_AD_ACTOR_SYS_PRIO nlattr[IFLA_BOND_AD_ACTOR_SYS_PRIO, int16]
IFLA_BOND_AD_USER_PORT_KEY nlattr[IFLA_BOND_AD_USER_PORT_KEY, int16]
IFLA_BOND_AD_ACTOR_SYSTEM nlattr[IFLA_BOND_AD_ACTOR_SYSTEM, ipv4_addr]
IFLA_BOND_TLB_DYNAMIC_LB nlattr[IFLA_BOND_TLB_DYNAMIC_LB, int8]
] [varlen]
bond_slave_policy [
IFLA_BOND_SLAVE_QUEUE_ID nlattr[IFLA_BOND_SLAVE_QUEUE_ID, int16]
] [varlen]
br_policy [
IFLA_BR_FORWARD_DELAY nlattr[IFLA_BR_FORWARD_DELAY, int32[2:30]]
IFLA_BR_HELLO_TIME nlattr[IFLA_BR_HELLO_TIME, int32[1:10]]
IFLA_BR_MAX_AGE nlattr[IFLA_BR_MAX_AGE, int32[6:40]]
IFLA_BR_AGEING_TIME nlattr[IFLA_BR_AGEING_TIME, int32]
IFLA_BR_STP_STATE nlattr[IFLA_BR_STP_STATE, int32[0:1]]
IFLA_BR_PRIORITY nlattr[IFLA_BR_PRIORITY, int16]
IFLA_BR_VLAN_FILTERING nlattr[IFLA_BR_VLAN_FILTERING, int8]
IFLA_BR_VLAN_PROTOCOL nlattr[IFLA_BR_VLAN_PROTOCOL, int32]
IFLA_BR_GROUP_FWD_MASK nlattr[IFLA_BR_GROUP_FWD_MASK, int32]
IFLA_BR_GROUP_ADDR nlattr[IFLA_BR_GROUP_ADDR, int32]
IFLA_BR_MCAST_ROUTER nlattr[IFLA_BR_MCAST_ROUTER, int32]
IFLA_BR_MCAST_SNOOPING nlattr[IFLA_BR_MCAST_SNOOPING, int32]
IFLA_BR_MCAST_QUERY_USE_IFADDR nlattr[IFLA_BR_MCAST_QUERY_USE_IFADDR, int32]
IFLA_BR_MCAST_QUERIER nlattr[IFLA_BR_MCAST_QUERIER, int32]
IFLA_BR_MCAST_HASH_ELASTICITY nlattr[IFLA_BR_MCAST_HASH_ELASTICITY, int32]
IFLA_BR_MCAST_HASH_MAX nlattr[IFLA_BR_MCAST_HASH_MAX, int32]
IFLA_BR_MCAST_LAST_MEMBER_CNT nlattr[IFLA_BR_MCAST_LAST_MEMBER_CNT, int32]
IFLA_BR_MCAST_STARTUP_QUERY_CNT nlattr[IFLA_BR_MCAST_STARTUP_QUERY_CNT, int32]
IFLA_BR_MCAST_LAST_MEMBER_INTVL nlattr[IFLA_BR_MCAST_LAST_MEMBER_INTVL, int32]
IFLA_BR_MCAST_MEMBERSHIP_INTVL nlattr[IFLA_BR_MCAST_MEMBERSHIP_INTVL, int32]
IFLA_BR_MCAST_QUERIER_INTVL nlattr[IFLA_BR_MCAST_QUERIER_INTVL, int32]
IFLA_BR_MCAST_QUERY_INTVL nlattr[IFLA_BR_MCAST_QUERY_INTVL, int32]
IFLA_BR_MCAST_QUERY_RESPONSE_INTVL nlattr[IFLA_BR_MCAST_QUERY_RESPONSE_INTVL, int32]
IFLA_BR_MCAST_STARTUP_QUERY_INTVL nlattr[IFLA_BR_MCAST_STARTUP_QUERY_INTVL, int32]
IFLA_BR_NF_CALL_IPTABLES nlattr[IFLA_BR_NF_CALL_IPTABLES, int32]
IFLA_BR_NF_CALL_IP6TABLES nlattr[IFLA_BR_NF_CALL_IP6TABLES, int32]
IFLA_BR_NF_CALL_ARPTABLES nlattr[IFLA_BR_NF_CALL_ARPTABLES, int32]
IFLA_BR_VLAN_DEFAULT_PVID nlattr[IFLA_BR_VLAN_DEFAULT_PVID, int32]
IFLA_BR_VLAN_STATS_ENABLED nlattr[IFLA_BR_VLAN_STATS_ENABLED, int32]
IFLA_BR_MCAST_STATS_ENABLED nlattr[IFLA_BR_MCAST_STATS_ENABLED, int32]
IFLA_BR_MCAST_IGMP_VERSION nlattr[IFLA_BR_MCAST_IGMP_VERSION, int32]
IFLA_BR_MCAST_MLD_VERSION nlattr[IFLA_BR_MCAST_MLD_VERSION, int32]
] [varlen]
br_port_policy [
IFLA_BRPORT_STATE nlattr[IFLA_BRPORT_STATE, int8[0:4]]
IFLA_BRPORT_COST nlattr[IFLA_BRPORT_COST, int32]
IFLA_BRPORT_PRIORITY nlattr[IFLA_BRPORT_PRIORITY, int16]
IFLA_BRPORT_MODE nlattr[IFLA_BRPORT_MODE, int8[0:1]]
IFLA_BRPORT_GUARD nlattr[IFLA_BRPORT_GUARD, int8[0:1]]
IFLA_BRPORT_PROTECT nlattr[IFLA_BRPORT_PROTECT, int8[0:1]]
IFLA_BRPORT_FAST_LEAVE nlattr[IFLA_BRPORT_FAST_LEAVE, int8[0:1]]
IFLA_BRPORT_LEARNING nlattr[IFLA_BRPORT_LEARNING, int8[0:1]]
IFLA_BRPORT_UNICAST_FLOOD nlattr[IFLA_BRPORT_UNICAST_FLOOD, int8[0:1]]
IFLA_BRPORT_PROXYARP nlattr[IFLA_BRPORT_PROXYARP, int8[0:1]]
IFLA_BRPORT_PROXYARP_WIFI nlattr[IFLA_BRPORT_PROXYARP_WIFI, int8[0:1]]
IFLA_BRPORT_MULTICAST_ROUTER nlattr[IFLA_BRPORT_MULTICAST_ROUTER, int8[0:3]]
IFLA_BRPORT_MCAST_TO_UCAST nlattr[IFLA_BRPORT_MCAST_TO_UCAST, int8[0:1]]
IFLA_BRPORT_MCAST_FLOOD nlattr[IFLA_BRPORT_MCAST_FLOOD, int8[0:1]]
IFLA_BRPORT_BCAST_FLOOD nlattr[IFLA_BRPORT_BCAST_FLOOD, int8[0:1]]
IFLA_BRPORT_VLAN_TUNNEL nlattr[IFLA_BRPORT_VLAN_TUNNEL, int8[0:1]]
IFLA_BRPORT_GROUP_FWD_MASK nlattr[IFLA_BRPORT_GROUP_FWD_MASK, int16]
IFLA_BRPORT_NEIGH_SUPPRESS nlattr[IFLA_BRPORT_NEIGH_SUPPRESS, int8[0:1]]
IFLA_BRPORT_ISOLATED nlattr[IFLA_BRPORT_ISOLATED, int8[0:1]]
IFLA_BRPORT_FLUSH nlattr[IFLA_BRPORT_FLUSH, void]
] [varlen]
gre_common_policy [
IFLA_GRE_LINK nlattr[IFLA_GRE_LINK, ifindex]
IFLA_GRE_IFLAGS nlattr[IFLA_GRE_IFLAGS, int16]
IFLA_GRE_OFLAGS nlattr[IFLA_GRE_OFLAGS, int16]
IFLA_GRE_IKEY nlattr[IFLA_GRE_IKEY, int32]
IFLA_GRE_OKEY nlattr[IFLA_GRE_OKEY, int32]
IFLA_GRE_TTL nlattr[IFLA_GRE_TTL, int8]
IFLA_GRE_TOS nlattr[IFLA_GRE_TOS, int8]
IFLA_GRE_PMTUDISC nlattr[IFLA_GRE_PMTUDISC, int8[0:1]]
IFLA_GRE_ENCAP_TYPE nlattr[IFLA_GRE_ENCAP_TYPE, flags[tunnel_encap_types, int16]]
IFLA_GRE_ENCAP_FLAGS nlattr[IFLA_GRE_ENCAP_FLAGS, int16]
IFLA_GRE_ENCAP_SPORT nlattr[IFLA_GRE_ENCAP_SPORT, sock_port]
IFLA_GRE_ENCAP_DPORT nlattr[IFLA_GRE_ENCAP_DPORT, sock_port]
IFLA_GRE_COLLECT_METADATA nlattr[IFLA_GRE_COLLECT_METADATA, void]
IFLA_GRE_IGNORE_DF nlattr[IFLA_GRE_IGNORE_DF, int8[0:1]]
IFLA_GRE_FWMARK nlattr[IFLA_GRE_FWMARK, int32]
IFLA_GRE_ERSPAN_INDEX nlattr[IFLA_GRE_ERSPAN_INDEX, int32[1:0xfffff]]
IFLA_GRE_ERSPAN_VER nlattr[IFLA_GRE_ERSPAN_VER, int8[1:2]]
IFLA_GRE_ERSPAN_DIR nlattr[IFLA_GRE_ERSPAN_DIR, int8[0:1]]
IFLA_GRE_ERSPAN_HWID nlattr[IFLA_GRE_ERSPAN_HWID, int16]
] [varlen]
ipgre_policy [
IFLA_GRE_LOCAL nlattr[IFLA_GRE_LOCAL, ipv4_addr]
IFLA_GRE_REMOTE nlattr[IFLA_GRE_REMOTE, ipv4_addr]
gre_common_policy array[gre_common_policy]
] [varlen]
ip6gre_policy [
IFLA_GRE_LOCAL nlattr[IFLA_GRE_LOCAL, ipv6_addr]
IFLA_GRE_REMOTE nlattr[IFLA_GRE_REMOTE, ipv6_addr]
gre_common_policy array[gre_common_policy]
] [varlen]
# TODO: There could have some ifla_policy after ifinfomsg
veth_policy [
VETH_INFO_PEER nlattr[VETH_INFO_PEER, ifinfomsg[AF_UNSPEC]]
] [varlen]
vti_common_policy [
IFLA_VTI_LINK nlattr[IFLA_VTI_LINK, ifindex]
IFLA_VTI_IKEY nlattr[IFLA_VTI_IKEY, int32]
IFLA_VTI_OKEY nlattr[IFLA_VTI_OKEY, int32]
IFLA_VTI_FWMARK nlattr[IFLA_VTI_FWMARK, int32]
] [varlen]
vti_policy [
IFLA_VTI_LOCAL nlattr[IFLA_VTI_LOCAL, ipv4_addr]
IFLA_VTI_REMOTE nlattr[IFLA_VTI_REMOTE, ipv4_addr]
vti_common_policy array[vti_common_policy]
] [varlen]
ip6vti_policy [
IFLA_VTI_LOCAL nlattr[IFLA_VTI_LOCAL, ipv6_addr]
IFLA_VTI_REMOTE nlattr[IFLA_VTI_REMOTE, ipv6_addr]
vti_common_policy array[vti_common_policy]
] [varlen]
tunl_policy [
IFLA_IPTUN_LINK nlattr[IFLA_INFO_DATA, ifindex]
IFLA_IPTUN_TTL nlattr[IFLA_IPTUN_TTL, int8]
IFLA_IPTUN_TOS nlattr[IFLA_IPTUN_TOS, int8]
IFLA_IPTUN_ENCAP_TYPE nlattr[IFLA_IPTUN_ENCAP_TYPE, flags[tunnel_encap_types, int16]]
IFLA_IPTUN_ENCAP_FLAGS nlattr[IFLA_IPTUN_ENCAP_FLAGS, int16]
IFLA_IPTUN_ENCAP_SPORT nlattr[IFLA_IPTUN_ENCAP_SPORT, sock_port]
IFLA_IPTUN_ENCAP_DPORT nlattr[IFLA_IPTUN_ENCAP_DPORT, sock_port]
IFLA_IPTUN_COLLECT_METADATA nlattr[IFLA_IPTUN_COLLECT_METADATA, void]
IFLA_IPTUN_FWMARK nlattr[IFLA_IPTUN_FWMARK, int32]
] [varlen]
ipip_policy [
IFLA_IPTUN_PROTO nlattr[IFLA_IPTUN_PROTO, const[IPPROTO_IPIP, int8]]
IFLA_IPTUN_LOCAL nlattr[IFLA_IPTUN_LOCAL, ipv4_addr]
IFLA_IPTUN_REMOTE nlattr[IFLA_IPTUN_REMOTE, ipv4_addr]
tunl_policy array[tunl_policy]
IFLA_IPTUN_PMTUDISC nlattr[IFLA_IPTUN_PMTUDISC, int8[0:1]]
] [varlen]
tunl6_policy [
IFLA_IPTUN_LOCAL nlattr[IFLA_IPTUN_LOCAL, ipv6_addr]
IFLA_IPTUN_REMOTE nlattr[IFLA_IPTUN_REMOTE, ipv6_addr]
tunl_policy array[tunl_policy]
IFLA_IPTUN_ENCAP_LIMIT nlattr[IFLA_IPTUN_ENCAP_LIMIT, int8]
IFLA_IPTUN_FLOWINFO nlattr[IFLA_IPTUN_FLOWINFO, int32]
IFLA_IPTUN_FLAGS nlattr[IFLA_IPTUN_FLAGS, int32[0:0x40]]
] [varlen]
ipip6_policy [
IFLA_IPTUN_PROTO nlattr[IFLA_IPTUN_PROTO, const[IPPROTO_IPIP, int8]]
tunl6_policy array[tunl6_policy]
] [varlen]
ip6ip6_policy [
IFLA_IPTUN_PROTO nlattr[IFLA_IPTUN_PROTO, const[IPPROTO_IPV6, int8]]
tunl6_policy array[tunl6_policy]
] [varlen]
sit_policy [
IFLA_IPTUN_PROTO nlattr[IFLA_IPTUN_PROTO, const[IPPROTO_IPV6, int8]]
IFLA_IPTUN_LOCAL nlattr[IFLA_IPTUN_LOCAL, ipv6_addr]
IFLA_IPTUN_REMOTE nlattr[IFLA_IPTUN_REMOTE, ipv6_addr]
tunl_policy array[tunl_policy]
IFLA_IPTUN_FLAGS nlattr[IFLA_IPTUN_FLAGS, int32[0:0x40]]
] [varlen]
ifa_ipv4_policy [
IFA_LOCAL nlattr[IFA_LOCAL, ipv4_addr]
IFA_ADDRESS nlattr[IFA_ADDRESS, ipv4_addr]
IFA_BROADCAST nlattr[IFA_BROADCAST, ipv4_addr]
IFA_LABEL nlattr[IFA_LABEL, devname]
IFA_CACHEINFO nlattr[IFA_CACHEINFO, ifa_cacheinfo]
IFA_FLAGS nlattr[IFA_FLAGS, flags[ifa_flags, int32]]
] [varlen]
ifa_ipv6_policy [
IFA_ADDRESS nlattr[IFA_ADDRESS, ipv6_addr]
IFA_LOCAL nlattr[IFA_LOCAL, ipv6_addr]
IFA_CACHEINFO nlattr[IFA_CACHEINFO, ifa_cacheinfo]
IFA_FLAGS nlattr[IFA_FLAGS, flags[ifa_flags, int32]]
] [varlen]
rtm_ipv4_policy [
RTA_DST nlattr[RTA_DST, ipv4_addr]
RTA_SRC nlattr[RTA_SRC, ipv4_addr]
RTA_IIF nlattr[RTA_DST, ifindex]
RTA_OIF nlattr[RTA_OIF, ifindex]
RTA_GATEWAY nlattr[RTA_GATEWAY, ipv4_addr]
RTA_PRIORITY nlattr[RTA_PRIORITY, int32]
RTA_PREFSRC nlattr[RTA_PREFSRC, ipv4_addr]
# TODO: what's this? is this interesting?
RTA_METRICS nlattr[RTA_METRICS, array[int8]]
RTA_MULTIPATH nlattr[RTA_MULTIPATH, rtnexthop]
RTA_FLOW nlattr[RTA_FLOW, int32]
RTA_ENCAP_TYPE nlattr[RTA_ENCAP_TYPE, flags[lwtunnel_encap_types, int16]]
# TODO: describe RTA_ENCAP
RTA_ENCAP nlattr[RTA_ENCAP, nl_generic_attr]
RTA_UID nlattr[RTA_UID, uid]
RTA_MARK nlattr[RTA_MARK, int32]
] [varlen]
rtm_ipv6_policy [
RTA_GATEWAY nlattr[RTA_GATEWAY, ipv6_addr]
RTA_IIF nlattr[RTA_DST, ifindex]
RTA_OIF nlattr[RTA_OIF, ifindex]
RTA_PRIORITY nlattr[RTA_PRIORITY, int32]
# TODO: what's this? is this interesting?
RTA_METRICS nlattr[RTA_METRICS, array[int8]]
RTA_MULTIPATH nlattr[RTA_MULTIPATH, rtnexthop]
RTA_PREF nlattr[RTA_PREF, int8]
RTA_ENCAP_TYPE nlattr[RTA_ENCAP_TYPE, flags[lwtunnel_encap_types, int16]]
# TODO: describe RTA_ENCAP
RTA_ENCAP nlattr[RTA_ENCAP, nl_generic_attr]
RTA_EXPIRES nlattr[RTA_EXPIRES, int32]
RTA_UID nlattr[RTA_UID, uid]
RTA_MARK nlattr[RTA_MARK, int32]
] [varlen]
rtm_mpls_policy [
RTA_DST nlattr[RTA_DST, array[mpls_label]]
RTA_OIF nlattr[RTA_OIF, ifindex]
RTA_TTL_PROPAGATE nlattr[RTA_TTL_PROPAGATE, int8]
] [varlen]
type fib_rule_hdr[FAMILY] {
family const[FAMILY, int8]
dst_len flags[rtm_addr_len, int8]
rcdst_len flags[rtm_addr_len, int8]
tos int8
table int8
res1 const[0, int8]
res2 const[0, int8]
action flags[fr_actions, int32]
flags flags[fr_flags, int32]
}
fib_rule_uid_range {
start uid
end uid
}
fib_rule_port_range {
start sock_port
end sock_port
}
fra_generic_policy [
FRA_IIFNAME nlattr[FRA_IIFNAME, devname]
FRA_OIFNAME nlattr[FRA_OIFNAME, devname]
FRA_PRIORITY nlattr[FRA_PRIORITY, int32]
FRA_FWMARK nlattr[FRA_FWMARK, int32]
FRA_FWMASK nlattr[FRA_FWMASK, int32]
FRA_TABLE nlattr[FRA_TABLE, int32]
FRA_SUPPRESS_PREFIXLEN nlattr[FRA_SUPPRESS_PREFIXLEN, int32]
FRA_SUPPRESS_IFGROUP nlattr[FRA_SUPPRESS_IFGROUP, int32]
FRA_GOTO nlattr[FRA_GOTO, int32]
FRA_L3MDEV nlattr[FRA_L3MDEV, int8]
FRA_UID_RANGE nlattr[FRA_UID_RANGE, fib_rule_uid_range]
FRA_PROTOCOL nlattr[FRA_PROTOCOL, flags[rtm_protocol, int8]]
FRA_IP_PROTO nlattr[FRA_IP_PROTO, flags[ipv6_types, int8]]
FRA_SPORT_RANGE nlattr[FRA_SPORT_RANGE, fib_rule_port_range]
FRA_DPORT_RANGE nlattr[FRA_DPORT_RANGE, fib_rule_port_range]
] [varlen]
# FRA_DST/SRC are not in fib4/6_rule_policy. But fib4/6 still need them.
# So I add them here.
fib4_rule_policy [
FRA_DST nlattr[RTA_DST, ipv4_addr]
FRA_SRC nlattr[RTA_SRC, ipv4_addr]
FRA_GENERIC_POLICY fra_generic_policy
FRA_FLOW nlattr[FRA_FLOW, int32]
] [varlen]
fib6_rule_policy [
FRA_DST nlattr[RTA_DST, ipv6_addr]
FRA_SRC nlattr[RTA_SRC, ipv6_addr]
FIB_RULE_POLICY fra_generic_policy
] [varlen]
nl_neightbl_policy [
NDTA_NAME nlattr[NDTA_NAME, string]
NDTA_THRESH1 nlattr[NDTA_THRESH1, int32]
NDTA_THRESH2 nlattr[NDTA_THRESH2, int32]
NDTA_THRESH3 nlattr[NDTA_THRESH3, int32]
NDTA_GC_INTERVAL nlattr[NDTA_GC_INTERVAL, int64]
NDTA_PARMS nlattr[NDTA_PARMS, array[nl_ntbl_parm_policy]]
] [varlen]
nl_ntbl_parm_policy [
NDTPA_IFINDEX nlattr[NDTPA_IFINDEX, ifindex]
NDTPA_QUEUE_LEN nlattr[NDTPA_QUEUE_LEN, int32]
NDTPA_PROXY_QLEN nlattr[NDTPA_PROXY_QLEN, int32]
NDTPA_APP_PROBES nlattr[NDTPA_APP_PROBES, int32]
NDTPA_UCAST_PROBES nlattr[NDTPA_UCAST_PROBES, int32]
NDTPA_MCAST_PROBES nlattr[NDTPA_MCAST_PROBES, int32]
NDTPA_MCAST_REPROBES nlattr[NDTPA_MCAST_REPROBES, int32]
NDTPA_BASE_REACHABLE_TIME nlattr[NDTPA_BASE_REACHABLE_TIME, int64]
NDTPA_GC_STALETIME nlattr[NDTPA_GC_STALETIME, int64]
NDTPA_DELAY_PROBE_TIME nlattr[NDTPA_DELAY_PROBE_TIME, int64]
NDTPA_RETRANS_TIME nlattr[NDTPA_RETRANS_TIME, int64]
NDTPA_ANYCAST_DELAY nlattr[NDTPA_ANYCAST_DELAY, int64]
NDTPA_PROXY_DELAY nlattr[NDTPA_PROXY_DELAY, int64]
NDTPA_LOCKTIME nlattr[NDTPA_LOCKTIME, int64]
] [varlen]
nd_policy [
NDA_DST_IPV4 nlattr[NDA_DST, ipv4_addr]
NDA_DST_IPV6 nlattr[NDA_DST, ipv6_addr]
NDA_DST_MAC nlattr[NDA_DST, mac_addr]
NDA_LLADDR nlattr[NDA_LLADDR, mac_addr]
NDA_CACHEINFO nlattr[NDA_CACHEINFO, nda_cacheinfo]
NDA_PROBES nlattr[NDA_PROBES, int32]
NDA_VLAN nlattr[NDA_VLAN, int16[0:4]]
NDA_PORT nlattr[NDA_PORT, sock_port]
NDA_VNI nlattr[NDA_VNI, int32]
NDA_IFINDEX nlattr[NDA_IFINDEX, ifindex]
NDA_MASTER nlattr[NDA_MASTER, int32]
NDA_LINK_NETNSID nlattr[NDA_LINK_NETNSID, int32]
NDA_SRC_VNI nlattr[NDA_SRC_VNI, int32]
] [varlen]
nda_cacheinfo {
ndm_confirmed int32
ndm_used int32
ndm_updated int32
ndm_refcnt int32
}
rtnexthop {
rtnh_len int16
rtnh_flags int8
rtnh_hops int8
rtnh_ifindex ifindex
}
ifa_cacheinfo {
ifa_prefered int32
ifa_valid int32
cstamp int32
tstamp int32
}
devconf_ip_policy [
NETCONFA_IFINDEX nlattr[NETCONFA_IFINDEX, ifindex]
NETCONFA_FORWARDING nlattr[NETCONFA_FORWARDING, int32]
NETCONFA_RP_FILTER nlattr[NETCONFA_RP_FILTER, int32]
NETCONFA_PROXY_NEIGH nlattr[NETCONFA_PROXY_NEIGH, int32]
IGNORE_ROUTES_WITH_LINKDOWN nlattr[NETCONFA_IGNORE_ROUTES_WITH_LINKDOWN, int32]
] [varlen]
devconf_mpls_policy [
NETCONFA_IFINDEX nlattr[NETCONFA_IFINDEX, ifindex]
IGNORE_ROUTES_WITH_LINKDOWN nlattr[NETCONFA_IGNORE_ROUTES_WITH_LINKDOWN, int32]
] [varlen]
ifla_vf_policy [
IFLA_VF_MAC nlattr[IFLA_VF_MAC, ifla_vf_mac]
IFLA_VF_VLAN nlattr[IFLA_VF_VLAN, ifla_vf_vlan]
IFLA_VF_VLAN_LIST nlattr[IFLA_VF_VLAN_LIST, array[nlattr[IFLA_VF_VLAN_INFO, ifla_vf_vlan_info]]]
IFLA_VF_TX_RATE nlattr[IFLA_VF_TX_RATE, ifla_vf_tx_rate]
IFLA_VF_SPOOFCHK nlattr[IFLA_VF_SPOOFCHK, ifla_vf_spoofchk]
IFLA_VF_RATE nlattr[IFLA_VF_RATE, ifla_vf_rate]
IFLA_VF_LINK_STATE nlattr[IFLA_VF_LINK_STATE, ifla_vf_link_state]
IFLA_VF_RSS_QUERY_EN nlattr[IFLA_VF_RSS_QUERY_EN, ifla_vf_rss_query_en]
IFLA_VF_TRUST nlattr[IFLA_VF_TRUST, ifla_vf_trust]
IFLA_VF_IB_NODE_GUID nlattr[IFLA_VF_IB_NODE_GUID, ifla_vf_guid]
IFLA_VF_IB_PORT_GUID nlattr[IFLA_VF_IB_PORT_GUID, ifla_vf_guid]
] [varlen]
ifla_vf_mac {
vf int32
mac mac_addr
pad array[const[0, int8], 26]
}
ifla_vf_vlan {
vf int32
vlan int32[0:4095]
qos int32
}
ifla_vf_tx_rate {
vf int32
rate int32
}
ifla_vf_rate {
vf int32
min_tx_rate int32
max_tx_rate int32
}
ifla_vf_spoofchk {
vf int32
setting int32
}
ifla_vf_guid {
vf int32
guid int64
}
ifla_vf_link_state {
vf int32
link_state int32
}
ifla_vf_rss_query_en {
vf int32
setting int32
}
ifla_vf_trust {
vf int32
setting int32
}
ifla_vf_vlan_info {
vf int32
vlan int32[0:4095]
qos int32
vlan_proto flags[ifla_vf_vlan_proto, int16be]
}
ifla_vf_vlan_proto = ETH_P_8021Q, ETH_P_8021AD
ifla_port_policy [
IFLA_PORT_VF nlattr[IFLA_PORT_VF, int32]
IFLA_PORT_PROFILE nlattr[IFLA_PORT_PROFILE, string]
IFLA_PORT_INSTANCE_UUID nlattr[IFLA_PORT_INSTANCE_UUID, uuid_t]
IFLA_PORT_HOST_UUID nlattr[IFLA_PORT_HOST_UUID, uuid_t]
IFLA_PORT_REQUEST nlattr[IFLA_PORT_REQUEST, int8]
] [varlen]
ifla_xdp_policy [
IFLA_XDP_FD nlattr[IFLA_XDP_FD, bpf_prog]
IFLA_XDP_FLAGS nlattr[IFLA_XDP_FLAGS, flags[ifla_xdp_flags, int32]]
] [varlen]
ifla_xdp_flags = XDP_FLAGS_UPDATE_IF_NOEXIST, XDP_FLAGS_SKB_MODE, XDP_FLAGS_DRV_MODE, XDP_FLAGS_HW_MODE
rtnl_link_ifmap {
mem_start int64
mem_end int64
base_addr int64
irq int16
dma int8
port int8
}
rtnl_net_policy [
NETNSA_NSID nlattr[NETNSA_NSID, netns_id]
NETNSA_PID nlattr[NETNSA_PID, pid]
NETNSA_FD nlattr[NETNSA_FD, fd_namespace]
] [varlen]
rtcanmsg {
can_family const[AF_CAN, int8]
gwtype const[CGW_TYPE_CAN_CAN, int8]
flags flags[rtcanmsg_flags, int16]
}
rtcanmsg_flags = CGW_FLAGS_CAN_ECHO, CGW_FLAGS_CAN_SRC_TSTAMP, CGW_FLAGS_CAN_IIF_TX_OK
cgw_policy [
CGW_MOD_AND nlattr[CGW_MOD_AND, cgw_frame_mod]
CGW_MOD_OR nlattr[CGW_MOD_OR, cgw_frame_mod]
CGW_MOD_XOR nlattr[CGW_MOD_XOR, cgw_frame_mod]
CGW_MOD_SET nlattr[CGW_MOD_SET, cgw_frame_mod]
CGW_CS_XOR nlattr[CGW_CS_XOR, cgw_csum_xor]
CGW_CS_CRC8 nlattr[CGW_CS_CRC8, cgw_csum_crc8]
CGW_SRC_IF nlattr[CGW_SRC_IF, ifindex_vcan]
CGW_DST_IF nlattr[CGW_DST_IF, ifindex_vcan]
CGW_FILTER nlattr[CGW_FILTER, can_filter]
CGW_LIM_HOPS nlattr[CGW_LIM_HOPS, int8]
CGW_MOD_UID nlattr[CGW_MOD_UID, uid]
] [varlen]
cgw_frame_mod {
cf can_frame
modtype flags[cgw_frame_modtype, int8]
} [packed]
cgw_frame_modtype = CGW_MOD_ID, CGW_MOD_DLC, CGW_MOD_DATA
cgw_csum_xor {
from_idx int8[-9:8]
to_idx int8[-9:8]
result_idx int8[-9:8]
init_xor_val int8
} [packed]
cgw_csum_crc8 {
from_idx int8[0:127]
to_idx int8[0:127]
result_idx int8[0:127]
init_crc_val int8
final_xor_val int8
crctab array[int8, 256]
profile flags[cgw_csum_crc8_profile, int8]
profile_data array[int8, 20]
} [packed]
cgw_csum_crc8_profile = CGW_CRC8PRF_UNSPEC, CGW_CRC8PRF_1U8, CGW_CRC8PRF_16U8, CGW_CRC8PRF_SFFID_XOR
rtnl_af = AF_INET, AF_INET6, AF_BRIDGE, AF_MPLS
net_device_flags = IFF_UP, IFF_BROADCAST, IFF_DEBUG, IFF_LOOPBACK, IFF_POINTOPOINT, IFF_NOTRAILERS, IFF_RUNNING, IFF_NOARP, IFF_PROMISC, IFF_ALLMULTI, IFF_MASTER, IFF_SLAVE, IFF_MULTICAST, IFF_PORTSEL, IFF_AUTOMEDIA, IFF_DYNAMIC, IFF_LOWER_UP, IFF_DORMANT, IFF_ECHO
ifa_flags = IFA_F_SECONDARY, IFA_F_NODAD, IFA_F_OPTIMISTIC, IFA_F_DADFAILED, IFA_F_HOMEADDRESS, IFA_F_DEPRECATED, IFA_F_TENTATIVE, IFA_F_PERMANENT, IFA_F_MANAGETEMPADDR, IFA_F_NOPREFIXROUTE, IFA_F_MCAUTOJOIN
rt_scope_t = RT_SCOPE_UNIVERSE, RT_SCOPE_SITE, RT_SCOPE_LINK, RT_SCOPE_HOST, RT_SCOPE_NOWHERE
rtm_protocol = RTPROT_UNSPEC, RTPROT_REDIRECT, RTPROT_KERNEL, RTPROT_BOOT, RTPROT_STATIC
rtm_type = RTN_UNSPEC, RTN_UNICAST, RTN_LOCAL, RTN_BROADCAST, RTN_ANYCAST, RTN_MULTICAST, RTN_BLACKHOLE, RTN_UNREACHABLE, RTN_PROHIBIT, RTN_THROW, RTN_NAT, RTN_XRESOLVE
rtm_flags = RTM_F_NOTIFY, RTM_F_CLONED, RTM_F_EQUALIZE, RTM_F_PREFIX, RTM_F_LOOKUP_TABLE, RTM_F_FIB_MATCH
fr_actions = FR_ACT_UNSPEC, FR_ACT_TO_TBL, FR_ACT_GOTO, FR_ACT_NOP, FR_ACT_RES3, FR_ACT_RES4, FR_ACT_BLACKHOLE, FR_ACT_UNREACHABLE, FR_ACT_PROHIBIT
fr_flags = FIB_RULE_PERMANENT, FIB_RULE_INVERT, FIB_RULE_UNRESOLVED, FIB_RULE_IIF_DETACHED, FIB_RULE_OIF_DETACHED, FIB_RULE_FIND_SADDR
lwtunnel_encap_types = LWTUNNEL_ENCAP_NONE, LWTUNNEL_ENCAP_MPLS, LWTUNNEL_ENCAP_IP, LWTUNNEL_ENCAP_ILA, LWTUNNEL_ENCAP_IP6, LWTUNNEL_ENCAP_SEG6, LWTUNNEL_ENCAP_BPF, LWTUNNEL_ENCAP_SEG6_LOCAL
rt_table_types = RT_TABLE_UNSPEC, RT_TABLE_COMPAT, RT_TABLE_DEFAULT, RT_TABLE_MAIN, RT_TABLE_LOCAL
ndm_state = NUD_INCOMPLETE, NUD_REACHABLE, NUD_STALE, NUD_DELAY, NUD_PROBE, NUD_FAILED, NUD_NOARP, NUD_PERMANENT, NUD_NONE
ndm_flags = NTF_USE, NTF_SELF, NTF_MASTER, NTF_PROXY, NTF_EXT_LEARNED, NTF_OFFLOADED, NTF_ROUTER
ifa_prefixlen = 0, 1, 8, 16, 24, 31, 32, 56, 63, 64, 120, 128
rtm_addr_len = 0, 16, 20, 32, 128
filter_mask = IFLA_STATS_UNSPEC, IFLA_STATS_LINK_64, IFLA_STATS_LINK_XSTATS, IFLA_STATS_LINK_XSTATS_SLAVE, IFLA_STATS_LINK_OFFLOAD_XSTATS, IFLA_STATS_AF_SPEC
tunnel_encap_types = TUNNEL_ENCAP_NONE, TUNNEL_ENCAP_FOU, TUNNEL_ENCAP_GUE, TUNNEL_ENCAP_MPLS
|