[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