So, disabling the filtering helped a bit, indeed. We still haven't managed to get good communication, though - now ACK is received by NCP, but dropped and CoAP confirmation callback is not called.
In this configuration:
- FilterRLOCAddresses is left at default
- NCP is modified to ask for Service ALOC from leader, and gets 0xfc10 properly
- wpantund is modified, to not filter ALOC addresses, only RLOCs (so ::fc10 address is set on linux interface)
- the IP addresses set on linux side seem to be OK (e.g. RLOC is not there)
These are the scenarios which we observe:
- when linux side is sending request to NCP (destination address being RLOC), it goes through nicely, and ACK is sent back as well - everything works fine both ways
- when NCP is sending request to linux side, using mesh local IP, request reaches linux side, gets answered, ACK gets generated, but is dropped before reaching spinel (not sure yet which layer does drop it, though)
At this point we're slightly clueless and just trying to debug the internals to understand it better how it works, but any pointers/insights/things to check would be really helpful.
PS. As a side story, the FilterRLOCAddresses should probably pass ALOC addresses, filtering out only regular RLOCs. That would be first step towards having full Service support on wpantund (the remaining steps would be to be able to ask NCP over spinel to do service registration). So far, we have custom NCP code with added Service registration + modified wpantund to not filter ALOC addresses, only the RLOC ones.