diff options
-rw-r--r-- | adapter/vppapiclient/stat_client.go | 7 | ||||
-rw-r--r-- | core/stats.go | 6 |
2 files changed, 10 insertions, 3 deletions
diff --git a/adapter/vppapiclient/stat_client.go b/adapter/vppapiclient/stat_client.go index a2a9826..55705bd 100644 --- a/adapter/vppapiclient/stat_client.go +++ b/adapter/vppapiclient/stat_client.go @@ -285,10 +285,11 @@ func (c *statClient) DumpStats(patterns ...string) (stats []*adapter.StatEntry, var vector []adapter.Name for k := 0; k < length; k++ { s := C.govpp_stat_segment_data_get_name_vector_index(&v, C.int(k)) - if s == nil { - continue + var name adapter.Name + if s != nil { + name = adapter.Name(C.GoString(s)) } - vector = append(vector, adapter.Name(C.GoString(s))) + vector = append(vector, name) } stat.Data = adapter.NameStat(vector) diff --git a/core/stats.go b/core/stats.go index 4cbd9f2..48b516c 100644 --- a/core/stats.go +++ b/core/stats.go @@ -196,6 +196,9 @@ func (c *StatsConnection) GetNodeStats() (*api.NodeStats, error) { } } for i, v := range perNode { + if len(nodeStats.Nodes) <= i { + break + } nodeCounters := nodeStats.Nodes[i] fn(&nodeCounters, v) nodeStats.Nodes[i] = nodeCounters @@ -257,6 +260,9 @@ func (c *StatsConnection) GetInterfaceStats() (*api.InterfaceStats, error) { } } for i, v := range perIf { + if len(ifStats.Interfaces) <= i { + break + } ifCounters := ifStats.Interfaces[i] fn(&ifCounters, v) ifStats.Interfaces[i] = ifCounters |