Better error handling

Change-Id: Iac5934a89b177f4e0207a6ecc2e2f0731aca115e
diff --git a/apps/dhcprelay/src/main/java/org/onosproject/dhcprelay/Dhcp4HandlerImpl.java b/apps/dhcprelay/src/main/java/org/onosproject/dhcprelay/Dhcp4HandlerImpl.java
index 90aafdd..c4a6ad7 100644
--- a/apps/dhcprelay/src/main/java/org/onosproject/dhcprelay/Dhcp4HandlerImpl.java
+++ b/apps/dhcprelay/src/main/java/org/onosproject/dhcprelay/Dhcp4HandlerImpl.java
@@ -19,6 +19,7 @@
 
 import com.google.common.collect.HashMultimap;
 import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.Lists;
 import com.google.common.collect.Multimap;
 import com.google.common.collect.Multimaps;
 import com.google.common.collect.Sets;
@@ -682,7 +683,7 @@
             log.warn("Missing DHCP relay agent interface Ipv4 addr config for "
                             + "packet from client on port: {}. Aborting packet processing",
                     clientInterfaces.iterator().next().connectPoint());
-            return null;
+            return Lists.newArrayList();
         }
         log.debug("Multi DHCP V4 processDhcpPacketFromClient on port {}",
                    clientInterfaces.iterator().next().connectPoint());
@@ -707,7 +708,7 @@
         if (clientInterfaceIp == null) {
             log.warn("Can't find interface IP for client interface for port {}",
                     context.inPacket().receivedFrom());
-            return null;
+            return Lists.newArrayList();
         }
 
         boolean isDirectlyConnected = directlyConnected(dhcpPacket);
@@ -752,7 +753,6 @@
             log.debug("Interfacing server {} Mac : {} ", ipFacingServer, macFacingServer);
             if (ipFacingServer == null || macFacingServer == null) {
                 log.warn("No IP address for server Interface {}", serverInterface);
-                //return null;
                 continue;
             }
 
diff --git a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/ArpHandler.java b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/ArpHandler.java
index b3a0aca..af62525 100644
--- a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/ArpHandler.java
+++ b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/ArpHandler.java
@@ -102,6 +102,11 @@
         // ARP request for router. Send ARP reply.
         if (isArpForRouter(pkt)) {
             MacAddress targetMac = config.getRouterMacForAGatewayIp(pkt.target().getIp4Address());
+            if (targetMac == null) {
+                log.warn("Router MAC of {} is not configured. Cannot handle ARP request from {}",
+                        pkt.inPort().deviceId(), pkt.sender());
+                return;
+            }
             sendResponse(pkt, targetMac, hostService);
         } else {
             // NOTE: Ignore ARP packets except those target for the router
diff --git a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/IcmpHandler.java b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/IcmpHandler.java
index b305c5e..3ec8b23 100644
--- a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/IcmpHandler.java
+++ b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/IcmpHandler.java
@@ -328,6 +328,11 @@
         if (isNdpForGateway(pkt)) {
             log.trace("Sending NDP reply on behalf of gateway IP for pkt: {}", pkt.target());
             MacAddress routerMac = config.getRouterMacForAGatewayIp(pkt.target());
+            if (routerMac == null) {
+                log.warn("Router MAC of {} is not configured. Cannot handle NDP request from {}",
+                        pkt.inPort().deviceId(), pkt.sender());
+                return;
+            }
             sendResponse(pkt, routerMac, hostService);
         } else {