diff options
author | 2016-12-06 10:10:10 +0100 | |
---|---|---|
committer | 2016-12-06 17:26:48 +0000 | |
commit | 3a2a1c47bc1f319d1f46abd2a364b3cf82404405 (patch) | |
tree | f9cf6e11b6f2a718f2c6dc917cde31953bb8879b /vpp | |
parent | fc6e693d0a3e3518b7b8de270542d2b5f9a17150 (diff) |
span: add tx functionality and support for multiple mirror ports
Change-Id: Ib6dd290085e6f9a434499af8d19f346220dc8428
Signed-off-by: Damjan Marion <damarion@cisco.com>
Signed-off-by: Pavel Kotucek <pkotucek@cisco.com>
Diffstat (limited to 'vpp')
-rw-r--r-- | vpp/vpp-api/api.c | 48 | ||||
-rw-r--r-- | vpp/vpp-api/custom_dump.c | 19 | ||||
-rw-r--r-- | vpp/vpp-api/vpe.api | 43 |
3 files changed, 17 insertions, 93 deletions
diff --git a/vpp/vpp-api/api.c b/vpp/vpp-api/api.c index 4a3ec06d..ec52f440 100644 --- a/vpp/vpp-api/api.c +++ b/vpp/vpp-api/api.c @@ -301,8 +301,6 @@ _(SET_IPFIX_CLASSIFY_STREAM, set_ipfix_classify_stream) \ _(IPFIX_CLASSIFY_STREAM_DUMP, ipfix_classify_stream_dump) \ _(IPFIX_CLASSIFY_TABLE_ADD_DEL, ipfix_classify_table_add_del) \ _(IPFIX_CLASSIFY_TABLE_DUMP, ipfix_classify_table_dump) \ -_(SW_INTERFACE_SPAN_ENABLE_DISABLE, sw_interface_span_enable_disable) \ -_(SW_INTERFACE_SPAN_DUMP, sw_interface_span_dump) \ _(GET_NEXT_INDEX, get_next_index) \ _(PG_CREATE_INTERFACE, pg_create_interface) \ _(PG_CAPTURE, pg_capture) \ @@ -7578,52 +7576,6 @@ static void } static void - vl_api_sw_interface_span_enable_disable_t_handler - (vl_api_sw_interface_span_enable_disable_t * mp) -{ - vl_api_sw_interface_span_enable_disable_reply_t *rmp; - int rv; - - vlib_main_t *vm = vlib_get_main (); - - rv = span_add_delete_entry (vm, ntohl (mp->sw_if_index_from), - ntohl (mp->sw_if_index_to), mp->enable); - - REPLY_MACRO (VL_API_SW_INTERFACE_SPAN_ENABLE_DISABLE_REPLY); -} - -static void -vl_api_sw_interface_span_dump_t_handler (vl_api_sw_interface_span_dump_t * mp) -{ - - unix_shared_memory_queue_t *q; - vl_api_sw_interface_span_details_t *rmp; - span_main_t *sm = &span_main; - u32 src_sw_if_index = 0, *dst_sw_if_index; - - q = vl_api_client_index_to_input_queue (mp->client_index); - if (!q) - return; - - vec_foreach (dst_sw_if_index, sm->dst_by_src_sw_if_index) - { - if (*dst_sw_if_index > 0) - { - rmp = vl_msg_api_alloc (sizeof (*rmp)); - memset (rmp, 0, sizeof (*rmp)); - rmp->_vl_msg_id = ntohs (VL_API_SW_INTERFACE_SPAN_DETAILS); - rmp->context = mp->context; - - rmp->sw_if_index_from = htonl (src_sw_if_index); - rmp->sw_if_index_to = htonl (*dst_sw_if_index); - - vl_msg_api_send_shmem (q, (u8 *) & rmp); - } - src_sw_if_index++; - } -} - -static void vl_api_pg_create_interface_t_handler (vl_api_pg_create_interface_t * mp) { vl_api_pg_create_interface_reply_t *rmp; diff --git a/vpp/vpp-api/custom_dump.c b/vpp/vpp-api/custom_dump.c index d0a8ecae..82195f60 100644 --- a/vpp/vpp-api/custom_dump.c +++ b/vpp/vpp-api/custom_dump.c @@ -2172,8 +2172,23 @@ static void *vl_api_sw_interface_span_enable_disable_t_print s = format (0, "SCRIPT: sw_interface_span_enable_disable "); s = format (s, "src_sw_if_index %u ", ntohl (mp->sw_if_index_from)); s = format (s, "dst_sw_if_index %u ", ntohl (mp->sw_if_index_to)); - if (!mp->enable) - s = format (s, "disable "); + + switch (mp->state) + { + case 0: + s = format (s, "disable "); + break; + case 1: + s = format (s, "rx "); + break; + case 2: + s = format (s, "tx "); + break; + case 3: + default: + s = format (s, "both "); + break; + } FINISH; } diff --git a/vpp/vpp-api/vpe.api b/vpp/vpp-api/vpe.api index 487ce3aa..6d20dabc 100644 --- a/vpp/vpp-api/vpe.api +++ b/vpp/vpp-api/vpe.api @@ -4633,49 +4633,6 @@ define flow_classify_details { u32 table_index; }; -/** \brief Enable/Disable span to mirror traffic from one interface to another - @param client_index - opaque cookie to identify the sender - @param context - sender context which was passed in the request - @param sw_if_index_from - interface to be mirorred - @param sw_if_index_to - interface where the traffic is mirrored - @param enable - 1 enable SPAN, 0 SPAN on given interface -*/ -define sw_interface_span_enable_disable{ - u32 client_index; - u32 context; - u32 sw_if_index_from; - u32 sw_if_index_to; - u8 enable; -}; - -/** \brief Reply to SPAN enable/disable request - @param context - sender context which was passed in the request -*/ -define sw_interface_span_enable_disable_reply { - u32 context; - i32 retval; -}; - -/** \brief SPAN dump request - @param client_index - opaque cookie to identify the sender - @param context - sender context, to match reply w/ request -*/ -define sw_interface_span_dump { - u32 client_index; - u32 context; -}; - -/** \brief Reply to SPAN dump request - @param context - sender context which was passed in the request - @param sw_if_index_from - mirorred interface - @param sw_if_index_to - interface where the traffic is mirrored -*/ -define sw_interface_span_details { - u32 context; - u32 sw_if_index_from; - u32 sw_if_index_to; -}; - /** \brief Query relative index via node names @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request |