Factor out the wait-for-interface code

This commit is contained in:
Michael Bridgen committed 2014-11-03 17:47:16 +00:00
1 parent 8ce6c4aba3
commit 27beebf5d5
3 files changed
+9 -36

No files matched your search

+1 -5
View File
@@ -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
}
+5 -1
View File
@@ -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")
}
}
+3 -30
View File
@@ -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())