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 {
 
