I would love to use ARP from the NDK. Does LLIAddStaticEntry(), or another function, send ARP packets on the network to see if the given IP address is in use?
As for my original question, it seems to be more than a documentation error. socket() returns EINVAL when protocol is 0x806 (==ETHERTYPE_IPv6). From RawEthSockPcbAttach() in rawethsock_pcb.c:
switch (ps->Protocol)
{
case 0:
case ETHERTYPE_IP:
case ETHERTYPE_IPv6:
case ETHERTYPE_VLAN:
case ETHERTYPE_PPPOECTL:
case ETHERTYPE_PPPOEDATA:
return EINVAL;
}