Teach BgpSessionImpl about graceful restart Mode 42/78742/8
authorMatej Perina <matej.perina@pantheon.tech>
Thu, 13 Dec 2018 08:58:18 +0000 (09:58 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Fri, 14 Dec 2018 02:56:30 +0000 (03:56 +0100)
This adds API to request graceful restart operational mode.

JIRA: BGPCEP-809
Change-Id: I5f840b167eb635ee10af9570dce9b1dbd71e591b
Signed-off-by: Matej Perina <matej.perina@pantheon.tech>
bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/state/BGPPeerStateImpl.java
bgp/rib-spi/src/main/java/org/opendaylight/protocol/bgp/rib/spi/state/BGPGracelfulRestartState.java

index 713a0f39d863a85bb3711cf8267520ad03557e15..485e40af47017f3ea41d7223e2fde79c59239059 100644 (file)
@@ -32,6 +32,7 @@ import org.opendaylight.protocol.bgp.rib.spi.state.BGPGracelfulRestartState;
 import org.opendaylight.protocol.bgp.rib.spi.state.BGPPeerMessagesState;
 import org.opendaylight.protocol.bgp.rib.spi.state.BGPPeerState;
 import org.opendaylight.protocol.bgp.rib.spi.state.BGPPeerStateConsumer;
+import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.operational.rev151009.BgpAfiSafiGracefulRestartState.Mode;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev180329.Notify;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev180329.Update;
@@ -275,4 +276,15 @@ public abstract class BGPPeerStateImpl extends DefaultRibReference implements BG
     protected final synchronized void setActive(final boolean active) {
         this.active = active;
     }
+
+    @Override
+    public final synchronized Mode getMode() {
+        if (this.afiSafisGracefulAdvertized.isEmpty()) {
+            return Mode.HELPERONLY;
+        }
+        if (this.afiSafisGracefulReceived.isEmpty()) {
+            return Mode.REMOTEHELPER;
+        }
+        return Mode.BILATERAL;
+    }
 }
index d7b559737fe36ed8a27c4957dd53c82fdd4013ee..cc4815ba97d5c6bea91985c400b28bd68fc27419 100644 (file)
@@ -9,6 +9,7 @@
 package org.opendaylight.protocol.bgp.rib.spi.state;
 
 import javax.annotation.Nonnull;
+import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.operational.rev151009.BgpAfiSafiGracefulRestartState.Mode;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev180329.rib.TablesKey;
 
 /**
@@ -53,4 +54,12 @@ public interface BGPGracelfulRestartState {
      * @return peer is restarting
      */
     boolean isPeerRestarting();
+
+    /**
+     * Returns operational mode of graceful restart. Result depends on advertising
+     * and receiving graceful restart capability to/from peer.
+     *
+     * @return graceful restart operational mode
+     */
+    Mode getMode();
 }