blob: d6bb909ba89564c9f70fa1c88e37a01b5183abc8 [file] [log] [blame]
mohamed rahile04626f2016-04-05 20:42:53 +05301/*
Brian O'Connor5ab426f2016-04-09 01:19:45 -07002 * Copyright 2016-present Open Networking Laboratory
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:
45 //TODO
46 break;
Dhruv Dhodye64b93e2016-04-20 19:26:55 +053047 case HOSTNAME:
48 HostNameTlv hostNameTlv = new HostNameTlv(tlvHeader);
49 hostNameTlv.readFrom(channelBuffer);
50 isisTlv = hostNameTlv;
51 break;
sunishvka1dfc3e2016-04-16 12:24:47 +053052 case IDRPINFORMATION:
53 IdrpInformationTlv idrpInformationTlv = new IdrpInformationTlv(tlvHeader);
54 idrpInformationTlv.readFrom(channelBuffer);
55 isisTlv = idrpInformationTlv;
56 break;
57 case IPEXTENDEDREACHABILITY:
58 IpExtendedReachabilityTlv iperTlv = new IpExtendedReachabilityTlv(tlvHeader);
59 iperTlv.readFrom(channelBuffer);
60 isisTlv = iperTlv;
61 break;
62 case IPINTERFACEADDRESS:
mohamed rahile04626f2016-04-05 20:42:53 +053063 IpInterfaceAddressTlv ipTlv = new IpInterfaceAddressTlv(tlvHeader);
sunishvka1dfc3e2016-04-16 12:24:47 +053064 ipTlv.readFrom(channelBuffer);
mohamed rahile04626f2016-04-05 20:42:53 +053065 isisTlv = ipTlv;
66 break;
sunishvka1dfc3e2016-04-16 12:24:47 +053067 case IPINTERNALREACHABILITY:
68 IpInternalReachabilityTlv iprTlv = new IpInternalReachabilityTlv(tlvHeader);
69 iprTlv.readFrom(channelBuffer);
70 isisTlv = iprTlv;
71 break;
72 case ISALIAS:
73 break;
74 case PROTOCOLSUPPORTED:
mohamed rahile04626f2016-04-05 20:42:53 +053075 ProtocolSupportedTlv psTlv = new ProtocolSupportedTlv(tlvHeader);
sunishvka1dfc3e2016-04-16 12:24:47 +053076 psTlv.readFrom(channelBuffer);
mohamed rahile04626f2016-04-05 20:42:53 +053077 isisTlv = psTlv;
78 break;
sunishvka1dfc3e2016-04-16 12:24:47 +053079 case ISREACHABILITY:
80 IsReachabilityTlv isrTlv = new IsReachabilityTlv(tlvHeader);
81 isrTlv.readFrom(channelBuffer);
82 isisTlv = isrTlv;
83 break;
84 case ISNEIGHBORS:
mohamed rahile04626f2016-04-05 20:42:53 +053085 IsisNeighborTlv isisNeighborTlv = new IsisNeighborTlv(tlvHeader);
sunishvka1dfc3e2016-04-16 12:24:47 +053086 isisNeighborTlv.readFrom(channelBuffer);
mohamed rahile04626f2016-04-05 20:42:53 +053087 isisTlv = isisNeighborTlv;
88 break;
sunishvka1dfc3e2016-04-16 12:24:47 +053089 case LSPENTRY:
90 LspEntriesTlv lspEntriesTlv = new LspEntriesTlv(tlvHeader);
91 lspEntriesTlv.readFrom(channelBuffer);
92 isisTlv = lspEntriesTlv;
93 break;
94 case PADDING:
mohamed rahile04626f2016-04-05 20:42:53 +053095 PaddingTlv paddingTlv = new PaddingTlv(tlvHeader);
sunishvka1dfc3e2016-04-16 12:24:47 +053096 paddingTlv.readFrom(channelBuffer);
mohamed rahile04626f2016-04-05 20:42:53 +053097 isisTlv = paddingTlv;
98 break;
sunishvka1dfc3e2016-04-16 12:24:47 +053099 case ADJACENCYSTATE:
100 AdjacencyStateTlv adjacencyStateTlv = new AdjacencyStateTlv(tlvHeader);
101 adjacencyStateTlv.readFrom(channelBuffer);
102 isisTlv = adjacencyStateTlv;
103 break;
mohamed rahile04626f2016-04-05 20:42:53 +0530104 default:
105 break;
106 }
mohamed rahile04626f2016-04-05 20:42:53 +0530107 return isisTlv;
108 }
109}