[PATCHES] CTDB: improved IPv6 support

Martin Schwenke martin at meltin.net
Wed Dec 17 20:21:32 MST 2014

Hi David,

On Wed, 17 Dec 2014 12:22:24 +0000, David Holder
<david.holder at erion.co.uk> wrote:

> Re determining the interface:
> In IPv6 the basic socket API and advanced socket API have support for 
> identifying interfaces by a unique integer. There are also supporting 
> functions for enumerating interfaces and converting to and from textual 
> names for the interfaces.
> The functions are if_nametoindex(), if_indextoname(), if_nameindex() and 
> if_freenameindex() (see RFC3493 Section 4).
> Specifying sending and receive interfaces is covered in RFC3542 Section 
> 6.1 and 6.2.

Thanks for the pointer. However, I'm not sure it helps.  I don't see a
way of taking an IP address and finding out which interface it is
on.  :-(

> Also I was wondering about the DAD issue. This can be turned off in the 
> kernel (an interface to this is exposed in /proc). Might this help? I 
> sometimes turn off DAD in situations where it can cause problems.

We thought about that.  However, when we shuffle IP addresses from
node to node, DAD is probably a useful thing to have around in case we
have a bug.  :-)

Given that we process addition of IP addresses in parallel (via
multiple scripts), waiting until DAD is complete for each address isn't
too much overhead.  However, given that the parallel approach has
inherent limits (i.e. when you start to run too many scripts in
parallel the node will start to melt), in the longer term we'll probably
switch to adding them in a tight loop... and then we'll need to make
sure that our waiting code isn't between adds in that loop.  ;-)

peace & happiness,

More information about the samba-technical mailing list