XDP_FLAGS_REPLACE
XDP_FLAGS_MODES | XDP_FLAGS_REPLACE)
if (old_prog && !(flags & XDP_FLAGS_REPLACE)) {
if ((flags & XDP_FLAGS_REPLACE) && cur_prog != old_prog) {
if (xdp_flags & XDP_FLAGS_REPLACE) {
XDP_FLAGS_MODES | XDP_FLAGS_REPLACE)
if (flags & XDP_FLAGS_REPLACE) {
flags |= XDP_FLAGS_REPLACE;
err = bpf_xdp_attach(ifindex, xdp_prog_fd, XDP_FLAGS_REPLACE, &opts);
err = bpf_xdp_attach(IFINDEX_LO, fd1, XDP_FLAGS_REPLACE, &opts);
err = bpf_xdp_attach(IFINDEX_LO, fd2, XDP_FLAGS_REPLACE, &opts);
err = bpf_xdp_attach(IFINDEX_LO, prog_fd1, XDP_FLAGS_REPLACE, &opts);
bpf_xdp_detach(IFINDEX_LO, XDP_FLAGS_REPLACE, &opts);
err = bpf_xdp_detach(IFINDEX_LO, XDP_FLAGS_REPLACE, &opts);
err = bpf_xdp_attach(IFINDEX_LO, prog_fd2, XDP_FLAGS_REPLACE, &opts);
#define XDP_FLAGS (XDP_FLAGS_DRV_MODE | XDP_FLAGS_REPLACE)
err = bpf_xdp_attach(ifindex, -1, XDP_FLAGS_REPLACE, &opts);