From d3c5f153feb0e5c609b53c923b0b90c77b5d34f3 Mon Sep 17 00:00:00 2001 From: Scott Yeager Date: Thu, 19 Jun 2025 22:46:12 -0700 Subject: [PATCH] Fix stuff --- go.mod | 2 ++ main.go | 15 +++++++++++---- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/go.mod b/go.mod index 83b3b6f..b3af306 100644 --- a/go.mod +++ b/go.mod @@ -7,3 +7,5 @@ require ( github.com/vishvananda/netlink v1.1.0 github.com/vishvananda/netns v0.0.4 ) + +require golang.org/x/sys v0.2.0 // indirect diff --git a/main.go b/main.go index 43f0ccc..61fc0f2 100644 --- a/main.go +++ b/main.go @@ -4,8 +4,6 @@ import ( "encoding/json" "fmt" "net" - "os" - "path/filepath" "github.com/containernetworking/cni/pkg/skel" "github.com/containernetworking/cni/pkg/types" @@ -185,7 +183,17 @@ func createVethPair(hostName, containerName string) (netlink.Link, netlink.Link, } func configureContainerInterface(containerNS netns.NsHandle, ifName string, containerIP net.IP, hostVethName string) error { - return netns.Set(containerNS, func(ns netns.NsHandle) error { + // Switch to container namespace + originalNS, err := netns.Get() + if err != nil { + return err + } + defer originalNS.Close() + defer netns.Set(originalNS) + + if err := netns.Set(containerNS); err != nil { + return err + } // Get the interface link, err := netlink.LinkByName(ifName) if err != nil { @@ -232,7 +240,6 @@ func configureContainerInterface(containerNS netns.NsHandle, ifName string, cont } return nil - }) } func configureHostInterface(hostVeth netlink.Link, containerIP net.IP) error {