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 [EMAIL PROTECTED]
> with "unsubscribe freebsd-current" in the body of the message
>
--
Mark Murray
Warning: this .sig is umop ap!sdn
To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message