Additional follow up here:
I examined the implementation in the transport layer of SO_REUSEADDR and LwIP isn't behaving like a traditional BSD system does:
Traditionally BSD SO_REUSEADDR only allows binding to INADDR_ANY and additional unique IP addresses. It does not allow binding to the same IP address (and port) multiple times, that behavior requires SO_REUSEPORT be enabled.
Our implementation is allowing binding to the same IP and port as long as all existing PCBs have SO_REUSEADDR also set. This matches the BSD behavior of SO_REUSEPORT
This stack overflow page has a great overview of the different implementations:
http://stackoverflow.com/questions/14388706/socket-options-so-reuseaddr-and-so-reuseport-how-do-they-differ-do-they-mean-tWhich implementation is LwIP attempting to follow?
Joel