Class BGPSessionImpl
- java.lang.Object
-
- io.netty.channel.ChannelHandlerAdapter
-
- io.netty.channel.ChannelInboundHandlerAdapter
-
- io.netty.channel.SimpleChannelInboundHandler<org.opendaylight.yangtools.yang.binding.Notification>
-
- org.opendaylight.protocol.bgp.rib.impl.BGPSessionImpl
-
- All Implemented Interfaces:
io.netty.channel.ChannelHandler
,io.netty.channel.ChannelInboundHandler
,AutoCloseable
,BGPSessionStateProvider
,BGPSession
public class BGPSessionImpl extends io.netty.channel.SimpleChannelInboundHandler<org.opendaylight.yangtools.yang.binding.Notification> implements BGPSession, BGPSessionStateProvider, AutoCloseable
-
-
Constructor Summary
Constructors Constructor Description BGPSessionImpl(BGPSessionListener listener, io.netty.channel.Channel channel, Open remoteOpen, int localHoldTimer, BGPPeerRegistry peerRegistry)
BGPSessionImpl(BGPSessionListener listener, io.netty.channel.Channel channel, Open remoteOpen, BGPSessionPreferences localPreferences, BGPPeerRegistry peerRegistry)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description <T extends PeerConstraint>
voidaddDecoderConstraint(Class<T> constraintClass, T constraint)
Add peer constraint to session pipeline decoder.protected com.google.common.base.MoreObjects.ToStringHelper
addToStringAttributes(com.google.common.base.MoreObjects.ToStringHelper toStringHelper)
void
channelInactive(io.netty.channel.ChannelHandlerContext ctx)
protected void
channelRead0(io.netty.channel.ChannelHandlerContext ctx, org.opendaylight.yangtools.yang.binding.Notification msg)
void
close()
void
closeWithoutMessage()
Close peer session without sending Notification message.void
exceptionCaught(io.netty.channel.ChannelHandlerContext ctx, Throwable cause)
List<AddressFamilies>
getAdvertisedAddPathTableTypes()
Return a list with Add Path tables supported advertised and corresponding SendReceive mode.GracefulRestartCapability
getAdvertisedGracefulRestartCapability()
Return advertised graceful capability containing the list of tables which the peer has advertised to support, restart time and restarting flags.LlGracefulRestartCapability
getAdvertisedLlGracefulRestartCapability()
Return advertised long-lived graceful capability containing the list of tables with stale time which the peer has advertised to support.Set<BgpTableType>
getAdvertisedTableTypes()
Return the list of tables which the peer has advertised to support.org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.AsNumber
getAsNumber()
Return the AS number which the peer advertises.org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address
getBgpId()
Return the BGP router ID advertised by the peer.BGPSessionState
getBGPSessionState()
BGP Operational Session State.BGPTimersState
getBGPTimersState()
BGP Operational Timers State.BGPTransportState
getBGPTransportState()
BGP Operational Transport State.ChannelOutputLimiter
getLimiter()
State
getState()
void
handlerAdded(io.netty.channel.ChannelHandlerContext ctx)
void
registerMessagesCounter(BGPMessagesListener bgpMessagesListener)
Register BGP Operational Messages State Listener.io.netty.util.concurrent.ScheduledFuture<?>
schedule(Runnable command, long delay, TimeUnit unit)
Schedule a task to be executed in the context of the session handling thread.void
setChannelExtMsgCoder(Open remoteOpen)
Set the extend message coder for current channel.String
toString()
-
Methods inherited from class io.netty.channel.SimpleChannelInboundHandler
acceptInboundMessage, channelRead
-
Methods inherited from class io.netty.channel.ChannelInboundHandlerAdapter
channelActive, channelReadComplete, channelRegistered, channelUnregistered, channelWritabilityChanged, userEventTriggered
-
Methods inherited from class io.netty.channel.ChannelHandlerAdapter
ensureNotSharable, handlerRemoved, isSharable
-
-
-
-
Constructor Detail
-
BGPSessionImpl
public BGPSessionImpl(BGPSessionListener listener, io.netty.channel.Channel channel, Open remoteOpen, BGPSessionPreferences localPreferences, BGPPeerRegistry peerRegistry)
-
BGPSessionImpl
public BGPSessionImpl(BGPSessionListener listener, io.netty.channel.Channel channel, Open remoteOpen, int localHoldTimer, BGPPeerRegistry peerRegistry)
-
-
Method Detail
-
setChannelExtMsgCoder
public void setChannelExtMsgCoder(Open remoteOpen)
Set the extend message coder for current channel. The reason for separating this part from constructor is, in #channel.pipeline().replace(..), the invokeChannelRead() will be invoked after the original message coder handler got removed. And there is chance that before the session instance is fully initiated (constructor returns), a KeepAlive message arrived already in the channel buffer. Thus #AbstractBGPSessionNegotiator.handleMessage(..) gets invoked again and a deadlock is caused. A BGP final state machine error will happen as BGP negotiator is still in OPEN_SENT state as the session constructor hasn't returned yet.
-
close
public void close()
- Specified by:
close
in interfaceAutoCloseable
-
closeWithoutMessage
public void closeWithoutMessage()
Description copied from interface:BGPSession
Close peer session without sending Notification message.- Specified by:
closeWithoutMessage
in interfaceBGPSession
-
addToStringAttributes
protected com.google.common.base.MoreObjects.ToStringHelper addToStringAttributes(com.google.common.base.MoreObjects.ToStringHelper toStringHelper)
-
getAdvertisedTableTypes
public Set<BgpTableType> getAdvertisedTableTypes()
Description copied from interface:BGPSession
Return the list of tables which the peer has advertised to support.- Specified by:
getAdvertisedTableTypes
in interfaceBGPSession
- Returns:
- Set of tables which it supports.
-
getAdvertisedAddPathTableTypes
public List<AddressFamilies> getAdvertisedAddPathTableTypes()
Description copied from interface:BGPSession
Return a list with Add Path tables supported advertised and corresponding SendReceive mode.- Specified by:
getAdvertisedAddPathTableTypes
in interfaceBGPSession
- Returns:
- AddPathTables supported
-
getAdvertisedGracefulRestartCapability
public GracefulRestartCapability getAdvertisedGracefulRestartCapability()
Description copied from interface:BGPSession
Return advertised graceful capability containing the list of tables which the peer has advertised to support, restart time and restarting flags.- Specified by:
getAdvertisedGracefulRestartCapability
in interfaceBGPSession
- Returns:
- Advertised graceful restart capability.
-
getAdvertisedLlGracefulRestartCapability
public LlGracefulRestartCapability getAdvertisedLlGracefulRestartCapability()
Description copied from interface:BGPSession
Return advertised long-lived graceful capability containing the list of tables with stale time which the peer has advertised to support.- Specified by:
getAdvertisedLlGracefulRestartCapability
in interfaceBGPSession
- Returns:
- Advertised long-lived graceful restart capability.
-
getState
public State getState()
-
getBgpId
public final org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address getBgpId()
Description copied from interface:BGPSession
Return the BGP router ID advertised by the peer.- Specified by:
getBgpId
in interfaceBGPSession
- Returns:
- Peer's BGP Router ID.
-
getAsNumber
public final org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.AsNumber getAsNumber()
Description copied from interface:BGPSession
Return the AS number which the peer advertises.- Specified by:
getAsNumber
in interfaceBGPSession
- Returns:
- Peer's AS Number
-
getLimiter
public ChannelOutputLimiter getLimiter()
-
channelInactive
public final void channelInactive(io.netty.channel.ChannelHandlerContext ctx) throws Exception
- Specified by:
channelInactive
in interfaceio.netty.channel.ChannelInboundHandler
- Overrides:
channelInactive
in classio.netty.channel.ChannelInboundHandlerAdapter
- Throws:
Exception
-
channelRead0
protected final void channelRead0(io.netty.channel.ChannelHandlerContext ctx, org.opendaylight.yangtools.yang.binding.Notification msg)
- Specified by:
channelRead0
in classio.netty.channel.SimpleChannelInboundHandler<org.opendaylight.yangtools.yang.binding.Notification>
-
handlerAdded
public final void handlerAdded(io.netty.channel.ChannelHandlerContext ctx)
- Specified by:
handlerAdded
in interfaceio.netty.channel.ChannelHandler
- Overrides:
handlerAdded
in classio.netty.channel.ChannelHandlerAdapter
-
exceptionCaught
public void exceptionCaught(io.netty.channel.ChannelHandlerContext ctx, Throwable cause)
- Specified by:
exceptionCaught
in interfaceio.netty.channel.ChannelHandler
- Specified by:
exceptionCaught
in interfaceio.netty.channel.ChannelInboundHandler
- Overrides:
exceptionCaught
in classio.netty.channel.ChannelInboundHandlerAdapter
-
getBGPSessionState
public BGPSessionState getBGPSessionState()
Description copied from interface:BGPSessionStateProvider
BGP Operational Session State.- Specified by:
getBGPSessionState
in interfaceBGPSessionStateProvider
- Returns:
- BGPSessionState
-
getBGPTimersState
public BGPTimersState getBGPTimersState()
Description copied from interface:BGPSessionStateProvider
BGP Operational Timers State.- Specified by:
getBGPTimersState
in interfaceBGPSessionStateProvider
- Returns:
- BGPTimersState
-
getBGPTransportState
public BGPTransportState getBGPTransportState()
Description copied from interface:BGPSessionStateProvider
BGP Operational Transport State.- Specified by:
getBGPTransportState
in interfaceBGPSessionStateProvider
- Returns:
- BGPTransportState
-
registerMessagesCounter
public void registerMessagesCounter(BGPMessagesListener bgpMessagesListener)
Description copied from interface:BGPSessionStateProvider
Register BGP Operational Messages State Listener.- Specified by:
registerMessagesCounter
in interfaceBGPSessionStateProvider
- Parameters:
bgpMessagesListener
- BGPMessagesListener
-
addDecoderConstraint
public <T extends PeerConstraint> void addDecoderConstraint(Class<T> constraintClass, T constraint)
Description copied from interface:BGPSession
Add peer constraint to session pipeline decoder.- Specified by:
addDecoderConstraint
in interfaceBGPSession
-
schedule
public io.netty.util.concurrent.ScheduledFuture<?> schedule(Runnable command, long delay, TimeUnit unit)
Description copied from interface:BGPSession
Schedule a task to be executed in the context of the session handling thread.- Specified by:
schedule
in interfaceBGPSession
- Parameters:
command
- the task to executedelay
- the time from now to delay executionunit
- the time unit of the delay parameter- Returns:
- Future representing the scheduled task.
-
-