Skip to content

Conversation

miri64
Copy link
Member

@miri64 miri64 commented Nov 9, 2018

Backport of #10356

Contribution description

During release testing I noticed that reproducibly the first ping is always timing out. Some investigation revealed that this is a bug in the address resolver that involves dropping any interface information it has, when it is queueing a packet for which it doesn't know the link-layer address yet.

Without this the first packet to a new link-local address will not be delivered in non-6Lo environments, since the interface is not provided. With this change, if an internet was provided to the address resolver it
will be stored within an allocated gnrc_netif_hdr_t.

At this point [IPv6 already striped](netif strip) the packet of its netif header, so there is no risk that there will be to, in case it was provided and the netif came from its existence.

Testing procedure

Compile gnrc_networking for native and try to ping your TAP interface's / bridge's link-local address. The first ping will fail without this commit. With it it will succeed.

Issues/PRs references

None

Without this the first packet to a new link-local address will not be
delivered in non-6Lo environments, since the interface is not provided.
With this change, if an internet was provided to the address resolver it
will be stored within an allocated `gnrc_netif_hdr_t`.

At this point [IPv6 already striped](netif strip) the packet of its
netif header, so there is no risk that there will be to, in case it was
provided and the `netif` came from its existence.

(cherry picked from commit ce0c468)
@miri64 miri64 added Area: arduino API Area: Arduino wrapper API Area: network Area: Networking CI: ready for build If set, CI server will compile all applications for all available boards for the labeled PR Process: release backport Integration Process: The PR is a release backport of a change previously provided to master Type: bug The issue reports a bug / The PR fixes a bug (including spelling errors) labels Nov 9, 2018
@miri64 miri64 added this to the Release 2018.10 milestone Nov 9, 2018
@miri64 miri64 requested a review from jia200x November 9, 2018 16:48
Copy link
Member

@jia200x jia200x left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ACK

@jia200x jia200x merged commit f234a57 into RIOT-OS:2018.10-branch Nov 9, 2018
@miri64 miri64 deleted the backport/2018.10/gnrc_ipv6_nib/fix/netif_queued branch November 10, 2018 07:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Area: arduino API Area: Arduino wrapper API Area: network Area: Networking CI: ready for build If set, CI server will compile all applications for all available boards for the labeled PR Process: release backport Integration Process: The PR is a release backport of a change previously provided to master Type: bug The issue reports a bug / The PR fixes a bug (including spelling errors)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants