@@ -355,6 +355,83 @@ s! {
355
355
#[ cfg( libc_union) ]
356
356
pub u: __c_anonymous_ptrace_syscall_info_data,
357
357
}
358
+
359
+ // linux/if_xdp.h
360
+
361
+ pub struct sockaddr_xdp {
362
+ pub sxdp_family: :: __u16,
363
+ pub sxdp_flags: :: __u16,
364
+ pub sxdp_ifindex: :: __u32,
365
+ pub sxdp_queue_id: :: __u32,
366
+ pub sxdp_shared_umem_fd: :: __u32,
367
+ }
368
+
369
+ pub struct xdp_ring_offset {
370
+ pub producer: :: __u64,
371
+ pub consumer: :: __u64,
372
+ pub desc: :: __u64,
373
+ pub flags: :: __u64,
374
+ }
375
+
376
+ pub struct xdp_mmap_offsets {
377
+ pub rx: xdp_ring_offset,
378
+ pub tx: xdp_ring_offset,
379
+ pub fr: xdp_ring_offset,
380
+ pub cr: xdp_ring_offset,
381
+ }
382
+
383
+ pub struct xdp_ring_offset_v1 {
384
+ pub producer: :: __u64,
385
+ pub consumer: :: __u64,
386
+ pub desc: :: __u64,
387
+ }
388
+
389
+ pub struct xdp_mmap_offsets_v1 {
390
+ pub rx: xdp_ring_offset_v1,
391
+ pub tx: xdp_ring_offset_v1,
392
+ pub fr: xdp_ring_offset_v1,
393
+ pub cr: xdp_ring_offset_v1,
394
+ }
395
+
396
+ pub struct xdp_umem_reg {
397
+ pub addr: :: __u64,
398
+ pub len: :: __u64,
399
+ pub chunk_size: :: __u32,
400
+ pub headroom: :: __u32,
401
+ pub flags: :: __u32,
402
+ }
403
+
404
+ pub struct xdp_umem_reg_v1 {
405
+ pub addr: :: __u64,
406
+ pub len: :: __u64,
407
+ pub chunk_size: :: __u32,
408
+ pub headroom: :: __u32,
409
+ }
410
+
411
+ pub struct xdp_statistics {
412
+ pub rx_dropped: :: __u64,
413
+ pub rx_invalid_descs: :: __u64,
414
+ pub tx_invalid_descs: :: __u64,
415
+ pub rx_ring_full: :: __u64,
416
+ pub rx_fill_ring_empty_descs: :: __u64,
417
+ pub tx_ring_empty_descs: :: __u64,
418
+ }
419
+
420
+ pub struct xdp_statistics_v1 {
421
+ pub rx_dropped: :: __u64,
422
+ pub rx_invalid_descs: :: __u64,
423
+ pub tx_invalid_descs: :: __u64,
424
+ }
425
+
426
+ pub struct xdp_options {
427
+ pub flags: :: __u32,
428
+ }
429
+
430
+ pub struct xdp_desc {
431
+ pub addr: :: __u64,
432
+ pub len: :: __u32,
433
+ pub options: :: __u32,
434
+ }
358
435
}
359
436
360
437
impl siginfo_t {
@@ -920,6 +997,38 @@ pub const GENL_UNS_ADMIN_PERM: ::c_int = 0x10;
920
997
pub const GENL_ID_VFS_DQUOT : :: c_int = :: NLMSG_MIN_TYPE + 1 ;
921
998
pub const GENL_ID_PMCRAID : :: c_int = :: NLMSG_MIN_TYPE + 2 ;
922
999
1000
+ // linux/if_xdp.h
1001
+ pub const XDP_SHARED_UMEM : :: __u16 = 1 << 0 ;
1002
+ pub const XDP_COPY : :: __u16 = 1 << 1 ;
1003
+ pub const XDP_ZEROCOPY : :: __u16 = 1 << 2 ;
1004
+ pub const XDP_USE_NEED_WAKEUP : :: __u16 = 1 << 3 ;
1005
+ pub const XDP_USE_SG : :: __u16 = 1 << 4 ;
1006
+
1007
+ pub const XDP_UMEM_UNALIGNED_CHUNK_FLAG : :: __u32 = 1 << 0 ;
1008
+
1009
+ pub const XDP_RING_NEED_WAKEUP : :: __u32 = 1 << 0 ;
1010
+
1011
+ pub const XDP_MMAP_OFFSETS : :: c_int = 1 ;
1012
+ pub const XDP_RX_RING : :: c_int = 2 ;
1013
+ pub const XDP_TX_RING : :: c_int = 3 ;
1014
+ pub const XDP_UMEM_REG : :: c_int = 4 ;
1015
+ pub const XDP_UMEM_FILL_RING : :: c_int = 5 ;
1016
+ pub const XDP_UMEM_COMPLETION_RING : :: c_int = 6 ;
1017
+ pub const XDP_STATISTICS : :: c_int = 7 ;
1018
+ pub const XDP_OPTIONS : :: c_int = 8 ;
1019
+
1020
+ pub const XDP_OPTIONS_ZEROCOPY : :: __u32 = 1 << 0 ;
1021
+
1022
+ pub const XDP_PGOFF_RX_RING : :: off_t = 0 ;
1023
+ pub const XDP_PGOFF_TX_RING : :: off_t = 0x80000000 ;
1024
+ pub const XDP_UMEM_PGOFF_FILL_RING : :: c_ulonglong = 0x100000000 ;
1025
+ pub const XDP_UMEM_PGOFF_COMPLETION_RING : :: c_ulonglong = 0x180000000 ;
1026
+
1027
+ pub const XSK_UNALIGNED_BUF_OFFSET_SHIFT : :: c_int = 48 ;
1028
+ pub const XSK_UNALIGNED_BUF_ADDR_MASK : :: c_ulonglong = ( 1 << XSK_UNALIGNED_BUF_OFFSET_SHIFT ) - 1 ;
1029
+
1030
+ pub const XDP_PKT_CONTD : :: __u32 = 1 << 0 ;
1031
+
923
1032
// elf.h
924
1033
pub const NT_PRSTATUS : :: c_int = 1 ;
925
1034
pub const NT_PRFPREG : :: c_int = 2 ;
0 commit comments