Re: syslogd(8) does not update hostname

2001-01-20 Thread Mark Murray

> On Sat, Jan 20, 2001 at 11:24:16AM +0200, Mark Murray wrote:
> > I don't agree with this change.
> > 
> > hostname != name-that-IP-address-resolves-to.
> 
> Dunno what you are talking about. That has nothing directly to do with
> this. No one is talking about forcing you to change your hostname. The
> patch just allows syslogd(8) to take note if the hostname were to
> change.

D'uh. Bad crack I'm on. :-)

M
-- 
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



Re: syslogd(8) does not update hostname

2001-01-20 Thread Crist J. Clark

On Sat, Jan 20, 2001 at 11:24:16AM +0200, Mark Murray wrote:
> I don't agree with this change.
> 
> hostname != name-that-IP-address-resolves-to.

Dunno what you are talking about. That has nothing directly to do with
this. No one is talking about forcing you to change your hostname. The
patch just allows syslogd(8) to take note if the hostname were to
change.
-- 
Crist J. Clark   [EMAIL PROTECTED]


To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message



Re: syslogd(8) does not update hostname

2001-01-20 Thread Mark Murray

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  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 = "";
>  
>