tests: Add queue ID matching to AF_XDP test

pull/846/head
arctic-alpaca 10 months ago
parent ef9284113b
commit 9813c39f19
No known key found for this signature in database
GPG Key ID: F911E2A7F537230E

@ -25,8 +25,17 @@ static CPUS: CpuMap = CpuMap::with_max_entries(1, 0);
static mut HITS: Array<u32> = Array::with_max_entries(2, 0);
#[xdp]
pub fn redirect_sock(_ctx: XdpContext) -> u32 {
SOCKS.redirect(0, 0).unwrap_or(xdp_action::XDP_ABORTED)
pub fn redirect_sock(ctx: XdpContext) -> u32 {
// Retrieve queue ID of incoming packet.
let queue_id = unsafe { *ctx.ctx }.rx_queue_index;
// Check whether incoming packet's queue ID matches the queue ID of the socket in XSKMAP at index `queue_id`.
if SOCKS.get(queue_id) == Some(queue_id) {
// Queue ID matches, redirect to AF_XDP socket.
SOCKS.redirect(0, 0).unwrap_or(xdp_action::XDP_ABORTED)
} else {
// Queue ID did not match, pass packet to kernel network stack.
xdp_action::XDP_PASS
}
}
#[xdp]

Loading…
Cancel
Save