From fbd84e94fedad26d52d3ab46de501da4945c98ca Mon Sep 17 00:00:00 2001 From: Paul Mackerras Date: Mon, 1 Jan 1996 23:07:07 +0000 Subject: [PATCH] change fd -> ttyfd, fd arg to various functions --- pppd/sys-NeXT.c | 67 ++++++++++++++-------------- pppd/sys-aix4.c | 49 +++++++++++---------- pppd/sys-linux.c | 77 +++++++++++++++++--------------- pppd/sys-osf.c | 111 ++++++++++++++++++++++++++--------------------- 4 files changed, 164 insertions(+), 140 deletions(-) diff --git a/pppd/sys-NeXT.c b/pppd/sys-NeXT.c index dcae3bf..3f97b4c 100644 --- a/pppd/sys-NeXT.c +++ b/pppd/sys-NeXT.c @@ -20,7 +20,7 @@ */ #ifndef lint -static char rcsid[] = "$Id: sys-NeXT.c,v 1.3 1995/12/18 03:30:47 paulus Exp $"; +static char rcsid[] = "$Id: sys-NeXT.c,v 1.4 1996/01/01 23:03:23 paulus Exp $"; #endif #include @@ -164,7 +164,8 @@ ppp_available() * establish_ppp - Turn the serial port into a ppp interface. */ void -establish_ppp() +establish_ppp(fd) + int fd; { int pppdisc = PPPDISC; int x; @@ -214,7 +215,8 @@ establish_ppp() * This shouldn't call die() because it's called from die(). */ void -disestablish_ppp() +disestablish_ppp(fd) + int fd; { int x; char *s; @@ -445,7 +447,8 @@ set_up_tty(fd, local) * restore_tty - restore the terminal to the saved settings. */ void -restore_tty() +restore_tty(fd) + int fd; { if (restore_term) { if (tcsetattr(fd, TCSAFLUSH, &inittermios) < 0) @@ -493,7 +496,7 @@ output(unit, p, len) if (debug) log_packet(p, len, "sent "); - if (write(fd, p, len) < 0) { + if (write(ttyfd, p, len) < 0) { if (errno == EWOULDBLOCK || errno == ENOBUFS || errno == ENXIO || errno == EIO) { syslog(LOG_WARNING, "write: warning: %m"); @@ -506,7 +509,7 @@ output(unit, p, len) /* - * wait_input - wait until there is data available on fd, + * wait_input - wait until there is data available on ttyfd, * for the length of time specified by *timo (indefinite * if timo is NULL). */ @@ -518,8 +521,8 @@ wait_input(timo) int n; FD_ZERO(&ready); - FD_SET(fd, &ready); - n = select(fd+1, &ready, NULL, &ready, timo); + FD_SET(ttyfd, &ready); + n = select(ttyfd+1, &ready, NULL, &ready, timo); if (n < 0 && errno != EINTR) { syslog(LOG_ERR, "select: %m"); die(1); @@ -536,12 +539,12 @@ read_packet(buf) { int len; - if ((len = read(fd, buf, PPP_MTU + PPP_HDRLEN)) < 0) { + if ((len = read(ttyfd, buf, PPP_MTU + PPP_HDRLEN)) < 0) { if (errno == EWOULDBLOCK || errno == EINTR) { - MAINDEBUG((LOG_DEBUG, "read(fd): %m")); + MAINDEBUG((LOG_DEBUG, "read: %m")); return -1; } - syslog(LOG_ERR, "read(fd): %m"); + syslog(LOG_ERR, "read: %m"); die(1); } return len; @@ -568,18 +571,18 @@ ppp_send_config(unit, mtu, asyncmap, pcomp, accomp) quit(); } - if (ioctl(fd, PPPIOCSASYNCMAP, (caddr_t) &asyncmap) < 0) { + if (ioctl(ttyfd, PPPIOCSASYNCMAP, (caddr_t) &asyncmap) < 0) { syslog(LOG_ERR, "ioctl(PPPIOCSASYNCMAP): %m"); quit(); } - if (ioctl(fd, PPPIOCGFLAGS, (caddr_t) &x) < 0) { + if (ioctl(ttyfd, PPPIOCGFLAGS, (caddr_t) &x) < 0) { syslog(LOG_ERR, "ioctl(PPPIOCGFLAGS): %m"); quit(); } x = pcomp? x | SC_COMP_PROT: x &~ SC_COMP_PROT; x = accomp? x | SC_COMP_AC: x &~ SC_COMP_AC; - if (ioctl(fd, PPPIOCSFLAGS, (caddr_t) &x) < 0) { + if (ioctl(ttyfd, PPPIOCSFLAGS, (caddr_t) &x) < 0) { syslog(LOG_ERR, "ioctl(PPPIOCSFLAGS): %m"); quit(); } @@ -594,7 +597,7 @@ ppp_set_xaccm(unit, accm) int unit; ext_accm accm; { - if (ioctl(fd, PPPIOCSXASYNCMAP, accm) < 0 && errno != ENOTTY) + if (ioctl(ttyfd, PPPIOCSXASYNCMAP, accm) < 0 && errno != ENOTTY) syslog(LOG_WARNING, "ioctl(PPPIOCSXASYNCMAP): %m"); } @@ -611,20 +614,20 @@ ppp_recv_config(unit, mru, asyncmap, pcomp, accomp) { int x; - if (ioctl(fd, PPPIOCSMRU, (caddr_t) &mru) < 0) { + if (ioctl(ttyfd, PPPIOCSMRU, (caddr_t) &mru) < 0) { syslog(LOG_ERR, "ioctl(PPPIOCSMRU): %m"); quit(); } - if (ioctl(fd, PPPIOCSRASYNCMAP, (caddr_t) &asyncmap) < 0) { + if (ioctl(ttyfd, PPPIOCSRASYNCMAP, (caddr_t) &asyncmap) < 0) { syslog(LOG_ERR, "ioctl(PPPIOCSRASYNCMAP): %m"); quit(); } - if (ioctl(fd, PPPIOCGFLAGS, (caddr_t) &x) < 0) { + if (ioctl(ttyfd, PPPIOCGFLAGS, (caddr_t) &x) < 0) { syslog(LOG_ERR, "ioctl(PPPIOCGFLAGS): %m"); quit(); } x = !accomp? x | SC_REJ_COMP_AC: x &~ SC_REJ_COMP_AC; - if (ioctl(fd, PPPIOCSFLAGS, (caddr_t) &x) < 0) { + if (ioctl(ttyfd, PPPIOCSFLAGS, (caddr_t) &x) < 0) { syslog(LOG_ERR, "ioctl(PPPIOCSFLAGS): %m"); quit(); } @@ -644,7 +647,7 @@ ccp_test(unit, opt_ptr, opt_len, for_transmit) data.ptr = opt_ptr; data.length = opt_len; data.transmit = for_transmit; - if (ioctl(fd, PPPIOCSCOMPRESS, (caddr_t) &data) >= 0) + if (ioctl(ttyfd, PPPIOCSCOMPRESS, (caddr_t) &data) >= 0) return 1; return (errno == ENOBUFS)? 0: -1; } @@ -658,13 +661,13 @@ ccp_flags_set(unit, isopen, isup) { int x; - if (ioctl(fd, PPPIOCGFLAGS, (caddr_t) &x) < 0) { + if (ioctl(ttyfd, PPPIOCGFLAGS, (caddr_t) &x) < 0) { syslog(LOG_ERR, "ioctl(PPPIOCGFLAGS): %m"); return; } x = isopen? x | SC_CCP_OPEN: x &~ SC_CCP_OPEN; x = isup? x | SC_CCP_UP: x &~ SC_CCP_UP; - if (ioctl(fd, PPPIOCSFLAGS, (caddr_t) &x) < 0) + if (ioctl(ttyfd, PPPIOCSFLAGS, (caddr_t) &x) < 0) syslog(LOG_ERR, "ioctl(PPPIOCSFLAGS): %m"); } @@ -679,7 +682,7 @@ ccp_fatal_error(unit) { int x; - if (ioctl(fd, PPPIOCGFLAGS, (caddr_t) &x) < 0) { + if (ioctl(ttyfd, PPPIOCGFLAGS, (caddr_t) &x) < 0) { syslog(LOG_ERR, "ioctl(PPPIOCGFLAGS): %m"); return 0; } @@ -695,17 +698,17 @@ sifvjcomp(u, vjcomp, cidcomp, maxcid) { u_int x; - if (ioctl(fd, PPPIOCGFLAGS, (caddr_t) &x) < 0) { + if (ioctl(ttyfd, PPPIOCGFLAGS, (caddr_t) &x) < 0) { syslog(LOG_ERR, "ioctl(PPIOCGFLAGS): %m"); return 0; } x = vjcomp ? x | SC_COMP_TCP: x &~ SC_COMP_TCP; x = cidcomp? x & ~SC_NO_TCP_CCID: x | SC_NO_TCP_CCID; - if (ioctl(fd, PPPIOCSFLAGS, (caddr_t) &x) < 0) { + if (ioctl(ttyfd, PPPIOCSFLAGS, (caddr_t) &x) < 0) { syslog(LOG_ERR, "ioctl(PPPIOCSFLAGS): %m"); return 0; } - if (ioctl(fd, PPPIOCSMAXCID, (caddr_t) &maxcid) < 0) { + if (ioctl(ttyfd, PPPIOCSMAXCID, (caddr_t) &maxcid) < 0) { syslog(LOG_ERR, "ioctl(PPPIOCSFLAGS): %m"); return 0; } @@ -740,18 +743,18 @@ sifup(u) if_is_up = 1; npi.protocol = PPP_IP; npi.mode = NPMODE_PASS; - if (ioctl(fd, PPPIOCSNPMODE, &npi) < 0) { + if (ioctl(ttyfd, PPPIOCSNPMODE, &npi) < 0) { if (errno != ENOTTY) { syslog(LOG_ERR, "ioctl(PPPIOCSNPMODE): %m"); return 0; } /* for backwards compatibility */ - if (ioctl(fd, PPPIOCGFLAGS, (caddr_t) &x) < 0) { + if (ioctl(ttyfd, PPPIOCGFLAGS, (caddr_t) &x) < 0) { syslog(LOG_ERR, "ioctl (PPPIOCGFLAGS): %m"); return 0; } x |= SC_ENABLE_IP; - if (ioctl(fd, PPPIOCSFLAGS, (caddr_t) &x) < 0) { + if (ioctl(ttyfd, PPPIOCSFLAGS, (caddr_t) &x) < 0) { syslog(LOG_ERR, "ioctl(PPPIOCSFLAGS): %m"); return 0; } @@ -774,18 +777,18 @@ sifdown(u) rv = 1; npi.protocol = PPP_IP; npi.mode = NPMODE_ERROR; - if (ioctl(fd, PPPIOCSNPMODE, (caddr_t) &npi) < 0) { + if (ioctl(ttyfd, PPPIOCSNPMODE, (caddr_t) &npi) < 0) { if (errno != ENOTTY) { syslog(LOG_ERR, "ioctl(PPPIOCSNPMODE): %m"); rv = 0; } else { /* backwards compatibility */ - if (ioctl(fd, PPPIOCGFLAGS, (caddr_t) &x) < 0) { + if (ioctl(ttyfd, PPPIOCGFLAGS, (caddr_t) &x) < 0) { syslog(LOG_ERR, "ioctl (PPPIOCGFLAGS): %m"); rv = 0; } else { x &= ~SC_ENABLE_IP; - if (ioctl(fd, PPPIOCSFLAGS, (caddr_t) &x) < 0) { + if (ioctl(ttyfd, PPPIOCSFLAGS, (caddr_t) &x) < 0) { syslog(LOG_ERR, "ioctl(PPPIOCSFLAGS): %m"); rv = 0; } diff --git a/pppd/sys-aix4.c b/pppd/sys-aix4.c index 11e88b4..76feef2 100644 --- a/pppd/sys-aix4.c +++ b/pppd/sys-aix4.c @@ -19,7 +19,7 @@ */ #ifndef lint -static char rcsid[] = "$Id: sys-aix4.c,v 1.7 1995/10/27 03:45:34 paulus Exp $"; +static char rcsid[] = "$Id: sys-aix4.c,v 1.8 1996/01/01 23:04:13 paulus Exp $"; #endif /* @@ -185,7 +185,8 @@ ppp_available() * establish_ppp - Turn the serial port into a ppp interface. */ void -establish_ppp() +establish_ppp(fd) + int fd; { /* go through and save the name of all the modules, then pop em */ for (;;) { @@ -258,7 +259,8 @@ establish_ppp() * modules. This shouldn't call die() because it's called from die(). */ void -disestablish_ppp() +disestablish_ppp(fd) + int fd; { int flags; char *s; @@ -510,7 +512,8 @@ set_up_tty(fd, local) * restore_tty - restore the terminal to the saved settings. */ void -restore_tty() +restore_tty(fd) + int fd; { if (restore_term) { if (!default_device) { @@ -562,13 +565,13 @@ output(unit, p, len) str.len = len; str.buf = (caddr_t) p; retries = 4; - while (putmsg(fd, NULL, &str, 0) < 0) { + while (putmsg(ttyfd, NULL, &str, 0) < 0) { if (--retries < 0 || (errno != EWOULDBLOCK && errno != EAGAIN)) { if (errno != ENXIO) syslog(LOG_ERR, "Couldn't send packet: %m"); break; } - pfd.fd = fd; + pfd.fd = ttyfd; pfd.events = POLLOUT; poll(&pfd, 1, 250); /* wait for up to 0.25 seconds */ } @@ -585,7 +588,7 @@ wait_input(timo) struct pollfd pfd; t = timo == NULL? -1: timo->tv_sec * 1000 + timo->tv_usec / 1000; - pfd.fd = fd; + pfd.fd = ttyfd; pfd.events = POLLIN | POLLPRI | POLLHUP; if (poll(&pfd, 1, t) < 0 && errno != EINTR) { syslog(LOG_ERR, "poll: %m"); @@ -609,12 +612,12 @@ read_packet(buf) ctl.maxlen = sizeof(ctlbuf); ctl.buf = (caddr_t) ctlbuf; i = 0; - len = getmsg(fd, &ctl, &str, &i); + len = getmsg(ttyfd, &ctl, &str, &i); if (len < 0) { if (errno == EAGAIN || errno == EWOULDBLOCK || errno == EINTR) { return -1; } - syslog(LOG_ERR, "getmsg(fd) %m"); + syslog(LOG_ERR, "getmsg %m"); die(1); } if (len) @@ -652,19 +655,19 @@ ppp_send_config(unit, mtu, asyncmap, pcomp, accomp) quit(); } - if(ioctl(fd, SIOCSIFASYNCMAP, asyncmap) < 0) { + if(ioctl(ttyfd, SIOCSIFASYNCMAP, asyncmap) < 0) { syslog(LOG_ERR, "ioctl(SIOCSIFASYNCMAP): %m"); quit(); } c = (pcomp? 1: 0); - if(ioctl(fd, SIOCSIFCOMPPROT, c) < 0) { + if(ioctl(ttyfd, SIOCSIFCOMPPROT, c) < 0) { syslog(LOG_ERR, "ioctl(SIOCSIFCOMPPROT): %m"); quit(); } c = (accomp? 1: 0); - if(ioctl(fd, SIOCSIFCOMPAC, c) < 0) { + if(ioctl(ttyfd, SIOCSIFCOMPAC, c) < 0) { syslog(LOG_ERR, "ioctl(SIOCSIFCOMPAC): %m"); quit(); } @@ -679,7 +682,7 @@ ppp_set_xaccm(unit, accm) int unit; ext_accm accm; { - if (ioctl(fd, SIOCSIFXASYNCMAP, accm) < 0 && errno != ENOTTY) + if (ioctl(ttyfd, SIOCSIFXASYNCMAP, accm) < 0 && errno != ENOTTY) syslog(LOG_WARNING, "ioctl(set extended ACCM): %m"); } @@ -696,21 +699,21 @@ ppp_recv_config(unit, mru, asyncmap, pcomp, accomp) { char c; - if (ioctl(fd, SIOCSIFMRU, mru) < 0) { + if (ioctl(ttyfd, SIOCSIFMRU, mru) < 0) { syslog(LOG_ERR, "ioctl(SIOCSIFMRU): %m"); } - if (ioctl(fd, SIOCSIFRASYNCMAP, (caddr_t) asyncmap) < 0) { + if (ioctl(ttyfd, SIOCSIFRASYNCMAP, (caddr_t) asyncmap) < 0) { syslog(LOG_ERR, "ioctl(SIOCSIFRASYNCMAP): %m"); } c = 2 + (pcomp? 1: 0); - if(ioctl(fd, SIOCSIFCOMPPROT, c) < 0) { + if(ioctl(ttyfd, SIOCSIFCOMPPROT, c) < 0) { syslog(LOG_ERR, "ioctl(SIOCSIFCOMPPROT): %m"); } c = 2 + (accomp? 1: 0); - if (ioctl(fd, SIOCSIFCOMPAC, c) < 0) { + if (ioctl(ttyfd, SIOCSIFCOMPAC, c) < 0) { syslog(LOG_ERR, "ioctl(SIOCSIFCOMPAC): %m"); } } @@ -731,7 +734,7 @@ ccp_test(unit, opt_ptr, opt_len, for_transmit) data.length = opt_len; data.transmit = for_transmit; BCOPY(opt_ptr, data.opt_data, opt_len); - if (ioctl(fd, SIOCSCOMPRESS, &data) >= 0) + if (ioctl(ttyfd, SIOCSCOMPRESS, &data) >= 0) return 1; return (errno == ENOSR)? 0: -1; } @@ -746,7 +749,7 @@ ccp_flags_set(unit, isopen, isup) int x; x = (isopen? 1: 0) + (isup? 2: 0); - if (ioctl(fd, SIOCSIFCOMP, x) < 0 && errno != ENOTTY) + if (ioctl(ttyfd, SIOCSIFCOMP, x) < 0 && errno != ENOTTY) syslog(LOG_ERR, "ioctl (SIOCSIFCOMP): %m"); } @@ -761,7 +764,7 @@ ccp_fatal_error(unit) { int x; - if (ioctl(fd, SIOCGIFCOMP, &x) < 0) { + if (ioctl(ttyfd, SIOCGIFCOMP, &x) < 0) { syslog(LOG_ERR, "ioctl(SIOCGIFCOMP): %m"); return 0; } @@ -778,7 +781,7 @@ sifvjcomp(u, vjcomp, cidcomp, maxcid) int x; x = (vjcomp? 1: 0) + (cidcomp? 0: 2) + (maxcid << 4); - if (ioctl(fd, SIOCSIFVJCOMP, x) < 0) { + if (ioctl(ttyfd, SIOCSIFVJCOMP, x) < 0) { syslog(LOG_ERR, "ioctl(SIOCSIFVJCOMP): %m"); return 0; } @@ -808,7 +811,7 @@ sifup(u) if_is_up = 1; npi.protocol = PPP_IP; npi.mode = NPMODE_PASS; - if (ioctl(fd, SIOCSETNPMODE, &npi) < 0) { + if (ioctl(ttyfd, SIOCSETNPMODE, &npi) < 0) { if (errno != ENOTTY) { syslog(LOG_ERR, "ioctl(SIOCSETNPMODE): %m"); return 0; @@ -832,7 +835,7 @@ sifdown(u) rv = 1; npi.protocol = PPP_IP; npi.mode = NPMODE_ERROR; - if (ioctl(fd, SIOCSETNPMODE, &npi) < 0) { + if (ioctl(ttyfd, SIOCSETNPMODE, &npi) < 0) { if (errno != ENOTTY) { syslog(LOG_ERR, "ioctl(SIOCSETNPMODE): %m"); rv = 0; diff --git a/pppd/sys-linux.c b/pppd/sys-linux.c index 5c31329..d176edf 100644 --- a/pppd/sys-linux.c +++ b/pppd/sys-linux.c @@ -115,7 +115,7 @@ static int get_flags (void) { int flags; - if (ioctl(fd, PPPIOCGFLAGS, (caddr_t) &flags) < 0) + if (ioctl(ttyfd, PPPIOCGFLAGS, (caddr_t) &flags) < 0) { syslog(LOG_ERR, "ioctl(PPPIOCGFLAGS): %m"); quit(); @@ -129,7 +129,7 @@ static void set_flags (int flags) { MAINDEBUG ((LOG_DEBUG, "set flags = %x\n", flags)); - if (ioctl(fd, PPPIOCSFLAGS, (caddr_t) &flags) < 0) + if (ioctl(ttyfd, PPPIOCSFLAGS, (caddr_t) &flags) < 0) { syslog(LOG_ERR, "ioctl(PPPIOCSFLAGS, %x): %m", flags); quit(); @@ -199,7 +199,7 @@ void note_debug_level (void) int set_kdebugflag (int requested_level) { - if (ioctl(fd, PPPIOCGDEBUG, &prev_kdebugflag) < 0) + if (ioctl(ttyfd, PPPIOCGDEBUG, &prev_kdebugflag) < 0) { syslog(LOG_ERR, "ioctl(PPPIOCGDEBUG): %m"); return (0); @@ -207,7 +207,7 @@ int set_kdebugflag (int requested_level) if (prev_kdebugflag != requested_level) { - if (ioctl(fd, PPPIOCSDEBUG, &requested_level) < 0) + if (ioctl(ttyfd, PPPIOCSDEBUG, &requested_level) < 0) { syslog (LOG_ERR, "ioctl(PPPIOCSDEBUG): %m"); return (0); @@ -222,7 +222,7 @@ int set_kdebugflag (int requested_level) * establish_ppp - Turn the serial port into a ppp interface. */ -void establish_ppp (void) +void establish_ppp (int fd) { int pppdisc = N_PPP; int sig = SIGIO; @@ -273,7 +273,7 @@ void establish_ppp (void) * This shouldn't call die() because it's called from die(). */ -void disestablish_ppp(void) +void disestablish_ppp(int fd) { int x; char *s; @@ -283,13 +283,32 @@ void disestablish_ppp(void) syslog(LOG_WARNING, "Couldn't restore device fd flags: %m"); initfdflags = -1; + if (still_ppp() && initdisc >= 0) + { + set_kdebugflag (prev_kdebugflag); + + if (ioctl(fd, TIOCSETD, &initdisc) < 0) + { + syslog(LOG_WARNING, "ioctl(TIOCSETD): %m"); + } + + if (ioctl(fd, TIOCNXCL, 0) < 0) + { + syslog (LOG_WARNING, "ioctl(TIOCNXCL): %m"); + } + } + initdisc = -1; + } + /* - * Fetch the flags for the device and generate appropriate error - * messages. + * clean_check - Fetch the flags for the device and generate + * appropriate error messages. */ +void clean_check(void) + { if (still_ppp() && initdisc >= 0) { - if (ioctl(fd, PPPIOCGFLAGS, (caddr_t) &x) == 0) + if (ioctl(ttyfd, PPPIOCGFLAGS, (caddr_t) &x) == 0) { s = NULL; switch (~x & (SC_RCV_B7_0|SC_RCV_B7_1|SC_RCV_EVNP|SC_RCV_ODDP)) @@ -328,21 +347,9 @@ void disestablish_ppp(void) syslog(LOG_WARNING, "Problem: %s", s); } } - - set_kdebugflag (prev_kdebugflag); - - if (ioctl(fd, TIOCSETD, &initdisc) < 0) - { - syslog(LOG_WARNING, "ioctl(TIOCSETD): %m"); - } - - if (ioctl(fd, TIOCNXCL, 0) < 0) - { - syslog (LOG_WARNING, "ioctl(TIOCNXCL): %m"); - } } - initdisc = -1; } + /* * List of valid speeds. @@ -566,7 +573,7 @@ void setdtr (int fd, int on) * restore_tty - restore the terminal to the saved settings. */ -void restore_tty (void) +void restore_tty (int fd) { if (restore_term) { @@ -603,7 +610,7 @@ void output (int unit, unsigned char *p, int len) log_packet(p, len, "sent "); } - if (write(fd, p, len) < 0) + if (write(ttyfd, p, len) < 0) { if (errno == EWOULDBLOCK || errno == ENOBUFS || errno == ENXIO || errno == EIO) @@ -619,7 +626,7 @@ void output (int unit, unsigned char *p, int len) } /* - * wait_input - wait until there is data available on fd, + * wait_input - wait until there is data available on ttyfd, * for the length of time specified by *timo (indefinite * if timo is NULL). */ @@ -630,9 +637,9 @@ void wait_input (struct timeval *timo) int n; FD_ZERO(&ready); - FD_SET(fd, &ready); + FD_SET(ttyfd, &ready); - n = select(fd+1, &ready, NULL, &ready, timo); + n = select(ttyfd+1, &ready, NULL, &ready, timo); if (n < 0 && errno != EINTR) { syslog(LOG_ERR, "select: %m"); @@ -648,14 +655,14 @@ int read_packet (unsigned char *buf) { int len; - len = read(fd, buf, PPP_MTU + PPP_HDRLEN); + len = read(ttyfd, buf, PPP_MTU + PPP_HDRLEN); if (len < 0) { if (errno == EWOULDBLOCK) { return -1; } - syslog(LOG_ERR, "read(fd): %m"); + syslog(LOG_ERR, "read: %m"); die(1); } return len; @@ -691,7 +698,7 @@ void ppp_send_config (int unit,int mtu,u_int32_t asyncmap,int pcomp,int accomp) } MAINDEBUG ((LOG_DEBUG, "send_config: asyncmap = %lx\n", asyncmap)); - if (ioctl(fd, PPPIOCSASYNCMAP, (caddr_t) &asyncmap) < 0) + if (ioctl(ttyfd, PPPIOCSASYNCMAP, (caddr_t) &asyncmap) < 0) { syslog(LOG_ERR, "ioctl(PPPIOCSASYNCMAP): %m"); quit(); @@ -713,7 +720,7 @@ void ppp_set_xaccm (int unit, ext_accm accm) MAINDEBUG ((LOG_DEBUG, "set_xaccm: %08lx %08lx %08lx %08lx\n", accm[0], accm[1], accm[2], accm[3])); - if (ioctl(fd, PPPIOCSXASYNCMAP, accm) < 0 && errno != ENOTTY) + if (ioctl(ttyfd, PPPIOCSXASYNCMAP, accm) < 0 && errno != ENOTTY) { syslog(LOG_WARNING, "ioctl(set extended ACCM): %m"); } @@ -740,13 +747,13 @@ void ppp_recv_config (int unit,int mru,u_int32_t asyncmap,int pcomp,int accomp) /* * Set the receiver parameters */ - if (ioctl(fd, PPPIOCSMRU, (caddr_t) &mru) < 0) + if (ioctl(ttyfd, PPPIOCSMRU, (caddr_t) &mru) < 0) { syslog(LOG_ERR, "ioctl(PPPIOCSMRU): %m"); } MAINDEBUG ((LOG_DEBUG, "recv_config: asyncmap = %lx\n", asyncmap)); - if (ioctl(fd, PPPIOCSRASYNCMAP, (caddr_t) &asyncmap) < 0) + if (ioctl(ttyfd, PPPIOCSRASYNCMAP, (caddr_t) &asyncmap) < 0) { syslog(LOG_ERR, "ioctl(PPPIOCSRASYNCMAP): %m"); quit(); @@ -771,7 +778,7 @@ int ccp_test (int unit, u_char *opt_ptr, int opt_len, int for_transmit) data.length = opt_len; data.transmit = for_transmit; - if (ioctl(fd, PPPIOCSCOMPRESS, (caddr_t) &data) >= 0) + if (ioctl(ttyfd, PPPIOCSCOMPRESS, (caddr_t) &data) >= 0) { return 1; } @@ -817,7 +824,7 @@ int sifvjcomp (int u, int vjcomp, int cidcomp, int maxcid) if (vjcomp) { - if (ioctl (fd, PPPIOCSMAXCID, (caddr_t) &maxcid) < 0) + if (ioctl (ttyfd, PPPIOCSMAXCID, (caddr_t) &maxcid) < 0) { syslog (LOG_ERR, "ioctl(PPPIOCSFLAGS): %m"); vjcomp = 0; diff --git a/pppd/sys-osf.c b/pppd/sys-osf.c index 2610198..5f8233e 100644 --- a/pppd/sys-osf.c +++ b/pppd/sys-osf.c @@ -19,7 +19,7 @@ */ #ifndef lint -static char rcsid[] = "$Id: sys-osf.c,v 1.5 1995/10/27 03:47:32 paulus Exp $"; +static char rcsid[] = "$Id: sys-osf.c,v 1.6 1996/01/01 23:07:07 paulus Exp $"; #endif /* @@ -71,7 +71,7 @@ static int initfdflags = -1; /* Initial file descriptor flags for fd */ static int sockfd; /* socket for doing interface ioctls */ -int ttyfd = -1; /* Original ttyfd if we did a streamify() */ +int orig_ttyfd = -1; /* Original ttyfd if we did a streamify() */ static int if_is_up; /* Interface has been marked up */ static u_int32_t default_route_gateway; /* Gateway for default route added */ @@ -266,7 +266,7 @@ streamify(int fd) } } else { close(fdes[1]); - ttyfd = fd; + orig_ttyfd = fd; return(fdes[0]); } } @@ -279,12 +279,13 @@ streamify(int fd) * establish_ppp - Turn the serial port into a ppp interface. */ void -establish_ppp() +establish_ppp(fd) + int fd; { int ret; if (isastream(fd) != 1) { - if ((fd=streamify(fd)) < 0) { + if ((ttyfd = fd = streamify(fd)) < 0) { syslog(LOG_ERR, "Couldn't get a STREAMS module!\n"); die(1); } @@ -382,7 +383,8 @@ void prstrstack(int fd) * modules. This shouldn't call die() because it's called from die(). */ void -disestablish_ppp() +disestablish_ppp(fd) + int fd; { int flags; char *s; @@ -399,11 +401,42 @@ disestablish_ppp() return; } + if (pushed_ppp) { + while (ioctl(fd, I_POP, 0) == 0) /* pop any we pushed */ + ; + pushed_ppp = 0; + + for (; str_module_count > 0; str_module_count--) { + if (ioctl(fd, I_PUSH, str_modules[str_module_count-1].modname)) { + if (errno != ENXIO) + syslog(LOG_WARNING, "str_restore: couldn't push module %s: %m", + str_modules[str_module_count-1].modname); + } else { + MAINDEBUG((LOG_INFO, "str_restore: pushed module %s", + str_modules[str_module_count-1].modname)); + } + } + + if (orig_ttyfd >= 0) { + close(fd); + ttyfd = orig_ttyfd; + fd = -1; + } + } + +} + +/* + * clean_check - check whether the link seems to be 8-bit clean. + */ +void +clean_check() +{ if (pushed_ppp) { /* * Check whether the link seems not to be 8-bit clean. */ - if (ioctl(fd, (int)SIOCGIFDEBUG, (caddr_t) &flags) == 0) { + if (ioctl(ttyfd, (int)SIOCGIFDEBUG, (caddr_t) &flags) == 0) { s = NULL; switch (~flags & PAI_FLAGS_HIBITS) { case PAI_FLAGS_B7_0: @@ -424,32 +457,9 @@ disestablish_ppp() syslog(LOG_WARNING, "All received characters had %s", s); } } - - while (ioctl(fd, I_POP, 0) == 0) /* pop any we pushed */ - ; - pushed_ppp = 0; - - for (; str_module_count > 0; str_module_count--) { - if (ioctl(fd, I_PUSH, str_modules[str_module_count-1].modname)) { - if (errno != ENXIO) - syslog(LOG_WARNING, "str_restore: couldn't push module %s: %m", - str_modules[str_module_count-1].modname); - } else { - MAINDEBUG((LOG_INFO, "str_restore: pushed module %s", - str_modules[str_module_count-1].modname)); - } - } - - if (ttyfd >= 0) { - close(fd); - fd = ttyfd; - ttyfd = -1; - } } - } - /* * List of valid speeds. */ @@ -633,7 +643,8 @@ set_up_tty(fd, local) * restore_tty - restore the terminal to the saved settings. */ void -restore_tty() +restore_tty(fd) + int fd; { if (restore_term) { if (!default_device) { @@ -686,13 +697,13 @@ output(unit, p, len) str.len = len; str.buf = (caddr_t) p; retries = 4; - while (putmsg(fd, NULL, &str, 0) < 0) { + while (putmsg(ttyfd, NULL, &str, 0) < 0) { if (--retries < 0 || (errno != EWOULDBLOCK && errno != EAGAIN)) { if (errno != ENXIO) syslog(LOG_ERR, "Couldn't send packet: %m"); break; } - pfd.fd = fd; + pfd.fd = ttyfd; pfd.events = POLLOUT; poll(&pfd, 1, 250); /* wait for up to 0.25 seconds */ } @@ -709,7 +720,7 @@ wait_input(timo) struct pollfd pfd; t = timo == NULL? -1: timo->tv_sec * 1000 + timo->tv_usec / 1000; - pfd.fd = fd; + pfd.fd = ttyfd; pfd.events = POLLIN | POLLPRI | POLLHUP; if (poll(&pfd, 1, t) < 0 && errno != EINTR) { syslog(LOG_ERR, "poll: %m"); @@ -733,12 +744,12 @@ read_packet(buf) ctl.maxlen = sizeof(ctlbuf); ctl.buf = (caddr_t) ctlbuf; i = 0; - len = getmsg(fd, &ctl, &str, &i); + len = getmsg(ttyfd, &ctl, &str, &i); if (len < 0) { if (errno == EAGAIN || errno == EWOULDBLOCK || errno == EINTR) { return -1; } - syslog(LOG_ERR, "getmsg(fd) %m"); + syslog(LOG_ERR, "getmsg %m"); die(1); } if (len) @@ -776,19 +787,19 @@ ppp_send_config(unit, mtu, asyncmap, pcomp, accomp) quit(); } - if(ioctl(fd, (int)SIOCSIFASYNCMAP, (caddr_t) &asyncmap) < 0) { + if(ioctl(ttyfd, (int)SIOCSIFASYNCMAP, (caddr_t) &asyncmap) < 0) { syslog(LOG_ERR, "ioctl(SIOCSIFASYNCMAP): %m"); quit(); } c = (pcomp? 1: 0); - if(ioctl(fd, (int)SIOCSIFCOMPPROT, &c) < 0) { + if(ioctl(ttyfd, (int)SIOCSIFCOMPPROT, &c) < 0) { syslog(LOG_ERR, "ioctl(SIOCSIFCOMPPROT): %m"); quit(); } c = (accomp? 1: 0); - if(ioctl(fd, (int)SIOCSIFCOMPAC, &c) < 0) { + if(ioctl(ttyfd, (int)SIOCSIFCOMPAC, &c) < 0) { syslog(LOG_ERR, "ioctl(SIOCSIFCOMPAC): %m"); quit(); } @@ -803,7 +814,7 @@ ppp_set_xaccm(unit, accm) int unit; ext_accm accm; { - if (ioctl(fd, (int)SIOCSIFXASYNCMAP, accm) < 0 && errno != ENOTTY) + if (ioctl(ttyfd, (int)SIOCSIFXASYNCMAP, accm) < 0 && errno != ENOTTY) syslog(LOG_WARNING, "ioctl(set extended ACCM): %m"); } @@ -820,21 +831,21 @@ ppp_recv_config(unit, mru, asyncmap, pcomp, accomp) { char c; - if (ioctl(fd, (int)SIOCSIFMRU, &mru) < 0) { + if (ioctl(ttyfd, (int)SIOCSIFMRU, &mru) < 0) { syslog(LOG_ERR, "ioctl(SIOCSIFMRU): %m"); } - if (ioctl(fd, (int)SIOCSIFRASYNCMAP, (caddr_t) &asyncmap) < 0) { + if (ioctl(ttyfd, (int)SIOCSIFRASYNCMAP, (caddr_t) &asyncmap) < 0) { syslog(LOG_ERR, "ioctl(SIOCSIFRASYNCMAP): %m"); } c = 2 + (pcomp? 1: 0); - if(ioctl(fd, (int)SIOCSIFCOMPPROT, &c) < 0) { + if(ioctl(ttyfd, (int)SIOCSIFCOMPPROT, &c) < 0) { syslog(LOG_ERR, "ioctl(SIOCSIFCOMPPROT): %m"); } c = 2 + (accomp? 1: 0); - if (ioctl(fd, (int)SIOCSIFCOMPAC, &c) < 0) { + if (ioctl(ttyfd, (int)SIOCSIFCOMPAC, &c) < 0) { syslog(LOG_ERR, "ioctl(SIOCSIFCOMPAC): %m"); } } @@ -855,7 +866,7 @@ ccp_test(unit, opt_ptr, opt_len, for_transmit) data.length = opt_len; data.transmit = for_transmit; BCOPY(opt_ptr, data.opt_data, opt_len); - if (ioctl(fd, (int)SIOCSCOMPRESS, (caddr_t) &data) >= 0) + if (ioctl(ttyfd, (int)SIOCSCOMPRESS, (caddr_t) &data) >= 0) return 1; return (errno == ENOSR)? 0: -1; } @@ -870,7 +881,7 @@ ccp_flags_set(unit, isopen, isup) int x; x = (isopen? 1: 0) + (isup? 2: 0); - if (ioctl(fd, (int)SIOCSIFCOMP, (caddr_t) &x) < 0 && errno != ENOTTY) + if (ioctl(ttyfd, (int)SIOCSIFCOMP, (caddr_t) &x) < 0 && errno != ENOTTY) syslog(LOG_ERR, "ioctl (SIOCSIFCOMP): %m"); } @@ -885,7 +896,7 @@ ccp_fatal_error(unit) { int x; - if (ioctl(fd, (int)SIOCGIFCOMP, (caddr_t) &x) < 0) { + if (ioctl(ttyfd, (int)SIOCGIFCOMP, (caddr_t) &x) < 0) { syslog(LOG_ERR, "ioctl(SIOCGIFCOMP): %m"); return 0; } @@ -902,7 +913,7 @@ sifvjcomp(u, vjcomp, cidcomp, maxcid) char x; x = (vjcomp? 1: 0) + (cidcomp? 0: 2) + (maxcid << 4); - if (ioctl(fd, (int)SIOCSIFVJCOMP, (caddr_t) &x) < 0) { + if (ioctl(ttyfd, (int)SIOCSIFVJCOMP, (caddr_t) &x) < 0) { syslog(LOG_ERR, "ioctl(SIOCSIFVJCOMP): %m"); return 0; } @@ -932,7 +943,7 @@ sifup(u) if_is_up = 1; npi.protocol = PPP_IP; npi.mode = NPMODE_PASS; - if (ioctl(fd, (int)SIOCSETNPMODE, &npi) < 0) { + if (ioctl(ttyfd, (int)SIOCSETNPMODE, &npi) < 0) { if (errno != ENOTTY) { syslog(LOG_ERR, "ioctl(SIOCSETNPMODE): %m"); return 0; @@ -955,7 +966,7 @@ sifdown(u) rv = 1; npi.protocol = PPP_IP; npi.mode = NPMODE_ERROR; - if (ioctl(fd, (int)SIOCSETNPMODE, (caddr_t) &npi) < 0) { + if (ioctl(ttyfd, (int)SIOCSETNPMODE, (caddr_t) &npi) < 0) { if (errno != ENOTTY) { syslog(LOG_ERR, "ioctl(SIOCSETNPMODE): %m"); rv = 0; -- 2.39.2