ONOS-4505: Bug Fixes
Change-Id: Ia030aa3aff9e2ad34a5e27fbe4ba088dda65bfa7
diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/pdu/Psnp.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/pdu/Psnp.java
old mode 100755
new mode 100644
diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/util/IsisConstants.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/util/IsisConstants.java
index cf5871a..9156eb4 100644
--- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/util/IsisConstants.java
+++ b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/util/IsisConstants.java
@@ -33,6 +33,7 @@
public static final int IRPDISCRIMINATOR = 131;
public static final int ISISVERSION = 1;
public static final int RESERVED = 0;
+ public static final int PRIORITY = 0;
public static final int MAXAREAADDRESS = 0;
public static final int SYSTEMIDLENGTH = 0;
public static final int PROTOCOLSUPPORTED = 204;
@@ -55,24 +56,15 @@
public static final String DEFAULTLANID = "0000.0000.0000.00";
public static final String PROCESSESID = "processId";
public static final String INTERFACE = "interface";
- public static final String INTERFACEIP = "interfaceIp";
- public static final String NETWORKMASK = "networkMask";
public static final String INTERFACEINDEX = "interfaceIndex";
public static final String INTERMEDIATESYSTEMNAME = "intermediateSystemName";
public static final String SYSTEMID = "systemId";
- public static final String LANID = "lanId";
- public static final String IDLENGTH = "idLength";
- public static final String MAXAREAADDRESSES = "maxAreaAddresses";
public static final String RESERVEDPACKETCIRCUITTYPE = "reservedPacketCircuitType";
public static final String CIRCUITID = "circuitId";
public static final String NETWORKTYPE = "networkType";
public static final String AREAADDRESS = "areaAddress";
- public static final String AREALENGTH = "areaLength";
- public static final String LSPID = "lspId";
public static final String HOLDINGTIME = "holdingTime";
public static final String HELLOINTERVAL = "helloInterval";
- public static final String PRIORITY = "priority";
- public static final String MACADDRESS = "macAddress";
/**
* Non parameterized constructor.
diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/util/IsisUtil.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/util/IsisUtil.java
old mode 100755
new mode 100644
index 6b665ac..cfd941e
--- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/util/IsisUtil.java
+++ b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/util/IsisUtil.java
@@ -22,6 +22,7 @@
import org.onosproject.isis.controller.IsisInterfaceState;
import org.onosproject.isis.controller.IsisNeighbor;
import org.onosproject.isis.controller.IsisPduType;
+import org.onosproject.isis.controller.IsisRouterType;
import org.onosproject.isis.io.isispacket.IsisHeader;
import org.onosproject.isis.io.isispacket.pdu.L1L2HelloPdu;
import org.onosproject.isis.io.isispacket.pdu.P2PHelloPdu;
@@ -394,7 +395,6 @@
isisHeader.setIdLength((byte) IsisConstants.SYSTEMIDLENGTH);
isisHeader.setIsisPduType(IsisPduType.P2PHELLOPDU.value());
isisHeader.setVersion2((byte) IsisConstants.ISISVERSION);
- //isisHeader.setReserved((byte) IsisConstants.RESERVED);
isisHeader.setReserved((byte) IsisConstants.PDULENGTHPOSITION);
isisHeader.setMaximumAreaAddresses((byte) IsisConstants.MAXAREAADDRESS);
P2PHelloPdu p2pHelloPdu = new P2PHelloPdu(isisHeader);
@@ -510,14 +510,32 @@
l1L2HelloPdu.addTlv(areaAddressTlv);
Set<MacAddress> neighbors = isisInterface.neighbors();
if (neighbors.size() > 0) {
+ List<MacAddress> neighborMacs = new ArrayList<>();
+ for (MacAddress neighbor : neighbors) {
+ IsisNeighbor isisNeighbor = isisInterface.lookup(neighbor);
+ if (isisPduType == IsisPduType.L1HELLOPDU) {
+ if (isisNeighbor.routerType() == IsisRouterType.L1 ||
+ isisNeighbor.routerType() == IsisRouterType.L1L2) {
+ neighborMacs.add(neighbor);
+ }
+ } else if (isisPduType == IsisPduType.L2HELLOPDU) {
+ if (isisNeighbor.routerType() == IsisRouterType.L2 ||
+ isisNeighbor.routerType() == IsisRouterType.L1L2) {
+ neighborMacs.add(neighbor);
+ }
+ }
+ }
+
tlvHeader.setTlvType(TlvType.ISNEIGHBORS.value());
tlvHeader.setTlvLength(0);
+
IsisNeighborTlv isisNeighborTlv = new IsisNeighborTlv(tlvHeader);
- for (MacAddress neighbor : neighbors) {
+ for (MacAddress neighbor : neighborMacs) {
isisNeighborTlv.addNeighbor(neighbor);
}
l1L2HelloPdu.addTlv(isisNeighborTlv);
}
+
tlvHeader.setTlvType(TlvType.PROTOCOLSUPPORTED.value());
tlvHeader.setTlvLength(0);
ProtocolSupportedTlv protocolSupportedTlv = new ProtocolSupportedTlv(tlvHeader);
@@ -708,4 +726,4 @@
}
return Bytes.toArray(byteList);
}
-}
+}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/util/LspGenerator.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/util/LspGenerator.java
index c6ae962..b72c2ab 100644
--- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/util/LspGenerator.java
+++ b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/util/LspGenerator.java
@@ -140,8 +140,15 @@
metricOfIntRea.setExpenseIsInternal(true);
Ip4Address ip4Address = isisInterface.interfaceIpAddress();
byte[] ipAddress = ip4Address.toOctets();
- ipAddress[ipAddress.length - 1] = 0;
- metricOfIntRea.setIpAddress(Ip4Address.valueOf(ipAddress));
+ // ipAddress[ipAddress.length - 1] = 0;
+ byte[] networkmass = isisInterface.networkMask();
+ // metric calculation part
+ byte[] result = new byte[ipAddress.length];
+ result[0] = (byte) (ipAddress[0] & networkmass[0]);
+ result[1] = (byte) (ipAddress[1] & networkmass[1]);
+ result[2] = (byte) (ipAddress[2] & networkmass[2]);
+ result[3] = (byte) (ipAddress[3] & networkmass[3]);
+ metricOfIntRea.setIpAddress(Ip4Address.valueOf(result));
metricOfIntRea.setSubnetAddres(Ip4Address.valueOf(isisInterface.networkMask()));
ipInterReacTlv.addInternalReachabilityMetric(metricOfIntRea);
lsp.addTlv(ipInterReacTlv);