-
Notifications
You must be signed in to change notification settings - Fork 4
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Verify core of Run
method
#240
Conversation
…oop (almost done)
Run
method - very experimental branchRun
method
outputCounters := d.forwardingMetrics[result.EgressID] | ||
// @ assert acc(outputCounters.OutputPacketsTotal.Mem(), _) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Are these asserts that just check for a permission amount to a predicate necessary?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
They are not necessary, but I found them useful for debugging whenever I was converging to the specs. With this, I can find immediately whenever some expectation is broken
Specifies and verifies the method (*DataPlane).Run(...). This PR shows that the main loop of the router, which starts a thread per interface of the router which receives, processes, and sends packets is memory safe.
In the process, we ironed out our specification style to make Gobra scale to the challenge and to make the specs more readable
TODO:
assume false
inprocessPkt
assume false
inprocessOHP
concluded in 9f324c8)(*DataPlane).Run(...)
(may be done in a separate PR, this one is already quite large)