diff options
author | mdodd <mdodd@FreeBSD.org> | 2002-03-29 11:22:22 +0000 |
---|---|---|
committer | mdodd <mdodd@FreeBSD.org> | 2002-03-29 11:22:22 +0000 |
commit | 84c21f1d8ff69f47f8e2bef01392d5b39cf9ce02 (patch) | |
tree | acee2dafe452f857b35aa52d9223075e812b1e18 /sys/net | |
parent | fdbdd2f5af8ced636e98ffa82c0898512b04bfba (diff) | |
download | FreeBSD-src-84c21f1d8ff69f47f8e2bef01392d5b39cf9ce02.zip FreeBSD-src-84c21f1d8ff69f47f8e2bef01392d5b39cf9ce02.tar.gz |
- Merge the pdq driver (if_fpa and if_fea) from NetBSD.
Among other things this gets us ifmedia support.
- Update fddi_ifattach() to take an additional argument.
Diffstat (limited to 'sys/net')
-rw-r--r-- | sys/net/fddi.h | 4 | ||||
-rw-r--r-- | sys/net/if_fddisubr.c | 13 |
2 files changed, 11 insertions, 6 deletions
diff --git a/sys/net/fddi.h b/sys/net/fddi.h index 7d69ce7..82c1a13 100644 --- a/sys/net/fddi.h +++ b/sys/net/fddi.h @@ -97,11 +97,9 @@ struct fddi_header { #define FDDI_BPF_UNSUPPORTED 0 #define FDDI_BPF_SUPPORTED 1 -void fddi_ifattach(struct ifnet *); +void fddi_ifattach(struct ifnet *, int); void fddi_ifdetach(struct ifnet *, int); void fddi_input(struct ifnet *, struct fddi_header *, struct mbuf *); -int fddi_output(struct ifnet *, struct mbuf *, struct sockaddr *, - struct rtentry *); int fddi_ioctl(struct ifnet *, int, caddr_t); #endif /* _KERNEL */ diff --git a/sys/net/if_fddisubr.c b/sys/net/if_fddisubr.c index 642e625..126cf92 100644 --- a/sys/net/if_fddisubr.c +++ b/sys/net/if_fddisubr.c @@ -94,8 +94,11 @@ extern u_char aarp_org_code[ 3 ]; static u_char fddibroadcastaddr[FDDI_ADDR_LEN] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; -static int fddi_resolvemulti(struct ifnet *, struct sockaddr **, +static int fddi_resolvemulti(struct ifnet *, struct sockaddr **, struct sockaddr *); +static int fddi_output(struct ifnet *, struct mbuf *, struct sockaddr *, + struct rtentry *); + #define IFP2AC(IFP) ((struct arpcom *)IFP) #define senderr(e) { error = (e); goto bad; } @@ -107,7 +110,7 @@ static int fddi_resolvemulti(struct ifnet *, struct sockaddr **, * packet leaves a multiple of 512 bytes of data in remainder. * Assumes that ifp is actually pointer to arpcom structure. */ -int +static int fddi_output(ifp, m, dst, rt0) struct ifnet *ifp; struct mbuf *m; @@ -519,8 +522,9 @@ dropanyway: * Perform common duties while attaching to interface list */ void -fddi_ifattach(ifp) +fddi_ifattach(ifp, bpf) struct ifnet *ifp; + int bpf; { struct ifaddr *ifa; struct sockaddr_dl *sdl; @@ -551,6 +555,9 @@ fddi_ifattach(ifp) sdl->sdl_alen = ifp->if_addrlen; bcopy(IFP2AC(ifp)->ac_enaddr, LLADDR(sdl), ifp->if_addrlen); + if (bpf) + bpfattach(ifp, DLT_FDDI, FDDI_HDR_LEN); + return; } |