X-Git-Url: http://git.ozlabs.org/?a=blobdiff_plain;f=pppd%2Fsys-linux.c;h=dcdb2ab82be3b8e58fb7deba324aa1131dd4cff3;hb=6b5081d8af903c5a7e3c4f30cd6c4afd9f5b658f;hp=effb63854a3be94b1f730bdece21ce782b4f5dec;hpb=99520993fba23cb32604a8efb066cc6d9de69eeb;p=ppp.git diff --git a/pppd/sys-linux.c b/pppd/sys-linux.c index effb638..dcdb2ab 100644 --- a/pppd/sys-linux.c +++ b/pppd/sys-linux.c @@ -2,7 +2,7 @@ * sys-linux.c - System-dependent procedures for setting up * PPP interfaces on Linux systems * - * Copyright (c) 1994-2002 Paul Mackerras. All rights reserved. + * Copyright (c) 1994-2004 Paul Mackerras. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -11,16 +11,11 @@ * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The name(s) of the authors of this software must not be used to + * 2. The name(s) of the authors of this software must not be used to * endorse or promote products derived from this software without * prior written permission. * - * 4. Redistributions of any form whatsoever must retain the following + * 3. Redistributions of any form whatsoever must retain the following * acknowledgment: * "This product includes software developed by Paul Mackerras * ". @@ -141,7 +136,7 @@ #endif /* IPX_CHANGE */ #ifdef PPP_FILTER -#include +#include #include #endif /* PPP_FILTER */ @@ -265,7 +260,6 @@ extern int hungup; /* new_fd is the fd of a tty */ static void set_ppp_fd (int new_fd) { - SYSDEBUG ((LOG_DEBUG, "setting ppp_fd to %d\n", new_fd)); ppp_fd = new_fd; if (!new_style_driver) ppp_dev_fd = new_fd; @@ -389,8 +383,6 @@ static int set_kdebugflag (int requested_level) error("ioctl(PPPIOCSDEBUG): %m (line %d)", __LINE__); return (0); } - SYSDEBUG ((LOG_INFO, "set kernel debugging level to %d", - requested_level)); return (1); } @@ -537,9 +529,6 @@ int generic_establish_ppp (int fd) looped = 0; - SYSDEBUG ((LOG_NOTICE, "Using version %d.%d.%d of PPP driver", - driver_version, driver_modification, driver_patch)); - return ppp_fd; err_close: @@ -956,8 +945,8 @@ void set_up_tty(int tty_fd, int local) fatal("Baud rate for %s is 0; need explicit baud rate", devnam); } - if (tcsetattr(tty_fd, TCSAFLUSH, &tios) < 0) - if (!ok_error(errno)) + while (tcsetattr(tty_fd, TCSAFLUSH, &tios) < 0 && !ok_error(errno)) + if (errno != EINTR) fatal("tcsetattr: %m (line %d)", __LINE__); baud_rate = baud_rate_of(speed); @@ -1025,7 +1014,7 @@ void output (int unit, unsigned char *p, int len) fd = ppp_dev_fd; } if (write(fd, p, len) < 0) { - if (errno == EWOULDBLOCK || errno == ENOBUFS + if (errno == EWOULDBLOCK || errno == EAGAIN || errno == ENOBUFS || errno == ENXIO || errno == EIO || errno == EINTR) warn("write: warning: %m (%d)", errno); else @@ -1091,7 +1080,8 @@ int read_packet (unsigned char *buf) nr = -1; if (ppp_fd >= 0) { nr = read(ppp_fd, buf, len); - if (nr < 0 && errno != EWOULDBLOCK && errno != EIO && errno != EINTR) + if (nr < 0 && errno != EWOULDBLOCK && errno != EAGAIN + && errno != EIO && errno != EINTR) error("read: %m"); if (nr < 0 && errno == ENXIO) return 0; @@ -1099,7 +1089,8 @@ int read_packet (unsigned char *buf) if (nr < 0 && new_style_driver && ppp_dev_fd >= 0) { /* N.B. we read ppp_fd first since LCP packets come in there. */ nr = read(ppp_dev_fd, buf, len); - if (nr < 0 && errno != EWOULDBLOCK && errno != EIO && errno != EINTR) + if (nr < 0 && errno != EWOULDBLOCK && errno != EAGAIN + && errno != EIO && errno != EINTR) error("read /dev/ppp: %m"); if (nr < 0 && errno == ENXIO) return 0; @@ -1133,7 +1124,7 @@ get_loop_output(void) if (n == 0) fatal("eof on loopback"); - if (errno != EWOULDBLOCK) + if (errno != EWOULDBLOCK && errno != EAGAIN) fatal("read from loopback: %m(%d)", errno); return rv; @@ -1147,8 +1138,6 @@ netif_set_mtu(int unit, int mtu) { struct ifreq ifr; - SYSDEBUG ((LOG_DEBUG, "netif_set_mtu: mtu = %d\n", mtu)); - memset (&ifr, '\0', sizeof (ifr)); strlcpy(ifr.ifr_name, ifname, sizeof (ifr.ifr_name)); ifr.ifr_mtu = mtu; @@ -1207,9 +1196,6 @@ void tty_send_config(int mtu, u_int32_t asyncmap, int pcomp, int accomp) void tty_set_xaccm (ext_accm accm) { - SYSDEBUG ((LOG_DEBUG, "set_xaccm: %08lx %08lx %08lx %08lx\n", - accm[0], accm[1], accm[2], accm[3])); - if (!still_ppp()) return; if (ioctl(ppp_fd, PPPIOCSXASYNCMAP, accm) < 0 && errno != ENOTTY) { @@ -1756,8 +1742,6 @@ static int get_ether_addr (u_int32_t ipaddr, return 0; } - SYSDEBUG ((LOG_DEBUG, "proxy arp: scanning %d interfaces for IP %s", - ifc.ifc_len / sizeof(struct ifreq), ip_ntoa(ipaddr))); /* * Scan through looking for an interface with an Internet * address on the same subnet as `ipaddr'. @@ -1767,8 +1751,6 @@ static int get_ether_addr (u_int32_t ipaddr, if (ifr->ifr_addr.sa_family == AF_INET) { ina = SIN_ADDR(ifr->ifr_addr); strlcpy(ifreq.ifr_name, ifr->ifr_name, sizeof(ifreq.ifr_name)); - SYSDEBUG ((LOG_DEBUG, "proxy arp: examining interface %s", - ifreq.ifr_name)); /* * Check that the interface is up, and not point-to-point * nor loopback. @@ -1785,8 +1767,6 @@ static int get_ether_addr (u_int32_t ipaddr, continue; mask = SIN_ADDR(ifreq.ifr_addr); - SYSDEBUG ((LOG_DEBUG, "proxy arp: interface addr %s mask %lx", - ip_ntoa(ina), ntohl(mask))); if (((ipaddr ^ ina) & mask) != 0) continue; /* no match */ @@ -1824,16 +1804,6 @@ static int get_ether_addr (u_int32_t ipaddr, &bestifreq.ifr_hwaddr, sizeof (struct sockaddr)); - SYSDEBUG ((LOG_DEBUG, - "proxy arp: found hwaddr %02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x", - (int) ((unsigned char *) &hwaddr->sa_data)[0], - (int) ((unsigned char *) &hwaddr->sa_data)[1], - (int) ((unsigned char *) &hwaddr->sa_data)[2], - (int) ((unsigned char *) &hwaddr->sa_data)[3], - (int) ((unsigned char *) &hwaddr->sa_data)[4], - (int) ((unsigned char *) &hwaddr->sa_data)[5], - (int) ((unsigned char *) &hwaddr->sa_data)[6], - (int) ((unsigned char *) &hwaddr->sa_data)[7])); return 1; } @@ -2645,7 +2615,6 @@ open_ppp_loopback(void) if (!get_pty(&master_fd, &slave_fd, loop_name, 0)) fatal("No free pty for loopback"); - SYSDEBUG(("using %s for loopback", loop_name)); set_ppp_fd(slave_fd);