/
socket_netlink_route.txt
1149 lines (1015 loc) · 46.4 KB
/
socket_netlink_route.txt
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
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
# 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/ip.h>
include <uapi/linux/if_link.h>
include <uapi/linux/if_addr.h>
include <uapi/linux/if_addrlabel.h>
include <uapi/linux/if_bridge.h>
include <uapi/linux/if_vlan.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>
include <uapi/linux/can/vxcan.h>
include <uapi/linux/mpls_iptunnel.h>
include <uapi/linux/ila.h>
# TODO: uncomment after the kernel fixes the seg6_iptunnel.h uapi header.
#include <uapi/linux/seg6_iptunnel.h>
include <uapi/linux/seg6_local.h>
include <uapi/linux/rpl_iptunnel.h>
include <net/caif/caif_hsi.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, nda_policy]
delneigh netlink_msg[RTM_DELNEIGH, ndmsg, nda_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]
newlinkprop netlink_msg[RTM_NEWLINKPROP, ifinfomsg[AF_UNSPEC], ifla_policy]
# RTM_GETLINKPROP is currently not used by the kernel.
dellinkprop netlink_msg[RTM_DELLINKPROP, ifinfomsg[AF_UNSPEC], ifla_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_ipv4_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_ipv4_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]
ipv6_newaddrlabel netlink_msg[RTM_NEWADDRLABEL, ifaddrlblmsg[AF_INET6], ifal_policy]
ipv6_deladdrlabel netlink_msg[RTM_DELADDRLABEL, ifaddrlblmsg[AF_INET6], ifal_policy]
ipv6_getaddrlabel netlink_msg[RTM_GETADDRLABEL, ifaddrlblmsg[AF_INET6], ifal_policy]
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, nda_policy]
bridge_delneigh netlink_msg[RTM_DELNEIGH, ndmsg, nda_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]
bridge_getvlan netlink_msg[RTM_GETVLAN, br_vlan_msg[AF_BRIDGE], br_vlan_db_dump_pol]
bridge_newvlan netlink_msg[RTM_NEWVLAN, br_vlan_msg[AF_BRIDGE], br_vlan_db_policy_container]
bridge_delvlan netlink_msg[RTM_DELVLAN, br_vlan_msg[AF_BRIDGE], br_vlan_db_policy_container]
RTM_GETMDB netlink_msg[RTM_GETMDB, br_port_msg[AF_BRIDGE], void]
RTM_NEWMDB netlink_msg[RTM_NEWMDB, br_port_msg[AF_BRIDGE], br_mdb_policy]
RTM_DELMDB netlink_msg[RTM_DELMDB, br_port_msg[AF_BRIDGE], br_mdb_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_flags8, int8]
ifa_scope flags[rt_scope_t, int8]
ifa_index ifindex
}
type ifaddrlblmsg[FAMILY] {
ifal_family const[FAMILY, int8]
__ifal_reserved const[0, int8]
ifal_prefixlen flags[ifa_prefixlen, int8]
ifal_flags const[0, int8]
ifal_index ifindex
ifal_seq int32
}
type br_vlan_msg[FAMILY] {
family const[FAMILY, int8]
reserved1 const[0, int8]
reserved2 const[0, int16]
ifindex ifindex
}
type br_port_msg[FAMILY] {
family const[FAMILY, int8]
ifindex 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_MTU, int32]
IFLA_LINK nlattr[IFLA_LINK, ifindex]
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 nlnest[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 nlnest[IFLA_VFINFO_LIST, array[nlnest[IFLA_VF_INFO, array[ifla_vf_policy]]]]
IFLA_VF_PORTS nlnest[IFLA_VF_PORTS, array[nlnest[IFLA_VF_PORT, array[ifla_port_policy]]]]
IFLA_PORT_SELF nlnest[IFLA_PORT_SELF, array[ifla_port_policy]]
IFLA_AF_SPEC nlnest[IFLA_AF_SPEC, array[ifla_af_spec_policy]]
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 nlnest[IFLA_XDP, array[ifla_xdp_policy]]
IFLA_EVENT nlattr[IFLA_EVENT, int32]
IFLA_GROUP nlattr[IFLA_GROUP, int32]
IFLA_TARGET_NETNSID nlattr[IFLA_TARGET_NETNSID, netns_id]
IFLA_PROP_LIST nlnest[IFLA_PROP_LIST, array[nlattr[IFLA_ALT_IFNAME, devname]]]
IFLA_ALT_IFNAME nlattr[IFLA_ALT_IFNAME, devname]
IFLA_GSO_MAX_SEGS nlattr[IFLA_GSO_MAX_SEGS, int32[0:GSO_MAX_SEGS]]
IFLA_GSO_MAX_SIZE nlattr[IFLA_GSO_MAX_SIZE, int32[0:GSO_MAX_SIZE]]
] [varlen]
ifla_af_spec_policy [
AF_INET nlnest[AF_INET, nlnest[IFLA_INET_CONF, array[nlattr_tt[int16:14[0:IPV4_DEVCONF_MAX], 0, 0, int32]]]]
AF_INET6 nlnest[AF_INET6, array[inet6_af_policy]]
AF_BRIDGE nlattr[AF_BRIDGE, void]
AF_MPLS nlattr[AF_MPLS, void]
] [varlen]
inet6_af_policy [
IFLA_INET6_ADDR_GEN_MODE nlattr[IFLA_INET6_ADDR_GEN_MODE, int8]
IFLA_INET6_TOKEN nlattr[IFLA_INET6_TOKEN, ipv6_addr]
] [varlen]
ifal_policy [
IFAL_ADDRESS nlattr[IFAL_ADDRESS, ipv6_addr]
IFAL_LABEL nlattr[IFAL_LABEL, flags[ifal_labels, int32]]
] [varlen]
type ifla_info_policy_t[TYPE, DATA_TYPE, DATA] {
IFLA_INFO_KIND nlattr[IFLA_INFO_KIND, string[TYPE]]
IFLA_INFO_DATA nlnest[DATA_TYPE, DATA]
}
# TODO: can, dummy, geneve, ifb, netdevsim, nlmon, vrf, vxlan
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[ip6_tnl_policy]]
sit ifla_info_policy_t["sit", IFLA_INFO_DATA, array[ipip6_policy]]
veth ifla_info_policy_t["veth", IFLA_INFO_DATA, optional[veth_policy]]
vti ifla_info_policy_t["vti", IFLA_INFO_DATA, array[vti_policy]]
ip6vti ifla_info_policy_t["ip6vti", IFLA_INFO_DATA, array[vti6_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]]
# This is not an array[gtp_policy] intentionally, gtp_policy is a struct.
gtp ifla_info_policy_t["gtp", IFLA_INFO_DATA, gtp_policy]
hsr ifla_info_policy_t["hsr", IFLA_INFO_DATA, array[hsr_policy]]
xfrm ifla_info_policy_t["xfrm", IFLA_INFO_DATA, array[xfrmi_policy]]
vcan ifla_info_policy_t["vcan", IFLA_INFO_DATA, void]
vxcan ifla_info_policy_t["vxcan", IFLA_INFO_DATA, optional[nlattr[VXCAN_INFO_PEER, peer_info]]]
vlan ifla_info_policy_t["vlan", IFLA_INFO_DATA, array[vlan_policy]]
ipvlan ifla_info_policy_t["ipvlan", IFLA_INFO_DATA, array[ipvlan_nl_policy]]
macvlan ifla_info_policy_t["macvlan", IFLA_INFO_DATA, array[macvlan_policy]]
macvtap ifla_info_policy_t["macvtap", IFLA_INFO_DATA, void]
macsec ifla_info_policy_t["macsec", IFLA_INFO_DATA, array[macsec_rtnl_policy]]
lowpan ifla_info_policy_t["lowpan", IFLA_INFO_DATA, void]
ipoib ifla_info_policy_t["ipoib", IFLA_INFO_DATA, array[ipoib_policy]]
cfhsi ifla_info_policy_t["cfhsi", IFLA_INFO_DATA, array[caif_hsi_policy]]
geneve ifla_info_policy_t["geneve", IFLA_INFO_DATA, array[geneve_policy]]
wireguard ifla_info_policy_t["wireguard", IFLA_INFO_DATA, void]
] [varlen]
geneve_policy [
IFLA_GENEVE_ID nlattr[IFLA_GENEVE_ID, int32[0:4]]
IFLA_GENEVE_REMOTE nlattr[IFLA_GENEVE_REMOTE, ipv4_addr]
IFLA_GENEVE_REMOTE6 nlattr[IFLA_GENEVE_REMOTE6, ipv6_addr]
IFLA_GENEVE_TTL nlattr[IFLA_GENEVE_TTL, int8]
IFLA_GENEVE_TOS nlattr[IFLA_GENEVE_TOS, int8]
IFLA_GENEVE_LABEL nlnetw[IFLA_GENEVE_LABEL, int32be]
IFLA_GENEVE_PORT nlattr[IFLA_GENEVE_PORT, sock_port]
IFLA_GENEVE_COLLECT_METADATA nlattr[IFLA_GENEVE_COLLECT_METADATA, void]
IFLA_GENEVE_UDP_CSUM nlattr[IFLA_GENEVE_UDP_CSUM, bool8]
IFLA_GENEVE_UDP_ZERO_CSUM6_TX nlattr[IFLA_GENEVE_UDP_ZERO_CSUM6_TX, bool8]
IFLA_GENEVE_UDP_ZERO_CSUM6_RX nlattr[IFLA_GENEVE_UDP_ZERO_CSUM6_RX, bool8]
IFLA_GENEVE_TTL_INHERIT nlattr[IFLA_GENEVE_TTL_INHERIT, bool8]
IFLA_GENEVE_DF nlattr[IFLA_GENEVE_DF, int8]
] [varlen]
caif_hsi_policy [
__IFLA_CAIF_HSI_INACTIVITY_TOUT nlattr[__IFLA_CAIF_HSI_INACTIVITY_TOUT, int32]
__IFLA_CAIF_HSI_AGGREGATION_TOUT nlattr[__IFLA_CAIF_HSI_AGGREGATION_TOUT, int32]
__IFLA_CAIF_HSI_HEAD_ALIGN nlattr[__IFLA_CAIF_HSI_HEAD_ALIGN, int32]
__IFLA_CAIF_HSI_TAIL_ALIGN nlattr[__IFLA_CAIF_HSI_TAIL_ALIGN, int32]
__IFLA_CAIF_HSI_QHIGH_WATERMARK nlattr[__IFLA_CAIF_HSI_QHIGH_WATERMARK, int32]
__IFLA_CAIF_HSI_QLOW_WATERMARK nlattr[__IFLA_CAIF_HSI_QLOW_WATERMARK, int32]
] [varlen]
ipoib_policy [
IFLA_IPOIB_PKEY nlattr[IFLA_IPOIB_PKEY, int16]
IFLA_IPOIB_MODE nlattr[IFLA_IPOIB_MODE, bool16]
IFLA_IPOIB_UMCAST nlattr[IFLA_IPOIB_UMCAST, bool16]
] [varlen]
macsec_rtnl_policy [
# TODO: all of these need better types.
IFLA_MACSEC_SCI nlattr[IFLA_MACSEC_SCI, int64]
IFLA_MACSEC_PORT nlnetw[IFLA_MACSEC_PORT, sock_port]
IFLA_MACSEC_ICV_LEN nlattr[IFLA_MACSEC_ICV_LEN, int8]
IFLA_MACSEC_CIPHER_SUITE nlattr[IFLA_MACSEC_CIPHER_SUITE, int64]
IFLA_MACSEC_WINDOW nlattr[IFLA_MACSEC_WINDOW, int32]
IFLA_MACSEC_ENCODING_SA nlattr[IFLA_MACSEC_ENCODING_SA, int8]
IFLA_MACSEC_ENCRYPT nlattr[IFLA_MACSEC_ENCRYPT, int8]
IFLA_MACSEC_PROTECT nlattr[IFLA_MACSEC_PROTECT, int8]
IFLA_MACSEC_INC_SCI nlattr[IFLA_MACSEC_INC_SCI, int8]
IFLA_MACSEC_ES nlattr[IFLA_MACSEC_ES, int8]
IFLA_MACSEC_SCB nlattr[IFLA_MACSEC_SCB, int8]
IFLA_MACSEC_REPLAY_PROTECT nlattr[IFLA_MACSEC_REPLAY_PROTECT, int8]
IFLA_MACSEC_VALIDATION nlattr[IFLA_MACSEC_VALIDATION, int8]
] [varlen]
ipvlan_nl_policy [
IFLA_IPVLAN_MODE nlattr[IFLA_IPVLAN_MODE, flags[ipvlan_mode, int16]]
IFLA_IPVLAN_FLAGS nlattr[IFLA_IPVLAN_FLAGS, flags[ipvlan_flags, int16]]
] [varlen]
ipvlan_mode = IPVLAN_MODE_L2, IPVLAN_MODE_L3, IPVLAN_MODE_L3S
ipvlan_flags = IPVLAN_F_PRIVATE, IPVLAN_F_VEPA
macvlan_policy [
IFLA_MACVLAN_MODE nlattr[IFLA_MACVLAN_MODE, flags[macvlan_mode, int32]]
IFLA_MACVLAN_FLAGS nlattr[IFLA_MACVLAN_FLAGS, bool16]
IFLA_MACVLAN_MACADDR_MODE nlattr[IFLA_MACVLAN_MACADDR_MODE, flags[macvlan_macaddr_mode, int32]]
IFLA_MACVLAN_MACADDR nlattr[IFLA_MACVLAN_MACADDR, mac_addr]
IFLA_MACVLAN_MACADDR_DATA nlnest[IFLA_MACVLAN_MACADDR_DATA, array[nlattr[IFLA_MACVLAN_MACADDR, mac_addr]]]
] [varlen]
macvlan_mode = MACVLAN_MODE_PRIVATE, MACVLAN_MODE_VEPA, MACVLAN_MODE_BRIDGE, MACVLAN_MODE_PASSTHRU, MACVLAN_MODE_SOURCE
macvlan_macaddr_mode = MACVLAN_MACADDR_ADD, MACVLAN_MACADDR_DEL, MACVLAN_MACADDR_FLUSH, MACVLAN_MACADDR_SET
vlan_policy [
IFLA_VLAN_ID nlattr[IFLA_VLAN_ID, int16[0:4]]
IFLA_VLAN_FLAGS nlattr[IFLA_VLAN_FLAGS, ifla_vlan_flags]
IFLA_VLAN_EGRESS_QOS nlnest[IFLA_VLAN_EGRESS_QOS, array[vlan_map_policy]]
IFLA_VLAN_INGRESS_QOS nlnest[IFLA_VLAN_INGRESS_QOS, array[vlan_map_policy]]
IFLA_VLAN_PROTOCOL nlattr[IFLA_VLAN_PROTOCOL, flags[vlan_proto, int16be]]
] [varlen]
ifla_vlan_flags {
flags flags[ifla_vlan_flags, int32]
mask flags[ifla_vlan_flags, int32]
}
ifla_vlan_flags = VLAN_FLAG_REORDER_HDR, VLAN_FLAG_GVRP, VLAN_FLAG_LOOSE_BINDING, VLAN_FLAG_MVRP, VLAN_FLAG_BRIDGE_BINDING
vlan_map_policy [
IFLA_VLAN_QOS_MAPPING nlattr[IFLA_VLAN_QOS_MAPPING, ifla_vlan_qos_mapping]
] [varlen]
ifla_vlan_qos_mapping {
from int32
to int32
}
xfrmi_policy [
IFLA_XFRM_LINK nlattr[IFLA_XFRM_LINK, int32[0:4]]
IFLA_XFRM_IF_ID nlattr[IFLA_XFRM_IF_ID, int32[0:4]]
] [varlen]
hsr_policy [
IFLA_HSR_SLAVE1 nlattr[IFLA_HSR_SLAVE1, ifindex]
IFLA_HSR_SLAVE2 nlattr[IFLA_HSR_SLAVE2, ifindex]
IFLA_HSR_MULTICAST_SPEC nlattr[IFLA_HSR_MULTICAST_SPEC, int8]
IFLA_HSR_VERSION nlattr[IFLA_HSR_VERSION, int8]
IFLA_HSR_SUPERVISION_ADDR nlattr[IFLA_HSR_SUPERVISION_ADDR, mac_addr]
IFLA_HSR_SEQ_NR nlattr[IFLA_HSR_SEQ_NR, int16]
] [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 nlnest[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, flags[vlan_proto, int16]]
IFLA_BR_GROUP_FWD_MASK nlattr[IFLA_BR_GROUP_FWD_MASK, int16]
IFLA_BR_GROUP_ADDR nlattr[IFLA_BR_GROUP_ADDR, mac_addr]
IFLA_BR_MCAST_ROUTER nlattr[IFLA_BR_MCAST_ROUTER, bool8]
IFLA_BR_MCAST_SNOOPING nlattr[IFLA_BR_MCAST_SNOOPING, bool8]
IFLA_BR_MCAST_QUERY_USE_IFADDR nlattr[IFLA_BR_MCAST_QUERY_USE_IFADDR, bool8]
IFLA_BR_MCAST_QUERIER nlattr[IFLA_BR_MCAST_QUERIER, int8]
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, int64]
IFLA_BR_MCAST_MEMBERSHIP_INTVL nlattr[IFLA_BR_MCAST_MEMBERSHIP_INTVL, int64]
IFLA_BR_MCAST_QUERIER_INTVL nlattr[IFLA_BR_MCAST_QUERIER_INTVL, int64]
IFLA_BR_MCAST_QUERY_INTVL nlattr[IFLA_BR_MCAST_QUERY_INTVL, int64]
IFLA_BR_MCAST_QUERY_RESPONSE_INTVL nlattr[IFLA_BR_MCAST_QUERY_RESPONSE_INTVL, int64]
IFLA_BR_MCAST_STARTUP_QUERY_INTVL nlattr[IFLA_BR_MCAST_STARTUP_QUERY_INTVL, int64]
IFLA_BR_NF_CALL_IPTABLES nlattr[IFLA_BR_NF_CALL_IPTABLES, bool8]
IFLA_BR_NF_CALL_IP6TABLES nlattr[IFLA_BR_NF_CALL_IP6TABLES, bool8]
IFLA_BR_NF_CALL_ARPTABLES nlattr[IFLA_BR_NF_CALL_ARPTABLES, bool8]
IFLA_BR_VLAN_DEFAULT_PVID nlattr[IFLA_BR_VLAN_DEFAULT_PVID, int16]
IFLA_BR_VLAN_STATS_ENABLED nlattr[IFLA_BR_VLAN_STATS_ENABLED, bool8]
IFLA_BR_MCAST_STATS_ENABLED nlattr[IFLA_BR_MCAST_STATS_ENABLED, bool8]
IFLA_BR_MCAST_IGMP_VERSION nlattr[IFLA_BR_MCAST_IGMP_VERSION, int8]
IFLA_BR_MCAST_MLD_VERSION nlattr[IFLA_BR_MCAST_MLD_VERSION, int8]
] [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]
ipgre_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_LOCAL nlattr[IFLA_GRE_LOCAL, ipv4_addr]
IFLA_GRE_REMOTE nlattr[IFLA_GRE_REMOTE, ipv4_addr]
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]
ip6gre_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_LOCAL nlattr[IFLA_GRE_LOCAL, ipv6_addr]
IFLA_GRE_REMOTE nlattr[IFLA_GRE_REMOTE, ipv6_addr]
IFLA_GRE_TTL nlattr[IFLA_GRE_TTL, int8]
IFLA_GRE_ENCAP_LIMIT nlattr[IFLA_GRE_ENCAP_LIMIT, int8]
IFLA_GRE_FLOWINFO nlattr[IFLA_GRE_FLOWINFO, int32]
IFLA_GRE_FLAGS nlattr[IFLA_GRE_FLAGS, int32]
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_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]
veth_policy [
VETH_INFO_PEER nlattr[VETH_INFO_PEER, peer_info]
] [varlen]
peer_info {
hdr ifinfomsg[AF_UNSPEC]
# This may be followed by ifla_policy for the peer, but adding it causes recursion.
# policy optional[ifla_policy]
}
vti_policy_common [
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_policy_common]
] [varlen]
vti6_policy [
IFLA_VTI_LOCAL nlattr[IFLA_VTI_LOCAL, ipv6_addr]
IFLA_VTI_REMOTE nlattr[IFLA_VTI_REMOTE, ipv6_addr]
vti_common_policy array[vti_policy_common]
] [varlen]
ipip_policy [
IFLA_IPTUN_LINK nlattr[IFLA_IPTUN_LINK, ifindex]
IFLA_IPTUN_LOCAL nlattr[IFLA_IPTUN_LOCAL, ipv4_addr]
IFLA_IPTUN_REMOTE nlattr[IFLA_IPTUN_REMOTE, ipv4_addr]
IFLA_IPTUN_TTL nlattr[IFLA_IPTUN_TTL, int8]
IFLA_IPTUN_TOS nlattr[IFLA_IPTUN_TOS, int8]
IFLA_IPTUN_PROTO nlattr[IFLA_IPTUN_PROTO, flags[ipip6_ip_proto, int8]]
IFLA_IPTUN_PMTUDISC nlattr[IFLA_IPTUN_PMTUDISC, int8[0:1]]
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]
ipip6_policy [
IFLA_IPTUN_LINK nlattr[IFLA_IPTUN_LINK, ifindex]
IFLA_IPTUN_LOCAL nlattr[IFLA_IPTUN_LOCAL, ipv4_addr]
IFLA_IPTUN_REMOTE nlattr[IFLA_IPTUN_REMOTE, ipv4_addr]
IFLA_IPTUN_TTL nlattr[IFLA_IPTUN_TTL, int8]
IFLA_IPTUN_TOS nlattr[IFLA_IPTUN_TOS, int8]
IFLA_IPTUN_PMTUDISC nlattr[IFLA_IPTUN_PMTUDISC, int8[0:1]]
IFLA_IPTUN_FLAGS nlattr[IFLA_IPTUN_FLAGS, int16[0:0x40]]
IFLA_IPTUN_PROTO nlattr[IFLA_IPTUN_PROTO, flags[ipip6_ip_proto, int8]]
IFLA_IPTUN_6RD_PREFIX nlattr[IFLA_IPTUN_6RD_PREFIX, ipv6_addr]
IFLA_IPTUN_6RD_RELAY_PREFIX nlattr[IFLA_IPTUN_6RD_RELAY_PREFIX, int32]
IFLA_IPTUN_6RD_PREFIXLEN nlattr[IFLA_IPTUN_6RD_PREFIXLEN, int16]
IFLA_IPTUN_6RD_RELAY_PREFIXLEN nlattr[IFLA_IPTUN_6RD_RELAY_PREFIXLEN, int16]
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_FWMARK nlattr[IFLA_IPTUN_FWMARK, int32]
] [varlen]
ip6_tnl_policy [
IFLA_IPTUN_LINK nlattr[IFLA_IPTUN_LINK, ifindex]
IFLA_IPTUN_LOCAL nlattr[IFLA_IPTUN_LOCAL, ipv6_addr]
IFLA_IPTUN_REMOTE nlattr[IFLA_IPTUN_REMOTE, ipv6_addr]
IFLA_IPTUN_TTL nlattr[IFLA_IPTUN_TTL, int8]
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]]
IFLA_IPTUN_PROTO nlattr[IFLA_IPTUN_PROTO, flags[ipip6_ip_proto, 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]
ipip6_ip_proto = IPPROTO_IPV6, IPPROTO_IPIP, IPPROTO_MPLS
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_IIF, 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 nlnest[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]]
RTA_ENCAP nlnest[RTA_ENCAP, lwtunnel_policy]
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_IIF, ifindex]
RTA_OIF nlattr[RTA_OIF, ifindex]
RTA_PRIORITY nlattr[RTA_PRIORITY, int32]
# TODO: what's this? is this interesting?
RTA_METRICS nlnest[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]]
RTA_ENCAP nlnest[RTA_ENCAP, lwtunnel_policy]
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, mpls_label]
RTA_MULTIPATH nlattr[RTA_MULTIPATH, rtnexthop]
RTA_NEWDST nlattr[RTA_NEWDST, array[mpls_label, 32]]
RTA_OIF nlattr[RTA_OIF, ifindex]
RTA_TTL_PROPAGATE nlattr[RTA_TTL_PROPAGATE, int8]
RTA_VIA nlattr[RTA_VIA, sockaddr_generic]
] [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, int8]
flags flags[fr_flags, int32]
}
fib_rule_uid_range {
start uid
end uid
}
fib_rule_port_range {
start sock_port
end sock_port
}
fib4_rule_policy_generic [
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 fib4_rule_policy_generic
FRA_FLOW nlattr[FRA_FLOW, int32]
FRA_TUN_ID nlnetw[FRA_TUN_ID, int64be]
] [varlen]
fib6_rule_policy [
FRA_DST nlattr[RTA_DST, ipv6_addr]
FRA_SRC nlattr[RTA_SRC, ipv6_addr]
FIB_RULE_POLICY fib4_rule_policy_generic
] [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 nlnest[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]
nda_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
}
br_vlan_db_dump_pol [
BRIDGE_VLANDB_DUMP_FLAGS nlattr[BRIDGE_VLANDB_DUMP_FLAGS, flags[br_vlan_dumpflags, int32]]
]
br_vlan_db_policy_container [
BRIDGE_VLANDB_ENTRY nlnest[BRIDGE_VLANDB_ENTRY, br_vlan_db_policy]
] [varlen]
br_vlan_db_policy [
BRIDGE_VLANDB_ENTRY_INFO nlattr[BRIDGE_VLANDB_ENTRY_INFO, bridge_vlan_info]
BRIDGE_VLANDB_ENTRY_RANGE nlattr[BRIDGE_VLANDB_ENTRY_RANGE, int16[BRIDGE_VLAN_INFO_RANGE_BEGIN:BRIDGE_VLAN_INFO_RANGE_END]]
BRIDGE_VLANDB_ENTRY_STATE nlattr[BRIDGE_VLANDB_ENTRY_STATE, flags[br_vlan_state_options, int8]]
BRIDGE_VLANDB_ENTRY_TUNNEL_INFO nlnest[BRIDGE_VLANDB_ENTRY_TUNNEL_INFO, br_vlandb_tinfo_pol]
] [varlen]
bridge_vlan_info {
flags flags[br_vlan_info_flags, int16]
vid int16[0:4]
}
br_vlandb_tinfo_pol [
BRIDGE_VLANDB_TINFO_ID nlattr[BRIDGE_VLANDB_TINFO_ID, int32]
BRIDGE_VLANDB_TINFO_CMD nlattr[BRIDGE_VLANDB_TINFO_CMD, flags[br_vlan_tinfo_cmd, int32]]
] [varlen]
br_mdb_policy [
MDBA_SET_ENTRY nlattr[MDBA_SET_ENTRY, br_mdb_entry]
]
br_mdb_entry {
ifindex ifindex
state flags[br_mdb_entry_state, int8]
flags flags[br_mdb_entry_flags, int8]
vid int16[0:4]
addr br_mdb_entry_sub
}
br_mdb_entry_sub {
u br_mdb_entry_sub_u
proto flags[br_mdb_entry_sub_proto, int16be]
}
br_mdb_entry_sub_u [
ip4 ipv4_addr
in6_addr ipv6_addr
]
devconf_ipv4_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 nlnest[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[vlan_proto, int16be]
}
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, fd_bpf_prog]
IFLA_XDP_FLAGS nlattr[IFLA_XDP_FLAGS, flags[ifla_xdp_flags, int32]]
IFLA_XDP_EXPECTED_FD nlattr[IFLA_XDP_EXPECTED_FD, fd_bpf_prog]
] [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
lwtunnel_policy [
MPLS_IPTUNNEL_DST nlattr[MPLS_IPTUNNEL_DST, array[mpls_label]]
MPLS_IPTUNNEL_TTL nlattr[MPLS_IPTUNNEL_TTL, int8]
LWTUNNEL_IP_ID nlattr[LWTUNNEL_IP_ID, int64be]
LWTUNNEL_IP_DST nlattr[LWTUNNEL_IP_DST, ipv4_addr]
LWTUNNEL_IP_SRC nlattr[LWTUNNEL_IP_SRC, ipv4_addr]
LWTUNNEL_IP_TTL nlattr[LWTUNNEL_IP_TTL, int8]
LWTUNNEL_IP_TOS nlattr[LWTUNNEL_IP_TOS, int8]
LWTUNNEL_IP_FLAGS nlattr[LWTUNNEL_IP_FLAGS, flags[lwtunnel_ip_flags, int16be]]
LWTUNNEL_IP_OPTS nlnest[LWTUNNEL_IP_OPTS, ip_opts_policy]
ILA_ATTR_LOCATOR nlattr[ILA_ATTR_LOCATOR, int64be]
ILA_ATTR_CSUM_MODE nlattr[ILA_ATTR_CSUM_MODE, flags[ila_attr_csum_mode, int8]]
ILA_ATTR_IDENT_TYPE nlattr[ILA_ATTR_IDENT_TYPE, flags[ila_attr_ident_type, int8]]
ILA_ATTR_HOOK_TYPE nlattr[ILA_ATTR_HOOK_TYPE, flags[ila_attr_hook_type, int8]]
LWTUNNEL_IP6_ID nlattr[LWTUNNEL_IP6_ID, int64be]
LWTUNNEL_IP6_DST nlattr[LWTUNNEL_IP6_DST, ipv6_addr]
LWTUNNEL_IP6_SRC nlattr[LWTUNNEL_IP6_SRC, ipv6_addr]
LWTUNNEL_IP6_HOPLIMIT nlattr[LWTUNNEL_IP6_HOPLIMIT, int8]
LWTUNNEL_IP6_TC nlattr[LWTUNNEL_IP6_TC, int8]
LWTUNNEL_IP6_FLAGS nlattr[LWTUNNEL_IP6_FLAGS, flags[lwtunnel_ip_flags, int16be]]
LWTUNNEL_IP6_OPTS nlattr[LWTUNNEL_IP6_OPTS, ip_opts_policy]
# TODO: uncomment SEG6_IPTUNNEL_SRH, the related header above and the structs below,
# after the kernel fixes the seg6_iptunnel.h uapi header.