I’m trying to have the ipv6_multi stack running on Nucleo-F429ZI.
I started from having a working TCP ip stack project using the FreeRTOS-PLUS-TCP main branch, and then I replaced it with the ipv6_multi branch. (thanks to @ActoryOu for updating the folder structure!)
While the main branch works ok, and after few seconds the IP gets assigned by the DHCP, the ipv6_multi does not work. The IP falls back to the manual one, because the DHCP client goes into time out. Moreover it is not possible to ping the manual IP.
UDP printf broadcast seems to work.
Has anyone tried to have the Multi interface stack working on STM32?
Thank you Stefano for reporting this. @actoryou is doing a great job, merging all latest changes to the IPv4/single branch into IPv6/multi.
I test all changes by running integration tests. I will test DHCPv6 in the coming days and report back about it.
PS Have you also tried the RA ( Router Advertisement ) protocol in stead of DHCPv6?
Hi @stefano, this week we have been working on both FreeRTOS+TCP /multi, as well as on the STM32Fx driver. For a long time, this branch received little attention. Now it is time to continue with IPv6/multi.
Yesterday I discovered a problem with the STM32Fx driver: ipFRAGMENT_OFFSET_BIT_MASK was defined as a host-endian value, while it was compare to a network-endian value in this function:
Because of this, the driver dropped packets that were in fact correct. From now on, ipFRAGMENT_OFFSET_BIT_MASK will depend on the endianness, defined in
FreeRTOS_IP_Private.h
Beside that, I discovered some issues with the DNS (IPv6) driver. I will push the changes as soon as Actory’s PR 537 has been merged.
If you are in a hurry, please tell and I will forward you a version with all upcoming patches.
@htibosch Thank you for these options! I was not aware of your developmental forks.
I am on a different platform (SAME70) but was finding a similar bug. The driver is different but that same check exists and there is also no apparent distinction between the endian-ness of the processor and the network. The symptom is the same (all IPv6 traffic is ignored), although I want to double-check now because I think the cause may be different.
At the moment I am on business travel, but at least as soon as next week I will be able to do some testing and provide feedback. If the cause appears to be different I can open another thread.
but unfortunately, we had not checked all network interfaces that may also use this macro.
DriverSAM: I see that NetworkInterface.c is already adapter for IPv6/multi.
If you have any questions about it, you can ask them in this post, no matter what “the cause” is.