Missing dependency spotted by Robert P Day.
[oweals/busybox.git] / networking / inetd.c
index f9f380fa19937dc9f7ddfff0433b90fc4f02bc88..cc700832cbc165dac3e465eba166d55c2444ca0b 100644 (file)
 #include "busybox.h"
 
 //#define CONFIG_FEATURE_INETD_RPC
-//#define CONFIG_FEATURE_INETD_SUPPORT_BILTIN_ECHO
-//#define CONFIG_FEATURE_INETD_SUPPORT_BILTIN_DISCARD
-//#define CONFIG_FEATURE_INETD_SUPPORT_BILTIN_TIME
-//#define CONFIG_FEATURE_INETD_SUPPORT_BILTIN_DAYTIME
-//#define CONFIG_FEATURE_INETD_SUPPORT_BILTIN_CHARGEN
+//#define CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO
+//#define CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD
+//#define CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME
+//#define CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME
+//#define CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN
 //#define CONFIG_FEATURE_IPV6
 
 #ifdef CONFIG_FEATURE_INETD_RPC
 #include <rpc/rpc.h>
 #include <rpc/pmap_clnt.h>
-#include <rpcsvc/nfs_prot.h>
 #endif
 
 #define _PATH_INETDCONF "/etc/inetd.conf"
 #define CNT_INTVL       60              /* servers in CNT_INTVL sec. */
 #define RETRYTIME       (60*10)         /* retry after bind or server fail */
 
-#define SIGBLOCK        (sigmask(SIGCHLD)|sigmask(SIGHUP)|sigmask(SIGALRM))
-
 #ifndef RLIMIT_NOFILE
 #define RLIMIT_NOFILE   RLIMIT_OFILE
 #endif
@@ -194,17 +191,17 @@ static struct rlimit rlim_ofile;
 
 
 /* Check unsupporting builtin */
-#if defined CONFIG_FEATURE_INETD_SUPPORT_BILTIN_ECHO || \
-       defined CONFIG_FEATURE_INETD_SUPPORT_BILTIN_DISCARD || \
-       defined CONFIG_FEATURE_INETD_SUPPORT_BILTIN_TIME || \
-       defined CONFIG_FEATURE_INETD_SUPPORT_BILTIN_DAYTIME || \
-       defined CONFIG_FEATURE_INETD_SUPPORT_BILTIN_CHARGEN
+#if defined CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO || \
+       defined CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD || \
+       defined CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME || \
+       defined CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME || \
+       defined CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN
 # define INETD_FEATURE_ENABLED
 #endif
 
-#if defined CONFIG_FEATURE_INETD_SUPPORT_BILTIN_ECHO || \
-       defined CONFIG_FEATURE_INETD_SUPPORT_BILTIN_DISCARD || \
-       defined CONFIG_FEATURE_INETD_SUPPORT_BILTIN_CHARGEN
+#if defined CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO || \
+       defined CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD || \
+       defined CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN
 # define INETD_SETPROCTITLE
 #endif
 
@@ -228,7 +225,7 @@ typedef struct servtab
   char *se_user;                        /* user name to run as */
   char *se_group;                       /* group name to run as */
 #ifdef INETD_FEATURE_ENABLED
-  const struct biltin *se_bi;                 /* if built-in, description */
+  const struct builtin *se_bi;                 /* if built-in, description */
 #endif
   char *se_server;                      /* server program */
 #define MAXARGV 20
@@ -257,7 +254,7 @@ typedef struct servtab
 static servtab_t *servtab;
 
 #ifdef INETD_FEATURE_ENABLED
-struct biltin
+struct builtin
 {
   const char *bi_service;               /* internally provided service name */
   int bi_socktype;                      /* type of socket supported */
@@ -267,53 +264,53 @@ struct biltin
 };
 
        /* Echo received data */
-#ifdef CONFIG_FEATURE_INETD_SUPPORT_BILTIN_ECHO
+#ifdef CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO
 static void echo_stream (int, servtab_t *);
 static void echo_dg (int, servtab_t *);
 #endif
        /* Internet /dev/null */
-#ifdef CONFIG_FEATURE_INETD_SUPPORT_BILTIN_DISCARD
+#ifdef CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD
 static void discard_stream (int, servtab_t *);
 static void discard_dg (int, servtab_t *);
 #endif
        /* Return 32 bit time since 1900 */
-#ifdef CONFIG_FEATURE_INETD_SUPPORT_BILTIN_TIME
+#ifdef CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME
 static void machtime_stream (int, servtab_t *);
 static void machtime_dg (int, servtab_t *);
 #endif
        /* Return human-readable time */
