@@ -355,6 +355,83 @@ s! {
355355 #[ cfg( libc_union) ]
356356 pub u: __c_anonymous_ptrace_syscall_info_data,
357357 }
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+ }
358435}
359436
360437impl siginfo_t {
@@ -920,6 +997,38 @@ pub const GENL_UNS_ADMIN_PERM: ::c_int = 0x10;
920997pub const GENL_ID_VFS_DQUOT : :: c_int = :: NLMSG_MIN_TYPE + 1 ;
921998pub const GENL_ID_PMCRAID : :: c_int = :: NLMSG_MIN_TYPE + 2 ;
922999
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+
9231032// elf.h
9241033pub const NT_PRSTATUS : :: c_int = 1 ;
9251034pub const NT_PRFPREG : :: c_int = 2 ;
0 commit comments