[PATCH] Add syslogd option that suppresses hostname logging

Ryan Stone rysto32 at gmail.com
Fri Apr 8 15:15:24 UTC 2011


I've written a short patch for syslogd that adds a -H option.  Setting
that option will prevent syslogd from logging the hostname with every
log messages.   If there are no objections I'm going to commit this in
the next couple of days.

Index: syslogd.c
===================================================================
--- syslogd.c   (revision 220452)
+++ syslogd.c   (working copy)
@@ -301,6 +301,7 @@
                                /* 0=no, 1=numeric, 2=names */
 static int     KeepKernFac;    /* Keep remotely logged kernel facility */
 static int     needdofsync = 0; /* Are any file(s) waiting to be fsynced? */
+static int     LogHost = 1;
 static struct pidfh *pfh;

 volatile sig_atomic_t MarkSet, WantDie;
@@ -358,7 +359,7 @@
                dprintf("madvise() failed: %s\n", strerror(errno));

        bindhostname = NULL;
-       while ((ch = getopt(argc, argv, "468Aa:b:cCdf:kl:m:nop:P:sS:Tuv"))
+       while ((ch = getopt(argc, argv, "468Aa:b:cCdf:Hkl:m:nop:P:sS:Tuv"))
            != -1)
                switch (ch) {
                case '4':
@@ -394,6 +395,9 @@
                case 'f':               /* configuration file */
                        ConfFile = optarg;
                        break;
+               case 'H':               /* don't log the origin hostname */
+                       LogHost = 0;
+                       break;
                case 'k':               /* keep remote kern fac */
                        KeepKernFac = 1;
                        break;
@@ -1150,12 +1154,20 @@
        }
        v++;

-       v->iov_base = f->f_prevhost;
-       v->iov_len = strlen(v->iov_base);
+       if (LogHost) {
+               v->iov_base = f->f_prevhost;
+               v->iov_len = strlen(v->iov_base);
+               v++;
+               v->iov_base = space;
+               v->iov_len = 1;
+       } else {
+               v->iov_base = nul;
+               v->iov_len = 0;
+               v++;
+               v->iov_base = nul;
+               v->iov_len = 0;
+       }
        v++;
-       v->iov_base = space;
-       v->iov_len = 1;
-       v++;

        if (msg) {
                wmsg = strdup(msg); /* XXX iov_base needs a `const' sibling. */


More information about the freebsd-current mailing list