diff --git a/plugins/main/bridge/bridge.go b/plugins/main/bridge/bridge.go index e4bc106c..e87eb726 100644 --- a/plugins/main/bridge/bridge.go +++ b/plugins/main/bridge/bridge.go @@ -238,14 +238,29 @@ func cmdDel(args *skel.CmdArgs) error { return err } - err = ipam.ExecDel(n.IPAM.Type, args.StdinData) + if err := ipam.ExecDel(n.IPAM.Type, args.StdinData); err != nil { + return 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 } - return ns.WithNetNSPath(args.Netns, false, func(hostNS *os.File) error { - return ip.DelLinkByName(args.IfName) - }) + if n.IPMasq { + chain := utils.FormatChainName(n.Name, args.ContainerID) + comment := utils.FormatComment(n.Name, args.ContainerID) + if err = ip.TeardownIPMasq(ipn, chain, comment); err != nil { + return err + } + } + + return nil } func main() { diff --git a/plugins/main/ptp/ptp.go b/plugins/main/ptp/ptp.go index 3035c643..05b3b2a3 100644 --- a/plugins/main/ptp/ptp.go +++ b/plugins/main/ptp/ptp.go @@ -195,6 +195,10 @@ func cmdDel(args *skel.CmdArgs) error { return fmt.Errorf("failed to load netconf: %v", err) } + if err := ipam.ExecDel(conf.IPAM.Type, args.StdinData); err != nil { + return err + } + var ipn *net.IPNet err := ns.WithNetNSPath(args.Netns, false, func(hostNS *os.File) error { var err error @@ -213,7 +217,7 @@ func cmdDel(args *skel.CmdArgs) error { } } - return ipam.ExecDel(conf.IPAM.Type, args.StdinData) + return nil } func main() {