sys/net/radix.h: #define Free(p) for user-land

Gleb Smirnoff glebius at FreeBSD.org
Tue Oct 8 14:15:12 UTC 2013


  Eric,

On Mon, Oct 07, 2013 at 10:49:11AM -0500, Eric van Gyzen wrote:
E> The user-land definition of the Free() macro in sys/net/radix.h is
E> rather inconvenient.  I work on a large C++ code-base, where several
E> classes define Free() functions.  This header file gets indirectly
E> included in a few modules (via nested #includes), so we have to #undef
E> Free to work around this macro definition.
E> 
E> Ideally, radix.h would define a more unique name, such as R_Free().  If
E> I were using a C code-base, you could say the same about my code, but
E> it's C++, and Free() is already well qualified by classes and/or namespaces.
E> 
E> Is this Free() macro considered a well-defined, widely known, and
E> therefore mandatory part of the API, or could it be renamed to something
E> more unique?  Alternatively, could it be changed to an inline function
E> definition, so as not to conflict with declarations in other
E> namespaces?  If any of these is possible, I'll gladly provide the
E> blindingly trivial patch, although I don't have a commit bit.
E> 
E> Finding in-tree consumers of this macro is difficult, due to its generic
E> name.  Its counterparts--R_Malloc and R_Zalloc--only appear in
E> sys/net/{radix,route,rtsock}.c (on head).  The recent ipfilter update
E> removed the only [potential] in-tree user-land consumer.

The easiest way to find consumers would be to build test the trivial patch :)

-- 
Totus tuus, Glebius.


More information about the freebsd-net mailing list