diff --git a/protocols/bgp/server/fsm_address_family.go b/protocols/bgp/server/fsm_address_family.go index daa5465e16f2bb90e0da43316b4bb475021ffd1b..27b55417e006cc8f4e7e3bcbc8cdb97ca3f83c18 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) }