af_xdp: create_api_v3 without namespace keyword
Namespace keyword is reverved c++ word, so it's not possible to include vapi header for af_xdp plugin and use it. Type: fix Signed-off-by: Stanislav Zaikin <stanislav.zaikin@46labs.com> Change-Id: I42a0e0a89ff2c407090d3c18c1bc5a5605ddf032
This commit is contained in:

committed by
Beno�t Ganne

parent
5fe1cf80ca
commit
7f27ed666e
@ -57,6 +57,7 @@ define af_xdp_create
|
|||||||
vl_api_af_xdp_flag_t flags [default=0];
|
vl_api_af_xdp_flag_t flags [default=0];
|
||||||
string prog[256];
|
string prog[256];
|
||||||
option vat_help = "<host-if linux-ifname> [name ifname] [rx-queue-size size] [tx-queue-size size] [num-rx-queues <num|all>] [prog pathname] [zero-copy|no-zero-copy] [no-syscall-lock]";
|
option vat_help = "<host-if linux-ifname> [name ifname] [rx-queue-size size] [tx-queue-size size] [num-rx-queues <num|all>] [prog pathname] [zero-copy|no-zero-copy] [no-syscall-lock]";
|
||||||
|
option deprecated;
|
||||||
};
|
};
|
||||||
|
|
||||||
/** \brief
|
/** \brief
|
||||||
@ -88,6 +89,7 @@ define af_xdp_create_v2
|
|||||||
string prog[256];
|
string prog[256];
|
||||||
string namespace[64];
|
string namespace[64];
|
||||||
option vat_help = "<host-if linux-ifname> [name ifname] [rx-queue-size size] [tx-queue-size size] [num-rx-queues <num|all>] [prog pathname] [netns ns] [zero-copy|no-zero-copy] [no-syscall-lock]";
|
option vat_help = "<host-if linux-ifname> [name ifname] [rx-queue-size size] [tx-queue-size size] [num-rx-queues <num|all>] [prog pathname] [netns ns] [zero-copy|no-zero-copy] [no-syscall-lock]";
|
||||||
|
option deprecated;
|
||||||
};
|
};
|
||||||
|
|
||||||
/** \brief
|
/** \brief
|
||||||
@ -101,6 +103,7 @@ define af_xdp_create_reply
|
|||||||
u32 context;
|
u32 context;
|
||||||
i32 retval;
|
i32 retval;
|
||||||
vl_api_interface_index_t sw_if_index;
|
vl_api_interface_index_t sw_if_index;
|
||||||
|
option deprecated;
|
||||||
};
|
};
|
||||||
|
|
||||||
/** \brief
|
/** \brief
|
||||||
@ -114,6 +117,7 @@ define af_xdp_create_v2_reply
|
|||||||
u32 context;
|
u32 context;
|
||||||
i32 retval;
|
i32 retval;
|
||||||
vl_api_interface_index_t sw_if_index;
|
vl_api_interface_index_t sw_if_index;
|
||||||
|
option deprecated;
|
||||||
};
|
};
|
||||||
|
|
||||||
/** \brief
|
/** \brief
|
||||||
@ -122,6 +126,50 @@ define af_xdp_create_v2_reply
|
|||||||
@param sw_if_index - interface index
|
@param sw_if_index - interface index
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/** \brief
|
||||||
|
@param client_index - opaque cookie to identify the sender
|
||||||
|
@param context - sender context, to match reply w/ request
|
||||||
|
@param host_if - Linux netdev interface name
|
||||||
|
@param name - new af_xdp interface name (optional)
|
||||||
|
@param rxq_num - number of receive queues. 65535 can be used as special value to request all available queues (optional)
|
||||||
|
@param rxq_size - receive queue size (optional)
|
||||||
|
@param txq_size - transmit queue size (optional)
|
||||||
|
@param mode - operation mode (optional)
|
||||||
|
@param flags - flags (optional)
|
||||||
|
@param prog - eBPF program path (optional)
|
||||||
|
@param netns - netns of nic (optional)
|
||||||
|
*/
|
||||||
|
|
||||||
|
autoendian define af_xdp_create_v3
|
||||||
|
{
|
||||||
|
u32 client_index;
|
||||||
|
u32 context;
|
||||||
|
|
||||||
|
string host_if[64];
|
||||||
|
string name[64];
|
||||||
|
u16 rxq_num [default=1];
|
||||||
|
u16 rxq_size [default=0];
|
||||||
|
u16 txq_size [default=0];
|
||||||
|
vl_api_af_xdp_mode_t mode [default=0];
|
||||||
|
vl_api_af_xdp_flag_t flags [default=0];
|
||||||
|
string prog[256];
|
||||||
|
string netns[64];
|
||||||
|
option vat_help = "<host-if linux-ifname> [name ifname] [rx-queue-size size] [tx-queue-size size] [num-rx-queues <num|all>] [prog pathname] [netns ns] [zero-copy|no-zero-copy] [no-syscall-lock]";
|
||||||
|
};
|
||||||
|
|
||||||
|
/** \brief
|
||||||
|
@param context - sender context, to match reply w/ request
|
||||||
|
@param retval - return value for request
|
||||||
|
@param sw_if_index - software index for the new af_xdp interface
|
||||||
|
*/
|
||||||
|
|
||||||
|
autoendian define af_xdp_create_v3_reply
|
||||||
|
{
|
||||||
|
u32 context;
|
||||||
|
i32 retval;
|
||||||
|
vl_api_interface_index_t sw_if_index;
|
||||||
|
};
|
||||||
|
|
||||||
autoreply define af_xdp_delete
|
autoreply define af_xdp_delete
|
||||||
{
|
{
|
||||||
u32 client_index;
|
u32 client_index;
|
||||||
|
@ -115,6 +115,38 @@ vl_api_af_xdp_create_v2_t_handler (vl_api_af_xdp_create_v2_t *mp)
|
|||||||
/* clang-format on */
|
/* clang-format on */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
vl_api_af_xdp_create_v3_t_handler (vl_api_af_xdp_create_v3_t *mp)
|
||||||
|
{
|
||||||
|
vlib_main_t *vm = vlib_get_main ();
|
||||||
|
af_xdp_main_t *rm = &af_xdp_main;
|
||||||
|
vl_api_af_xdp_create_v3_reply_t *rmp;
|
||||||
|
af_xdp_create_if_args_t args;
|
||||||
|
int rv;
|
||||||
|
|
||||||
|
clib_memset (&args, 0, sizeof (af_xdp_create_if_args_t));
|
||||||
|
|
||||||
|
args.linux_ifname = mp->host_if[0] ? (char *) mp->host_if : 0;
|
||||||
|
args.name = mp->name[0] ? (char *) mp->name : 0;
|
||||||
|
args.prog = mp->prog[0] ? (char *) mp->prog : 0;
|
||||||
|
args.netns = mp->netns[0] ? (char *) mp->netns : 0;
|
||||||
|
args.mode = af_xdp_api_mode (mp->mode);
|
||||||
|
args.flags = af_xdp_api_flags (mp->flags);
|
||||||
|
args.rxq_size = mp->rxq_size;
|
||||||
|
args.txq_size = mp->txq_size;
|
||||||
|
args.rxq_num = mp->rxq_num;
|
||||||
|
|
||||||
|
af_xdp_create_if (vm, &args);
|
||||||
|
rv = args.rv;
|
||||||
|
|
||||||
|
/* clang-format off */
|
||||||
|
REPLY_MACRO2_END (VL_API_AF_XDP_CREATE_V3_REPLY,
|
||||||
|
({
|
||||||
|
rmp->sw_if_index = args.sw_if_index;
|
||||||
|
}));
|
||||||
|
/* clang-format on */
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
vl_api_af_xdp_delete_t_handler (vl_api_af_xdp_delete_t * mp)
|
vl_api_af_xdp_delete_t_handler (vl_api_af_xdp_delete_t * mp)
|
||||||
{
|
{
|
||||||
|
@ -126,6 +126,40 @@ api_af_xdp_create_v2 (vat_main_t *vam)
|
|||||||
return ret;
|
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 */
|
/* af_xdp-create reply handler */
|
||||||
static void
|
static void
|
||||||
vl_api_af_xdp_create_reply_t_handler (vl_api_af_xdp_create_reply_t * mp)
|
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;
|
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 */
|
/* af_xdp delete API */
|
||||||
static int
|
static int
|
||||||
api_af_xdp_delete (vat_main_t * vam)
|
api_af_xdp_delete (vat_main_t * vam)
|
||||||
|
Reference in New Issue
Block a user