Subject: Re: OpenVPN and port sharing - update
To: None <tech-net@NetBSD.org>
From: der Mouse <mouse@Rodents.Montreal.QC.CA>
List: tech-net
Date: 05/15/2006 11:32:19
> I then ran into a difference between Linux and NetBSD w.r.t. the
> CMSG_ALIGN macro. On Linux it'll return a static size based on
> sizeof(long). On NetBSD, it calls __cmsg_alignbytes() so is only
> known at runtime. OpenVPN uses it in a global char[] declaration, so
> on NetBSD it fails as it's unknown at compile time. I've hacked it
> by hand-implementing the Linux macros.
That'll work right only on ports where __cmsg_alignbytes is no more
restrictive than sizeof(long). Even if that's currently all ports, I
wouldn't want to count on it.
> Anyone think of a better way?
Make the global a pointer and allocate it at runtime (with eg malloc).
Unfortunately this is pretty much the only way.
Yes, the CMSG_* stuff is ugly and rather poorly thought out. Things
like this are examples.
/~\ The ASCII der Mouse
\ / Ribbon Campaign
X Against HTML mouse@rodents.montreal.qc.ca
/ \ Email! 7D C8 61 52 5D E7 2D 39 4E F1 31 3E E8 B3 27 4B