From 4fc2835d92b5f8fc929559a4829cfb297a17dcd3 Mon Sep 17 00:00:00 2001 From: Bryan Boreham Date: Sat, 21 May 2016 16:03:01 +0000 Subject: [PATCH] Extract AddRoute function --- net/route.go | 14 ++++++++++++++ plugin/net/cni.go | 20 +++----------------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/net/route.go b/net/route.go index 1562045d..1e815c52 100644 --- a/net/route.go +++ b/net/route.go @@ -3,6 +3,7 @@ package net import ( "fmt" "net" + "os" "github.com/vishvananda/netlink" ) @@ -55,3 +56,16 @@ func forEachRoute(ignoreIfaceNames map[string]struct{}, check func(r netlink.Rou } return nil } + +func AddRoute(link netlink.Link, scope netlink.Scope, dst *net.IPNet, gw net.IP) error { + err := netlink.RouteAdd(&netlink.Route{ + LinkIndex: link.Attrs().Index, + Scope: scope, + Dst: dst, + Gw: gw, + }) + if os.IsExist(err) { // squash duplicate route errors + err = nil + } + return err +} diff --git a/plugin/net/cni.go b/plugin/net/cni.go index 178b67e7..f7a2b153 100644 --- a/plugin/net/cni.go +++ b/plugin/net/cni.go @@ -5,7 +5,6 @@ import ( "encoding/json" "fmt" "net" - "os" "github.com/appc/cni/pkg/ipam" "github.com/appc/cni/pkg/skel" @@ -112,7 +111,7 @@ func setupRoutes(guest netlink.Link, name string, ipnet net.IPNet, gw net.IP, ro if !ipnet.Contains(gw) { // The bridge IP is not on the same subnet; add a specific route to it gw32 := &net.IPNet{IP: gw, Mask: mask32} - if err = addRoute(guest, netlink.SCOPE_LINK, gw32, nil); err != nil { + if err = weavenet.AddRoute(guest, netlink.SCOPE_LINK, gw32, nil); err != nil { return err } } @@ -120,9 +119,9 @@ func setupRoutes(guest netlink.Link, name string, ipnet net.IPNet, gw net.IP, ro } for _, r := range routes { if r.GW != nil { - err = addRoute(guest, netlink.SCOPE_UNIVERSE, &r.Dst, r.GW) + err = weavenet.AddRoute(guest, netlink.SCOPE_UNIVERSE, &r.Dst, r.GW) } else { - err = addRoute(guest, netlink.SCOPE_UNIVERSE, &r.Dst, gw) + err = weavenet.AddRoute(guest, netlink.SCOPE_UNIVERSE, &r.Dst, gw) } if err != nil { return fmt.Errorf("failed to add route '%v via %v dev %v': %v", r.Dst, gw, name, err) @@ -131,19 +130,6 @@ func setupRoutes(guest netlink.Link, name string, ipnet net.IPNet, gw net.IP, ro return nil } -func addRoute(link netlink.Link, scope netlink.Scope, dst *net.IPNet, gw net.IP) error { - err := netlink.RouteAdd(&netlink.Route{ - LinkIndex: link.Attrs().Index, - Scope: scope, - Dst: dst, - Gw: gw, - }) - if os.IsExist(err) { // squash duplicate route errors - err = nil - } - return err -} - func findBridgeIP(bridgeName string, subnet net.IPNet) (net.IP, error) { netdevs, err := common.GetBridgeNetDev(bridgeName) if err != nil {