diff options
| author | Tom Lane | 2009-10-01 01:58:58 +0000 |
|---|---|---|
| committer | Tom Lane | 2009-10-01 01:58:58 +0000 |
| commit | f3aec2c7f51904e7920cd27115fdab831795d96b (patch) | |
| tree | 6c81410fb6470f1ab8b7a4e5b74ec3ebbab775f6 /src/tools | |
| parent | f7082f269eb2ee5347ddd411602a870866d783d2 (diff) | |
Support "samehost" and "samenet" specifications in pg_hba.conf,
by enumerating the machine's IP interfaces to look for a match.
Stef Walter
Diffstat (limited to 'src/tools')
| -rw-r--r-- | src/tools/ifaddrs/Makefile | 27 | ||||
| -rw-r--r-- | src/tools/ifaddrs/README | 12 | ||||
| -rw-r--r-- | src/tools/ifaddrs/test_ifaddrs.c | 73 | ||||
| -rw-r--r-- | src/tools/msvc/Mkvcbuild.pm | 3 |
4 files changed, 114 insertions, 1 deletions
diff --git a/src/tools/ifaddrs/Makefile b/src/tools/ifaddrs/Makefile new file mode 100644 index 0000000000..6f5df48556 --- /dev/null +++ b/src/tools/ifaddrs/Makefile @@ -0,0 +1,27 @@ +#------------------------------------------------------------------------- +# +# Makefile for src/tools/ifaddrs +# +# Copyright (c) 2003-2009, PostgreSQL Global Development Group +# +# $PostgreSQL: pgsql/src/tools/ifaddrs/Makefile,v 1.1 2009/10/01 01:58:58 tgl Exp $ +# +#------------------------------------------------------------------------- + +subdir = src/tools/ifaddrs +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +libpq_backend_dir = $(top_builddir)/src/backend/libpq + +override CPPFLAGS := -I$(libpq_backend_dir) $(CPPFLAGS) + +OBJS = test_ifaddrs.o + +all: test_ifaddrs + +test_ifaddrs: test_ifaddrs.o $(libpq_backend_dir)/ip.o + $(CC) $(CFLAGS) test_ifaddrs.o $(libpq_backend_dir)/ip.o $(LDFLAGS) $(LIBS) -o $@$(X) + +clean distclean maintainer-clean: + rm -f test_ifaddrs$(X) $(OBJS) diff --git a/src/tools/ifaddrs/README b/src/tools/ifaddrs/README new file mode 100644 index 0000000000..9b0bd58517 --- /dev/null +++ b/src/tools/ifaddrs/README @@ -0,0 +1,12 @@ +$PostgreSQL: pgsql/src/tools/ifaddrs/README,v 1.1 2009/10/01 01:58:58 tgl Exp $ + +test_ifaddrs +============ + +This program prints the addresses and netmasks of all the IPv4 and IPv6 +interfaces on the local machine. It is useful for testing that this +functionality works on various platforms. If "samehost" and "samenet" +in pg_hba.conf don't seem to work right, run this program to see what +is happening. + +Usage: test_ifaddrs diff --git a/src/tools/ifaddrs/test_ifaddrs.c b/src/tools/ifaddrs/test_ifaddrs.c new file mode 100644 index 0000000000..78013106cc --- /dev/null +++ b/src/tools/ifaddrs/test_ifaddrs.c @@ -0,0 +1,73 @@ +/* + * $PostgreSQL: pgsql/src/tools/ifaddrs/test_ifaddrs.c,v 1.1 2009/10/01 01:58:58 tgl Exp $ + * + * + * test_ifaddrs.c + * test pg_foreach_ifaddr() + */ + +#include "postgres.h" + +#include <arpa/inet.h> +#include <netinet/in.h> +#include <sys/socket.h> + +#include "libpq/ip.h" + + +static void +print_addr(struct sockaddr *addr) +{ + char buffer[256]; + int ret, len; + + switch (addr->sa_family) + { + case AF_INET: + len = sizeof(struct sockaddr_in); + break; +#ifdef HAVE_IPV6 + case AF_INET6: + len = sizeof(struct sockaddr_in6); + break; +#endif + default: + len = sizeof(struct sockaddr_storage); + break; + } + + ret = getnameinfo(addr, len, buffer, sizeof(buffer), NULL, 0, + NI_NUMERICHOST); + if (ret != 0) + printf("[unknown: family %d]", addr->sa_family); + else + printf("%s", buffer); +} + +static void +callback(struct sockaddr *addr, struct sockaddr *mask, void *unused) +{ + printf("addr: "); + print_addr(addr); + printf(" mask: "); + print_addr(mask); + printf("\n"); +} + +int +main(int argc, char *argv[]) +{ +#ifdef WIN32 + WSADATA wsaData; + + if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) + { + fprintf(stderr, "WSAStartup failed\n"); + return 1; + } +#endif + + if (pg_foreach_ifaddr(callback, NULL) < 0) + fprintf(stderr, "pg_foreach_ifaddr failed: %s\n", strerror(errno)); + return 0; +} diff --git a/src/tools/msvc/Mkvcbuild.pm b/src/tools/msvc/Mkvcbuild.pm index 6359f1861e..7579bf5e7d 100644 --- a/src/tools/msvc/Mkvcbuild.pm +++ b/src/tools/msvc/Mkvcbuild.pm @@ -3,7 +3,7 @@ package Mkvcbuild; # # Package that generates build files for msvc build # -# $PostgreSQL: pgsql/src/tools/msvc/Mkvcbuild.pm,v 1.42 2009/08/07 20:50:22 petere Exp $ +# $PostgreSQL: pgsql/src/tools/msvc/Mkvcbuild.pm,v 1.43 2009/10/01 01:58:58 tgl Exp $ # use Carp; use Win32; @@ -147,6 +147,7 @@ sub mkvcbuild $libpq->AddIncludeDir('src\port'); $libpq->AddLibrary('wsock32.lib'); $libpq->AddLibrary('secur32.lib'); + $libpq->AddLibrary('ws2_32.lib'); $libpq->AddLibrary('wldap32.lib') if ($solution->{options}->{ldap}); $libpq->UseDef('src\interfaces\libpq\libpqdll.def'); $libpq->ReplaceFile('src\interfaces\libpq\libpqrc.c','src\interfaces\libpq\libpq.rc'); |
