From 6ad74e74d266294f7a3104c4d6956574dd78d34e Mon Sep 17 00:00:00 2001
From: Daniel Czerwonk <daniel@dan-nrw.de>
Date: Tue, 17 Jul 2018 08:37:10 +0200
Subject: [PATCH] fsmAddressFamily now aware of add-path options per family

---
 protocols/bgp/server/fsm_address_family.go | 18 ++++++++++++------
 1 file changed, 12 insertions(+), 6 deletions(-)

diff --git a/protocols/bgp/server/fsm_address_family.go b/protocols/bgp/server/fsm_address_family.go
index daa5465e..27b55417 100644
--- a/protocols/bgp/server/fsm_address_family.go
+++ b/protocols/bgp/server/fsm_address_family.go
@@ -29,6 +29,9 @@ type fsmAddressFamily struct {
 
 	updateSender *UpdateSender
 
+	addPathSend routingtable.ClientOptions
+	addPathRecv bool
+
 	initialized bool
 }
 
@@ -40,6 +43,8 @@ func newFSMAddressFamily(afi uint16, safi uint8, params *familyParameters, fsm *
 		rib:          params.rib,
 		importFilter: params.importFilter,
 		exportFilter: params.exportFilter,
+		addPathRecv:  params.addPathRecv,
+		addPathSend:  params.addPathSend,
 	}
 }
 
@@ -51,17 +56,18 @@ func (f *fsmAddressFamily) init(n *routingtable.Neighbor) {
 	f.adjRIBIn.Register(f.rib)
 
 	f.adjRIBOut = adjRIBOut.New(n, f.exportFilter)
-	clientOptions := routingtable.ClientOptions{
-		BestOnly: true,
-	}
-	if f.fsm.options.AddPathRX {
-		clientOptions = f.fsm.peer.addPathSend
-	}
 
 	f.updateSender = newUpdateSender(f.fsm, f.afi, f.safi)
 	f.updateSender.Start(time.Millisecond * 5)
 
 	f.adjRIBOut.Register(f.updateSender)
+
+	clientOptions := routingtable.ClientOptions{
+		BestOnly: true,
+	}
+	if f.fsm.options.AddPathRX {
+		clientOptions = f.addPathSend
+	}
 	f.rib.RegisterWithOptions(f.adjRIBOut, clientOptions)
 }
 
-- 
GitLab