*/
#ifndef lint
-static char rcsid[] = "$Id: sys-bsd.c,v 1.13 1994/09/21 06:47:37 paulus Exp $";
+static char rcsid[] = "$Id: sys-bsd.c,v 1.15 1994/10/23 11:45:47 paulus Exp $";
#endif
/*
*/
#include <syslog.h>
+#include <string.h>
#include <termios.h>
#include <sys/ioctl.h>
#include <sys/types.h>
int len;
if ((len = read(fd, buf, PPP_MTU + PPP_HDRLEN)) < 0) {
- if (errno == EWOULDBLOCK) {
- MAINDEBUG((LOG_DEBUG, "read(fd): EWOULDBLOCK"));
+ if (errno == EWOULDBLOCK || errno == EINTR) {
+ MAINDEBUG((LOG_DEBUG, "read(fd): %m"));
return -1;
}
syslog(LOG_ERR, "read(fd): %m");
/*
* sifup - Config the interface up and enable IP packets to pass.
*/
+#ifndef SC_ENABLE_IP
+#define SC_ENABLE_IP 0x100 /* compat for old versions of kernel code */
+#endif
+
int
sifup(u)
int u;
* address on the same subnet as `ipaddr'.
*/
ifend = (struct ifreq *) (ifc.ifc_buf + ifc.ifc_len);
- for (ifr = ifc.ifc_req; ifr < ifend; ) {
+ for (ifr = ifc.ifc_req; ifr < ifend; ifr = (struct ifreq *)
+ ((char *)&ifr->ifr_addr + ifr->ifr_addr.sa_len)) {
if (ifr->ifr_addr.sa_family == AF_INET) {
ina = ((struct sockaddr_in *) &ifr->ifr_addr)->sin_addr.s_addr;
strncpy(ifreq.ifr_name, ifr->ifr_name, sizeof(ifreq.ifr_name));
break;
}
- ifr = (struct ifreq *) ((char *)&ifr->ifr_addr + ifr->ifr_addr.sa_len);
}
if (ifr >= ifend)