MCPcopy
hub / github.com/google/cadvisor / GetNetworkDevices

Function GetNetworkDevices

lib/utils/sysinfo/sysinfo.go:109–160  ·  view source on GitHub ↗

Get information about network devices present on the system.

(sysfs sysfs.SysFs)

Source from the content-addressed store, hash-verified

107
108// Get information about network devices present on the system.
109func GetNetworkDevices(sysfs sysfs.SysFs) ([]info.NetInfo, error) {
110 devs, err := sysfs.GetNetworkDevices()
111 if err != nil {
112 return nil, err
113 }
114 netDevices := []info.NetInfo{}
115 for _, dev := range devs {
116 name := dev.Name()
117 // Ignore docker, loopback, and veth devices.
118 ignoredDevices := []string{"lo", "veth", "docker", "nerdctl"}
119 ignored := false
120 for _, prefix := range ignoredDevices {
121 if strings.HasPrefix(name, prefix) {
122 ignored = true
123 break
124 }
125 }
126 if ignored {
127 continue
128 }
129 address, err := sysfs.GetNetworkAddress(name)
130 if err != nil {
131 return nil, err
132 }
133 mtuStr, err := sysfs.GetNetworkMtu(name)
134 if err != nil {
135 return nil, err
136 }
137 var mtu int64
138 n, err := fmt.Sscanf(mtuStr, "%d", &mtu)
139 if err != nil || n != 1 {
140 return nil, fmt.Errorf("could not parse mtu from %s for device %s", mtuStr, name)
141 }
142 netInfo := info.NetInfo{
143 Name: name,
144 MacAddress: strings.TrimSpace(address),
145 Mtu: mtu,
146 }
147 speed, err := sysfs.GetNetworkSpeed(name)
148 // Some devices don't set speed.
149 if err == nil {
150 var s int64
151 n, err := fmt.Sscanf(speed, "%d", &s)
152 if err != nil || n != 1 {
153 return nil, fmt.Errorf("could not parse speed from %s for device %s", speed, name)
154 }
155 netInfo.Speed = s
156 }
157 netDevices = append(netDevices, netInfo)
158 }
159 return netDevices, nil
160}
161
162// GetHugePagesInfo returns information about pre-allocated huge pages
163// hugepagesDirectory should be top directory of hugepages

Callers 3

InfoFunction · 0.92
TestGetNetworkDevicesFunction · 0.85

Calls 6

ErrorfMethod · 0.80
GetNetworkDevicesMethod · 0.65
NameMethod · 0.65
GetNetworkAddressMethod · 0.65
GetNetworkMtuMethod · 0.65
GetNetworkSpeedMethod · 0.65

Tested by 2

TestGetNetworkDevicesFunction · 0.68

Used in the wild real call sites across dependent graphs

searching dependent graphs…