-#ifdef CONFIG_FEATURE_INETD_SUPPORT_BILTIN_DAYTIME
+#ifdef CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME
 static void daytime_stream (int, servtab_t *);
 static void daytime_dg (int, servtab_t *);
 #endif
        /* Familiar character generator */
-#ifdef CONFIG_FEATURE_INETD_SUPPORT_BILTIN_CHARGEN
+#ifdef CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN
 static void chargen_stream (int, servtab_t *);
 static void chargen_dg (int, servtab_t *);
 #endif
 
-static const struct biltin biltins[] = {
-#ifdef CONFIG_FEATURE_INETD_SUPPORT_BILTIN_ECHO
+static const struct builtin builtins[] = {
+#ifdef CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO
   /* Echo received data */
   {"echo", SOCK_STREAM, 1, 0, echo_stream,},
   {"echo", SOCK_DGRAM, 0, 0, echo_dg,},
 #endif
-#ifdef CONFIG_FEATURE_INETD_SUPPORT_BILTIN_DISCARD
+#ifdef CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD
   /* Internet /dev/null */
   {"discard", SOCK_STREAM, 1, 0, discard_stream,},
   {"discard", SOCK_DGRAM, 0, 0, discard_dg,},
 #endif
-#ifdef CONFIG_FEATURE_INETD_SUPPORT_BILTIN_TIME
+#ifdef CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME
   /* Return 32 bit time since 1900 */
   {"time", SOCK_STREAM, 0, 0, machtime_stream,},
   {"time", SOCK_DGRAM, 0, 0, machtime_dg,},
 #endif
-#ifdef CONFIG_FEATURE_INETD_SUPPORT_BILTIN_DAYTIME
+#ifdef CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME
   /* Return human-readable time */
   {"daytime", SOCK_STREAM, 0, 0, daytime_stream,},
   {"daytime", SOCK_DGRAM, 0, 0, daytime_dg,},
 #endif
-#ifdef CONFIG_FEATURE_INETD_SUPPORT_BILTIN_CHARGEN
+#ifdef CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN
   /* Familiar character generator */
   {"chargen", SOCK_STREAM, 1, 0, chargen_stream,},
   {"chargen", SOCK_DGRAM, 0, 0, chargen_dg,},
@@ -372,13 +369,14 @@ static void register_rpc (servtab_t *sep)
   int n;
   struct sockaddr_in ir_sin;
   struct protoent *pp;
+  socklen_t size;
 
   if ((pp = getprotobyname (sep->se_proto + 4)) == NULL) {
        syslog (LOG_ERR, "%s: getproto: %m", sep->se_proto);
        return;
   }
-  n = sizeof ir_sin;
-  if (getsockname (sep->se_fd, (struct sockaddr *) &ir_sin, &n) < 0) {
+  size = sizeof ir_sin;
+  if (getsockname (sep->se_fd, (struct sockaddr *) &ir_sin, &size) < 0) {
        syslog (LOG_ERR, "%s/%s: getsockname: %m",
                        sep->se_service, sep->se_proto);
        return;
@@ -415,8 +413,7 @@ static void freeconfig (servtab_t *cp)
   free (cp->se_group);
   free (cp->se_server);
   for (i = 0; i < MAXARGV; i++)
-       if (cp->se_argv[i])
-         free (cp->se_argv[i]);
+       free (cp->se_argv[i]);
 }
 
 static int bump_nofile (void)
@@ -479,7 +476,7 @@ setsockopt(fd, SOL_SOCKET, opt, (char *)&on, sizeof (on))
        else {
          r = bind (sep->se_fd, &sep->se_ctrladdr, sep->se_ctrladdr_size);
          if (r == 0) {
-               int len = sep->se_ctrladdr_size;
+               socklen_t len = sep->se_ctrladdr_size;
                int saveerrno = errno;
 
                /* update se_ctrladdr_in.sin_port */
@@ -747,9 +744,9 @@ more:
   sep->se_server = newstr (skip (&cp));
   if (strcmp (sep->se_server, "internal") == 0) {
 #ifdef INETD_FEATURE_ENABLED
-       const struct biltin *bi;
+       const struct builtin *bi;
 
-       for (bi = biltins; bi->bi_service; bi++)
+       for (bi = builtins; bi->bi_service; bi++)
          if (bi->bi_socktype == sep->se_socktype &&
                  strcmp (bi->bi_service, sep->se_service) == 0)
                break;
@@ -870,10 +867,18 @@ more:
   return (sep);
 }
 
+#define Block_Using_Signals(m) do {     sigemptyset(&m); \
+                                       sigaddset(&m, SIGCHLD); \
+                                       sigaddset(&m, SIGHUP); \
+                                       sigaddset(&m, SIGALRM); \
+                                       sigprocmask(SIG_BLOCK, &m, NULL); \
+                               } while(0)
+
+
 static servtab_t *enter (servtab_t *cp)
 {
   servtab_t *sep;
-  int omask;
+  sigset_t omask;
 
   sep = new_servtab();
   *sep = *cp;
@@ -881,10 +886,10 @@ static servtab_t *enter (servtab_t *cp)
 #ifdef CONFIG_FEATURE_INETD_RPC
   sep->se_rpcprog = -1;
 #endif
-  omask = sigblock (SIGBLOCK);
+  Block_Using_Signals(omask);
   sep->se_next = servtab;
   servtab = sep;
-  sigsetmask (omask);
+  sigprocmask(SIG_UNBLOCK, &omask, NULL);
   return (sep);
 }
 
@@ -922,10 +927,10 @@ static int matchconf (servtab_t *old, servtab_t *new)
   return (1);
 }
 
-static void config (int sig __attribute__((unused)))
+static void config (int sig ATTRIBUTE_UNUSED)
 {
   servtab_t *sep, *cp, **sepp;
-  int omask;
+  sigset_t omask;
   int add;
   size_t n;
   char protoname[10];
@@ -947,7 +952,7 @@ static void config (int sig __attribute__((unused)))
 
 #define SWAP(type, a, b) do {type c=(type)a; a=(type)b; b=(type)c;} while (0)
 
-         omask = sigblock (SIGBLOCK);
+         Block_Using_Signals(omask);
          /*
           * sep->se_wait may be holding the pid of a daemon
           * that we're waiting for.  If so, don't overwrite
@@ -974,7 +979,7 @@ static void config (int sig __attribute__((unused)))
          sep->se_rpcversl = cp->se_rpcversl;
          sep->se_rpcversh = cp->se_rpcversh;
 #endif
-         sigsetmask (omask);
+         sigprocmask(SIG_UNBLOCK, &omask, NULL);
          freeconfig (cp);
          add = 1;
        } else {
@@ -1117,7 +1122,7 @@ static void config (int sig __attribute__((unused)))
   /*
    * Purge anything not looked at above.
    */
-  omask = sigblock (SIGBLOCK);
+  Block_Using_Signals(omask);
   sepp = &servtab;
   while ((sep = *sepp)) {
        if (sep->se_checked) {
@@ -1139,11 +1144,11 @@ static void config (int sig __attribute__((unused)))
        freeconfig (sep);
        free (sep);
   }
-  (void) sigsetmask (omask);
+  sigprocmask(SIG_UNBLOCK, &omask, NULL);
 }
 
 
-static void reapchild (int sig __attribute__((unused)))
+static void reapchild (int sig ATTRIBUTE_UNUSED)
 {
   pid_t pid;
   int save_errno = errno, status;
@@ -1170,7 +1175,7 @@ static void reapchild (int sig __attribute__((unused)))
   errno = save_errno;
 }
 
-static void retry (int sig __attribute__((unused)))
+static void retry (int sig ATTRIBUTE_UNUSED)
 {
   servtab_t *sep;
 
@@ -1194,7 +1199,7 @@ static void retry (int sig __attribute__((unused)))
   }
 }
 
-static void goaway (int sig __attribute__((unused)))
+static void goaway (int sig ATTRIBUTE_UNUSED)
 {
   servtab_t *sep;
 
@@ -1231,7 +1236,7 @@ static char *LastArg;
 static void
 inetd_setproctitle (char *a, int s)
 {
-  int size;
+  socklen_t size;
   char *cp;
   struct sockaddr_in prt_sin;
   char buf[80];
@@ -1267,6 +1272,7 @@ inetd_main (int argc, char *argv[])
   pid_t pid;
   char buf[50];
   char *stoomany;
+  sigset_t omask, wait_mask;
 
 #ifdef INETD_SETPROCTITLE
   extern char **environ;
@@ -1357,7 +1363,7 @@ inetd_main (int argc, char *argv[])
   sigaction (SIGINT, &sa, NULL);
   sa.sa_handler = SIG_IGN;
   sigaction (SIGPIPE, &sa, &sapipe);
-
+  memset(&wait_mask, 0, sizeof(wait_mask));
   {
        /* space for daemons to overwrite environment for ps */
 #define DUMMYSIZE       100
@@ -1374,10 +1380,10 @@ inetd_main (int argc, char *argv[])
        fd_set readable;
 
        if (nsock == 0) {
-         (void) sigblock (SIGBLOCK);
+         Block_Using_Signals(omask);
          while (nsock == 0)
-               sigpause (0L);
-         (void) sigsetmask (0L);
+               sigsuspend (&wait_mask);
+         sigprocmask(SIG_UNBLOCK, &omask, NULL);
        }
 
        readable = allsock;
@@ -1401,7 +1407,7 @@ inetd_main (int argc, char *argv[])
                  }
                  if (sep->se_family == AF_INET && sep->se_socktype == SOCK_STREAM) {
                        struct sockaddr_in peer;
-                       int plen = sizeof (peer);
+                       socklen_t plen = sizeof (peer);
 
                        if (getpeername (ctrl, (struct sockaddr *) &peer, &plen) < 0) {
                          syslog (LOG_WARNING, "could not getpeername");
@@ -1416,7 +1422,7 @@ inetd_main (int argc, char *argv[])
                  }
                } else
                  ctrl = sep->se_fd;
-               (void) sigblock (SIGBLOCK);
+               Block_Using_Signals(omask);
                pid = 0;
 #ifdef INETD_FEATURE_ENABLED
                if (sep->se_bi == 0 || sep->se_bi->bi_fork)
@@ -1454,7 +1460,7 @@ inetd_main (int argc, char *argv[])
                          sep->se_fd = -1;
                          sep->se_count = 0;
                          nsock--;
-                         sigsetmask (0L);
+                         sigprocmask(SIG_UNBLOCK, &omask, NULL);
                          if (!timingout) {
                                timingout = 1;
                                alarm (RETRYTIME);
@@ -1468,7 +1474,7 @@ inetd_main (int argc, char *argv[])
                  syslog (LOG_ERR, "fork: %m");
                  if (!sep->se_wait && sep->se_socktype == SOCK_STREAM)
                        close (ctrl);
-                 sigsetmask (0L);
+                 sigprocmask(SIG_UNBLOCK, &omask, NULL);
                  sleep (1);
                  continue;
                }
@@ -1477,7 +1483,7 @@ inetd_main (int argc, char *argv[])
                  FD_CLR (sep->se_fd, &allsock);
                  nsock--;
                }
-               sigsetmask (0L);
+               sigprocmask(SIG_UNBLOCK, &omask, NULL);
                if (pid == 0) {
 #ifdef INETD_FEATURE_ENABLED
                  if (sep->se_bi) {
@@ -1543,9 +1549,9 @@ inetd_main (int argc, char *argv[])
  */
 #define BUFSIZE 4096
 
-#if defined(CONFIG_FEATURE_INETD_SUPPORT_BILTIN_ECHO) || \
-    defined(CONFIG_FEATURE_INETD_SUPPORT_BILTIN_CHARGEN) || \
-    defined(CONFIG_FEATURE_INETD_SUPPORT_BILTIN_DAYTIME)
+#if defined(CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO) || \
+    defined(CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN) || \
+    defined(CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME)
 static int dg_badinput (struct sockaddr_in *dg_sin)
 {
   if (ntohs (dg_sin->sin_port) < IPPORT_RESERVED)
@@ -1557,7 +1563,7 @@ static int dg_badinput (struct sockaddr_in *dg_sin)
 }
 #endif
 
-#ifdef CONFIG_FEATURE_INETD_SUPPORT_BILTIN_ECHO
+#ifdef CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO
 /* Echo service -- echo data back */
 /* ARGSUSED */
 static void
@@ -1575,10 +1581,11 @@ echo_stream (int s, servtab_t *sep)
 /* Echo service -- echo data back */
 /* ARGSUSED */
 static void
-echo_dg (int s, servtab_t *sep __attribute__((unused)))
+echo_dg (int s, servtab_t *sep ATTRIBUTE_UNUSED)
 {
   char buffer[BUFSIZE];
-  int i, size;
+  int i;
+  socklen_t size;
   /* struct sockaddr_storage ss; */
   struct sockaddr sa;
 
@@ -1589,9 +1596,9 @@ echo_dg (int s, servtab_t *sep __attribute__((unused)))
        return;
   (void) sendto (s, buffer, i, 0, &sa, sizeof (sa));
 }
-#endif  /* CONFIG_FEATURE_INETD_SUPPORT_BILTIN_ECHO */
+#endif  /* CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO */
 
-#ifdef CONFIG_FEATURE_INETD_SUPPORT_BILTIN_DISCARD
+#ifdef CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD
 /* Discard service -- ignore data */
 /* ARGSUSED */
 static void
@@ -1608,16 +1615,16 @@ discard_stream (int s, servtab_t *sep)
 /* Discard service -- ignore data */
 /* ARGSUSED */
 static void
-discard_dg (int s, servtab_t *sep __attribute__((unused)))
+discard_dg (int s, servtab_t *sep ATTRIBUTE_UNUSED)
 {
   char buffer[BUFSIZE];
 
   (void) read (s, buffer, sizeof (buffer));
 }
-#endif /* CONFIG_FEATURE_INETD_SUPPORT_BILTIN_DISCARD */
+#endif /* CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD */
 
 
-#ifdef CONFIG_FEATURE_INETD_SUPPORT_BILTIN_CHARGEN
+#ifdef CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN
 #define LINESIZ 72
 static char ring[128];
 static char *endring;
@@ -1670,13 +1677,14 @@ chargen_stream (int s, servtab_t *sep)
 /* Character generator */
 /* ARGSUSED */
 static void
-chargen_dg (int s, servtab_t *sep __attribute__((unused)))
+chargen_dg (int s, servtab_t *sep ATTRIBUTE_UNUSED)
 {
   /* struct sockaddr_storage ss; */
   struct sockaddr sa;
   static char *rs;
-  int len, size;
+  int len;
   char text[LINESIZ + 2];
+  socklen_t size;
 
   if (endring == 0) {
        initring ();
@@ -1701,10 +1709,10 @@ chargen_dg (int s, servtab_t *sep __attribute__((unused)))
   text[LINESIZ + 1] = '\n';
   (void) sendto (s, text, sizeof (text), 0, &sa, sizeof (sa));
 }
-#endif /* CONFIG_FEATURE_INETD_SUPPORT_BILTIN_CHARGEN */
+#endif /* CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN */
 
 
-#ifdef CONFIG_FEATURE_INETD_SUPPORT_BILTIN_TIME
+#ifdef CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME
 /*
  * Return a machine readable date and time, in the form of the
  * number of seconds since midnight, Jan 1, 1900.  Since gettimeofday
@@ -1726,7 +1734,7 @@ static u_int machtime (void)
 
 /* ARGSUSED */
 static void
-machtime_stream (int s, servtab_t *sep __attribute__((unused)))
+machtime_stream (int s, servtab_t *sep ATTRIBUTE_UNUSED)
 {
   u_int result;
 
@@ -1736,13 +1744,13 @@ machtime_stream (int s, servtab_t *sep __attribute__((unused)))
 
 /* ARGSUSED */
 static void
-machtime_dg (int s, servtab_t *sep __attribute__((unused)))
+machtime_dg (int s, servtab_t *sep ATTRIBUTE_UNUSED)
 {
   u_int result;
   /* struct sockaddr_storage ss; */
   struct sockaddr sa;
   struct sockaddr_in *dg_sin;
-  int size;
+  socklen_t size;
 
   size = sizeof (sa);
   if (recvfrom (s, (char *) &result, sizeof (result), 0, &sa, &size) < 0)
@@ -1755,13 +1763,13 @@ machtime_dg (int s, servtab_t *sep __attribute__((unused)))
   result = machtime ();
   (void) sendto (s, (char *) &result, sizeof (result), 0, &sa, sizeof (sa));
 }
-#endif /* CONFIG_FEATURE_INETD_SUPPORT_BILTIN_TIME */
+#endif /* CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME */
 
 
-#ifdef CONFIG_FEATURE_INETD_SUPPORT_BILTIN_DAYTIME
+#ifdef CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME
 /* Return human-readable time of day */
 /* ARGSUSED */
-static void daytime_stream (int s, servtab_t *sep __attribute__((unused)))
+static void daytime_stream (int s, servtab_t *sep ATTRIBUTE_UNUSED)
 {
   char buffer[256];
   time_t t;
@@ -1775,13 +1783,13 @@ static void daytime_stream (int s, servtab_t *sep __attribute__((unused)))
 /* Return human-readable time of day */
 /* ARGSUSED */
 void
-daytime_dg (int s, servtab_t *sep __attribute__((unused)))
+daytime_dg (int s, servtab_t *sep ATTRIBUTE_UNUSED)
 {
   char buffer[256];
   time_t t;
   /* struct sockaddr_storage ss; */
   struct sockaddr sa;
-  int size;
+  socklen_t size;
 
   t = time ((time_t *) 0);
 
@@ -1793,4 +1801,4 @@ daytime_dg (int s, servtab_t *sep __attribute__((unused)))
   (void) sprintf (buffer, "%.24s\r\n", ctime (&t));
   (void) sendto (s, buffer, strlen (buffer), 0, &sa, sizeof (sa));
 }
-#endif /* CONFIG_FEATURE_INETD_SUPPORT_BILTIN_DAYTIME */
+#endif /* CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME */