Allow default port to be given as a service name or port number.
authormdw <mdw>
Tue, 9 Sep 1997 18:17:06 +0000 (18:17 +0000)
committermdw <mdw>
Tue, 9 Sep 1997 18:17:06 +0000 (18:17 +0000)
src/daemon.c
src/parser.y

index 5b5df85..f79d76b 100644 (file)
@@ -1,6 +1,6 @@
 /* -*-c-*-
  *
- * $Id: daemon.c,v 1.5 1997/08/20 16:17:10 mdw Exp $
+ * $Id: daemon.c,v 1.6 1997/09/09 18:17:06 mdw Exp $
  *
  * Running a `become' daemon
  *
 /*----- Revision history --------------------------------------------------*
  *
  * $Log: daemon.c,v $
- * Revision 1.5  1997/08/20 16:17:10  mdw
+ * Revision 1.6  1997/09/09 18:17:06  mdw
+ * Allow default port to be given as a service name or port number.
+ *
+ * Revision 1.5  1997/08/20  16:17:10  mdw
  * More sensible restart routine: `_reinit' functions replaced by `_end' and
  * `_init' functions.
  *
@@ -323,7 +326,7 @@ void daemon_init(const char *cf, int port)
     struct servent *se = getservbyname(quis(), "udp");
     if (!se)
       die("no idea which port to use");
-    daemon__port = ntohs(se->s_port);
+    daemon__port = se->s_port;
   }
 
   /* --- Now set up a socket --- */
index 688ffc4..b36ecdb 100644 (file)
@@ -1,6 +1,6 @@
 /* -*-c-*-
  *
- * $Id: parser.y,v 1.2 1997/08/04 10:24:24 mdw Exp $
+ * $Id: parser.y,v 1.3 1997/09/09 18:17:06 mdw Exp $
  *
  * Parser for `become.conf' files
  *
@@ -29,6 +29,9 @@
 /*----- Revision history --------------------------------------------------*
  *
  * $Log: parser.y,v $
+ * Revision 1.3  1997/09/09 18:17:06  mdw
+ * Allow default port to be given as a service name or port number.
+ *
  * Revision 1.2  1997/08/04 10:24:24  mdw
  * Sources placed under CVS control.
  *
 /* --- Unix headers --- */
 
 #include <sys/types.h>
+#include <sys/socket.h>
+
+#include <netinet/in.h>
+
+#include <arpa/inet.h>
 
+#include <netdb.h>
 #include <pwd.h>
 #include <unistd.h>
 
@@ -190,7 +199,16 @@ host_spec  : HOST name '=' host_class ';' {
                        }
                ;
 
-port_spec      : PORT INT ';' { daemon_usePort($2); }
+port_spec      : PORT STRING ';' {
+                         struct servent *s = getservbyname($2, "udp");
+                         if (!s) {
+                           moan("unknown service `%s' at line %i",
+                                $2, lex_line);
+                           YYERROR;
+                         }
+                         daemon_usePort(s->s_port);
+                       }
+               | PORT INT ';' { daemon_usePort(htons($2)); }
                ;
 
 key_spec       : KEYFILE STRING ';' { daemon_readKey($2); }