From 480ccb89e1ffa7bcaa10d3f8a62b08b72b77495b Mon Sep 17 00:00:00 2001 From: sandlbn Date: Mon, 13 Jun 2016 13:27:25 +0100 Subject: [PATCH] Added support for linux net interface fifo errors --- net/net.go | 13 ++++++++----- net/net_linux.go | 10 ++++++++++ net/net_test.go | 2 +- 3 files changed, 19 insertions(+), 6 deletions(-) diff --git a/net/net.go b/net/net.go index 60f1069..4d120dc 100644 --- a/net/net.go +++ b/net/net.go @@ -18,15 +18,18 @@ func init() { } type IOCountersStat struct { - Name string `json:"name"` // interface name + Name string `json:"name"` // interface name BytesSent uint64 `json:"bytesSent"` // number of bytes sent BytesRecv uint64 `json:"bytesRecv"` // number of bytes received PacketsSent uint64 `json:"packetsSent"` // number of packets sent PacketsRecv uint64 `json:"packetsRecv"` // number of packets received - Errin uint64 `json:"errin"` // total number of errors while receiving - Errout uint64 `json:"errout"` // total number of errors while sending - Dropin uint64 `json:"dropin"` // total number of incoming packets which were dropped - Dropout uint64 `json:"dropout"` // total number of outgoing packets which were dropped (always 0 on OSX and BSD) + Errin uint64 `json:"errin"` // total number of errors while receiving + Errout uint64 `json:"errout"` // total number of errors while sending + Dropin uint64 `json:"dropin"` // total number of incoming packets which were dropped + Dropout uint64 `json:"dropout"` // total number of outgoing packets which were dropped (always 0 on OSX and BSD) + Fifoin uint64 `json:"fifoin"` // total number of FIFO buffers errors while receiving + Fifoout uint64 `json:"fifoout"` // total number of FIFO buffers errors while sending + } // Addr is implemented compatibility to psutil diff --git a/net/net_linux.go b/net/net_linux.go index e024771..0803d8e 100644 --- a/net/net_linux.go +++ b/net/net_linux.go @@ -63,6 +63,10 @@ func IOCountersByFile(pernic bool, filename string) ([]IOCountersStat, error) { if err != nil { return ret, err } + fifoIn, err := strconv.ParseUint(fields[4], 10, 64) + if err != nil { + return ret, err + } bytesSent, err := strconv.ParseUint(fields[8], 10, 64) if err != nil { return ret, err @@ -79,6 +83,10 @@ func IOCountersByFile(pernic bool, filename string) ([]IOCountersStat, error) { if err != nil { return ret, err } + fifoOut, err := strconv.ParseUint(fields[14], 10, 64) + if err != nil { + return ret, err + } nic := IOCountersStat{ Name: interfaceName, @@ -86,10 +94,12 @@ func IOCountersByFile(pernic bool, filename string) ([]IOCountersStat, error) { PacketsRecv: packetsRecv, Errin: errIn, Dropin: dropIn, + Fifoin: fifoIn, BytesSent: bytesSent, PacketsSent: packetsSent, Errout: errOut, Dropout: dropOut, + Fifoout: fifoOut, } ret = append(ret, nic) } diff --git a/net/net_test.go b/net/net_test.go index 88748be..9ec87ad 100644 --- a/net/net_test.go +++ b/net/net_test.go @@ -23,7 +23,7 @@ func TestNetIOCountersStatString(t *testing.T) { Name: "test", BytesSent: 100, } - e := `{"name":"test","bytesSent":100,"bytesRecv":0,"packetsSent":0,"packetsRecv":0,"errin":0,"errout":0,"dropin":0,"dropout":0}` + e := `{"name":"test","bytesSent":100,"bytesRecv":0,"packetsSent":0,"packetsRecv":0,"errin":0,"errout":0,"dropin":0,"dropout":0,"fifoin":0,"fifoout":0}` if e != fmt.Sprintf("%v", v) { t.Errorf("NetIOCountersStat string is invalid: %v", v) }