OPNFLWPLUG-972 : Move liblldp from controller to openflowplugin
[controller.git] / opendaylight / commons / liblldp / src / main / java / org / opendaylight / controller / liblldp / LLDP.java
diff --git a/opendaylight/commons/liblldp/src/main/java/org/opendaylight/controller/liblldp/LLDP.java b/opendaylight/commons/liblldp/src/main/java/org/opendaylight/controller/liblldp/LLDP.java
deleted file mode 100644 (file)
index 7ed1ede..0000000
+++ /dev/null
@@ -1,294 +0,0 @@
-/*
- * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-package org.opendaylight.controller.liblldp;
-
-import com.google.common.collect.Iterables;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Class that represents the LLDP frame objects
- */
-
-public class LLDP extends Packet {
-    private static final String CHASSISID = "ChassisId";
-    private static final String SYSTEMNAMEID = "SystemNameID";
-    private static final String PORTID = "PortId";
-    private static final String TTL = "TTL";
-    private static final int LLDPDefaultTlvs = 3;
-    private static final LLDPTLV emptyTLV = new LLDPTLV().setLength((short) 0).setType((byte) 0);
-    public static final byte[] LLDPMulticastMac = { 1, (byte) 0x80, (byte) 0xc2, 0, 0, (byte) 0xe };
-
-    private Map<Byte, LLDPTLV> mandatoryTLVs;
-    private Map<Byte, LLDPTLV> optionalTLVs;
-    private Map<CustomTLVKey, LLDPTLV> customTLVs;
-
-    /**
-     * Default constructor that creates the tlvList LinkedHashMap
-     */
-    public LLDP() {
-        init();
-    }
-
-    /**
-     * Constructor that creates the tlvList LinkedHashMap and sets the write access for the same
-     */
-    public LLDP(final boolean writeAccess) {
-        super(writeAccess);
-        init();
-    }
-
-    private void init() {
-        mandatoryTLVs = new LinkedHashMap<>(LLDPDefaultTlvs);
-        optionalTLVs = new LinkedHashMap<>();
-        customTLVs = new LinkedHashMap<>();
-    }
-
-    /**
-     * @param String
-     *            - description of the type of TLV
-     * @return byte - type of TLV
-     */
-    private byte getType(final String typeDesc) {
-        if (typeDesc.equals(CHASSISID)) {
-            return LLDPTLV.TLVType.ChassisID.getValue();
-        } else if (typeDesc.equals(PORTID)) {
-            return LLDPTLV.TLVType.PortID.getValue();
-        } else if (typeDesc.equals(TTL)) {
-            return LLDPTLV.TLVType.TTL.getValue();
-        } else if (typeDesc.equals(SYSTEMNAMEID)) {
-            return LLDPTLV.TLVType.SystemName.getValue();
-        } else {
-            return LLDPTLV.TLVType.Unknown.getValue();
-        }
-    }
-
-    private LLDPTLV getFromTLVs(final Byte type) {
-        LLDPTLV tlv = null;
-        tlv = mandatoryTLVs.get(type);
-        if (tlv == null) {
-            tlv = optionalTLVs.get(type);
-        }
-        return tlv;
-    }
-
-    private void putToTLVs(final Byte type, final LLDPTLV tlv) {
-        if (type == LLDPTLV.TLVType.ChassisID.getValue() || type == LLDPTLV.TLVType.PortID.getValue()
-                || type == LLDPTLV.TLVType.TTL.getValue()) {
-            mandatoryTLVs.put(type, tlv);
-        } else if (type != LLDPTLV.TLVType.Custom.getValue()) {
-            optionalTLVs.put(type, tlv);
-        }
-    }
-
-    /**
-     * @param type
-     *            - description of the type of TLV
-     * @return LLDPTLV - full TLV
-     */
-    public LLDPTLV getTLV(final String type) {
-        return getFromTLVs(getType(type));
-    }
-
-    public LLDPTLV getCustomTLV(final CustomTLVKey key) {
-        return customTLVs.get(key);
-    }
-
-    /**
-     * @param type
-     *            - description of the type of TLV
-     * @param tlv
-     *            - tlv to set
-     */
-    public void setTLV(final String type, final LLDPTLV tlv) {
-        putToTLVs(getType(type), tlv);
-    }
-
-    /**
-     * @return the chassisId TLV
-     */
-    public LLDPTLV getChassisId() {
-        return getTLV(CHASSISID);
-    }
-
-    /**
-     * @param chassisId
-     *            - the chassisId to set
-     */
-    public LLDP setChassisId(final LLDPTLV chassisId) {
-        setTLV(CHASSISID, chassisId);
-        return this;
-    }
-
-    /**
-     * @return the SystemName TLV
-     */
-    public LLDPTLV getSystemNameId() {
-        return getTLV(SYSTEMNAMEID);
-    }
-
-    /**
-     * @param systemNameId
-     *            - the systemNameId to set
-     */
-    public LLDP setSystemNameId(final LLDPTLV systemNameId) {
-        setTLV(SYSTEMNAMEID, systemNameId);
-        return this;
-    }
-
-    /**
-     * @return LLDPTLV - the portId TLV
-     */
-    public LLDPTLV getPortId() {
-        return getTLV(PORTID);
-    }
-
-    /**
-     * @param portId
-     *            - the portId to set
-     * @return LLDP
-     */
-    public LLDP setPortId(final LLDPTLV portId) {
-        setTLV(PORTID, portId);
-        return this;
-    }
-
-    /**
-     * @return LLDPTLV - the ttl TLV
-     */
-    public LLDPTLV getTtl() {
-        return getTLV(TTL);
-    }
-
-    /**
-     * @param ttl
-     *            - the ttl to set
-     * @return LLDP
-     */
-    public LLDP setTtl(final LLDPTLV ttl) {
-        setTLV(TTL, ttl);
-        return this;
-    }
-
-    /**
-     * @return the optionalTLVList
-     */
-    public Iterable<LLDPTLV> getOptionalTLVList() {
-        return optionalTLVs.values();
-    }
-
-    /**
-     * @return the customTlvList
-     */
-    public Iterable<LLDPTLV> getCustomTlvList() {
-        return customTLVs.values();
-    }
-
-    /**
-     * @param optionalTLVList
-     *            the optionalTLVList to set
-     * @return LLDP
-     */
-    public LLDP setOptionalTLVList(final List<LLDPTLV> optionalTLVList) {
-        for (LLDPTLV tlv : optionalTLVList) {
-            optionalTLVs.put(tlv.getType(), tlv);
-        }
-        return this;
-    }
-
-    /**
-     * @param customTLV
-     *            the list of custom TLVs to set
-     * @return this LLDP
-     */
-    public LLDP addCustomTLV(final LLDPTLV customTLV) {
-        CustomTLVKey key = new CustomTLVKey(LLDPTLV.extractCustomOUI(customTLV),
-                LLDPTLV.extractCustomSubtype(customTLV));
-        customTLVs.put(key, customTLV);
-
-        return this;
-    }
-
-    @Override
-    public Packet deserialize(final byte[] data, final int bitOffset, final int size) throws PacketException {
-        int lldpOffset = bitOffset; // LLDP start
-        int lldpSize = size; // LLDP size
-
-        if (LOG.isTraceEnabled()) {
-            LOG.trace("LLDP: {} (offset {} bitsize {})", new Object[] { HexEncode.bytesToHexString(data),
-                    lldpOffset, lldpSize });
-        }
-        /*
-         * Deserialize the TLVs until we reach the end of the packet
-         */
-        while (lldpSize > 0) {
-            LLDPTLV tlv = new LLDPTLV();
-            tlv.deserialize(data, lldpOffset, lldpSize);
-            if (tlv.getType() == 0 && tlv.getLength() == 0) {
-                break;
-            }
-            int tlvSize = tlv.getTLVSize(); // Size of current TLV in bits
-            lldpOffset += tlvSize;
-            lldpSize -= tlvSize;
-            if (tlv.getType() == LLDPTLV.TLVType.Custom.getValue()) {
-                addCustomTLV(tlv);
-            } else {
-                this.putToTLVs(tlv.getType(), tlv);
-            }
-        }
-        return this;
-    }
-
-    @Override
-    public byte[] serialize() throws PacketException {
-        int startOffset = 0;
-        byte[] serializedBytes = new byte[getLLDPPacketLength()];
-
-        final Iterable<LLDPTLV> allTlvs = Iterables.concat(mandatoryTLVs.values(), optionalTLVs.values(), customTLVs.values());
-        for (LLDPTLV tlv : allTlvs) {
-            int numBits = tlv.getTLVSize();
-            try {
-                BitBufferHelper.setBytes(serializedBytes, tlv.serialize(), startOffset, numBits);
-            } catch (final BufferException e) {
-                throw new PacketException(e.getMessage());
-            }
-            startOffset += numBits;
-        }
-        // Now add the empty LLDPTLV at the end
-        try {
-            BitBufferHelper.setBytes(serializedBytes, LLDP.emptyTLV.serialize(), startOffset,
-                    LLDP.emptyTLV.getTLVSize());
-        } catch (final BufferException e) {
-            throw new PacketException(e.getMessage());
-        }
-
-        if (LOG.isTraceEnabled()) {
-            LOG.trace("LLDP: serialized: {}", HexEncode.bytesToHexString(serializedBytes));
-        }
-        return serializedBytes;
-    }
-
-    /**
-     * Returns the size of LLDP packet in bytes
-     *
-     * @return int - LLDP Packet size in bytes
-     */
-    private int getLLDPPacketLength() {
-        int len = 0;
-
-        for (LLDPTLV lldptlv : Iterables.concat(mandatoryTLVs.values(), optionalTLVs.values(), customTLVs.values())) {
-            len += lldptlv.getTLVSize();
-        }
-
-        len += LLDP.emptyTLV.getTLVSize();
-
-        return len / NetUtils.NumBitsInAByte;
-    }
-}