From 699fe51818da474c0bcabf4f6930e04ecf8a6a1b Mon Sep 17 00:00:00 2001 From: Jacob Champion Date: Wed, 24 Nov 2021 14:46:11 -0800 Subject: [PATCH v7 1/3] Move inet_net_pton() to src/port This will be helpful for IP address verification in libpq. --- src/backend/utils/adt/Makefile | 1 - src/include/port.h | 3 +++ src/include/utils/builtins.h | 4 ---- src/port/Makefile | 1 + src/{backend/utils/adt => port}/inet_net_pton.c | 16 +++++++++++++++- src/tools/msvc/Mkvcbuild.pm | 2 +- 6 files changed, 20 insertions(+), 7 deletions(-) rename src/{backend/utils/adt => port}/inet_net_pton.c (96%) diff --git a/src/backend/utils/adt/Makefile b/src/backend/utils/adt/Makefile index 41b486bcef..d173d52157 100644 --- a/src/backend/utils/adt/Makefile +++ b/src/backend/utils/adt/Makefile @@ -43,7 +43,6 @@ OBJS = \ geo_selfuncs.o \ geo_spgist.o \ inet_cidr_ntop.o \ - inet_net_pton.o \ int.o \ int8.o \ json.o \ diff --git a/src/include/port.h b/src/include/port.h index 3d103a2b31..2852e5b58b 100644 --- a/src/include/port.h +++ b/src/include/port.h @@ -515,6 +515,9 @@ extern int pg_codepage_to_encoding(UINT cp); extern char *pg_inet_net_ntop(int af, const void *src, int bits, char *dst, size_t size); +/* port/inet_net_pton.c */ +extern int pg_inet_net_pton(int af, const char *src, void *dst, size_t size); + /* port/pg_strong_random.c */ extern void pg_strong_random_init(void); extern bool pg_strong_random(void *buf, size_t len); diff --git a/src/include/utils/builtins.h b/src/include/utils/builtins.h index 666e545496..67b9326dc8 100644 --- a/src/include/utils/builtins.h +++ b/src/include/utils/builtins.h @@ -93,10 +93,6 @@ extern int xidLogicalComparator(const void *arg1, const void *arg2); extern char *pg_inet_cidr_ntop(int af, const void *src, int bits, char *dst, size_t size); -/* inet_net_pton.c */ -extern int pg_inet_net_pton(int af, const char *src, - void *dst, size_t size); - /* network.c */ extern double convert_network_to_scalar(Datum value, Oid typid, bool *failure); extern Datum network_scan_first(Datum in); diff --git a/src/port/Makefile b/src/port/Makefile index bfe1feb0d4..c3ae7b3d5c 100644 --- a/src/port/Makefile +++ b/src/port/Makefile @@ -43,6 +43,7 @@ OBJS = \ bsearch_arg.o \ chklocale.o \ inet_net_ntop.o \ + inet_net_pton.o \ noblock.o \ path.o \ pg_bitutils.o \ diff --git a/src/backend/utils/adt/inet_net_pton.c b/src/port/inet_net_pton.c similarity index 96% rename from src/backend/utils/adt/inet_net_pton.c rename to src/port/inet_net_pton.c index d3221a1313..bae50ba67e 100644 --- a/src/backend/utils/adt/inet_net_pton.c +++ b/src/port/inet_net_pton.c @@ -14,14 +14,18 @@ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * - * src/backend/utils/adt/inet_net_pton.c + * src/port/inet_net_pton.c */ #if defined(LIBC_SCCS) && !defined(lint) static const char rcsid[] = "Id: inet_net_pton.c,v 1.4.2.3 2004/03/17 00:40:11 marka Exp $"; #endif +#ifndef FRONTEND #include "postgres.h" +#else +#include "postgres_fe.h" +#endif #include #include @@ -29,9 +33,19 @@ static const char rcsid[] = "Id: inet_net_pton.c,v 1.4.2.3 2004/03/17 00:40:11 m #include #include +#ifndef FRONTEND #include "utils/builtins.h" /* pgrminclude ignore */ /* needed on some * platforms */ #include "utils/inet.h" +#else +/* + * In a frontend build, we can't include inet.h, but we still need to have + * sensible definitions of these two constants. Note that pg_inet_net_ntop() + * assumes that PGSQL_AF_INET is equal to AF_INET. + */ +#define PGSQL_AF_INET (AF_INET + 0) +#define PGSQL_AF_INET6 (AF_INET + 1) +#endif static int inet_net_pton_ipv4(const char *src, u_char *dst); diff --git a/src/tools/msvc/Mkvcbuild.pm b/src/tools/msvc/Mkvcbuild.pm index 441d6ae6bf..667b173ec3 100644 --- a/src/tools/msvc/Mkvcbuild.pm +++ b/src/tools/msvc/Mkvcbuild.pm @@ -100,7 +100,7 @@ sub mkvcbuild our @pgportfiles = qw( chklocale.c explicit_bzero.c fls.c getpeereid.c getrusage.c inet_aton.c - getaddrinfo.c gettimeofday.c inet_net_ntop.c kill.c open.c + getaddrinfo.c gettimeofday.c inet_net_ntop.c inet_net_pton.c kill.c open.c snprintf.c strlcat.c strlcpy.c dirmod.c noblock.c path.c dirent.c dlopen.c getopt.c getopt_long.c link.c pread.c preadv.c pwrite.c pwritev.c pg_bitutils.c -- 2.25.1