Add FDDI source address spoofing via pseudo_AF_HDRCMPLT.
This commit is contained in:
parent
cb160f72a3
commit
7e223b244a
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: if_fddisubr.c,v 1.16 1998/04/29 21:37:54 matt Exp $ */
|
||||
/* $NetBSD: if_fddisubr.c,v 1.17 1998/05/01 03:44:52 thorpej Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1995, 1996
|
||||
|
@ -158,8 +158,8 @@ fddi_output(ifp, m0, dst, rt0)
|
|||
struct rtentry *rt0;
|
||||
{
|
||||
u_int16_t etype;
|
||||
int s, error = 0;
|
||||
u_char edst[6];
|
||||
int s, error = 0, hdrcmplt = 0;
|
||||
u_char esrc[6], edst[6];
|
||||
register struct mbuf *m = m0;
|
||||
register struct rtentry *rt;
|
||||
register struct fddi_header *fh;
|
||||
|
@ -401,6 +401,15 @@ fddi_output(ifp, m0, dst, rt0)
|
|||
} break;
|
||||
#endif /* LLC */
|
||||
|
||||
case pseudo_AF_HDRCMPLT:
|
||||
{
|
||||
struct ether_header *eh;
|
||||
hdrcmplt = 1;
|
||||
eh = (struct ether_header *)dst->sa_data;
|
||||
bcopy((caddr_t)eh->ether_shost, (caddr_t)esrc, sizeof (esrc));
|
||||
/* FALLTHROUGH */
|
||||
}
|
||||
|
||||
case AF_UNSPEC:
|
||||
{
|
||||
struct ether_header *eh;
|
||||
|
@ -486,8 +495,12 @@ fddi_output(ifp, m0, dst, rt0)
|
|||
#if NBPFILTER > 0
|
||||
queue_it:
|
||||
#endif
|
||||
bcopy((caddr_t)FDDIADDR(ifp), (caddr_t)fh->fddi_shost,
|
||||
sizeof(fh->fddi_shost));
|
||||
if (hdrcmplt)
|
||||
bcopy((caddr_t)esrc, (caddr_t)fh->fddi_shost,
|
||||
sizeof(fh->fddi_shost));
|
||||
else
|
||||
bcopy((caddr_t)FDDIADDR(ifp), (caddr_t)fh->fddi_shost,
|
||||
sizeof(fh->fddi_shost));
|
||||
s = splimp();
|
||||
/*
|
||||
* Queue message on interface, and start output if interface
|
||||
|
|
Loading…
Reference in New Issue