Skip to content

Commit

Permalink
Merge pull request iovisor#299 from iovisor/bblanco_dev
Browse files Browse the repository at this point in the history
p4: fixed bugs in control-flow generation
  • Loading branch information
drzaeus77 committed Dec 1, 2015
2 parents 27c3fd7 + 467baf4 commit e665cbe
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 5 deletions.
9 changes: 5 additions & 4 deletions src/cc/frontends/p4/compiler/ebpfProgram.py
Original file line number Diff line number Diff line change
Expand Up @@ -483,12 +483,10 @@ def generatePipelineInternal(self, serializer, nodestoadd, nextEntryPoint):
done = set()
while len(nodestoadd) > 0:
todo = nodestoadd.pop()
if todo is None:
todo = nextEntryPoint
if todo is None:
continue
if todo in done:
continue
if todo is None:
continue

print("Generating ", todo.name)

Expand All @@ -503,3 +501,6 @@ def generatePipeline(self, serializer):
for e in self.entryPoints:
todo.add(e)
self.generatePipelineInternal(serializer, todo, self.egressEntry)
todo = set()
todo.add(self.egressEntry)
self.generatePipelineInternal(serializer, todo, None)
6 changes: 6 additions & 0 deletions src/cc/frontends/p4/compiler/ebpfTable.py
Original file line number Diff line number Diff line change
Expand Up @@ -365,6 +365,12 @@ def serializeCode(self, serializer, program, nextNode):
serializer.newline()

serializer.blockEnd(True)
if not "hit" in nextNode:
# Catch-all
serializer.emitIndent()
serializer.appendFormat("goto end;")
serializer.newline()

serializer.blockEnd(True)

def runAction(self, serializer, tableName, valueName, program, nextNode):
Expand Down
1 change: 0 additions & 1 deletion src/cc/frontends/p4/compiler/topoSorting.py
Original file line number Diff line number Diff line change
Expand Up @@ -86,4 +86,3 @@ def visit(node, topo_sorting, sequence=None):
return None

return topo_sorting

0 comments on commit e665cbe

Please sign in to comment.