*/
#ifndef lint
-static char rcsid[] = "$Id: sys-svr4.c,v 1.10 1996/04/04 04:07:30 paulus Exp $";
+static char rcsid[] = "$Id: sys-svr4.c,v 1.13 1996/09/14 05:18:24 paulus Exp $";
#endif
#include <limits.h>
#include <stdio.h>
#include <stddef.h>
#include <stdlib.h>
+#ifdef SNI
+extern void *alloca(size_t);
+#else
#include <alloca.h>
+#endif
#include <ctype.h>
#include <errno.h>
#include <fcntl.h>
static int dlpi_get_reply __P((int, union DL_primitives *, int, int));
static int strioctl __P((int, int, void *, int, int));
+
/*
* sys_init - System-dependent initialization.
*/
} reply;
#endif
- openlog("pppd", LOG_PID | LOG_NDELAY, LOG_PPP);
- setlogmask(LOG_UPTO(LOG_INFO));
- if (debug)
- setlogmask(LOG_UPTO(LOG_DEBUG));
-
ipfd = open("/dev/ip", O_RDWR, 0);
if (ipfd < 0) {
syslog(LOG_ERR, "Couldn't open IP device: %m");
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);
}
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);
}
close(ipfd);
if (pppfd >= 0)
close(pppfd);
- closelog();
}
/*
return 0;
}
-/*
- * note_debug_level - note a change in the debug level.
- */
-void
-note_debug_level()
-{
- if (debug) {
- setlogmask(LOG_UPTO(LOG_DEBUG));
- } else {
- setlogmask(LOG_UPTO(LOG_WARNING));
- }
-}
-
/*
* ppp_available - check whether the system has any ppp interfaces
*/
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) {
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");
+ }
}
}
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");
}
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");
+ }
}
}
return strioctl(pppfd, PPPIO_GIDLE, ip, 0, sizeof(struct ppp_idle)) >= 0;
}
-
+#if 0
/*
* set_filters - transfer the pass and active filters to the kernel.
*/
}
return ret;
}
-
+#endif
/*
* ccp_fatal_error - returns 1 if decompression was disabled as a