Exit from VirtioNet:pull if link is nil #787
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Consider the following script that forwards packets from one nic to another one. NICs use VirtioNet driver (Snabb Switch running within a guest):
The program breaks due to an error in
core/link.lua
:The problem is that although there's only one link configured, the engine executes
VirtioNet:pull
ineth1
, and the output link is nil, so a checking that exitspull
in that case should be added. I noticed the same checking is present inintel_app.lua
, and there's a another one for thepush
case. I couldn't reproduce a similar test forpush
, so I didn't add it.In my opinion, a
pull
in eth1 should never be executed as it's not present on the left side of a link, but maybe I'm missing other reasons while it's being called.