LOG_FORMATS, /* number of supported log formats, must always be last */
};
+/* log target types */
+enum log_tgt {
+ LOG_TARGET_DGRAM = 0, // datagram address (udp, unix socket)
+ LOG_TARGET_FD, // file descriptor
+};
+
/* lists of fields that can be logged */
enum {
struct list list;
struct sockaddr_storage addr;
struct smp_info lb;
+ enum log_tgt type;
int format;
int facility;
int level;
}
/* now, back to the address */
+ logsrv->type = LOG_TARGET_DGRAM;
+ if (strncmp(args[1], "fd@", 3) == 0)
+ logsrv->type = LOG_TARGET_FD;
+
sk = str2sa_range(args[1], NULL, &port1, &port2, err, NULL, NULL, 1);
if (!sk)
goto error;
dataptr = message;
- if (logsrv->addr.ss_family == AF_UNSPEC) {
+ if (logsrv->type == LOG_TARGET_FD) {
/* the socket's address is a file descriptor */
plogfd = (int *)&((struct sockaddr_in *)&logsrv->addr)->sin_addr.s_addr;
}