As I was traversing my mental decision tree using a depth-first search model of digger deeper and deeper in to the lwip TCP/IP source code, I thought to myself that I should go back up the decision tree and take a deeper look at the tcpdump output.
It turns out I was setting the source and destination IP addresses to the same value. Once I set the source IP address to NULL, the TCP/IP stack auto-binded it to the IP address of the MAC and all communications started working.
Now I will do some code cleanup, will push to github and then get started on a simple demo of how this works.
After that… I will put this logic inside the FPGA and show how this can help you with your trading applications.
Code is a work-in-progress and is on the addTcp branch