/* -*-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.
*
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 --- */
/* -*-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
*
/*----- 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>
}
;
-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); }