diff options
author | Steven Luong <sluong@cisco.com> | 2019-11-12 19:45:49 -0800 |
---|---|---|
committer | Damjan Marion <dmarion@me.com> | 2019-12-13 22:28:55 +0000 |
commit | aa72578637e2a346ee845545b2e26aad83e12192 (patch) | |
tree | 4f27b494f38fd72fadc76428e86925d9e5caea25 /src/plugins/lacp/input.c | |
parent | 380e857830985e1b50257b39ba6045b829c833c1 (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.c | 10 |
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; } |