From aa44b66a31a95fb1848d816f7d671735664a40ce Mon Sep 17 00:00:00 2001 From: Matthias Radestock Date: Wed, 13 Jan 2016 12:06:42 +0000 Subject: [PATCH] refactor: extract overlay creation --- prog/weaver/main.go | 47 ++++++++++++++++++++++++++------------------- 1 file changed, 27 insertions(+), 20 deletions(-) diff --git a/prog/weaver/main.go b/prog/weaver/main.go index 45feea02..32e9a58b 100644 --- a/prog/weaver/main.go +++ b/prog/weaver/main.go @@ -130,26 +130,8 @@ func main() { } config.ProtocolMinVersion = byte(protocolMinVersion) - overlays := weave.NewOverlaySwitch() - switch { - case datapathName != "" && ifaceName != "": - Log.Fatal("At most one of --datapath and --iface must be specified.") - case datapathName != "": - fastdp, err := weave.NewFastDatapath(datapathName, config.Port) - checkFatal(err) - networkConfig.Bridge = fastdp.Bridge() - overlays.Add("fastdp", fastdp.Overlay()) - case ifaceName != "": - iface, err := weavenet.EnsureInterface(ifaceName) - checkFatal(err) - networkConfig.Bridge, err = weave.NewPcap(iface, bufSzMB*1024*1024) // bufsz flag is in MB - checkFatal(err) - default: - networkConfig.Bridge = weave.NullBridge{} - } - sleeve := weave.NewSleeveOverlay(config.Port) - overlays.Add("sleeve", sleeve) - overlays.SetCompatOverlay(sleeve) + overlays, bridge := createOverlay(datapathName, ifaceName, config.Port, bufSzMB) + networkConfig.Bridge = bridge if password == "" { password = os.Getenv("WEAVE_PASSWORD") @@ -310,6 +292,31 @@ func (nopPacketLogging) LogPacket(string, weave.PacketKey) { func (nopPacketLogging) LogForwardPacket(string, weave.ForwardPacketKey) { } +func createOverlay(datapathName string, ifaceName string, port int, bufSzMB int) (weave.NetworkOverlay, weave.Bridge) { + overlays := weave.NewOverlaySwitch() + var bridge weave.Bridge + switch { + case datapathName != "" && ifaceName != "": + Log.Fatal("At most one of --datapath and --iface must be specified.") + case datapathName != "": + fastdp, err := weave.NewFastDatapath(datapathName, port) + checkFatal(err) + bridge = fastdp.Bridge() + overlays.Add("fastdp", fastdp.Overlay()) + case ifaceName != "": + iface, err := weavenet.EnsureInterface(ifaceName) + checkFatal(err) + bridge, err = weave.NewPcap(iface, bufSzMB*1024*1024) // bufsz flag is in MB + checkFatal(err) + default: + bridge = weave.NullBridge{} + } + sleeve := weave.NewSleeveOverlay(port) + overlays.Add("sleeve", sleeve) + overlays.SetCompatOverlay(sleeve) + return overlays, bridge +} + func parseAndCheckCIDR(cidrStr string) address.CIDR { _, cidr, err := address.ParseCIDR(cidrStr) checkFatal(err)