tis 2008-04-01 klockan 22:59 +1300 skrev Amos Jeffries:
> I started out that way (assuming ss_len was absent but sin_len was
> present) but a header analysis proved the assumption wrong. sin_len also
> proves very absent from Debian Linux 2.6.25 headers.
Somehow I doubt that linux would change the socket ABI between 2.6.24
and 2.6.25 breaking all applications..
Additinally the relevant header is not really from the kernel but
glibc..
> OS that I know of and have tested the headers for all define a
> SOCKADDR_COMMON() macro for these types which neatly ensures they all
> have the same initial format within a given kernel. But not necessarily
> the same as other kernels.
Linux only has the family in the common part, with length being a family
specific member so you need to look in the actual definition of
sockaddr_in and sockaddr_in6 to find it.
family
---- length data FreeBSD has a both length and family in the common area length family --- data > AFAICT they are formally required to do so for sockaddr_in6. But not for > sockaddr_in or sockaddr_storage. sockaddr_in must have a sin_length for BSD socket implementations, which is the common implementation seen in most OS:es... sockaddr_storage does not have much requirements other than it being able to store all supported sockaddr formats and there at minimum being a ss_family member telling the address format.. Regards HenrikReceived on Tue Apr 01 2008 - 04:35:56 MDT
This archive was generated by hypermail 2.2.0 : Wed Apr 30 2008 - 12:00:07 MDT