Remove highly suspicious redefinition of sockaddr structure -- there

seems no point using anything but the platform's native definition,
and if we can't get that from the system headers we're hosed anyhow.
This commit is contained in:
Martin Pool
2001-11-26 00:41:11 +00:00
parent 15c1707887
commit 1f0fa9318a
2 changed files with 22 additions and 20 deletions

View File

@@ -92,8 +92,8 @@ fi
AC_DEFINE(ss_family, __ss_family, [KAME hack]) dnl AC_DEFINE(ss_family, __ss_family, [KAME hack])
AC_DEFINE(ss_len, __ss_len, [KAME hack]) dnl AC_DEFINE(ss_len, __ss_len, [KAME hack])
CFLAGS="$CFLAGS" CFLAGS="$CFLAGS"
AC_ARG_ENABLE(ipv6, AC_ARG_ENABLE(ipv6,

View File

@@ -327,7 +327,7 @@ void start_accept_loop(int port, int (*fn)(int ))
while (1) { while (1) {
fd_set fds; fd_set fds;
int fd; int fd;
struct sockaddr_storage addr; struct sockaddr addr;
int in_addrlen = sizeof(addr); int in_addrlen = sizeof(addr);
/* close log file before the potentially very long select so /* close log file before the potentially very long select so
@@ -505,12 +505,12 @@ void become_daemon(void)
} }
} }
/******************************************************************* /**
return the IP addr of the client as a string * Return the IP addr of the client as a string
******************************************************************/ **/
char *client_addr(int fd) char *client_addr(int fd)
{ {
struct sockaddr_storage ss; struct sockaddr ss;
int length = sizeof(ss); int length = sizeof(ss);
static char addr_buf[100]; static char addr_buf[100];
static int initialised; static int initialised;
@@ -519,22 +519,22 @@ char *client_addr(int fd)
initialised = 1; initialised = 1;
if (getpeername(fd, (struct sockaddr *)&ss, &length)) { if (getpeername(fd, &ss, &length)) {
exit_cleanup(RERR_SOCKETIO); exit_cleanup(RERR_SOCKETIO);
} }
getnameinfo((struct sockaddr *)&ss, length, getnameinfo(&ss, length,
addr_buf, sizeof(addr_buf), NULL, 0, NI_NUMERICHOST); addr_buf, sizeof(addr_buf), NULL, 0, NI_NUMERICHOST);
return addr_buf; return addr_buf;
} }
/******************************************************************* /**
return the DNS name of the client * Return the DNS name of the client
******************************************************************/ **/
char *client_name(int fd) char *client_name(int fd)
{ {
struct sockaddr_storage ss; struct sockaddr ss;
int length = sizeof(ss); int length = sizeof(ss);
static char name_buf[100]; static char name_buf[100];
static char port_buf[100]; static char port_buf[100];
@@ -598,7 +598,7 @@ char *client_name(int fd)
/* XXX sin6_flowinfo and other fields */ /* XXX sin6_flowinfo and other fields */
for (res = res0; res; res = res->ai_next) { for (res = res0; res; res = res->ai_next) {
if (res->ai_family != ss.ss_family) if (res->ai_family != ss.sa_family)
continue; continue;
if (res->ai_addrlen != length) if (res->ai_addrlen != length)
continue; continue;
@@ -619,12 +619,14 @@ char *client_name(int fd)
} }
/** /**
Convert a string to an IP address. The string can be a name or * Convert a string to an IP address. The string can be a name or
dotted decimal number. * dotted decimal number.
*
Returns a pointer to a static in_addr struct -- if you call this * Returns a pointer to a static in_addr struct -- if you call this
more than once then you should copy it. * more than once then you should copy it.
*/ *
* TODO: Use getaddrinfo() instead, or make this function call getnameinfo
**/
struct in_addr *ip_address(const char *str) struct in_addr *ip_address(const char *str)
{ {
static struct in_addr ret; static struct in_addr ret;