From 828173483886990474f217910ebe02583674f0e8 Mon Sep 17 00:00:00 2001 From: Paul Mackerras Date: Tue, 14 Dec 1993 05:16:01 +0000 Subject: [PATCH] check if we have ppp early on --- pppd/main.c | 7 ++++++- pppd/sys-str.c | 21 ++++++++++++++++++++- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/pppd/main.c b/pppd/main.c index 4e1e3de..30596d1 100644 --- a/pppd/main.c +++ b/pppd/main.c @@ -18,7 +18,7 @@ */ #ifndef lint -static char rcsid[] = "$Id: main.c,v 1.2 1993/11/23 23:40:53 paulus Exp $"; +static char rcsid[] = "$Id: main.c,v 1.3 1993/12/14 05:16:01 paulus Exp $"; #endif #define SETSID @@ -223,6 +223,11 @@ main(argc, argv) 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 diff --git a/pppd/sys-str.c b/pppd/sys-str.c index ecee95b..6bd2fc9 100644 --- a/pppd/sys-str.c +++ b/pppd/sys-str.c @@ -22,8 +22,10 @@ * TODO: */ +#include #include #include +#include #include #include #include @@ -50,7 +52,24 @@ static struct modlist { } str_modules[MAXMODULES]; static int str_module_count = 0; -extern int hungup; +extern int hungup; /* has the physical layer been disconnected? */ + +/* + * ppp_available - check if this kernel supports PPP. + */ +int +ppp_available() +{ + int fd, ret; + + fd = open("/dev/tty", O_RDONLY, 0); + if (fd < 0) + return 1; /* can't find out - assume we have ppp */ + ret = ioctl(fd, I_FIND, "pppasync") >= 0; + close(fd); + return ret; +} + /* * establish_ppp - Turn the serial port into a ppp interface. -- 2.39.2