sys/net/radix.h: #define Free(p) for user-land
Eric van Gyzen
eric_van_gyzen at dell.com
Tue Oct 8 14:47:35 UTC 2013
On 10/08/2013 09:15, Gleb Smirnoff wrote:
> 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 :)
Gleb,
So true. :) Before I bothered, I just wanted to ask if a change was
impractical due to API commitments with several known out-of-tree
consumers. Hearing no such replies, I'll test a patch.
Eric
More information about the freebsd-net
mailing list