Committed by
Gerrit Code Review
ONOS-4505: Bug Fixes
Change-Id: Ia030aa3aff9e2ad34a5e27fbe4ba088dda65bfa7
Showing
34 changed files
with
584 additions
and
55 deletions
... | @@ -195,13 +195,6 @@ public interface IsisInterface { | ... | @@ -195,13 +195,6 @@ public interface IsisInterface { |
195 | void setAreaLength(int areaLength); | 195 | void setAreaLength(int areaLength); |
196 | 196 | ||
197 | /** | 197 | /** |
198 | - * Sets link state packet ID. | ||
199 | - * | ||
200 | - * @param lspId link state packet ID | ||
201 | - */ | ||
202 | - void setLspId(String lspId); | ||
203 | - | ||
204 | - /** | ||
205 | * Returns holding time. | 198 | * Returns holding time. |
206 | * | 199 | * |
207 | * @return holding time | 200 | * @return holding time |
... | @@ -251,6 +244,11 @@ public interface IsisInterface { | ... | @@ -251,6 +244,11 @@ public interface IsisInterface { |
251 | void startHelloSender(Channel channel); | 244 | void startHelloSender(Channel channel); |
252 | 245 | ||
253 | /** | 246 | /** |
247 | + * Stops the hello timer which sends hello packet every configured seconds. | ||
248 | + */ | ||
249 | + void stopHelloSender(); | ||
250 | + | ||
251 | + /** | ||
254 | * Processes an ISIS message which is received on this interface. | 252 | * Processes an ISIS message which is received on this interface. |
255 | * | 253 | * |
256 | * @param isisMessage ISIS message instance | 254 | * @param isisMessage ISIS message instance |
... | @@ -315,4 +313,9 @@ public interface IsisInterface { | ... | @@ -315,4 +313,9 @@ public interface IsisInterface { |
315 | * @param isisNeighbor ISIS neighbor instance | 313 | * @param isisNeighbor ISIS neighbor instance |
316 | */ | 314 | */ |
317 | void removeNeighbor(IsisNeighbor isisNeighbor); | 315 | void removeNeighbor(IsisNeighbor isisNeighbor); |
316 | + | ||
317 | + /** | ||
318 | + * Removes all the neighbors. | ||
319 | + */ | ||
320 | + void removeNeighbors(); | ||
318 | } | 321 | } | ... | ... |
... | @@ -108,4 +108,18 @@ public interface IsisLsdb { | ... | @@ -108,4 +108,18 @@ public interface IsisLsdb { |
108 | * @return neighbor database information | 108 | * @return neighbor database information |
109 | */ | 109 | */ |
110 | Map<String, LspWrapper> getL2Db(); | 110 | Map<String, LspWrapper> getL2Db(); |
111 | + | ||
112 | + /** | ||
113 | + * Sets the level 1 link state sequence number. | ||
114 | + * | ||
115 | + * @param l1LspSeqNo link state sequence number | ||
116 | + */ | ||
117 | + void setL1LspSeqNo(int l1LspSeqNo); | ||
118 | + | ||
119 | + /** | ||
120 | + * Sets the level 2 link state sequence number. | ||
121 | + * | ||
122 | + * @param l2LspSeqNo link state sequence number | ||
123 | + */ | ||
124 | + void setL2LspSeqNo(int l2LspSeqNo); | ||
111 | } | 125 | } |
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
... | @@ -108,4 +108,16 @@ public interface IsisNeighbor { | ... | @@ -108,4 +108,16 @@ public interface IsisNeighbor { |
108 | * Stops the inactivity timer. | 108 | * Stops the inactivity timer. |
109 | */ | 109 | */ |
110 | void stopInactivityTimeCheck(); | 110 | void stopInactivityTimeCheck(); |
111 | -} | 111 | + |
112 | + /** | ||
113 | + * Stops the holding time check timer. | ||
114 | + */ | ||
115 | + void stopHoldingTimeCheck(); | ||
116 | + | ||
117 | + /** | ||
118 | + * Returns router type. | ||
119 | + * | ||
120 | + * @return router type | ||
121 | + */ | ||
122 | + IsisRouterType routerType(); | ||
123 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/Controller.java
100755 → 100644
This diff is collapsed. Click to expand it.
protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/DefaultIsisController.java
100755 → 100644
File mode changed
protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/DefaultIsisInterface.java
100755 → 100644
This diff is collapsed. Click to expand it.
protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/DefaultIsisNeighbor.java
100755 → 100644
... | @@ -88,6 +88,7 @@ public class DefaultIsisNeighbor implements IsisNeighbor { | ... | @@ -88,6 +88,7 @@ public class DefaultIsisNeighbor implements IsisNeighbor { |
88 | } | 88 | } |
89 | this.isisInterface = isisInterface; | 89 | this.isisInterface = isisInterface; |
90 | startHoldingTimeCheck(); | 90 | startHoldingTimeCheck(); |
91 | + log.debug("Neighbor added - {}", neighborMacAddress); | ||
91 | } | 92 | } |
92 | 93 | ||
93 | /** | 94 | /** |
... | @@ -387,6 +388,10 @@ public class DefaultIsisNeighbor implements IsisNeighbor { | ... | @@ -387,6 +388,10 @@ public class DefaultIsisNeighbor implements IsisNeighbor { |
387 | @Override | 388 | @Override |
388 | public void run() { | 389 | public void run() { |
389 | holdingTime--; | 390 | holdingTime--; |
391 | + if (holdingTime <= 0) { | ||
392 | + log.debug("Calling neighbor down. Holding time is 0."); | ||
393 | + neighborDown(); | ||
394 | + } | ||
390 | } | 395 | } |
391 | } | 396 | } |
392 | } | 397 | } |
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/DefaultIsisProcess.java
100755 → 100644
File mode changed
protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/IsisChannelHandler.java
100755 → 100644
... | @@ -94,13 +94,35 @@ public class IsisChannelHandler extends IdleStateAwareChannelHandler { | ... | @@ -94,13 +94,35 @@ public class IsisChannelHandler extends IdleStateAwareChannelHandler { |
94 | for (IsisInterface isisUpdatedInterface : isisUpdatedProcess.isisInterfaceList()) { | 94 | for (IsisInterface isisUpdatedInterface : isisUpdatedProcess.isisInterfaceList()) { |
95 | IsisInterface isisInterface = isisInterfaceMap.get(isisUpdatedInterface.interfaceIndex()); | 95 | IsisInterface isisInterface = isisInterfaceMap.get(isisUpdatedInterface.interfaceIndex()); |
96 | if (isisInterface == null) { | 96 | if (isisInterface == null) { |
97 | - isisInterfaceMap.put(isisInterface.interfaceIndex(), isisInterface); | 97 | + isisInterfaceMap.put(isisUpdatedInterface.interfaceIndex(), isisUpdatedInterface); |
98 | - interfaceIps.add(isisInterface.interfaceIpAddress()); | 98 | + interfaceIps.add(isisUpdatedInterface.interfaceIpAddress()); |
99 | } else { | 99 | } else { |
100 | - isisInterface.setReservedPacketCircuitType(isisUpdatedInterface.reservedPacketCircuitType()); | 100 | + if (isisInterface.intermediateSystemName() != isisUpdatedInterface.intermediateSystemName()) { |
101 | - isisInterface.setNetworkType(isisUpdatedInterface.networkType()); | 101 | + isisInterface.setIntermediateSystemName(isisUpdatedInterface.intermediateSystemName()); |
102 | - isisInterface.setHoldingTime(isisUpdatedInterface.holdingTime()); | 102 | + } |
103 | - isisInterface.setHelloInterval(isisUpdatedInterface.helloInterval()); | 103 | + if (isisInterface.reservedPacketCircuitType() != isisUpdatedInterface.reservedPacketCircuitType()) { |
104 | + isisInterface.setReservedPacketCircuitType(isisUpdatedInterface.reservedPacketCircuitType()); | ||
105 | + isisInterface.removeNeighbors(); | ||
106 | + } | ||
107 | + if (isisInterface.circuitId() != isisUpdatedInterface.circuitId()) { | ||
108 | + isisInterface.setCircuitId(isisUpdatedInterface.circuitId()); | ||
109 | + } | ||
110 | + if (isisInterface.networkType() != isisUpdatedInterface.networkType()) { | ||
111 | + isisInterface.setNetworkType(isisUpdatedInterface.networkType()); | ||
112 | + isisInterface.removeNeighbors(); | ||
113 | + } | ||
114 | + if (isisInterface.areaAddress() != isisUpdatedInterface.areaAddress()) { | ||
115 | + isisInterface.setAreaAddress(isisUpdatedInterface.areaAddress()); | ||
116 | + } | ||
117 | + if (isisInterface.holdingTime() != isisUpdatedInterface.holdingTime()) { | ||
118 | + isisInterface.setHoldingTime(isisUpdatedInterface.holdingTime()); | ||
119 | + } | ||
120 | + if (isisInterface.helloInterval() != isisUpdatedInterface.helloInterval()) { | ||
121 | + isisInterface.setHelloInterval(isisUpdatedInterface.helloInterval()); | ||
122 | + isisInterface.stopHelloSender(); | ||
123 | + isisInterface.startHelloSender(channel); | ||
124 | + } | ||
125 | + | ||
104 | isisInterfaceMap.put(isisInterface.interfaceIndex(), isisInterface); | 126 | isisInterfaceMap.put(isisInterface.interfaceIndex(), isisInterface); |
105 | } | 127 | } |
106 | } | 128 | } |
... | @@ -144,6 +166,9 @@ public class IsisChannelHandler extends IdleStateAwareChannelHandler { | ... | @@ -144,6 +166,9 @@ public class IsisChannelHandler extends IdleStateAwareChannelHandler { |
144 | @Override | 166 | @Override |
145 | public void channelDisconnected(ChannelHandlerContext ctx, ChannelStateEvent evt) { | 167 | public void channelDisconnected(ChannelHandlerContext ctx, ChannelStateEvent evt) { |
146 | log.debug("IsisChannelHandler::channelDisconnected...!!!"); | 168 | log.debug("IsisChannelHandler::channelDisconnected...!!!"); |
169 | + if (controller != null) { | ||
170 | + controller.connectPeer(); | ||
171 | + } | ||
147 | } | 172 | } |
148 | 173 | ||
149 | @Override | 174 | @Override |
... | @@ -169,8 +194,9 @@ public class IsisChannelHandler extends IdleStateAwareChannelHandler { | ... | @@ -169,8 +194,9 @@ public class IsisChannelHandler extends IdleStateAwareChannelHandler { |
169 | } else if (e.getCause() instanceof RejectedExecutionException) { | 194 | } else if (e.getCause() instanceof RejectedExecutionException) { |
170 | log.warn("Could not process message: queue full"); | 195 | log.warn("Could not process message: queue full"); |
171 | } else { | 196 | } else { |
172 | - log.error("Error while processing message from ISIS {}", | 197 | + log.error("Error while processing message from ISIS {}, {}", |
173 | - e.getChannel().getRemoteAddress()); | 198 | + e.getChannel().getRemoteAddress(), e.getCause().getMessage()); |
199 | + e.getCause().printStackTrace(); | ||
174 | } | 200 | } |
175 | } | 201 | } |
176 | 202 | ... | ... |
protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/IsisHelloPduSender.java
100755 → 100644
... | @@ -45,7 +45,7 @@ public class IsisHelloPduSender implements Runnable { | ... | @@ -45,7 +45,7 @@ public class IsisHelloPduSender implements Runnable { |
45 | 45 | ||
46 | @Override | 46 | @Override |
47 | public void run() { | 47 | public void run() { |
48 | - if (channel != null) { | 48 | + if (channel != null && channel.isConnected() && channel.isOpen()) { |
49 | try { | 49 | try { |
50 | byte[] helloPdu = null; | 50 | byte[] helloPdu = null; |
51 | byte[] interfaceIndex = {(byte) isisInterface.interfaceIndex()}; | 51 | byte[] interfaceIndex = {(byte) isisInterface.interfaceIndex()}; | ... | ... |
protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/IsisMessageDecoder.java
100755 → 100644
... | @@ -44,7 +44,6 @@ public class IsisMessageDecoder extends FrameDecoder { | ... | @@ -44,7 +44,6 @@ public class IsisMessageDecoder extends FrameDecoder { |
44 | log.info("Channel is not connected."); | 44 | log.info("Channel is not connected."); |
45 | return null; | 45 | return null; |
46 | } | 46 | } |
47 | - | ||
48 | IsisMessageReader messageReader = new IsisMessageReader(); | 47 | IsisMessageReader messageReader = new IsisMessageReader(); |
49 | List<IsisMessage> isisMessageList = new LinkedList<>(); | 48 | List<IsisMessage> isisMessageList = new LinkedList<>(); |
50 | int dataLength = buffer.readableBytes(); | 49 | int dataLength = buffer.readableBytes(); |
... | @@ -74,8 +73,7 @@ public class IsisMessageDecoder extends FrameDecoder { | ... | @@ -74,8 +73,7 @@ public class IsisMessageDecoder extends FrameDecoder { |
74 | isisMessageList.add(message); | 73 | isisMessageList.add(message); |
75 | } | 74 | } |
76 | } | 75 | } |
77 | - | 76 | + return (isisMessageList.size() > 0) ? isisMessageList : null; |
78 | - return isisMessageList; | ||
79 | } | 77 | } |
80 | 78 | ||
81 | /** | 79 | /** | ... | ... |
protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/IsisMessageEncoder.java
100755 → 100644
File mode changed
protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/IsisPipelineFactory.java
100755 → 100644
File mode changed
protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/lsdb/DefaultIsisLsdb.java
100755 → 100644
... | @@ -45,7 +45,6 @@ public class DefaultIsisLsdb implements IsisLsdb { | ... | @@ -45,7 +45,6 @@ public class DefaultIsisLsdb implements IsisLsdb { |
45 | private IsisLsdbAge lsdbAge = null; | 45 | private IsisLsdbAge lsdbAge = null; |
46 | 46 | ||
47 | 47 | ||
48 | - | ||
49 | private int l1LspSeqNo = IsisConstants.STARTLSSEQUENCENUM; | 48 | private int l1LspSeqNo = IsisConstants.STARTLSSEQUENCENUM; |
50 | private int l2LspSeqNo = IsisConstants.STARTLSSEQUENCENUM; | 49 | private int l2LspSeqNo = IsisConstants.STARTLSSEQUENCENUM; |
51 | 50 | ||
... | @@ -80,6 +79,7 @@ public class DefaultIsisLsdb implements IsisLsdb { | ... | @@ -80,6 +79,7 @@ public class DefaultIsisLsdb implements IsisLsdb { |
80 | public void setL2LspSeqNo(int l2LspSeqNo) { | 79 | public void setL2LspSeqNo(int l2LspSeqNo) { |
81 | this.l2LspSeqNo = l2LspSeqNo; | 80 | this.l2LspSeqNo = l2LspSeqNo; |
82 | } | 81 | } |
82 | + | ||
83 | /** | 83 | /** |
84 | * Returns the LSDB LSP key. | 84 | * Returns the LSDB LSP key. |
85 | * | 85 | * |
... | @@ -96,6 +96,7 @@ public class DefaultIsisLsdb implements IsisLsdb { | ... | @@ -96,6 +96,7 @@ public class DefaultIsisLsdb implements IsisLsdb { |
96 | return lspKey.toString(); | 96 | return lspKey.toString(); |
97 | } | 97 | } |
98 | 98 | ||
99 | + | ||
99 | /** | 100 | /** |
100 | * Returns the neighbor L1 database information. | 101 | * Returns the neighbor L1 database information. |
101 | * | 102 | * |
... | @@ -218,7 +219,12 @@ public class DefaultIsisLsdb implements IsisLsdb { | ... | @@ -218,7 +219,12 @@ public class DefaultIsisLsdb implements IsisLsdb { |
218 | byte[] checkSum = {lspBytes[IsisConstants.CHECKSUMPOSITION], lspBytes[IsisConstants.CHECKSUMPOSITION + 1]}; | 219 | byte[] checkSum = {lspBytes[IsisConstants.CHECKSUMPOSITION], lspBytes[IsisConstants.CHECKSUMPOSITION + 1]}; |
219 | lspdu.setCheckSum(ChannelBuffers.copiedBuffer(checkSum).readUnsignedShort()); | 220 | lspdu.setCheckSum(ChannelBuffers.copiedBuffer(checkSum).readUnsignedShort()); |
220 | } | 221 | } |
221 | - DefaultLspWrapper lspWrapper = new DefaultLspWrapper(); | 222 | + |
223 | + DefaultLspWrapper lspWrapper = (DefaultLspWrapper) findLsp(lspdu.isisPduType(), lspdu.lspId()); | ||
224 | + if (lspWrapper == null) { | ||
225 | + lspWrapper = new DefaultLspWrapper(); | ||
226 | + } | ||
227 | + | ||
222 | lspWrapper.setLspAgeReceived(IsisConstants.LSPMAXAGE - lspdu.remainingLifeTime()); | 228 | lspWrapper.setLspAgeReceived(IsisConstants.LSPMAXAGE - lspdu.remainingLifeTime()); |
223 | lspWrapper.setLspType(IsisPduType.get(lspdu.pduType())); | 229 | lspWrapper.setLspType(IsisPduType.get(lspdu.pduType())); |
224 | lspWrapper.setLsPdu(lspdu); | 230 | lspWrapper.setLsPdu(lspdu); |
... | @@ -228,8 +234,8 @@ public class DefaultIsisLsdb implements IsisLsdb { | ... | @@ -228,8 +234,8 @@ public class DefaultIsisLsdb implements IsisLsdb { |
228 | lspWrapper.setIsisInterface(isisInterface); | 234 | lspWrapper.setIsisInterface(isisInterface); |
229 | lspWrapper.setLsdbAge(lsdbAge); | 235 | lspWrapper.setLsdbAge(lsdbAge); |
230 | addLsp(lspWrapper, lspdu.lspId()); | 236 | addLsp(lspWrapper, lspdu.lspId()); |
231 | - log.debug("Added LSp In LSDB: {}", lspWrapper); | ||
232 | 237 | ||
238 | + log.debug("Added LSp In LSDB: {}", lspWrapper); | ||
233 | return true; | 239 | return true; |
234 | } | 240 | } |
235 | 241 | ||
... | @@ -270,7 +276,6 @@ public class DefaultIsisLsdb implements IsisLsdb { | ... | @@ -270,7 +276,6 @@ public class DefaultIsisLsdb implements IsisLsdb { |
270 | lspWrapper.lsPdu().isisPduType(), | 276 | lspWrapper.lsPdu().isisPduType(), |
271 | binNumber, lspWrapper.remainingLifetime()); | 277 | binNumber, lspWrapper.remainingLifetime()); |
272 | } | 278 | } |
273 | - | ||
274 | return false; | 279 | return false; |
275 | } | 280 | } |
276 | 281 | ||
... | @@ -344,4 +349,4 @@ public class DefaultIsisLsdb implements IsisLsdb { | ... | @@ -344,4 +349,4 @@ public class DefaultIsisLsdb implements IsisLsdb { |
344 | break; | 349 | break; |
345 | } | 350 | } |
346 | } | 351 | } |
347 | -} | 352 | +} |
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/lsdb/DefaultIsisLsdbAge.java
100755 → 100644
... | @@ -36,10 +36,10 @@ import java.util.concurrent.TimeUnit; | ... | @@ -36,10 +36,10 @@ import java.util.concurrent.TimeUnit; |
36 | */ | 36 | */ |
37 | public class DefaultIsisLsdbAge implements IsisLsdbAge { | 37 | public class DefaultIsisLsdbAge implements IsisLsdbAge { |
38 | private static final Logger log = LoggerFactory.getLogger(DefaultIsisLsdbAge.class); | 38 | private static final Logger log = LoggerFactory.getLogger(DefaultIsisLsdbAge.class); |
39 | - protected static int ageCounter = 0; | 39 | + protected int ageCounter = 0; |
40 | private InternalAgeTimer dbAgeTimer; | 40 | private InternalAgeTimer dbAgeTimer; |
41 | private ScheduledExecutorService exServiceage; | 41 | private ScheduledExecutorService exServiceage; |
42 | - private Integer maxBins = 1200; | 42 | + private Integer maxBins = IsisConstants.LSPMAXAGE; |
43 | private Map<Integer, IsisLspBin> ageBins = new ConcurrentHashMap<>(maxBins); | 43 | private Map<Integer, IsisLspBin> ageBins = new ConcurrentHashMap<>(maxBins); |
44 | private int ageCounterRollOver = 0; | 44 | private int ageCounterRollOver = 0; |
45 | private IsisLspQueueConsumer queueConsumer = null; | 45 | private IsisLspQueueConsumer queueConsumer = null; |
... | @@ -202,7 +202,7 @@ public class DefaultIsisLsdbAge implements IsisLsdbAge { | ... | @@ -202,7 +202,7 @@ public class DefaultIsisLsdbAge implements IsisLsdbAge { |
202 | } else { | 202 | } else { |
203 | binNumber = ageCounter - IsisConstants.LSPREFRESH; | 203 | binNumber = ageCounter - IsisConstants.LSPREFRESH; |
204 | } | 204 | } |
205 | - if (binNumber > IsisConstants.LSPMAXAGE) { | 205 | + if (binNumber >= IsisConstants.LSPMAXAGE) { |
206 | binNumber = binNumber - IsisConstants.LSPMAXAGE; | 206 | binNumber = binNumber - IsisConstants.LSPMAXAGE; |
207 | } | 207 | } |
208 | IsisLspBin lspBin = ageBins.get(binNumber); | 208 | IsisLspBin lspBin = ageBins.get(binNumber); | ... | ... |
protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/lsdb/DefaultIsisLspBin.java
100755 → 100644
File mode changed
protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/lsdb/DefaultLspWrapper.java
100755 → 100644
... | @@ -21,11 +21,14 @@ import org.onosproject.isis.controller.IsisPduType; | ... | @@ -21,11 +21,14 @@ import org.onosproject.isis.controller.IsisPduType; |
21 | import org.onosproject.isis.controller.LspWrapper; | 21 | import org.onosproject.isis.controller.LspWrapper; |
22 | import org.onosproject.isis.io.isispacket.pdu.LsPdu; | 22 | import org.onosproject.isis.io.isispacket.pdu.LsPdu; |
23 | import org.onosproject.isis.io.util.IsisConstants; | 23 | import org.onosproject.isis.io.util.IsisConstants; |
24 | +import org.slf4j.Logger; | ||
25 | +import org.slf4j.LoggerFactory; | ||
24 | 26 | ||
25 | /** | 27 | /** |
26 | * Representation of LSP wrapper where the LSPs are stored with metadata. | 28 | * Representation of LSP wrapper where the LSPs are stored with metadata. |
27 | */ | 29 | */ |
28 | public class DefaultLspWrapper implements LspWrapper { | 30 | public class DefaultLspWrapper implements LspWrapper { |
31 | + private static final Logger log = LoggerFactory.getLogger(DefaultLspWrapper.class); | ||
29 | private int binNumber = -1; | 32 | private int binNumber = -1; |
30 | private boolean selfOriginated = false; | 33 | private boolean selfOriginated = false; |
31 | private IsisPduType lspType; | 34 | private IsisPduType lspType; |
... | @@ -229,7 +232,15 @@ public class DefaultLspWrapper implements LspWrapper { | ... | @@ -229,7 +232,15 @@ public class DefaultLspWrapper implements LspWrapper { |
229 | int currentAge = 0; | 232 | int currentAge = 0; |
230 | //ls age received | 233 | //ls age received |
231 | if (lsdbAge.ageCounter() >= ageCounterWhenReceived) { | 234 | if (lsdbAge.ageCounter() >= ageCounterWhenReceived) { |
235 | + if (!selfOriginated) { | ||
236 | + if (ageCounterRollOverWhenAdded == lsdbAge.ageCounterRollOver()) { | ||
232 | currentAge = lspAgeReceived + (lsdbAge.ageCounter() - ageCounterWhenReceived); | 237 | currentAge = lspAgeReceived + (lsdbAge.ageCounter() - ageCounterWhenReceived); |
238 | + } else { | ||
239 | + return IsisConstants.LSPMAXAGE; | ||
240 | + } | ||
241 | + } else { | ||
242 | + currentAge = lspAgeReceived + (lsdbAge.ageCounter() - ageCounterWhenReceived); | ||
243 | + } | ||
233 | } else { | 244 | } else { |
234 | currentAge = lspAgeReceived + ((IsisConstants.LSPMAXAGE + lsdbAge.ageCounter()) | 245 | currentAge = lspAgeReceived + ((IsisConstants.LSPMAXAGE + lsdbAge.ageCounter()) |
235 | - ageCounterWhenReceived); | 246 | - ageCounterWhenReceived); |
... | @@ -245,6 +256,8 @@ public class DefaultLspWrapper implements LspWrapper { | ... | @@ -245,6 +256,8 @@ public class DefaultLspWrapper implements LspWrapper { |
245 | return currentAge; | 256 | return currentAge; |
246 | } | 257 | } |
247 | 258 | ||
259 | + | ||
260 | + | ||
248 | /** | 261 | /** |
249 | * Returns remaining time. | 262 | * Returns remaining time. |
250 | * | 263 | * |
... | @@ -252,7 +265,7 @@ public class DefaultLspWrapper implements LspWrapper { | ... | @@ -252,7 +265,7 @@ public class DefaultLspWrapper implements LspWrapper { |
252 | */ | 265 | */ |
253 | public int remainingLifetime() { | 266 | public int remainingLifetime() { |
254 | //Calculate the remaining lifetime | 267 | //Calculate the remaining lifetime |
255 | - remainingLifetime = IsisConstants.LSPMAXAGE - lsdbAge.ageCounter(); | 268 | + remainingLifetime = IsisConstants.LSPMAXAGE - currentAge(); |
256 | return remainingLifetime; | 269 | return remainingLifetime; |
257 | } | 270 | } |
258 | 271 | ... | ... |
protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/lsdb/IsisLspQueueConsumer.java
100755 → 100644
... | @@ -100,7 +100,9 @@ public class IsisLspQueueConsumer implements Runnable { | ... | @@ -100,7 +100,9 @@ public class IsisLspQueueConsumer implements Runnable { |
100 | IsisConstants.CHECKSUMPOSITION + 1); | 100 | IsisConstants.CHECKSUMPOSITION + 1); |
101 | //write to the channel | 101 | //write to the channel |
102 | channel.write(IsisUtil.framePacket(lspBytes, isisInterface.interfaceIndex())); | 102 | channel.write(IsisUtil.framePacket(lspBytes, isisInterface.interfaceIndex())); |
103 | - | 103 | + // Updating the database with resetting remaining life time to default. |
104 | + IsisLsdb isisDb = isisInterface.isisLsdb(); | ||
105 | + isisDb.addLsp(lsPdu, true, isisInterface); | ||
104 | log.debug("LSPQueueConsumer: processRefreshLsp - Flooded SelfOriginated LSP {}", | 106 | log.debug("LSPQueueConsumer: processRefreshLsp - Flooded SelfOriginated LSP {}", |
105 | wrapper.lsPdu()); | 107 | wrapper.lsPdu()); |
106 | } | 108 | } | ... | ... |
protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/lsdb/package-info.java
100755 → 100644
File mode changed
protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/package-info.java
100755 → 100644
File mode changed
... | @@ -16,6 +16,8 @@ | ... | @@ -16,6 +16,8 @@ |
16 | 16 | ||
17 | package org.onosproject.isis.controller.impl; | 17 | package org.onosproject.isis.controller.impl; |
18 | 18 | ||
19 | +import com.fasterxml.jackson.databind.JsonNode; | ||
20 | +import com.fasterxml.jackson.databind.ObjectMapper; | ||
19 | import org.junit.After; | 21 | import org.junit.After; |
20 | import org.junit.Before; | 22 | import org.junit.Before; |
21 | import org.junit.Test; | 23 | import org.junit.Test; |
... | @@ -30,10 +32,65 @@ import static org.junit.Assert.assertThat; | ... | @@ -30,10 +32,65 @@ import static org.junit.Assert.assertThat; |
30 | public class ControllerTest { | 32 | public class ControllerTest { |
31 | 33 | ||
32 | private Controller controller; | 34 | private Controller controller; |
35 | + private ObjectMapper mapper; | ||
36 | + private JsonNode jsonNode; | ||
37 | + private JsonNode jsonNode1; | ||
38 | + private String jsonString = "{" + | ||
39 | + " \"processes\": [{" + | ||
40 | + " \"processId\": \"4.4.4.4\"," + | ||
41 | + " \"interface\": [{" + | ||
42 | + " \"interfaceIndex\": \"2\"," + | ||
43 | + " \"macAddress\": \"08:00:27:b7:ab:bf\"," + | ||
44 | + " \"interfaceIp\": \"192.168.56.101\"," + | ||
45 | + " \"networkMask\": \"255.255.255.224\"," + | ||
46 | + " \"intermediateSystemName\": \"ROUTERONE\"," + | ||
47 | + " \"systemId\": \"2929.2929.2929\"," + | ||
48 | + " \"lanId\": \"0000.0000.0000.00\"," + | ||
49 | + " \"idLength\": \"0\"," + | ||
50 | + " \"maxAreaAddresses\": \"3\"," + | ||
51 | + " \"reservedPacketCircuitType\": \"1\"," + | ||
52 | + " \"circuitId\": \"10\"," + | ||
53 | + " \"networkType\": \"2\"," + | ||
54 | + " \"areaAddress\": \"490000\"," + | ||
55 | + " \"areaLength\": \"3\"," + | ||
56 | + " \"lspId\": \"1313131313130000\"," + | ||
57 | + " \"holdingTime\": \"50\"," + | ||
58 | + " \"helloInterval\": \"10\"," + | ||
59 | + " \"priority\": \"0\"" + | ||
60 | + " }]" + | ||
61 | + " }]" + | ||
62 | + "}"; | ||
63 | + private String jsonString1 = "{" + | ||
64 | + " \"processes\": {" + | ||
65 | + " \"interface\": [{" + | ||
66 | + " \"interfaceIndex\": \"2\"," + | ||
67 | + " \"interfaceIp\": \"100.100.100.100\"," + | ||
68 | + " \"macAddress\": \"08:00:27:b7:ab:bf\"," + | ||
69 | + " \"networkMask\": \"255.255.255.224\"," + | ||
70 | + " \"intermediateSystemName\": \"ROUTERONE\"," + | ||
71 | + " \"systemId\": \"2929.2929.2929\"," + | ||
72 | + " \"lanId\": \"0000.0000.0000.00\"," + | ||
73 | + " \"idLength\": \"0\"," + | ||
74 | + " \"maxAreaAddresses\": \"3\"," + | ||
75 | + " \"reservedPacketCircuitType\": \"1\"," + | ||
76 | + " \"circuitId\": \"10\"," + | ||
77 | + " \"networkType\": \"2\"," + | ||
78 | + " \"areaAddress\": \"490000\"," + | ||
79 | + " \"areaLength\": \"3\"," + | ||
80 | + " \"lspId\": \"1313131313130000\"," + | ||
81 | + " \"holdingTime\": \"50\"," + | ||
82 | + " \"helloInterval\": \"10\"," + | ||
83 | + " \"priority\": \"0\"" + | ||
84 | + " }]" + | ||
85 | + " }" + | ||
86 | + "}"; | ||
33 | 87 | ||
34 | @Before | 88 | @Before |
35 | public void setUp() throws Exception { | 89 | public void setUp() throws Exception { |
36 | controller = new Controller(); | 90 | controller = new Controller(); |
91 | + mapper = new ObjectMapper(); | ||
92 | + jsonNode = mapper.readTree(jsonString); | ||
93 | + jsonNode1 = mapper.readTree(jsonString1); | ||
37 | } | 94 | } |
38 | 95 | ||
39 | @After | 96 | @After |
... | @@ -58,4 +115,18 @@ public class ControllerTest { | ... | @@ -58,4 +115,18 @@ public class ControllerTest { |
58 | controller.getAllConfiguredProcesses(); | 115 | controller.getAllConfiguredProcesses(); |
59 | assertThat(controller, is(notNullValue())); | 116 | assertThat(controller, is(notNullValue())); |
60 | } | 117 | } |
118 | + | ||
119 | + /** | ||
120 | + * Tests updateConfig() method. | ||
121 | + */ | ||
122 | + @Test | ||
123 | + public void testUpdateConfig() throws Exception { | ||
124 | + jsonNode.path("interface"); | ||
125 | + controller.updateConfig(jsonNode); | ||
126 | + assertThat(controller, is(notNullValue())); | ||
127 | + | ||
128 | + controller.updateConfig(jsonNode1); | ||
129 | + assertThat(controller, is(notNullValue())); | ||
130 | + } | ||
131 | + | ||
61 | } | 132 | } |
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
protocols/isis/ctl/src/test/java/org/onosproject/isis/controller/impl/DefaultIsisControllerTest.java
... | @@ -15,9 +15,13 @@ | ... | @@ -15,9 +15,13 @@ |
15 | */ | 15 | */ |
16 | package org.onosproject.isis.controller.impl; | 16 | package org.onosproject.isis.controller.impl; |
17 | 17 | ||
18 | +import com.fasterxml.jackson.databind.JsonNode; | ||
19 | +import com.fasterxml.jackson.databind.ObjectMapper; | ||
20 | +import org.easymock.EasyMock; | ||
18 | import org.junit.After; | 21 | import org.junit.After; |
19 | import org.junit.Before; | 22 | import org.junit.Before; |
20 | import org.junit.Test; | 23 | import org.junit.Test; |
24 | +import org.onosproject.isis.controller.topology.IsisRouterListener; | ||
21 | 25 | ||
22 | import static org.hamcrest.CoreMatchers.is; | 26 | import static org.hamcrest.CoreMatchers.is; |
23 | import static org.hamcrest.CoreMatchers.notNullValue; | 27 | import static org.hamcrest.CoreMatchers.notNullValue; |
... | @@ -27,11 +31,43 @@ import static org.junit.Assert.assertThat; | ... | @@ -27,11 +31,43 @@ import static org.junit.Assert.assertThat; |
27 | * Unit test case for DefaultIsisController. | 31 | * Unit test case for DefaultIsisController. |
28 | */ | 32 | */ |
29 | public class DefaultIsisControllerTest { | 33 | public class DefaultIsisControllerTest { |
34 | + private ObjectMapper mapper; | ||
35 | + private JsonNode jsonNode; | ||
30 | private DefaultIsisController defaultIsisController; | 36 | private DefaultIsisController defaultIsisController; |
37 | + private String jsonString = "{" + | ||
38 | + " \"processes\": [{" + | ||
39 | + " \"processId\": \"4.4.4.4\"," + | ||
40 | + " \"interface\": [{" + | ||
41 | + " \"interfaceIndex\": \"2\"," + | ||
42 | + " \"macAddress\": \"08:00:27:b7:ab:bf\"," + | ||
43 | + " \"interfaceIp\": \"192.168.56.101\"," + | ||
44 | + " \"networkMask\": \"255.255.255.224\"," + | ||
45 | + " \"intermediateSystemName\": \"ROUTERONE\"," + | ||
46 | + " \"systemId\": \"2929.2929.2929\"," + | ||
47 | + " \"lanId\": \"0000.0000.0000.00\"," + | ||
48 | + " \"idLength\": \"0\"," + | ||
49 | + " \"maxAreaAddresses\": \"3\"," + | ||
50 | + " \"reservedPacketCircuitType\": \"1\"," + | ||
51 | + " \"circuitId\": \"10\"," + | ||
52 | + " \"networkType\": \"2\"," + | ||
53 | + " \"areaAddress\": \"490000\"," + | ||
54 | + " \"areaLength\": \"3\"," + | ||
55 | + " \"lspId\": \"1313131313130000\"," + | ||
56 | + " \"holdingTime\": \"50\"," + | ||
57 | + " \"helloInterval\": \"10\"," + | ||
58 | + " \"priority\": \"0\"" + | ||
59 | + " }]" + | ||
60 | + " }]" + | ||
61 | + "}"; | ||
62 | + | ||
63 | + private IsisRouterListener isisRouterListener; | ||
31 | 64 | ||
32 | @Before | 65 | @Before |
33 | public void setUp() throws Exception { | 66 | public void setUp() throws Exception { |
34 | defaultIsisController = new DefaultIsisController(); | 67 | defaultIsisController = new DefaultIsisController(); |
68 | + mapper = new ObjectMapper(); | ||
69 | + jsonNode = mapper.readTree(jsonString); | ||
70 | + isisRouterListener = EasyMock.createNiceMock(IsisRouterListener.class); | ||
35 | } | 71 | } |
36 | 72 | ||
37 | @After | 73 | @After |
... | @@ -66,4 +102,31 @@ public class DefaultIsisControllerTest { | ... | @@ -66,4 +102,31 @@ public class DefaultIsisControllerTest { |
66 | defaultIsisController.allConfiguredProcesses(); | 102 | defaultIsisController.allConfiguredProcesses(); |
67 | assertThat(defaultIsisController, is(notNullValue())); | 103 | assertThat(defaultIsisController, is(notNullValue())); |
68 | } | 104 | } |
105 | + | ||
106 | + /** | ||
107 | + * Tests updateConfig() method. | ||
108 | + */ | ||
109 | + @Test | ||
110 | + public void testUpdateConfig() throws Exception { | ||
111 | + defaultIsisController.updateConfig(jsonNode); | ||
112 | + assertThat(defaultIsisController, is(notNullValue())); | ||
113 | + } | ||
114 | + | ||
115 | + /** | ||
116 | + * Tests addRouterListener() method. | ||
117 | + */ | ||
118 | + @Test | ||
119 | + public void testaddRouterListener() throws Exception { | ||
120 | + defaultIsisController.addRouterListener(isisRouterListener); | ||
121 | + assertThat(defaultIsisController, is(notNullValue())); | ||
122 | + } | ||
123 | + | ||
124 | + /** | ||
125 | + * Tests removeRouterListener() method. | ||
126 | + */ | ||
127 | + @Test | ||
128 | + public void testremoveRouterListener() throws Exception { | ||
129 | + defaultIsisController.removeRouterListener(isisRouterListener); | ||
130 | + assertThat(defaultIsisController, is(notNullValue())); | ||
131 | + } | ||
69 | } | 132 | } | ... | ... |
This diff is collapsed. Click to expand it.
... | @@ -36,6 +36,7 @@ public class DefaultIsisProcessTest { | ... | @@ -36,6 +36,7 @@ public class DefaultIsisProcessTest { |
36 | private final String processId = "1"; | 36 | private final String processId = "1"; |
37 | private IsisProcess isisProcess; | 37 | private IsisProcess isisProcess; |
38 | private String result; | 38 | private String result; |
39 | + private IsisProcess defaultIsisProcess; | ||
39 | private IsisInterface isisInterface; | 40 | private IsisInterface isisInterface; |
40 | private List<IsisInterface> isisInterfaceList; | 41 | private List<IsisInterface> isisInterfaceList; |
41 | private List<IsisInterface> result1; | 42 | private List<IsisInterface> result1; |
... | @@ -44,6 +45,7 @@ public class DefaultIsisProcessTest { | ... | @@ -44,6 +45,7 @@ public class DefaultIsisProcessTest { |
44 | public void setUp() throws Exception { | 45 | public void setUp() throws Exception { |
45 | isisProcess = new DefaultIsisProcess(); | 46 | isisProcess = new DefaultIsisProcess(); |
46 | isisInterface = EasyMock.createNiceMock(DefaultIsisInterface.class); | 47 | isisInterface = EasyMock.createNiceMock(DefaultIsisInterface.class); |
48 | + defaultIsisProcess = new DefaultIsisProcess(); | ||
47 | } | 49 | } |
48 | 50 | ||
49 | @After | 51 | @After |
... | @@ -90,4 +92,4 @@ public class DefaultIsisProcessTest { | ... | @@ -90,4 +92,4 @@ public class DefaultIsisProcessTest { |
90 | result1 = isisProcess.isisInterfaceList(); | 92 | result1 = isisProcess.isisInterfaceList(); |
91 | assertThat(result1, is(nullValue())); | 93 | assertThat(result1, is(nullValue())); |
92 | } | 94 | } |
93 | -} | 95 | +} |
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
... | @@ -23,10 +23,14 @@ import org.jboss.netty.channel.MessageEvent; | ... | @@ -23,10 +23,14 @@ import org.jboss.netty.channel.MessageEvent; |
23 | import org.junit.After; | 23 | import org.junit.After; |
24 | import org.junit.Before; | 24 | import org.junit.Before; |
25 | import org.junit.Test; | 25 | import org.junit.Test; |
26 | +import org.onlab.packet.Ip4Address; | ||
27 | +import org.onosproject.isis.controller.IsisInterface; | ||
26 | import org.onosproject.isis.controller.IsisMessage; | 28 | import org.onosproject.isis.controller.IsisMessage; |
29 | +import org.onosproject.isis.controller.IsisNetworkType; | ||
27 | import org.onosproject.isis.controller.IsisProcess; | 30 | import org.onosproject.isis.controller.IsisProcess; |
28 | import org.onosproject.isis.io.isispacket.pdu.L1L2HelloPdu; | 31 | import org.onosproject.isis.io.isispacket.pdu.L1L2HelloPdu; |
29 | 32 | ||
33 | +import java.util.ArrayList; | ||
30 | import java.util.List; | 34 | import java.util.List; |
31 | 35 | ||
32 | import static org.hamcrest.CoreMatchers.is; | 36 | import static org.hamcrest.CoreMatchers.is; |
... | @@ -43,12 +47,14 @@ public class IsisChannelHandlerTest { | ... | @@ -43,12 +47,14 @@ public class IsisChannelHandlerTest { |
43 | private IsisChannelHandler isisChannelHandler; | 47 | private IsisChannelHandler isisChannelHandler; |
44 | private Controller controller; | 48 | private Controller controller; |
45 | private IsisProcess isisProcess; | 49 | private IsisProcess isisProcess; |
46 | - private List<IsisProcess> isisProcessList; | 50 | + private List<IsisProcess> isisProcessList = new ArrayList(); |
47 | private ChannelHandlerContext channelHandlerContext; | 51 | private ChannelHandlerContext channelHandlerContext; |
48 | private ChannelStateEvent channelStateEvent; | 52 | private ChannelStateEvent channelStateEvent; |
49 | private ExceptionEvent exceptionEvent; | 53 | private ExceptionEvent exceptionEvent; |
50 | private MessageEvent messageEvent; | 54 | private MessageEvent messageEvent; |
51 | private IsisMessage isisMessage; | 55 | private IsisMessage isisMessage; |
56 | + private List<IsisInterface> isisInterfaceList = new ArrayList<>(); | ||
57 | + private Ip4Address ip4Address = Ip4Address.valueOf("10.10.10.10"); | ||
52 | 58 | ||
53 | @Before | 59 | @Before |
54 | public void setUp() throws Exception { | 60 | public void setUp() throws Exception { |
... | @@ -71,7 +77,7 @@ public class IsisChannelHandlerTest { | ... | @@ -71,7 +77,7 @@ public class IsisChannelHandlerTest { |
71 | /** | 77 | /** |
72 | * Tests initializeInterfaceMap() method. | 78 | * Tests initializeInterfaceMap() method. |
73 | */ | 79 | */ |
74 | - @Test(expected = Exception.class) | 80 | + @Test |
75 | public void testInitializeInterfaceMap() throws Exception { | 81 | public void testInitializeInterfaceMap() throws Exception { |
76 | isisChannelHandler.initializeInterfaceMap(); | 82 | isisChannelHandler.initializeInterfaceMap(); |
77 | assertThat(isisChannelHandler, is(notNullValue())); | 83 | assertThat(isisChannelHandler, is(notNullValue())); |
... | @@ -82,6 +88,32 @@ public class IsisChannelHandlerTest { | ... | @@ -82,6 +88,32 @@ public class IsisChannelHandlerTest { |
82 | */ | 88 | */ |
83 | @Test(expected = Exception.class) | 89 | @Test(expected = Exception.class) |
84 | public void testUpdateInterfaceMap() throws Exception { | 90 | public void testUpdateInterfaceMap() throws Exception { |
91 | + IsisInterface isisInterface = new DefaultIsisInterface(); | ||
92 | + IsisInterface isisInterface1 = new DefaultIsisInterface(); | ||
93 | + isisInterface.setInterfaceIpAddress(ip4Address); | ||
94 | + isisInterface.setInterfaceIndex(1); | ||
95 | + isisInterfaceList.add(isisInterface); | ||
96 | + IsisProcess isisProcess = new DefaultIsisProcess(); | ||
97 | + isisProcess.setIsisInterfaceList(isisInterfaceList); | ||
98 | + isisProcessList.add(isisProcess); | ||
99 | + isisChannelHandler.updateInterfaceMap(isisProcessList); | ||
100 | + assertThat(isisChannelHandler, is(notNullValue())); | ||
101 | + isisProcessList = new ArrayList<>(); | ||
102 | + isisInterface1.setInterfaceIpAddress(ip4Address); | ||
103 | + isisInterface1.setInterfaceIndex(1); | ||
104 | + isisInterface1.setInterfaceIpAddress(ip4Address); | ||
105 | + isisInterface1.setInterfaceIndex(1); | ||
106 | + isisInterface1.setSystemId("9999.9999.9999"); | ||
107 | + isisInterface1.setIntermediateSystemName("router"); | ||
108 | + isisInterface1.setReservedPacketCircuitType(3); | ||
109 | + isisInterface1.setCircuitId("10"); | ||
110 | + isisInterface1.setNetworkType(IsisNetworkType.BROADCAST); | ||
111 | + isisInterface1.setAreaAddress("490001"); | ||
112 | + isisInterface1.setHoldingTime(50); | ||
113 | + isisInterface1.setHelloInterval(10); | ||
114 | + isisInterfaceList.add(isisInterface1); | ||
115 | + isisProcess.setIsisInterfaceList(isisInterfaceList); | ||
116 | + isisProcessList.add(isisProcess); | ||
85 | isisChannelHandler.updateInterfaceMap(isisProcessList); | 117 | isisChannelHandler.updateInterfaceMap(isisProcessList); |
86 | assertThat(isisChannelHandler, is(notNullValue())); | 118 | assertThat(isisChannelHandler, is(notNullValue())); |
87 | } | 119 | } |
... | @@ -89,7 +121,7 @@ public class IsisChannelHandlerTest { | ... | @@ -89,7 +121,7 @@ public class IsisChannelHandlerTest { |
89 | /** | 121 | /** |
90 | * Tests initializeInterfaceIpList() method. | 122 | * Tests initializeInterfaceIpList() method. |
91 | */ | 123 | */ |
92 | - @Test(expected = Exception.class) | 124 | + @Test |
93 | public void testInitializeInterfaceIpList() throws Exception { | 125 | public void testInitializeInterfaceIpList() throws Exception { |
94 | isisChannelHandler.initializeInterfaceIpList(); | 126 | isisChannelHandler.initializeInterfaceIpList(); |
95 | assertThat(isisChannelHandler, is(notNullValue())); | 127 | assertThat(isisChannelHandler, is(notNullValue())); | ... | ... |
... | @@ -58,7 +58,7 @@ public class IsisHelloPduSenderTest { | ... | @@ -58,7 +58,7 @@ public class IsisHelloPduSenderTest { |
58 | /** | 58 | /** |
59 | * Tests run() method. | 59 | * Tests run() method. |
60 | */ | 60 | */ |
61 | - @Test | 61 | + @Test(expected = Exception.class) |
62 | public void testRun() throws Exception { | 62 | public void testRun() throws Exception { |
63 | isisInterface.setNetworkType(IsisNetworkType.P2P); | 63 | isisInterface.setNetworkType(IsisNetworkType.P2P); |
64 | isisInterface.setCircuitId(circuitId); | 64 | isisInterface.setCircuitId(circuitId); | ... | ... |
... | @@ -24,11 +24,14 @@ import static org.hamcrest.MatcherAssert.assertThat; | ... | @@ -24,11 +24,14 @@ import static org.hamcrest.MatcherAssert.assertThat; |
24 | public class IsisMessageDecoderTest { | 24 | public class IsisMessageDecoderTest { |
25 | 25 | ||
26 | private final byte[] hello = { | 26 | private final byte[] hello = { |
27 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | ||
27 | -125, 20, 1, 0, 17, 1, 0, 0, | 28 | -125, 20, 1, 0, 17, 1, 0, 0, |
28 | 2, 51, 51, 51, 51, 51, 51, 0, 100, 5, -39, -126, 1, 4, 3, | 29 | 2, 51, 51, 51, 51, 51, 51, 0, 100, 5, -39, -126, 1, 4, 3, |
29 | 73, 0, 0, -127, 1, -52, -124, 4, -64, -88, 56, 102 | 30 | 73, 0, 0, -127, 1, -52, -124, 4, -64, -88, 56, 102 |
30 | }; | 31 | }; |
32 | + private final byte[] array2 = {0, 0, 0, 0, 0, 0, 0}; | ||
31 | private final String id = "127.0.0.1"; | 33 | private final String id = "127.0.0.1"; |
34 | + private byte[] array1; | ||
32 | private IsisMessageDecoder isisMessageDecoder; | 35 | private IsisMessageDecoder isisMessageDecoder; |
33 | private ChannelHandlerContext ctx; | 36 | private ChannelHandlerContext ctx; |
34 | private Channel channel; | 37 | private Channel channel; |
... | @@ -49,7 +52,8 @@ public class IsisMessageDecoderTest { | ... | @@ -49,7 +52,8 @@ public class IsisMessageDecoderTest { |
49 | public void testDecode() throws Exception { | 52 | public void testDecode() throws Exception { |
50 | channel = EasyMock.createMock(Channel.class); | 53 | channel = EasyMock.createMock(Channel.class); |
51 | socketAddress = InetSocketAddress.createUnresolved(id, 7000); | 54 | socketAddress = InetSocketAddress.createUnresolved(id, 7000); |
52 | - byte[] array = IsisUtil.getPaddingTlvs(hello.length); | 55 | + byte[] array = IsisUtil.getPaddingTlvs(hello.length - 17); |
56 | + array1 = Bytes.concat(hello, array); | ||
53 | channelBuffer = ChannelBuffers.copiedBuffer(Bytes.concat(hello, array)); | 57 | channelBuffer = ChannelBuffers.copiedBuffer(Bytes.concat(hello, array)); |
54 | assertThat(isisMessageDecoder.decode(ctx, channel, channelBuffer), is(nullValue())); | 58 | assertThat(isisMessageDecoder.decode(ctx, channel, channelBuffer), is(nullValue())); |
55 | } | 59 | } | ... | ... |
... | @@ -22,8 +22,13 @@ import org.onosproject.isis.controller.IsisLsdb; | ... | @@ -22,8 +22,13 @@ import org.onosproject.isis.controller.IsisLsdb; |
22 | import org.onosproject.isis.controller.IsisLsdbAge; | 22 | import org.onosproject.isis.controller.IsisLsdbAge; |
23 | import org.onosproject.isis.controller.IsisPduType; | 23 | import org.onosproject.isis.controller.IsisPduType; |
24 | import org.onosproject.isis.controller.LspWrapper; | 24 | import org.onosproject.isis.controller.LspWrapper; |
25 | +import org.onosproject.isis.controller.impl.DefaultIsisInterface; | ||
26 | +import org.onosproject.isis.io.isispacket.IsisHeader; | ||
27 | +import org.onosproject.isis.io.isispacket.pdu.AttachedToOtherAreas; | ||
28 | +import org.onosproject.isis.io.isispacket.pdu.LsPdu; | ||
25 | import org.onosproject.isis.io.util.IsisConstants; | 29 | import org.onosproject.isis.io.util.IsisConstants; |
26 | 30 | ||
31 | +import java.util.List; | ||
27 | import java.util.Map; | 32 | import java.util.Map; |
28 | import java.util.concurrent.ConcurrentHashMap; | 33 | import java.util.concurrent.ConcurrentHashMap; |
29 | 34 | ||
... | @@ -37,19 +42,27 @@ public class DefaultIsisLsdbTest { | ... | @@ -37,19 +42,27 @@ public class DefaultIsisLsdbTest { |
37 | private final int l1LspSeqNo = IsisConstants.STARTLSSEQUENCENUM; | 42 | private final int l1LspSeqNo = IsisConstants.STARTLSSEQUENCENUM; |
38 | private final int l2LspSeqNo = IsisConstants.STARTLSSEQUENCENUM; | 43 | private final int l2LspSeqNo = IsisConstants.STARTLSSEQUENCENUM; |
39 | private final String srcId = "1111.1111.1111"; | 44 | private final String srcId = "1111.1111.1111"; |
40 | - | ||
41 | private DefaultIsisLsdb defaultIsisLsdb; | 45 | private DefaultIsisLsdb defaultIsisLsdb; |
42 | private IsisLsdbAge lsdbAge = null; | 46 | private IsisLsdbAge lsdbAge = null; |
43 | - | ||
44 | - | ||
45 | private int resultInt; | 47 | private int resultInt; |
46 | private Map<String, LspWrapper> resultMap = new ConcurrentHashMap<>(); | 48 | private Map<String, LspWrapper> resultMap = new ConcurrentHashMap<>(); |
47 | private IsisLsdb resultLsdb; | 49 | private IsisLsdb resultLsdb; |
48 | private LspWrapper resultLspWrapper; | 50 | private LspWrapper resultLspWrapper; |
49 | - | 51 | + private List<LspWrapper> lspWrapperList; |
52 | + private LsPdu lsPdu; | ||
53 | + private IsisHeader isisHeader; | ||
54 | + private DefaultIsisInterface defaultIsisInterface; | ||
55 | + private String lspId = "1234.1234.1234.00-00"; | ||
56 | + private String result; | ||
50 | 57 | ||
51 | @Before | 58 | @Before |
52 | public void setUp() throws Exception { | 59 | public void setUp() throws Exception { |
60 | + defaultIsisInterface = new DefaultIsisInterface(); | ||
61 | + isisHeader = new IsisHeader(); | ||
62 | + lsPdu = new LsPdu(isisHeader); | ||
63 | + lsPdu.setLspId(lspId); | ||
64 | + lsPdu.setAttachedToOtherAreas(AttachedToOtherAreas.DEFAULTMETRIC); | ||
65 | + lsPdu.setIsisPduType(IsisPduType.L1LSPDU.value()); | ||
53 | defaultIsisLsdb = new DefaultIsisLsdb(); | 66 | defaultIsisLsdb = new DefaultIsisLsdb(); |
54 | } | 67 | } |
55 | 68 | ||
... | @@ -129,5 +142,60 @@ public class DefaultIsisLsdbTest { | ... | @@ -129,5 +142,60 @@ public class DefaultIsisLsdbTest { |
129 | resultLspWrapper = defaultIsisLsdb.findLsp(IsisPduType.L1HELLOPDU, srcId); | 142 | resultLspWrapper = defaultIsisLsdb.findLsp(IsisPduType.L1HELLOPDU, srcId); |
130 | assertThat(resultLspWrapper, is(nullValue())); | 143 | assertThat(resultLspWrapper, is(nullValue())); |
131 | } | 144 | } |
145 | + | ||
146 | + /** | ||
147 | + * Tests allLspHeaders() method. | ||
148 | + */ | ||
149 | + @Test | ||
150 | + public void testAllLspHeaders() throws Exception { | ||
151 | + defaultIsisLsdb.addLsp(lsPdu, false, defaultIsisInterface); | ||
152 | + lspWrapperList = defaultIsisLsdb.allLspHeaders(true); | ||
153 | + assertThat(lspWrapperList, is(notNullValue())); | ||
154 | + | ||
155 | + defaultIsisLsdb.addLsp(lsPdu, true, defaultIsisInterface); | ||
156 | + lspWrapperList = defaultIsisLsdb.allLspHeaders(true); | ||
157 | + assertThat(lspWrapperList, is(notNullValue())); | ||
158 | + } | ||
159 | + | ||
160 | + /** | ||
161 | + * Tests isNewerOrSameLsp() method. | ||
162 | + */ | ||
163 | + @Test | ||
164 | + public void testIsNewerOrSameLsp() throws Exception { | ||
165 | + result = defaultIsisLsdb.isNewerOrSameLsp(lsPdu, lsPdu); | ||
166 | + assertThat(result, is("same")); | ||
167 | + } | ||
168 | + | ||
169 | + /** | ||
170 | + * Tests lsSequenceNumber() method. | ||
171 | + */ | ||
172 | + @Test | ||
173 | + public void testLsSequenceNumber() throws Exception { | ||
174 | + resultInt = defaultIsisLsdb.lsSequenceNumber(IsisPduType.L1LSPDU); | ||
175 | + assertThat(resultInt, is(1)); | ||
176 | + | ||
177 | + resultInt = defaultIsisLsdb.lsSequenceNumber(IsisPduType.L2LSPDU); | ||
178 | + assertThat(resultInt, is(1)); | ||
179 | + | ||
180 | + resultInt = defaultIsisLsdb.lsSequenceNumber(IsisPduType.L1CSNP); | ||
181 | + assertThat(resultInt, is(1)); | ||
182 | + } | ||
183 | + | ||
184 | + /** | ||
185 | + * Tests deleteLsp() method. | ||
186 | + */ | ||
187 | + @Test | ||
188 | + public void testdeleteLsp() throws Exception { | ||
189 | + defaultIsisLsdb.deleteLsp(lsPdu); | ||
190 | + assertThat(defaultIsisLsdb, is(notNullValue())); | ||
191 | + | ||
192 | + lsPdu.setIsisPduType(IsisPduType.L2LSPDU.value()); | ||
193 | + defaultIsisLsdb.deleteLsp(lsPdu); | ||
194 | + assertThat(defaultIsisLsdb, is(notNullValue())); | ||
195 | + | ||
196 | + lsPdu.setIsisPduType(IsisPduType.L1CSNP.value()); | ||
197 | + defaultIsisLsdb.deleteLsp(lsPdu); | ||
198 | + assertThat(defaultIsisLsdb, is(notNullValue())); | ||
199 | + } | ||
132 | } | 200 | } |
133 | 201 | ... | ... |
... | @@ -19,7 +19,11 @@ import org.junit.After; | ... | @@ -19,7 +19,11 @@ import org.junit.After; |
19 | import org.junit.Before; | 19 | import org.junit.Before; |
20 | import org.junit.Test; | 20 | import org.junit.Test; |
21 | import org.onosproject.isis.controller.IsisInterface; | 21 | import org.onosproject.isis.controller.IsisInterface; |
22 | +import org.onosproject.isis.controller.IsisLsdbAge; | ||
23 | +import org.onosproject.isis.controller.IsisPduType; | ||
22 | import org.onosproject.isis.controller.impl.DefaultIsisInterface; | 24 | import org.onosproject.isis.controller.impl.DefaultIsisInterface; |
25 | +import org.onosproject.isis.io.isispacket.IsisHeader; | ||
26 | +import org.onosproject.isis.io.isispacket.pdu.LsPdu; | ||
23 | 27 | ||
24 | import static org.hamcrest.CoreMatchers.is; | 28 | import static org.hamcrest.CoreMatchers.is; |
25 | import static org.hamcrest.CoreMatchers.notNullValue; | 29 | import static org.hamcrest.CoreMatchers.notNullValue; |
... | @@ -36,11 +40,20 @@ public class DefaultLspWrapperTest { | ... | @@ -36,11 +40,20 @@ public class DefaultLspWrapperTest { |
36 | private int result1; | 40 | private int result1; |
37 | private IsisInterface isisInterface; | 41 | private IsisInterface isisInterface; |
38 | private IsisInterface result2; | 42 | private IsisInterface result2; |
43 | + private IsisPduType isisPduType; | ||
44 | + private boolean result3; | ||
45 | + private LsPdu lsPdu; | ||
46 | + private LsPdu pdu; | ||
47 | + private DefaultIsisLsdbAge defaultIsisLsdbAge; | ||
48 | + private IsisLsdbAge lsdbAge; | ||
39 | 49 | ||
40 | @Before | 50 | @Before |
41 | public void setUp() throws Exception { | 51 | public void setUp() throws Exception { |
42 | defaultLspWrapper = new DefaultLspWrapper(); | 52 | defaultLspWrapper = new DefaultLspWrapper(); |
43 | isisInterface = new DefaultIsisInterface(); | 53 | isisInterface = new DefaultIsisInterface(); |
54 | + pdu = new LsPdu(new IsisHeader()); | ||
55 | + defaultIsisLsdbAge = new DefaultIsisLsdbAge(); | ||
56 | + defaultIsisLsdbAge.startDbAging(); | ||
44 | } | 57 | } |
45 | 58 | ||
46 | @After | 59 | @After |
... | @@ -108,4 +121,169 @@ public class DefaultLspWrapperTest { | ... | @@ -108,4 +121,169 @@ public class DefaultLspWrapperTest { |
108 | assertThat(result2, is(notNullValue())); | 121 | assertThat(result2, is(notNullValue())); |
109 | } | 122 | } |
110 | 123 | ||
124 | + /** | ||
125 | + * Tests ageCounterWhenReceived() getter method. | ||
126 | + */ | ||
127 | + @Test | ||
128 | + public void testAgeCounterWhenReceived() throws Exception { | ||
129 | + defaultLspWrapper.setAgeCounterWhenReceived(1); | ||
130 | + result1 = defaultLspWrapper.ageCounterWhenReceived(); | ||
131 | + assertThat(result1, is(notNullValue())); | ||
132 | + } | ||
133 | + | ||
134 | + /** | ||
135 | + * Tests ageCounterWhenReceived() setter method. | ||
136 | + */ | ||
137 | + @Test | ||
138 | + public void testSetAgeCounterWhenReceived() throws Exception { | ||
139 | + defaultLspWrapper.setAgeCounterWhenReceived(1); | ||
140 | + result1 = defaultLspWrapper.ageCounterWhenReceived(); | ||
141 | + assertThat(result1, is(notNullValue())); | ||
142 | + } | ||
143 | + | ||
144 | + /** | ||
145 | + * Tests ageCounterRollOverWhenAdded() getter method. | ||
146 | + */ | ||
147 | + @Test | ||
148 | + public void testAgeCounterRollOverWhenAdded() throws Exception { | ||
149 | + defaultLspWrapper.setAgeCounterRollOverWhenAdded(1); | ||
150 | + result1 = defaultLspWrapper.ageCounterRollOverWhenAdded(); | ||
151 | + assertThat(result1, is(notNullValue())); | ||
152 | + } | ||
153 | + | ||
154 | + /** | ||
155 | + * Tests ageCounterRollOverWhenAdded() setter method. | ||
156 | + */ | ||
157 | + @Test | ||
158 | + public void testSetAgeCounterRollOverWhenAdded() throws Exception { | ||
159 | + defaultLspWrapper.setAgeCounterRollOverWhenAdded(1); | ||
160 | + result1 = defaultLspWrapper.ageCounterRollOverWhenAdded(); | ||
161 | + assertThat(result1, is(notNullValue())); | ||
162 | + } | ||
163 | + | ||
164 | + /** | ||
165 | + * Tests lspType() getter method. | ||
166 | + */ | ||
167 | + @Test | ||
168 | + public void testLspType() throws Exception { | ||
169 | + defaultLspWrapper.setLspType(IsisPduType.L1LSPDU); | ||
170 | + isisPduType = defaultLspWrapper.lspType(); | ||
171 | + assertThat(isisPduType, is(IsisPduType.L1LSPDU)); | ||
172 | + } | ||
173 | + | ||
174 | + /** | ||
175 | + * Tests lspType() setter method. | ||
176 | + */ | ||
177 | + @Test | ||
178 | + public void testSetLspType() throws Exception { | ||
179 | + defaultLspWrapper.setLspType(IsisPduType.L1LSPDU); | ||
180 | + isisPduType = defaultLspWrapper.lspType(); | ||
181 | + assertThat(isisPduType, is(IsisPduType.L1LSPDU)); | ||
182 | + } | ||
183 | + | ||
184 | + /** | ||
185 | + * Tests isSelfOriginated() getter method. | ||
186 | + */ | ||
187 | + @Test | ||
188 | + public void testIsSelfOriginated() throws Exception { | ||
189 | + defaultLspWrapper.setSelfOriginated(true); | ||
190 | + result3 = defaultLspWrapper.isSelfOriginated(); | ||
191 | + assertThat(result3, is(true)); | ||
192 | + } | ||
193 | + | ||
194 | + /** | ||
195 | + * Tests isSelfOriginated() setter method. | ||
196 | + */ | ||
197 | + @Test | ||
198 | + public void testSetSelfOriginated() throws Exception { | ||
199 | + defaultLspWrapper.setSelfOriginated(true); | ||
200 | + result3 = defaultLspWrapper.isSelfOriginated(); | ||
201 | + assertThat(result3, is(true)); | ||
202 | + } | ||
203 | + | ||
204 | + /** | ||
205 | + * Tests binNumber() getter method. | ||
206 | + */ | ||
207 | + @Test | ||
208 | + public void testBinNumber() throws Exception { | ||
209 | + defaultLspWrapper.setBinNumber(1); | ||
210 | + result1 = defaultLspWrapper.binNumber(); | ||
211 | + assertThat(result1, is(1)); | ||
212 | + } | ||
213 | + | ||
214 | + /** | ||
215 | + * Tests binNumber() setter method. | ||
216 | + */ | ||
217 | + @Test | ||
218 | + public void testSetBinNumber() throws Exception { | ||
219 | + defaultLspWrapper.setBinNumber(1); | ||
220 | + result1 = defaultLspWrapper.binNumber(); | ||
221 | + assertThat(result1, is(1)); | ||
222 | + } | ||
223 | + | ||
224 | + /** | ||
225 | + * Tests lsPdu() getter method. | ||
226 | + */ | ||
227 | + @Test | ||
228 | + public void testLsPdu() throws Exception { | ||
229 | + defaultLspWrapper.setLsPdu(pdu); | ||
230 | + lsPdu = defaultLspWrapper.lsPdu(); | ||
231 | + assertThat(lsPdu, is(pdu)); | ||
232 | + } | ||
233 | + | ||
234 | + /** | ||
235 | + * Tests lsPdu() setter method. | ||
236 | + */ | ||
237 | + @Test | ||
238 | + public void testSetLsPdu() throws Exception { | ||
239 | + defaultLspWrapper.setLsPdu(pdu); | ||
240 | + lsPdu = defaultLspWrapper.lsPdu(); | ||
241 | + assertThat(lsPdu, is(pdu)); | ||
242 | + } | ||
243 | + | ||
244 | + /** | ||
245 | + * Tests lsdbAge() getter method. | ||
246 | + */ | ||
247 | + @Test | ||
248 | + public void testlsdbAge() throws Exception { | ||
249 | + defaultLspWrapper.setLsdbAge(defaultIsisLsdbAge); | ||
250 | + lsdbAge = defaultLspWrapper.lsdbAge(); | ||
251 | + assertThat(lsdbAge, is(defaultIsisLsdbAge)); | ||
252 | + } | ||
253 | + | ||
254 | + /** | ||
255 | + * Tests lsdbAge() setter method. | ||
256 | + */ | ||
257 | + @Test | ||
258 | + public void testSetLsdbAge() throws Exception { | ||
259 | + defaultLspWrapper.setLsdbAge(defaultIsisLsdbAge); | ||
260 | + lsdbAge = defaultLspWrapper.lsdbAge(); | ||
261 | + assertThat(lsdbAge, is(defaultIsisLsdbAge)); | ||
262 | + } | ||
263 | + | ||
264 | + /** | ||
265 | + * Tests remainingLifetime() getter method. | ||
266 | + */ | ||
267 | + @Test | ||
268 | + public void testRemainingLifetime() throws Exception { | ||
269 | + defaultLspWrapper.setLsdbAge(defaultIsisLsdbAge); | ||
270 | + defaultLspWrapper.setAgeCounterWhenReceived(1); | ||
271 | + defaultLspWrapper.currentAge(); | ||
272 | + defaultLspWrapper.setRemainingLifetime(1); | ||
273 | + result1 = defaultLspWrapper.remainingLifetime(); | ||
274 | + assertThat(result1, is(1)); | ||
275 | + } | ||
276 | + | ||
277 | + /** | ||
278 | + * Tests remainingLifetime() setter method. | ||
279 | + */ | ||
280 | + @Test | ||
281 | + public void testSetRemainingLifetime() throws Exception { | ||
282 | + defaultLspWrapper.setLsdbAge(defaultIsisLsdbAge); | ||
283 | + defaultLspWrapper.setAgeCounterWhenReceived(1); | ||
284 | + defaultLspWrapper.currentAge(); | ||
285 | + defaultLspWrapper.setRemainingLifetime(1); | ||
286 | + result1 = defaultLspWrapper.remainingLifetime(); | ||
287 | + assertThat(result1, is(1)); | ||
288 | + } | ||
111 | } | 289 | } |
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
... | @@ -18,7 +18,11 @@ package org.onosproject.isis.controller.impl.lsdb; | ... | @@ -18,7 +18,11 @@ package org.onosproject.isis.controller.impl.lsdb; |
18 | import org.junit.After; | 18 | import org.junit.After; |
19 | import org.junit.Before; | 19 | import org.junit.Before; |
20 | import org.junit.Test; | 20 | import org.junit.Test; |
21 | +import org.onosproject.isis.controller.impl.DefaultIsisInterface; | ||
21 | 22 | ||
23 | +import java.net.InetSocketAddress; | ||
24 | +import java.net.SocketAddress; | ||
25 | +import java.util.concurrent.ArrayBlockingQueue; | ||
22 | import java.util.concurrent.BlockingQueue; | 26 | import java.util.concurrent.BlockingQueue; |
23 | 27 | ||
24 | import static org.hamcrest.CoreMatchers.is; | 28 | import static org.hamcrest.CoreMatchers.is; |
... | @@ -31,10 +35,22 @@ import static org.junit.Assert.assertThat; | ... | @@ -31,10 +35,22 @@ import static org.junit.Assert.assertThat; |
31 | public class IsisLspQueueConsumerTest { | 35 | public class IsisLspQueueConsumerTest { |
32 | 36 | ||
33 | private IsisLspQueueConsumer isisLspQueueConsumer; | 37 | private IsisLspQueueConsumer isisLspQueueConsumer; |
34 | - private BlockingQueue blockingQueue; | 38 | + private BlockingQueue blockingQueue = new ArrayBlockingQueue(1024); |
39 | + private DefaultLspWrapper lspWrapper; | ||
40 | + private DefaultLspWrapper lspWrapper1; | ||
41 | + private SocketAddress socketAddress = InetSocketAddress.createUnresolved("127.0.0.1", 7000); | ||
35 | 42 | ||
36 | @Before | 43 | @Before |
37 | public void setUp() throws Exception { | 44 | public void setUp() throws Exception { |
45 | + lspWrapper = new DefaultLspWrapper(); | ||
46 | + lspWrapper.setLspProcessing("refreshLsp"); | ||
47 | + lspWrapper.setSelfOriginated(true); | ||
48 | + lspWrapper.setIsisInterface(new DefaultIsisInterface()); | ||
49 | + lspWrapper1 = new DefaultLspWrapper(); | ||
50 | + lspWrapper1.setLspProcessing("maxAgeLsp"); | ||
51 | + lspWrapper1.setIsisInterface(new DefaultIsisInterface()); | ||
52 | + blockingQueue.add(lspWrapper); | ||
53 | + blockingQueue.add(lspWrapper1); | ||
38 | isisLspQueueConsumer = new IsisLspQueueConsumer(blockingQueue); | 54 | isisLspQueueConsumer = new IsisLspQueueConsumer(blockingQueue); |
39 | } | 55 | } |
40 | 56 | ... | ... |
protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/pdu/Psnp.java
100755 → 100644
File mode changed
... | @@ -33,6 +33,7 @@ public final class IsisConstants { | ... | @@ -33,6 +33,7 @@ public final class IsisConstants { |
33 | public static final int IRPDISCRIMINATOR = 131; | 33 | public static final int IRPDISCRIMINATOR = 131; |
34 | public static final int ISISVERSION = 1; | 34 | public static final int ISISVERSION = 1; |
35 | public static final int RESERVED = 0; | 35 | public static final int RESERVED = 0; |
36 | + public static final int PRIORITY = 0; | ||
36 | public static final int MAXAREAADDRESS = 0; | 37 | public static final int MAXAREAADDRESS = 0; |
37 | public static final int SYSTEMIDLENGTH = 0; | 38 | public static final int SYSTEMIDLENGTH = 0; |
38 | public static final int PROTOCOLSUPPORTED = 204; | 39 | public static final int PROTOCOLSUPPORTED = 204; |
... | @@ -55,24 +56,15 @@ public final class IsisConstants { | ... | @@ -55,24 +56,15 @@ public final class IsisConstants { |
55 | public static final String DEFAULTLANID = "0000.0000.0000.00"; | 56 | public static final String DEFAULTLANID = "0000.0000.0000.00"; |
56 | public static final String PROCESSESID = "processId"; | 57 | public static final String PROCESSESID = "processId"; |
57 | public static final String INTERFACE = "interface"; | 58 | public static final String INTERFACE = "interface"; |
58 | - public static final String INTERFACEIP = "interfaceIp"; | ||
59 | - public static final String NETWORKMASK = "networkMask"; | ||
60 | public static final String INTERFACEINDEX = "interfaceIndex"; | 59 | public static final String INTERFACEINDEX = "interfaceIndex"; |
61 | public static final String INTERMEDIATESYSTEMNAME = "intermediateSystemName"; | 60 | public static final String INTERMEDIATESYSTEMNAME = "intermediateSystemName"; |
62 | public static final String SYSTEMID = "systemId"; | 61 | public static final String SYSTEMID = "systemId"; |
63 | - public static final String LANID = "lanId"; | ||
64 | - public static final String IDLENGTH = "idLength"; | ||
65 | - public static final String MAXAREAADDRESSES = "maxAreaAddresses"; | ||
66 | public static final String RESERVEDPACKETCIRCUITTYPE = "reservedPacketCircuitType"; | 62 | public static final String RESERVEDPACKETCIRCUITTYPE = "reservedPacketCircuitType"; |
67 | public static final String CIRCUITID = "circuitId"; | 63 | public static final String CIRCUITID = "circuitId"; |
68 | public static final String NETWORKTYPE = "networkType"; | 64 | public static final String NETWORKTYPE = "networkType"; |
69 | public static final String AREAADDRESS = "areaAddress"; | 65 | public static final String AREAADDRESS = "areaAddress"; |
70 | - public static final String AREALENGTH = "areaLength"; | ||
71 | - public static final String LSPID = "lspId"; | ||
72 | public static final String HOLDINGTIME = "holdingTime"; | 66 | public static final String HOLDINGTIME = "holdingTime"; |
73 | public static final String HELLOINTERVAL = "helloInterval"; | 67 | public static final String HELLOINTERVAL = "helloInterval"; |
74 | - public static final String PRIORITY = "priority"; | ||
75 | - public static final String MACADDRESS = "macAddress"; | ||
76 | 68 | ||
77 | /** | 69 | /** |
78 | * Non parameterized constructor. | 70 | * Non parameterized constructor. | ... | ... |
... | @@ -22,6 +22,7 @@ import org.onosproject.isis.controller.IsisInterface; | ... | @@ -22,6 +22,7 @@ import org.onosproject.isis.controller.IsisInterface; |
22 | import org.onosproject.isis.controller.IsisInterfaceState; | 22 | import org.onosproject.isis.controller.IsisInterfaceState; |
23 | import org.onosproject.isis.controller.IsisNeighbor; | 23 | import org.onosproject.isis.controller.IsisNeighbor; |
24 | import org.onosproject.isis.controller.IsisPduType; | 24 | import org.onosproject.isis.controller.IsisPduType; |
25 | +import org.onosproject.isis.controller.IsisRouterType; | ||
25 | import org.onosproject.isis.io.isispacket.IsisHeader; | 26 | import org.onosproject.isis.io.isispacket.IsisHeader; |
26 | import org.onosproject.isis.io.isispacket.pdu.L1L2HelloPdu; | 27 | import org.onosproject.isis.io.isispacket.pdu.L1L2HelloPdu; |
27 | import org.onosproject.isis.io.isispacket.pdu.P2PHelloPdu; | 28 | import org.onosproject.isis.io.isispacket.pdu.P2PHelloPdu; |
... | @@ -394,7 +395,6 @@ public final class IsisUtil { | ... | @@ -394,7 +395,6 @@ public final class IsisUtil { |
394 | isisHeader.setIdLength((byte) IsisConstants.SYSTEMIDLENGTH); | 395 | isisHeader.setIdLength((byte) IsisConstants.SYSTEMIDLENGTH); |
395 | isisHeader.setIsisPduType(IsisPduType.P2PHELLOPDU.value()); | 396 | isisHeader.setIsisPduType(IsisPduType.P2PHELLOPDU.value()); |
396 | isisHeader.setVersion2((byte) IsisConstants.ISISVERSION); | 397 | isisHeader.setVersion2((byte) IsisConstants.ISISVERSION); |
397 | - //isisHeader.setReserved((byte) IsisConstants.RESERVED); | ||
398 | isisHeader.setReserved((byte) IsisConstants.PDULENGTHPOSITION); | 398 | isisHeader.setReserved((byte) IsisConstants.PDULENGTHPOSITION); |
399 | isisHeader.setMaximumAreaAddresses((byte) IsisConstants.MAXAREAADDRESS); | 399 | isisHeader.setMaximumAreaAddresses((byte) IsisConstants.MAXAREAADDRESS); |
400 | P2PHelloPdu p2pHelloPdu = new P2PHelloPdu(isisHeader); | 400 | P2PHelloPdu p2pHelloPdu = new P2PHelloPdu(isisHeader); |
... | @@ -510,14 +510,32 @@ public final class IsisUtil { | ... | @@ -510,14 +510,32 @@ public final class IsisUtil { |
510 | l1L2HelloPdu.addTlv(areaAddressTlv); | 510 | l1L2HelloPdu.addTlv(areaAddressTlv); |
511 | Set<MacAddress> neighbors = isisInterface.neighbors(); | 511 | Set<MacAddress> neighbors = isisInterface.neighbors(); |
512 | if (neighbors.size() > 0) { | 512 | if (neighbors.size() > 0) { |
513 | + List<MacAddress> neighborMacs = new ArrayList<>(); | ||
514 | + for (MacAddress neighbor : neighbors) { | ||
515 | + IsisNeighbor isisNeighbor = isisInterface.lookup(neighbor); | ||
516 | + if (isisPduType == IsisPduType.L1HELLOPDU) { | ||
517 | + if (isisNeighbor.routerType() == IsisRouterType.L1 || | ||
518 | + isisNeighbor.routerType() == IsisRouterType.L1L2) { | ||
519 | + neighborMacs.add(neighbor); | ||
520 | + } | ||
521 | + } else if (isisPduType == IsisPduType.L2HELLOPDU) { | ||
522 | + if (isisNeighbor.routerType() == IsisRouterType.L2 || | ||
523 | + isisNeighbor.routerType() == IsisRouterType.L1L2) { | ||
524 | + neighborMacs.add(neighbor); | ||
525 | + } | ||
526 | + } | ||
527 | + } | ||
528 | + | ||
513 | tlvHeader.setTlvType(TlvType.ISNEIGHBORS.value()); | 529 | tlvHeader.setTlvType(TlvType.ISNEIGHBORS.value()); |
514 | tlvHeader.setTlvLength(0); | 530 | tlvHeader.setTlvLength(0); |
531 | + | ||
515 | IsisNeighborTlv isisNeighborTlv = new IsisNeighborTlv(tlvHeader); | 532 | IsisNeighborTlv isisNeighborTlv = new IsisNeighborTlv(tlvHeader); |
516 | - for (MacAddress neighbor : neighbors) { | 533 | + for (MacAddress neighbor : neighborMacs) { |
517 | isisNeighborTlv.addNeighbor(neighbor); | 534 | isisNeighborTlv.addNeighbor(neighbor); |
518 | } | 535 | } |
519 | l1L2HelloPdu.addTlv(isisNeighborTlv); | 536 | l1L2HelloPdu.addTlv(isisNeighborTlv); |
520 | } | 537 | } |
538 | + | ||
521 | tlvHeader.setTlvType(TlvType.PROTOCOLSUPPORTED.value()); | 539 | tlvHeader.setTlvType(TlvType.PROTOCOLSUPPORTED.value()); |
522 | tlvHeader.setTlvLength(0); | 540 | tlvHeader.setTlvLength(0); |
523 | ProtocolSupportedTlv protocolSupportedTlv = new ProtocolSupportedTlv(tlvHeader); | 541 | ProtocolSupportedTlv protocolSupportedTlv = new ProtocolSupportedTlv(tlvHeader); |
... | @@ -708,4 +726,4 @@ public final class IsisUtil { | ... | @@ -708,4 +726,4 @@ public final class IsisUtil { |
708 | } | 726 | } |
709 | return Bytes.toArray(byteList); | 727 | return Bytes.toArray(byteList); |
710 | } | 728 | } |
711 | -} | 729 | +} |
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
... | @@ -140,8 +140,15 @@ public class LspGenerator { | ... | @@ -140,8 +140,15 @@ public class LspGenerator { |
140 | metricOfIntRea.setExpenseIsInternal(true); | 140 | metricOfIntRea.setExpenseIsInternal(true); |
141 | Ip4Address ip4Address = isisInterface.interfaceIpAddress(); | 141 | Ip4Address ip4Address = isisInterface.interfaceIpAddress(); |
142 | byte[] ipAddress = ip4Address.toOctets(); | 142 | byte[] ipAddress = ip4Address.toOctets(); |
143 | - ipAddress[ipAddress.length - 1] = 0; | 143 | + // ipAddress[ipAddress.length - 1] = 0; |
144 | - metricOfIntRea.setIpAddress(Ip4Address.valueOf(ipAddress)); | 144 | + byte[] networkmass = isisInterface.networkMask(); |
145 | + // metric calculation part | ||
146 | + byte[] result = new byte[ipAddress.length]; | ||
147 | + result[0] = (byte) (ipAddress[0] & networkmass[0]); | ||
148 | + result[1] = (byte) (ipAddress[1] & networkmass[1]); | ||
149 | + result[2] = (byte) (ipAddress[2] & networkmass[2]); | ||
150 | + result[3] = (byte) (ipAddress[3] & networkmass[3]); | ||
151 | + metricOfIntRea.setIpAddress(Ip4Address.valueOf(result)); | ||
145 | metricOfIntRea.setSubnetAddres(Ip4Address.valueOf(isisInterface.networkMask())); | 152 | metricOfIntRea.setSubnetAddres(Ip4Address.valueOf(isisInterface.networkMask())); |
146 | ipInterReacTlv.addInternalReachabilityMetric(metricOfIntRea); | 153 | ipInterReacTlv.addInternalReachabilityMetric(metricOfIntRea); |
147 | lsp.addTlv(ipInterReacTlv); | 154 | lsp.addTlv(ipInterReacTlv); | ... | ... |
-
Please register or login to post a comment