mirror of
https://github.com/postgres/postgres.git
synced 2025-10-16 17:07:43 +03:00
Support "samehost" and "samenet" specifications in pg_hba.conf,
by enumerating the machine's IP interfaces to look for a match. Stef Walter
This commit is contained in:
27
src/tools/ifaddrs/Makefile
Normal file
27
src/tools/ifaddrs/Makefile
Normal file
@@ -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)
|
12
src/tools/ifaddrs/README
Normal file
12
src/tools/ifaddrs/README
Normal file
@@ -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
|
73
src/tools/ifaddrs/test_ifaddrs.c
Normal file
73
src/tools/ifaddrs/test_ifaddrs.c
Normal file
@@ -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;
|
||||
}
|
@@ -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');
|
||||
|
Reference in New Issue
Block a user