Index: filed.c ================================================================== --- filed.c +++ filed.c @@ -207,10 +207,11 @@ /* Log a message */ #ifdef FILED_DONT_LOG # define filed_logging_thread_init(x) 0 # define filed_log_msg_debug(x, ...) /**/ # define filed_log_msg(x, ...) /**/ +# define filed_log_ip(x, ...) "" #else #ifdef FILED_DEBUG # define filed_log_msg_debug(x, ...) { fprintf(stderr, x, __VA_ARGS__); fprintf(stderr, "\n"); fflush(stderr); } #else # define filed_log_msg_debug(x, ...) /**/ @@ -297,10 +298,35 @@ pthread_cond_signal(&filed_log_msg_list_ready); return; } + + +static const char *filed_log_ip(struct sockaddr *addr, char *buffer, size_t bufferlen) { + struct sockaddr_in *addr_v4; + struct sockaddr_in6 *addr_v6; + const char *retval = NULL; + + addr_v6 = (struct sockaddr_in6 *) addr; + + switch (addr_v6->sin6_family) { + case AF_INET: + addr_v4 = (struct sockaddr_in *) addr; + retval = inet_ntop(AF_INET, &addr_v4->sin_addr, buffer, bufferlen); + break; + case AF_INET6: + retval = inet_ntop(AF_INET6, &addr_v6->sin6_addr, buffer, bufferlen); + break; + } + + if (retval == NULL) { + retval = ""; + } + + return(retval); +} #endif /* Format time per RFC2616 */ static char *filed_format_time(char *buffer, size_t buffer_len, const time_t timeinfo) { struct tm timeinfo_tm, *timeinfo_tm_p; @@ -817,11 +843,11 @@ continue; } /* Log the new connection */ filed_log_msg("NEW_CONNECTION SRC_ADDR=%s SRC_PORT=%lu FD=%i", - inet_ntop(AF_INET6, &addr.sin6_addr, logbuf_ip, sizeof(logbuf_ip)) ? logbuf_ip : "", + filed_log_ip((struct sockaddr *) &addr, logbuf_ip, sizeof(logbuf_ip)), (unsigned long) addr.sin6_port, fd ); /* Reset failure count*/