Committed by
Gerrit Code Review
ONOS-4082:ISIS protocol API changes
Change-Id: I4cdd4a4811ec0ab0aba51d7d8085a3eac9b34b2c
Showing
19 changed files
with
1203 additions
and
22 deletions
... | @@ -15,6 +15,8 @@ | ... | @@ -15,6 +15,8 @@ |
15 | */ | 15 | */ |
16 | package org.onosproject.isis.controller; | 16 | package org.onosproject.isis.controller; |
17 | 17 | ||
18 | +import org.onosproject.isis.controller.topology.IsisRouterListener; | ||
19 | + | ||
18 | import java.util.List; | 20 | import java.util.List; |
19 | 21 | ||
20 | /** | 22 | /** |
... | @@ -25,14 +27,14 @@ public interface IsisController { | ... | @@ -25,14 +27,14 @@ public interface IsisController { |
25 | /** | 27 | /** |
26 | * Registers a listener for router meta events. | 28 | * Registers a listener for router meta events. |
27 | * | 29 | * |
28 | - * @param isisRouterListener isis router listener instance | 30 | + * @param isisRouterListener ISIS router listener instance |
29 | */ | 31 | */ |
30 | void addRouterListener(IsisRouterListener isisRouterListener); | 32 | void addRouterListener(IsisRouterListener isisRouterListener); |
31 | 33 | ||
32 | /** | 34 | /** |
33 | * Unregisters a router listener. | 35 | * Unregisters a router listener. |
34 | * | 36 | * |
35 | - * @param isisRouterListener isis router listener instance | 37 | + * @param isisRouterListener ISIS router listener instance |
36 | */ | 38 | */ |
37 | void removeRouterListener(IsisRouterListener isisRouterListener); | 39 | void removeRouterListener(IsisRouterListener isisRouterListener); |
38 | 40 | ||
... | @@ -47,7 +49,8 @@ public interface IsisController { | ... | @@ -47,7 +49,8 @@ public interface IsisController { |
47 | * Deletes configuration parameters. | 49 | * Deletes configuration parameters. |
48 | * | 50 | * |
49 | * @param processes list of process instance | 51 | * @param processes list of process instance |
50 | - * @param attribute attribute to delete | 52 | + * @param attribute string key which deletes the particular node or element |
53 | + * from the controller | ||
51 | */ | 54 | */ |
52 | void deleteConfig(List<IsisProcess> processes, String attribute); | 55 | void deleteConfig(List<IsisProcess> processes, String attribute); |
53 | 56 | ... | ... |
... | @@ -15,12 +15,25 @@ | ... | @@ -15,12 +15,25 @@ |
15 | */ | 15 | */ |
16 | package org.onosproject.isis.controller; | 16 | package org.onosproject.isis.controller; |
17 | 17 | ||
18 | +import org.jboss.netty.channel.Channel; | ||
19 | +import org.onlab.packet.Ip4Address; | ||
20 | +import org.onlab.packet.MacAddress; | ||
21 | + | ||
22 | +import java.util.Set; | ||
23 | + | ||
18 | /** | 24 | /** |
19 | * Representation of an ISIS interface. | 25 | * Representation of an ISIS interface. |
20 | */ | 26 | */ |
21 | public interface IsisInterface { | 27 | public interface IsisInterface { |
22 | 28 | ||
23 | /** | 29 | /** |
30 | + * Returns interface index. | ||
31 | + * | ||
32 | + * @return interface index | ||
33 | + */ | ||
34 | + int interfaceIndex(); | ||
35 | + | ||
36 | + /** | ||
24 | * Sets interface index. | 37 | * Sets interface index. |
25 | * | 38 | * |
26 | * @param interfaceIndex interface index | 39 | * @param interfaceIndex interface index |
... | @@ -28,6 +41,48 @@ public interface IsisInterface { | ... | @@ -28,6 +41,48 @@ public interface IsisInterface { |
28 | void setInterfaceIndex(int interfaceIndex); | 41 | void setInterfaceIndex(int interfaceIndex); |
29 | 42 | ||
30 | /** | 43 | /** |
44 | + * Returns the interface IP address. | ||
45 | + * | ||
46 | + * @return interface IP address | ||
47 | + */ | ||
48 | + Ip4Address interfaceIpAddress(); | ||
49 | + | ||
50 | + /** | ||
51 | + * Sets the interface IP address. | ||
52 | + * | ||
53 | + * @param interfaceIpAddress interface IP address interface IP address | ||
54 | + */ | ||
55 | + void setInterfaceIpAddress(Ip4Address interfaceIpAddress); | ||
56 | + | ||
57 | + /** | ||
58 | + * Returns the network mask. | ||
59 | + * | ||
60 | + * @return network mask | ||
61 | + */ | ||
62 | + byte[] networkMask(); | ||
63 | + | ||
64 | + /** | ||
65 | + * Sets the network mask. | ||
66 | + * | ||
67 | + * @param networkMask network mask | ||
68 | + */ | ||
69 | + void setNetworkMask(byte[] networkMask); | ||
70 | + | ||
71 | + /** | ||
72 | + * Sets the interface MAC address. | ||
73 | + * | ||
74 | + * @param interfaceMacAddress interface MAC address | ||
75 | + */ | ||
76 | + void setInterfaceMacAddress(MacAddress interfaceMacAddress); | ||
77 | + | ||
78 | + /** | ||
79 | + * Returns the neighbors list. | ||
80 | + * | ||
81 | + * @return neighbors list | ||
82 | + */ | ||
83 | + Set<MacAddress> neighbors(); | ||
84 | + | ||
85 | + /** | ||
31 | * Sets intermediate system name. | 86 | * Sets intermediate system name. |
32 | * | 87 | * |
33 | * @param intermediateSystemName intermediate system name | 88 | * @param intermediateSystemName intermediate system name |
... | @@ -35,6 +90,13 @@ public interface IsisInterface { | ... | @@ -35,6 +90,13 @@ public interface IsisInterface { |
35 | void setIntermediateSystemName(String intermediateSystemName); | 90 | void setIntermediateSystemName(String intermediateSystemName); |
36 | 91 | ||
37 | /** | 92 | /** |
93 | + * Returns system ID. | ||
94 | + * | ||
95 | + * @return systemID system ID | ||
96 | + */ | ||
97 | + String systemId(); | ||
98 | + | ||
99 | + /** | ||
38 | * Sets system ID. | 100 | * Sets system ID. |
39 | * | 101 | * |
40 | * @param systemId system ID | 102 | * @param systemId system ID |
... | @@ -42,11 +104,32 @@ public interface IsisInterface { | ... | @@ -42,11 +104,32 @@ public interface IsisInterface { |
42 | void setSystemId(String systemId); | 104 | void setSystemId(String systemId); |
43 | 105 | ||
44 | /** | 106 | /** |
107 | + * Returns LAN ID. | ||
108 | + * | ||
109 | + * @return LAN ID | ||
110 | + */ | ||
111 | + String l1LanId(); | ||
112 | + | ||
113 | + /** | ||
114 | + * Sets LAN ID. | ||
115 | + * | ||
116 | + * @param lanId LAN ID | ||
117 | + */ | ||
118 | + void setL1LanId(String lanId); | ||
119 | + | ||
120 | + /** | ||
121 | + * Returns LAN ID. | ||
122 | + * | ||
123 | + * @return LAN ID | ||
124 | + */ | ||
125 | + String l2LanId(); | ||
126 | + | ||
127 | + /** | ||
45 | * Sets LAN ID. | 128 | * Sets LAN ID. |
46 | * | 129 | * |
47 | * @param lanId LAN ID | 130 | * @param lanId LAN ID |
48 | */ | 131 | */ |
49 | - void setLanId(String lanId); | 132 | + void setL2LanId(String lanId); |
50 | 133 | ||
51 | /** | 134 | /** |
52 | * Sets ID length. | 135 | * Sets ID length. |
... | @@ -63,6 +146,13 @@ public interface IsisInterface { | ... | @@ -63,6 +146,13 @@ public interface IsisInterface { |
63 | void setMaxAreaAddresses(int maxAreaAddresses); | 146 | void setMaxAreaAddresses(int maxAreaAddresses); |
64 | 147 | ||
65 | /** | 148 | /** |
149 | + * Returns reserved packet circuit type. | ||
150 | + * | ||
151 | + * @return reserved packet circuit type | ||
152 | + */ | ||
153 | + int reservedPacketCircuitType(); | ||
154 | + | ||
155 | + /** | ||
66 | * Sets reserved packet circuit type. | 156 | * Sets reserved packet circuit type. |
67 | * | 157 | * |
68 | * @param reservedPacketCircuitType reserved packet circuit type | 158 | * @param reservedPacketCircuitType reserved packet circuit type |
... | @@ -70,11 +160,25 @@ public interface IsisInterface { | ... | @@ -70,11 +160,25 @@ public interface IsisInterface { |
70 | void setReservedPacketCircuitType(int reservedPacketCircuitType); | 160 | void setReservedPacketCircuitType(int reservedPacketCircuitType); |
71 | 161 | ||
72 | /** | 162 | /** |
163 | + * Returns point to point or broadcast. | ||
164 | + * | ||
165 | + * @return 1 if point to point, 2 broadcast | ||
166 | + */ | ||
167 | + IsisNetworkType networkType(); | ||
168 | + | ||
169 | + /** | ||
73 | * Sets point to point. | 170 | * Sets point to point. |
74 | * | 171 | * |
75 | - * @param p2p point to point | 172 | + * @param networkType point to point |
76 | */ | 173 | */ |
77 | - void setP2p(int p2p); | 174 | + void setNetworkType(IsisNetworkType networkType); |
175 | + | ||
176 | + /** | ||
177 | + * Returns area address. | ||
178 | + * | ||
179 | + * @return area address | ||
180 | + */ | ||
181 | + String areaAddress(); | ||
78 | 182 | ||
79 | /** | 183 | /** |
80 | * Sets area address. | 184 | * Sets area address. |
... | @@ -98,6 +202,13 @@ public interface IsisInterface { | ... | @@ -98,6 +202,13 @@ public interface IsisInterface { |
98 | void setLspId(String lspId); | 202 | void setLspId(String lspId); |
99 | 203 | ||
100 | /** | 204 | /** |
205 | + * Returns holding time. | ||
206 | + * | ||
207 | + * @return holding time | ||
208 | + */ | ||
209 | + int holdingTime(); | ||
210 | + | ||
211 | + /** | ||
101 | * Sets holding time. | 212 | * Sets holding time. |
102 | * | 213 | * |
103 | * @param holdingTime holding time | 214 | * @param holdingTime holding time |
... | @@ -105,6 +216,13 @@ public interface IsisInterface { | ... | @@ -105,6 +216,13 @@ public interface IsisInterface { |
105 | void setHoldingTime(int holdingTime); | 216 | void setHoldingTime(int holdingTime); |
106 | 217 | ||
107 | /** | 218 | /** |
219 | + * Returns priority. | ||
220 | + * | ||
221 | + * @return priority | ||
222 | + */ | ||
223 | + int priority(); | ||
224 | + | ||
225 | + /** | ||
108 | * Sets priority. | 226 | * Sets priority. |
109 | * | 227 | * |
110 | * @param priority priority | 228 | * @param priority priority |
... | @@ -117,4 +235,70 @@ public interface IsisInterface { | ... | @@ -117,4 +235,70 @@ public interface IsisInterface { |
117 | * @param helloInterval hello interval | 235 | * @param helloInterval hello interval |
118 | */ | 236 | */ |
119 | void setHelloInterval(int helloInterval); | 237 | void setHelloInterval(int helloInterval); |
120 | -} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
238 | + | ||
239 | + /** | ||
240 | + * Starts the hello timer which sends hello packet every configured seconds. | ||
241 | + * | ||
242 | + * @param channel netty channel instance | ||
243 | + */ | ||
244 | + void startHelloSender(Channel channel); | ||
245 | + | ||
246 | + /** | ||
247 | + * Processes an ISIS message which is received on this interface. | ||
248 | + * | ||
249 | + * @param isisMessage ISIS message instance | ||
250 | + * @param isisLsdb ISIS LSDB instance | ||
251 | + * @param channel channel instance | ||
252 | + */ | ||
253 | + void processIsisMessage(IsisMessage isisMessage, IsisLsdb isisLsdb, Channel channel); | ||
254 | + | ||
255 | + /** | ||
256 | + * Returns the interface state. | ||
257 | + * | ||
258 | + * @return interface state | ||
259 | + */ | ||
260 | + IsisInterfaceState interfaceState(); | ||
261 | + | ||
262 | + /** | ||
263 | + * Sets the interface state. | ||
264 | + * | ||
265 | + * @param interfaceState the interface state | ||
266 | + */ | ||
267 | + void setInterfaceState(IsisInterfaceState interfaceState); | ||
268 | + | ||
269 | + /** | ||
270 | + * Returns the LSDB instance. | ||
271 | + * | ||
272 | + * @return LSDB instance | ||
273 | + */ | ||
274 | + IsisLsdb isisLsdb(); | ||
275 | + | ||
276 | + /** | ||
277 | + * Returns intermediate system name. | ||
278 | + * | ||
279 | + * @return intermediate system name | ||
280 | + */ | ||
281 | + String intermediateSystemName(); | ||
282 | + | ||
283 | + /** | ||
284 | + * Returns the ISIS neighbor instance if exists. | ||
285 | + * | ||
286 | + * @param isisNeighborMac mac address of the neighbor router | ||
287 | + * @return ISIS neighbor instance if exists else null | ||
288 | + */ | ||
289 | + IsisNeighbor lookup(MacAddress isisNeighborMac); | ||
290 | + | ||
291 | + /** | ||
292 | + * Returns circuit ID. | ||
293 | + * | ||
294 | + * @return circuit ID | ||
295 | + */ | ||
296 | + String circuitId(); | ||
297 | + | ||
298 | + /** | ||
299 | + * Sets circuit ID. | ||
300 | + * | ||
301 | + * @param circuitId circuit ID | ||
302 | + */ | ||
303 | + void setCircuitId(String circuitId); | ||
304 | +} | ... | ... |
1 | +/* | ||
2 | + * Copyright 2016-present Open Networking Laboratory | ||
3 | + * | ||
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 | + */ | ||
16 | +package org.onosproject.isis.controller; | ||
17 | + | ||
18 | +import java.util.EnumSet; | ||
19 | +import java.util.HashMap; | ||
20 | +import java.util.Map; | ||
21 | + | ||
22 | +/** | ||
23 | + * Enum represents ISIS Interface state. | ||
24 | + */ | ||
25 | +public enum IsisInterfaceState { | ||
26 | + /** | ||
27 | + * Represents interface is in "up" state. | ||
28 | + */ | ||
29 | + UP(0), | ||
30 | + /** | ||
31 | + * Represents interface is in "initial" state. | ||
32 | + */ | ||
33 | + INITIAL(1), | ||
34 | + /** | ||
35 | + * Represents interface is in "down" state. | ||
36 | + */ | ||
37 | + DOWN(2); | ||
38 | + | ||
39 | + // Reverse lookup table | ||
40 | + private static final Map<Integer, IsisInterfaceState> LOOKUP = new HashMap<>(); | ||
41 | + | ||
42 | + // Populate the lookup table on loading time | ||
43 | + static { | ||
44 | + for (IsisInterfaceState isisInterfaceState : EnumSet.allOf(IsisInterfaceState.class)) { | ||
45 | + LOOKUP.put(isisInterfaceState.value(), isisInterfaceState); | ||
46 | + } | ||
47 | + } | ||
48 | + | ||
49 | + private int value; | ||
50 | + | ||
51 | + /** | ||
52 | + * Creates an instance of ISIS interface type. | ||
53 | + * | ||
54 | + * @param value represents ISIS interface type | ||
55 | + */ | ||
56 | + private IsisInterfaceState(int value) { | ||
57 | + this.value = value; | ||
58 | + } | ||
59 | + | ||
60 | + /** | ||
61 | + * Gets the enum instance from type value - reverse lookup purpose. | ||
62 | + * | ||
63 | + * @param interfaceStateTypeValue interface state type value | ||
64 | + * @return ISIS interface state type instance | ||
65 | + */ | ||
66 | + public static IsisInterfaceState get(int interfaceStateTypeValue) { | ||
67 | + return LOOKUP.get(interfaceStateTypeValue); | ||
68 | + } | ||
69 | + | ||
70 | + /** | ||
71 | + * Gets the value representing interface state type. | ||
72 | + * | ||
73 | + * @return value represents interface state type | ||
74 | + */ | ||
75 | + public int value() { | ||
76 | + return value; | ||
77 | + } | ||
78 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
... | @@ -13,18 +13,84 @@ | ... | @@ -13,18 +13,84 @@ |
13 | * See the License for the specific language governing permissions and | 13 | * See the License for the specific language governing permissions and |
14 | * limitations under the License. | 14 | * limitations under the License. |
15 | */ | 15 | */ |
16 | - | ||
17 | package org.onosproject.isis.controller; | 16 | package org.onosproject.isis.controller; |
18 | 17 | ||
18 | +import java.util.List; | ||
19 | + | ||
19 | /** | 20 | /** |
20 | * Representation of an ISIS link state database. | 21 | * Representation of an ISIS link state database. |
21 | */ | 22 | */ |
22 | public interface IsisLsdb { | 23 | public interface IsisLsdb { |
23 | 24 | ||
24 | /** | 25 | /** |
25 | - * Gets the ISIS LSDB. | 26 | + * Returns the ISIS LSDB. |
26 | * | 27 | * |
27 | * @return ISIS LSDB | 28 | * @return ISIS LSDB |
28 | */ | 29 | */ |
29 | IsisLsdb isisLsdb(); | 30 | IsisLsdb isisLsdb(); |
30 | -} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
31 | + | ||
32 | + /** | ||
33 | + * Initializes LSDB. | ||
34 | + */ | ||
35 | + void initializeDb(); | ||
36 | + | ||
37 | + /** | ||
38 | + * Returns the LSDB LSP key. | ||
39 | + * | ||
40 | + * @param systemId system ID | ||
41 | + * @return LSP key | ||
42 | + */ | ||
43 | + String lspKey(String systemId); | ||
44 | + | ||
45 | + /** | ||
46 | + * Returns the sequence number. | ||
47 | + * | ||
48 | + * @param lspType L1 or L2 LSP | ||
49 | + * @return sequence number | ||
50 | + */ | ||
51 | + int lsSequenceNumber(IsisPduType lspType); | ||
52 | + | ||
53 | + /** | ||
54 | + * Finds the LSP from LSDB. | ||
55 | + * | ||
56 | + * @param pduType L1 or L2 LSP | ||
57 | + * @param lspId LSP ID | ||
58 | + * @return LSP wrapper object | ||
59 | + */ | ||
60 | + LspWrapper findLsp(IsisPduType pduType, String lspId); | ||
61 | + | ||
62 | + /** | ||
63 | + * Installs a new self-originated LSA in LSDB. | ||
64 | + * Return true if installing was successful else false. | ||
65 | + * | ||
66 | + * @param lsPdu PDU instance | ||
67 | + * @param isSelfOriginated true if self originated else false | ||
68 | + * @param isisInterface ISIS interface instance | ||
69 | + * @return true if successfully added | ||
70 | + */ | ||
71 | + boolean addLsp(IsisMessage lsPdu, boolean isSelfOriginated, IsisInterface isisInterface); | ||
72 | + | ||
73 | + /** | ||
74 | + * Checks received LSP is latest, same or old. | ||
75 | + * | ||
76 | + * @param receivedLsp received LSP | ||
77 | + * @param lspFromDb existing LSP | ||
78 | + * @return "latest", "old" or "same" | ||
79 | + */ | ||
80 | + String isNewerOrSameLsp(IsisMessage receivedLsp, IsisMessage lspFromDb); | ||
81 | + | ||
82 | + /** | ||
83 | + * Returns all LSPs (L1 and L2). | ||
84 | + * | ||
85 | + * @param excludeMaxAgeLsp exclude the max age LSPs | ||
86 | + * @return List of LSPs | ||
87 | + */ | ||
88 | + List<LspWrapper> allLspHeaders(boolean excludeMaxAgeLsp); | ||
89 | + | ||
90 | + /** | ||
91 | + * Deletes the given LSP. | ||
92 | + * | ||
93 | + * @param lsp LSP instance | ||
94 | + */ | ||
95 | + void deleteLsp(IsisMessage lsp); | ||
96 | +} | ... | ... |
1 | +/* | ||
2 | + * Copyright 2016-present Open Networking Laboratory | ||
3 | + * | ||
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 | + */ | ||
16 | +package org.onosproject.isis.controller; | ||
17 | + | ||
18 | +/** | ||
19 | + * Representation of an ISIS link state database aging. | ||
20 | + */ | ||
21 | +public interface IsisLsdbAge { | ||
22 | + | ||
23 | + /** | ||
24 | + * Starts the aging timer thread which gets invokes every second. | ||
25 | + */ | ||
26 | + void startDbAging(); | ||
27 | + | ||
28 | + /** | ||
29 | + * Returns the age counter. | ||
30 | + * | ||
31 | + * @return age counter | ||
32 | + */ | ||
33 | + int ageCounter(); | ||
34 | + | ||
35 | + /** | ||
36 | + * Returns the age counter rollover. | ||
37 | + * | ||
38 | + * @return age counter rollover | ||
39 | + */ | ||
40 | + int ageCounterRollOver(); | ||
41 | + | ||
42 | + /** | ||
43 | + * Returns the bin number. | ||
44 | + * | ||
45 | + * @param x can be either age or ageCounter | ||
46 | + * @return bin number | ||
47 | + */ | ||
48 | + int age2Bin(int x); | ||
49 | + | ||
50 | + /** | ||
51 | + * Returns the LSP bin instance. | ||
52 | + * | ||
53 | + * @param binKey key to search | ||
54 | + * @return LSP bin instance | ||
55 | + */ | ||
56 | + IsisLspBin getLspBin(int binKey); | ||
57 | + | ||
58 | + /** | ||
59 | + * Adds LSP to bin. | ||
60 | + * | ||
61 | + * @param binNumber key to store in bin | ||
62 | + * @param lspBin LSP bin instance | ||
63 | + */ | ||
64 | + void addLspBin(int binNumber, IsisLspBin lspBin); | ||
65 | + | ||
66 | + /** | ||
67 | + * Removes LSP from bin. | ||
68 | + * | ||
69 | + * @param lspWrapper LSP wrapper instance | ||
70 | + */ | ||
71 | + void removeLspFromBin(LspWrapper lspWrapper); | ||
72 | +} |
1 | +/* | ||
2 | + * Copyright 2016-present Open Networking Laboratory | ||
3 | + * | ||
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 | + */ | ||
16 | +package org.onosproject.isis.controller; | ||
17 | + | ||
18 | +import java.util.Map; | ||
19 | + | ||
20 | +/** | ||
21 | + * Representation of an ISIS LSP bin which is part of LSP aging process. | ||
22 | + */ | ||
23 | +public interface IsisLspBin { | ||
24 | + | ||
25 | + /** | ||
26 | + * Returns all the LSPs in the bin. | ||
27 | + * | ||
28 | + * @return all LSPs in the bin | ||
29 | + */ | ||
30 | + Map<String, LspWrapper> listOfLsp(); | ||
31 | + | ||
32 | + /** | ||
33 | + * Adds LSP to bin for aging. | ||
34 | + * | ||
35 | + * @param lspKey key to add the LSP | ||
36 | + * @param lspWrapper LSP wrapper instance | ||
37 | + */ | ||
38 | + void addIsisLsp(String lspKey, LspWrapper lspWrapper); | ||
39 | + | ||
40 | + /** | ||
41 | + * Removes LSP from bin. | ||
42 | + * | ||
43 | + * @param lspKey LSP key | ||
44 | + * @param lspWrapper LSP wrapper instance | ||
45 | + */ | ||
46 | + void removeIsisLsp(String lspKey, LspWrapper lspWrapper); | ||
47 | +} |
... | @@ -13,18 +13,76 @@ | ... | @@ -13,18 +13,76 @@ |
13 | * See the License for the specific language governing permissions and | 13 | * See the License for the specific language governing permissions and |
14 | * limitations under the License. | 14 | * limitations under the License. |
15 | */ | 15 | */ |
16 | - | ||
17 | package org.onosproject.isis.controller; | 16 | package org.onosproject.isis.controller; |
18 | 17 | ||
18 | +import org.jboss.netty.buffer.ChannelBuffer; | ||
19 | +import org.onlab.packet.MacAddress; | ||
20 | + | ||
19 | /** | 21 | /** |
20 | * Representation of an ISIS Message. | 22 | * Representation of an ISIS Message. |
21 | */ | 23 | */ |
22 | public interface IsisMessage { | 24 | public interface IsisMessage { |
23 | 25 | ||
24 | /** | 26 | /** |
25 | - * Gets the type of ISIS PDU. | 27 | + * Returns the interface index on which the message received. |
28 | + * | ||
29 | + * @return interface index on which the message received | ||
30 | + */ | ||
31 | + int interfaceIndex(); | ||
32 | + | ||
33 | + /** | ||
34 | + * Sets the interface index on which the message received. | ||
35 | + * | ||
36 | + * @param interfaceIndex interface index on which the message received | ||
37 | + */ | ||
38 | + void setInterfaceIndex(int interfaceIndex); | ||
39 | + | ||
40 | + /** | ||
41 | + * Returns the interface mac address on which the message received. | ||
42 | + * | ||
43 | + * @return interface mac address on which the message received | ||
44 | + */ | ||
45 | + MacAddress interfaceMac(); | ||
46 | + | ||
47 | + /** | ||
48 | + * Sets the interface mac address on which the message received. | ||
49 | + * | ||
50 | + * @param interfaceMac mac address on which the message received | ||
51 | + */ | ||
52 | + void setInterfaceMac(MacAddress interfaceMac); | ||
53 | + | ||
54 | + /** | ||
55 | + * Returns the mac address of the message sender. | ||
56 | + * | ||
57 | + * @return mac address of the message sender | ||
58 | + */ | ||
59 | + MacAddress sourceMac(); | ||
60 | + | ||
61 | + /** | ||
62 | + * Sets the mac address of the message sender. | ||
63 | + * | ||
64 | + * @param sourceMac mac address of the message sender | ||
65 | + */ | ||
66 | + void setSourceMac(MacAddress sourceMac); | ||
67 | + | ||
68 | + /** | ||
69 | + * Returns the type of ISIS PDU. | ||
26 | * | 70 | * |
27 | * @return ISIS PDU type instance | 71 | * @return ISIS PDU type instance |
28 | */ | 72 | */ |
29 | IsisPduType isisPduType(); | 73 | IsisPduType isisPduType(); |
30 | -} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
74 | + | ||
75 | + /** | ||
76 | + * Reads from channel buffer and initializes the type of PDU. | ||
77 | + * | ||
78 | + * @param channelBuffer channel buffer instance | ||
79 | + */ | ||
80 | + void readFrom(ChannelBuffer channelBuffer); | ||
81 | + | ||
82 | + /** | ||
83 | + * Returns IsisMessage as byte array. | ||
84 | + * | ||
85 | + * @return ISIS message as bytes | ||
86 | + */ | ||
87 | + byte[] asBytes(); | ||
88 | +} | ... | ... |
1 | +/* | ||
2 | + * Copyright 2016-present Open Networking Laboratory | ||
3 | + * | ||
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 | + */ | ||
16 | +package org.onosproject.isis.controller; | ||
17 | + | ||
18 | +import org.onlab.packet.MacAddress; | ||
19 | + | ||
20 | +/** | ||
21 | + * Representation of an ISIS neighbor. | ||
22 | + */ | ||
23 | +public interface IsisNeighbor { | ||
24 | + | ||
25 | + /** | ||
26 | + * Returns the MAC address of neighbor. | ||
27 | + * | ||
28 | + * @return MAC address of neighbor | ||
29 | + */ | ||
30 | + MacAddress neighborMacAddress(); | ||
31 | + | ||
32 | + /** | ||
33 | + * Returns the neighbor interface state. | ||
34 | + * | ||
35 | + * @return neighbor interface state | ||
36 | + */ | ||
37 | + IsisInterfaceState interfaceState(); | ||
38 | + | ||
39 | + /** | ||
40 | + * Sets the neighbor interface state. | ||
41 | + * | ||
42 | + * @param interfaceState the neighbor interface state | ||
43 | + */ | ||
44 | + void setNeighborState(IsisInterfaceState interfaceState); | ||
45 | + | ||
46 | + /** | ||
47 | + * Sets the LAN ID. | ||
48 | + * | ||
49 | + * @param l1LanId LAN ID | ||
50 | + */ | ||
51 | + void setL1LanId(String l1LanId); | ||
52 | + | ||
53 | + /** | ||
54 | + * Sets the LAN ID. | ||
55 | + * | ||
56 | + * @param l2LanId LAN ID | ||
57 | + */ | ||
58 | + void setL2LanId(String l2LanId); | ||
59 | + | ||
60 | + /** | ||
61 | + * Returns neighbor system ID. | ||
62 | + * | ||
63 | + * @return neighbor system ID | ||
64 | + */ | ||
65 | + String neighborSystemId(); | ||
66 | + | ||
67 | + /** | ||
68 | + * Returns neighbor circuit ID. | ||
69 | + * | ||
70 | + * @return neighbor circuit ID | ||
71 | + */ | ||
72 | + byte localCircuitId(); | ||
73 | + | ||
74 | + /** | ||
75 | + * Returns neighbor extended circuit ID. | ||
76 | + * | ||
77 | + * @return neighbor extended circuit ID | ||
78 | + */ | ||
79 | + int localExtendedCircuitId(); | ||
80 | + | ||
81 | + /** | ||
82 | + * Sets neighbor extended circuit ID. | ||
83 | + * | ||
84 | + * @param localExtendedCircuitId neighbor extended circuit ID | ||
85 | + */ | ||
86 | + void setLocalExtendedCircuitId(int localExtendedCircuitId); | ||
87 | +} |
1 | +/* | ||
2 | + * Copyright 2016-present Open Networking Laboratory | ||
3 | + * | ||
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 | + */ | ||
16 | +package org.onosproject.isis.controller; | ||
17 | + | ||
18 | +import java.util.EnumSet; | ||
19 | +import java.util.HashMap; | ||
20 | +import java.util.Map; | ||
21 | + | ||
22 | +/** | ||
23 | + * Represents ISIS network types. | ||
24 | + */ | ||
25 | +public enum IsisNetworkType { | ||
26 | + /** | ||
27 | + * Represents point-to-point network. | ||
28 | + */ | ||
29 | + P2P(1), | ||
30 | + /** | ||
31 | + * Represents broadcast network. | ||
32 | + */ | ||
33 | + BROADCAST(2); | ||
34 | + // Reverse lookup table | ||
35 | + private static final Map<Integer, IsisNetworkType> LOOKUP = new HashMap<>(); | ||
36 | + | ||
37 | + // Populate the lookup table on loading time | ||
38 | + static { | ||
39 | + for (IsisNetworkType isisNetworkType : EnumSet.allOf(IsisNetworkType.class)) { | ||
40 | + LOOKUP.put(isisNetworkType.value(), isisNetworkType); | ||
41 | + } | ||
42 | + } | ||
43 | + | ||
44 | + private int value; | ||
45 | + | ||
46 | + | ||
47 | + /** | ||
48 | + * Creates an instance of ISIS network type. | ||
49 | + * | ||
50 | + * @param value represents ISIS network type | ||
51 | + */ | ||
52 | + private IsisNetworkType(int value) { | ||
53 | + this.value = value; | ||
54 | + } | ||
55 | + | ||
56 | + /** | ||
57 | + * Gets the enum instance from type value - reverse lookup purpose. | ||
58 | + * | ||
59 | + * @param isisNetworkTypeValue interface network type value | ||
60 | + * @return ISIS interface network type instance | ||
61 | + */ | ||
62 | + public static IsisNetworkType get(int isisNetworkTypeValue) { | ||
63 | + return LOOKUP.get(isisNetworkTypeValue); | ||
64 | + } | ||
65 | + | ||
66 | + /** | ||
67 | + * Gets the value representing network type. | ||
68 | + * | ||
69 | + * @return value represents network type | ||
70 | + */ | ||
71 | + public int value() { | ||
72 | + return value; | ||
73 | + } | ||
74 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
... | @@ -13,9 +13,12 @@ | ... | @@ -13,9 +13,12 @@ |
13 | * See the License for the specific language governing permissions and | 13 | * See the License for the specific language governing permissions and |
14 | * limitations under the License. | 14 | * limitations under the License. |
15 | */ | 15 | */ |
16 | - | ||
17 | package org.onosproject.isis.controller; | 16 | package org.onosproject.isis.controller; |
18 | 17 | ||
18 | +import java.util.EnumSet; | ||
19 | +import java.util.HashMap; | ||
20 | +import java.util.Map; | ||
21 | + | ||
19 | /** | 22 | /** |
20 | * Representation of ISIS PDU types. | 23 | * Representation of ISIS PDU types. |
21 | */ | 24 | */ |
... | @@ -58,8 +61,17 @@ public enum IsisPduType { | ... | @@ -58,8 +61,17 @@ public enum IsisPduType { |
58 | */ | 61 | */ |
59 | L2PSNP(27); | 62 | L2PSNP(27); |
60 | 63 | ||
61 | - private int value; | 64 | + // Reverse lookup table |
65 | + private static final Map<Integer, IsisPduType> LOOKUP = new HashMap<>(); | ||
62 | 66 | ||
67 | + // Populate the lookup table on loading time | ||
68 | + static { | ||
69 | + for (IsisPduType isisPduType : EnumSet.allOf(IsisPduType.class)) { | ||
70 | + LOOKUP.put(isisPduType.value(), isisPduType); | ||
71 | + } | ||
72 | + } | ||
73 | + | ||
74 | + private int value; | ||
63 | 75 | ||
64 | /** | 76 | /** |
65 | * Creates an instance of ISIS PDU type. | 77 | * Creates an instance of ISIS PDU type. |
... | @@ -71,6 +83,16 @@ public enum IsisPduType { | ... | @@ -71,6 +83,16 @@ public enum IsisPduType { |
71 | } | 83 | } |
72 | 84 | ||
73 | /** | 85 | /** |
86 | + * Gets the enum instance from type value - reverse lookup purpose. | ||
87 | + * | ||
88 | + * @param pduTypeValue PDU type value | ||
89 | + * @return ISIS PDU type instance | ||
90 | + */ | ||
91 | + public static IsisPduType get(int pduTypeValue) { | ||
92 | + return LOOKUP.get(pduTypeValue); | ||
93 | + } | ||
94 | + | ||
95 | + /** | ||
74 | * Gets the value representing PDU type. | 96 | * Gets the value representing PDU type. |
75 | * | 97 | * |
76 | * @return value represents PDU type | 98 | * @return value represents PDU type | ... | ... |
... | @@ -13,7 +13,6 @@ | ... | @@ -13,7 +13,6 @@ |
13 | * See the License for the specific language governing permissions and | 13 | * See the License for the specific language governing permissions and |
14 | * limitations under the License. | 14 | * limitations under the License. |
15 | */ | 15 | */ |
16 | - | ||
17 | package org.onosproject.isis.controller; | 16 | package org.onosproject.isis.controller; |
18 | 17 | ||
19 | import java.util.List; | 18 | import java.util.List; |
... | @@ -36,4 +35,11 @@ public interface IsisProcess { | ... | @@ -36,4 +35,11 @@ public interface IsisProcess { |
36 | * @param isisInterfaceList list of ISIS interface details | 35 | * @param isisInterfaceList list of ISIS interface details |
37 | */ | 36 | */ |
38 | void setIsisInterfaceList(List<IsisInterface> isisInterfaceList); | 37 | void setIsisInterfaceList(List<IsisInterface> isisInterfaceList); |
39 | -} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
38 | + | ||
39 | + /** | ||
40 | + * Returns list of ISIS interface details. | ||
41 | + * | ||
42 | + * @return list of ISIS interface details | ||
43 | + */ | ||
44 | + List<IsisInterface> isisInterfaceList(); | ||
45 | +} | ... | ... |
1 | +/* | ||
2 | + * Copyright 2016-present Open Networking Laboratory | ||
3 | + * | ||
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 | + */ | ||
16 | +package org.onosproject.isis.controller; | ||
17 | + | ||
18 | +import java.util.EnumSet; | ||
19 | +import java.util.HashMap; | ||
20 | +import java.util.Map; | ||
21 | + | ||
22 | +/** | ||
23 | + * Representation of ISIS router types. | ||
24 | + */ | ||
25 | +public enum IsisRouterType { | ||
26 | + /** | ||
27 | + * Represents ISIS L1 router. | ||
28 | + */ | ||
29 | + L1(1), | ||
30 | + /** | ||
31 | + * Represents ISIS L2 router. | ||
32 | + */ | ||
33 | + L2(2), | ||
34 | + /** | ||
35 | + * Represents ISIS L1/L2 router. | ||
36 | + */ | ||
37 | + L1L2(3); | ||
38 | + // Reverse lookup table | ||
39 | + private static final Map<Integer, IsisRouterType> LOOKUP = new HashMap<>(); | ||
40 | + | ||
41 | + // Populate the lookup table on loading time | ||
42 | + static { | ||
43 | + for (IsisRouterType isisRouterType : EnumSet.allOf(IsisRouterType.class)) { | ||
44 | + LOOKUP.put(isisRouterType.value(), isisRouterType); | ||
45 | + } | ||
46 | + } | ||
47 | + | ||
48 | + private int value; | ||
49 | + | ||
50 | + /** | ||
51 | + * Creates an instance of ISIS router type. | ||
52 | + * | ||
53 | + * @param value represents ISIS router type | ||
54 | + */ | ||
55 | + private IsisRouterType(int value) { | ||
56 | + this.value = value; | ||
57 | + } | ||
58 | + | ||
59 | + /** | ||
60 | + * Gets the enum instance from type value - reverse lookup purpose. | ||
61 | + * | ||
62 | + * @param routerTypeValue router type value | ||
63 | + * @return ISIS router type instance | ||
64 | + */ | ||
65 | + public static IsisRouterType get(int routerTypeValue) { | ||
66 | + return LOOKUP.get(routerTypeValue); | ||
67 | + } | ||
68 | + | ||
69 | + /** | ||
70 | + * Gets the value representing router type. | ||
71 | + * | ||
72 | + * @return value represents router type | ||
73 | + */ | ||
74 | + public int value() { | ||
75 | + return value; | ||
76 | + } | ||
77 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +/* | ||
2 | + * Copyright 2016-present Open Networking Laboratory | ||
3 | + * | ||
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 | + */ | ||
16 | +package org.onosproject.isis.controller; | ||
17 | + | ||
18 | +/** | ||
19 | + * Representation of a LSP wrapper. | ||
20 | + */ | ||
21 | +public interface LspWrapper { | ||
22 | + | ||
23 | + /** | ||
24 | + * Returns bin number into which the LSP wrapper is put for aging process. | ||
25 | + * | ||
26 | + * @return bin number | ||
27 | + */ | ||
28 | + int binNumber(); | ||
29 | + | ||
30 | + /** | ||
31 | + * Sets bin number into which the LSP wrapper is put for aging process. | ||
32 | + * | ||
33 | + * @param binNumber bin number | ||
34 | + */ | ||
35 | + void setBinNumber(int binNumber); | ||
36 | + | ||
37 | + /** | ||
38 | + * Checks the contained LSP is self originated or not. | ||
39 | + * | ||
40 | + * @return true if self originated else false | ||
41 | + */ | ||
42 | + boolean isSelfOriginated(); | ||
43 | + | ||
44 | + /** | ||
45 | + * Sets the contained LSP is self originated or not. | ||
46 | + * | ||
47 | + * @param selfOriginated true if self originated else false | ||
48 | + */ | ||
49 | + void setSelfOriginated(boolean selfOriginated); | ||
50 | + | ||
51 | + /** | ||
52 | + * Returns the LSP type. | ||
53 | + * | ||
54 | + * @return LSP type | ||
55 | + */ | ||
56 | + IsisPduType lspType(); | ||
57 | + | ||
58 | + /** | ||
59 | + * Returns the LSPs remaining life time. | ||
60 | + * | ||
61 | + * @return LSPs remaining life time. | ||
62 | + */ | ||
63 | + int remainingLifetime(); | ||
64 | + | ||
65 | + /** | ||
66 | + * Returns the age counter value when LSP was received. | ||
67 | + * | ||
68 | + * @return age counter value when LSP was received | ||
69 | + */ | ||
70 | + int ageCounterWhenReceived(); | ||
71 | + | ||
72 | + /** | ||
73 | + * Returns the age counter roll over value when LSP was added to wrapper instance. | ||
74 | + * | ||
75 | + * @return age counter roll over value when LSP was added to wrapper instance | ||
76 | + */ | ||
77 | + int ageCounterRollOverWhenAdded(); | ||
78 | + | ||
79 | + /** | ||
80 | + * Returns the LSP instance stored in wrapper. | ||
81 | + * | ||
82 | + * @return LSP instance stored in wrapper | ||
83 | + */ | ||
84 | + IsisMessage lsPdu(); | ||
85 | + | ||
86 | + /** | ||
87 | + * Sets LSPs remaining life time. | ||
88 | + * | ||
89 | + * @param remainingLifetime LSPs remaining life time | ||
90 | + */ | ||
91 | + void setRemainingLifetime(int remainingLifetime); | ||
92 | + | ||
93 | + /** | ||
94 | + * Returns the age of LSP when received. | ||
95 | + * | ||
96 | + * @return age of LSP when received | ||
97 | + */ | ||
98 | + int lspAgeReceived(); | ||
99 | + | ||
100 | + /** | ||
101 | + * Returns the LSP processing string. | ||
102 | + * | ||
103 | + * @return lsp processing value for switch case | ||
104 | + */ | ||
105 | + String lspProcessing(); | ||
106 | + | ||
107 | + /** | ||
108 | + * Returns ISIS interface instance. | ||
109 | + * | ||
110 | + * @return ISIS interface instance | ||
111 | + */ | ||
112 | + IsisInterface isisInterface(); | ||
113 | + | ||
114 | + /** | ||
115 | + * Returns the current LSP age. | ||
116 | + * | ||
117 | + * @return LSP age | ||
118 | + */ | ||
119 | + int currentAge(); | ||
120 | + | ||
121 | + /** | ||
122 | + * Sets the LSP processing string based on LSP to process. | ||
123 | + * | ||
124 | + * @param lspProcessing "refreshLsp" or "maxageLsp" based on LSP to process | ||
125 | + */ | ||
126 | + void setLspProcessing(String lspProcessing); | ||
127 | +} |
1 | +/* | ||
2 | + * Copyright 2016-present Open Networking Laboratory | ||
3 | + * | ||
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 | + */ | ||
16 | +package org.onosproject.isis.controller.topology; | ||
17 | + | ||
18 | +import org.onlab.packet.IpAddress; | ||
19 | + | ||
20 | +import java.util.List; | ||
21 | + | ||
22 | +/** | ||
23 | + * Abstraction of an ISIS Link. | ||
24 | + */ | ||
25 | +public interface IsisLink { | ||
26 | + | ||
27 | + /** | ||
28 | + * Returns IP address of the Router. | ||
29 | + * | ||
30 | + * @return IP address of router | ||
31 | + */ | ||
32 | + IpAddress remoteRouterId(); | ||
33 | + | ||
34 | + /** | ||
35 | + * Returns the area ID for this device. | ||
36 | + * | ||
37 | + * @return the area ID | ||
38 | + */ | ||
39 | + int areaIdOfInterface(); | ||
40 | + | ||
41 | + /** | ||
42 | + * Returns IP address of the interface. | ||
43 | + * | ||
44 | + * @return IP address of the interface | ||
45 | + */ | ||
46 | + IpAddress interfaceIp(); | ||
47 | + | ||
48 | + /** | ||
49 | + * Returns the list of link TED details. | ||
50 | + * | ||
51 | + * @return linkTed list of link TED | ||
52 | + */ | ||
53 | + List<IsisLinkTed> linkTed(); | ||
54 | + | ||
55 | + /** | ||
56 | + * Sets IP address of the router. | ||
57 | + * | ||
58 | + * @param routerIp router's IP address | ||
59 | + */ | ||
60 | + void setRouterIp(IpAddress routerIp); | ||
61 | + | ||
62 | + /** | ||
63 | + * Sets the area ID for this device. | ||
64 | + * | ||
65 | + * @param areaIdOfInterface area ID | ||
66 | + */ | ||
67 | + void setAreaIdOfInterface(int areaIdOfInterface); | ||
68 | + | ||
69 | + /** | ||
70 | + * Sets IP address of the interface. | ||
71 | + * | ||
72 | + * @param interfaceIp IP address of the interface | ||
73 | + */ | ||
74 | + void setInterfaceIp(IpAddress interfaceIp); | ||
75 | + | ||
76 | + /** | ||
77 | + * Sets the list of link TED. | ||
78 | + * | ||
79 | + * @param linkTed list of link TED | ||
80 | + */ | ||
81 | + void setLinkTed(List<IsisLinkTed> linkTed); | ||
82 | +} |
protocols/isis/api/src/main/java/org/onosproject/isis/controller/topology/IsisLinkListener.java
0 → 100644
1 | +/* | ||
2 | + * Copyright 2016-present Open Networking Laboratory | ||
3 | + * | ||
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 | + */ | ||
16 | +package org.onosproject.isis.controller.topology; | ||
17 | + | ||
18 | +/** | ||
19 | + * Abstraction of an ISIS link listener. | ||
20 | + */ | ||
21 | +public interface IsisLinkListener { | ||
22 | + | ||
23 | + /** | ||
24 | + * Notifies that we got a link from network. | ||
25 | + * | ||
26 | + * @param isisRouter router instance | ||
27 | + * @param isisLinkTed link TED information of router | ||
28 | + */ | ||
29 | + void addLink(IsisRouter isisRouter, IsisLinkTed isisLinkTed); | ||
30 | + | ||
31 | + /** | ||
32 | + * Notifies that a link got removed from network. | ||
33 | + * | ||
34 | + * @param isisRouter router instance | ||
35 | + * @param isisLinkTed isis link ted infromation | ||
36 | + */ | ||
37 | + void deleteLink(IsisRouter isisRouter, IsisLinkTed isisLinkTed); | ||
38 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
protocols/isis/api/src/main/java/org/onosproject/isis/controller/topology/IsisLinkTed.java
0 → 100644
1 | +/* | ||
2 | + * Copyright 2016-present Open Networking Laboratory | ||
3 | + * | ||
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 | + */ | ||
16 | +package org.onosproject.isis.controller.topology; | ||
17 | + | ||
18 | +import org.onlab.packet.Ip4Address; | ||
19 | +import org.onlab.packet.Ip6Address; | ||
20 | +import org.onlab.util.Bandwidth; | ||
21 | + | ||
22 | +import java.util.List; | ||
23 | + | ||
24 | +/** | ||
25 | + * Representation of ISIS link traffic engineering parameters. | ||
26 | + */ | ||
27 | +public interface IsisLinkTed { | ||
28 | + | ||
29 | + /** | ||
30 | + * Provides maximum bandwidth can be used on the link. | ||
31 | + * | ||
32 | + * @return maximum bandwidth | ||
33 | + */ | ||
34 | + Bandwidth maximumLink(); | ||
35 | + | ||
36 | + /** | ||
37 | + * Sets maximum band width. | ||
38 | + * | ||
39 | + * @param bandwidth maximum bandwidth | ||
40 | + */ | ||
41 | + void setMaximumLink(Bandwidth bandwidth); | ||
42 | + | ||
43 | + /** | ||
44 | + * Amount of bandwidth reservable on the link. | ||
45 | + * | ||
46 | + * @return unreserved bandwidth | ||
47 | + */ | ||
48 | + List<Bandwidth> maxUnResBandwidth(); | ||
49 | + | ||
50 | + /** | ||
51 | + * Sets max bandwidth that is not reserved on the link. | ||
52 | + * | ||
53 | + * @param bandwidth max bandwidth that is not reserved on the link | ||
54 | + */ | ||
55 | + void setMaxUnResBandwidth(Bandwidth bandwidth); | ||
56 | + | ||
57 | + /** | ||
58 | + * Provides max bandwidth that can be reserved on the link. | ||
59 | + * | ||
60 | + * @return max bandwidth reserved | ||
61 | + */ | ||
62 | + Bandwidth maxReserved(); | ||
63 | + | ||
64 | + /** | ||
65 | + * Sets max bandwidth that can be reserved on the link. | ||
66 | + * | ||
67 | + * @param bandwidth max bandwidth that can be reserved on the link | ||
68 | + */ | ||
69 | + void setMaxReserved(Bandwidth bandwidth); | ||
70 | + | ||
71 | + /** | ||
72 | + * Provides Traffic Engineering metric for the link. | ||
73 | + * | ||
74 | + * @return Traffic Engineering metric | ||
75 | + */ | ||
76 | + int teMetric(); | ||
77 | + | ||
78 | + /** | ||
79 | + * Sets Traffic Engineering metric for the link. | ||
80 | + * | ||
81 | + * @param teMetric Traffic Engineering metric for the link | ||
82 | + */ | ||
83 | + void setTeMetric(int teMetric); | ||
84 | + | ||
85 | + /** | ||
86 | + * Provides IPv4 router-Id of local node. | ||
87 | + * | ||
88 | + * @return IPv4 router-Id of local node | ||
89 | + */ | ||
90 | + List<Ip4Address> ipv4LocRouterId(); | ||
91 | + | ||
92 | + /** | ||
93 | + * Sets IPv4 router-Id of local node. | ||
94 | + * | ||
95 | + * @param routerIds IPv4 router-Id of local node | ||
96 | + */ | ||
97 | + void setIpv4LocRouterId(List<Ip4Address> routerIds); | ||
98 | + | ||
99 | + /** | ||
100 | + * Provides IPv6 router-Id of local node. | ||
101 | + * | ||
102 | + * @return IPv6 router-Id of local node | ||
103 | + */ | ||
104 | + List<Ip6Address> ipv6LocRouterId(); | ||
105 | + | ||
106 | + /** | ||
107 | + * Sets IPv6 router-Id of local node. | ||
108 | + * | ||
109 | + * @param routerIds IPv6 router-Id of local node | ||
110 | + */ | ||
111 | + void setIpv6LocRouterId(List<Ip6Address> routerIds); | ||
112 | + | ||
113 | + /** | ||
114 | + * Provides IPv4 router-Id of remote node. | ||
115 | + * | ||
116 | + * @return IPv4 router-Id of remote node | ||
117 | + */ | ||
118 | + List<Ip4Address> ipv4RemRouterId(); | ||
119 | + | ||
120 | + /** | ||
121 | + * Sets IPv4 router-Id of remote node. | ||
122 | + * | ||
123 | + * @param routerIds IPv4 router-Id of remote node | ||
124 | + */ | ||
125 | + void setIpv4RemRouterId(List<Ip4Address> routerIds); | ||
126 | + | ||
127 | + /** | ||
128 | + * Provides IPv6 router-Id of remote node. | ||
129 | + * | ||
130 | + * @return IPv6 router-Id of remote node | ||
131 | + */ | ||
132 | + List<Ip6Address> ipv6RemRouterId(); | ||
133 | + | ||
134 | + /** | ||
135 | + * Sets IPv6 router-Id of remote node. | ||
136 | + * | ||
137 | + * @param routerIds IPv6 router-Id of remote node | ||
138 | + */ | ||
139 | + void setIpv6RemRouterId(List<Ip6Address> routerIds); | ||
140 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
... | @@ -13,7 +13,7 @@ | ... | @@ -13,7 +13,7 @@ |
13 | * See the License for the specific language governing permissions and | 13 | * See the License for the specific language governing permissions and |
14 | * limitations under the License. | 14 | * limitations under the License. |
15 | */ | 15 | */ |
16 | -package org.onosproject.isis.controller; | 16 | +package org.onosproject.isis.controller.topology; |
17 | 17 | ||
18 | import org.onlab.packet.Ip4Address; | 18 | import org.onlab.packet.Ip4Address; |
19 | 19 | ||
... | @@ -23,14 +23,14 @@ import org.onlab.packet.Ip4Address; | ... | @@ -23,14 +23,14 @@ import org.onlab.packet.Ip4Address; |
23 | public interface IsisRouter { | 23 | public interface IsisRouter { |
24 | 24 | ||
25 | /** | 25 | /** |
26 | - * Gets IP address of the router. | 26 | + * Returns IP address of the router. |
27 | * | 27 | * |
28 | * @return IP address of the router | 28 | * @return IP address of the router |
29 | */ | 29 | */ |
30 | Ip4Address routerIp(); | 30 | Ip4Address routerIp(); |
31 | 31 | ||
32 | /** | 32 | /** |
33 | - * Gets IP address of the interface. | 33 | + * Returns IP address of the interface. |
34 | * | 34 | * |
35 | * @return IP address of the interface | 35 | * @return IP address of the interface |
36 | */ | 36 | */ |
... | @@ -42,4 +42,4 @@ public interface IsisRouter { | ... | @@ -42,4 +42,4 @@ public interface IsisRouter { |
42 | * @param routerIp IP address of the router | 42 | * @param routerIp IP address of the router |
43 | */ | 43 | */ |
44 | void setRouterIp(Ip4Address routerIp); | 44 | void setRouterIp(Ip4Address routerIp); |
45 | -} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
45 | +} | ... | ... |
... | @@ -13,7 +13,7 @@ | ... | @@ -13,7 +13,7 @@ |
13 | * See the License for the specific language governing permissions and | 13 | * See the License for the specific language governing permissions and |
14 | * limitations under the License. | 14 | * limitations under the License. |
15 | */ | 15 | */ |
16 | -package org.onosproject.isis.controller; | 16 | +package org.onosproject.isis.controller.topology; |
17 | 17 | ||
18 | /** | 18 | /** |
19 | * Abstraction of an ISIS Router Listener. | 19 | * Abstraction of an ISIS Router Listener. | ... | ... |
protocols/isis/api/src/main/java/org/onosproject/isis/controller/topology/package-info.java
0 → 100644
1 | +/* | ||
2 | + * Copyright 2016-present Open Networking Laboratory | ||
3 | + * | ||
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 | + */ | ||
16 | + | ||
17 | +/** | ||
18 | + * Implementation of the ISIS topology provider. | ||
19 | + */ | ||
20 | +package org.onosproject.isis.controller.topology; | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
-
Please register or login to post a comment