I’ve written a virtual miniport driver for a test environment (windows 7 64bit) that uses NdisMediumIP as the MediaType and DchpEnabled=0 in the INF. This makes sense for my application because there is really no link layer, so not having to deal with Ethernet headers and ARP is really convenient.
However, I’ve noticed the upper layer drivers (I guess TCP/IP driver) still try to do DHCPv6 and NDP Router/Neighbor Solicitation. Does DhcpEnabled=0 in the INF only affect IPv4? I know that I can turn off DHCPv6 by assigning a static IPv6 address and Router Discovery can be disabled with netsh, but I can’t seem to find a way to disable neighbor discovery.
Also, part of the requirements for this test system is to implement NDP Router Discovery from user-space. Basically, the Windows box operates as a router by responding to router solicitations (but a user-space test program creates the responses, not the kernel). However, I’m finding that I can only receive Router Solicitations from the socket if I do IPV6_ADD_MEMBERSHIP=ff02::2 and SIO_RCVALL=RCVALL_IPLEVEL. But this causes me to receive all sorts of undesirable packets and sort eliminates the idea behind binding the socket to a particular interface. Interestingly, if I don’t do the SIO_RCVALL, I can receive *some* IPv6 multicast packets, but not all. And it seems to be filtering based on the ICMPv6 message type (e.g., I get MLD Listener Done but not MLD Listener Report or Router Solicitation). Is this the expected behavior?
Thanks in advance!