The last few weeks I have been busy implementing my port scanner utility. I have done a lot of testing and reading about the protocols of the TCP/IP stack, especially ICMP. Although ICMP is a rather simple protocol to implement, there was an error, which was very annoying. Today was the day, when I found that beast.
It finally was a not properly initialized data buffer which hold the IP/ICMP packet data. This led to generated IP packets which had a framentation offset set, although not fragmented. Wheew. The packets therefore were dropped by the kernel and never sent over the net. After hours of debugging and analysis the problem is now solved.
In case you are interested in the current source code, please visit the project page on SourceForge.