Skip to content

Conversation

miri64
Copy link
Member

@miri64 miri64 commented Nov 9, 2018

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.
@miri64 miri64 added Type: bug The issue reports a bug / The PR fixes a bug (including spelling errors) 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: needs backport Integration Process: The PR is required to be backported to a release or feature branch Area: arduino API Area: Arduino wrapper API labels Nov 9, 2018
@miri64 miri64 added this to the Release 2018.10 milestone Nov 9, 2018
@jia200x
Copy link
Member

jia200x commented Nov 9, 2018

I'm reviewing this!

@jia200x
Copy link
Member

jia200x commented Nov 9, 2018

It didn't work but I was using the master branch twice ;).
Tested against master and works as expected!

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. We need to re-run all GNRC Release-Specs tests anyway just to make sure everything is ok

@miri64 miri64 merged commit 98f42ee into RIOT-OS:master Nov 9, 2018
@miri64 miri64 deleted the gnrc_ipv6_nib/fix/netif_queued branch November 9, 2018 16:47
@miri64
Copy link
Member Author

miri64 commented Nov 9, 2018

Backport provided in #10360

@miri64
Copy link
Member Author

miri64 commented Nov 9, 2018

It didn't work but I was using the master branch twice ;).
Tested against master and works as expected!

Wait, what did you mean by that?

@jia200x
Copy link
Member

jia200x commented Nov 9, 2018

Wait, what did you mean by that?

Nevermind, I compiled in master, changed to this branch and switch to the wrong window that just had "make term". So, I was testing the wrong binary

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: needs backport Integration Process: The PR is required to be backported to a release or feature branch 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