-
Notifications
You must be signed in to change notification settings - Fork 2k
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
6lo: RIOT does not receive packets from Linux when short_addr is set #11033
Comments
@jia200x you have the equipped PI on your desk anyway. Mind to give it a try? |
@PeterKietzmann sure |
Meh, I guess I know why this happens :-( 08:14 + eintopf >> but then I can say normal ndisc with short address is broken either on riot or linux 10:04 + eintopf >> Bergzand: after walking to the office: the addrlen setting in RIOT is wrong to have So, I am either not sure if short/extended should be handled as or "or" xor. @miri64 So we put extended AND short in address options fields of ndisc messages if short address is available. Also note that RA will generate two addresses for SLAAC if short is available. I think RIOT can't deal with that and it was already so as I added this feature :-X In Linux exists a per interface type ndisc layer hook for doing additional handling. Look what we doing there: https://elixir.bootlin.com/linux/latest/source/net/6lowpan/ndisc.c At least the extended addr is always available but RIOT seems to drop such ndisc messages when short is available. If RIOT will not drop and parse extended only then at least a connection would work again. |
ping Any news on this? |
I'll have some time again, I'll have a look into this soonish. |
have fun :-) |
Sadly, no news (and no time so far) :( Can somebody try @alexaring's proposal? |
Description
When setting a short address on a Linux host (
iwpan dev wpan0 set short_addr 0x2
), RIOT is not able to receive packets send from that Linux host anymore.A simple test is to use ICMP ping, but this can also be observed with UDP messages.
Steps to reproduce the issue
net/sockets/echo_server
example:mkcd build && cmake -DBOARD=nrf52840_pca10056 -DCONF_FILE="prj.conf overlay-802154.conf" ..
On Linux:
Observe that we now have a two lowpan0 interface with IP addresses attached to it:
On RIOT
look at the resulting network configuration
On Zephyr
Observe the network configuration
So we've got the following addresses:
fe80::186a:33b1:1ba0:1212
fe80::a9cd:ff:fe00:1
fe80::7b7d:362c:c959:65a
fe80::d07:d5e9:7c9:572d
Expected results
Everyone should be able to talk to each other.
Actual results
on RIOT
on Zephyr
on Linux
but wait - what if instead of an interface, we specify the source IP?
Interesting!
Now what to make out of this, I don't know. I find those results rather surprising, at least now they are documented somewhere.
I also prepared a second raspberry pi to check how Linux <-> Linux handles the 4 possible short / long source / destination combinations. Here all combinations do work.
It should be noted that when no short addresses are used, everyone is able to send and receive packets from everyone else.
Versions
RIOT: 2019.01 (master branch @ 5d481c2)
Linux: 4.19.20+ #1201 Tue Feb 12 21:55:56 GMT 2019 armv6l
Zephyr: v1.14.0 (master branch)
The text was updated successfully, but these errors were encountered: