|
|
@ -31,7 +31,9 @@ pub fn redirect_sock(ctx: XdpContext) -> u32 {
|
|
|
|
// Check whether incoming packet's queue ID matches the queue ID of the socket in XSKMAP at index `queue_id`.
|
|
|
|
// 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) {
|
|
|
|
if SOCKS.get(queue_id) == Some(queue_id) {
|
|
|
|
// Queue ID matches, redirect to AF_XDP socket.
|
|
|
|
// Queue ID matches, redirect to AF_XDP socket.
|
|
|
|
SOCKS.redirect(0, 0).unwrap_or(xdp_action::XDP_ABORTED)
|
|
|
|
SOCKS
|
|
|
|
|
|
|
|
.redirect(queue_id, 0)
|
|
|
|
|
|
|
|
.unwrap_or(xdp_action::XDP_ABORTED)
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
// Queue ID did not match, pass packet to kernel network stack.
|
|
|
|
// Queue ID did not match, pass packet to kernel network stack.
|
|
|
|
xdp_action::XDP_PASS
|
|
|
|
xdp_action::XDP_PASS
|
|
|
|