Add an IFLA_XDP_FLAGS attribute that can be passed for setting up XDP along with IFLA_XDP_FD, which eventually allows user space to implement typical add/replace/delete logic for programs. Right now, calling into dev_change_xdp_fd() will always replace previous programs. When passed XDP_FLAGS_UPDATE_IF_NOEXIST, we can handle this more graceful when requested by returning -EBUSY in case we try to attach a new program, but we find that another one is already attached. This will be used by upcoming front-end for iproute2 as well.
Showing the changes to include/uapi/linux (1 of 4 files). Show all
Unified · Split
| @@ -876,10 +876,14 @@ enum { · 875 unmodified lines | ||
| 876 | 876 | |
| 877 | 877 | /* XDP section */ |
| 878 | 878 | |
| 879 | +#define XDP_FLAGS_UPDATE_IF_NOEXIST (1U << 0) | |
| 880 | +#define XDP_FLAGS_MASK (XDP_FLAGS_UPDATE_IF_NOEXIST) | |
| 881 | + | |
| 879 | 882 | enum { |
| 880 | 883 | IFLA_XDP_UNSPEC, |
| 881 | 884 | IFLA_XDP_FD, |
| 882 | 885 | IFLA_XDP_ATTACHED, |
| 886 | + IFLA_XDP_FLAGS, | |
| 883 | 887 | __IFLA_XDP_MAX, |
| 884 | 888 | }; |
| 885 | 889 | |