Skip to content

Commit 0ec98d1

Browse files
committed
fix: failed list netns when /var/run/netns not exist
Signed-off-by: tianyang ni <[email protected]>
1 parent 47cf41d commit 0ec98d1

File tree

2 files changed

+13
-6
lines changed

2 files changed

+13
-6
lines changed

cmd/iftree/main.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,10 @@ func main() {
9595
if err != nil {
9696
log.Fatal(err)
9797
}
98+
if len(netNsMap) == 0 {
99+
log.Warn("no netns found")
100+
os.Exit(0)
101+
}
98102
log.Debugf("net namespace id <-> name map:\n%+v\n", netNsMap)
99103
ll, err := netlink.LinkList()
100104
if err != nil {

pkg/netutil/netutil_linux.go

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -44,20 +44,23 @@ func NsidFromPath(path string) (int, error) {
4444
}
4545

4646
func listNetNsPath() ([]string, error) {
47+
var ns []string
48+
4749
// https://man7.org/linux/man-pages/man8/ip-netns.8.html
4850
path := "/var/run/netns"
4951
es, err := os.ReadDir(path)
50-
if err != nil {
52+
if err != nil && !os.IsNotExist(err) {
5153
return nil, err
54+
} else {
55+
for _, e := range es {
56+
ns = append(ns, filepath.Join(path, e.Name()))
57+
}
5258
}
53-
var ns []string
54-
for _, e := range es {
55-
ns = append(ns, filepath.Join(path, e.Name()))
56-
}
59+
5760
// default docker dir
5861
dockerPath := "/var/run/docker/netns"
5962
dEs, err := os.ReadDir(dockerPath)
60-
if err != nil {
63+
if err != nil && !os.IsNotExist(err) {
6164
return nil, err
6265
}
6366
for _, e := range dEs {

0 commit comments

Comments
 (0)