From 09aff7cb9204cbcf49d2535a775cc83f2d93a566 Mon Sep 17 00:00:00 2001 From: Jihoon Chung Date: Mon, 16 Feb 2015 13:53:40 +0900 Subject: [PATCH] Filter out non-netdev entries in sysfs/class/net --- utils/sysfs/sysfs.go | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/utils/sysfs/sysfs.go b/utils/sysfs/sysfs.go index 6f5d395d..61b19db5 100644 --- a/utils/sysfs/sysfs.go +++ b/utils/sysfs/sysfs.go @@ -98,7 +98,25 @@ func (self *realSysFs) GetBlockDeviceSize(name string) (string, error) { } func (self *realSysFs) GetNetworkDevices() ([]os.FileInfo, error) { - return ioutil.ReadDir(netDir) + files, err := ioutil.ReadDir(netDir) + if err != nil { + return nil, err + } + + // Filter out non-directory & non-symlink files + var dirs []os.FileInfo + for _, f := range files { + if f.Mode()|os.ModeSymlink != 0 { + f, err = os.Stat(path.Join(netDir, f.Name())) + if err != nil { + continue + } + } + if f.IsDir() { + dirs = append(dirs, f) + } + } + return dirs, nil } func (self *realSysFs) GetNetworkAddress(name string) (string, error) {