Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/net Fix bpf output on fddi to actually work. Make it co...
details: https://anonhg.NetBSD.org/src/rev/66b7e24ad144
branches: trunk
changeset: 486743:66b7e24ad144
user: matt <matt%NetBSD.org@localhost>
date: Sun May 28 02:49:35 2000 +0000
description:
Fix bpf output on fddi to actually work. Make it compatible with ULTRIX
and Tru64.
diffstat:
sys/net/bpf.c | 17 +++++++++--------
sys/net/if_fddisubr.c | 19 ++++++++++++++-----
2 files changed, 23 insertions(+), 13 deletions(-)
diffs (88 lines):
diff -r 234c3966146d -r 66b7e24ad144 sys/net/bpf.c
--- a/sys/net/bpf.c Sun May 28 02:42:16 2000 +0000
+++ b/sys/net/bpf.c Sun May 28 02:49:35 2000 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: bpf.c,v 1.55 2000/05/12 05:58:01 jonathan Exp $ */
+/* $NetBSD: bpf.c,v 1.56 2000/05/28 02:49:35 matt Exp $ */
/*
* Copyright (c) 1990, 1991, 1993
@@ -163,9 +163,9 @@
break;
case DLT_FDDI:
- sockp->sa_family = AF_UNSPEC;
- /* XXX 4(FORMAC)+6(dst)+6(src)+3(LLC)+5(SNAP) */
- hlen = 24;
+ sockp->sa_family = AF_LINK;
+ /* XXX 4(FORMAC)+6(dst)+6(src) */
+ hlen = 16;
align = 0;
break;
@@ -518,7 +518,7 @@
struct ifnet *ifp;
struct mbuf *m;
int error, s;
- static struct sockaddr dst;
+ static struct sockaddr_storage dst;
if (d->bd_bif == 0)
return (ENXIO);
@@ -528,7 +528,8 @@
if (uio->uio_resid == 0)
return (0);
- error = bpf_movein(uio, (int)d->bd_bif->bif_dlt, ifp->if_mtu, &m, &dst);
+ error = bpf_movein(uio, (int)d->bd_bif->bif_dlt, ifp->if_mtu, &m,
+ (struct sockaddr *) &dst);
if (error)
return (error);
@@ -536,10 +537,10 @@
return (EMSGSIZE);
if (d->bd_hdrcmplt)
- dst.sa_family = pseudo_AF_HDRCMPLT;
+ dst.ss_family = pseudo_AF_HDRCMPLT;
s = splsoftnet();
- error = (*ifp->if_output)(ifp, m, &dst, NULL);
+ error = (*ifp->if_output)(ifp, m, (struct sockaddr *) &dst, NULL);
splx(s);
/*
* The driver frees the mbuf.
diff -r 234c3966146d -r 66b7e24ad144 sys/net/if_fddisubr.c
--- a/sys/net/if_fddisubr.c Sun May 28 02:42:16 2000 +0000
+++ b/sys/net/if_fddisubr.c Sun May 28 02:49:35 2000 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: if_fddisubr.c,v 1.31 2000/03/30 09:45:35 augustss Exp $ */
+/* $NetBSD: if_fddisubr.c,v 1.32 2000/05/28 02:49:36 matt Exp $ */
/*
* Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
@@ -463,11 +463,20 @@
case pseudo_AF_HDRCMPLT:
{
- struct ether_header *eh;
+ struct fddi_header *fh = (struct fddi_header *)dst->sa_data;
hdrcmplt = 1;
- eh = (struct ether_header *)dst->sa_data;
- bcopy((caddr_t)eh->ether_shost, (caddr_t)esrc, sizeof (esrc));
- /* FALLTHROUGH */
+ bcopy((caddr_t)fh->fddi_shost, (caddr_t)esrc, sizeof (esrc));
+ /*FALLTHROUGH*/
+ }
+
+ case AF_LINK:
+ {
+ struct fddi_header *fh = (struct fddi_header *)dst->sa_data;
+ bcopy((caddr_t)fh->fddi_dhost, (caddr_t)edst, sizeof (edst));
+ if (*edst & 1)
+ m->m_flags |= (M_BCAST|M_MCAST);
+ etype = 0;
+ break;
}
case AF_UNSPEC:
Home |
Main Index |
Thread Index |
Old Index