On Thu, Jul 01, 2010 at 10:16:22AM +0200, Manuel Franceschini wrote: > On Wed, Jun 30, 2010 at 5:08 PM, Guido Trotter <[email protected]> wrote: > > On Wed, Jun 30, 2010 at 2:57 PM, Manuel Franceschini > > <[email protected]> wrote: > >> On Wed, Jun 30, 2010 at 3:04 PM, Guido Trotter <[email protected]> > >> wrote: > >>> On Wed, Jun 30, 2010 at 1:14 PM, Manuel Franceschini > >>> <[email protected]> wrote: > >>> > >>>> + daemon.AsyncUDPSocket.__init__(self, > >>>> utils.GetAddressFamily(bind_address)) > >>> > >>> Are you sure this works? bind_address is '' by default and > >>> GetAddressFamily fails on that. > >> > >> By default it is "0.0.0.0". Currently if an invalid address is passed > >> we fail with 'socket.gaierror'. This improves that by raising a > >> 'GenericError' that GetAddressFamily throws. > >> > > > > Right... Mmm... the docstring still says that by default it's ''. > > Wonder when that changed, and if we should fix the docstring. :) > > I think an empty string should raise an exception (as it does with > this patch). I removed that from the docstring. Allowed values are > either a valid address or IP{4,6}_ADDRESS_ANY. > > >>> Also, if bind_address is '' I'd say we should create two sockets, and > >>> bind on both ip4 and ip6, if the hosts has addresses/supports either. > >> > >> The plan was to use a cluster-level parameter to determine whether > >> IPv4 or IPv6 is preferred. Based on that information we could bind > >> confd. What about doing that for now and see whether/how we support > >> hybrid clusters? > > > > Well, for confd for example it's quite simple to support either, as > > it's a quite standalone component. I wouldn't say "let's have 3 nodes > > on v4 and 3 on v6" but for example having rapi and confd reachable by > > either sounds worth it. And a good path to transition. We'd need to > > save both the v4 and v6 ip in the config file for this to work, but I > > guess that would be doable. > > It is certainly doable and might be worth it. However, if the > cluster-level preference is, say, IPv4 and not all nodes have IPv6 > enabled, we could end up with a hybrid setup. Do we want that? For > consistency and error detection it is simpler and more robust to have > a preference (either IPv4 or IPv6 or both) and then check whether all > (affected) nodes comply to that. In other words, if the cluster > preference is IPv4 we should not automagically accept IPv6 > connections. > > In order to achieve that, we could introduce a IP_ADDRESS_ANY constant > that would instruct a daemon to create sockets for both IPv4 and IPv6. > What do you think?
Sounds good to me. As I said before: my preference is that we get IPv6 working in 'pure' environments, rather than supporting both (since Ganeti is self contained app, more or less…). iustin
