123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- 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");
|