I am running into an issue receiving ICMP Destination Unreachable - Port
Unreachable packets on a raw socket in Windows Vista - SP1. I'll try and give
a bit of background.
Previously we used a raw socket to send UDP packets where we would set
IP_HDRINCL and as a result provide the source port among other things,
sometimes we would receive ICMP PU packets, which we need to be aware of. We
would receive these via a seperate RAW socket setup to receive all ICMP
traffic.
When we went to Vista we found that having the raw socket set up for the UDP
packets would result in receiving every single UDP packet because the socket
could not be bound to a specific port anymore. Other than the problem of
receiving all UDP traffic to the interface, things otherwise worked as
intended. IE we would still see the ICMP PU packets on the ICMP socket.
To fix the issue of receiving all UDP traffic we went to a normal UDP socket
and bound to a specific port. Now when we receiving an ICMP PU packet (we can
see it in wireshark) it never shows up on the ICMP socket. It's as if the
ICMP PU is somehow "consumed" - something related to the system having a UDP
socket bound to said port.
If anyone has any ideas on this that would be highly appreciated.
Thanks,
-Tom
|