blob: e1fcbdf47e0d70b800658d45327e59ecf819fb2c [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;
47 case IDRPINFORMATION:
48 IdrpInformationTlv idrpInformationTlv = new IdrpInformationTlv(tlvHeader);
49 idrpInformationTlv.readFrom(channelBuffer);
50 isisTlv = idrpInformationTlv;
51 break;
52 case IPEXTENDEDREACHABILITY:
53 IpExtendedReachabilityTlv iperTlv = new IpExtendedReachabilityTlv(tlvHeader);
54 iperTlv.readFrom(channelBuffer);
55 isisTlv = iperTlv;
56 break;
57 case IPINTERFACEADDRESS:
mohamed rahile04626f2016-04-05 20:42:53 +053058 IpInterfaceAddressTlv ipTlv = new IpInterfaceAddressTlv(tlvHeader);
sunishvka1dfc3e2016-04-16 12:24:47 +053059 ipTlv.readFrom(channelBuffer);
mohamed rahile04626f2016-04-05 20:42:53 +053060 isisTlv = ipTlv;
61 break;
sunishvka1dfc3e2016-04-16 12:24:47 +053062 case IPINTERNALREACHABILITY:
63 IpInternalReachabilityTlv iprTlv = new IpInternalReachabilityTlv(tlvHeader);
64 iprTlv.readFrom(channelBuffer);
65 isisTlv = iprTlv;
66 break;
67 case ISALIAS:
68 break;
69 case PROTOCOLSUPPORTED:
mohamed rahile04626f2016-04-05 20:42:53 +053070 ProtocolSupportedTlv psTlv = new ProtocolSupportedTlv(tlvHeader);
sunishvka1dfc3e2016-04-16 12:24:47 +053071 psTlv.readFrom(channelBuffer);
mohamed rahile04626f2016-04-05 20:42:53 +053072 isisTlv = psTlv;
73 break;
sunishvka1dfc3e2016-04-16 12:24:47 +053074 case ISREACHABILITY:
75 IsReachabilityTlv isrTlv = new IsReachabilityTlv(tlvHeader);
76 isrTlv.readFrom(channelBuffer);
77 isisTlv = isrTlv;
78 break;
79 case ISNEIGHBORS:
mohamed rahile04626f2016-04-05 20:42:53 +053080 IsisNeighborTlv isisNeighborTlv = new IsisNeighborTlv(tlvHeader);
sunishvka1dfc3e2016-04-16 12:24:47 +053081 isisNeighborTlv.readFrom(channelBuffer);
mohamed rahile04626f2016-04-05 20:42:53 +053082 isisTlv = isisNeighborTlv;
83 break;
sunishvka1dfc3e2016-04-16 12:24:47 +053084 case LSPENTRY:
85 LspEntriesTlv lspEntriesTlv = new LspEntriesTlv(tlvHeader);
86 lspEntriesTlv.readFrom(channelBuffer);
87 isisTlv = lspEntriesTlv;
88 break;
89 case PADDING:
mohamed rahile04626f2016-04-05 20:42:53 +053090 PaddingTlv paddingTlv = new PaddingTlv(tlvHeader);
sunishvka1dfc3e2016-04-16 12:24:47 +053091 paddingTlv.readFrom(channelBuffer);
mohamed rahile04626f2016-04-05 20:42:53 +053092 isisTlv = paddingTlv;
93 break;
sunishvka1dfc3e2016-04-16 12:24:47 +053094 case ADJACENCYSTATE:
95 AdjacencyStateTlv adjacencyStateTlv = new AdjacencyStateTlv(tlvHeader);
96 adjacencyStateTlv.readFrom(channelBuffer);
97 isisTlv = adjacencyStateTlv;
98 break;
mohamed rahile04626f2016-04-05 20:42:53 +053099 default:
100 break;
101 }
mohamed rahile04626f2016-04-05 20:42:53 +0530102 return isisTlv;
103 }
104}