diff --git a/nameserver/if_utils.go b/net/if.go similarity index 81% rename from nameserver/if_utils.go rename to net/if.go index 2159b125..169bd062 100644 --- a/nameserver/if_utils.go +++ b/net/if.go @@ -1,4 +1,4 @@ -package nameserver +package net import ( "fmt" @@ -10,14 +10,10 @@ func EnsureInterface(ifaceName string, wait int) (iface *net.Interface, err erro if iface, err = findInterface(ifaceName); err == nil || wait == 0 { return } - Info.Println("Waiting for interface", ifaceName, "to come up") for ; err != nil && wait > 0; wait -= 1 { time.Sleep(1 * time.Second) iface, err = findInterface(ifaceName) } - if err == nil { - Info.Println("Interface", ifaceName, "is up") - } return } diff --git a/weavedns/main.go b/weavedns/main.go index 019dc1f1..b06e7f1b 100644 --- a/weavedns/main.go +++ b/weavedns/main.go @@ -3,6 +3,7 @@ package main import ( "flag" weavedns "github.com/zettio/weave/nameserver" + weavenet "github.com/zettio/weave/net" "io/ioutil" "net" "os" @@ -46,9 +47,12 @@ func main() { var iface *net.Interface = nil if ifaceName != "" { var err error - iface, err = weavedns.EnsureInterface(ifaceName, wait) + weavedns.Info.Println("Waiting for interface", ifaceName, "to come up") + iface, err = weavenet.EnsureInterface(ifaceName, wait) if err != nil { weavedns.Error.Fatal(err) + } else { + weavedns.Info.Println("Interface", ifaceName, "is up") } } diff --git a/weaver/main.go b/weaver/main.go index 76f1d82f..112db6ed 100644 --- a/weaver/main.go +++ b/weaver/main.go @@ -6,6 +6,7 @@ import ( "flag" "fmt" "github.com/davecheney/profile" + weavenet "github.com/zettio/weave/net" weave "github.com/zettio/weave/router" "io" "log" @@ -15,36 +16,8 @@ import ( "os/signal" "runtime" "syscall" - "time" ) -func ensureInterface(ifaceName string, wait int) (iface *net.Interface, err error) { - iface, err = findInterface(ifaceName) - if err == nil || wait == 0 { - return - } - log.Println("Waiting for interface", ifaceName, "to come up") - for ; err != nil && wait > 0; wait -= 1 { - time.Sleep(1 * time.Second) - iface, err = findInterface(ifaceName) - } - if err == nil { - log.Println("Interface", ifaceName, "is up") - } - return -} - -func findInterface(ifaceName string) (iface *net.Interface, err error) { - iface, err = net.InterfaceByName(ifaceName) - if err != nil { - return iface, fmt.Errorf("Unable to find interface %s", ifaceName) - } - if 0 == (net.FlagUp & iface.Flags) { - return iface, fmt.Errorf("Interface %s is not up", ifaceName) - } - return -} - func main() { log.SetPrefix(weave.Protocol + " ") @@ -86,7 +59,7 @@ func main() { fmt.Println("Missing required parameter 'iface'") os.Exit(1) } - iface, err := ensureInterface(ifaceName, wait) + iface, err := weavenet.EnsureInterface(ifaceName, wait) if err != nil { log.Fatal(err) } @@ -141,7 +114,7 @@ func handleHttp(router *weave.Router) { http.HandleFunc("/status", func(w http.ResponseWriter, r *http.Request) { io.WriteString(w, router.Status()) }) - http.HandleFunc("/connect", func (w http.ResponseWriter, r *http.Request) { + http.HandleFunc("/connect", func(w http.ResponseWriter, r *http.Request) { peer := r.FormValue("peer") if addr, err := net.ResolveTCPAddr("tcp4", weave.NormalisePeerAddr(peer)); err == nil { router.ConnectionMaker.InitiateConnection(addr.String())