update procfs to v0.0.4 (#1457)
Signed-off-by: Paul Gier <pgier@redhat.com>
This commit is contained in:
parent
154d59dee7
commit
0b7ac85acb
8 changed files with 1514 additions and 174 deletions
171
vendor/github.com/prometheus/procfs/sysfs/net_class.go
generated
vendored
171
vendor/github.com/prometheus/procfs/sysfs/net_class.go
generated
vendored
|
|
@ -18,11 +18,7 @@ package sysfs
|
|||
import (
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"reflect"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"github.com/prometheus/procfs/internal/util"
|
||||
)
|
||||
|
|
@ -33,32 +29,32 @@ const netclassPath = "class/net"
|
|||
// for single interface (iface).
|
||||
type NetClassIface struct {
|
||||
Name string // Interface name
|
||||
AddrAssignType *int64 `fileName:"addr_assign_type"` // /sys/class/net/<iface>/addr_assign_type
|
||||
AddrLen *int64 `fileName:"addr_len"` // /sys/class/net/<iface>/addr_len
|
||||
Address string `fileName:"address"` // /sys/class/net/<iface>/address
|
||||
Broadcast string `fileName:"broadcast"` // /sys/class/net/<iface>/broadcast
|
||||
Carrier *int64 `fileName:"carrier"` // /sys/class/net/<iface>/carrier
|
||||
CarrierChanges *int64 `fileName:"carrier_changes"` // /sys/class/net/<iface>/carrier_changes
|
||||
CarrierUpCount *int64 `fileName:"carrier_up_count"` // /sys/class/net/<iface>/carrier_up_count
|
||||
CarrierDownCount *int64 `fileName:"carrier_down_count"` // /sys/class/net/<iface>/carrier_down_count
|
||||
DevID *int64 `fileName:"dev_id"` // /sys/class/net/<iface>/dev_id
|
||||
Dormant *int64 `fileName:"dormant"` // /sys/class/net/<iface>/dormant
|
||||
Duplex string `fileName:"duplex"` // /sys/class/net/<iface>/duplex
|
||||
Flags *int64 `fileName:"flags"` // /sys/class/net/<iface>/flags
|
||||
IfAlias string `fileName:"ifalias"` // /sys/class/net/<iface>/ifalias
|
||||
IfIndex *int64 `fileName:"ifindex"` // /sys/class/net/<iface>/ifindex
|
||||
IfLink *int64 `fileName:"iflink"` // /sys/class/net/<iface>/iflink
|
||||
LinkMode *int64 `fileName:"link_mode"` // /sys/class/net/<iface>/link_mode
|
||||
MTU *int64 `fileName:"mtu"` // /sys/class/net/<iface>/mtu
|
||||
NameAssignType *int64 `fileName:"name_assign_type"` // /sys/class/net/<iface>/name_assign_type
|
||||
NetDevGroup *int64 `fileName:"netdev_group"` // /sys/class/net/<iface>/netdev_group
|
||||
OperState string `fileName:"operstate"` // /sys/class/net/<iface>/operstate
|
||||
PhysPortID string `fileName:"phys_port_id"` // /sys/class/net/<iface>/phys_port_id
|
||||
PhysPortName string `fileName:"phys_port_name"` // /sys/class/net/<iface>/phys_port_name
|
||||
PhysSwitchID string `fileName:"phys_switch_id"` // /sys/class/net/<iface>/phys_switch_id
|
||||
Speed *int64 `fileName:"speed"` // /sys/class/net/<iface>/speed
|
||||
TxQueueLen *int64 `fileName:"tx_queue_len"` // /sys/class/net/<iface>/tx_queue_len
|
||||
Type *int64 `fileName:"type"` // /sys/class/net/<iface>/type
|
||||
AddrAssignType *int64 // /sys/class/net/<iface>/addr_assign_type
|
||||
AddrLen *int64 // /sys/class/net/<iface>/addr_len
|
||||
Address string // /sys/class/net/<iface>/address
|
||||
Broadcast string // /sys/class/net/<iface>/broadcast
|
||||
Carrier *int64 // /sys/class/net/<iface>/carrier
|
||||
CarrierChanges *int64 // /sys/class/net/<iface>/carrier_changes
|
||||
CarrierUpCount *int64 // /sys/class/net/<iface>/carrier_up_count
|
||||
CarrierDownCount *int64 // /sys/class/net/<iface>/carrier_down_count
|
||||
DevID *int64 // /sys/class/net/<iface>/dev_id
|
||||
Dormant *int64 // /sys/class/net/<iface>/dormant
|
||||
Duplex string // /sys/class/net/<iface>/duplex
|
||||
Flags *int64 // /sys/class/net/<iface>/flags
|
||||
IfAlias string // /sys/class/net/<iface>/ifalias
|
||||
IfIndex *int64 // /sys/class/net/<iface>/ifindex
|
||||
IfLink *int64 // /sys/class/net/<iface>/iflink
|
||||
LinkMode *int64 // /sys/class/net/<iface>/link_mode
|
||||
MTU *int64 // /sys/class/net/<iface>/mtu
|
||||
NameAssignType *int64 // /sys/class/net/<iface>/name_assign_type
|
||||
NetDevGroup *int64 // /sys/class/net/<iface>/netdev_group
|
||||
OperState string // /sys/class/net/<iface>/operstate
|
||||
PhysPortID string // /sys/class/net/<iface>/phys_port_id
|
||||
PhysPortName string // /sys/class/net/<iface>/phys_port_name
|
||||
PhysSwitchID string // /sys/class/net/<iface>/phys_switch_id
|
||||
Speed *int64 // /sys/class/net/<iface>/speed
|
||||
TxQueueLen *int64 // /sys/class/net/<iface>/tx_queue_len
|
||||
Type *int64 // /sys/class/net/<iface>/type
|
||||
}
|
||||
|
||||
// NetClass is collection of info for every interface (iface) in /sys/class/net. The map keys
|
||||
|
|
@ -109,54 +105,77 @@ func (fs FS) NetClass() (NetClass, error) {
|
|||
// directory and gets their contents.
|
||||
func (nc NetClass) parseNetClassIface(devicePath string) (*NetClassIface, error) {
|
||||
interfaceClass := NetClassIface{}
|
||||
interfaceElem := reflect.ValueOf(&interfaceClass).Elem()
|
||||
interfaceType := reflect.TypeOf(interfaceClass)
|
||||
|
||||
//start from 1 - skip the Name field
|
||||
for i := 1; i < interfaceElem.NumField(); i++ {
|
||||
fieldType := interfaceType.Field(i)
|
||||
fieldValue := interfaceElem.Field(i)
|
||||
|
||||
if fieldType.Tag.Get("fileName") == "" {
|
||||
panic(fmt.Errorf("field %s does not have a filename tag", fieldType.Name))
|
||||
}
|
||||
|
||||
value, err := util.SysReadFile(devicePath + "/" + fieldType.Tag.Get("fileName"))
|
||||
|
||||
if err != nil {
|
||||
if os.IsNotExist(err) || err.Error() == "operation not supported" || err.Error() == "invalid argument" {
|
||||
continue
|
||||
}
|
||||
return nil, fmt.Errorf("could not access file %s: %s", fieldType.Tag.Get("fileName"), err)
|
||||
}
|
||||
|
||||
switch fieldValue.Kind() {
|
||||
case reflect.String:
|
||||
fieldValue.SetString(value)
|
||||
case reflect.Ptr:
|
||||
var int64ptr *int64
|
||||
switch fieldValue.Type() {
|
||||
case reflect.TypeOf(int64ptr):
|
||||
var intValue int64
|
||||
if strings.HasPrefix(value, "0x") {
|
||||
intValue, err = strconv.ParseInt(value[2:], 16, 64)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("expected hex value for %s, got: %s", fieldType.Name, value)
|
||||
}
|
||||
} else {
|
||||
intValue, err = strconv.ParseInt(value, 10, 64)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("expected Uint64 value for %s, got: %s", fieldType.Name, value)
|
||||
}
|
||||
}
|
||||
fieldValue.Set(reflect.ValueOf(&intValue))
|
||||
default:
|
||||
return nil, fmt.Errorf("unhandled pointer type %q", fieldValue.Type())
|
||||
}
|
||||
default:
|
||||
return nil, fmt.Errorf("unhandled type %q", fieldValue.Kind())
|
||||
}
|
||||
files, err := ioutil.ReadDir(devicePath)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
for _, f := range files {
|
||||
if f.IsDir() {
|
||||
continue
|
||||
}
|
||||
name := filepath.Join(devicePath, f.Name())
|
||||
value, err := util.SysReadFile(name)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to read file %q: %v", name, err)
|
||||
}
|
||||
vp := util.NewValueParser(value)
|
||||
switch f.Name() {
|
||||
case "addr_assign_type":
|
||||
interfaceClass.AddrAssignType = vp.PInt64()
|
||||
case "addr_len":
|
||||
interfaceClass.AddrLen = vp.PInt64()
|
||||
case "address":
|
||||
interfaceClass.Address = value
|
||||
case "broadcast":
|
||||
interfaceClass.Broadcast = value
|
||||
case "carrier":
|
||||
interfaceClass.Carrier = vp.PInt64()
|
||||
case "carrier_changes":
|
||||
interfaceClass.CarrierChanges = vp.PInt64()
|
||||
case "carrier_up_count":
|
||||
interfaceClass.CarrierUpCount = vp.PInt64()
|
||||
case "carrier_down_count":
|
||||
interfaceClass.CarrierDownCount = vp.PInt64()
|
||||
case "dev_id":
|
||||
interfaceClass.DevID = vp.PInt64()
|
||||
case "dormant":
|
||||
interfaceClass.Dormant = vp.PInt64()
|
||||
case "duplex":
|
||||
interfaceClass.Duplex = value
|
||||
case "flags":
|
||||
interfaceClass.Flags = vp.PInt64()
|
||||
case "ifalias":
|
||||
interfaceClass.IfAlias = value
|
||||
case "ifindex":
|
||||
interfaceClass.IfIndex = vp.PInt64()
|
||||
case "iflink":
|
||||
interfaceClass.IfLink = vp.PInt64()
|
||||
case "link_mode":
|
||||
interfaceClass.LinkMode = vp.PInt64()
|
||||
case "mtu":
|
||||
interfaceClass.MTU = vp.PInt64()
|
||||
case "name_assign_type":
|
||||
interfaceClass.NameAssignType = vp.PInt64()
|
||||
case "netdev_group":
|
||||
interfaceClass.NetDevGroup = vp.PInt64()
|
||||
case "operstate":
|
||||
interfaceClass.OperState = value
|
||||
case "phys_port_id":
|
||||
interfaceClass.PhysPortID = value
|
||||
case "phys_port_name":
|
||||
interfaceClass.PhysPortName = value
|
||||
case "phys_switch_id":
|
||||
interfaceClass.PhysSwitchID = value
|
||||
case "speed":
|
||||
interfaceClass.Speed = vp.PInt64()
|
||||
case "tx_queue_len":
|
||||
interfaceClass.TxQueueLen = vp.PInt64()
|
||||
case "type":
|
||||
interfaceClass.Type = vp.PInt64()
|
||||
}
|
||||
}
|
||||
return &interfaceClass, nil
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue