Fix npe when one of the address is not configured
Change-Id: If42b4d35bc20060db0bc0fe2699e3b375c2cf9f8
diff --git a/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/SegmentRoutingNeighbourHandler.java b/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/SegmentRoutingNeighbourHandler.java
index 1d9a2fc..0fa077b 100644
--- a/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/SegmentRoutingNeighbourHandler.java
+++ b/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/SegmentRoutingNeighbourHandler.java
@@ -73,28 +73,37 @@
* @param ip where to copy the ip
* @param deviceId the device id
* @param targetAddress the target address
+ * @return true if it was possible to get the necessary info.
+ * False for errors
*/
- protected void getSenderInfo(byte[] mac,
+ protected boolean getSenderInfo(byte[] mac,
byte[] ip,
DeviceId deviceId,
IpAddress targetAddress) {
byte[] senderMacAddress;
byte[] senderIpAddress;
+ IpAddress sender;
try {
senderMacAddress = config.getDeviceMac(deviceId).toBytes();
if (targetAddress.isIp4()) {
- senderIpAddress = config.getRouterIpAddressForASubnetHost(targetAddress.getIp4Address())
- .toOctets();
+ sender = config.getRouterIpAddressForASubnetHost(targetAddress.getIp4Address());
+
} else {
- senderIpAddress = config.getRouterIpAddressForASubnetHost(targetAddress.getIp6Address())
- .toOctets();
+ sender = config.getRouterIpAddressForASubnetHost(targetAddress.getIp6Address());
}
+ // If sender is null we abort.
+ if (sender == null) {
+ log.warn("Sender ip is null. Aborting getSenderInfo");
+ return false;
+ }
+ senderIpAddress = sender.toOctets();
} catch (DeviceConfigNotFoundException e) {
- log.warn(e.getMessage() + " Aborting sendArpRequest.");
- return;
+ log.warn(e.getMessage() + " Aborting getSenderInfo");
+ return false;
}
System.arraycopy(senderMacAddress, 0, mac, 0, senderMacAddress.length);
System.arraycopy(senderIpAddress, 0, ip, 0, senderIpAddress.length);
+ return true;
}
/**