version 1.1.1.1, 2013/07/29 19:37:40
|
version 1.1.1.4, 2021/03/17 00:56:46
|
Line 1
|
Line 1
|
/* dnsmasq is Copyright (c) 2000-2013 Simon Kelley | /* dnsmasq is Copyright (c) 2000-2021 Simon Kelley |
|
|
This program is free software; you can redistribute it and/or modify |
This program is free software; you can redistribute it and/or modify |
it under the terms of the GNU General Public License as published by |
it under the terms of the GNU General Public License as published by |
Line 154 static void log_write(void)
|
Line 154 static void log_write(void)
|
|
|
while (entries) |
while (entries) |
{ |
{ |
/* The data in the payoad is written with a terminating zero character | /* The data in the payload is written with a terminating zero character |
and the length reflects this. For a stream connection we need to |
and the length reflects this. For a stream connection we need to |
send the zero as a record terminator, but this isn't done for a |
send the zero as a record terminator, but this isn't done for a |
datagram connection, so treat the length as one less than reality |
datagram connection, so treat the length as one less than reality |
Line 232 static void log_write(void)
|
Line 232 static void log_write(void)
|
logaddr.sun_len = sizeof(logaddr) - sizeof(logaddr.sun_path) + strlen(_PATH_LOG) + 1; |
logaddr.sun_len = sizeof(logaddr) - sizeof(logaddr.sun_path) + strlen(_PATH_LOG) + 1; |
#endif |
#endif |
logaddr.sun_family = AF_UNIX; |
logaddr.sun_family = AF_UNIX; |
strncpy(logaddr.sun_path, _PATH_LOG, sizeof(logaddr.sun_path)); | safe_strncpy(logaddr.sun_path, _PATH_LOG, sizeof(logaddr.sun_path)); |
|
|
/* Got connection back? try again. */ |
/* Got connection back? try again. */ |
if (connect(log_fd, (struct sockaddr *)&logaddr, sizeof(logaddr)) != -1) |
if (connect(log_fd, (struct sockaddr *)&logaddr, sizeof(logaddr)) != -1) |
Line 288 void my_syslog(int priority, const char *format, ...)
|
Line 288 void my_syslog(int priority, const char *format, ...)
|
func = "-tftp"; |
func = "-tftp"; |
else if ((LOG_FACMASK & priority) == MS_DHCP) |
else if ((LOG_FACMASK & priority) == MS_DHCP) |
func = "-dhcp"; |
func = "-dhcp"; |
| else if ((LOG_FACMASK & priority) == MS_SCRIPT) |
| func = "-script"; |
| |
#ifdef LOG_PRI |
#ifdef LOG_PRI |
priority = LOG_PRI(priority); |
priority = LOG_PRI(priority); |
#else |
#else |
Line 421 void my_syslog(int priority, const char *format, ...)
|
Line 423 void my_syslog(int priority, const char *format, ...)
|
} |
} |
} |
} |
|
|
void set_log_writer(fd_set *set, int *maxfdp) | void set_log_writer(void) |
{ |
{ |
if (entries && log_fd != -1 && connection_good) |
if (entries && log_fd != -1 && connection_good) |
{ | poll_listen(log_fd, POLLOUT); |
FD_SET(log_fd, set); | |
bump_maxfd(log_fd, maxfdp); | |
} | |
} |
} |
|
|
void check_log_writer(fd_set *set) | void check_log_writer(int force) |
{ |
{ |
if (log_fd != -1 && (!set || FD_ISSET(log_fd, set))) | if (log_fd != -1 && (force || poll_check(log_fd, POLLOUT))) |
log_write(); |
log_write(); |
} |
} |
|
|
void flush_log(void) |
void flush_log(void) |
{ |
{ |
/* write until queue empty, but don't loop forever if there's |
/* write until queue empty, but don't loop forever if there's |
no connection to the syslog in existance */ | no connection to the syslog in existence */ |
while (log_fd != -1) |
while (log_fd != -1) |
{ |
{ |
struct timespec waiter; |
struct timespec waiter; |