diff --git a/prog/weaver/main.go b/prog/weaver/main.go index 5599728d..271d4aca 100644 --- a/prog/weaver/main.go +++ b/prog/weaver/main.go @@ -196,7 +196,9 @@ func main() { if fastDPOverlay != nil { overlays.Add("fastdp", fastDPOverlay) } - overlays.Add("sleeve", weave.NewSleeveOverlay(config.Port)) + sleeve := weave.NewSleeveOverlay(config.Port) + overlays.Add("sleeve", sleeve) + overlays.SetCompatOverlay(sleeve) config.Overlay = overlays if routerName == "" { diff --git a/router/overlay_switch.go b/router/overlay_switch.go index 2602d24b..553962c4 100644 --- a/router/overlay_switch.go +++ b/router/overlay_switch.go @@ -13,8 +13,9 @@ import ( // uses the best one that seems to be working. type OverlaySwitch struct { - overlays map[string]Overlay - overlayNames []string + overlays map[string]Overlay + overlayNames []string + compatOverlay Overlay } func NewOverlaySwitch() *OverlaySwitch { @@ -31,6 +32,10 @@ func (osw *OverlaySwitch) Add(name string, overlay Overlay) { osw.overlayNames = append(osw.overlayNames, name) } +func (osw *OverlaySwitch) SetCompatOverlay(overlay Overlay) { + osw.compatOverlay = overlay +} + func (osw *OverlaySwitch) AddFeaturesTo(features map[string]string) { features["Overlays"] = strings.Join(osw.overlayNames, " ") } @@ -159,6 +164,10 @@ type subForwarderEvent struct { func (osw *OverlaySwitch) MakeForwarder( params ForwarderParams) (OverlayForwarder, error) { + if _, present := params.Features["Overlays"]; !present && osw.compatOverlay != nil { + return osw.compatOverlay.MakeForwarder(params) + } + overlays, err := osw.commonOverlays(params) if err != nil { return nil, err