X-Git-Url: http://git.ozlabs.org/?p=ppp.git;a=blobdiff_plain;f=pppd%2Fsys-svr4.c;h=f43427ed94585258c4ef5df5b0d3681bbfda16f0;hp=258cfae7d9d6ee853b9747c8f8edadc862dc53e5;hb=2521ca94620dfd5d3864a6f68a171a8be83d5b8e;hpb=1e31b548741443095679070638f5344cb5df1c9d diff --git a/pppd/sys-svr4.c b/pppd/sys-svr4.c index 258cfae..f43427e 100644 --- a/pppd/sys-svr4.c +++ b/pppd/sys-svr4.c @@ -26,14 +26,18 @@ */ #ifndef lint -static char rcsid[] = "$Id: sys-svr4.c,v 1.11 1996/05/27 00:01:53 paulus Exp $"; +static char rcsid[] = "$Id: sys-svr4.c,v 1.13 1996/09/14 05:18:24 paulus Exp $"; #endif #include #include #include #include +#ifdef SNI +extern void *alloca(size_t); +#else #include +#endif #include #include #include @@ -130,7 +134,7 @@ sys_init() syslog(LOG_ERR, "Can't open /dev/ppp: %m"); die(1); } - if (kdebugflag) { + if (kdebugflag & 1) { x = PPPDBG_LOG + PPPDBG_DRIVER; strioctl(pppfd, PPPIO_DEBUG, &x, sizeof(int), 0); } @@ -151,7 +155,7 @@ sys_init() syslog(LOG_ERR, "Can't open /dev/ppp (2): %m"); die(1); } - if (kdebugflag) { + if (kdebugflag & 1) { x = PPPDBG_LOG + PPPDBG_DRIVER; strioctl(ifd, PPPIO_DEBUG, &x, sizeof(int), 0); } @@ -281,10 +285,18 @@ establish_ppp(fd) syslog(LOG_ERR, "Couldn't push PPP Async HDLC module: %m"); die(1); } + if (kdebugflag & 4) { + i = PPPDBG_LOG + PPPDBG_AHDLC; + strioctl(pppfd, PPPIO_DEBUG, &i, sizeof(int), 0); + } if (ioctl(fd, I_PUSH, "ppp_comp") < 0) { syslog(LOG_ERR, "Couldn't push PPP compression module: %m"); /* die(1); */ } + if (kdebugflag & 2) { + i = PPPDBG_LOG + PPPDBG_COMP; + strioctl(pppfd, PPPIO_DEBUG, &i, sizeof(int), 0); + } /* Link the serial port under the PPP multiplexor. */ if ((fdmuxid = ioctl(pppfd, I_LINK, fd)) < 0) { @@ -793,13 +805,16 @@ ppp_send_config(unit, mtu, asyncmap, pcomp, accomp) return; syslog(LOG_ERR, "Couldn't set MTU: %m"); } - if (strioctl(pppfd, PPPIO_XACCM, &asyncmap, sizeof(asyncmap), 0) < 0) { - syslog(LOG_ERR, "Couldn't set transmit ACCM: %m"); - } - cf[0] = (pcomp? COMP_PROT: 0) + (accomp? COMP_AC: 0); - cf[1] = COMP_PROT | COMP_AC; - if (strioctl(pppfd, PPPIO_CFLAGS, cf, sizeof(cf), sizeof(int)) < 0) { - syslog(LOG_ERR, "Couldn't set prot/AC compression: %m"); + if (fdmuxid >= 0) { + /* can't set these if we don't have a stream attached below /dev/ppp */ + if (strioctl(pppfd, PPPIO_XACCM, &asyncmap, sizeof(asyncmap), 0) < 0) { + syslog(LOG_ERR, "Couldn't set transmit ACCM: %m"); + } + cf[0] = (pcomp? COMP_PROT: 0) + (accomp? COMP_AC: 0); + cf[1] = COMP_PROT | COMP_AC; + if (strioctl(pppfd, PPPIO_CFLAGS, cf, sizeof(cf), sizeof(int)) < 0) { + syslog(LOG_ERR, "Couldn't set prot/AC compression: %m"); + } } } @@ -811,7 +826,8 @@ ppp_set_xaccm(unit, accm) int unit; ext_accm accm; { - if (strioctl(pppfd, PPPIO_XACCM, accm, sizeof(ext_accm), 0) < 0) { + if (fdmuxid >= 0 + && strioctl(pppfd, PPPIO_XACCM, accm, sizeof(ext_accm), 0) < 0) { if (!hungup || errno != ENXIO) syslog(LOG_WARNING, "Couldn't set extended ACCM: %m"); } @@ -835,13 +851,16 @@ ppp_recv_config(unit, mru, asyncmap, pcomp, accomp) return; syslog(LOG_ERR, "Couldn't set MRU: %m"); } - if (strioctl(pppfd, PPPIO_RACCM, &asyncmap, sizeof(asyncmap), 0) < 0) { - syslog(LOG_ERR, "Couldn't set receive ACCM: %m"); - } - cf[0] = (pcomp? DECOMP_PROT: 0) + (accomp? DECOMP_AC: 0); - cf[1] = DECOMP_PROT | DECOMP_AC; - if (strioctl(pppfd, PPPIO_CFLAGS, cf, sizeof(cf), sizeof(int)) < 0) { - syslog(LOG_ERR, "Couldn't set prot/AC decompression: %m"); + if (fdmuxid >= 0) { + /* can't set these if we don't have a stream attached below /dev/ppp */ + if (strioctl(pppfd, PPPIO_RACCM, &asyncmap, sizeof(asyncmap), 0) < 0) { + syslog(LOG_ERR, "Couldn't set receive ACCM: %m"); + } + cf[0] = (pcomp? DECOMP_PROT: 0) + (accomp? DECOMP_AC: 0); + cf[1] = DECOMP_PROT | DECOMP_AC; + if (strioctl(pppfd, PPPIO_CFLAGS, cf, sizeof(cf), sizeof(int)) < 0) { + syslog(LOG_ERR, "Couldn't set prot/AC decompression: %m"); + } } }