Set mask/match length when using VPP's classfier 22/14122/1
authorMarek Gradzki <[email protected]>
Fri, 10 Aug 2018 04:56:36 +0000 (06:56 +0200)
committerMarek Gradzki <[email protected]>
Fri, 10 Aug 2018 05:00:25 +0000 (07:00 +0200)
Adapts hc2vpp to recent VPP api change:
https://gerrit.fd.io/r/#/c/13007/

Setting length field is currently mandatory
for variable length arrays (VPP-199).

Change-Id: I7ce66076d8a29d1ff5dfe5592e651d133e4072aa
Signed-off-by: Marek Gradzki <[email protected]>
it/jvpp-benchmark/src/main/java/io/fd/hc2vpp/it/jvpp/benchmark/classify/ClassifyTableProviderImpl.java
vpp-classifier/impl/src/main/java/io/fd/hc2vpp/vpp/classifier/write/ClassifySessionWriter.java
vpp-classifier/impl/src/main/java/io/fd/hc2vpp/vpp/classifier/write/ClassifyTableWriter.java
vpp-classifier/impl/src/test/java/io/fd/hc2vpp/vpp/classifier/write/ClassifySessionWriterTest.java
vpp-classifier/impl/src/test/java/io/fd/hc2vpp/vpp/classifier/write/ClassifyTableWriterTest.java

index 80ebdcc..8a737d2 100644 (file)
@@ -17,7 +17,6 @@
 package io.fd.hc2vpp.it.jvpp.benchmark.classify;
 
 import io.fd.vpp.jvpp.core.dto.ClassifyAddDelTable;
-import java.io.Serializable;
 import java.util.Random;
 import javax.annotation.concurrent.NotThreadSafe;
 
@@ -66,6 +65,7 @@ class ClassifyTableProviderImpl implements ClassifyTableProvider {
         addDelTable.skipNVectors = 0;
         addDelTable.matchNVectors = 1;
         addDelTable.mask = new byte[16];
+        addDelTable.maskLen = 16;
         rnd.nextBytes(addDelTable.mask);
         return addDelTable;
     }
index 0e69b33..11a48ef 100644 (file)
@@ -166,6 +166,7 @@ public class ClassifySessionWriter extends VppNodeWriter
         request.advance = classifySession.getAdvance();
 
         request.match = DatatypeConverter.parseHexBinary(classifySession.getMatch().getValue().replace(":", ""));
+        request.matchLen = request.match.length;
         return request;
     }
 
index 34e689e..8e72df4 100644 (file)
@@ -145,6 +145,7 @@ public class ClassifyTableWriter extends VppNodeWriter
             request.nextTableIndex = ~0; // value not specified
         }
         request.mask = DatatypeConverter.parseHexBinary(table.getMask().getValue().replace(":", ""));
+        request.maskLen = request.mask.length;
         checkArgument(request.mask.length % 16 == 0, "Number of mask bytes must be multiple of 16.");
         request.matchNVectors = request.mask.length / 16;
 
index 0716cde..b59acdb 100644 (file)
@@ -87,6 +87,7 @@ public class ClassifySessionWriterTest extends WriterCustomizerTest {
         request.match =
                 new byte[]{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, (byte) 0x01, (byte) 0x02, (byte) 0x03, (byte) 0x04,
                         (byte) 0x05, (byte) 0x06, 0x00, 0x00, 0x00, 0x00};
+        request.matchLen = request.match.length;
         return request;
     }
 
index 389337c..bd627d5 100644 (file)
@@ -88,6 +88,7 @@ public class ClassifyTableWriterTest extends WriterCustomizerTest {
         request.mask =
                 new byte[]{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, (byte) 0x01, (byte) 0x02, (byte) 0x03, (byte) 0x04,
                         (byte) 0x05, (byte) 0x06, 0x00, 0x00, 0x00, 0x00};
+        request.maskLen = request.mask.length;
         return request;
     }