#![allow(missing_docs)]
#[repr(C)]
#[derive(Default, Debug, Copy, Clone)]
pub struct XdpDesc {
pub addr: u64,
pub len: u32,
pub options: u32,
}
#[repr(C)]
#[derive(Default, Debug, Copy, Clone)]
pub struct XdpUmemReg {
pub addr: u64,
pub len: u64,
pub chunk_size: u32,
pub headroom: u32,
pub flags: u32,
pub tx_metadata_len: u32,
}
const _NO_PADDING: () = {
assert!(
core::mem::size_of::<XdpUmemReg>()
== (core::mem::size_of::<u64>()
+ core::mem::size_of::<u64>()
+ core::mem::size_of::<u32>()
+ core::mem::size_of::<u32>()
+ core::mem::size_of::<u32>()
+ core::mem::size_of::<u32>())
);
};
#[repr(C)]
#[derive(Default, Debug, Copy, Clone)]
pub struct XdpRingOffsets {
pub producer: u64,
pub consumer: u64,
pub desc: u64,
pub flags: u64,
}
#[repr(C)]
#[derive(Default, Debug, Copy, Clone)]
pub struct XdpMmapOffsets {
pub rx: XdpRingOffsets,
pub tx: XdpRingOffsets,
pub fr: XdpRingOffsets,
pub cr: XdpRingOffsets,
}
#[repr(C)]
#[derive(Default, Debug, Copy, Clone)]
pub struct XdpRingOffsetsV1 {
pub producer: u64,
pub consumer: u64,
pub desc: u64,
}
#[repr(C)]
#[derive(Default, Debug, Copy, Clone)]
pub struct XdpMmapOffsetsV1 {
pub rx: XdpRingOffsetsV1,
pub tx: XdpRingOffsetsV1,
pub fr: XdpRingOffsetsV1,
pub cr: XdpRingOffsetsV1,
}
#[repr(C)]
#[doc(alias = "sockaddr_xdp")]
#[derive(Debug, Copy, Clone)]
pub struct SockAddrXdp {
#[doc(alias = "sxdp_family")]
pub family: u16,
#[doc(alias = "sxdp_flags")]
pub flags: u16,
#[doc(alias = "sxdp_ifindex")]
pub ifindex: u32,
#[doc(alias = "sxdp_queue_id")]
pub queue_id: u32,
#[doc(alias = "sxdp_shared_umem_fd")]
pub shared_umem_fd: u32,
}
#[repr(C)]
#[doc(alias = "xdp_statistics")]
#[derive(Debug, Default, Copy, Clone)]
pub struct XdpStatistics {
pub rx_dropped: u64,
pub rx_invalid_descs: u64,
pub tx_invalid_descs: u64,
}
#[repr(C)]
#[doc(alias = "xdp_statistics")]
#[derive(Debug, Default, Copy, Clone)]
#[non_exhaustive]
pub struct XdpStatisticsV2 {
pub rx_dropped: u64,
pub rx_invalid_descs: u64,
pub tx_invalid_descs: u64,
pub rx_ring_full: u64,
pub rx_fill_ring_empty_descs: u64,
pub tx_ring_empty_descs: u64,
}
impl Default for SockAddrXdp {
fn default() -> Self {
SockAddrXdp {
family: libc::AF_XDP as u16,
flags: 0,
ifindex: 0,
queue_id: 0,
shared_umem_fd: 0,
}
}
}