diff --git a/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/ArpHandler.java b/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/ArpHandler.java
index 8ef889f..30c6ada 100644
--- a/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/ArpHandler.java
+++ b/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/ArpHandler.java
@@ -192,7 +192,10 @@
         /*
          * Retrieves device info.
          */
-        getSenderInfo(senderMacAddress, senderIpAddress, deviceId, targetAddress);
+        if (!getSenderInfo(senderMacAddress, senderIpAddress, deviceId, targetAddress)) {
+            log.warn("Aborting sendArpRequest, we cannot get all the information needed");
+            return;
+        }
         /*
          * Creates the request.
          */
diff --git a/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/IcmpHandler.java b/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/IcmpHandler.java
index 1594364..9675620 100644
--- a/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/IcmpHandler.java
+++ b/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/IcmpHandler.java
@@ -431,7 +431,10 @@
         /*
          * Retrieves device info.
          */
-        getSenderInfo(senderMacAddress, senderIpAddress, deviceId, targetAddress);
+        if (!getSenderInfo(senderMacAddress, senderIpAddress, deviceId, targetAddress)) {
+            log.warn("Aborting sendNdpRequest, we cannot get all the information needed");
+            return;
+        }
         /*
          * We have to compute the dst mac address and dst
          * ip address.
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;
     }
 
     /**
