Jim Meyering <jim(a)meyering.net> wrote:
"Daniel P. Berrange" <berrange(a)redhat.com> wrote:
> On Tue, Aug 05, 2008 at 01:52:58PM +0200, Jim Meyering wrote:
>> Atsushi SAKAI <sakaia(a)jp.fujitsu.com> wrote:
>> ...
>> > network_conf.c:290: warning: implicit declaration of function
`inet_aton'
>> > network_conf.c:290: warning: nested extern declaration of `inet_aton'
>>
>> We can/should use inet_pton instead. Then, not only do we use what seems
>> to be the preferred interface, but there is a gnulib module by the same
>> name that can come into play if it too is missing.
>
> Even better would be to use getaddrinfo() with AI_NUMERIC, since we
> already require getaddrinfo() to work on Windows for the remote driver
Dan,
If you don't object, I'll go for the simpler interface (and smaller
change). However I've just noticed that that will require an adjustment
of the gnulib license for the inet_pton module. But that shouldn't be
a problem, since the code in question is glibc-derived.
Here's the required patch, excluding the bit that will
add the new file(s) from gnulib, once the license has
been adjusted.
...
- if (!inet_aton(def->netmask, &innetmask)) {
+ if (!inet_pton(AF_INET, def->netmask, &innetmask) <= 0) {
Whoops. I forgot to remove one of the "!".
Here's the correct patch:
diff --git a/bootstrap b/bootstrap
index bc1c352..70b9a05 100755
--- a/bootstrap
+++ b/bootstrap
@@ -69,6 +69,7 @@ c-ctype
getaddrinfo
getpass
gettext
+inet_pton
mktempd
physmem
poll
diff --git a/src/network_conf.c b/src/network_conf.c
index 10c9dca..f70c73d 100644
--- a/src/network_conf.c
+++ b/src/network_conf.c
@@ -286,13 +286,13 @@ virNetworkDefParseXML(virConnectPtr conn,
char *netaddr;
xmlNodePtr dhcp;
- if (!inet_aton(def->ipAddress, &inaddress)) {
+ if (inet_pton(AF_INET, def->ipAddress, &inaddress) <= 0) {
virNetworkReportError(conn, VIR_ERR_INTERNAL_ERROR,
_("cannot parse IP address '%s'"),
def->ipAddress);
goto error;
}
- if (!inet_aton(def->netmask, &innetmask)) {
+ if (inet_pton(AF_INET, def->netmask, &innetmask) <= 0) {
virNetworkReportError(conn, VIR_ERR_INTERNAL_ERROR,
_("cannot parse netmask '%s'"),
def->netmask);