Do not check src/dst twice 81/94381/1
authorRobert Varga <robert.varga@pantheon.tech>
Sun, 3 Jan 2021 22:07:50 +0000 (23:07 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Sun, 3 Jan 2021 22:07:50 +0000 (23:07 +0100)
We have two if-else branches which cover two distinct states. Move
the logic into its utility method, which makes sit obvious what is
going on.

Change-Id: I699eeffb637cc78583923d871cc94e55b09bbd35
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
extension/openflowjava-extension-nicira/src/main/java/org/opendaylight/openflowjava/nx/codec/action/LearnCodecUtil.java

index e196144093748a4c18d0982bb97ab2c238c2f0c1..9f7af1af31bb8dcd913e1c7c14bd95869996e01d 100644 (file)
@@ -236,11 +236,8 @@ public final class LearnCodecUtil {
         final short dst = (short) ((header & DST_MASK) >> DST_POS);
         final Uint16 numBits = Uint16.fromShortBits((short) (header & NUM_BITS_MASK));
 
-        if (src == 0 && dst == 0 && numBits.shortValue() != 0) {
+        if (src == 0 && dst == 0) {
             return readFlowModAddMatchFromField(message, numBits);
-        } else if (src == 0 && dst == 0) {
-            message.skipBytes(EMPTY_FLOW_MOD_LENGTH);
-            length -= EMPTY_FLOW_MOD_LENGTH;
         } else if (src == 1 && dst == 0) {
             return readFlowModAddMatchFromValue(message, numBits);
         } else if (src == 0 && dst == 1) {
@@ -249,11 +246,18 @@ public final class LearnCodecUtil {
             return readFlowModCopyFromValue(message, numBits);
         } else if (src == 0 && dst == 2) {
             return readFlowToPort(message, numBits);
+        } else {
+            return null;
         }
-        return null;
     }
 
     private FlowMods readFlowModAddMatchFromField(final ByteBuf message, final Uint16 numBits) {
+        if (numBits.shortValue() == 0) {
+            message.skipBytes(EMPTY_FLOW_MOD_LENGTH);
+            length -= EMPTY_FLOW_MOD_LENGTH;
+            return null;
+        }
+
         final var builder = new FlowModAddMatchFromFieldBuilder()
             .setSrcField(readUint32(message))
             .setSrcOfs(readUint16(message))