Merge remote-tracking branch 'origin/1.9'

- PR #2926 - Branch issues/2808-improve-hairpin-messages - Fixes #2808.
- PR #2907 - Branch issues/2771-checkpoint-net-modes - Fixes #2771.
This commit is contained in:
Marc CARRE committed 2017-05-03 20:28:31 +01:00
commit 507e734d1a
6 files changed
+42 -15

No files matched your search

+17 -4
View File
@@ -6,6 +6,7 @@ import (
"time"
"github.com/weaveworks/go-checkpoint"
weave "github.com/weaveworks/weave/router"
)
var checker *checkpoint.Checker
@@ -16,7 +17,7 @@ const (
updateCheckPeriod = 6 * time.Hour
)
func checkForUpdates(dockerVersion string, network string) {
func checkForUpdates(dockerVersion string, router *weave.NetworkRouter) {
newVersion.Store("")
success.Store(true)
@@ -51,9 +52,6 @@ func checkForUpdates(dockerVersion string, network string) {
"docker-version": dockerVersion,
"kernel-version": kernelVersion,
}
if network != "" {
flags["network"] = network
}
// Start background version checking
params := checkpoint.CheckParams{
@@ -61,6 +59,21 @@ func checkForUpdates(dockerVersion string, network string) {
Version: version,
SignatureFile: "",
Flags: flags,
ExtraFlags: func() []checkpoint.Flag { return checkpointFlags(router) },
}
checker = checkpoint.CheckInterval(&params, updateCheckPeriod, handleResponse)
}
func checkpointFlags(router *weave.NetworkRouter) []checkpoint.Flag {
flags := []checkpoint.Flag{}
status := weave.NewNetworkRouterStatus(router)
for _, conn := range status.Connections {
if connectionName, ok := conn.Attrs["name"].(string); ok {
if _, encrypted := conn.Attrs["encrypted"]; encrypted {
connectionName = connectionName + " encrypted"
}
flags = append(flags, checkpoint.Flag{Key: "network", Value: connectionName})
}
}
return flags
}
+15 -5
View File
@@ -271,8 +271,9 @@ func main() {
networkConfig.InjectorConsumer = injectorConsumer
if injectorConsumer != nil {
if err := weavenet.DetectHairpin(weavenet.BridgeIfName, Log); err != nil {
Log.Errorf("DetectHairpin failed: %s", err)
if err := weavenet.DetectHairpin("vethwe-bridge", Log); err != nil {
Log.Errorf("Setting may cause connectivity issues : %s", err)
Log.Infof("Hairpin mode may have been enabled by other software on this machine")
}
}
@@ -293,7 +294,8 @@ func main() {
checkFatal(err)
defer db.Close()
router := weave.NewNetworkRouter(config, networkConfig, name, nickName, overlay, db)
router, err := weave.NewNetworkRouter(config, networkConfig, name, nickName, overlay, db)
checkFatal(err)
Log.Println("Our name is", router.Ourself)
if token != "" {
@@ -330,11 +332,15 @@ func main() {
dockerVersion = dockerCli.DockerVersion()
}
<<<<<<< HEAD
network := ""
if bridgeConfig.AWSVPC {
network = "awsvpc"
}
checkForUpdates(dockerVersion, network)
=======
checkForUpdates(dockerVersion, router)
>>>>>>> origin/1.9
observeContainers := func(o docker.ContainerObserver) {
if dockerCli != nil {
@@ -562,7 +568,9 @@ func createAllocator(router *weave.NetworkRouter, config ipamConfig, preClaims [
allocator := ipam.NewAllocator(c)
allocator.SetInterfaces(router.NewGossip("IPallocation", allocator))
gossip, err := router.NewGossip("IPallocation", allocator)
checkFatal(err)
allocator.SetInterfaces(gossip)
allocator.Start()
router.Peers.OnGC(func(peer *mesh.Peer) { allocator.PeerGone(peer.Name) })
@@ -572,7 +580,9 @@ func createAllocator(router *weave.NetworkRouter, config ipamConfig, preClaims [
func createDNSServer(config dnsConfig, router *mesh.Router, isKnownPeer func(mesh.PeerName) bool) (*nameserver.Nameserver, *nameserver.DNSServer) {
ns := nameserver.New(router.Ourself.Peer.Name, config.Domain, isKnownPeer)
router.Peers.OnGC(func(peer *mesh.Peer) { ns.PeerGone(peer.Name) })
ns.SetGossip(router.NewGossip("nameserver", ns))
gossip, err := router.NewGossip("nameserver", ns)
checkFatal(err)
ns.SetGossip(gossip)
upstream := nameserver.NewUpstream(config.ResolvConf, config.EffectiveListenAddress)
dnsserver, err := nameserver.NewDNSServer(ns, config.Domain, config.ListenAddress,
upstream, uint32(config.TTL), config.ClientTimeout)
+1 -1
View File
@@ -1224,7 +1224,7 @@ func (fastdp *FastDatapath) send(fops FlowOp, frame []byte, lock *fastDatapathLo
}
if fastdp.isHairpinFlow(&flow) {
log.Error("Vetoed installation of hairpin flow ", flow)
log.Warning("Vetoed installation of hairpin flow ", flow)
return
}
+7 -3
View File
@@ -51,7 +51,7 @@ type NetworkRouter struct {
db db.DB
}
func NewNetworkRouter(config mesh.Config, networkConfig NetworkConfig, name mesh.PeerName, nickName string, overlay NetworkOverlay, db db.DB) *NetworkRouter {
func NewNetworkRouter(config mesh.Config, networkConfig NetworkConfig, name mesh.PeerName, nickName string, overlay NetworkOverlay, db db.DB) (*NetworkRouter, error) {
if overlay == nil {
overlay = NullNetworkOverlay{}
}
@@ -59,7 +59,11 @@ func NewNetworkRouter(config mesh.Config, networkConfig NetworkConfig, name mesh
networkConfig.InjectorConsumer = NullInjectorConsumer{}
}
router := &NetworkRouter{Router: mesh.NewRouter(config, name, nickName, overlay, common.LogLogger()), NetworkConfig: networkConfig, db: db}
meshRouter, err := mesh.NewRouter(config, name, nickName, overlay, common.LogLogger())
if err != nil {
return nil, err
}
router := &NetworkRouter{Router: meshRouter, NetworkConfig: networkConfig, db: db}
router.Peers.OnInvalidateShortIDs(overlay.InvalidateShortIDs)
router.Routes.OnChange(overlay.InvalidateRoutes)
router.Macs = NewMacCache(macMaxAge,
@@ -67,7 +71,7 @@ func NewNetworkRouter(config mesh.Config, networkConfig NetworkConfig, name mesh
log.Println("Expired MAC", mac, "at", peer)
})
router.Peers.OnGC(func(peer *mesh.Peer) { router.Macs.Delete(peer) })
return router
return router, nil
}
// Start listening for TCP connections, locally captured packets, and