From 3780075bad6a916b2cca7702b90de324e3d1e61e Mon Sep 17 00:00:00 2001 From: Rohit Jnagal Date: Wed, 14 Jan 2015 22:28:59 +0000 Subject: [PATCH] Handle root network device names other than eth. New logic ignores veth, docker, and loopback devices. --- utils/sysfs/fakesysfs/fake.go | 5 ++++- utils/sysinfo/sysinfo.go | 12 ++++++++++-- utils/sysinfo/sysinfo_test.go | 16 ++++++++++++++++ 3 files changed, 30 insertions(+), 3 deletions(-) diff --git a/utils/sysfs/fakesysfs/fake.go b/utils/sysfs/fakesysfs/fake.go index 3738c3de..cc8b4a01 100644 --- a/utils/sysfs/fakesysfs/fake.go +++ b/utils/sysfs/fakesysfs/fake.go @@ -69,7 +69,6 @@ func (self *FakeSysFs) GetBlockDeviceNumbers(name string) (string, error) { } func (self *FakeSysFs) GetNetworkDevices() ([]os.FileInfo, error) { - self.info.EntryName = "eth0" return []os.FileInfo{&self.info}, nil } @@ -101,3 +100,7 @@ func (self *FakeSysFs) GetCacheInfo(cpu int, cache string) (sysfs.CacheInfo, err func (self *FakeSysFs) SetCacheInfo(cache sysfs.CacheInfo) { self.cache = cache } + +func (self *FakeSysFs) SetEntryName(name string) { + self.info.EntryName = name +} diff --git a/utils/sysinfo/sysinfo.go b/utils/sysinfo/sysinfo.go index fac863d4..55d97a28 100644 --- a/utils/sysinfo/sysinfo.go +++ b/utils/sysinfo/sysinfo.go @@ -77,8 +77,16 @@ func GetNetworkDevices(sysfs sysfs.SysFs) ([]info.NetInfo, error) { netDevices := []info.NetInfo{} for _, dev := range devs { name := dev.Name() - // Only consider ethernet devices for now. - if !strings.HasPrefix(name, "eth") { + // Ignore docker, loopback, and veth devices. + ignoredDevices := []string{"lo", "veth", "docker"} + ignored := false + for _, prefix := range ignoredDevices { + if strings.HasPrefix(name, prefix) { + ignored = true + break + } + } + if ignored { continue } address, err := sysfs.GetNetworkAddress(name) diff --git a/utils/sysinfo/sysinfo_test.go b/utils/sysinfo/sysinfo_test.go index babe955b..965fde79 100644 --- a/utils/sysinfo/sysinfo_test.go +++ b/utils/sysinfo/sysinfo_test.go @@ -47,6 +47,7 @@ func TestGetBlockDeviceInfo(t *testing.T) { func TestGetNetworkDevices(t *testing.T) { fakeSys := fakesysfs.FakeSysFs{} + fakeSys.SetEntryName("eth0") devs, err := GetNetworkDevices(&fakeSys) if err != nil { t.Errorf("expected call to GetNetworkDevices() to succeed. Failed with %s", err) @@ -69,6 +70,21 @@ func TestGetNetworkDevices(t *testing.T) { } } +func TestIgnoredNetworkDevices(t *testing.T) { + fakeSys := fakesysfs.FakeSysFs{} + ignoredDevices := []string{"veth1234", "lo", "docker0"} + for _, name := range ignoredDevices { + fakeSys.SetEntryName(name) + devs, err := GetNetworkDevices(&fakeSys) + if err != nil { + t.Errorf("expected call to GetNetworkDevices() to succeed. Failed with %s", err) + } + if len(devs) != 0 { + t.Errorf("expected dev %s to be ignored, but got info %+v", name, devs) + } + } +} + func TestGetCacheInfo(t *testing.T) { fakeSys := &fakesysfs.FakeSysFs{} cacheInfo := sysfs.CacheInfo{