libbsd: How to add an option for switching off IPv6 (or other BSD Kernel configurations)

Christian Mauderer christian.mauderer at embedded-brains.de
Tue Aug 2 06:45:21 UTC 2016



Am 01.08.2016 um 17:33 schrieb Gedare Bloom:
> On Mon, Aug 1, 2016 at 10:04 AM, Christian Mauderer
> <christian.mauderer at embedded-brains.de> wrote:
>> Hello,
>>
>> we have a special use case where we want to use the new network stack
>> but without the IPv6 support. I could need some advice how this could be
>> integrated into the waf build system. If we find a good solution, this
>> could also be an example for other BSD Kernel options.
>>
>>
>> I found multiple places where IPv6 is enabled in libbsd:
>>
>> If I remove the INET6 option out of the FreeBSD kernel configuration on
>> a FreeBSD system, this has the effect, that the "opt_inet6.h" is
>> generated as an empty file instead of with a single define "#define
>> INET6 1". In the rtems-libbsd the configuration header is located at
>> rtemsbsd/include/rtems/bsd/local/opt_inet6.h. It has a fixed content
>> with the define set. This would be the first place where the support
>> would have to be disabled.
>>
>> Beneath that, some user space tools have a special option to enable IPv6
>> which is currently set in libbsd.py. One such example is tcpdump with a
>> compiler flag '-DINET6' set. As far as I could tell, the kernel and
>> every application that is included in libbsd currently uses the INET6
>> macro. But I think this is more of a convention than a general rule.
>>
>>
>> So I think we would roughly need the following:
>>
>> If i configure libbsd using
>>
>>    waf configure --disable-ipv6
>>
>> the build system would either have to regenerate opt_inet6.h or use an
>> alternative version of it. Further I would need the ability to set
>> compiler flags in libbsd.py depending on this configure option.
>>
>>
>> Are there any better ideas how to implement such an option?
>>
>> I'm quite inexperienced on how to use waf, so I would need some guidance
>> how this could be implemented. Are there any hints how I could start
>> implementing such an option? Some examples or similar code?
>>
> The "Waf Book" is handy for learning how to hack on waf. Sounds like
> you should add your option in the top-level wscript options(), then
> parse it in libbsd_waf to determine whether or not to use ipv6. waf
> does not modify the source files, and these includes appear to remain
> in the source, so it might be easier to generate an empty header file
> and always provide the define through the command line instead, by
> adding e.g. -DINET6 to cflags by default and removing it in case the
> option is used.
> 

Hello Gedare,

thanks for the hint directing to the Waf Book. I'll use it as a reference.

For the define I would prefer the solution that Chris suggested (adding
a custom RTEMS define and set the INET6 in the header dependent on
this). That prevents that a macro with a generic name like INET6 is set
over a large number of files that don't use it or might want to use the
name for something else.

Kind Regards

Christian Mauderer

-- 
--------------------------------------------
embedded brains GmbH
Christian Mauderer
Dornierstr. 4
D-82178 Puchheim
Germany
email: christian.mauderer at embedded-brains.de
Phone: +49-89-18 94 741 - 18
Fax:   +49-89-18 94 741 - 08
PGP: Public key available on request.

Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.


More information about the devel mailing list