On 05/13/2017 11:01 AM, Sergei Shtylyov wrote:
On 5/13/2017 3:32 AM, Daniel Borkmann wrote:
Follow-up to d67b9cd28c1d ("xdp: refine xdp api with regards to
generic xdp") in order to update the XDP dumping part.
Signed-off-by: Daniel Borkmann <dan...@iogearbox.net>
---
ip/iplink_xdp.c | 19 +++++++++++--------
1 file changed, 11 insertions(+), 8 deletions(-)
diff --git a/ip/iplink_xdp.c b/ip/iplink_xdp.c
index a1380ee..98503fa 100644
--- a/ip/iplink_xdp.c
+++ b/ip/iplink_xdp.c
@@ -79,17 +79,20 @@ int xdp_parse(int *argc, char ***argv, struct iplink_req
*req, bool generic)
void xdp_dump(FILE *fp, struct rtattr *xdp)
{
struct rtattr *tb[IFLA_XDP_MAX + 1];
- __u32 flags = 0;
+ __u8 mode;
parse_rtattr_nested(tb, IFLA_XDP_MAX, xdp);
- if (!tb[IFLA_XDP_ATTACHED] ||
- !rta_getattr_u8(tb[IFLA_XDP_ATTACHED]))
+ if (!tb[IFLA_XDP_ATTACHED])
return;
- if (tb[IFLA_XDP_FLAGS])
- flags = rta_getattr_u32(tb[IFLA_XDP_FLAGS]);
-
- fprintf(fp, "xdp%s ",
- flags & XDP_FLAGS_SKB_MODE ? "generic" : "");
+ mode = rta_getattr_u8(tb[IFLA_XDP_ATTACHED]);
+ if (mode == XDP_ATTACHED_NONE)
+ return;
+ else if (mode == XDP_ATTACHED_DRV)
+ fprintf(fp, "xdp ");
+ else if (mode == XDP_ATTACHED_SKB)
+ fprintf(fp, "xdpgeneric ");
+ else
+ fprintf(fp, "xdp[%u] ", mode);
This is asking to be a *switch* statement.
The code is fine as-is, thank you !