[libvirt] [PATCH] Use gethostname in qemudDomainMigratePrepare2.

Daniel P. Berrange berrange at redhat.com
Thu May 20 15:27:40 UTC 2010


On Thu, May 20, 2010 at 11:14:05AM -0400, Chris Lalancette wrote:
> This patch is essentially a revert of commit:
> 180ca598c4517012014d226c78068d4b38ff9e24
> 
> The problem ends up being that virGetHostname is *too* clever,
> and is causing migration problems.  In particular, on
> machines with dynamic networks, the hostname of the machine
> generally gets mapped to 127.0.0.1 in /etc/hosts.  This means
> that virGetHostname will do gethostname (and get back
> something like foo.example.com), then resolve it to 127.0.0.1,
> and then pass that back to the source of the destination,
> which is bogus.  By being less clever and just using gethostname,
> we avoid the problem.

Why don't we fix virGetHostname(), so all callers benefit instead.

The idea behind calling getaddrinfo() on the result of gethostname() was
to ensure you get the FQDN, instead of just a plain hostname. I'd say we
could be more clever in that respect, eg

    hostname = gethostname()

    if (STRPREFIX(hostname, "localhost")) {
       ...report error...
    }

    if (strchr(hostname, '.'))
      return hostname;

    ...canonicalize hostname...
    
    if (STRPEFIX(newhostname, "localhost"))
       return hostname

So we'd normally be returning the plain result of gethostname() unless we
saw it needed canonicalization, and if canonicalization results in it
turning into 'localhost', just use the non-canonical hostname instead

Daniel
-- 
|: Red Hat, Engineering, London    -o-   http://people.redhat.com/berrange/ :|
|: http://libvirt.org -o- http://virt-manager.org -o- http://deltacloud.org :|
|: http://autobuild.org        -o-         http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505  -o-   F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|




More information about the libvir-list mailing list