diff options
Diffstat (limited to 'extras/vom/vom/stat_reader.cpp')
-rw-r--r-- | extras/vom/vom/stat_reader.cpp | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/extras/vom/vom/stat_reader.cpp b/extras/vom/vom/stat_reader.cpp index 931d0888f71..82e09aedce0 100644 --- a/extras/vom/vom/stat_reader.cpp +++ b/extras/vom/vom/stat_reader.cpp @@ -61,7 +61,7 @@ stat_reader::unregisters(const interface& intf) void stat_reader::read() { - stat_client::stat_data_vec_t sd = m_client.dump(); + const stat_client::stat_data_vec_t& sd = m_client.dump(); for (auto& sde : sd) { std::string name; @@ -74,28 +74,29 @@ stat_reader::read() case STAT_DIR_TYPE_COUNTER_VECTOR_SIMPLE: case STAT_DIR_TYPE_ERROR_INDEX: case STAT_DIR_TYPE_SCALAR_INDEX: + case STAT_DIR_TYPE_ILLEGAL: break; - case STAT_DIR_TYPE_COUNTER_VECTOR_COMBINED: + case STAT_DIR_TYPE_COUNTER_VECTOR_COMBINED: { + vlib_counter_t** data; + + data = sde.get_stat_segment_combined_counter_data(); + if (name.find("/if") != std::string::npos) name.erase(0, 4); for (auto& i : m_stat_itf_indexes) { - counter_t count = {.packets = 0, .bytes = 0 }; - for (int k = 0; k < m_client.vec_len( - sde.get_stat_segment_combined_counter_data()); - k++) { - count.packets += - sde.get_stat_segment_combined_counter_data()[k][i].packets; - count.bytes += - sde.get_stat_segment_combined_counter_data()[k][i].bytes; + counter_t count; + + for (int k = 0; k < m_client.vec_len(data); k++) { + count.packets += data[k][i].packets; + count.bytes += data[k][i].bytes; } std::shared_ptr<interface> itf = interface::find(i); if (itf) itf->set(count, name); } break; - - default:; + } } } |