Repository navigation
Conversation
…n the interface table A node can keep an interface outside its interface table, for example in a submodule with an interface table of its own. The topology has no destination interface for a link that ends at such an interface, and GateScheduleConfiguratorBase::addPorts dereferenced the null pointer. The link is skipped and its port stays without an end node and another port, like the port of an unconnected interface. The search of the output port of a flow ignores such ports, and a flow whose path needs one stops with an error that names the two nodes.
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Fixes #1434. On master 7ec0d4d, one commit.
A node can keep an interface outside its interface table, for example in a submodule with an interface table of its own (
BridgingRouterintests/module/lib, the Simu5GUpf). The topology has no destination interface for a link that ends at such an interface, andGateScheduleConfiguratorBase::addPortsdereferenced the null pointer.Change
addPorts: once the remote node is known, a link with no destination interface is skipped with anEV_WARNthat names the local interface and the remote node. Its port stays withoutendNodeandotherPort, exactly like the port of an unconnected interface.addFlows: the search for the output port of a flow ignores ports without anendNode, and a flow whose path needs such a link stops withThe two belong together: skipping the link in
addPortsmakes the dereference inaddFlowsreachable.Why skip in addPorts and not stop
The link is legitimate, and the schedule of the TSN part usually does not involve it. The error is raised where it matters, for a stream whose path needs the link, and it names both nodes.
Eager and AlwaysOpen reach ports only through the paths that
addFlowsbuilds, and Z3 readsendNodeandotherPortonly through those paths (its loop over all ports reads the datarate only), so they are covered.TSNschedGateScheduleConfiguratorreadsport->endNodeof every switch port (line 91), which is null for an unconnected switch port on master as well; it is not changed here.Evidence
tests/module)GateScheduleConfigurator_2.testGateScheduleConfigurator_3.testgit amwithout conflict, and the three newGateScheduleConfigurator_*tests pass together.showcases/tsn/gatescheduling/eager, config Eager, runs to its time limit with the fix.Not run: debug build; the full
tests/moduleand fingerprint suites; Z3 and TSNsched (not built here); a real Simu5GUpfnetwork against this INET; Linux and Windows.