summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--MAINTAINERS5
-rw-r--r--extras/vom/vom/interface_span_cmds.cpp14
-rw-r--r--src/vnet/span/span.api30
-rw-r--r--src/vnet/span/span_api.c6
4 files changed, 33 insertions, 22 deletions
diff --git a/MAINTAINERS b/MAINTAINERS
index ab317fd7e0c..d0abdffd7ad 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -185,6 +185,11 @@ I: teib
M: Neale Ranns <nranns@cisco.com>
F: src/vnet/teib/
+VNET SPAN
+I: span
+M: N/A
+F: src/vnet/span
+
Crypto native Plugin
I: crypto-native
M: Damjan Marion <damarion@cisco.com>
diff --git a/extras/vom/vom/interface_span_cmds.cpp b/extras/vom/vom/interface_span_cmds.cpp
index 72bd6100bc0..00dbdd0b895 100644
--- a/extras/vom/vom/interface_span_cmds.cpp
+++ b/extras/vom/vom/interface_span_cmds.cpp
@@ -28,8 +28,7 @@ config_cmd::config_cmd(HW::item<bool>& item,
, m_itf_from(itf_from)
, m_itf_to(itf_to)
, m_state(state)
-{
-}
+{}
bool
config_cmd::operator==(const config_cmd& o) const
@@ -47,7 +46,7 @@ config_cmd::issue(connection& con)
payload.is_l2 = 0;
payload.sw_if_index_from = m_itf_from.value();
payload.sw_if_index_to = m_itf_to.value();
- payload.state = m_state.value();
+ payload.state = (vapi_enum_span_state)m_state.value();
VAPI_CALL(req.execute());
@@ -71,8 +70,7 @@ unconfig_cmd::unconfig_cmd(HW::item<bool>& item,
: rpc_cmd(item)
, m_itf_from(itf_from)
, m_itf_to(itf_to)
-{
-}
+{}
bool
unconfig_cmd::operator==(const unconfig_cmd& o) const
@@ -89,7 +87,7 @@ unconfig_cmd::issue(connection& con)
payload.is_l2 = 0;
payload.sw_if_index_from = m_itf_from.value();
payload.sw_if_index_to = m_itf_to.value();
- payload.state = 0;
+ payload.state = SPAN_STATE_API_DISABLED;
VAPI_CALL(req.execute());
@@ -110,9 +108,7 @@ unconfig_cmd::to_string() const
return (s.str());
}
-dump_cmd::dump_cmd()
-{
-}
+dump_cmd::dump_cmd() {}
bool
dump_cmd::operator==(const dump_cmd& other) const
diff --git a/src/vnet/span/span.api b/src/vnet/span/span.api
index 90812438105..95d5ad11c36 100644
--- a/src/vnet/span/span.api
+++ b/src/vnet/span/span.api
@@ -14,7 +14,17 @@
* limitations under the License.
*/
-option version = "1.0.0";
+option version = "2.0.0";
+
+import "vnet/interface_types.api";
+
+enum span_state
+{
+ SPAN_STATE_API_DISABLED = 0,
+ SPAN_STATE_API_RX = 1,
+ SPAN_STATE_API_TX = 2,
+ SPAN_STATE_API_RX_TX = 3,
+};
/** \brief Enable/Disable span to mirror traffic from one interface to another
@param client_index - opaque cookie to identify the sender
@@ -27,10 +37,10 @@ option version = "1.0.0";
autoreply define sw_interface_span_enable_disable {
u32 client_index;
u32 context;
- u32 sw_if_index_from;
- u32 sw_if_index_to;
- u8 state;
- u8 is_l2;
+ vl_api_interface_index_t sw_if_index_from;
+ vl_api_interface_index_t sw_if_index_to;
+ vl_api_span_state_t state;
+ bool is_l2;
};
/** \brief SPAN dump request
@@ -41,7 +51,7 @@ autoreply define sw_interface_span_enable_disable {
define sw_interface_span_dump {
u32 client_index;
u32 context;
- u8 is_l2;
+ bool is_l2;
};
/** \brief Reply to SPAN dump request
@@ -53,8 +63,8 @@ define sw_interface_span_dump {
*/
define sw_interface_span_details {
u32 context;
- u32 sw_if_index_from;
- u32 sw_if_index_to;
- u8 state;
- u8 is_l2;
+ vl_api_interface_index_t sw_if_index_from;
+ vl_api_interface_index_t sw_if_index_to;
+ vl_api_span_state_t state;
+ bool is_l2;
};
diff --git a/src/vnet/span/span_api.c b/src/vnet/span/span_api.c
index 6ed58cd8b6b..dacbe2e0aa9 100644
--- a/src/vnet/span/span_api.c
+++ b/src/vnet/span/span_api.c
@@ -56,7 +56,7 @@ static void
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->state,
+ ntohl (mp->sw_if_index_to), ntohl (mp->state),
mp->is_l2 ? SPAN_FEAT_L2 : SPAN_FEAT_DEVICE);
REPLY_MACRO (VL_API_SW_INTERFACE_SPAN_ENABLE_DISABLE_REPLY);
@@ -95,8 +95,8 @@ vl_api_sw_interface_span_dump_t_handler (vl_api_sw_interface_span_dump_t * mp)
rmp->sw_if_index_from = htonl (si - sm->interfaces);
rmp->sw_if_index_to = htonl (i);
- rmp->state = (u8) (clib_bitmap_get (rxm->mirror_ports, i) +
- clib_bitmap_get (txm->mirror_ports, i) * 2);
+ rmp->state = htonl ((clib_bitmap_get (rxm->mirror_ports, i) +
+ clib_bitmap_get (txm->mirror_ports, i) * 2));
rmp->is_l2 = mp->is_l2;
vl_api_send_msg (reg, (u8 *) rmp);