From: Paul Mackerras Date: Tue, 14 Dec 1993 05:16:01 +0000 (+0000) Subject: check if we have ppp early on X-Git-Tag: ppp-2-1-2a~114 X-Git-Url: https://git.ozlabs.org/?p=ppp.git;a=commitdiff_plain;h=828173483886990474f217910ebe02583674f0e8;ds=sidebyside check if we have ppp early on --- 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.