mirror of
https://gitlab.alpinelinux.org/alpine/aports.git
synced 2026-02-26 10:12:13 +01:00
104 lines
3.2 KiB
Diff
104 lines
3.2 KiB
Diff
http://cvsweb.openwall.com/cgi/cvsweb.cgi/~checkout~/Owl/packages/sysklogd/sysklogd-1.4.2-caen-owl-syslogd-bind.diff?rev=1.1;content-type=text%2Fplain
|
|
diff -upk.orig sysklogd-1.4.2.orig/sysklogd.8 sysklogd-1.4.2/sysklogd.8
|
|
--- sysklogd-1.4.2.orig/sysklogd.8 2004-07-09 17:33:32 +0000
|
|
+++ sysklogd-1.4.2/sysklogd.8 2005-08-18 14:40:25 +0000
|
|
@@ -15,6 +15,9 @@ sysklogd \- Linux system logging utiliti
|
|
.I config file
|
|
]
|
|
.RB [ " \-h " ]
|
|
+.RB [ " \-i "
|
|
+.I IP address
|
|
+]
|
|
.RB [ " \-l "
|
|
.I hostlist
|
|
]
|
|
@@ -104,6 +107,13 @@ Specifying this switch on the command li
|
|
This can cause syslog loops that fill up hard disks quite fast and
|
|
thus needs to be used with caution.
|
|
.TP
|
|
+.BI "\-i " "IP address"
|
|
+If
|
|
+.B syslogd
|
|
+is configured to accept log input from a UDP port, specify an IP address
|
|
+to bind to, rather than the default of INADDR_ANY. The address must be in
|
|
+dotted quad notation, DNS host names are not allowed.
|
|
+.TP
|
|
.BI "\-l " "hostlist"
|
|
Specify a hostname that should be logged only with its simple hostname
|
|
and not the fqdn. Multiple hosts may be specified using the colon
|
|
diff -upk.orig sysklogd-1.4.2.orig/syslogd.c sysklogd-1.4.2/syslogd.c
|
|
--- sysklogd-1.4.2.orig/syslogd.c 2005-08-18 14:33:22 +0000
|
|
+++ sysklogd-1.4.2/syslogd.c 2005-08-18 14:40:25 +0000
|
|
@@ -774,6 +774,8 @@ char **LocalHosts = NULL; /* these hosts
|
|
int NoHops = 1; /* Can we bounce syslog messages through an
|
|
intermediate host. */
|
|
|
|
+char *bind_addr = NULL; /* bind UDP port to this interface only */
|
|
+
|
|
extern int errno;
|
|
|
|
/* Function prototypes. */
|
|
@@ -878,7 +880,7 @@ int main(argc, argv)
|
|
funix[i] = -1;
|
|
}
|
|
|
|
- while ((ch = getopt(argc, argv, "a:dhf:l:m:np:rs:v")) != EOF)
|
|
+ while ((ch = getopt(argc, argv, "a:dhf:i:l:m:np:rs:v")) != EOF)
|
|
switch((char)ch) {
|
|
case 'a':
|
|
if (nfunix < MAXFUNIX)
|
|
@@ -895,9 +897,17 @@ int main(argc, argv)
|
|
case 'h':
|
|
NoHops = 0;
|
|
break;
|
|
+ case 'i':
|
|
+ if (bind_addr) {
|
|
+ fprintf(stderr, "Only one -i argument allowed, "
|
|
+ "the first one is taken.\n");
|
|
+ break;
|
|
+ }
|
|
+ bind_addr = optarg;
|
|
+ break;
|
|
case 'l':
|
|
if (LocalHosts) {
|
|
- fprintf (stderr, "Only one -l argument allowed," \
|
|
+ fprintf(stderr, "Only one -l argument allowed, "
|
|
"the first one is taken.\n");
|
|
break;
|
|
}
|
|
@@ -1244,7 +1254,7 @@ int main(argc, argv)
|
|
int usage()
|
|
{
|
|
fprintf(stderr, "usage: syslogd [-drvh] [-l hostlist] [-m markinterval] [-n] [-p path]\n" \
|
|
- " [-s domainlist] [-f conffile]\n");
|
|
+ " [-s domainlist] [-f conffile] [-i IP address]\n");
|
|
exit(1);
|
|
}
|
|
|
|
@@ -1286,15 +1296,22 @@ static int create_inet_socket()
|
|
int fd, on = 1;
|
|
struct sockaddr_in sin;
|
|
|
|
+ memset(&sin, 0, sizeof(sin));
|
|
+ sin.sin_family = AF_INET;
|
|
+ sin.sin_port = LogPort;
|
|
+ if (bind_addr) {
|
|
+ if (!inet_aton(bind_addr, &sin.sin_addr)) {
|
|
+ logerror("syslog: not a valid IP address to bind to.");
|
|
+ return -1;
|
|
+ }
|
|
+ }
|
|
+
|
|
fd = socket(AF_INET, SOCK_DGRAM, 0);
|
|
if (fd < 0) {
|
|
logerror("syslog: Unknown protocol, suspending inet service.");
|
|
return fd;
|
|
}
|
|
|
|
- memset(&sin, 0, sizeof(sin));
|
|
- sin.sin_family = AF_INET;
|
|
- sin.sin_port = LogPort;
|
|
if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, \
|
|
(char *) &on, sizeof(on)) < 0 ) {
|
|
logerror("setsockopt(REUSEADDR), suspending inet");
|