X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Fip%2Fpunt_api.c;h=8bb0f7fbc82e1fbcdb51a3d8936650a811fd2298;hb=1ff3c15b3c7607c9b590ad44d18dea5eb1cb8c4e;hp=946a0010a0c5eae171c74414b1f512d1e06b28b5;hpb=283cd2e9afcab1407d5614d79da4354790fa059a;p=vpp.git diff --git a/src/vnet/ip/punt_api.c b/src/vnet/ip/punt_api.c index 946a0010a0c..8bb0f7fbc82 100644 --- a/src/vnet/ip/punt_api.c +++ b/src/vnet/ip/punt_api.c @@ -21,7 +21,6 @@ #include #include #include -#include #include @@ -322,6 +321,7 @@ typedef struct punt_reason_dump_walk_ctx_t_ { vl_api_registration_t *reg; u32 context; + u8 *name; } punt_reason_dump_walk_ctx_t; static int @@ -330,6 +330,14 @@ punt_reason_dump_walk_cb (vlib_punt_reason_t id, const u8 * name, void *args) punt_reason_dump_walk_ctx_t *ctx = args; vl_api_punt_reason_details_t *mp; + if (ctx->name) + { + /* user requested a specific punt-reason */ + if (vec_cmp (name, ctx->name)) + /* not the reasonn we're lookgin for */ + return 1; + } + mp = vl_msg_api_alloc (sizeof (*mp) + vec_len (name)); if (!mp) return (0); @@ -358,9 +366,12 @@ vl_api_punt_reason_dump_t_handler (vl_api_punt_reason_dump_t * mp) punt_reason_dump_walk_ctx_t ctx = { .reg = reg, .context = mp->context, + .name = vl_api_from_api_to_vec (&mp->reason.name), }; punt_reason_walk (punt_reason_dump_walk_cb, &ctx); + + vec_free (ctx.name); } #define vl_msg_name_crc_list