/* * Copyright 2016-present Open Networking Laboratory * * 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.onosproject.isis.io.isispacket.tlv; import org.jboss.netty.buffer.ChannelBuffer; /** * Representation of TLV Finder. */ public class TlvFinder extends TlvHeader { /** * Sets the value for TLV header. * * @param tlvHeader tlvHeader * @param channelBuffer byteBuf * @return isisTlv */ public static IsisTlv findTlv(TlvHeader tlvHeader, ChannelBuffer channelBuffer) { IsisTlv isisTlv = null; switch (TlvType.get(tlvHeader.tlvType())) { case AREAADDRESS: AreaAddressTlv areaAddressTlv = new AreaAddressTlv(tlvHeader); areaAddressTlv.readFrom(channelBuffer); isisTlv = areaAddressTlv; break; case AUTHENTICATION: //TODO break; case EXTENDEDISREACHABILITY: IsExtendedReachability isExtendedReachability = new IsExtendedReachability(tlvHeader); isExtendedReachability.readFrom(channelBuffer); isisTlv = isExtendedReachability; break; case HOSTNAME: HostNameTlv hostNameTlv = new HostNameTlv(tlvHeader); hostNameTlv.readFrom(channelBuffer); isisTlv = hostNameTlv; break; case IDRPINFORMATION: IdrpInformationTlv idrpInformationTlv = new IdrpInformationTlv(tlvHeader); idrpInformationTlv.readFrom(channelBuffer); isisTlv = idrpInformationTlv; break; case IPEXTENDEDREACHABILITY: IpExtendedReachabilityTlv iperTlv = new IpExtendedReachabilityTlv(tlvHeader); iperTlv.readFrom(channelBuffer); isisTlv = iperTlv; break; case IPINTERFACEADDRESS: IpInterfaceAddressTlv ipTlv = new IpInterfaceAddressTlv(tlvHeader); ipTlv.readFrom(channelBuffer); isisTlv = ipTlv; break; case IPINTERNALREACHABILITY: IpInternalReachabilityTlv iprTlv = new IpInternalReachabilityTlv(tlvHeader); iprTlv.readFrom(channelBuffer); isisTlv = iprTlv; break; case ISALIAS: break; case PROTOCOLSUPPORTED: ProtocolSupportedTlv psTlv = new ProtocolSupportedTlv(tlvHeader); psTlv.readFrom(channelBuffer); isisTlv = psTlv; break; case ISREACHABILITY: IsReachabilityTlv isrTlv = new IsReachabilityTlv(tlvHeader); isrTlv.readFrom(channelBuffer); isisTlv = isrTlv; break; case ISNEIGHBORS: IsisNeighborTlv isisNeighborTlv = new IsisNeighborTlv(tlvHeader); isisNeighborTlv.readFrom(channelBuffer); isisTlv = isisNeighborTlv; break; case LSPENTRY: LspEntriesTlv lspEntriesTlv = new LspEntriesTlv(tlvHeader); lspEntriesTlv.readFrom(channelBuffer); isisTlv = lspEntriesTlv; break; case PADDING: PaddingTlv paddingTlv = new PaddingTlv(tlvHeader); paddingTlv.readFrom(channelBuffer); isisTlv = paddingTlv; break; case ADJACENCYSTATE: AdjacencyStateTlv adjacencyStateTlv = new AdjacencyStateTlv(tlvHeader); adjacencyStateTlv.readFrom(channelBuffer); isisTlv = adjacencyStateTlv; break; default: break; } return isisTlv; } }