package org.opendaylight.controller.sal.packet;
import java.io.UnsupportedEncodingException;
-import java.util.HashMap;
-
+import java.nio.charset.Charset;
import java.util.Arrays;
+import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
-import org.apache.commons.lang3.builder.EqualsBuilder;
-import org.apache.commons.lang3.builder.HashCodeBuilder;
+
import org.apache.commons.lang3.tuple.MutablePair;
import org.apache.commons.lang3.tuple.Pair;
import org.opendaylight.controller.sal.utils.HexEncode;
private static final String VALUE = "Value";
private static final int LLDPTLVFields = 3;
public static final byte[] OFOUI = new byte[] { (byte) 0x00, (byte) 0x26,
- (byte) 0xe1 }; // OpenFlow OUI
+ (byte) 0xe1 }; // OpenFlow OUI
public static final byte[] customTlvSubType = new byte[] { 0 };
public static final int customTlvOffset = OFOUI.length
+ customTlvSubType.length;
public enum TLVType {
Unknown((byte) 0), ChassisID((byte) 1), PortID((byte) 2), TTL((byte) 3), PortDesc(
(byte) 4), SystemName((byte) 5), SystemDesc((byte) 6), Custom(
- (byte) 127);
+ (byte) 127);
private byte value;
@Override
public int hashCode() {
- return HashCodeBuilder.reflectionHashCode(this);
+ final int prime = 31;
+ int result = super.hashCode();
+ result = prime * result
+ + ((fieldValues == null) ? 0 : fieldValues.hashCode());
+ return result;
}
@Override
public boolean equals(Object obj) {
- return EqualsBuilder.reflectionEquals(this, obj);
+ if (this == obj)
+ return true;
+ if (!super.equals(obj))
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ LLDPTLV other = (LLDPTLV) obj;
+ if (fieldValues == null) {
+ if (other.fieldValues != null)
+ return false;
+ } else if (!fieldValues.equals(other.fieldValues))
+ return false;
+ return true;
}
@Override
public int getfieldnumBits(String fieldName) {
if (fieldName.equals(VALUE)) {
- return (NetUtils.NumBitsInAByte * (int) BitBufferHelper.getShort(
+ return (NetUtils.NumBitsInAByte * BitBufferHelper.getShort(
fieldValues.get(LENGTH), fieldCoordinates.get(LENGTH)
- .getRight().intValue()));
+ .getRight().intValue()));
}
return fieldCoordinates.get(fieldName).getRight();
}
/**
* Returns the size in bits of the whole TLV
- *
+ *
* @return int - size in bits of full TLV
*/
public int getTLVSize() {
return (LLDPTLV.fieldCoordinates.get(TYPE).getRight() + // static
LLDPTLV.fieldCoordinates.get(LENGTH).getRight() + // static
- getfieldnumBits(VALUE)); // variable
+ getfieldnumBits(VALUE)); // variable
}
/**
* Creates the ChassisID TLV value including the subtype and ChassisID
* string
- *
+ *
* @param nodeId
* node identifier string
* @return the ChassisID TLV value in byte array
/**
* Creates the PortID TLV value including the subtype and PortID string
- *
+ *
* @param portId
* port identifier string
* @return the PortID TLV value in byte array
*/
static public byte[] createPortIDTLVValue(String portId) {
- byte[] pid = portId.getBytes();
+ byte[] pid = portId.getBytes(Charset.defaultCharset());
byte[] pidValue = new byte[pid.length + portIDSubType.length];
System.arraycopy(portIDSubType, 0, pidValue, 0, portIDSubType.length);
/**
* Creates the custom TLV value including OUI, subtype and custom string
- *
+ *
* @param portId
* port identifier string
* @return the custom TLV value in byte array
*/
static public byte[] createCustomTLVValue(String customString) {
- byte[] customArray = customString.getBytes();
+ byte[] customArray = customString.getBytes(Charset.defaultCharset());
byte[] customValue = new byte[customTlvOffset + customArray.length];
System.arraycopy(OFOUI, 0, customValue, 0, OFOUI.length);
/**
* Retrieves the string from TLV value and returns it in HexString format
- *
+ *
* @param tlvValue
* the TLV value
* @param tlvLen
/**
* Retrieves the string from TLV value
- *
+ *
* @param tlvValue
* the TLV value
* @param tlvLen
byte[] pidBytes = new byte[tlvLen - portIDSubType.length];
System.arraycopy(tlvValue, portIDSubType.length, pidBytes, 0,
pidBytes.length);
- return (new String(pidBytes));
+ return (new String(pidBytes, Charset.defaultCharset()));
}
/**
* Retrieves the custom string from the Custom TLV value which includes OUI,
* subtype and custom string
- *
+ *
* @param customTlvValue
* the custom TLV value
* @param customTlvLen