-
Notifications
You must be signed in to change notification settings - Fork 54
Expand file tree
/
Copy pathnetlink.rs
More file actions
5606 lines (5605 loc) · 204 KB
/
netlink.rs
File metadata and controls
5606 lines (5605 loc) · 204 KB
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
/* automatically generated by rust-bindgen 0.72.1 */
pub type __kernel_sa_family_t = crate::ctypes::c_ushort;
pub type __s8 = crate::ctypes::c_schar;
pub type __u8 = crate::ctypes::c_uchar;
pub type __s16 = crate::ctypes::c_short;
pub type __u16 = crate::ctypes::c_ushort;
pub type __s32 = crate::ctypes::c_int;
pub type __u32 = crate::ctypes::c_uint;
pub type __s64 = crate::ctypes::c_longlong;
pub type __u64 = crate::ctypes::c_ulonglong;
pub type __kernel_key_t = crate::ctypes::c_int;
pub type __kernel_mqd_t = crate::ctypes::c_int;
pub type __kernel_mode_t = crate::ctypes::c_ushort;
pub type __kernel_ipc_pid_t = crate::ctypes::c_ushort;
pub type __kernel_uid_t = crate::ctypes::c_ushort;
pub type __kernel_gid_t = crate::ctypes::c_ushort;
pub type __kernel_old_dev_t = crate::ctypes::c_ushort;
pub type __kernel_long_t = crate::ctypes::c_long;
pub type __kernel_ulong_t = crate::ctypes::c_ulong;
pub type __kernel_ino_t = __kernel_ulong_t;
pub type __kernel_pid_t = crate::ctypes::c_int;
pub type __kernel_suseconds_t = __kernel_long_t;
pub type __kernel_daddr_t = crate::ctypes::c_int;
pub type __kernel_uid32_t = crate::ctypes::c_uint;
pub type __kernel_gid32_t = crate::ctypes::c_uint;
pub type __kernel_old_uid_t = __kernel_uid_t;
pub type __kernel_old_gid_t = __kernel_gid_t;
pub type __kernel_size_t = crate::ctypes::c_uint;
pub type __kernel_ssize_t = crate::ctypes::c_int;
pub type __kernel_ptrdiff_t = crate::ctypes::c_int;
pub type __kernel_off_t = __kernel_long_t;
pub type __kernel_loff_t = crate::ctypes::c_longlong;
pub type __kernel_old_time_t = __kernel_long_t;
pub type __kernel_time_t = __kernel_long_t;
pub type __kernel_time64_t = crate::ctypes::c_longlong;
pub type __kernel_clock_t = __kernel_long_t;
pub type __kernel_timer_t = crate::ctypes::c_int;
pub type __kernel_clockid_t = crate::ctypes::c_int;
pub type __kernel_caddr_t = *mut crate::ctypes::c_char;
pub type __kernel_uid16_t = crate::ctypes::c_ushort;
pub type __kernel_gid16_t = crate::ctypes::c_ushort;
pub type __le16 = __u16;
pub type __be16 = __u16;
pub type __le32 = __u32;
pub type __be32 = __u32;
pub type __le64 = __u64;
pub type __be64 = __u64;
pub type __sum16 = __u16;
pub type __wsum = __u32;
pub type __poll_t = crate::ctypes::c_uint;
#[repr(C)]
#[derive(Default)]
pub struct __IncompleteArrayField<T>(::core::marker::PhantomData<T>, [T; 0]);
#[repr(C)]
#[derive(Copy, Clone)]
pub struct __kernel_sockaddr_storage {
pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 {
pub ss_family: __kernel_sa_family_t,
pub __data: [crate::ctypes::c_char; 126usize],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct sockaddr_nl {
pub nl_family: __kernel_sa_family_t,
pub nl_pad: crate::ctypes::c_ushort,
pub nl_pid: __u32,
pub nl_groups: __u32,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct nlmsghdr {
pub nlmsg_len: __u32,
pub nlmsg_type: __u16,
pub nlmsg_flags: __u16,
pub nlmsg_seq: __u32,
pub nlmsg_pid: __u32,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct nlmsgerr {
pub error: crate::ctypes::c_int,
pub msg: nlmsghdr,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct nl_pktinfo {
pub group: __u32,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct nl_mmap_req {
pub nm_block_size: crate::ctypes::c_uint,
pub nm_block_nr: crate::ctypes::c_uint,
pub nm_frame_size: crate::ctypes::c_uint,
pub nm_frame_nr: crate::ctypes::c_uint,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct nl_mmap_hdr {
pub nm_status: crate::ctypes::c_uint,
pub nm_len: crate::ctypes::c_uint,
pub nm_group: __u32,
pub nm_pid: __u32,
pub nm_uid: __u32,
pub nm_gid: __u32,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct nlattr {
pub nla_len: __u16,
pub nla_type: __u16,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct nla_bitfield32 {
pub value: __u32,
pub selector: __u32,
}
#[repr(C, packed)]
#[derive(Debug, Copy, Clone)]
pub struct nl80211_sta_flag_update {
pub mask: __u32,
pub set: __u32,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct nl80211_txrate_vht {
pub mcs: [__u16; 8usize],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct nl80211_txrate_he {
pub mcs: [__u16; 8usize],
}
#[repr(C, packed)]
#[derive(Debug, Copy, Clone)]
pub struct nl80211_pattern_support {
pub max_patterns: __u32,
pub min_pattern_len: __u32,
pub max_pattern_len: __u32,
pub max_pkt_offset: __u32,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct nl80211_wowlan_tcp_data_seq {
pub start: __u32,
pub offset: __u32,
pub len: __u32,
}
#[repr(C)]
#[derive(Debug)]
pub struct nl80211_wowlan_tcp_data_token {
pub offset: __u32,
pub len: __u32,
pub token_stream: __IncompleteArrayField<__u8>,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct nl80211_wowlan_tcp_data_token_feature {
pub min_len: __u32,
pub max_len: __u32,
pub bufsize: __u32,
}
#[repr(C, packed)]
#[derive(Debug, Copy, Clone)]
pub struct nl80211_coalesce_rule_support {
pub max_rules: __u32,
pub pat: nl80211_pattern_support,
pub max_delay: __u32,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct nl80211_vendor_cmd_info {
pub vendor_id: __u32,
pub subcmd: __u32,
}
#[repr(C, packed)]
#[derive(Debug, Copy, Clone)]
pub struct nl80211_bss_select_rssi_adjust {
pub band: __u8,
pub delta: __s8,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct rtnl_link_stats {
pub rx_packets: __u32,
pub tx_packets: __u32,
pub rx_bytes: __u32,
pub tx_bytes: __u32,
pub rx_errors: __u32,
pub tx_errors: __u32,
pub rx_dropped: __u32,
pub tx_dropped: __u32,
pub multicast: __u32,
pub collisions: __u32,
pub rx_length_errors: __u32,
pub rx_over_errors: __u32,
pub rx_crc_errors: __u32,
pub rx_frame_errors: __u32,
pub rx_fifo_errors: __u32,
pub rx_missed_errors: __u32,
pub tx_aborted_errors: __u32,
pub tx_carrier_errors: __u32,
pub tx_fifo_errors: __u32,
pub tx_heartbeat_errors: __u32,
pub tx_window_errors: __u32,
pub rx_compressed: __u32,
pub tx_compressed: __u32,
pub rx_nohandler: __u32,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct rtnl_link_stats64 {
pub rx_packets: __u64,
pub tx_packets: __u64,
pub rx_bytes: __u64,
pub tx_bytes: __u64,
pub rx_errors: __u64,
pub tx_errors: __u64,
pub rx_dropped: __u64,
pub tx_dropped: __u64,
pub multicast: __u64,
pub collisions: __u64,
pub rx_length_errors: __u64,
pub rx_over_errors: __u64,
pub rx_crc_errors: __u64,
pub rx_frame_errors: __u64,
pub rx_fifo_errors: __u64,
pub rx_missed_errors: __u64,
pub tx_aborted_errors: __u64,
pub tx_carrier_errors: __u64,
pub tx_fifo_errors: __u64,
pub tx_heartbeat_errors: __u64,
pub tx_window_errors: __u64,
pub rx_compressed: __u64,
pub tx_compressed: __u64,
pub rx_nohandler: __u64,
pub rx_otherhost_dropped: __u64,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct rtnl_hw_stats64 {
pub rx_packets: __u64,
pub tx_packets: __u64,
pub rx_bytes: __u64,
pub tx_bytes: __u64,
pub rx_errors: __u64,
pub tx_errors: __u64,
pub rx_dropped: __u64,
pub tx_dropped: __u64,
pub multicast: __u64,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct rtnl_link_ifmap {
pub mem_start: __u64,
pub mem_end: __u64,
pub base_addr: __u64,
pub irq: __u16,
pub dma: __u8,
pub port: __u8,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct ifla_bridge_id {
pub prio: [__u8; 2usize],
pub addr: [__u8; 6usize],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct ifla_cacheinfo {
pub max_reasm_len: __u32,
pub tstamp: __u32,
pub reachable_time: __u32,
pub retrans_time: __u32,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct ifla_vlan_flags {
pub flags: __u32,
pub mask: __u32,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct ifla_vlan_qos_mapping {
pub from: __u32,
pub to: __u32,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct tunnel_msg {
pub family: __u8,
pub flags: __u8,
pub reserved2: __u16,
pub ifindex: __u32,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct ifla_vxlan_port_range {
pub low: __be16,
pub high: __be16,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct ifla_geneve_port_range {
pub low: __be16,
pub high: __be16,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct ifla_vf_mac {
pub vf: __u32,
pub mac: [__u8; 32usize],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct ifla_vf_broadcast {
pub broadcast: [__u8; 32usize],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct ifla_vf_vlan {
pub vf: __u32,
pub vlan: __u32,
pub qos: __u32,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct ifla_vf_vlan_info {
pub vf: __u32,
pub vlan: __u32,
pub qos: __u32,
pub vlan_proto: __be16,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct ifla_vf_tx_rate {
pub vf: __u32,
pub rate: __u32,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct ifla_vf_rate {
pub vf: __u32,
pub min_tx_rate: __u32,
pub max_tx_rate: __u32,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct ifla_vf_spoofchk {
pub vf: __u32,
pub setting: __u32,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct ifla_vf_guid {
pub vf: __u32,
pub guid: __u64,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct ifla_vf_link_state {
pub vf: __u32,
pub link_state: __u32,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct ifla_vf_rss_query_en {
pub vf: __u32,
pub setting: __u32,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct ifla_vf_trust {
pub vf: __u32,
pub setting: __u32,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct ifla_port_vsi {
pub vsi_mgr_id: __u8,
pub vsi_type_id: [__u8; 3usize],
pub vsi_type_version: __u8,
pub pad: [__u8; 3usize],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct if_stats_msg {
pub family: __u8,
pub pad1: __u8,
pub pad2: __u16,
pub ifindex: __u32,
pub filter_mask: __u32,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct ifla_rmnet_flags {
pub flags: __u32,
pub mask: __u32,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct ifaddrmsg {
pub ifa_family: __u8,
pub ifa_prefixlen: __u8,
pub ifa_flags: __u8,
pub ifa_scope: __u8,
pub ifa_index: __u32,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct ifa_cacheinfo {
pub ifa_prefered: __u32,
pub ifa_valid: __u32,
pub cstamp: __u32,
pub tstamp: __u32,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct ndmsg {
pub ndm_family: __u8,
pub ndm_pad1: __u8,
pub ndm_pad2: __u16,
pub ndm_ifindex: __s32,
pub ndm_state: __u16,
pub ndm_flags: __u8,
pub ndm_type: __u8,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct nda_cacheinfo {
pub ndm_confirmed: __u32,
pub ndm_used: __u32,
pub ndm_updated: __u32,
pub ndm_refcnt: __u32,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct ndt_stats {
pub ndts_allocs: __u64,
pub ndts_destroys: __u64,
pub ndts_hash_grows: __u64,
pub ndts_res_failed: __u64,
pub ndts_lookups: __u64,
pub ndts_hits: __u64,
pub ndts_rcv_probes_mcast: __u64,
pub ndts_rcv_probes_ucast: __u64,
pub ndts_periodic_gc_runs: __u64,
pub ndts_forced_gc_runs: __u64,
pub ndts_table_fulls: __u64,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct ndtmsg {
pub ndtm_family: __u8,
pub ndtm_pad1: __u8,
pub ndtm_pad2: __u16,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct ndt_config {
pub ndtc_key_len: __u16,
pub ndtc_entry_size: __u16,
pub ndtc_entries: __u32,
pub ndtc_last_flush: __u32,
pub ndtc_last_rand: __u32,
pub ndtc_hash_rnd: __u32,
pub ndtc_hash_mask: __u32,
pub ndtc_hash_chain_gc: __u32,
pub ndtc_proxy_qlen: __u32,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct rtattr {
pub rta_len: crate::ctypes::c_ushort,
pub rta_type: crate::ctypes::c_ushort,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct rtmsg {
pub rtm_family: crate::ctypes::c_uchar,
pub rtm_dst_len: crate::ctypes::c_uchar,
pub rtm_src_len: crate::ctypes::c_uchar,
pub rtm_tos: crate::ctypes::c_uchar,
pub rtm_table: crate::ctypes::c_uchar,
pub rtm_protocol: crate::ctypes::c_uchar,
pub rtm_scope: crate::ctypes::c_uchar,
pub rtm_type: crate::ctypes::c_uchar,
pub rtm_flags: crate::ctypes::c_uint,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct rtnexthop {
pub rtnh_len: crate::ctypes::c_ushort,
pub rtnh_flags: crate::ctypes::c_uchar,
pub rtnh_hops: crate::ctypes::c_uchar,
pub rtnh_ifindex: crate::ctypes::c_int,
}
#[repr(C)]
#[derive(Debug)]
pub struct rtvia {
pub rtvia_family: __kernel_sa_family_t,
pub rtvia_addr: __IncompleteArrayField<__u8>,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct rta_cacheinfo {
pub rta_clntref: __u32,
pub rta_lastuse: __u32,
pub rta_expires: __s32,
pub rta_error: __u32,
pub rta_used: __u32,
pub rta_id: __u32,
pub rta_ts: __u32,
pub rta_tsage: __u32,
}
#[repr(C)]
#[derive(Copy, Clone)]
pub struct rta_session {
pub proto: __u8,
pub pad1: __u8,
pub pad2: __u16,
pub u: rta_session__bindgen_ty_1,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct rta_session__bindgen_ty_1__bindgen_ty_1 {
pub sport: __u16,
pub dport: __u16,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct rta_session__bindgen_ty_1__bindgen_ty_2 {
pub type_: __u8,
pub code: __u8,
pub ident: __u16,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct rta_mfc_stats {
pub mfcs_packets: __u64,
pub mfcs_bytes: __u64,
pub mfcs_wrong_if: __u64,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct rtgenmsg {
pub rtgen_family: crate::ctypes::c_uchar,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct ifinfomsg {
pub ifi_family: crate::ctypes::c_uchar,
pub __ifi_pad: crate::ctypes::c_uchar,
pub ifi_type: crate::ctypes::c_ushort,
pub ifi_index: crate::ctypes::c_int,
pub ifi_flags: crate::ctypes::c_uint,
pub ifi_change: crate::ctypes::c_uint,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct prefixmsg {
pub prefix_family: crate::ctypes::c_uchar,
pub prefix_pad1: crate::ctypes::c_uchar,
pub prefix_pad2: crate::ctypes::c_ushort,
pub prefix_ifindex: crate::ctypes::c_int,
pub prefix_type: crate::ctypes::c_uchar,
pub prefix_len: crate::ctypes::c_uchar,
pub prefix_flags: crate::ctypes::c_uchar,
pub prefix_pad3: crate::ctypes::c_uchar,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct prefix_cacheinfo {
pub preferred_time: __u32,
pub valid_time: __u32,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct tcmsg {
pub tcm_family: crate::ctypes::c_uchar,
pub tcm__pad1: crate::ctypes::c_uchar,
pub tcm__pad2: crate::ctypes::c_ushort,
pub tcm_ifindex: crate::ctypes::c_int,
pub tcm_handle: __u32,
pub tcm_parent: __u32,
pub tcm_info: __u32,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct nduseroptmsg {
pub nduseropt_family: crate::ctypes::c_uchar,
pub nduseropt_pad1: crate::ctypes::c_uchar,
pub nduseropt_opts_len: crate::ctypes::c_ushort,
pub nduseropt_ifindex: crate::ctypes::c_int,
pub nduseropt_icmp_type: __u8,
pub nduseropt_icmp_code: __u8,
pub nduseropt_pad2: crate::ctypes::c_ushort,
pub nduseropt_pad3: crate::ctypes::c_uint,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct tcamsg {
pub tca_family: crate::ctypes::c_uchar,
pub tca__pad1: crate::ctypes::c_uchar,
pub tca__pad2: crate::ctypes::c_ushort,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct fib_rule_hdr {
pub family: __u8,
pub dst_len: __u8,
pub src_len: __u8,
pub tos: __u8,
pub table: __u8,
pub res1: __u8,
pub res2: __u8,
pub action: __u8,
pub flags: __u32,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct fib_rule_uid_range {
pub start: __u32,
pub end: __u32,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct fib_rule_port_range {
pub start: __u16,
pub end: __u16,
}
pub const _K_SS_MAXSIZE: u32 = 128;
pub const SOCK_SNDBUF_LOCK: u32 = 1;
pub const SOCK_RCVBUF_LOCK: u32 = 2;
pub const SOCK_BUF_LOCK_MASK: u32 = 3;
pub const SOCK_TXREHASH_DEFAULT: u32 = 255;
pub const SOCK_TXREHASH_DISABLED: u32 = 0;
pub const SOCK_TXREHASH_ENABLED: u32 = 1;
pub const __BITS_PER_LONG_LONG: u32 = 64;
pub const NETLINK_ROUTE: u32 = 0;
pub const NETLINK_UNUSED: u32 = 1;
pub const NETLINK_USERSOCK: u32 = 2;
pub const NETLINK_FIREWALL: u32 = 3;
pub const NETLINK_SOCK_DIAG: u32 = 4;
pub const NETLINK_NFLOG: u32 = 5;
pub const NETLINK_XFRM: u32 = 6;
pub const NETLINK_SELINUX: u32 = 7;
pub const NETLINK_ISCSI: u32 = 8;
pub const NETLINK_AUDIT: u32 = 9;
pub const NETLINK_FIB_LOOKUP: u32 = 10;
pub const NETLINK_CONNECTOR: u32 = 11;
pub const NETLINK_NETFILTER: u32 = 12;
pub const NETLINK_IP6_FW: u32 = 13;
pub const NETLINK_DNRTMSG: u32 = 14;
pub const NETLINK_KOBJECT_UEVENT: u32 = 15;
pub const NETLINK_GENERIC: u32 = 16;
pub const NETLINK_SCSITRANSPORT: u32 = 18;
pub const NETLINK_ECRYPTFS: u32 = 19;
pub const NETLINK_RDMA: u32 = 20;
pub const NETLINK_CRYPTO: u32 = 21;
pub const NETLINK_SMC: u32 = 22;
pub const NETLINK_INET_DIAG: u32 = 4;
pub const MAX_LINKS: u32 = 32;
pub const NLM_F_REQUEST: u32 = 1;
pub const NLM_F_MULTI: u32 = 2;
pub const NLM_F_ACK: u32 = 4;
pub const NLM_F_ECHO: u32 = 8;
pub const NLM_F_DUMP_INTR: u32 = 16;
pub const NLM_F_DUMP_FILTERED: u32 = 32;
pub const NLM_F_ROOT: u32 = 256;
pub const NLM_F_MATCH: u32 = 512;
pub const NLM_F_ATOMIC: u32 = 1024;
pub const NLM_F_DUMP: u32 = 768;
pub const NLM_F_REPLACE: u32 = 256;
pub const NLM_F_EXCL: u32 = 512;
pub const NLM_F_CREATE: u32 = 1024;
pub const NLM_F_APPEND: u32 = 2048;
pub const NLM_F_NONREC: u32 = 256;
pub const NLM_F_BULK: u32 = 512;
pub const NLM_F_CAPPED: u32 = 256;
pub const NLM_F_ACK_TLVS: u32 = 512;
pub const NLMSG_ALIGNTO: u32 = 4;
pub const NLMSG_NOOP: u32 = 1;
pub const NLMSG_ERROR: u32 = 2;
pub const NLMSG_DONE: u32 = 3;
pub const NLMSG_OVERRUN: u32 = 4;
pub const NLMSG_MIN_TYPE: u32 = 16;
pub const NETLINK_ADD_MEMBERSHIP: u32 = 1;
pub const NETLINK_DROP_MEMBERSHIP: u32 = 2;
pub const NETLINK_PKTINFO: u32 = 3;
pub const NETLINK_BROADCAST_ERROR: u32 = 4;
pub const NETLINK_NO_ENOBUFS: u32 = 5;
pub const NETLINK_RX_RING: u32 = 6;
pub const NETLINK_TX_RING: u32 = 7;
pub const NETLINK_LISTEN_ALL_NSID: u32 = 8;
pub const NETLINK_LIST_MEMBERSHIPS: u32 = 9;
pub const NETLINK_CAP_ACK: u32 = 10;
pub const NETLINK_EXT_ACK: u32 = 11;
pub const NETLINK_GET_STRICT_CHK: u32 = 12;
pub const NL_MMAP_MSG_ALIGNMENT: u32 = 4;
pub const NET_MAJOR: u32 = 36;
pub const NLA_F_NESTED: u32 = 32768;
pub const NLA_F_NET_BYTEORDER: u32 = 16384;
pub const NLA_TYPE_MASK: i32 = -49153;
pub const NLA_ALIGNTO: u32 = 4;
pub const NL80211_GENL_NAME: &[u8; 8] = b"nl80211\0";
pub const NL80211_MULTICAST_GROUP_CONFIG: &[u8; 7] = b"config\0";
pub const NL80211_MULTICAST_GROUP_SCAN: &[u8; 5] = b"scan\0";
pub const NL80211_MULTICAST_GROUP_REG: &[u8; 11] = b"regulatory\0";
pub const NL80211_MULTICAST_GROUP_MLME: &[u8; 5] = b"mlme\0";
pub const NL80211_MULTICAST_GROUP_VENDOR: &[u8; 7] = b"vendor\0";
pub const NL80211_MULTICAST_GROUP_NAN: &[u8; 4] = b"nan\0";
pub const NL80211_MULTICAST_GROUP_TESTMODE: &[u8; 9] = b"testmode\0";
pub const NL80211_EDMG_BW_CONFIG_MIN: u32 = 4;
pub const NL80211_EDMG_BW_CONFIG_MAX: u32 = 15;
pub const NL80211_EDMG_CHANNELS_MIN: u32 = 1;
pub const NL80211_EDMG_CHANNELS_MAX: u32 = 60;
pub const NL80211_WIPHY_NAME_MAXLEN: u32 = 64;
pub const NL80211_MAX_SUPP_RATES: u32 = 32;
pub const NL80211_MAX_SUPP_SELECTORS: u32 = 128;
pub const NL80211_MAX_SUPP_HT_RATES: u32 = 77;
pub const NL80211_MAX_SUPP_REG_RULES: u32 = 128;
pub const NL80211_TKIP_DATA_OFFSET_ENCR_KEY: u32 = 0;
pub const NL80211_TKIP_DATA_OFFSET_TX_MIC_KEY: u32 = 16;
pub const NL80211_TKIP_DATA_OFFSET_RX_MIC_KEY: u32 = 24;
pub const NL80211_HT_CAPABILITY_LEN: u32 = 26;
pub const NL80211_VHT_CAPABILITY_LEN: u32 = 12;
pub const NL80211_HE_MIN_CAPABILITY_LEN: u32 = 16;
pub const NL80211_HE_MAX_CAPABILITY_LEN: u32 = 54;
pub const NL80211_MAX_NR_CIPHER_SUITES: u32 = 5;
pub const NL80211_MAX_NR_AKM_SUITES: u32 = 2;
pub const NL80211_EHT_MIN_CAPABILITY_LEN: u32 = 13;
pub const NL80211_EHT_MAX_CAPABILITY_LEN: u32 = 51;
pub const NL80211_MIN_REMAIN_ON_CHANNEL_TIME: u32 = 10;
pub const NL80211_SCAN_RSSI_THOLD_OFF: i32 = -300;
pub const NL80211_CQM_TXE_MAX_INTVL: u32 = 1800;
pub const NL80211_VHT_NSS_MAX: u32 = 8;
pub const NL80211_HE_NSS_MAX: u32 = 8;
pub const NL80211_KCK_LEN: u32 = 16;
pub const NL80211_KEK_LEN: u32 = 16;
pub const NL80211_KCK_EXT_LEN: u32 = 24;
pub const NL80211_KEK_EXT_LEN: u32 = 32;
pub const NL80211_KCK_EXT_LEN_32: u32 = 32;
pub const NL80211_REPLAY_CTR_LEN: u32 = 8;
pub const NL80211_CRIT_PROTO_MAX_DURATION: u32 = 5000;
pub const NL80211_VENDOR_ID_IS_LINUX: u32 = 2147483648;
pub const NL80211_NAN_FUNC_SERVICE_ID_LEN: u32 = 6;
pub const NL80211_NAN_FUNC_SERVICE_SPEC_INFO_MAX_LEN: u32 = 255;
pub const NL80211_NAN_FUNC_SRF_MAX_LEN: u32 = 255;
pub const NL80211_FILS_DISCOVERY_TMPL_MIN_LEN: u32 = 42;
pub const MACVLAN_FLAG_NOPROMISC: u32 = 1;
pub const MACVLAN_FLAG_NODST: u32 = 2;
pub const IPVLAN_F_PRIVATE: u32 = 1;
pub const IPVLAN_F_VEPA: u32 = 2;
pub const TUNNEL_MSG_FLAG_STATS: u32 = 1;
pub const TUNNEL_MSG_VALID_USER_FLAGS: u32 = 1;
pub const MAX_VLAN_LIST_LEN: u32 = 1;
pub const PORT_PROFILE_MAX: u32 = 40;
pub const PORT_UUID_MAX: u32 = 16;
pub const PORT_SELF_VF: i32 = -1;
pub const XDP_FLAGS_UPDATE_IF_NOEXIST: u32 = 1;
pub const XDP_FLAGS_SKB_MODE: u32 = 2;
pub const XDP_FLAGS_DRV_MODE: u32 = 4;
pub const XDP_FLAGS_HW_MODE: u32 = 8;
pub const XDP_FLAGS_REPLACE: u32 = 16;
pub const XDP_FLAGS_MODES: u32 = 14;
pub const XDP_FLAGS_MASK: u32 = 31;
pub const RMNET_FLAGS_INGRESS_DEAGGREGATION: u32 = 1;
pub const RMNET_FLAGS_INGRESS_MAP_COMMANDS: u32 = 2;
pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV4: u32 = 4;
pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV4: u32 = 8;
pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV5: u32 = 16;
pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV5: u32 = 32;
pub const IFA_F_SECONDARY: u32 = 1;
pub const IFA_F_TEMPORARY: u32 = 1;
pub const IFA_F_NODAD: u32 = 2;
pub const IFA_F_OPTIMISTIC: u32 = 4;
pub const IFA_F_DADFAILED: u32 = 8;
pub const IFA_F_HOMEADDRESS: u32 = 16;
pub const IFA_F_DEPRECATED: u32 = 32;
pub const IFA_F_TENTATIVE: u32 = 64;
pub const IFA_F_PERMANENT: u32 = 128;
pub const IFA_F_MANAGETEMPADDR: u32 = 256;
pub const IFA_F_NOPREFIXROUTE: u32 = 512;
pub const IFA_F_MCAUTOJOIN: u32 = 1024;
pub const IFA_F_STABLE_PRIVACY: u32 = 2048;
pub const IFAPROT_UNSPEC: u32 = 0;
pub const IFAPROT_KERNEL_LO: u32 = 1;
pub const IFAPROT_KERNEL_RA: u32 = 2;
pub const IFAPROT_KERNEL_LL: u32 = 3;
pub const NTF_USE: u32 = 1;
pub const NTF_SELF: u32 = 2;
pub const NTF_MASTER: u32 = 4;
pub const NTF_PROXY: u32 = 8;
pub const NTF_EXT_LEARNED: u32 = 16;
pub const NTF_OFFLOADED: u32 = 32;
pub const NTF_STICKY: u32 = 64;
pub const NTF_ROUTER: u32 = 128;
pub const NTF_EXT_MANAGED: u32 = 1;
pub const NTF_EXT_LOCKED: u32 = 2;
pub const NTF_EXT_EXT_VALIDATED: u32 = 4;
pub const NUD_INCOMPLETE: u32 = 1;
pub const NUD_REACHABLE: u32 = 2;
pub const NUD_STALE: u32 = 4;
pub const NUD_DELAY: u32 = 8;
pub const NUD_PROBE: u32 = 16;
pub const NUD_FAILED: u32 = 32;
pub const NUD_NOARP: u32 = 64;
pub const NUD_PERMANENT: u32 = 128;
pub const NUD_NONE: u32 = 0;
pub const RTNL_FAMILY_IPMR: u32 = 128;
pub const RTNL_FAMILY_IP6MR: u32 = 129;
pub const RTNL_FAMILY_MAX: u32 = 129;
pub const RTA_ALIGNTO: u32 = 4;
pub const RTPROT_UNSPEC: u32 = 0;
pub const RTPROT_REDIRECT: u32 = 1;
pub const RTPROT_KERNEL: u32 = 2;
pub const RTPROT_BOOT: u32 = 3;
pub const RTPROT_STATIC: u32 = 4;
pub const RTPROT_GATED: u32 = 8;
pub const RTPROT_RA: u32 = 9;
pub const RTPROT_MRT: u32 = 10;
pub const RTPROT_ZEBRA: u32 = 11;
pub const RTPROT_BIRD: u32 = 12;
pub const RTPROT_DNROUTED: u32 = 13;
pub const RTPROT_XORP: u32 = 14;
pub const RTPROT_NTK: u32 = 15;
pub const RTPROT_DHCP: u32 = 16;
pub const RTPROT_MROUTED: u32 = 17;
pub const RTPROT_KEEPALIVED: u32 = 18;
pub const RTPROT_BABEL: u32 = 42;
pub const RTPROT_OVN: u32 = 84;
pub const RTPROT_OPENR: u32 = 99;
pub const RTPROT_BGP: u32 = 186;
pub const RTPROT_ISIS: u32 = 187;
pub const RTPROT_OSPF: u32 = 188;
pub const RTPROT_RIP: u32 = 189;
pub const RTPROT_EIGRP: u32 = 192;
pub const RTM_F_NOTIFY: u32 = 256;
pub const RTM_F_CLONED: u32 = 512;
pub const RTM_F_EQUALIZE: u32 = 1024;
pub const RTM_F_PREFIX: u32 = 2048;
pub const RTM_F_LOOKUP_TABLE: u32 = 4096;
pub const RTM_F_FIB_MATCH: u32 = 8192;
pub const RTM_F_OFFLOAD: u32 = 16384;
pub const RTM_F_TRAP: u32 = 32768;
pub const RTM_F_OFFLOAD_FAILED: u32 = 536870912;
pub const RTNH_F_DEAD: u32 = 1;
pub const RTNH_F_PERVASIVE: u32 = 2;
pub const RTNH_F_ONLINK: u32 = 4;
pub const RTNH_F_OFFLOAD: u32 = 8;
pub const RTNH_F_LINKDOWN: u32 = 16;
pub const RTNH_F_UNRESOLVED: u32 = 32;
pub const RTNH_F_TRAP: u32 = 64;
pub const RTNH_COMPARE_MASK: u32 = 89;
pub const RTNH_ALIGNTO: u32 = 4;
pub const RTNETLINK_HAVE_PEERINFO: u32 = 1;
pub const RTAX_FEATURE_ECN: u32 = 1;
pub const RTAX_FEATURE_SACK: u32 = 2;
pub const RTAX_FEATURE_TIMESTAMP: u32 = 4;
pub const RTAX_FEATURE_ALLFRAG: u32 = 8;
pub const RTAX_FEATURE_TCP_USEC_TS: u32 = 16;
pub const RTAX_FEATURE_MASK: u32 = 31;
pub const TCM_IFINDEX_MAGIC_BLOCK: u32 = 4294967295;
pub const TCA_DUMP_FLAGS_TERSE: u32 = 1;
pub const RTMGRP_LINK: u32 = 1;
pub const RTMGRP_NOTIFY: u32 = 2;
pub const RTMGRP_NEIGH: u32 = 4;
pub const RTMGRP_TC: u32 = 8;
pub const RTMGRP_IPV4_IFADDR: u32 = 16;
pub const RTMGRP_IPV4_MROUTE: u32 = 32;
pub const RTMGRP_IPV4_ROUTE: u32 = 64;
pub const RTMGRP_IPV4_RULE: u32 = 128;
pub const RTMGRP_IPV6_IFADDR: u32 = 256;
pub const RTMGRP_IPV6_MROUTE: u32 = 512;
pub const RTMGRP_IPV6_ROUTE: u32 = 1024;
pub const RTMGRP_IPV6_IFINFO: u32 = 2048;
pub const RTMGRP_DECnet_IFADDR: u32 = 4096;
pub const RTMGRP_DECnet_ROUTE: u32 = 16384;
pub const RTMGRP_IPV6_PREFIX: u32 = 131072;
pub const TCA_FLAG_LARGE_DUMP_ON: u32 = 1;
pub const TCA_ACT_FLAG_LARGE_DUMP_ON: u32 = 1;
pub const TCA_ACT_FLAG_TERSE_DUMP: u32 = 2;
pub const RTEXT_FILTER_VF: u32 = 1;
pub const RTEXT_FILTER_BRVLAN: u32 = 2;
pub const RTEXT_FILTER_BRVLAN_COMPRESSED: u32 = 4;
pub const RTEXT_FILTER_SKIP_STATS: u32 = 8;
pub const RTEXT_FILTER_MRP: u32 = 16;
pub const RTEXT_FILTER_CFM_CONFIG: u32 = 32;
pub const RTEXT_FILTER_CFM_STATUS: u32 = 64;
pub const RTEXT_FILTER_MST: u32 = 128;
pub const FIB_RULE_PERMANENT: u32 = 1;
pub const FIB_RULE_INVERT: u32 = 2;
pub const FIB_RULE_UNRESOLVED: u32 = 4;
pub const FIB_RULE_IIF_DETACHED: u32 = 8;
pub const FIB_RULE_DEV_DETACHED: u32 = 8;
pub const FIB_RULE_OIF_DETACHED: u32 = 16;
pub const FIB_RULE_FIND_SADDR: u32 = 65536;
pub const NETLINK_UNCONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_UNCONNECTED;
pub const NETLINK_CONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_CONNECTED;
pub const IFLA_UNSPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_UNSPEC;
pub const IFLA_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ADDRESS;
pub const IFLA_BROADCAST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_BROADCAST;
pub const IFLA_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFNAME;
pub const IFLA_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MTU;
pub const IFLA_LINK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK;
pub const IFLA_QDISC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_QDISC;
pub const IFLA_STATS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS;
pub const IFLA_COST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_COST;
pub const IFLA_PRIORITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PRIORITY;
pub const IFLA_MASTER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MASTER;
pub const IFLA_WIRELESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WIRELESS;
pub const IFLA_PROTINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTINFO;
pub const IFLA_TXQLEN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TXQLEN;
pub const IFLA_MAP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAP;
pub const IFLA_WEIGHT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WEIGHT;
pub const IFLA_OPERSTATE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_OPERSTATE;
pub const IFLA_LINKMODE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKMODE;
pub const IFLA_LINKINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKINFO;
pub const IFLA_NET_NS_PID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_PID;
pub const IFLA_IFALIAS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFALIAS;
pub const IFLA_NUM_VF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_VF;
pub const IFLA_VFINFO_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VFINFO_LIST;
pub const IFLA_STATS64: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS64;
pub const IFLA_VF_PORTS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VF_PORTS;
pub const IFLA_PORT_SELF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PORT_SELF;
pub const IFLA_AF_SPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_AF_SPEC;
pub const IFLA_GROUP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GROUP;
pub const IFLA_NET_NS_FD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_FD;
pub const IFLA_EXT_MASK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EXT_MASK;
pub const IFLA_PROMISCUITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROMISCUITY;
pub const IFLA_NUM_TX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_TX_QUEUES;
pub const IFLA_NUM_RX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_RX_QUEUES;
pub const IFLA_CARRIER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER;
pub const IFLA_PHYS_PORT_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_ID;
pub const IFLA_CARRIER_CHANGES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_CHANGES;
pub const IFLA_PHYS_SWITCH_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_SWITCH_ID;
pub const IFLA_LINK_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK_NETNSID;
pub const IFLA_PHYS_PORT_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_NAME;
pub const IFLA_PROTO_DOWN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN;
pub const IFLA_GSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SEGS;
pub const IFLA_GSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SIZE;
pub const IFLA_PAD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PAD;
pub const IFLA_XDP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_XDP;
pub const IFLA_EVENT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EVENT;
pub const IFLA_NEW_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_NETNSID;
pub const IFLA_IF_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID;
pub const IFLA_TARGET_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID;
pub const IFLA_CARRIER_UP_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_UP_COUNT;
pub const IFLA_CARRIER_DOWN_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_DOWN_COUNT;
pub const IFLA_NEW_IFINDEX: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_IFINDEX;
pub const IFLA_MIN_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MIN_MTU;
pub const IFLA_MAX_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAX_MTU;
pub const IFLA_PROP_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROP_LIST;
pub const IFLA_ALT_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALT_IFNAME;
pub const IFLA_PERM_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PERM_ADDRESS;
pub const IFLA_PROTO_DOWN_REASON: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN_REASON;
pub const IFLA_PARENT_DEV_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_NAME;
pub const IFLA_PARENT_DEV_BUS_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_BUS_NAME;
pub const IFLA_GRO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_MAX_SIZE;
pub const IFLA_TSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SIZE;
pub const IFLA_TSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SEGS;
pub const IFLA_ALLMULTI: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALLMULTI;
pub const IFLA_DEVLINK_PORT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_DEVLINK_PORT;
pub const IFLA_GSO_IPV4_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_IPV4_MAX_SIZE;
pub const IFLA_GRO_IPV4_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_IPV4_MAX_SIZE;
pub const IFLA_DPLL_PIN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_DPLL_PIN;
pub const IFLA_MAX_PACING_OFFLOAD_HORIZON: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAX_PACING_OFFLOAD_HORIZON;
pub const IFLA_NETNS_IMMUTABLE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NETNS_IMMUTABLE;
pub const __IFLA_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IFLA_MAX;
pub const IFLA_PROTO_DOWN_REASON_UNSPEC: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_UNSPEC;
pub const IFLA_PROTO_DOWN_REASON_MASK: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_MASK;
pub const IFLA_PROTO_DOWN_REASON_VALUE: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE;
pub const __IFLA_PROTO_DOWN_REASON_CNT: _bindgen_ty_3 = _bindgen_ty_3::__IFLA_PROTO_DOWN_REASON_CNT;
pub const IFLA_PROTO_DOWN_REASON_MAX: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE;
pub const IFLA_INET_UNSPEC: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_UNSPEC;
pub const IFLA_INET_CONF: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_CONF;
pub const __IFLA_INET_MAX: _bindgen_ty_4 = _bindgen_ty_4::__IFLA_INET_MAX;
pub const IFLA_INET6_UNSPEC: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_UNSPEC;
pub const IFLA_INET6_FLAGS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_FLAGS;
pub const IFLA_INET6_CONF: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CONF;
pub const IFLA_INET6_STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_STATS;
pub const IFLA_INET6_MCAST: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_MCAST;
pub const IFLA_INET6_CACHEINFO: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CACHEINFO;
pub const IFLA_INET6_ICMP6STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ICMP6STATS;
pub const IFLA_INET6_TOKEN: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_TOKEN;
pub const IFLA_INET6_ADDR_GEN_MODE: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ADDR_GEN_MODE;
pub const IFLA_INET6_RA_MTU: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_RA_MTU;
pub const __IFLA_INET6_MAX: _bindgen_ty_5 = _bindgen_ty_5::__IFLA_INET6_MAX;
pub const IFLA_BR_UNSPEC: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_UNSPEC;
pub const IFLA_BR_FORWARD_DELAY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FORWARD_DELAY;
pub const IFLA_BR_HELLO_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIME;
pub const IFLA_BR_MAX_AGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MAX_AGE;
pub const IFLA_BR_AGEING_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_AGEING_TIME;