Dear all,
recently I set up a small network:-Linux-PC (ethernet interface) -Raspberry Pi (ethernet, mrf24j40 radio module) -Riot node (stm32f3discovery, mrf24j40, BME280 environmental sensor)
As mentioned the Pi has an ethernet device and a mrf24j40 radio module as net interfaces. It is configured as a border router with radvd-service. The ipv6-address-prefixes are fc00:0:0:1::/64 (eth0)
fc00:0:0:2::/64 (lowpan0)
After getting this network setup working I ran in some issues: Pinging the Riot-node form the Linux-PC was successful but pinging the Linux-PC from the Riot-node failed. Tshark on Raspberry Pi showed showed the reason: The ip6-packets from the riot-node have the link-local-address as source-address (not the global scope address with fc00::0:0:2-prefix). These packages could not be routed.
I did some further experiments. By adapting the posix-socket.example I configured the Riot-node as an udp-server, sending temperature-data (bme280-sensor) to an udp-client at Linux-PC. In order to get routable ip6-packets, I set the source-address (of the ip6 packages send from Riot-node) by application code. This “solution” worked for a while.
After pulling RIOT master after several weeks without pulling I got a new issue. Pinging Riot node from Linux-PC fails. My client-server-set up also doesn’t work. The Riot-node still gets requests from Linux-PC, but it doesn’t send answers - if I set ip6-source-address by application code. If I don’t set source address by application code, the Riot-node answers, but with its link-local-address which is not routable. Some git diff analysis and ENABLE_DEBUG showed that changes in gnrc_ipv6.c caused the different behavior: my preset global scope source address (fc00::2:6717:7427:32d:1036) is judged to be invalid.
What can I do to force the Riot-note sending ipv6-packets with routable source addresses?
Thanks for your help.
Best regards ,
Raimund Oude Hengel