Various fixes to get a P4Runtime demo that works
Change-Id: Icab512fceeb6ec0faf1b402c1e325e055cdb2caf
diff --git a/drivers/bmv2/BUCK b/drivers/bmv2/BUCK
index b7de8b4..15f6dcf 100644
--- a/drivers/bmv2/BUCK
+++ b/drivers/bmv2/BUCK
@@ -28,6 +28,7 @@
included_bundles = BUNDLES,
required_apps = [
'org.onosproject.generaldeviceprovider',
- 'org.onosproject.protocols.p4runtime'
+ 'org.onosproject.protocols.p4runtime',
+ 'org.onosproject.p4runtime',
],
)
diff --git a/drivers/bmv2/src/main/java/org/onosproject/drivers/bmv2/Bmv2DefaultInterpreter.java b/drivers/bmv2/src/main/java/org/onosproject/drivers/bmv2/Bmv2DefaultInterpreter.java
index 31c351d3..31d4627 100644
--- a/drivers/bmv2/src/main/java/org/onosproject/drivers/bmv2/Bmv2DefaultInterpreter.java
+++ b/drivers/bmv2/src/main/java/org/onosproject/drivers/bmv2/Bmv2DefaultInterpreter.java
@@ -60,17 +60,17 @@
*/
public class Bmv2DefaultInterpreter extends AbstractHandlerBehaviour implements PiPipelineInterpreter {
private static final String TABLE0 = "table0";
- private static final String SEND_TO_CPU = "send_to_cpu_0";
+ private static final String SEND_TO_CPU = "send_to_cpu";
private static final String PORT = "port";
- private static final String DROP = "_drop_0";
- private static final String SET_EGRESS_PORT = "set_egress_port_0";
+ private static final String DROP = "drop";
+ private static final String SET_EGRESS_PORT = "set_egress_port";
private static final String EGRESS_PORT = "egress_port";
private static final int PORT_NUMBER_BIT_WIDTH = 9;
private static final PiHeaderFieldId IN_PORT_ID = PiHeaderFieldId.of("standard_metadata", "ingress_port");
- private static final PiHeaderFieldId ETH_DST_ID = PiHeaderFieldId.of("ethernet_t", "dstAddr");
- private static final PiHeaderFieldId ETH_SRC_ID = PiHeaderFieldId.of("ethernet_t", "srcAddr");
- private static final PiHeaderFieldId ETH_TYPE_ID = PiHeaderFieldId.of("ethernet_t", "etherType");
+ private static final PiHeaderFieldId ETH_DST_ID = PiHeaderFieldId.of("ethernet", "dstAddr");
+ private static final PiHeaderFieldId ETH_SRC_ID = PiHeaderFieldId.of("ethernet", "srcAddr");
+ private static final PiHeaderFieldId ETH_TYPE_ID = PiHeaderFieldId.of("ethernet", "etherType");
private static final ImmutableBiMap<Criterion.Type, PiHeaderFieldId> CRITERION_MAP =
new ImmutableBiMap.Builder<Criterion.Type, PiHeaderFieldId>()
diff --git a/drivers/bmv2/src/main/java/org/onosproject/drivers/bmv2/Bmv2FlowRuleProgrammable.java b/drivers/bmv2/src/main/java/org/onosproject/drivers/bmv2/Bmv2FlowRuleProgrammable.java
index 50b8002..6c445f3 100644
--- a/drivers/bmv2/src/main/java/org/onosproject/drivers/bmv2/Bmv2FlowRuleProgrammable.java
+++ b/drivers/bmv2/src/main/java/org/onosproject/drivers/bmv2/Bmv2FlowRuleProgrammable.java
@@ -67,7 +67,7 @@
private static final ConcurrentMap<Bmv2TableEntryReference, Lock> ENTRY_LOCKS = Maps.newConcurrentMap();
// TODO: replace with distributed store.
- // Can reuse old BMv2TableEntryService form ONOS 1.6
+ // Can reuse old BMv2TableEntryService from ONOS 1.6
private static final ConcurrentMap<Bmv2TableEntryReference, Bmv2FlowRuleWrapper> ENTRY_STORE =
Maps.newConcurrentMap();
diff --git a/drivers/bmv2/src/main/java/org/onosproject/drivers/bmv2/Bmv2PacketProgrammable.java b/drivers/bmv2/src/main/java/org/onosproject/drivers/bmv2/Bmv2PacketProgrammable.java
index c48eef3..3e0c887 100644
--- a/drivers/bmv2/src/main/java/org/onosproject/drivers/bmv2/Bmv2PacketProgrammable.java
+++ b/drivers/bmv2/src/main/java/org/onosproject/drivers/bmv2/Bmv2PacketProgrammable.java
@@ -65,7 +65,7 @@
Device device = deviceService.getDevice(deviceId);
final PiPipelineInterpreter interpreter = device.is(PiPipelineInterpreter.class)
? device.as(PiPipelineInterpreter.class) : null;
- if (device.is(PiPipelineInterpreter.class)) {
+ if (!device.is(PiPipelineInterpreter.class)) {
log.warn("Device {} unable to instantiate interpreter of pipeconf {}", deviceId, pipeconf.id());
return;
}
@@ -73,6 +73,7 @@
try {
Collection<PiPacketOperation> operations = interpreter.mapOutboundPacket(packet);
operations.forEach(piPacketOperation -> {
+ log.debug("Doing PiPacketOperation {}", piPacketOperation);
client.packetOut(piPacketOperation, pipeconf);
});
} catch (PiPipelineInterpreter.PiInterpreterException e) {