[New]: change to syslog to allow specifying prot to send to..
Julian Elischer
julian at elischer.org
Mon Apr 17 07:33:20 UTC 2006
Julian Elischer wrote:
> Does anyone think that this would be useful?
>
> the syslog.conf line would look like:
>
>
> *.* @logger.mynet.com:823
Here's a rewritten patch
(against 4.x but the same should apply to current)
comments?
Index: syslogd.c
===================================================================
RCS file: /usr/local/cvsroot/freebsd/src/usr.sbin/syslogd/syslogd.c,v
retrieving revision 1.59.2.28
diff -u -r1.59.2.28 syslogd.c
--- syslogd.c 29 Feb 2004 20:59:19 -0000 1.59.2.28
+++ syslogd.c 17 Apr 2006 07:30:26 -0000
@@ -1750,13 +1750,32 @@
switch (*p) {
case '@':
- (void)strlcpy(f->f_un.f_forw.f_hname, ++p,
- sizeof(f->f_un.f_forw.f_hname));
+ {
+ char *tp;
+ /*
+ * scan forward to see if there is a port defined.
+ * so we can't use strlcpy..
+ */
+ i = sizeof(f->f_un.f_forw.f_hname);
+ tp = f->f_un.f_forw.f_hname;
+ p++;
+
+ while (*p && (*p != ':') && (i-- > 0)) {
+ *tp++ = *p++;
+ }
+ *tp = '\0';
+ }
+ /* See if we copied a domain and have a port */
+ if (*p == ':')
+ p++;
+ else
+ p = NULL;
+
memset(&hints, 0, sizeof(hints));
hints.ai_family = family;
hints.ai_socktype = SOCK_DGRAM;
- error = getaddrinfo(f->f_un.f_forw.f_hname, "syslog",
&hints,
- &res);
+ error = getaddrinfo(f->f_un.f_forw.f_hname,
+ p ? p: "syslog", &hints, &res);
if (error) {
logerror(gai_strerror(error));
break;
More information about the freebsd-current
mailing list