diff options
| author | Peter Wemm <peter@FreeBSD.org> | 1995-11-13 22:09:39 +0000 |
|---|---|---|
| committer | Peter Wemm <peter@FreeBSD.org> | 1995-11-13 22:09:39 +0000 |
| commit | fae92a3f851a21316cdfd5682b27dfa0ab6b2bcc (patch) | |
| tree | f380d76b9b68ac478a800ee9934de134184e5062 /sys | |
| parent | cceb2049b4529c9f883e5bd7880caf0807093e26 (diff) | |
Notes
Diffstat (limited to 'sys')
| -rw-r--r-- | sys/net/if_ppp.c | 57 |
1 files changed, 54 insertions, 3 deletions
diff --git a/sys/net/if_ppp.c b/sys/net/if_ppp.c index 0c1a65ea8081..f4b42cb78a40 100644 --- a/sys/net/if_ppp.c +++ b/sys/net/if_ppp.c @@ -69,7 +69,7 @@ * Paul Mackerras (paulus@cs.anu.edu.au). */ -/* $Id: if_ppp.c,v 1.26 1995/11/01 00:58:42 peter Exp $ */ +/* $Id: if_ppp.c,v 1.27 1995/11/03 08:42:21 peter Exp $ */ /* from if_ppp.c,v 1.5 1995/08/16 01:36:38 paulus Exp */ /* from if_sl.c,v 1.11 84/10/04 12:54:47 rick Exp */ @@ -99,6 +99,11 @@ #include <netinet/ip.h> #endif +#if IPX +#include <netipx/ipx.h> +#include <netipx/ipx_if.h> +#endif + #include "bpfilter.h" #if NBPFILTER > 0 #include <sys/time.h> @@ -487,13 +492,36 @@ pppsioctl(ifp, cmd, data) break; case SIOCSIFADDR: - if (ifa->ifa_addr->sa_family != AF_INET) + case SIOCAIFADDR: + switch(ifa->ifa_addr->sa_family) { +#ifdef INET + case AF_INET: + break; +#endif +#ifdef IPX + case AF_IPX: + break; +#endif + default: error = EAFNOSUPPORT; + break; + } break; case SIOCSIFDSTADDR: - if (ifa->ifa_addr->sa_family != AF_INET) + switch(ifa->ifa_addr->sa_family) { +#ifdef INET + case AF_INET: + break; +#endif +#ifdef IPX + case AF_IPX: + break; +#endif + default: error = EAFNOSUPPORT; + break; + } break; case SIOCSIFMTU: @@ -518,6 +546,10 @@ pppsioctl(ifp, cmd, data) case AF_INET: break; #endif +#ifdef IPX /* ??? IPX support multicast? */ + case AF_IPX: + break; +#endif default: error = EAFNOSUPPORT; break; @@ -1318,6 +1350,25 @@ ppp_inproc(sc, m) sc->sc_last_recv = time.tv_sec; /* update time of last pkt rcvd */ break; #endif +#ifdef IPX + case PPP_IPX: + /* + * IPX packet - take off the ppp header and pass it up to IPX. + */ + if ((sc->sc_if.if_flags & IFF_UP) == 0 + /* XXX: || sc->sc_npmode[NP_IPX] != NPMODE_PASS*/) { + /* interface is down - drop the packet. */ + m_freem(m); + return; + } + m->m_pkthdr.len -= PPP_HDRLEN; + m->m_data += PPP_HDRLEN; + m->m_len -= PPP_HDRLEN; + schednetisr(NETISR_IPX); + inq = &ipxintrq; + sc->sc_last_recv = time.tv_sec; /* update time of last pkt rcvd */ + break; +#endif default: /* |
