#![allow(unused_imports, dead_code)]
pub use libc::AF_XDP; pub use libc::SOL_XDP;
pub use libc::XDP_MMAP_OFFSETS; pub use libc::XDP_RX_RING; pub use libc::XDP_STATISTICS;
pub use libc::XDP_TX_RING; pub use libc::XDP_UMEM_COMPLETION_RING; pub use libc::XDP_UMEM_FILL_RING; pub use libc::XDP_UMEM_REG;
pub use libc::XDP_PGOFF_RX_RING; pub use libc::XDP_PGOFF_TX_RING; pub use libc::XDP_UMEM_PGOFF_COMPLETION_RING; pub use libc::XDP_UMEM_PGOFF_FILL_RING;
pub use libc::XDP_COPY; pub use libc::XDP_SHARED_UMEM; pub use libc::XDP_USE_NEED_WAKEUP; pub use libc::XDP_ZEROCOPY;
pub use libc::sockaddr_xdp; pub use libc::xdp_desc; pub use libc::xdp_mmap_offsets; pub use libc::xdp_ring_offset; pub use libc::xdp_statistics;
pub use libc::xdp_umem_reg;
pub const XDP_RING_NEED_WAKEUP: u32 = 1;
pub const SIOCETHTOOL: libc::c_ulong = 0x8946;
pub const ETHTOOL_GCHANNELS: u32 = 0x0000_003c;
#[repr(C)]
#[derive(Debug, Default, Clone, Copy)]
pub struct ethtool_channels {
pub cmd: u32,
pub max_rx: u32,
pub max_tx: u32,
pub max_other: u32,
pub max_combined: u32,
pub rx_count: u32,
pub tx_count: u32,
pub other_count: u32,
pub combined_count: u32,
}
#[repr(C)]
pub struct ethtool_ifreq {
pub ifr_name: [libc::c_char; libc::IFNAMSIZ],
pub ifr_data: *mut libc::c_void,
}
pub const ETHTOOL_GRSSH: u32 = 0x0000_0046;
pub const ETHTOOL_SRSSH: u32 = 0x0000_0047;
pub const RXH_XFRM_SYM_XOR: u8 = 1 << 0;
pub const RXH_XFRM_NO_CHANGE: u8 = 0xff;
pub const ETH_RSS_HASH_NO_CHANGE: u8 = 0;
pub const ETH_RXFH_INDIR_NO_CHANGE: u32 = 0xffff_ffff;
#[repr(C)]
#[derive(Debug, Default, Clone, Copy)]
pub struct ethtool_rxfh {
pub cmd: u32,
pub rss_context: u32,
pub indir_size: u32,
pub key_size: u32,
pub hfunc: u8,
pub input_xfrm: u8,
pub rsvd8: [u8; 2],
pub rsvd32: u32,
}
#[cfg(test)]
mod tests {
use super::*;
use std::mem::size_of;
#[test]
fn constant_values() {
assert_eq!(AF_XDP, 44);
assert_eq!(SOL_XDP, 283);
assert_eq!(XDP_MMAP_OFFSETS, 1);
assert_eq!(XDP_RX_RING, 2);
assert_eq!(XDP_TX_RING, 3);
assert_eq!(XDP_UMEM_REG, 4);
assert_eq!(XDP_UMEM_FILL_RING, 5);
assert_eq!(XDP_UMEM_COMPLETION_RING, 6);
assert_eq!(XDP_STATISTICS, 7);
}
#[test]
fn struct_sizes() {
assert_eq!(size_of::<xdp_umem_reg>(), 32);
assert_eq!(size_of::<sockaddr_xdp>(), 16);
assert_eq!(size_of::<xdp_desc>(), 16);
assert_eq!(size_of::<xdp_mmap_offsets>(), 128);
assert_eq!(size_of::<xdp_ring_offset>(), 32);
}
#[test]
fn bind_flag_values() {
assert_eq!(XDP_SHARED_UMEM, 1);
assert_eq!(XDP_COPY, 2);
assert_eq!(XDP_ZEROCOPY, 4);
assert_eq!(XDP_USE_NEED_WAKEUP, 8);
}
#[test]
fn ring_need_wakeup() {
assert_eq!(XDP_RING_NEED_WAKEUP, 1);
}
}