BUG-338 Allow incomming BGP connections. 95/8495/10
authorMaros Marsalek <mmarsale@cisco.com>
Fri, 4 Jul 2014 13:05:06 +0000 (15:05 +0200)
committerMaros Marsalek <mmarsale@cisco.com>
Tue, 8 Jul 2014 13:58:36 +0000 (15:58 +0200)
commit5b242f296eaf7979e08ca55d99cdba803973b85f
tree3edf8befb449006986d78af275f9f8d5e726ec6f
parent930efdaafb076e2648da35fcbb2e06149090d9db
BUG-338 Allow incomming BGP connections.

Added BGPPeerRegistry that holds all configured BGP peers.
Client/Server SessionNegotiators retrieve BGPPeers(SessionListeners) from the BGPPeerRegistry.
Added StrictBGPPeerRegistry (default implementation of BGPPeerRegistry) that allows only 1 session with BGP peer. If second session is being established, the registry drops either already established or new BGP session (depending on higher source BGP ID).

Added 2 config attributes to BGPPeer:
- initiate connection: true to start BGP connection from ODL. False if just configure BGP peer to accept session from remote device.
- peer registry: dependency on BGPPeerRegistry. Peer registers itself into this registry.

* new attributes are optional to preserve backwards compatibility.

Change-Id: I2f7a606db5196fed49094d49efbb570c4d0fbecb
Signed-off-by: Maros Marsalek <mmarsale@cisco.com>
34 files changed:
bgp/controller-config/src/main/resources/initial/31-bgp.xml
bgp/controller-config/src/main/resources/initial/41-bgp-example.xml
bgp/parser-api/src/main/java/org/opendaylight/protocol/bgp/parser/BGPTerminationReason.java
bgp/rib-impl-config/src/main/java/org/opendaylight/controller/config/yang/bgp/rib/impl/BGPPeerAcceptorModule.java [new file with mode: 0644]
bgp/rib-impl-config/src/main/java/org/opendaylight/controller/config/yang/bgp/rib/impl/BGPPeerAcceptorModuleFactory.java [new file with mode: 0644]
bgp/rib-impl-config/src/main/java/org/opendaylight/controller/config/yang/bgp/rib/impl/BGPPeerModule.java
bgp/rib-impl-config/src/main/java/org/opendaylight/controller/config/yang/bgp/rib/impl/StrictBgpPeerRegistryModule.java [new file with mode: 0644]
bgp/rib-impl-config/src/main/java/org/opendaylight/controller/config/yang/bgp/rib/impl/StrictBgpPeerRegistryModuleFactory.java [new file with mode: 0644]
bgp/rib-impl-config/src/main/yang/bgp-rib-impl.yang
bgp/rib-impl-config/src/test/java/org/opendaylight/controller/config/yang/bgp/rib/impl/BGPPeerAcceptorModuleTest.java [new file with mode: 0644]
bgp/rib-impl-config/src/test/java/org/opendaylight/controller/config/yang/bgp/rib/impl/BGPPeerModuleTest.java
bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/AbstractBGPSessionNegotiator.java [moved from bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/BGPSessionNegotiator.java with 60% similarity]
bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/BGPDispatcherImpl.java
bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/BGPPeer.java
bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/BGPSessionImpl.java
bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/StrictBGPPeerRegistry.java [new file with mode: 0644]
bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/client/BGPClientSessionNegotiator.java [new file with mode: 0644]
bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/client/BGPClientSessionNegotiatorFactory.java [moved from bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/BGPSessionNegotiatorFactory.java with 60% similarity]
bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/client/BGPClientSessionValidator.java [new file with mode: 0644]
bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/server/BGPServerSessionNegotiator.java [new file with mode: 0644]
bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/server/BGPServerSessionNegotiatorFactory.java [new file with mode: 0644]
bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/server/BGPServerSessionValidator.java [new file with mode: 0644]
bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/spi/BGPDispatcher.java
bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/spi/BGPPeerRegistry.java [new file with mode: 0644]
bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/spi/BGPServerDispatcher.java [new file with mode: 0644]
bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/spi/BGPSessionValidator.java [new file with mode: 0644]
bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/spi/ReusableBGPPeer.java [new file with mode: 0644]
bgp/rib-impl/src/test/java/org/opendaylight/protocol/bgp/rib/impl/FSMTest.java
bgp/rib-impl/src/test/java/org/opendaylight/protocol/bgp/rib/impl/SimpleSessionListener.java
bgp/rib-impl/src/test/java/org/opendaylight/protocol/bgp/rib/impl/StrictBGPPeerRegistryTest.java [new file with mode: 0644]
bgp/testtool/src/main/java/org/opendaylight/protocol/bgp/testtool/Main.java
bgp/testtool/src/main/java/org/opendaylight/protocol/bgp/testtool/TestingListener.java
bgp/testtool/src/test/java/org/opendaylight/protocol/bgp/testtool/BGPSpeakerMock.java
integration-tests/src/test/java/org/opendaylight/protocol/integration/bgp/ParserToSalTest.java