Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 20 Jan 2001 11:24:16 +0200
From:      Mark Murray <mark@grondar.za>
To:        cjclark@alum.mit.edu
Cc:        FreeBSD-gnats-submit@FreeBSD.ORG, current@FreeBSD.ORG
Subject:   Re: syslogd(8) does not update hostname 
Message-ID:  <200101200924.f0K9O8I52405@gratis.grondar.za>
In-Reply-To: <200101190330.f0J3UPa75677@rfx-216-196-73-168.users.reflexcom.com> ; from cjclark@reflexcom.com  "Thu, 18 Jan 2001 19:30:25 PST."
References:  <200101190330.f0J3UPa75677@rfx-216-196-73-168.users.reflexcom.com> 

next in thread | previous in thread | raw e-mail | index | archive | help
I don't agree with this change.

hostname != name-that-IP-address-resolves-to.

I can see how loggin the IP address (or some manifestation thereof) to
a central logger, but this is too strong.

Example: My laptop has a hostname set for my home network, and I connect
it to my work network and DHCP an IP address there. I would be HOPPING
mad if that caused my hostname and VPN to break.

M

> >Submitter-Id:   current-users
> >Originator:     Crist J. Clark
> >Organization:   
> >Confidential:   no
> >Synopsis:       syslogd(8) does not update hostname
> >Severity:       non-critical
> >Priority:       medium
> >Category:       bin
> >Release:        FreeBSD 5.0-CURRENT i386
> >Class:          sw-bug
> >Environment: 
> 
> 	All standard FreeBSD distributions. The code discussed is from
> 5.0-CURRENT, but should trivially merge back to -STABLE.
> 
> >Description: 
> 
> 	Many tools and progams within FreeBSD date back to a time when
> it was expected that a machines IP and hostname seldom, if ever,
> changed. Even when a IP and hostname were received at boot, it rarely
> changed until shutdown. With many users using protocols like DHCP
> where IP and hostname change with time, many tools do not deal well
> with this behavior.
> 
> 	One of these tools is syslogd(8). syslogd(8) is typically
> started at boot time and runs until shutdown. However, syslogd(8)
> loads the hostname at startup and syslogd(8)'s idea of the hostname
> can never change while it is running.
> 
> 	One might expect that a SIGHUP would cause syslogd(8) to load
> the new hostname since a SIGHUP can cause syslogd(8) to re-read its
> configuration file and re-open the log files, but it does not.
> 
> 	The fact that the hostname does not change can cause confusion
> in the log files. It could be especially troublesome when a machine is
> logging to a central loghost. At any given time, the names in the log
> files may not have any correspondence to the names the hosts currently
> have. There are even issues on a host that gets its IP and hostname
> via DHCP at boot and the name never changes. syslogd(8) is started
> before any network services are initialized in /etc/rc.
> 
> 	I propose that syslogd(8) should reload the hostname with a
> SIGHUP. I cannot think of any reason that one should not update the
> hostname, but as I pointed out, there are reasons why one would want
> that behavior.
> 
> >How-To-Repeat: 
> 
> 	# hostname -s
> 	bubbles
> 	# hostname bubbles-test.domain.org
> 	# kill -HUP `cat /var/run/syslog.pid`
> 	# logger -p user.notice "hostname test"
> 	# tail -4 /var/log/messages
> 	Jan 17 21:45:00 bubbles /boot/kernel/kernel: acd0: CDROM <CD-532E-A> at ata0-slave using BIOSPIO
> 	Jan 17 21:45:00 bubbles /boot/kernel/kernel: Mounting root from ufs:/dev/ad0s1a
> 	Jan 18 00:41:14 bubbles su: cjc to root on /dev/ttyp0
> 	Jan 18 00:58:34 bubbles cjc: hostname test
> 
> >Fix: 
> 
> 	I do not see any reason we cannot move the code that gets the
> hostname from the main() function into init(). init() is called when
> to "reload" settings. The hostname is never used in main() before
> init() is called. The patch is against -CURRENT and my box has not
> exploded yet.
> 
> 	Here is what the above test looks like with the change in
> place.
> 
> 	# hostname -s
> 	bubbles
> 	# hostname bubbles-test.cjclark.org
> 	# kill -HUP `cat /var/run/syslog.pid `
> 	# logger -p user.notice "syslogd hostname test"
> 	# hostname bubbles.cjclark.org
> 	# kill -HUP `cat /var/run/syslog.pid `
> 	# logger -p user.notice "syslogd hostname test"
> 	# tail -4 /var/log/messages
> 	Jan 18 13:36:58 bubbles su: BAD SU cjc to root on /dev/ttyp0
> 	Jan 18 13:37:03 bubbles su: cjc to root on /dev/ttyp0
> 	Jan 18 13:38:40 bubbles-test cjc: syslogd hostname test
> 	Jan 18 13:39:11 bubbles cjc: syslogd hostname test
> 
> 
> --- syslogd.c   2001/01/18 08:06:34
> +++ syslogd.c   2001/01/18 08:09:23
> @@ -395,12 +395,6 @@
>  
>         consfile.f_type = F_CONSOLE;
>         (void)strcpy(consfile.f_un.f_fname, ctty + sizeof _PATH_DEV - 1);
> -       (void)gethostname(LocalHostName, sizeof(LocalHostName));
> -       if ((p = strchr(LocalHostName, '.')) != NULL) {
> -               *p++ = '\0';
> -               LocalDomain = p;
> -       } else
> -               LocalDomain = "";
>         (void)strcpy(bootfile, getbootfile());
>         (void)signal(SIGTERM, die);
>         (void)signal(SIGINT, Debug ? die : SIG_IGN);
> @@ -1342,6 +1336,16 @@
>         char host[MAXHOSTNAMELEN+1];
>  
>         dprintf("init\n");
> +
> +       /*
> +        * Load hostname (may have changed)
> +        */
> +       (void)gethostname(LocalHostName, sizeof(LocalHostName));
> +       if ((p = strchr(LocalHostName, '.')) != NULL) {
> +               *p++ = '\0';
> +               LocalDomain = p;
> +       } else
> +               LocalDomain = "";
>  
>         /*
>          *  Close all open log files.
> 
> 
> To Unsubscribe: send mail to majordomo@FreeBSD.org
> with "unsubscribe freebsd-current" in the body of the message
> 
-- 
Mark Murray
Warning: this .sig is umop ap!sdn


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




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