2 * Copyright (c) 2016 Ericsson India Global Services Pvt Ltd. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.vpnservice.mdsalutil.packet;
10 import java.util.HashMap;
11 import java.util.LinkedHashMap;
14 import org.apache.commons.lang3.tuple.ImmutablePair;
15 import org.apache.commons.lang3.tuple.Pair;
16 import org.opendaylight.controller.liblldp.BitBufferHelper;
18 public class IEEE8021Q extends Ethernet {
19 private static final String PRIORITY = "Priority";
20 private static final String CFI = "CFI";
21 private static final String VLAN_ID = "VlanId";
22 private static final String ETHT = "EtherType";
24 private static Map<String, Pair<Integer, Integer>> fieldCoordinates = new LinkedHashMap<String, Pair<Integer, Integer>>() {
25 private static final long serialVersionUID = 1L;
27 put(PRIORITY, new ImmutablePair<Integer, Integer>(0, 3));
28 put(CFI, new ImmutablePair<Integer, Integer>(3, 1));
29 put(VLAN_ID, new ImmutablePair<Integer, Integer>(4, 12));
30 put(ETHT, new ImmutablePair<Integer, Integer>(16, 16));
33 private Map<String, byte[]> fieldValues;
36 * Default constructor that creates and sets the HashMap
40 fieldValues = new HashMap<String, byte[]>();
41 hdrFieldCoordMap = fieldCoordinates;
42 hdrFieldsMap = fieldValues;
45 public IEEE8021Q(boolean writeAccess) {
47 fieldValues = new HashMap<String, byte[]>();
48 hdrFieldCoordMap = fieldCoordinates;
49 hdrFieldsMap = fieldValues;
52 public short getPriority() {
53 return (BitBufferHelper.getShort(fieldValues.get(PRIORITY)));
56 public short getCfi() {
57 return (BitBufferHelper.getShort(fieldValues.get(CFI)));
60 public short getVlanId() {
61 return (BitBufferHelper.getShort(fieldValues.get(VLAN_ID)));
65 public short getEtherType() {
66 return BitBufferHelper.getShort(fieldValues.get(ETHT));
69 public IEEE8021Q setPriority(short priority) {
70 byte[] priorityByte = BitBufferHelper.toByteArray(priority);
71 fieldValues.put(PRIORITY, priorityByte);
75 public IEEE8021Q setCFI(short cfi) {
76 byte[] cfiByte = BitBufferHelper
78 fieldValues.put(CFI, cfiByte);
82 public IEEE8021Q setVlanId(short vlanId) {
83 byte[] vlan = BitBufferHelper
85 fieldValues.put(VLAN_ID, vlan);
90 public IEEE8021Q setEtherType(short etherType) {
91 byte[] ethType = BitBufferHelper.toByteArray(etherType);
92 fieldValues.put(ETHT, ethType);
97 public int hashCode() {
99 int result = super.hashCode();
100 result = prime * result
101 + ((fieldValues == null) ? 0 : fieldValues.hashCode());
106 public boolean equals(Object obj) {
110 if (!super.equals(obj)) {
113 if (getClass() != obj.getClass()) {
116 IEEE8021Q other = (IEEE8021Q) obj;
117 if (fieldValues == null) {
118 if (other.fieldValues != null) {
121 } else if (!fieldValues.equals(other.fieldValues)) {