Get information about network devices present on the system.
(sysfs sysfs.SysFs)
| 107 | |
| 108 | // Get information about network devices present on the system. |
| 109 | func 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 |
searching dependent graphs…