[quagga-dev 1421] Re: [Zebra-pj-commit] "quagga/lib ChangeLog sockopt.c sockopt.h"
gdt at ir.bbn.com
Thu Aug 19 16:23:16 BST 2004
> > char buff [sizeof (*cmsg) + SOPT_SIZE_CMSG_PKTINFO_IPV4()];
> > msgh.msg_control = (caddr_t) buff;
> > msgh.msg_controllen = sizeof (buff);
> > The macro in sockopt.h returns the actual size, but the CMSG_SPACE
> > padding is not done (see /usr/include/sys/socket.h on netbsd,
> > assuming this is the same on linux but not sure).
> Quite possible. My goal was simply to shift useage to a central place
> with minimum of fuss. The above was the most common way to allocate
> the cmsg buffer, so doing it so allowed me to remain bug compatible.
Sure, that's what I expected.
> For IPv6 it doesnt matter, cause thankfully v6 APIs are more
> consistent. But for v4, I'd prefer code not to have anything more
> than a vague notion of "i want to retrieve the ifindex", and we migth
> as well extend to v6.
> This probably implies wrapping up controll message access completely.
yes, probably does. So a function to create a cmsg structure
(chain?), and another to extract the info later, and then a free
routine. Unfortunately these need to be dynamically allocated because
the ALIGN routines apparently can call functions. Plus, that's more
likely MP-safe for down the road.
More information about the Quagga-dev