Merge pull request #1283 from weaveworks/1185_report_pcap_stats
add pcap stats to `weave report`
This commit is contained in:
commit
c2147f80b7
3 files changed
+21
No files matched your search
@@ -84,3 +84,15 @@ func (pio *PcapIO) ReadPacket() (data []byte, err error) {
|
||||
func (pio *PcapIO) WritePacket(data []byte) error {
|
||||
return pio.handle.WritePacketData(data)
|
||||
}
|
||||
|
||||
func (pio *PcapIO) Stats() map[string]int {
|
||||
stats, err := pio.handle.Stats()
|
||||
if err != nil {
|
||||
return nil
|
||||
}
|
||||
res := make(map[string]int)
|
||||
res["PacketsReceived"] = stats.PacketsReceived
|
||||
res["PacketsDropped"] = stats.PacketsDropped
|
||||
res["PacketsIfDropped"] = stats.PacketsIfDropped
|
||||
return res
|
||||
}
|
||||
@@ -47,12 +47,14 @@ type Router struct {
|
||||
gossipLock sync.RWMutex
|
||||
gossipChannels GossipChannels
|
||||
TopologyGossip Gossip
|
||||
PacketSource PacketSource
|
||||
UDPListener *net.UDPConn
|
||||
acceptLimiter *TokenBucket
|
||||
}
|
||||
|
||||
type PacketSource interface {
|
||||
ReadPacket() ([]byte, error)
|
||||
Stats() map[string]int
|
||||
}
|
||||
|
||||
type PacketSink interface {
|
||||
@@ -102,6 +104,7 @@ func (router *Router) Start() {
|
||||
router.UDPListener = router.listenUDP(router.Port, po)
|
||||
router.listenTCP(router.Port)
|
||||
if pio != nil {
|
||||
router.PacketSource = pio
|
||||
router.sniff(pio)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,6 +14,7 @@ type Status struct {
|
||||
NickName string
|
||||
Port int
|
||||
Interface string
|
||||
CaptureStats map[string]int
|
||||
MACs []MACStatus
|
||||
Peers []PeerStatus
|
||||
UnicastRoutes []UnicastRouteStatus
|
||||
@@ -66,6 +67,10 @@ func NewStatus(router *Router) *Status {
|
||||
if router.Iface != nil {
|
||||
ifaceName = router.Iface.Name
|
||||
}
|
||||
var captureStats map[string]int
|
||||
if router.PacketSource != nil {
|
||||
captureStats = router.PacketSource.Stats()
|
||||
}
|
||||
return &Status{
|
||||
Protocol,
|
||||
ProtocolMinVersion,
|
||||
@@ -76,6 +81,7 @@ func NewStatus(router *Router) *Status {
|
||||
router.Ourself.NickName,
|
||||
router.Port,
|
||||
ifaceName,
|
||||
captureStats,
|
||||
NewMACStatusSlice(router.Macs),
|
||||
NewPeerStatusSlice(router.Peers),
|
||||
NewUnicastRouteStatusSlice(router.Routes),
|
||||
|
||||
Reference in new issue
Block a user