Subject: why does DCCP SO_REUSEADDR have to be SOL_DCCP?

From: Rick Jones <[email-masked]>
Date: Fri, 01 Feb 2008 17:42:23 -0800

Hi -

I'm tweaking the netperf omni tests to be able to run over DCCP.  I've 
run across a not-unorecedented problem with getaddrinfo() not groking 
either SOCK_DCCP or IPPROTO_DCCP in the hints, and that I can more or 
less live with - I had to do a kludge for getaddrinfo() for IPPROTO_SCTP 
under Linux at one point and I can see how the two are not necessarily 
going to be in sync.

And I've worked-around no user-level include files (ie without setting 
__KERNEL__) define the DCCP stuff, and that is OK too, albeit somewhat 
inconvenient.

My question though is why on earth does an SO_REUSEADDR setsockopt() 
against a DCCP socket have to be SOL_DCCP?  SCTP and TCP are quite happy 
with SOL_SOCKET, and it might be foolish consistency, but since the 
option _does_ begin with SO_ I'd have expected it to work for 
SOL_SOCKET, but (again RHEL5.1, yes, I do plan on getting upstream but 
have to satisfy several masters) it doesn't seem to be the case - a 
subsequent listen() or connect() call after an SOL_SOCKET SO_REUSEADDR 
against a DCCP socket leaves one SOL as it were...

Of course the setsockopt(SO_REUSEADDR) against the DCCP socket using 
SOL_SOCKET itself doesn't fail, only the later listen() or connect() call...

happy benchmarking,

rick jones