Update net_openbsd.go to correctly parse netstat output on obsd. See #1441

pull/1621/head
Amarinder Cheema 11 months ago committed by GitHub
parent 0dd1ffdb6a
commit 6311a849df
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -23,9 +23,9 @@ func ParseNetstat(output string, mode string,
exists := make([]string, 0, len(lines)-1) exists := make([]string, 0, len(lines)-1)
columns := 6 columns := 9
if mode == "ind" { if mode == "inb" {
columns = 10 columns = 6
} }
for _, line := range lines { for _, line := range lines {
values := strings.Fields(line) values := strings.Fields(line)
@ -48,18 +48,23 @@ func ParseNetstat(output string, mode string,
parsed := make([]uint64, 0, 8) parsed := make([]uint64, 0, 8)
var vv []string var vv []string
if mode == "inb" { switch mode {
case "inb":
vv = []string{ vv = []string{
values[base+3], // BytesRecv values[base+3], // BytesRecv
values[base+4], // BytesSent values[base+4], // BytesSent
} }
} else { case "ind":
vv = []string{ vv = []string{
values[base+3], // Ipkts values[base+3], // Ipkts
values[base+4], // Ierrs values[base+4], // Idrop
values[base+5], // Opkts values[base+5], // Opkts
values[base+6], // Odrops
}
case "ine":
vv = []string{
values[base+4], // Ierrs
values[base+6], // Oerrs values[base+6], // Oerrs
values[base+8], // Drops
} }
} }
for _, target := range vv { for _, target := range vv {
@ -80,16 +85,19 @@ func ParseNetstat(output string, mode string,
if !present { if !present {
n = IOCountersStat{Name: values[0]} n = IOCountersStat{Name: values[0]}
} }
if mode == "inb" {
switch mode {
case "inb":
n.BytesRecv = parsed[0] n.BytesRecv = parsed[0]
n.BytesSent = parsed[1] n.BytesSent = parsed[1]
} else { case "ind":
n.PacketsRecv = parsed[0] n.PacketsRecv = parsed[0]
n.Errin = parsed[1] n.Dropin = parsed[1]
n.PacketsSent = parsed[2] n.PacketsSent = parsed[2]
n.Errout = parsed[3] n.Dropout = parsed[3]
n.Dropin = parsed[4] case "ine":
n.Dropout = parsed[4] n.Errin = parsed[0]
n.Errout = parsed[1]
} }
iocs[n.Name] = n iocs[n.Name] = n
@ -114,6 +122,10 @@ func IOCountersWithContext(ctx context.Context, pernic bool) ([]IOCountersStat,
if err != nil { if err != nil {
return nil, err return nil, err
} }
out3, err := invoke.CommandWithContext(ctx, netstat, "-ine")
if err != nil {
return nil, err
}
iocs := make(map[string]IOCountersStat) iocs := make(map[string]IOCountersStat)
lines := strings.Split(string(out), "\n") lines := strings.Split(string(out), "\n")
@ -127,6 +139,10 @@ func IOCountersWithContext(ctx context.Context, pernic bool) ([]IOCountersStat,
if err != nil { if err != nil {
return nil, err return nil, err
} }
err = ParseNetstat(string(out3), "ine", iocs)
if err != nil {
return nil, err
}
for _, ioc := range iocs { for _, ioc := range iocs {
ret = append(ret, ioc) ret = append(ret, ioc)

Loading…
Cancel
Save