diff --git a/router/network_router_status.go b/router/network_router_status.go new file mode 100644 index 00000000..1b56d3e6 --- /dev/null +++ b/router/network_router_status.go @@ -0,0 +1,43 @@ +package router + +import ( + "time" +) + +type NetworkRouterStatus struct { + *Status + Interface string + CaptureStats map[string]int + MACs []MACStatus +} + +type MACStatus struct { + Mac string + Name string + NickName string + LastSeen time.Time +} + +func NewNetworkRouterStatus(router *NetworkRouter) *NetworkRouterStatus { + return &NetworkRouterStatus{ + NewStatus(router.Router), + router.Bridge.String(), + router.Bridge.Stats(), + NewMACStatusSlice(router.Macs)} +} + +func NewMACStatusSlice(cache *MacCache) []MACStatus { + cache.RLock() + defer cache.RUnlock() + + var slice []MACStatus + for key, entry := range cache.table { + slice = append(slice, MACStatus{ + intmac(key).String(), + entry.peer.Name.String(), + entry.peer.NickName, + entry.lastSeen}) + } + + return slice +} diff --git a/router/status.go b/router/status.go index 776f359f..bb418d65 100644 --- a/router/status.go +++ b/router/status.go @@ -2,7 +2,6 @@ package router import ( "fmt" - "time" ) type Status struct { @@ -22,20 +21,6 @@ type Status struct { OverlayDiagnostics interface{} } -type NetworkRouterStatus struct { - *Status - Interface string - CaptureStats map[string]int - MACs []MACStatus -} - -type MACStatus struct { - Mac string - Name string - NickName string - LastSeen time.Time -} - type PeerStatus struct { Name string NickName string @@ -87,30 +72,6 @@ func NewStatus(router *Router) *Status { router.Overlay.Diagnostics()} } -func NewNetworkRouterStatus(router *NetworkRouter) *NetworkRouterStatus { - return &NetworkRouterStatus{ - NewStatus(router.Router), - router.Bridge.String(), - router.Bridge.Stats(), - NewMACStatusSlice(router.Macs)} -} - -func NewMACStatusSlice(cache *MacCache) []MACStatus { - cache.RLock() - defer cache.RUnlock() - - var slice []MACStatus - for key, entry := range cache.table { - slice = append(slice, MACStatus{ - intmac(key).String(), - entry.peer.Name.String(), - entry.peer.NickName, - entry.lastSeen}) - } - - return slice -} - func NewPeerStatusSlice(peers *Peers) []PeerStatus { var slice []PeerStatus