Fixing NPE in sfcofl2 packetIn Handler 98/22798/2
authorBrady Johnson <[email protected]>
Wed, 17 Jun 2015 13:44:47 +0000 (15:44 +0200)
committerBrady Johnson <[email protected]>
Wed, 17 Jun 2015 14:02:55 +0000 (14:02 +0000)
- Adding null checks in case the packet flow cookie is not available.
- https://bugs.opendaylight.org/show_bug.cgi?id=3777

Change-Id: Ie69aa5651ce5e9f5076a3f30e9d05661e166d1ef
Signed-off-by: Brady Johnson <[email protected]>
sfcofl2/src/main/java/org/opendaylight/sfc/l2renderer/openflow/SfcIpv4PacketInHandler.java
sfcofl2/src/main/java/org/opendaylight/sfc/l2renderer/openflow/SfcL2FlowProgrammerOFimpl.java

index f0932593f207879c830a7efe5cc30000643ca4a1..31ebd54d5a299d505ff34b475e6ee57fbb57f53b 100644 (file)
@@ -64,7 +64,7 @@ public class SfcIpv4PacketInHandler implements PacketProcessingListener, AutoClo
 
         // Make sure the PacketIn is due to our Classification table pktInAction
         if(!this.flowProgrammer.compareClassificationTableCookie(packetIn.getFlowCookie())) {
-            LOG.info("SfcIpv4PacketInHandler discarding packet by Flow Cookie");
+            LOG.debug("SfcIpv4PacketInHandler discarding packet by Flow Cookie");
             return;
         }
 
@@ -74,7 +74,7 @@ public class SfcIpv4PacketInHandler implements PacketProcessingListener, AutoClo
 
         // Get the EtherType and check that its an IP packet
         if(getEtherType(rawPacket) != ETHERTYPE_IPV4) {
-            LOG.info("SfcIpv4PacketInHandler discarding NON-IPv4");
+            LOG.debug("SfcIpv4PacketInHandler discarding NON-IPv4");
             return;
         }
 
@@ -92,6 +92,15 @@ public class SfcIpv4PacketInHandler implements PacketProcessingListener, AutoClo
         }
 
         // Get the metadata
+        if(packetIn.getMatch() == null) {
+            LOG.error("SfcIpv4PacketInHandler Cant get packet flow match");
+            return;
+        }
+        if(packetIn.getMatch().getMetadata() == null) {
+            LOG.error("SfcIpv4PacketInHandler Cant get packet flow match metadata");
+            return;
+        }
+
         Metadata pktMatchMetadata = packetIn.getMatch().getMetadata();
         BigInteger metadata = pktMatchMetadata.getMetadata();
 
index 6d288ace4af5a9f7868c668337edfa389b6d8fcc..d36bfcd68bfaa7f873ee4fc41e8623834c29dd7b 100644 (file)
@@ -140,6 +140,14 @@ public class SfcL2FlowProgrammerOFimpl implements SfcL2FlowProgrammerInterface {
     }
 
     public boolean compareClassificationTableCookie(FlowCookie cookie) {
+        if(cookie == null) {
+            return false;
+        }
+
+        if(cookie.getValue() == null) {
+            return false;
+        }
+
         return cookie.getValue().equals(TRANSPORT_EGRESS_COOKIE);
     }