From 659a09f34e1f468eb13f4254d0b99aaeb5db9d74 Mon Sep 17 00:00:00 2001 From: Bruce Ma Date: Mon, 19 Aug 2019 20:10:08 +0800 Subject: [PATCH] loopback support CNI CHECK Signed-off-by: Bruce Ma --- plugins/main/loopback/loopback.go | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/plugins/main/loopback/loopback.go b/plugins/main/loopback/loopback.go index db5e9964..f79e8984 100644 --- a/plugins/main/loopback/loopback.go +++ b/plugins/main/loopback/loopback.go @@ -15,6 +15,9 @@ package main import ( + "errors" + "net" + "github.com/vishvananda/netlink" "github.com/containernetworking/cni/pkg/skel" @@ -78,6 +81,18 @@ func main() { } func cmdCheck(args *skel.CmdArgs) error { - // TODO: implement - return nil + args.IfName = "lo" // ignore config, this only works for loopback + + return ns.WithNetNSPath(args.Netns, func(_ ns.NetNS) error { + link, err := netlink.LinkByName(args.IfName) + if err != nil { + return err + } + + if link.Attrs().Flags&net.FlagUp != net.FlagUp { + return errors.New("loopback interface is down") + } + + return nil + }) }