summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Adam <obnox@samba.org>2008-03-14 08:49:34 +0100
committerMichael Adam <obnox@samba.org>2008-03-14 11:32:34 +0100
commit27517ea5bbd0cb7fb0f1a1d88d8282380f14e717 (patch)
tree3fe95d253a87aac0f626ddec1a88ef32e41ed4d9
parent439002b1c65a1ec94d3199cfc5211cedbe84b8ab (diff)
downloadsamba-27517ea5bbd0cb7fb0f1a1d88d8282380f14e717.tar.gz
samba-27517ea5bbd0cb7fb0f1a1d88d8282380f14e717.tar.bz2
samba-27517ea5bbd0cb7fb0f1a1d88d8282380f14e717.zip
libreplace: add an inet_aton() function that calls inet_pton().
inet_aton() is even needed inside libreplace, in the implementation of rep_getaddrinfo(). Michael (cherry picked from commit bcb2f3a880f8da8f9bedb7a8e61d7d7b533f1919) (This used to be commit 83baff78ce752a9129554a456cc24d043d419cd1)
-rw-r--r--source3/lib/replace/README1
-rw-r--r--source3/lib/replace/inet_aton.c29
-rw-r--r--source3/lib/replace/inet_aton.m41
-rw-r--r--source3/lib/replace/libreplace.m41
-rw-r--r--source3/lib/replace/replace.h5
-rw-r--r--source3/lib/replace/system/network.h5
6 files changed, 42 insertions, 0 deletions
diff --git a/source3/lib/replace/README b/source3/lib/replace/README
index 268a1b15cf..aae1ccb56f 100644
--- a/source3/lib/replace/README
+++ b/source3/lib/replace/README
@@ -52,6 +52,7 @@ readline (the library)
inet_ntoa
inet_ntop
inet_pton
+inet_aton
strtoll
strtoull
socketpair
diff --git a/source3/lib/replace/inet_aton.c b/source3/lib/replace/inet_aton.c
new file mode 100644
index 0000000000..3eb58f000c
--- /dev/null
+++ b/source3/lib/replace/inet_aton.c
@@ -0,0 +1,29 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * replacement functions
+ * Copyright (C) Michael Adam <obnox@samba.org> 2008
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "replace.h"
+#include "system/network.h"
+
+/**
+ * We know that we have inet_pton from earlier libreplace checks.
+ */
+int rep_inet_aton(const char *src, struct in_addr *dst)
+{
+ return (inet_pton(AF_INET, src, dst) > 0) ? 1 : 0;
+}
diff --git a/source3/lib/replace/inet_aton.m4 b/source3/lib/replace/inet_aton.m4
new file mode 100644
index 0000000000..853688ef6b
--- /dev/null
+++ b/source3/lib/replace/inet_aton.m4
@@ -0,0 +1 @@
+AC_CHECK_FUNCS(inet_aton,[],[LIBREPLACEOBJ="${LIBREPLACEOBJ} inet_aton.o"])
diff --git a/source3/lib/replace/libreplace.m4 b/source3/lib/replace/libreplace.m4
index e0cc57f4c8..e6e7198abf 100644
--- a/source3/lib/replace/libreplace.m4
+++ b/source3/lib/replace/libreplace.m4
@@ -347,6 +347,7 @@ m4_include(timegm.m4)
m4_include(socket.m4)
m4_include(inet_ntop.m4)
m4_include(inet_pton.m4)
+m4_include(inet_aton.m4)
m4_include(getaddrinfo.m4)
m4_include(repdir.m4)
m4_include(getifaddrs.m4)
diff --git a/source3/lib/replace/replace.h b/source3/lib/replace/replace.h
index 0d16f4ffd0..00c8230e6b 100644
--- a/source3/lib/replace/replace.h
+++ b/source3/lib/replace/replace.h
@@ -340,6 +340,11 @@ ssize_t rep_pwrite(int __fd, const void *__buf, size_t __nbytes, off_t __offset)
/* prototype is in "system/network.h" */
#endif
+#ifndef HAVE_INET_ATON
+#define inet_aton rep_inet_aton
+/* prototype is in "system/network.h" */
+#endif
+
#ifndef HAVE_CONNECT
#define connect rep_connect
/* prototype is in "system/network.h" */
diff --git a/source3/lib/replace/system/network.h b/source3/lib/replace/system/network.h
index 796df2d1da..e9e770205d 100644
--- a/source3/lib/replace/system/network.h
+++ b/source3/lib/replace/system/network.h
@@ -103,6 +103,11 @@ int rep_inet_pton(int af, const char *src, void *dst);
const char *rep_inet_ntop(int af, const void *src, char *dst, socklen_t size);
#endif
+#ifndef HAVE_INET_ATON
+/* define is in "replace.h" */
+int rep_inet_aton(const char *src, struct in_addr *dst);
+#endif
+
#ifndef HAVE_CONNECT
/* define is in "replace.h" */
int rep_connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen);