Subject: Re: ancillary data alignment and binary backward compatibility: please pick one
To: Matt Thomas <matt@3am-software.com>
From: None <itojun@iijlab.net>
List: tech-net
Date: 03/01/2000 00:00:34
>>         so, will the emulation layer would change alignment constraints on
>>         all the data on routing socket?  hmm, I see I'm relieved.
>Yes.  (or rather it should)
>>         back to the original question (CMSG_ALIGN), which one do you prefer?
>The first one.  It's simpler.

	in RFC2292 there is description like this:

>4.3.4.  CMSG_SPACE
>       unsigned int CMSG_SPACE(unsigned int length);
>   This macro is new with this API.  Given the length of an ancillary
>   data object, CMSG_SPACE() returns the space required by the object
>   and its cmsghdr structure, including any padding needed to satisfy
>   alignment requirements.  This macro can be used, for example, to
>   allocate space dynamically for the ancillary data.  This macro should
		   ~~~~~~~~~~~
>   not be used to initialize the cmsg_len member of a cmsghdr structure;
>   instead use the CMSG_LEN() macro.

	Which bullet is more correct?  If the former, we can pick freely from
	two candidates we have.  If the latter, we must pick the first
	candidate.

	- CMSG_SPACE() is for dynamic allocation only, i.e.
		p = malloc(CMSG_SPACE(int));
	- CMSG_SPACE() can be used for static allocations, like:
		static char buf[CMSG_SPACE(int)];

	(thanks soda for notifying me of the sentences)

itojun