Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 29 Aug 2001 22:19:23 -0700
From:      Dima Dorfman <dima@unixfreak.org>
To:        audit@freebsd.org
Subject:   syslogd option to bind to specific address
Message-ID:  <20010830051928.775393E2F@bazooka.unixfreak.org>

next in thread | raw e-mail | index | archive | help
Please review the attacehd patch to:

	Introduce a -b option that allows the user to specify which address to
	bind to.  This is useful for hosts running jails that need syslog to
	maintain an open socket to log to a remote host.

Thanks.

Index: syslogd.8
===================================================================
RCS file: /home/ncvs/src/usr.sbin/syslogd/syslogd.8,v
retrieving revision 1.40
diff -u -r1.40 syslogd.8
--- syslogd.8	2001/08/27 11:04:09	1.40
+++ syslogd.8	2001/08/27 11:11:10
@@ -42,6 +42,7 @@
 .Nm
 .Op Fl 46Adknsuv
 .Op Fl a Ar allowed_peer
+.Op Fl b Ar bind_address
 .Op Fl f Ar config_file
 .Op Fl m Ar mark_interval
 .Op Fl p Ar log_socket
@@ -151,6 +152,10 @@
 options are ignored if the
 .Fl s
 option is also specified.
+.It Fl b Ar bind_address
+Specify one specific IP address or hostname to bind to.
+If a hostname is specified,
+the IPv4 or IPv6 address which corresponds to it is used.
 .It Fl d
 Put
 .Nm
Index: syslogd.c
===================================================================
RCS file: /home/ncvs/src/usr.sbin/syslogd/syslogd.c,v
retrieving revision 1.80
diff -u -r1.80 syslogd.c
--- syslogd.c	2001/07/19 22:04:09	1.80
+++ syslogd.c	2001/08/27 11:11:11
@@ -291,7 +291,7 @@
 void	die __P((int));
 void	domark __P((int));
 void	fprintlog __P((struct filed *, int, char *));
-int*	socksetup __P((int));
+int*	socksetup __P((int, const char *));
 void	init __P((int));
 void	logerror __P((const char *));
 void	logmsg __P((int, char *, char *, int));
@@ -319,13 +319,15 @@
 	struct sockaddr_storage frominet;
 	FILE *fp;
 	char *p, *hname, line[MAXLINE + 1];
+	const char *bindhostname;
 	struct timeval tv, *tvp;
 	struct sigaction sact;
 	sigset_t mask;
 	pid_t ppid = 1;
 	socklen_t len;
 
-	while ((ch = getopt(argc, argv, "46Aa:df:kl:m:np:P:suv")) != -1)
+	bindhostname = NULL;
+	while ((ch = getopt(argc, argv, "46Aa:b:df:kl:m:np:P:suv")) != -1)
 		switch (ch) {
 		case '4':
 			family = PF_INET;
@@ -342,6 +344,9 @@
 			if (allowaddr(optarg) == -1)
 				usage();
 			break;
+		case 'b':
+			bindhostname = optarg;
+			break;
 		case 'd':		/* debug */
 			Debug++;
 			break;
@@ -447,7 +452,7 @@
 		}
 	}
 	if (SecureMode <= 1)
-		finet = socksetup(family);
+		finet = socksetup(family, bindhostname);
 
 	if (finet) {
 		if (SecureMode) {
@@ -2235,8 +2240,9 @@
 }
 
 int *
-socksetup(af)
+socksetup(af, bindhostname)
 	int af;
+	const char *bindhostname;
 {
 	struct addrinfo hints, *res, *r;
 	int error, maxs, *s, *socks;
@@ -2245,7 +2251,7 @@
 	hints.ai_flags = AI_PASSIVE;
 	hints.ai_family = af;
 	hints.ai_socktype = SOCK_DGRAM;
-	error = getaddrinfo(NULL, "syslog", &hints, &res);
+	error = getaddrinfo(bindhostname, "syslog", &hints, &res);
 	if (error) {
 		logerror(gai_strerror(error));
 		errno = 0;


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-audit" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20010830051928.775393E2F>