[VOL-3660] Add support for PPPoED message decoding and flow installation on OltPipeline.

Signed-off-by: Gustavo Silva <gsilva@furukawalatam.com>
Change-Id: I1a6f318d71b8c1f59fdf582edacd44e9c46cd061
(cherry picked from commit 2bcc805d09f59aa5389a921c8b442c93d805a2d0)
diff --git a/utils/misc/src/main/java/org/onlab/packet/PPPoEDTag.java b/utils/misc/src/main/java/org/onlab/packet/PPPoEDTag.java
new file mode 100644
index 0000000..15f6f26
--- /dev/null
+++ b/utils/misc/src/main/java/org/onlab/packet/PPPoEDTag.java
@@ -0,0 +1,89 @@
+/*
+ * Copyright 2021-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.onlab.packet;
+
+import java.util.Arrays;
+
+public class PPPoEDTag {
+    protected short type;
+    protected short length;
+    protected byte[] value;
+
+    // PPPoED tag types
+    public static final short PPPOED_TAG_END_OF_LIST = 0x0000;
+    public static final short PPPOED_TAG_SERVICE_NAME = 0x0101;
+    public static final short PPPOED_TAG_AC_NAME = 0x0102;
+    public static final short PPPOED_TAG_HOST_UNIQ = 0x0103;
+    public static final short PPPOED_TAG_AC_COOKIE = 0x0104;
+    public static final short PPPOED_TAG_VENDOR_SPECIFIC = 0x0105;
+    public static final short PPPOED_TAG_RELAY_SESSION_ID = 0x0110;
+    public static final short PPPOED_TAG_SERVICE_NAME_ERROR = 0x0201;
+    public static final short PPPOED_TAG_AC_SYSTEM_ERROR = 0x0202;
+    public static final short PPPOED_TAG_GENERIC_ERROR = 0x0203;
+
+    /**
+     * Default constructor.
+     */
+    public PPPoEDTag() {
+    }
+
+    /**
+     * Constructs a PPPoED tag with type, length and value.
+     *
+     * @param type type
+     * @param length length
+     * @param value value
+     */
+    public PPPoEDTag(final short type, final short length, final byte[] value) {
+        this.type = type;
+        this.length = length;
+        this.value = value;
+    }
+
+    public short getType() {
+        return type;
+    }
+
+    public void setType(short type) {
+        this.type = type;
+    }
+
+    public short getLength() {
+        return length;
+    }
+
+    public void setLength(short length) {
+        this.length = length;
+    }
+
+    public byte[] getValue() {
+        return value;
+    }
+
+    public void setValue(byte[] value) {
+        this.value = value;
+    }
+
+    @Override
+    public String toString() {
+        return "PPPoEDTag{" +
+                "type=" + type +
+                ", length=" + length +
+                ", value=" + Arrays.toString(value) +
+                '}';
+    }
+}