func net_stats(par string) { if par == "bw" { common.PrintStats() return } else if par != "" { node_info(par) return } network.Mutex_net.Lock() fmt.Printf("%d active net connections, %d outgoing\n", len(network.OpenCons), network.OutConsActive) srt := make(network.SortedKeys, len(network.OpenCons)) cnt := 0 for k, v := range network.OpenCons { srt[cnt].Key = k srt[cnt].ConnID = v.ConnID cnt++ } sort.Sort(srt) for idx := range srt { v := network.OpenCons[srt[idx].Key] v.Mutex.Lock() fmt.Printf("%8d) ", v.ConnID) if v.Incomming { fmt.Print("<- ") } else { fmt.Print(" ->") } fmt.Printf(" %21s %5dms %7d : %-16s %7d : %-16s", v.PeerAddr.Ip(), v.GetAveragePing(), v.LastBtsRcvd, v.LastCmdRcvd, v.LastBtsSent, v.LastCmdSent) if (v.BytesReceived | v.BytesSent) != 0 { fmt.Printf("%9s %9s", common.BytesToString(v.BytesReceived), common.BytesToString(v.BytesSent)) } fmt.Print(" ", v.Node.Agent) if v.Send.Buf != nil { fmt.Print(" ", len(v.Send.Buf)) } v.Mutex.Unlock() fmt.Println() } if network.ExternalAddrLen() > 0 { fmt.Print("External addresses:") network.ExternalIpMutex.Lock() for ip, cnt := range network.ExternalIp4 { fmt.Printf(" %d.%d.%d.%d(%d)", byte(ip>>24), byte(ip>>16), byte(ip>>8), byte(ip), cnt) } network.ExternalIpMutex.Unlock() fmt.Println() } else { fmt.Println("No known external address") } network.Mutex_net.Unlock() common.PrintStats() }
func net_stats(par string) { if par == "bw" { common.PrintStats() return } else if par != "" { node_info(par) return } network.Mutex_net.Lock() fmt.Printf("%d active net connections, %d outgoing\n", len(network.OpenCons), network.OutConsActive) srt := make(SortedKeys, len(network.OpenCons)) cnt := 0 for k, v := range network.OpenCons { srt[cnt].Key = k srt[cnt].ConnID = v.ConnID cnt++ } sort.Sort(srt) for idx := range srt { v := network.OpenCons[srt[idx].Key] v.Mutex.Lock() fmt.Printf("%8d) ", v.ConnID) if v.X.Incomming { fmt.Print("<- ") } else { fmt.Print(" ->") } fmt.Printf(" %21s %5dms %7d : %-16s %7d : %-16s", v.PeerAddr.Ip(), v.GetAveragePing(), v.X.LastBtsRcvd, v.X.LastCmdRcvd, v.X.LastBtsSent, v.X.LastCmdSent) fmt.Printf("%9s %9s", common.BytesToString(v.X.Counters["BytesReceived"]), common.BytesToString(v.X.Counters["BytesSent"])) fmt.Print(" ", v.Node.Agent) if b2s := v.BytesToSent(); b2s > 0 { fmt.Print(" ", b2s) } v.Mutex.Unlock() fmt.Println() } if network.ExternalAddrLen() > 0 { fmt.Print("External addresses:") network.ExternalIpMutex.Lock() for ip, cnt := range network.ExternalIp4 { fmt.Printf(" %d.%d.%d.%d(%d)", byte(ip>>24), byte(ip>>16), byte(ip>>8), byte(ip), cnt) } network.ExternalIpMutex.Unlock() fmt.Println() } else { fmt.Println("No known external address") } network.Mutex_net.Unlock() fmt.Print("RecentlyDisconencted:") network.HammeringMutex.Lock() for ip, ti := range network.RecentlyDisconencted { fmt.Printf(" %d.%d.%d.%d-%s", ip[0], ip[1], ip[2], ip[3], time.Now().Sub(ti).String()) } network.HammeringMutex.Unlock() fmt.Println() common.PrintStats() }