[libvirt] Host IP Address

Daniel P. Berrange berrange at redhat.com
Wed Jun 23 09:27:40 UTC 2010


On Wed, Jun 23, 2010 at 09:23:36AM +0200, Maximilian Wilhelm wrote:
> Anno domini 2010 IKI-サガル バルウェ scripsit:
> 
> Hi!
> 
> > Thanks for such a quick reply.
> 
> No problem :)
> 
> >> Did I get you right, that you have a 'virDomainPtr' as basis and want a
> >> mapping
> >> from that to the IP?
> > Yes. Thats what I want to do.
> 
> >> I guess one way could be to get the virConnectionPtr
> >>  conn_ptr = virDomainGetConnect (domain_ptr);
> 
> >> And then query the hostname
> >>  virConnectGetHostname (conn_ptr);
> >> or the uri
> >>  virConnectGetURI (conn_ptr);
> 
> >> and resolve the hostname or extract the IP/host from the URI and
> >> resolve that.
> 
> > Yes, I thought of this too. But I was hoping that the LibvirtAPI has some
> > way of giving me the host IP Address directly, instead of resolving it
> > myself.
> 
> I don't know of any and I wouldn't know which IP to choose if there
> were multiple.
> 
> > But then again, how would I resolve the IP Address from the hostname? Can
> > you please guide me on this.
> 
> In short:
> 
> struct hostent *hostent;
> hostent = gethostbyname (char *hostname);
> if (hostent) {
>         for (i = 0; hostent->h_addr_list[i]; i++)
> 		printf ("%s, ", hostent->h_addr_list[i]);
> 	printf ("\n");
> }

Never use gethostbyname in any new code. It is long since obsolete, not
thread safe and is hardcoded to only work with IPv4.

There is a good exmaple of how to use the modern replacemenbt, getaddrinfo(),
to resolve hostnames here:

 http://people.redhat.com/drepper/userapi-ipv6.html

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