LVS
lvs-devel
Google
 
Web LinuxVirtualServer.org

Re: IPVS_IPV6 Kconfig fix

To: Allen Parker <parker@xxxxxxxxxxx>
Subject: Re: IPVS_IPV6 Kconfig fix
Cc: davem@xxxxxxxxxxxxx, lvs-devel@xxxxxxxxxxxxxxx
From: Julius Volz <julius.volz@xxxxxxxxx>
Date: Sat, 10 Oct 2009 17:17:05 +0200
Hi Allen,

On Sat, Oct 10, 2009 at 4:55 PM, Allen Parker <parker@xxxxxxxxxxx> wrote:
>
> On Oct 10, 2009, at 7:38 AM, Julius Volz wrote:
>
>> Hi Allen,
>>
>> On Sat, Oct 10, 2009 at 4:03 PM, Allen Parker <parker@xxxxxxxxxxx> wrote:
>>>
>>> Unless there's a very good reason to exclude CONFIG_IPV6=m from
>>> CONFIG_IPVS_IPV6, you probably shouldn't do it. This patch fixes the
>>> "hidden" IPVS_IPV6 when IPV6=m.
>>>
>>> diff -Nur linux-2.6.30.4/net/netfilter/ipvs/Kconfig
>>> linux-2.6.30.4-fixed/net/netfilter/ipvs/Kconfig
>>> --- linux-2.6.30.4/net/netfilter/ipvs/Kconfig   2009-10-10
>>> 13:59:50.000000000 +0000
>>> +++ linux-2.6.30.4-fixed/net/netfilter/ipvs/Kconfig     2009-10-10
>>> 13:59:24.000000000 +0000
>>> @@ -26,7 +26,7 @@
>>>
>>>  config IP_VS_IPV6
>>>       bool "IPv6 support for IPVS"
>>> -       depends on EXPERIMENTAL && (IPV6 = y|| IP_VS = IPV6)
>>> +       depends on EXPERIMENTAL && (IPV6 || IP_VS = IPV6)
>>>       ---help---
>>>         Add IPv6 support to IPVS. This is incomplete and might be
>>> dangerous.
>>
>> The problem is that IP_VS_IPV6 doesn't support modularity, so it has
>> to depend on IPV6 being statically compiled in as well.
>>
>> An alternative to the current configuration is to automatically select
>> IPV6=y in the background when selecting IP_VS_IPV6 (and always showing
>> IP_VS_IPV6). I remember a thread on lkml about that a long while ago,
>> but don't know the current Kconfig policies regarding this.
>>
>> Julius
>
> I realize that compile != run, but could you possibly point me in the
> direction of _why_ IPVS_IPV6 won't work when built in a modular fashion? My
> personal preference for things like ipvs is that they're built as a module,
> so that if I do or don't need them, I don't have to compile+reboot a
> production machine in order to support new projects. Additionally, if a
> module's misbehaving, it's generally pretty easy to rmmod and insmod,
> without actually having to take the machine down.

Of course modularity is a nice feature to have, but making IPv6
support for IPVS modular would be a lot of work. The IPv6 code is very
intertwined with IPv4/common code in IPVS (in execution paths as well
as data structures). When compiling statically, you can simply #ifdef
the IPv6 parts away. But if you wanted to support modularity, you'd
need to extract all IPv6 parts and put them in a module, which would
require _a lot_ of refactoring. So I don't think it is likely to
happen in the near future... Hope that this explanation helps though
:)

Julius
--
To unsubscribe from this list: send the line "unsubscribe lvs-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

<Prev in Thread] Current Thread [Next in Thread>