blob: 059f91e834d749cdd50c3177df3d2b247243667d [file] [log] [blame]
mohamed rahile04626f2016-04-05 20:42:53 +05301/*
Brian O'Connora09fe5b2017-08-03 21:12:30 -07002 * Copyright 2016-present Open Networking Foundation
mohamed rahile04626f2016-04-05 20:42:53 +05303 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16package org.onosproject.isis.io.isispacket.tlv;
17
sunishvka1dfc3e2016-04-16 12:24:47 +053018import org.jboss.netty.buffer.ChannelBuffer;
mohamed rahile04626f2016-04-05 20:42:53 +053019
20/**
sunishvka1dfc3e2016-04-16 12:24:47 +053021 * Representation of TLV Finder.
mohamed rahile04626f2016-04-05 20:42:53 +053022 */
23public class TlvFinder extends TlvHeader {
24
25 /**
sunishvka1dfc3e2016-04-16 12:24:47 +053026 * Sets the value for TLV header.
mohamed rahile04626f2016-04-05 20:42:53 +053027 *
sunishvka1dfc3e2016-04-16 12:24:47 +053028 * @param tlvHeader tlvHeader
29 * @param channelBuffer byteBuf
30 * @return isisTlv
mohamed rahile04626f2016-04-05 20:42:53 +053031 */
sunishvka1dfc3e2016-04-16 12:24:47 +053032 public static IsisTlv findTlv(TlvHeader tlvHeader, ChannelBuffer channelBuffer) {
mohamed rahile04626f2016-04-05 20:42:53 +053033
34 IsisTlv isisTlv = null;
sunishvka1dfc3e2016-04-16 12:24:47 +053035 switch (TlvType.get(tlvHeader.tlvType())) {
36 case AREAADDRESS:
mohamed rahile04626f2016-04-05 20:42:53 +053037 AreaAddressTlv areaAddressTlv = new AreaAddressTlv(tlvHeader);
sunishvka1dfc3e2016-04-16 12:24:47 +053038 areaAddressTlv.readFrom(channelBuffer);
mohamed rahile04626f2016-04-05 20:42:53 +053039 isisTlv = areaAddressTlv;
40 break;
sunishvka1dfc3e2016-04-16 12:24:47 +053041 case AUTHENTICATION:
42 //TODO
43 break;
44 case EXTENDEDISREACHABILITY:
tejeshwer degala3fe1ed52016-04-22 17:04:01 +053045 IsExtendedReachability isExtendedReachability =
46 new IsExtendedReachability(tlvHeader);
47 isExtendedReachability.readFrom(channelBuffer);
48 isisTlv = isExtendedReachability;
sunishvka1dfc3e2016-04-16 12:24:47 +053049 break;
Dhruv Dhodye64b93e2016-04-20 19:26:55 +053050 case HOSTNAME:
51 HostNameTlv hostNameTlv = new HostNameTlv(tlvHeader);
52 hostNameTlv.readFrom(channelBuffer);
53 isisTlv = hostNameTlv;
54 break;
sunishvka1dfc3e2016-04-16 12:24:47 +053055 case IDRPINFORMATION:
56 IdrpInformationTlv idrpInformationTlv = new IdrpInformationTlv(tlvHeader);
57 idrpInformationTlv.readFrom(channelBuffer);
58 isisTlv = idrpInformationTlv;
59 break;
60 case IPEXTENDEDREACHABILITY:
61 IpExtendedReachabilityTlv iperTlv = new IpExtendedReachabilityTlv(tlvHeader);
62 iperTlv.readFrom(channelBuffer);
63 isisTlv = iperTlv;
64 break;
65 case IPINTERFACEADDRESS:
mohamed rahile04626f2016-04-05 20:42:53 +053066 IpInterfaceAddressTlv ipTlv = new IpInterfaceAddressTlv(tlvHeader);
sunishvka1dfc3e2016-04-16 12:24:47 +053067 ipTlv.readFrom(channelBuffer);
mohamed rahile04626f2016-04-05 20:42:53 +053068 isisTlv = ipTlv;
69 break;
sunishvka1dfc3e2016-04-16 12:24:47 +053070 case IPINTERNALREACHABILITY:
71 IpInternalReachabilityTlv iprTlv = new IpInternalReachabilityTlv(tlvHeader);
72 iprTlv.readFrom(channelBuffer);
73 isisTlv = iprTlv;
74 break;
75 case ISALIAS:
76 break;
77 case PROTOCOLSUPPORTED:
mohamed rahile04626f2016-04-05 20:42:53 +053078 ProtocolSupportedTlv psTlv = new ProtocolSupportedTlv(tlvHeader);
sunishvka1dfc3e2016-04-16 12:24:47 +053079 psTlv.readFrom(channelBuffer);
mohamed rahile04626f2016-04-05 20:42:53 +053080 isisTlv = psTlv;
81 break;
sunishvka1dfc3e2016-04-16 12:24:47 +053082 case ISREACHABILITY:
83 IsReachabilityTlv isrTlv = new IsReachabilityTlv(tlvHeader);
84 isrTlv.readFrom(channelBuffer);
85 isisTlv = isrTlv;
86 break;
87 case ISNEIGHBORS:
mohamed rahile04626f2016-04-05 20:42:53 +053088 IsisNeighborTlv isisNeighborTlv = new IsisNeighborTlv(tlvHeader);
sunishvka1dfc3e2016-04-16 12:24:47 +053089 isisNeighborTlv.readFrom(channelBuffer);
mohamed rahile04626f2016-04-05 20:42:53 +053090 isisTlv = isisNeighborTlv;
91 break;
sunishvka1dfc3e2016-04-16 12:24:47 +053092 case LSPENTRY:
93 LspEntriesTlv lspEntriesTlv = new LspEntriesTlv(tlvHeader);
94 lspEntriesTlv.readFrom(channelBuffer);
95 isisTlv = lspEntriesTlv;
96 break;
97 case PADDING:
mohamed rahile04626f2016-04-05 20:42:53 +053098 PaddingTlv paddingTlv = new PaddingTlv(tlvHeader);
sunishvka1dfc3e2016-04-16 12:24:47 +053099 paddingTlv.readFrom(channelBuffer);
mohamed rahile04626f2016-04-05 20:42:53 +0530100 isisTlv = paddingTlv;
101 break;
sunishvka1dfc3e2016-04-16 12:24:47 +0530102 case ADJACENCYSTATE:
103 AdjacencyStateTlv adjacencyStateTlv = new AdjacencyStateTlv(tlvHeader);
104 adjacencyStateTlv.readFrom(channelBuffer);
105 isisTlv = adjacencyStateTlv;
106 break;
mohamed rahile04626f2016-04-05 20:42:53 +0530107 default:
108 break;
109 }
mohamed rahile04626f2016-04-05 20:42:53 +0530110 return isisTlv;
111 }
112}