From 597b0e36942e9c926a1c3ea6fd0da2e2c6acdbc1 Mon Sep 17 00:00:00 2001 From: Brenden Blanco Date: Tue, 2 Feb 2016 16:07:56 -0800 Subject: [PATCH] Reorder P4 struct key initializers and blocks The basic_routing.p4 program was failing verification due to missed map key initializers in some paths. Put the goto label at the head of the block and add a " = {}" for each key declaration inside the block. Signed-off-by: Brenden Blanco --- src/cc/frontends/p4/compiler/ebpfTable.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/cc/frontends/p4/compiler/ebpfTable.py b/src/cc/frontends/p4/compiler/ebpfTable.py index 8de97c6..70ab7a6 100644 --- a/src/cc/frontends/p4/compiler/ebpfTable.py +++ b/src/cc/frontends/p4/compiler/ebpfTable.py @@ -275,6 +275,11 @@ class EbpfTable(object): keyname = "key" valueName = "value" + serializer.newline() + serializer.emitIndent() + serializer.appendFormat("{0}:", program.getLabel(self)) + serializer.newline() + serializer.emitIndent() serializer.blockStart() @@ -283,7 +288,7 @@ class EbpfTable(object): serializer.newline() serializer.emitIndent() - serializer.appendFormat("struct {0} {1};", self.keyTypeName, keyname) + serializer.appendFormat("struct {0} {1} = {{}};", self.keyTypeName, keyname) serializer.newline() serializer.emitIndent() @@ -291,11 +296,6 @@ class EbpfTable(object): "struct {0} *{1};", self.valueTypeName, valueName) serializer.newline() - serializer.newline() - serializer.emitIndent() - serializer.appendFormat("{0}:", program.getLabel(self)) - serializer.newline() - self.key.serializeConstruction(serializer, keyname, program) serializer.emitIndent() -- 2.7.4