From b0926faccd6685c05df2aba8e76268d03197af9b Mon Sep 17 00:00:00 2001 From: Alexander Larsson Date: Tue, 17 Sep 2013 15:02:12 +0200 Subject: [PATCH] Use netlink directly instead of /bin/ip in Sysinit The sysinit code only uses /bin/ip to set a default gateway. This is pretty easy to do via netlink directly, so we can avoid the ip dependency. Upstream-commit: 607c1a520e6d39d0f0ee21f1d281931484206b57 Component: engine --- components/engine/sysinit.go | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/components/engine/sysinit.go b/components/engine/sysinit.go index c569d57264..bbd68fa75a 100644 --- a/components/engine/sysinit.go +++ b/components/engine/sysinit.go @@ -3,8 +3,10 @@ package docker import ( "flag" "fmt" + "github.com/dotcloud/docker/netlink" "github.com/dotcloud/docker/utils" "log" + "net" "os" "os/exec" "strconv" @@ -17,7 +19,14 @@ func setupNetworking(gw string) { if gw == "" { return } - if _, err := ip("route", "add", "default", "via", gw); err != nil { + + ip := net.ParseIP(gw) + if ip == nil { + log.Fatalf("Unable to set up networking, %s is not a valid IP", gw) + return + } + + if err := netlink.AddDefaultGw(ip); err != nil { log.Fatalf("Unable to set up networking: %v", err) } }