Expose cookie information in packet context
Change-Id: I7f2cb331a19aeca1a578aade6488a6480d15496c
diff --git a/core/api/src/main/java/org/onosproject/net/packet/DefaultInboundPacket.java b/core/api/src/main/java/org/onosproject/net/packet/DefaultInboundPacket.java
index 96f872f..3f5f138 100644
--- a/core/api/src/main/java/org/onosproject/net/packet/DefaultInboundPacket.java
+++ b/core/api/src/main/java/org/onosproject/net/packet/DefaultInboundPacket.java
@@ -20,6 +20,7 @@
import java.nio.ByteBuffer;
import java.util.Objects;
+import java.util.Optional;
import static com.google.common.base.MoreObjects.toStringHelper;
@@ -31,6 +32,7 @@
private final ConnectPoint receivedFrom;
private final Ethernet parsed;
private final ByteBuffer unparsed;
+ private final Optional<Long> cookie;
/**
* Creates an immutable inbound packet.
@@ -39,11 +41,25 @@
* @param parsed parsed ethernet frame
* @param unparsed unparsed raw bytes
*/
- public DefaultInboundPacket(ConnectPoint receivedFrom, Ethernet parsed,
+ public DefaultInboundPacket(ConnectPoint receivedFrom, Ethernet parsed,
ByteBuffer unparsed) {
+ this(receivedFrom, parsed, unparsed, Optional.empty());
+ }
+
+ /**
+ * Creates an immutable inbound packet with cookie.
+ *
+ * @param receivedFrom connection point where received
+ * @param parsed parsed ethernet frame
+ * @param unparsed unparsed raw bytes
+ * @param cookie cookie
+ */
+ public DefaultInboundPacket(ConnectPoint receivedFrom, Ethernet parsed,
+ ByteBuffer unparsed, Optional<Long> cookie) {
this.receivedFrom = receivedFrom;
this.parsed = parsed;
this.unparsed = unparsed;
+ this.cookie = cookie;
}
@Override
@@ -63,6 +79,11 @@
}
@Override
+ public Optional<Long> cookie() {
+ return cookie;
+ }
+
+ @Override
public int hashCode() {
return Objects.hash(receivedFrom, parsed, unparsed);
}
diff --git a/core/api/src/main/java/org/onosproject/net/packet/InboundPacket.java b/core/api/src/main/java/org/onosproject/net/packet/InboundPacket.java
index 3fd5814..48fdb20 100644
--- a/core/api/src/main/java/org/onosproject/net/packet/InboundPacket.java
+++ b/core/api/src/main/java/org/onosproject/net/packet/InboundPacket.java
@@ -19,6 +19,7 @@
import org.onlab.packet.Ethernet;
import java.nio.ByteBuffer;
+import java.util.Optional;
/**
* Represents a data packet intercepted from an infrastructure device.
@@ -47,4 +48,10 @@
*/
ByteBuffer unparsed();
+ /**
+ * Returns the cookie in the packet in message.
+ *
+ * @return optional flow cookie
+ */
+ Optional<Long> cookie();
}
diff --git a/core/api/src/test/java/org/onosproject/net/packet/DefaultInboundPacketTest.java b/core/api/src/test/java/org/onosproject/net/packet/DefaultInboundPacketTest.java
index eda6824..b051ad4 100644
--- a/core/api/src/test/java/org/onosproject/net/packet/DefaultInboundPacketTest.java
+++ b/core/api/src/test/java/org/onosproject/net/packet/DefaultInboundPacketTest.java
@@ -16,6 +16,7 @@
package org.onosproject.net.packet;
import java.nio.ByteBuffer;
+import java.util.Optional;
import org.junit.Test;
import org.onlab.packet.Ethernet;
@@ -41,15 +42,22 @@
final DefaultInboundPacket packet1 =
new DefaultInboundPacket(connectPoint("d1", 1),
eth,
- byteBuffer);
+ byteBuffer,
+ Optional.of(1L));
final DefaultInboundPacket sameAsPacket1 =
new DefaultInboundPacket(connectPoint("d1", 1),
eth,
- byteBuffer);
+ byteBuffer,
+ Optional.of(1L));
final DefaultInboundPacket packet2 =
new DefaultInboundPacket(connectPoint("d2", 1),
eth,
byteBuffer);
+ final DefaultInboundPacket sameAsPacket2 =
+ new DefaultInboundPacket(connectPoint("d2", 1),
+ eth,
+ byteBuffer,
+ Optional.empty());
/**
* Checks that the DefaultInboundPacket class is immutable.
*/
@@ -65,7 +73,7 @@
public void testEquals() {
new EqualsTester()
.addEqualityGroup(packet1, sameAsPacket1)
- .addEqualityGroup(packet2)
+ .addEqualityGroup(packet2, sameAsPacket2)
.testEquals();
}
@@ -77,5 +85,6 @@
assertThat(packet1.receivedFrom(), equalTo(connectPoint("d1", 1)));
assertThat(packet1.parsed(), equalTo(eth));
assertThat(packet1.unparsed(), notNullValue());
+ assertThat(packet1.cookie(), equalTo(Optional.of(1L)));
}
}