ONOS-4107: ISIS Provider - Bug Fixes
Change-Id: I3c5cb3d1f45f7cf417267fe975256cba2dd066ab
diff --git a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/LspEventConsumer.java b/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/LspEventConsumer.java
index 98586f0..bfede6d 100644
--- a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/LspEventConsumer.java
+++ b/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/LspEventConsumer.java
@@ -45,8 +45,6 @@
public class LspEventConsumer implements Runnable {
private static final Logger log = LoggerFactory.getLogger(LspEventConsumer.class);
public static List<LsPdu> lsPdus = new ArrayList<>();
- private String lspAdded = "LSP_ADDED";
- private String lspRemoved = "LSP_REMOVED";
private BlockingQueue queue = null;
private Controller controller = null;
private TopologyForDeviceAndLinkImpl deviceAndLink = new TopologyForDeviceAndLinkImpl();
@@ -64,24 +62,21 @@
@Override
public void run() {
- log.debug("LspsForProvider:run...!!!");
try {
while (true) {
if (!queue.isEmpty()) {
LspWrapper wrapper = (LspWrapper) queue.take();
LsPdu lsPdu = (LsPdu) wrapper.lsPdu();
- for (IsisTlv isisTlv : lsPdu.tlvs()) {
- if ((isisTlv instanceof IpExtendedReachabilityTlv) ||
- (isisTlv instanceof IsExtendedReachability)) {
- lsPdus.add(lsPdu);
- if (wrapper.lspProcessing().equals(lspAdded)) {
+ if (wrapper.lspProcessing().equals(IsisConstants.LSPREMOVED)) {
+ callTopologyToRemoveInfo(lsPdu);
+ } else if (wrapper.lspProcessing().equals(IsisConstants.LSPADDED)) {
+ for (IsisTlv isisTlv : lsPdu.tlvs()) {
+ if ((isisTlv instanceof IpExtendedReachabilityTlv) ||
+ (isisTlv instanceof IsExtendedReachability)) {
callTopologyToSendInfo(lsPdu, wrapper.isisInterface().networkType(),
wrapper.isisInterface().systemId() + ".00");
+ break;
}
- if (wrapper.lspProcessing().equals(lspRemoved)) {
- callTopologyToRemoveInfo(lsPdu);
- }
- break;
}
}
}
@@ -99,6 +94,9 @@
*/
private void callTopologyToSendInfo(LsPdu lsPdu, IsisNetworkType isisNetworkType,
String ownSystemId) {
+ if ((lsPdu.lspId().equals(ownSystemId + "-00"))) {
+ return;
+ }
if (isisNetworkType.equals(IsisNetworkType.BROADCAST)) {
sendDeviceInfo(lsPdu);
boolean isDis = IsisUtil.checkIsDis(lsPdu.lspId());
@@ -106,9 +104,7 @@
sendLinkInfo(lsPdu, ownSystemId);
}
} else if (isisNetworkType.equals(IsisNetworkType.P2P)) {
-
sendDeviceInfo(lsPdu);
-
for (LsPdu wrapper : lsPdus) {
LsPdu lsPduStored = wrapper;
List<String> neStringList = neighborList(lsPduStored, ownSystemId);
@@ -117,7 +113,6 @@
sendLinkInfo(lsPduStored, ownSystemId);
}
}
-
List<String> neStringList = neighborList(lsPdu, ownSystemId);
Map<String, IsisRouter> routerPresence = deviceAndLink.isisDeviceList();
for (String neighbor : neStringList) {
@@ -137,7 +132,8 @@
* @param lsPdu ls pdu instance
*/
private void callTopologyToRemoveInfo(LsPdu lsPdu) {
- removeDeviceInfo(lsPdu);
+ IsisRouter isisRouter = deviceAndLink.isisRouter(lsPdu.lspId());
+ removeDeviceInfo(isisRouter);
removeLinkInfo(lsPdu);
}
@@ -195,13 +191,13 @@
/**
* Removes the device information from topology provider.
*
- * @param lsPdu ls pdu instance
+ * @param isisRouter ISIS router instance
*/
- private void removeDeviceInfo(LsPdu lsPdu) {
- IsisRouter isisRouter = deviceAndLink.removeDeviceAndLinkInfo(lsPdu);
+ private void removeDeviceInfo(IsisRouter isisRouter) {
if (isisRouter.systemId() != null) {
controller.removeDeviceDetails(isisRouter);
}
+ deviceAndLink.removeRouter(isisRouter.systemId());
}
/**
@@ -228,7 +224,7 @@
* @param lsPdu ls pdu instance
*/
private void removeLinkInfo(LsPdu lsPdu) {
- Map<String, LinkInformation> linkInformationList = deviceAndLink.removeLinkInfo(lsPdu);
+ Map<String, LinkInformation> linkInformationList = deviceAndLink.removeLinkInfo(lsPdu.lspId());
for (String key : linkInformationList.keySet()) {
LinkInformation linkInformation = linkInformationList.get(key);
controller.removeLinkDetails(createIsisLink(linkInformation, lsPdu));
diff --git a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/topology/TopologyForDeviceAndLinkImpl.java b/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/topology/TopologyForDeviceAndLinkImpl.java
index 75427b4..8682a4a 100644
--- a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/topology/TopologyForDeviceAndLinkImpl.java
+++ b/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/topology/TopologyForDeviceAndLinkImpl.java
@@ -22,21 +22,24 @@
import org.onosproject.isis.controller.topology.TopologyForDeviceAndLink;
import org.onosproject.isis.controller.topology.IsisLinkTed;
import org.onosproject.isis.io.isispacket.pdu.LsPdu;
-import org.onosproject.isis.io.isispacket.tlv.IpExtendedReachabilityTlv;
import org.onosproject.isis.io.isispacket.tlv.IsExtendedReachability;
import org.onosproject.isis.io.isispacket.tlv.IsisTlv;
import org.onosproject.isis.io.isispacket.tlv.NeighborForExtendedIs;
-import org.onosproject.isis.io.isispacket.tlv.subtlv.AdministrativeGroup;
+
import org.onosproject.isis.io.isispacket.tlv.subtlv.TrafficEngineeringSubTlv;
import org.onosproject.isis.io.isispacket.tlv.subtlv.InterfaceIpAddress;
import org.onosproject.isis.io.isispacket.tlv.subtlv.NeighborIpAddress;
+import org.onosproject.isis.io.isispacket.tlv.subtlv.AdministrativeGroup;
import org.onosproject.isis.io.isispacket.tlv.subtlv.TrafficEngineeringMetric;
+import org.onosproject.isis.io.isispacket.tlv.subtlv.UnreservedBandwidth;
import org.onosproject.isis.io.isispacket.tlv.subtlv.MaximumReservableBandwidth;
+import org.onosproject.isis.io.isispacket.tlv.subtlv.MaximumBandwidth;
import org.onosproject.isis.io.util.IsisConstants;
import org.onosproject.isis.io.util.IsisUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
@@ -52,7 +55,6 @@
private Map<String, DeviceInformation> deviceInformationMapForPointToPoint = new LinkedHashMap<>();
private Map<String, DeviceInformation> deviceInformationMapToDelete = new LinkedHashMap<>();
private Map<String, LinkInformation> addedLinkInformationMap = new LinkedHashMap<>();
- private Map<String, LinkInformation> removeLinkInformationMap = new LinkedHashMap<>();
/**
* Gets device information.
@@ -226,11 +228,33 @@
}
/**
- * Creates Device and Link instance.
+ * Returns the ISIS router instance.
*
- * @param lsPdu ISIS LSPDU instance
- *
+ * @param systemId system ID to get router details
+ * @return ISIS router instance
*/
+ public IsisRouter isisRouter(String systemId) {
+ String routerId = IsisUtil.removeTailingZeros(systemId);
+ IsisRouter isisRouter = isisRouterDetails.get(routerId);
+ if (isisRouter != null) {
+ return isisRouter;
+ } else {
+ log.debug("IsisRouter is not available");
+ IsisRouter isisRouterCheck = new DefaultIsisRouter();
+ isisRouterCheck.setSystemId(routerId);
+ return isisRouterCheck;
+ }
+ }
+
+ /**
+ * Removes the ISIS router instance from map.
+ *
+ * @param systemId system ID to remove router details
+ */
+ public void removeRouter(String systemId) {
+ String routerId = IsisUtil.removeTailingZeros(systemId);
+ isisRouterDetails.remove(systemId);
+ }
/**
* Creates Device instance.
@@ -249,18 +273,18 @@
}
}
return isisRouter;
- }
+ }/*
- /**
+ *//**
* Removes Device and Link instance.
*
* @param lsPdu ISIS LSPDU instance
* @return isisRouter isisRouter instance
- */
+ *//*
public IsisRouter removeDeviceAndLinkInfo(LsPdu lsPdu) {
IsisRouter isisRouter = createIsisRouter(lsPdu);
return isisRouter;
- }
+ }*/
/**
* Creates link information.
@@ -302,13 +326,14 @@
/**
* Removes link information.
*
- * @param lsPdu ls pdu instance
+ * @param systemId system ID to remove link information
* @return updated link information
*/
- public Map<String, LinkInformation> removeLinkInfo(LsPdu lsPdu) {
- String lspId = lsPdu.lspId();
+ public Map<String, LinkInformation> removeLinkInfo(String systemId) {
+ String routerId = IsisUtil.removeTailingZeros(systemId);
+ Map<String, LinkInformation> removeLinkInformationMap = new LinkedHashMap<>();
for (String key : addedLinkInformationMap.keySet()) {
- if (key.contains(lspId)) {
+ if (key.contains(routerId)) {
removeLinkInformationMap.put(key, addedLinkInformationMap.get(key));
}
}
@@ -328,22 +353,24 @@
LinkInformation linkInformation = new DefaultIsisLinkInformation();
IsisRouter isisRouter = isisRouterDetails.get(neighborId);
for (IsisTlv isisTlv : lsPdu.tlvs()) {
- if (isisTlv instanceof IpExtendedReachabilityTlv) {
- IpExtendedReachabilityTlv ipExtendedReachabilityTlv = (IpExtendedReachabilityTlv) isisTlv;
- List<TrafficEngineeringSubTlv> trafEnginSubTlv = ipExtendedReachabilityTlv.teTlvs();
- for (TrafficEngineeringSubTlv teTlv : trafEnginSubTlv) {
- if (teTlv instanceof InterfaceIpAddress) {
- InterfaceIpAddress localIpAddress = (InterfaceIpAddress) isisTlv;
- linkInformation.setInterfaceIp(localIpAddress.localInterfaceIPAddress());
- }
+ if (isisTlv instanceof IsExtendedReachability) {
+ IsExtendedReachability isExtendedReachability = (IsExtendedReachability) isisTlv;
+ List<NeighborForExtendedIs> neighbours = isExtendedReachability.neighbours();
+ for (NeighborForExtendedIs teTlv : neighbours) {
+ List<TrafficEngineeringSubTlv> teSubTlvs = teTlv.teSubTlv();
+ for (TrafficEngineeringSubTlv teSubTlv : teSubTlvs) {
+ if (teSubTlv instanceof InterfaceIpAddress) {
+ InterfaceIpAddress localIpAddress = (InterfaceIpAddress) teSubTlv;
+ linkInformation.setInterfaceIp(localIpAddress.localInterfaceIPAddress());
+ } else if (teSubTlv instanceof NeighborIpAddress) {
+ NeighborIpAddress neighborIpAddress = (NeighborIpAddress) teSubTlv;
+ linkInformation.setNeighborIp(neighborIpAddress.neighborIPAddress());
+ }
+ }
}
- } else {
- linkInformation.setInterfaceIp(IsisConstants.DEFAULTIP);
- linkInformation.setNeighborIp(IsisConstants.DEFAULTIP);
}
}
- linkInformation.setNeighborIp(IsisConstants.DEFAULTIP);
linkInformation.setLinkId(linkId);
linkInformation.setAlreadyCreated(false);
linkInformation.setLinkDestinationId(neighborId);
@@ -366,21 +393,22 @@
}
isisRouter.setSystemId(IsisUtil.removeTailingZeros(lsPdu.lspId()));
for (IsisTlv isisTlv : lsPdu.tlvs()) {
- if (isisTlv instanceof IpExtendedReachabilityTlv) {
- IpExtendedReachabilityTlv ipExtendedReachabilityTlv = (IpExtendedReachabilityTlv) isisTlv;
- List<TrafficEngineeringSubTlv> trafEnginSubTlv = ipExtendedReachabilityTlv.teTlvs();
- for (TrafficEngineeringSubTlv teTlv : trafEnginSubTlv) {
- if (teTlv instanceof InterfaceIpAddress) {
- InterfaceIpAddress localIpAddress = (InterfaceIpAddress) isisTlv;
- isisRouter.setInterfaceId(localIpAddress.localInterfaceIPAddress());
- }
- if (teTlv instanceof NeighborIpAddress) {
- NeighborIpAddress neighborIpAddress = (NeighborIpAddress) isisTlv;
- isisRouter.setNeighborRouterId(neighborIpAddress.neighborIPAddress());
+ if (isisTlv instanceof IsExtendedReachability) {
+ IsExtendedReachability isExtendedReachability = (IsExtendedReachability) isisTlv;
+ List<NeighborForExtendedIs> neighbours = isExtendedReachability.neighbours();
+ for (NeighborForExtendedIs teTlv : neighbours) {
+ List<TrafficEngineeringSubTlv> teSubTlvs = teTlv.teSubTlv();
+ for (TrafficEngineeringSubTlv teSubTlv : teSubTlvs) {
+ if (teSubTlv instanceof InterfaceIpAddress) {
+ InterfaceIpAddress localIpAddress = (InterfaceIpAddress) teSubTlv;
+ isisRouter.setInterfaceId(localIpAddress.localInterfaceIPAddress());
+ } else if (teSubTlv instanceof NeighborIpAddress) {
+ NeighborIpAddress neighborIpAddress = (NeighborIpAddress) teSubTlv;
+ isisRouter.setNeighborRouterId(neighborIpAddress.neighborIPAddress());
+ }
+
}
}
- } else {
- log.info("Invalid TLV");
}
}
return isisRouter;
@@ -398,6 +426,7 @@
isisRouter.setDis(false);
isisRouter.setInterfaceId(IsisConstants.DEFAULTIP);
isisRouter.setNeighborRouterId(IsisConstants.DEFAULTIP);
+
return isisRouter;
}
@@ -410,26 +439,50 @@
public IsisLinkTed createIsisLinkTedInfo(LsPdu lsPdu) {
IsisLinkTed isisLinkTed = new DefaultIsisLinkTed();
for (IsisTlv isisTlv : lsPdu.tlvs()) {
- if (isisTlv instanceof IpExtendedReachabilityTlv) {
- IpExtendedReachabilityTlv ipExtendedReachabilityTlv = (IpExtendedReachabilityTlv) isisTlv;
- List<TrafficEngineeringSubTlv> trafficEngSubTlv = ipExtendedReachabilityTlv.teTlvs();
- for (TrafficEngineeringSubTlv teTlv : trafficEngSubTlv) {
- if (teTlv instanceof AdministrativeGroup) {
- AdministrativeGroup ag = (AdministrativeGroup) isisTlv;
- isisLinkTed.setAdministrativeGroup(ag.administrativeGroup());
- }
- if (teTlv instanceof TrafficEngineeringMetric) {
- TrafficEngineeringMetric teM = (TrafficEngineeringMetric) isisTlv;
- isisLinkTed.setTeDefaultMetric(teM.getTrafficEngineeringMetricValue());
- }
- if (teTlv instanceof MaximumReservableBandwidth) {
- MaximumReservableBandwidth reservableBw = (MaximumReservableBandwidth) isisTlv;
- isisLinkTed.setMaximumReservableLinkBandwidth(
- Bandwidth.bps(reservableBw.getMaximumBandwidthValue()));
+ if (isisTlv instanceof IsExtendedReachability) {
+ IsExtendedReachability isExtendedReachability = (IsExtendedReachability) isisTlv;
+ List<NeighborForExtendedIs> neighbours = isExtendedReachability.neighbours();
+ for (NeighborForExtendedIs teTlv : neighbours) {
+ List<TrafficEngineeringSubTlv> teSubTlvs = teTlv.teSubTlv();
+ for (TrafficEngineeringSubTlv teSubTlv : teSubTlvs) {
+ if (teSubTlv instanceof AdministrativeGroup) {
+ AdministrativeGroup ag = (AdministrativeGroup) teSubTlv;
+ isisLinkTed.setAdministrativeGroup(ag.administrativeGroup());
+ }
+ if (teSubTlv instanceof InterfaceIpAddress) {
+ InterfaceIpAddress localIpAddress = (InterfaceIpAddress) teSubTlv;
+ isisLinkTed.setIpv4InterfaceAddress(localIpAddress.localInterfaceIPAddress());
+ }
+ if (teSubTlv instanceof NeighborIpAddress) {
+ NeighborIpAddress neighborIpAddress = (NeighborIpAddress) teSubTlv;
+ isisLinkTed.setIpv4NeighborAddress(neighborIpAddress.neighborIPAddress());
+ }
+ if (teSubTlv instanceof TrafficEngineeringMetric) {
+ TrafficEngineeringMetric teM = (TrafficEngineeringMetric) teSubTlv;
+ isisLinkTed.setTeDefaultMetric(teM.getTrafficEngineeringMetricValue());
+ }
+ if (teSubTlv instanceof MaximumBandwidth) {
+ MaximumBandwidth maxLinkBandwidth = (MaximumBandwidth) teSubTlv;
+ isisLinkTed.setMaximumLinkBandwidth(
+ Bandwidth.bps(maxLinkBandwidth.getMaximumBandwidthValue()));
+ }
+ if (teSubTlv instanceof MaximumReservableBandwidth) {
+ MaximumReservableBandwidth maxReservableBw = (MaximumReservableBandwidth) teSubTlv;
+ isisLinkTed.setMaximumReservableLinkBandwidth(
+ Bandwidth.bps(maxReservableBw.getMaximumBandwidthValue()));
+ }
+ if (teSubTlv instanceof UnreservedBandwidth) {
+ UnreservedBandwidth unReservedBandwidth = (UnreservedBandwidth) teSubTlv;
+ List<Bandwidth> bandwidthList = new ArrayList<>();
+ List<Float> unReservedBandwidthList = unReservedBandwidth.unReservedBandwidthValue();
+ for (Float unReservedBandwidthFloatValue : unReservedBandwidthList) {
+ Bandwidth bandwidth = Bandwidth.bps(unReservedBandwidthFloatValue);
+ bandwidthList.add(bandwidth);
+ }
+ isisLinkTed.setUnreservedBandwidth(bandwidthList);
+ }
}
}
- } else {
- log.debug("TLV type not supported");
}
}
return isisLinkTed;
diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/NeighborForExtendedIs.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/NeighborForExtendedIs.java
index 0bc57b4..f5cd03b 100644
--- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/NeighborForExtendedIs.java
+++ b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/NeighborForExtendedIs.java
@@ -46,6 +46,15 @@
}
/**
+ * Returns list of sub tlvs.
+ *
+ * @return teSubTlv list of sub tlvs
+ */
+ public List<TrafficEngineeringSubTlv> teSubTlv() {
+ return teSubTlv;
+ }
+
+ /**
* Sets neighbor ID.
*
* @param neighborId neighbor ID
diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/SubTlvFinder.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/SubTlvFinder.java
index b18f69c..bb3dfaf 100644
--- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/SubTlvFinder.java
+++ b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/SubTlvFinder.java
@@ -67,10 +67,15 @@
subTlv = unreservedBandwidth;
break;
case INTERFACEADDRESS:
- NeighborIpAddress ipInterfaceAddressTlv = new NeighborIpAddress(tlvHeader);
+ InterfaceIpAddress ipInterfaceAddressTlv = new InterfaceIpAddress(tlvHeader);
ipInterfaceAddressTlv.readFrom(channelBuffer);
subTlv = ipInterfaceAddressTlv;
break;
+ case NEIGHBORADDRESS:
+ NeighborIpAddress ipNeighborAddressTlv = new NeighborIpAddress(tlvHeader);
+ ipNeighborAddressTlv.readFrom(channelBuffer);
+ subTlv = ipNeighborAddressTlv;
+ break;
default:
//TODO
break;
diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/UnreservedBandwidth.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/UnreservedBandwidth.java
index 94db6bb..4b3e7b6 100644
--- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/UnreservedBandwidth.java
+++ b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/UnreservedBandwidth.java
@@ -54,7 +54,7 @@
*
* @return List of un reserved bandwidth
*/
- public List<Float> getUnReservedBandwidthValue() {
+ public List<Float> unReservedBandwidthValue() {
return this.unReservedBandwidth;
}
diff --git a/providers/isis/topology/src/main/java/org/onosproject/provider/isis/topology/impl/IsisTopologyProvider.java b/providers/isis/topology/src/main/java/org/onosproject/provider/isis/topology/impl/IsisTopologyProvider.java
index 8a58289..78a67c2 100644
--- a/providers/isis/topology/src/main/java/org/onosproject/provider/isis/topology/impl/IsisTopologyProvider.java
+++ b/providers/isis/topology/src/main/java/org/onosproject/provider/isis/topology/impl/IsisTopologyProvider.java
@@ -59,6 +59,7 @@
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
+import java.util.StringTokenizer;
import static org.slf4j.LoggerFactory.getLogger;
@@ -132,7 +133,7 @@
@Override
public boolean isReachable(DeviceId deviceId) {
log.debug("IsisDeviceProvider::isReachable...!!!!");
- return false;
+ return true;
}
@Override
@@ -149,6 +150,8 @@
private LinkDescription buildLinkDes(IsisLink isisLink) {
long srcAddress = 0;
long dstAddress = 0;
+ boolean localPseduo = false;
+ boolean remotePseduo = false;
String localSystemId = isisLink.localSystemId();
String remoteSystemId = isisLink.remoteSystemId();
//Changing of port numbers
@@ -156,9 +159,17 @@
dstAddress = isisLink.neighborIp().toInt();
DeviceId srcId = DeviceId.deviceId(IsisRouterId.uri(localSystemId));
DeviceId dstId = DeviceId.deviceId(IsisRouterId.uri(remoteSystemId));
- if (srcAddress == 0) {
+ if (checkIsDis(isisLink.localSystemId())) {
+ localPseduo = true;
+ } else if (checkIsDis(isisLink.remoteSystemId())) {
+ remotePseduo = true;
+ } else {
+ log.debug("IsisDeviceProvider::buildLinkDes : unknown type.!");
+ }
+
+ if (localPseduo && srcAddress == 0) {
srcAddress = PSEUDO_PORT;
- } else if (dstAddress == 0) {
+ } else if (remotePseduo && dstAddress == 0) {
dstAddress = PSEUDO_PORT;
}
@@ -173,6 +184,28 @@
}
/**
+ * Return the DIS value from the systemId.
+ *
+ * @param systemId system Id.
+ * @return return true if DIS else false
+ */
+ public static boolean checkIsDis(String systemId) {
+ StringTokenizer stringTokenizer = new StringTokenizer(systemId, "." + "-");
+ int count = 0;
+ while (stringTokenizer.hasMoreTokens()) {
+ String str = stringTokenizer.nextToken();
+ if (count == 3) {
+ int x = Integer.parseInt(str);
+ if (x > 0) {
+ return true;
+ }
+ }
+ count++;
+ }
+ return false;
+ }
+
+ /**
* Builds port description.
*
* @param deviceId device ID for the port
@@ -181,9 +214,7 @@
*/
private List<PortDescription> buildPortDescriptions(DeviceId deviceId,
PortNumber portNumber) {
-
List<PortDescription> portList;
-
if (portMap.containsKey(deviceId)) {
portList = portMap.get(deviceId);
} else {
@@ -193,8 +224,8 @@
PortDescription portDescriptions = new DefaultPortDescription(portNumber, true);
portList.add(portDescriptions);
}
-
portMap.put(deviceId, portList);
+
return portList;
}
@@ -215,6 +246,7 @@
//TE Info
IsisLinkTed isisLinkTed = isisLink.linkTed();
+ log.info("Ted Information: {}", isisLinkTed.toString());
administrativeGroup = isisLinkTed.administrativeGroup();
teMetric = isisLinkTed.teDefaultMetric();
maxReservableBandwidth = isisLinkTed.maximumReservableLinkBandwidth();
@@ -251,7 +283,7 @@
newBuilder.set("RouterId", systemId);
DeviceDescription description =
new DefaultDeviceDescription(IsisRouterId.uri(systemId), deviceType, UNKNOWN, UNKNOWN, UNKNOWN,
- UNKNOWN, cId, newBuilder.build());
+ UNKNOWN, cId, newBuilder.build());
deviceProviderService.deviceConnected(deviceId, description);
}
@@ -276,9 +308,9 @@
LinkDescription linkDes = buildLinkDes(isisLink);
//Updating ports of the link
deviceProviderService.updatePorts(linkDes.src().deviceId(), buildPortDescriptions(linkDes.src().deviceId(),
- linkDes.src().port()));
+ linkDes.src().port()));
deviceProviderService.updatePorts(linkDes.dst().deviceId(), buildPortDescriptions(linkDes.dst().deviceId(),
- linkDes.dst().port()));
+ linkDes.dst().port()));
registerBandwidth(linkDes, isisLink);
linkProviderService.linkDetected(linkDes);
}
@@ -319,4 +351,4 @@
}
}
}
-}
\ No newline at end of file
+}