#include <netinet/udp.h>
#include <netinet/tcp.h>
#include <netinet/if_ether.h>
+#include <syslog.h>
#include <glib.h>
#include <glib-unix.h>
continue;
}
- printf("%s", le->buf);
int res = safe_write(outfd, le->buf, le->len);
-
+
g_free(le);
if (res < 0) {
- // printf("write failed\n"); // fixme??
+ syslog(3, "writing log failed, stopping daemon - %s", strerror (errno));
+ return NULL;
}
}
LEPRINTF("\n");
queue_log_entry(le);
+
+ // also log to syslog
+
+ vsyslog(loglevel, fmt, ap);
}
static int
LEPRINTF("%s", prefix);
}
- if ((indev > 0) && (nlif_index2name(nlifh, indev, devname) != -1)) {
- LEPRINTF("IN=%s ", devname);
+ if (indev > 0) {
+ if (nlif_index2name(nlifh, indev, devname) != -1) {
+ LEPRINTF("IN=%s ", devname);
+ } else {
+ LEPRINTF("IN=%u ", indev);
+ }
}
- if ((outdev > 0) && (nlif_index2name(nlifh, outdev, devname) != -1)) {
- LEPRINTF("OUT=%s ", devname);
+ if (outdev > 0) {
+ if (nlif_index2name(nlifh, outdev, devname) != -1) {
+ LEPRINTF("OUT=%s ", devname);
+ } else {
+ LEPRINTF("OUT=%u ", outdev);
+ }
}
- if ((physindev > 0) && (nlif_index2name(nlifh, physindev, devname) != -1)) {
- LEPRINTF("PHYSIN=%s ", devname);
+ if (physindev > 0) {
+ if (nlif_index2name(nlifh, physindev, devname) != -1) {
+ LEPRINTF("PHYSIN=%s ", devname);
+ } else {
+ LEPRINTF("PHYSIN=%u ", physindev);
+ }
}
- if ((physoutdev > 0) && (nlif_index2name(nlifh, physoutdev, devname) != -1)) {
- LEPRINTF("PHYSOUT=%s ", devname);
+ if (physoutdev > 0) {
+ if (nlif_index2name(nlifh, physoutdev, devname) != -1) {
+ LEPRINTF("PHYSOUT=%s ", devname);
+ } else {
+ LEPRINTF("PHYSOUT=%u ", physoutdev);
+ }
}
int payload_len = nflog_get_payload(ldata, &payload);
GIOCondition condition,
gpointer data)
{
- nlif_catch(nlifh);
- // fixme: report errors
+ static int last_res = 0;
+ int res;
+
+ if ((res = nlif_catch(nlifh)) < 0) {
+ if (last_res == 0) { // only report once
+ log_status_message(3, "nlif_catch failed (res = %d)", res);
+ }
+ last_res = res;
+ } else {
+ last_res = 0;
+ }
+
return TRUE;
}
g_thread_init(NULL);
+ openlog("pvepw-logger", LOG_CONS|LOG_PID, LOG_DAEMON);
+
if ((lockfd = open(LOCKFILE, O_RDWR|O_CREAT|O_APPEND, 0644)) == -1) {
- fprintf(stderr, "unable to create lock '%s': %s", LOCKFILE, strerror (errno));
+ fprintf(stderr, "unable to create lock '%s': %s", LOCKFILE, strerror (errno) );
exit(-1);
}