diff --git a/apps/sdnip/src/main/java/org/onlab/onos/sdnip/Router.java b/apps/sdnip/src/main/java/org/onlab/onos/sdnip/Router.java
index dc29285..d610361 100644
--- a/apps/sdnip/src/main/java/org/onlab/onos/sdnip/Router.java
+++ b/apps/sdnip/src/main/java/org/onlab/onos/sdnip/Router.java
@@ -133,6 +133,10 @@
      */
     public void start() {
 
+        // TODO hack to enable SDN-IP now for testing
+        isElectedLeader = true;
+        isActivatedLeader = true;
+
         bgpUpdatesExecutor.execute(new Runnable() {
             @Override
             public void run() {
diff --git a/providers/openflow/flow/src/main/java/org/onlab/onos/provider/of/flow/impl/FlowEntryBuilder.java b/providers/openflow/flow/src/main/java/org/onlab/onos/provider/of/flow/impl/FlowEntryBuilder.java
index 9f6c658..9924a71 100644
--- a/providers/openflow/flow/src/main/java/org/onlab/onos/provider/of/flow/impl/FlowEntryBuilder.java
+++ b/providers/openflow/flow/src/main/java/org/onlab/onos/provider/of/flow/impl/FlowEntryBuilder.java
@@ -35,6 +35,7 @@
 import org.projectfloodlight.openflow.protocol.match.Match;
 import org.projectfloodlight.openflow.protocol.match.MatchField;
 import org.projectfloodlight.openflow.types.IPv4Address;
+import org.projectfloodlight.openflow.types.Masked;
 import org.slf4j.Logger;
 
 import com.google.common.collect.Lists;
@@ -218,23 +219,35 @@
                 builder.matchEthType((short) ethType);
                 break;
             case IPV4_DST:
-                IPv4Address di = match.get(MatchField.IPV4_DST);
                 IpPrefix dip;
-                if (di.isCidrMask()) {
-                    dip = IpPrefix.valueOf(di.getInt(), di.asCidrMaskLength());
+                if (match.isPartiallyMasked(MatchField.IPV4_DST)) {
+                    Masked<IPv4Address> maskedIp = match.getMasked(MatchField.IPV4_DST);
+
+                    dip = IpPrefix.valueOf(
+                            maskedIp.getValue().getInt(),
+                            maskedIp.getMask().asCidrMaskLength());
                 } else {
-                    dip = IpPrefix.valueOf(di.getInt(), IpPrefix.MAX_INET_MASK);
+                    dip = IpPrefix.valueOf(
+                            match.get(MatchField.IPV4_DST).getInt(),
+                            IpPrefix.MAX_INET_MASK);
                 }
+
                 builder.matchIPDst(dip);
                 break;
             case IPV4_SRC:
-                IPv4Address si = match.get(MatchField.IPV4_SRC);
                 IpPrefix sip;
-                if (si.isCidrMask()) {
-                    sip = IpPrefix.valueOf(si.getInt(), si.asCidrMaskLength());
+                if (match.isPartiallyMasked(MatchField.IPV4_SRC)) {
+                    Masked<IPv4Address> maskedIp = match.getMasked(MatchField.IPV4_SRC);
+
+                    sip = IpPrefix.valueOf(
+                            maskedIp.getValue().getInt(),
+                            maskedIp.getMask().asCidrMaskLength());
                 } else {
-                    sip = IpPrefix.valueOf(si.getInt(), IpPrefix.MAX_INET_MASK);
+                    sip = IpPrefix.valueOf(
+                            match.get(MatchField.IPV4_SRC).getInt(),
+                            IpPrefix.MAX_INET_MASK);
                 }
+
                 builder.matchIPSrc(sip);
                 break;
             case IP_PROTO:
diff --git a/tools/dev/bash_profile b/tools/dev/bash_profile
index f9754af..5ee2392 100644
--- a/tools/dev/bash_profile
+++ b/tools/dev/bash_profile
@@ -45,6 +45,7 @@
 # Short-hand for tailing the ONOS (karaf) log 
 alias tl='$ONOS_ROOT/tools/dev/bin/onos-local-log'
 alias tlo='tl | grep --colour=always org.onlab'
+alias ll='less $KARAF_LOG'
 
 # Pretty-print JSON output
 alias pp='python -m json.tool'
