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 :|