Add lcp_itf_pair_get_v2(), as it is used by sFlow plugin

This commit is contained in:
2024-11-02 13:52:13 +01:00
parent 61386a1c63
commit 6f5cde1aff
2 changed files with 55 additions and 7 deletions

View File

@ -101,13 +101,28 @@ define lcp_itf_pair_add_del_v2_reply
@param context - sender context, to match reply w/ request @param context - sender context, to match reply w/ request
@param sw_if_index - interface to use as filter (~0 == "all") @param sw_if_index - interface to use as filter (~0 == "all")
*/ */
define lcp_itf_pair_get autoendian define lcp_itf_pair_get
{ {
u32 client_index; u32 client_index;
u32 context; u32 context;
u32 cursor; u32 cursor;
}; };
define lcp_itf_pair_get_reply autoendian define lcp_itf_pair_get_reply
{
u32 context;
i32 retval;
u32 cursor;
};
autoendian define lcp_itf_pair_get_v2
{
u32 client_index;
u32 context;
u32 cursor;
vl_api_interface_index_t sw_if_index [default=0xffffffff];
};
autoendian define lcp_itf_pair_get_v2_reply
{ {
u32 context; u32 context;
i32 retval; i32 retval;

View File

@ -133,11 +133,11 @@ send_lcp_itf_pair_details (index_t lipi, vl_api_registration_t *rp,
vl_api_lcp_itf_pair_details_t *rmp; vl_api_lcp_itf_pair_details_t *rmp;
lcp_itf_pair_t *lcp_pair = lcp_itf_pair_get (lipi); lcp_itf_pair_t *lcp_pair = lcp_itf_pair_get (lipi);
REPLY_MACRO_DETAILS4 ( REPLY_MACRO_DETAILS4_END (
VL_API_LCP_ITF_PAIR_DETAILS, rp, context, ({ VL_API_LCP_ITF_PAIR_DETAILS, rp, context, ({
rmp->phy_sw_if_index = ntohl (lcp_pair->lip_phy_sw_if_index); rmp->phy_sw_if_index = lcp_pair->lip_phy_sw_if_index;
rmp->host_sw_if_index = ntohl (lcp_pair->lip_host_sw_if_index); rmp->host_sw_if_index = lcp_pair->lip_host_sw_if_index;
rmp->vif_index = ntohl (lcp_pair->lip_vif_index); rmp->vif_index = lcp_pair->lip_vif_index;
rmp->host_if_type = api_encode_host_type (lcp_pair->lip_host_type); rmp->host_if_type = api_encode_host_type (lcp_pair->lip_host_type);
memcpy_s (rmp->host_if_name, sizeof (rmp->host_if_name), memcpy_s (rmp->host_if_name, sizeof (rmp->host_if_name),
@ -156,11 +156,44 @@ vl_api_lcp_itf_pair_get_t_handler (vl_api_lcp_itf_pair_get_t *mp)
vl_api_lcp_itf_pair_get_reply_t *rmp; vl_api_lcp_itf_pair_get_reply_t *rmp;
i32 rv = 0; i32 rv = 0;
REPLY_AND_DETAILS_MACRO ( REPLY_AND_DETAILS_MACRO_END (
VL_API_LCP_ITF_PAIR_GET_REPLY, lcp_itf_pair_pool, VL_API_LCP_ITF_PAIR_GET_REPLY, lcp_itf_pair_pool,
({ send_lcp_itf_pair_details (cursor, rp, mp->context); })); ({ send_lcp_itf_pair_details (cursor, rp, mp->context); }));
} }
static void
vl_api_lcp_itf_pair_get_v2_t_handler (vl_api_lcp_itf_pair_get_v2_t *mp)
{
vl_api_lcp_itf_pair_get_v2_reply_t *rmp;
i32 rv = 0;
if (mp->sw_if_index == ~0)
{
// Does this actually work?
REPLY_AND_DETAILS_MACRO_END (
VL_API_LCP_ITF_PAIR_GET_REPLY, lcp_itf_pair_pool,
({ send_lcp_itf_pair_details (cursor, rp, mp->context); }));
}
else
{
VALIDATE_SW_IF_INDEX_END (mp);
u32 pair_index = lcp_itf_pair_find_by_phy (mp->sw_if_index);
if (pair_index == INDEX_INVALID)
{
rv = VNET_API_ERROR_INVALID_SW_IF_INDEX;
goto bad_sw_if_index;
}
send_lcp_itf_pair_details (
pair_index, vl_api_client_index_to_registration (mp->client_index),
mp->context);
BAD_SW_IF_INDEX_LABEL;
REPLY_MACRO2_END (VL_API_LCP_ITF_PAIR_GET_V2_REPLY,
({ rmp->cursor = ~0; }));
}
}
static void static void
vl_api_lcp_default_ns_set_t_handler (vl_api_lcp_default_ns_set_t *mp) vl_api_lcp_default_ns_set_t_handler (vl_api_lcp_default_ns_set_t *mp)
{ {