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);
     }