summaryrefslogtreecommitdiffstats
path: root/src/plugins/lacp/input.c
diff options
context:
space:
mode:
authorSteven Luong <sluong@cisco.com>2019-11-12 19:45:49 -0800
committerDamjan Marion <dmarion@me.com>2019-12-13 22:28:55 +0000
commitaa72578637e2a346ee845545b2e26aad83e12192 (patch)
tree4f27b494f38fd72fadc76428e86925d9e5caea25 /src/plugins/lacp/input.c
parent380e857830985e1b50257b39ba6045b829c833c1 (diff)
bonding: Add /if/lacp/<bond-sw_if_index>/<slave-sw_if_index>/partner-state
We already had /if/lacp/<bond-sw_if_index>/<slave-sw_if_index>/state in the stats segment. Add also the partner-state to be complete. Change to populate stats segment with the states at startup, after processing an lacp pdu, and after timer expiration. Unit test --------- sudo vpp_get_stats dump | grep /if/lacp 63.00 /if/lacp/3/1/state 61.00 /if/lacp/3/1/partner-state 63.00 /if/lacp/3/2/state 61.00 /if/lacp/3/2/partner-state Type: feature Signed-off-by: Steven Luong <sluong@cisco.com> Change-Id: Ib7b8e1183d572bb6e422a846aaa2b7b3559a0dc7
Diffstat (limited to 'src/plugins/lacp/input.c')
-rw-r--r--src/plugins/lacp/input.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/plugins/lacp/input.c b/src/plugins/lacp/input.c
index befb2ed408b..ccefc20e7b2 100644
--- a/src/plugins/lacp/input.c
+++ b/src/plugins/lacp/input.c
@@ -16,6 +16,7 @@
#define _GNU_SOURCE
#include <vnet/bonding/node.h>
#include <lacp/node.h>
+#include <vpp/stats/stat_segment.h>
static int
lacp_packet_scan (vlib_main_t * vm, slave_if_t * sif)
@@ -136,12 +137,14 @@ handle_marker_protocol (vlib_main_t * vm, slave_if_t * sif)
lacp_error_t
lacp_input (vlib_main_t * vm, vlib_buffer_t * b0, u32 bi0)
{
+ bond_main_t *bm = &bond_main;
lacp_main_t *lm = &lacp_main;
slave_if_t *sif;
uword nbytes;
lacp_error_t e;
marker_pdu_t *marker;
uword last_packet_signature;
+ bond_if_t *bif;
sif =
bond_get_slave_by_sw_if_index (vnet_buffer (b0)->sw_if_index[VLIB_RX]);
@@ -214,6 +217,13 @@ lacp_input (vlib_main_t * vm, vlib_buffer_t * b0, u32 bi0)
{
/* Actually scan the packet */
e = lacp_packet_scan (vm, sif);
+ bif = bond_get_master_by_dev_instance (sif->bif_dev_instance);
+ stat_segment_set_state_counter (bm->stats[bif->sw_if_index]
+ [sif->sw_if_index].actor_state,
+ sif->actor.state);
+ stat_segment_set_state_counter (bm->stats[bif->sw_if_index]
+ [sif->sw_if_index].partner_state,
+ sif->partner.state);
sif->last_packet_signature_valid = 1;
sif->last_packet_signature = last_packet_signature;
}