* OR MODIFICATIONS.
*/
-#ifndef lint
-static char rcsid[] = "$Id: sys-sunos4.c,v 1.22 1999/06/24 00:17:18 paulus Exp $";
-#endif
+#define RCSID "$Id: sys-sunos4.c,v 1.28 2001/05/23 03:39:13 paulus Exp $"
#include <stdio.h>
#include <stddef.h>
#endif
#endif /*sparc*/
+static const char rcsid[] = RCSID;
+
static int pppfd;
static int fdmuxid = -1;
static int iffd;
}
/*
- * establish_ppp - Turn the serial port into a ppp interface.
+ * tty_establish_ppp - Turn the serial port into a ppp interface.
*/
int
-establish_ppp(fd)
+tty_establish_ppp(fd)
int fd;
{
int i;
return pppfd;
}
-/*
- * restore_loop - reattach the ppp unit to the loopback.
- * This doesn't need to do anything because disestablish_ppp does it.
- */
-void
-restore_loop()
-{
-}
-
/*
* disestablish_ppp - Restore the serial port to normal operation.
* It attempts to reconstruct the stream with the previously popped
* modules. This shouldn't call die() because it's called from die().
*/
void
-disestablish_ppp(fd)
+tty_disestablish_ppp(fd)
int fd;
{
int i;
int retries;
struct pollfd pfd;
- if (debug)
- dbglog("sent %P", p, len);
+ dump_packet("sent", p, len);
data.len = len;
data.buf = (caddr_t) p;
int t;
t = timo == NULL? -1: timo->tv_sec * 1000 + timo->tv_usec / 1000;
- if (poll(pollfds, n_pollfds, t) < 0 && errno != EINTR)
- fatal("poll: %m");
+ if (poll(pollfds, n_pollfds, t) < 0 && errno != EINTR) {
+ if (errno != EAGAIN)
+ fatal("poll: %m");
+ /* we can get EAGAIN on a heavily loaded system,
+ * just wait a short time and try again. */
+ usleep(50000);
+ }
}
/*
}
/*
- * ppp_send_config - configure the transmit characteristics of
- * the ppp interface.
+ * netif_set_mtu - set the MTU on the PPP network interface.
*/
void
-ppp_send_config(unit, mtu, asyncmap, pcomp, accomp)
+netif_set_mtu(unit, mtu)
int unit, mtu;
+{
+ struct ifreq ifr;
+
+ memset(&ifr, 0, sizeof(ifr));
+ strlcpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
+ ifr.ifr_metric = link_mtu;
+ if (ioctl(sockfd, SIOCSIFMTU, &ifr) < 0) {
+ error("Couldn't set IP MTU: %m");
+ }
+}
+
+/*
+ * tty_send_config - configure the transmit characteristics of
+ * the ppp interface.
+ */
+void
+tty_send_config(mtu, asyncmap, pcomp, accomp)
+ int mtu;
u_int32_t asyncmap;
int pcomp, accomp;
{
int cf[2];
- struct ifreq ifr;
link_mtu = mtu;
if (strioctl(pppfd, PPPIO_MTU, &mtu, sizeof(mtu), 0) < 0) {
if (strioctl(pppfd, PPPIO_CFLAGS, cf, sizeof(cf), sizeof(int)) < 0) {
error("Couldn't set prot/AC compression: %m");
}
-
- /* set mtu for ip as well */
- memset(&ifr, 0, sizeof(ifr));
- strlcpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
- ifr.ifr_metric = link_mtu;
- if (ioctl(sockfd, SIOCSIFMTU, &ifr) < 0) {
- error("Couldn't set IP MTU: %m");
- }
}
/*
- * ppp_set_xaccm - set the extended transmit ACCM for the interface.
+ * tty_set_xaccm - set the extended transmit ACCM for the interface.
*/
void
-ppp_set_xaccm(unit, accm)
+tty_set_xaccm(unit, accm)
int unit;
ext_accm accm;
{
}
/*
- * ppp_recv_config - configure the receive-side characteristics of
+ * tty_recv_config - configure the receive-side characteristics of
* the ppp interface.
*/
void
-ppp_recv_config(unit, mru, asyncmap, pcomp, accomp)
- int unit, mru;
+tty_recv_config(mru, asyncmap, pcomp, accomp)
+ int mru;
u_int32_t asyncmap;
int pcomp, accomp;
{
}
stats->bytes_in = s.p.ppp_ibytes;
stats->bytes_out = s.p.ppp_obytes;
+ stats->pkts_in = s.p.ppp_ipackets;
+ stats->pkts_out = s.p.ppp_opackets;
return 1;
}