--- sysklogd-1.4.1rh/syslogd.c.services 2008-02-28 21:35:10.000000000 +0100 +++ sysklogd-1.4.1rh/syslogd.c 2008-02-29 20:31:55.000000000 +0100 @@ -737,6 +737,7 @@ char LocalHostName[MAXHOSTNAMELEN+1]; /* our hostname */ char *LocalDomain; /* our local domain name */ int InetInuse = 0; /* non-zero if INET sockets are being used */ +int Networking = 1; /* set when we have network support */ int finet= -1; /* Internet datagram socket */ int LogPort; /* port number for INET connections */ int Initialized = 0; /* set when we have initialized ourselves */ @@ -2309,20 +2310,28 @@ #endif struct servent *sp; + /* + * These lines should stay as the first two + */ + dprintf("Called init.\n"); + Initialized = 0; + sp = getservbyname("syslog", "udp"); if (sp == NULL) { errno = 0; - logerror("network logging disabled (syslog/udp service unknown)."); - logerror("see syslogd(8) for details of whether and how to enable it."); - return; + fprintf(stderr, "network logging disabled (syslog/udp service unknown).\n"); + fprintf(stderr, "see syslogd(8) for details of whether and how to enable it.\n"); + /* + * Do not return but continue init(), but disable network support + */ + Networking = 0; + } else { + LogPort = sp->s_port; + Networking = 1; } - LogPort = sp->s_port; - /* * Close all open log files and free log descriptor array. */ - dprintf("Called init.\n"); - Initialized = 0; if ( nlogs > -1 ) { dprintf("Initializing log structures.\n"); @@ -2449,7 +2458,7 @@ #endif #ifdef SYSLOG_INET - if (Forwarding || AcceptRemote) { + if (Networking && (Forwarding || AcceptRemote)) { if (finet < 0) { finet = create_inet_socket(); if (finet >= 0) { @@ -2709,6 +2718,8 @@ { case '@': #ifdef SYSLOG_INET + /* Only if we have functioning Networking support */ + if (!Networking) break; (void) strcpy(f->f_un.f_forw.f_hname, ++p); dprintf("forwarding host: %s\n", p); /*ASP*/ if ( (ina = not_local_address(p)) == NULL ) { @@ -2718,7 +2729,7 @@ } else { f->f_type = F_FORW; } - + memset((char *) &f->f_un.f_forw.f_addr, 0, sizeof(f->f_un.f_forw.f_addr)); f->f_un.f_forw.f_addr.sin_family = AF_INET;