On 15 February 2012 23:02, Andreas Färber <afaer...@suse.de> wrote: > Am 15.02.2012 10:38, schrieb Michael S. Tsirkin: >> why does slirp have all these >> defines in the first place? >> >> slirp/mbuf.h:#define m_nextpkt m_hdr.mh_nextpkt >> slirp/mbuf.h:#define ifs_next m_nextpkt >> >> Seriously, #define for a field name?
> Maybe historically > m_hdr.mh_nextpkt was m_nextpkt and someone tried to avoid a full > refactoring. This comes from a BSD header originally, and I guess in the BSD context it would have been preserving source compatibility with older versions of BSD where the fields really were all in the mbuf struct. Here's 4.2BSD, for instance: http://minnie.tuhs.org/cgi-bin/utree.pl?file=4.2BSD/usr/src/sys/h/mbuf.h The split out of the header fields and the introduction of these macros seems to have happened somewhere between 4.3BSD-Tahoe in 1988 and 4.3BSD-Reno in 1990: you can see them here: http://minnie.tuhs.org/cgi-bin/utree.pl?file=4.3BSD-Reno/src/sys/sys/mbuf.h Anyway, we can happily clean up since we're not trying to be backward compatible with anything (assuming you have no objection to deleting a historical artefact that's over twenty years old :-)) -- PMM