*/
#ifndef lint
-static char rcsid[] = "$Id: main.c,v 1.1 1993/11/11 03:54:25 paulus Exp $";
+static char rcsid[] = "$Id: main.c,v 1.5 1994/01/10 00:18:59 paulus Exp $";
#endif
#define SETSID
#include <netdb.h>
#include <utmp.h>
+/*
+ * If REQ_SYSOPTIONS is defined to 1, pppd will not run unless
+ * /etc/ppp/options exists.
+ */
+#ifndef REQ_SYSOPTIONS
+#define REQ_SYSOPTIONS 0
+#endif
+
#ifdef STREAMS
#undef SGTTY
#endif
pid = getpid();
+ if (!ppp_available()) {
+ fprintf(stderr, "Sorry - PPP is not available on this system\n");
+ exit(1);
+ }
+
/*
* Initialize to the standard option set, then parse, in order,
* the system options file, the user's options file, and the command
progname = *argv;
- if (!options_from_file(_PATH_SYSOPTIONS) ||
+ if (!options_from_file(_PATH_SYSOPTIONS, REQ_SYSOPTIONS) ||
!options_from_user() ||
!parse_args(argc-1, argv+1))
die(1);
syslog(LOG_ERR, "getpgrp(0): %m");
die(1);
}
- if (pgrpid != pid)
- syslog(LOG_WARNING, "warning... not a process group leader");
} else {
/*
signal(SIGUSR1, incdebug); /* Increment debug flag */
signal(SIGUSR2, nodebug); /* Reset debug flag */
-
+
+ /*
+ * Block SIGIOs and SIGPOLLs for now
+ */
+ sigemptyset(&mask);
+ sigaddset(&mask, SIGIO);
+#ifdef STREAMS
+ sigaddset(&mask, SIGPOLL);
+#endif
+ sigprocmask(SIG_BLOCK, &mask, NULL);
/*
* Open the serial device and set it up to be the ppp interface.
}
/*
- * Set process group of device to our process group so we can get SIGIOs.
+ * Set process group of device to our process group so we can get
+ * SIGIOs and SIGHUPs.
*/
#ifdef SETSID
if (default_device) {
int id = tcgetpgrp(fd);
if (id != pgrpid) {
- syslog(LOG_WARNING,
- "warning: not foreground process group leader");
+ syslog(LOG_WARNING, "warning: not in tty's process group");
}
} else {
if (tcsetpgrp(fd, pgrpid) < 0) {