Carry information about source ONOS node in each route.
Change-Id: I4877a048771935e3dbe310272e0b82c77b8678af
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/routing/Route.java b/incubator/api/src/main/java/org/onosproject/incubator/net/routing/Route.java
index 0ae4952..31fe8b7 100644
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/routing/Route.java
+++ b/incubator/api/src/main/java/org/onosproject/incubator/net/routing/Route.java
@@ -18,6 +18,7 @@
import org.onlab.packet.IpAddress;
import org.onlab.packet.IpPrefix;
+import org.onosproject.cluster.NodeId;
import java.util.Objects;
@@ -33,6 +34,8 @@
private static final String VERSION_MISMATCH =
"Prefix and next hop must be in the same address family";
+ private static final NodeId UNDEFINED = new NodeId("-");
+
/**
* Source of the route.
*/
@@ -61,15 +64,28 @@
private final Source source;
private final IpPrefix prefix;
private final IpAddress nextHop;
+ private final NodeId sourceNode;
/**
* Creates a route.
*
* @param source route source
* @param prefix IP prefix
- * @param nextHop net hop IP address
+ * @param nextHop next hop IP address
*/
public Route(Source source, IpPrefix prefix, IpAddress nextHop) {
+ this(source, prefix, nextHop, UNDEFINED);
+ }
+
+ /**
+ * Creates a route.
+ *
+ * @param source route source
+ * @param prefix IP prefix
+ * @param nextHop next hop IP address
+ * @param sourceNode ONOS node the route was sourced from
+ */
+ public Route(Source source, IpPrefix prefix, IpAddress nextHop, NodeId sourceNode) {
checkNotNull(prefix);
checkNotNull(nextHop);
checkArgument(prefix.version().equals(nextHop.version()), VERSION_MISMATCH);
@@ -77,6 +93,7 @@
this.source = checkNotNull(source);
this.prefix = prefix;
this.nextHop = nextHop;
+ this.sourceNode = checkNotNull(sourceNode);
}
/**
@@ -106,6 +123,15 @@
return nextHop;
}
+ /**
+ * Returns the ONOS node the route was sourced from.
+ *
+ * @return ONOS node ID
+ */
+ public NodeId sourceNode() {
+ return sourceNode;
+ }
+
@Override
public int hashCode() {
return Objects.hash(prefix, nextHop);