XDP_FLAGS_SKB_MODE
#define XDP_FLAGS_MODES (XDP_FLAGS_SKB_MODE | \
if (flags & XDP_FLAGS_SKB_MODE)
xdp_flags |= XDP_FLAGS_SKB_MODE;
if (!(xdp_flags & XDP_FLAGS_SKB_MODE))
xdp_flags |= XDP_FLAGS_SKB_MODE;
if (!(xdp_flags & XDP_FLAGS_SKB_MODE))
xdp_flags |= generic ? XDP_FLAGS_SKB_MODE : XDP_FLAGS_DRV_MODE;
xdp_flags |= XDP_FLAGS_SKB_MODE;
if (!(xdp_flags & XDP_FLAGS_SKB_MODE))
flags |= XDP_FLAGS_SKB_MODE;
#define XDP_FLAGS_MODES (XDP_FLAGS_SKB_MODE | \
xdp_flags &= XDP_FLAGS_SKB_MODE | XDP_FLAGS_DRV_MODE | XDP_FLAGS_HW_MODE;
else if (flags & XDP_FLAGS_SKB_MODE)
xdp_veth_redirect(XDP_FLAGS_SKB_MODE);
xdp_veth_broadcast_redirect(XDP_FLAGS_SKB_MODE, BPF_F_BROADCAST);
xdp_veth_broadcast_redirect(XDP_FLAGS_SKB_MODE,
xdp_veth_egress(XDP_FLAGS_SKB_MODE);
return (mode == TEST_MODE_SKB) ? XDP_FLAGS_SKB_MODE : XDP_FLAGS_DRV_MODE;
err = bpf_xdp_attach(IFINDEX_LO, prog_redir_fd, XDP_FLAGS_SKB_MODE, NULL);
err = bpf_xdp_detach(IFINDEX_LO, XDP_FLAGS_SKB_MODE, NULL);
err = bpf_xdp_attach(IFINDEX_LO, prog_fd, XDP_FLAGS_SKB_MODE, NULL);
bpf_xdp_detach(IFINDEX_LO, XDP_FLAGS_SKB_MODE, NULL);
err = bpf_xdp_attach(IFINDEX_LO, dm_fd_redir, XDP_FLAGS_SKB_MODE, NULL);
err = bpf_xdp_detach(IFINDEX_LO, XDP_FLAGS_SKB_MODE, NULL);
err = bpf_xdp_attach(IFINDEX_LO, dm_fd, XDP_FLAGS_SKB_MODE, NULL);
bpf_xdp_detach(IFINDEX_LO, XDP_FLAGS_SKB_MODE, NULL);
xdp_redirect_ping(XDP_FLAGS_SKB_MODE);
err = bpf_xdp_query_id(IFINDEX_LO, XDP_FLAGS_SKB_MODE, &prog_id);
err = bpf_xdp_attach(IFINDEX_LO, prog_fd, XDP_FLAGS_SKB_MODE, NULL);
err = bpf_xdp_query_id(IFINDEX_LO, XDP_FLAGS_SKB_MODE, &prog_id);
XDP_FLAGS_SKB_MODE);
XDP_FLAGS_SKB_MODE);
xdp_flags |= XDP_FLAGS_SKB_MODE;
__u32 mode_flags = XDP_FLAGS_DRV_MODE | XDP_FLAGS_SKB_MODE;
else if (mode == XDP_FLAGS_SKB_MODE)