Class BGPSessionImpl

java.lang.Object
io.netty.channel.ChannelHandlerAdapter
io.netty.channel.ChannelInboundHandlerAdapter
io.netty.channel.SimpleChannelInboundHandler<org.opendaylight.yangtools.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.binding.Notification<?>> implements BGPSession, BGPSessionStateProvider, AutoCloseable
  • Constructor Details

  • Method Details

    • 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 interface AutoCloseable
    • closeWithoutMessage

      public void closeWithoutMessage()
      Description copied from interface: BGPSession
      Close peer session without sending Notification message.
      Specified by:
      closeWithoutMessage in interface BGPSession
    • toString

      public final String toString()
      Overrides:
      toString in class Object
    • 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 interface BGPSession
      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 interface BGPSession
      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 interface BGPSession
      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 interface BGPSession
      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 interface BGPSession
      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 interface BGPSession
      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 interface io.netty.channel.ChannelInboundHandler
      Overrides:
      channelInactive in class io.netty.channel.ChannelInboundHandlerAdapter
      Throws:
      Exception
    • channelRead0

      protected final void channelRead0(io.netty.channel.ChannelHandlerContext ctx, org.opendaylight.yangtools.binding.Notification<?> msg)
      Specified by:
      channelRead0 in class io.netty.channel.SimpleChannelInboundHandler<org.opendaylight.yangtools.binding.Notification<?>>
    • handlerAdded

      public final void handlerAdded(io.netty.channel.ChannelHandlerContext ctx)
      Specified by:
      handlerAdded in interface io.netty.channel.ChannelHandler
      Overrides:
      handlerAdded in class io.netty.channel.ChannelHandlerAdapter
    • exceptionCaught

      public void exceptionCaught(io.netty.channel.ChannelHandlerContext ctx, Throwable cause)
      Specified by:
      exceptionCaught in interface io.netty.channel.ChannelHandler
      Specified by:
      exceptionCaught in interface io.netty.channel.ChannelInboundHandler
      Overrides:
      exceptionCaught in class io.netty.channel.ChannelInboundHandlerAdapter
    • getBGPSessionState

      public BGPSessionState getBGPSessionState()
      Description copied from interface: BGPSessionStateProvider
      BGP Operational Session State.
      Specified by:
      getBGPSessionState in interface BGPSessionStateProvider
      Returns:
      BGPSessionState
    • getBGPTimersState

      public BGPTimersState getBGPTimersState()
      Description copied from interface: BGPSessionStateProvider
      BGP Operational Timers State.
      Specified by:
      getBGPTimersState in interface BGPSessionStateProvider
      Returns:
      BGPTimersState
    • getBGPTransportState

      public BGPTransportState getBGPTransportState()
      Description copied from interface: BGPSessionStateProvider
      BGP Operational Transport State.
      Specified by:
      getBGPTransportState in interface BGPSessionStateProvider
      Returns:
      BGPTransportState
    • registerMessagesCounter

      public void registerMessagesCounter(BGPMessagesListener bgpMessagesListener)
      Description copied from interface: BGPSessionStateProvider
      Register BGP Operational Messages State Listener.
      Specified by:
      registerMessagesCounter in interface BGPSessionStateProvider
      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 interface BGPSession
    • 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 interface BGPSession
      Parameters:
      command - the task to execute
      delay - the time from now to delay execution
      unit - the time unit of the delay parameter
      Returns:
      Future representing the scheduled task.