diff --git a/router/fastdp.go b/router/fastdp.go index b4e7eeff..571fb10c 100644 --- a/router/fastdp.go +++ b/router/fastdp.go @@ -40,6 +40,7 @@ type FastDatapath struct { dpif *odp.Dpif dp odp.DatapathHandle deleteFlowsCount uint64 + missCount uint64 missHandlers map[odp.VportID]missHandler localPeer *mesh.Peer peers *mesh.Peers @@ -216,8 +217,13 @@ func (fastdp fastDatapathBridge) String() string { return fmt.Sprint(fastdp.dpname, " (via ODP)") } -func (fastDatapathBridge) Stats() map[string]int { - return nil +func (fastdp fastDatapathBridge) Stats() map[string]int { + lock := fastdp.startLock() + defer lock.unlock() + + return map[string]int{ + "FlowMisses": int(fastdp.missCount), + } } var routerBridgePortID = bridgePortID{router: true} @@ -937,6 +943,8 @@ func (fastdp *FastDatapath) Miss(packet []byte, fks odp.FlowKeys) error { lock := fastdp.startLock() defer lock.unlock() + fastdp.missCount++ + handler := fastdp.getMissHandler(ingress) if handler == nil { return nil