Hello Tommaso,
I am looking at mesh implementation. Did a few runs with some loggings enabled(attached) .Here are what I checked sporadically. I need some directions where to look:
1. The key place to compare a working ipv4 version with ipv6 is : When a udp packet is sent, in IpvXInterface::Send, the program checks is ARP is required, then for ipv4, (else to being a multicast) it makes an ARP lookup. In ipv6 is does a ND. The point is, in ND, it first looks into an empty ND cache which fail. Therefore, unlike ipv4's successful arp, ipv6 lookup is is not resolved.
So from here I need to know if I should dig down(to mesh protocols impl.) or look up in ipv6 protocol?
I work as a programmer in financial sector. This is sort of my afternoon hobby and I will be happy to do it. Just give me more insight and also let me know where to look. I will do it.
2. Just to give more information, I also looked into why the ND cache was empty. This cache is populated in places like HandleNS and HandleRS (Icmpv6L4Protocol) , which I believe are indirect callbacks of methods like SendNS and SendRS. They, handlers, are invoked via Icmpv6L4Protocol::Receive(). From the logs, I can see this Receive method is called only once in the middle of my 10 seconds simulation. So, it is obvious that the cache would be subsequently empty all the time and no ND lookup attempt were successful.
If you please give me a direction where to look further, I will be happy to do it.
Thank you.
Vahid