X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fsal%2Fapi%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fsal%2Fpacket%2FLLDPTLV.java;h=35244ea697d871617b09db6e232da95af0d51ebf;hb=44a86821d69cd804b6b23b437e0b27136eaac2b5;hp=3847e59a13c24ed021e6cf986bc6bee4dd9572f9;hpb=340a93f17c03395391339a82b3a036afd374f569;p=controller.git diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/packet/LLDPTLV.java b/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/packet/LLDPTLV.java index 3847e59a13..35244ea697 100644 --- a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/packet/LLDPTLV.java +++ b/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/packet/LLDPTLV.java @@ -9,13 +9,12 @@ 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; @@ -31,7 +30,7 @@ public class LLDPTLV extends Packet { 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; @@ -41,7 +40,7 @@ public class LLDPTLV extends Packet { 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; @@ -143,39 +142,72 @@ public class LLDPTLV extends Packet { @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 SystemName TLV value + * + * @param nodeId + * node identifier string + * @return the SystemName TLV value in byte array + */ + static public byte[] createSystemNameTLVValue(String nodeId) { + byte[] nid = nodeId.getBytes(); + return nid; } /** * Creates the ChassisID TLV value including the subtype and ChassisID * string - * + * * @param nodeId * node identifier string * @return the ChassisID TLV value in byte array @@ -203,13 +235,13 @@ public class LLDPTLV extends Packet { /** * 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); @@ -220,13 +252,13 @@ public class LLDPTLV extends Packet { /** * 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); @@ -240,7 +272,7 @@ public class LLDPTLV extends Packet { /** * Retrieves the string from TLV value and returns it in HexString format - * + * * @param tlvValue * the TLV value * @param tlvLen @@ -256,7 +288,7 @@ public class LLDPTLV extends Packet { /** * Retrieves the string from TLV value - * + * * @param tlvValue * the TLV value * @param tlvLen @@ -264,16 +296,23 @@ public class LLDPTLV extends Packet { * @return the string */ static public String getStringValue(byte[] tlvValue, int tlvLen) { + byte[] pidSubType = new byte[portIDSubType.length]; byte[] pidBytes = new byte[tlvLen - portIDSubType.length]; + System.arraycopy(tlvValue, 0, pidSubType, 0, + pidSubType.length); System.arraycopy(tlvValue, portIDSubType.length, pidBytes, 0, pidBytes.length); - return (new String(pidBytes)); + if (pidSubType[0] == (byte) 0x3) { + return HexEncode.bytesToHexStringFormat(pidBytes); + } else { + 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