diff --git a/protocols/bgp/server/fsm.go b/protocols/bgp/server/fsm.go
index dd1253b2eba7629059d221a9d8d2587ef2c5e1b0..44437ea9ade40a7038f0fa084d5117d3dddecc1d 100644
--- a/protocols/bgp/server/fsm.go
+++ b/protocols/bgp/server/fsm.go
@@ -63,6 +63,8 @@ type FSM struct {
 	ipv4Unicast     *fsmAddressFamily
 	ipv6Unicast     *fsmAddressFamily
 
+	supportsMultiProtocol bool
+
 	neighborID uint32
 	state      state
 	stateMu    sync.RWMutex
diff --git a/protocols/bgp/server/fsm_address_family.go b/protocols/bgp/server/fsm_address_family.go
index 27b55417e006cc8f4e7e3bcbc8cdb97ca3f83c18..b72224a4aa0402f30e0171804801fb8dca2b0740 100644
--- a/protocols/bgp/server/fsm_address_family.go
+++ b/protocols/bgp/server/fsm_address_family.go
@@ -94,7 +94,7 @@ func (f *fsmAddressFamily) processUpdate(u *packet.BGPUpdate) {
 		f.updates(u)
 	}
 
-	if f.fsm.options.SupportsMultiProtocol {
+	if f.fsm.supportsMultiProtocol {
 		f.multiProtocolUpdates(u)
 	}
 }
@@ -118,7 +118,7 @@ func (f *fsmAddressFamily) updates(u *packet.BGPUpdate) {
 }
 
 func (f *fsmAddressFamily) multiProtocolUpdates(u *packet.BGPUpdate) {
-	if !f.fsm.options.SupportsMultiProtocol {
+	if !f.fsm.supportsMultiProtocol {
 		return
 	}
 
diff --git a/protocols/bgp/server/fsm_established.go b/protocols/bgp/server/fsm_established.go
index 2ffa19415e0d1233b5718b9127b8dbbfaaf9874b..8a090b18afa9fc06064573886677133f56460031 100644
--- a/protocols/bgp/server/fsm_established.go
+++ b/protocols/bgp/server/fsm_established.go
@@ -211,7 +211,7 @@ func (s *establishedState) update(msg *packet.BGPMessage) (state, string) {
 }
 
 func (s *establishedState) addressFamilyForUpdate(u *packet.BGPUpdate) (afi uint16, safi uint8) {
-	if !s.fsm.options.SupportsMultiProtocol || u.NLRI != nil || u.WithdrawnRoutes != nil {
+	if !s.fsm.supportsMultiProtocol || u.NLRI != nil || u.WithdrawnRoutes != nil {
 		return packet.IPv4AFI, packet.UnicastSAFI
 	}
 
diff --git a/protocols/bgp/server/fsm_open_sent.go b/protocols/bgp/server/fsm_open_sent.go
index 8955ad673c8ed36690ab4280067247ce89bc5411..7a0999899a5d0b7089892f1fb169d3a0abdc591f 100644
--- a/protocols/bgp/server/fsm_open_sent.go
+++ b/protocols/bgp/server/fsm_open_sent.go
@@ -175,7 +175,7 @@ func (s *openSentState) processCapability(cap packet.Capability) {
 }
 
 func (s *openSentState) processMultiProtocolCapability(cap packet.MultiProtocolCapability) {
-	s.fsm.options.SupportsMultiProtocol = true
+	s.fsm.supportsMultiProtocol = true
 }
 
 func (s *openSentState) processAddPathCapability(addPathCap packet.AddPathCapability) {
diff --git a/protocols/bgp/server/fsm_test.go b/protocols/bgp/server/fsm_test.go
index 50181d8e3aa66ec34dbc21e7c18827e1b6b3d4c8..2e4b20160b2df9ba15aaf1bf722bd8d6d9491c4c 100644
--- a/protocols/bgp/server/fsm_test.go
+++ b/protocols/bgp/server/fsm_test.go
@@ -138,7 +138,7 @@ func TestFSM255UpdatesIPv6(t *testing.T) {
 			exportFilter: filter.NewAcceptAllFilter(),
 		},
 	})
-	fsmA.options.SupportsMultiProtocol = true
+	fsmA.supportsMultiProtocol = true
 
 	fsmA.holdTimer = time.NewTimer(time.Second * 90)
 	fsmA.keepaliveTimer = time.NewTimer(time.Second * 30)
diff --git a/protocols/bgp/server/update_sender.go b/protocols/bgp/server/update_sender.go
index 6eda96c2d7f7a1dab28af7a16f405634f27c8ea0..ed63c74dcbc23da9d01b7b131e2325f5278a50f8 100644
--- a/protocols/bgp/server/update_sender.go
+++ b/protocols/bgp/server/update_sender.go
@@ -135,7 +135,7 @@ func (u *UpdateSender) sender(aggrTime time.Duration) {
 }
 
 func (u *UpdateSender) updateOverhead() int {
-	if !u.fsm.options.SupportsMultiProtocol {
+	if !u.fsm.supportsMultiProtocol {
 		return 0
 	}
 
@@ -169,7 +169,7 @@ func (u *UpdateSender) updateMessageForPrefixes(pfxs []bnet.Prefix, pa *packet.P
 		return u.bgpUpdate(pfxs, pa, pathID)
 	}
 
-	if u.fsm.options.SupportsMultiProtocol {
+	if u.fsm.supportsMultiProtocol {
 		return u.bgpUpdateMultiProtocol(pfxs, pa, pathID)
 	}
 
@@ -246,7 +246,7 @@ func (u *UpdateSender) RemovePath(pfx bnet.Prefix, p *route.Path) bool {
 }
 
 func (u *UpdateSender) withdrawPrefix(pfx bnet.Prefix, p *route.Path) error {
-	if u.fsm.options.SupportsMultiProtocol {
+	if u.fsm.supportsMultiProtocol {
 		return u.withDrawPrefixesMultiProtocol(u.fsm.con, pfx, p)
 	}
 
diff --git a/protocols/bgp/server/update_sender_test.go b/protocols/bgp/server/update_sender_test.go
index 09a15e82711ddfe703a66caca965081f5c2d15ff..d46297d6effae19b01dab67eb0bbce231916a9ae 100644
--- a/protocols/bgp/server/update_sender_test.go
+++ b/protocols/bgp/server/update_sender_test.go
@@ -875,7 +875,7 @@ func TestSender(t *testing.T) {
 
 		rib := locRIB.New()
 		if test.afi == packet.IPv6AFI {
-			fsmA.options.SupportsMultiProtocol = true
+			fsmA.supportsMultiProtocol = true
 			fsmA.ipv6Unicast = newFSMAddressFamily(packet.IPv6AFI, packet.UnicastSAFI, &familyParameters{
 				rib:          rib,
 				importFilter: filter.NewAcceptAllFilter(),
@@ -1034,9 +1034,9 @@ func TestWithDrawPrefixesMultiProtocol(t *testing.T) {
 			u := &UpdateSender{
 				fsm: &FSM{
 					options: &types.Options{
-						AddPathRX:             false,
-						SupportsMultiProtocol: true,
+						AddPathRX: false,
 					},
+					supportsMultiProtocol: true,
 				},
 				afi:  packet.IPv6AFI,
 				safi: packet.UnicastSAFI,
diff --git a/protocols/bgp/types/options.go b/protocols/bgp/types/options.go
index 8b96d6697b7262b53954a12663dff872fd3492b2..19b580d2829b96d8f974311536b299211a98ca95 100644
--- a/protocols/bgp/types/options.go
+++ b/protocols/bgp/types/options.go
@@ -2,7 +2,6 @@ package types
 
 // Options represents options to the update sender, decoder and encoder
 type Options struct {
-	Supports4OctetASN     bool
-	SupportsMultiProtocol bool
-	AddPathRX             bool
+	Supports4OctetASN bool
+	AddPathRX         bool
 }