*/
#ifndef lint
-static char rcsid[] = "$Id: sys-bsd.c,v 1.11 1994/09/16 02:17:43 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>
#include <sys/errno.h>
#include <net/if.h>
+#include <net/ppp_defs.h>
#include <net/if_ppp.h>
#include <net/route.h>
#include <net/if_dl.h>
#endif
#include "pppd.h"
-#include "ppp.h"
static int initdisc = -1; /* Initial TTY discipline */
static int rtm_seq;
if (!restore_term)
inittermios = tios;
- tios.c_cflag &= ~(CSIZE | CSTOPB | PARENB | CLOCAL | CRTSCTS);
- if (crtscts == 1)
+ tios.c_cflag &= ~(CSIZE | CSTOPB | PARENB | CLOCAL);
+ if (crtscts > 0)
tios.c_cflag |= CRTSCTS;
+ else if (crtscts < 0)
+ tios.c_cflag &= ~CRTSCTS;
tios.c_cflag |= CS8 | CREAD | HUPCL;
if (local || !modem)
{
int len;
- if ((len = read(fd, buf, MTU + DLLHEADERLEN)) < 0) {
- if (errno == EWOULDBLOCK) {
- MAINDEBUG((LOG_DEBUG, "read(fd): EWOULDBLOCK"));
+ if ((len = read(fd, buf, PPP_MTU + PPP_HDRLEN)) < 0) {
+ if (errno == EWOULDBLOCK || errno == EINTR) {
+ MAINDEBUG((LOG_DEBUG, "read(fd): %m"));
return -1;
}
syslog(LOG_ERR, "read(fd): %m");
void
ppp_send_config(unit, mtu, asyncmap, pcomp, accomp)
int unit, mtu;
- uint32 asyncmap;
+ u_int32_t asyncmap;
int pcomp, accomp;
{
u_int x;
void
ppp_recv_config(unit, mru, asyncmap, pcomp, accomp)
int unit, mru;
- uint32 asyncmap;
+ u_int32_t asyncmap;
int pcomp, accomp;
{
int x;
/*
* 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;
int
sifaddr(u, o, h, m)
int u;
- uint32 o, h, m;
+ u_int32_t o, h, m;
{
struct ifaliasreq ifra;
int
cifaddr(u, o, h)
int u;
- uint32 o, h;
+ u_int32_t o, h;
{
struct ifaliasreq ifra;
int
sifdefaultroute(u, g)
int u;
- uint32 g;
+ u_int32_t g;
{
return dodefaultroute(g, 's');
}
int
cifdefaultroute(u, g)
int u;
- uint32 g;
+ u_int32_t g;
{
return dodefaultroute(g, 'c');
}
*/
int
dodefaultroute(g, cmd)
- uint32 g;
+ u_int32_t g;
int cmd;
{
int routes;
int
sifproxyarp(unit, hisaddr)
int unit;
- uint32 hisaddr;
+ u_int32_t hisaddr;
{
int routes;
int l;
int
cifproxyarp(unit, hisaddr)
int unit;
- uint32 hisaddr;
+ u_int32_t hisaddr;
{
int routes;
int
sifproxyarp(unit, hisaddr)
int unit;
- uint32 hisaddr;
+ u_int32_t hisaddr;
{
struct arpreq arpreq;
struct {
int
cifproxyarp(unit, hisaddr)
int unit;
- uint32 hisaddr;
+ u_int32_t hisaddr;
{
struct arpreq arpreq;
int
get_ether_addr(ipaddr, hwaddr)
- uint32 ipaddr;
+ u_int32_t ipaddr;
struct sockaddr_dl *hwaddr;
{
struct ifreq *ifr, *ifend, *ifp;
- uint32 ina, mask;
+ u_int32_t ina, mask;
struct sockaddr_dl *dla;
struct ifreq ifreq;
struct ifconf ifc;
* 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)