github.com/castai/kvisor@v1.7.1-0.20240516114728-b3572a2607b5/cmd/agent/daemon/conntrack/conntrack.go (about) 1 package conntrack 2 3 import ( 4 "net/netip" 5 "os" 6 7 "github.com/castai/kvisor/pkg/logging" 8 "github.com/florianl/go-conntrack" 9 "github.com/vishvananda/netns" 10 11 stdlog "log" 12 ) 13 14 type Client interface { 15 GetDestination(src, dst netip.AddrPort) (netip.AddrPort, bool) 16 Close() error 17 } 18 19 func NewClient(log *logging.Logger) (Client, error) { 20 if iniCiliumMaps(log) { 21 return &CiliumConntrack{}, nil 22 } 23 24 hostNs, err := netns.GetFromPid(1) 25 if err != nil { 26 return nil, err 27 } 28 nfct, err := conntrack.Open(&conntrack.Config{ 29 NetNS: int(hostNs), 30 Logger: stdlog.New(os.Stdout, "nf", 0), 31 }) 32 33 if err != nil { 34 return nil, err 35 } 36 return &NetfilterConntrackClient{ 37 log: log.WithField("component", "nf_conntrack"), 38 nfct: nfct, 39 }, nil 40 }