X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fplugins%2Faf_xdp%2Ftest_api.c;h=581697e341d51c66131b6e5122db831c60f42cb7;hb=7f27ed666;hp=46ba6f100eef3ef111ac517fe9b4194a9b6984c8;hpb=5fe1cf80cad75a2e08450303410fb484cdc708ad;p=vpp.git diff --git a/src/plugins/af_xdp/test_api.c b/src/plugins/af_xdp/test_api.c index 46ba6f100ee..581697e341d 100644 --- a/src/plugins/af_xdp/test_api.c +++ b/src/plugins/af_xdp/test_api.c @@ -126,6 +126,40 @@ api_af_xdp_create_v2 (vat_main_t *vam) return ret; } +/* af_xdp create v2 API */ +static int +api_af_xdp_create_v3 (vat_main_t *vam) +{ + vl_api_af_xdp_create_v3_t *mp; + af_xdp_create_if_args_t args; + int ret; + + if (!unformat_user (vam->input, unformat_af_xdp_create_if_args, &args)) + { + clib_warning ("unknown input `%U'", format_unformat_error, vam->input); + return -99; + } + + M (AF_XDP_CREATE, mp); + + snprintf ((char *) mp->host_if, sizeof (mp->host_if), "%s", + args.linux_ifname ?: ""); + snprintf ((char *) mp->name, sizeof (mp->name), "%s", args.name ?: ""); + snprintf ((char *) mp->netns, sizeof (mp->netns), "%s", args.netns ?: ""); + mp->rxq_num = args.rxq_num; + mp->rxq_size = args.rxq_size; + mp->txq_size = args.txq_size; + mp->mode = api_af_xdp_mode (args.mode); + if (args.flags & AF_XDP_CREATE_FLAGS_NO_SYSCALL_LOCK) + mp->flags |= AF_XDP_API_FLAGS_NO_SYSCALL_LOCK; + snprintf ((char *) mp->prog, sizeof (mp->prog), "%s", args.prog ?: ""); + + S (mp); + W (ret); + + return ret; +} + /* af_xdp-create reply handler */ static void vl_api_af_xdp_create_reply_t_handler (vl_api_af_xdp_create_reply_t * mp) @@ -162,6 +196,24 @@ vl_api_af_xdp_create_v2_reply_t_handler (vl_api_af_xdp_create_v2_reply_t *mp) vam->regenerate_interface_table = 1; } +/* af_xdp-create v3 reply handler */ +static void +vl_api_af_xdp_create_v3_reply_t_handler (vl_api_af_xdp_create_v2_reply_t *mp) +{ + vat_main_t *vam = af_xdp_test_main.vat_main; + i32 retval = mp->retval; + + if (retval == 0) + { + fformat (vam->ofp, "created af_xdp with sw_if_index %d\n", + mp->sw_if_index); + } + + vam->retval = retval; + vam->result_ready = 1; + vam->regenerate_interface_table = 1; +} + /* af_xdp delete API */ static int api_af_xdp_delete (vat_main_t * vam)