func cmdDel(args *skel.CmdArgs) error { conf := NetConf{} if err := json.Unmarshal(args.StdinData, &conf); err != nil { return fmt.Errorf("failed to load netconf: %v", err) } var ipn *net.IPNet err := ns.WithNetNSPath(args.Netns, false, func(hostNS *os.File) error { var err error ipn, err = ip.DelLinkByNameAddr(args.IfName, netlink.FAMILY_V4) return err }) if err != nil { return err } if conf.IPMasq { h := sha512.Sum512([]byte(args.ContainerID)) chain := fmt.Sprintf("CNI-%s-%x", conf.Name, h[:8]) if err = ip.TeardownIPMasq(ipn, chain); err != nil { return err } } return ipam.ExecDel(conf.IPAM.Type, args.StdinData) }
func cmdDel(args *skel.CmdArgs) error { netconfBytes, err := consumeScratchNetConf(args.ContainerID) if err != nil { return err } n := &types.NetConf{} if err = json.Unmarshal(netconfBytes, n); err != nil { return fmt.Errorf("failed to parse netconf: %v", err) } return ipam.ExecDel(n.Type, netconfBytes) }
func cmdDel(args *skel.CmdArgs) error { n, err := loadConf(args.StdinData) if err != nil { return err } err = ipam.ExecDel(n.IPAM.Type, args.StdinData) if err != nil { return err } return ns.WithNetNSPath(args.Netns, false, func(hostNS *os.File) error { return ip.DelLinkByName(args.IfName) }) }