diff options
author | mdodd <mdodd@FreeBSD.org> | 2002-03-29 09:37:56 +0000 |
---|---|---|
committer | mdodd <mdodd@FreeBSD.org> | 2002-03-29 09:37:56 +0000 |
commit | d6c218d60ac8158e4ee5977f2354a9571c44d831 (patch) | |
tree | d335e864f0249e4b68ca873833f412567c2ec973 | |
parent | b7241ccef04c3755f12b4020557c0e1c8420c7bf (diff) | |
download | FreeBSD-src-d6c218d60ac8158e4ee5977f2354a9571c44d831.zip FreeBSD-src-d6c218d60ac8158e4ee5977f2354a9571c44d831.tar.gz |
- Simplify first arg of nd6_storelladdr().
- Use struct fddi_header where appropriate.
- Use bcopy() rather than memcpy().
- Use FDDI_ADDR_LEN macro instead of ETHER_ADDR_LEN macro.
- Add loadable module support.
-rw-r--r-- | sys/net/if_fddisubr.c | 44 |
1 files changed, 29 insertions, 15 deletions
diff --git a/sys/net/if_fddisubr.c b/sys/net/if_fddisubr.c index 1590450..05817b2 100644 --- a/sys/net/if_fddisubr.c +++ b/sys/net/if_fddisubr.c @@ -43,16 +43,20 @@ #include <sys/param.h> #include <sys/systm.h> +#include <sys/kernel.h> +#include <sys/malloc.h> #include <sys/mbuf.h> +#include <sys/module.h> #include <sys/socket.h> -#include <sys/malloc.h> +#include <sys/sockio.h> #include <net/if.h> -#include <net/netisr.h> -#include <net/route.h> #include <net/if_llc.h> #include <net/if_dl.h> #include <net/if_types.h> +#include <net/netisr.h> +#include <net/route.h> +#include <net/bpf.h> #include <net/fddi.h> #if defined(INET) || defined(INET6) @@ -151,7 +155,7 @@ fddi_output(ifp, m, dst, rt0) #endif #ifdef INET6 case AF_INET6: - if (!nd6_storelladdr(&ac->ac_if, rt, m, dst, (u_char *)edst)) { + if (!nd6_storelladdr(ifp, rt, m, dst, (u_char *)edst)) { /* Something bad happened */ return (0); } @@ -209,10 +213,10 @@ fddi_output(ifp, m, dst, rt0) case pseudo_AF_HDRCMPLT: { - struct ether_header *eh; + struct fddi_header *fh; hdrcmplt = 1; - eh = (struct ether_header *)dst->sa_data; - (void)memcpy((caddr_t)esrc, (caddr_t)eh->ether_shost, FDDI_ADDR_LEN); + fh = (struct fddi_header *)dst->sa_data; + bcopy((caddr_t)fh->fddi_shost, (caddr_t)esrc, FDDI_ADDR_LEN); /* FALLTHROUGH */ } @@ -221,7 +225,7 @@ fddi_output(ifp, m, dst, rt0) struct ether_header *eh; loop_copy = -1; eh = (struct ether_header *)dst->sa_data; - (void)memcpy((caddr_t)edst, (caddr_t)eh->ether_dhost, FDDI_ADDR_LEN); + bcopy((caddr_t)eh->ether_dhost, (caddr_t)edst, FDDI_ADDR_LEN); if (*edst & 1) m->m_flags |= (M_BCAST|M_MCAST); type = eh->ether_type; @@ -276,7 +280,7 @@ fddi_output(ifp, m, dst, rt0) l->llc_control = LLC_UI; l->llc_dsap = l->llc_ssap = LLC_SNAP_LSAP; l->llc_snap.org_code[0] = l->llc_snap.org_code[1] = l->llc_snap.org_code[2] = 0; - (void)memcpy((caddr_t) &l->llc_snap.ether_type, (caddr_t) &type, + bcopy((caddr_t)&type, (caddr_t)&l->llc_snap.ether_type, sizeof(u_int16_t)); } @@ -289,13 +293,12 @@ fddi_output(ifp, m, dst, rt0) senderr(ENOBUFS); fh = mtod(m, struct fddi_header *); fh->fddi_fc = FDDIFC_LLC_ASYNC|FDDIFC_LLC_PRIO4; - (void)memcpy((caddr_t)fh->fddi_dhost, (caddr_t)edst, FDDI_ADDR_LEN); + bcopy((caddr_t)edst, (caddr_t)fh->fddi_dhost, FDDI_ADDR_LEN); queue_it: if (hdrcmplt) - (void)memcpy((caddr_t)fh->fddi_shost, (caddr_t)esrc, - FDDI_ADDR_LEN); + bcopy((caddr_t)esrc, (caddr_t)fh->fddi_shost, FDDI_ADDR_LEN); else - (void)memcpy((caddr_t)fh->fddi_shost, (caddr_t)ac->ac_enaddr, + bcopy((caddr_t)ac->ac_enaddr, (caddr_t)fh->fddi_shost, FDDI_ADDR_LEN); /* * If a simplex interface, and the packet is being sent to our @@ -539,7 +542,7 @@ fddi_resolvemulti(ifp, llsa, sa) sdl->sdl_index = ifp->if_index; sdl->sdl_type = IFT_FDDI; sdl->sdl_nlen = 0; - sdl->sdl_alen = ETHER_ADDR_LEN; /* XXX */ + sdl->sdl_alen = FDDI_ADDR_LEN; sdl->sdl_slen = 0; e_addr = LLADDR(sdl); ETHER_MAP_IP_MULTICAST(&sin->sin_addr, e_addr); @@ -568,7 +571,7 @@ fddi_resolvemulti(ifp, llsa, sa) sdl->sdl_index = ifp->if_index; sdl->sdl_type = IFT_FDDI; sdl->sdl_nlen = 0; - sdl->sdl_alen = ETHER_ADDR_LEN; /* XXX */ + sdl->sdl_alen = FDDI_ADDR_LEN; sdl->sdl_slen = 0; e_addr = LLADDR(sdl); ETHER_MAP_IPV6_MULTICAST(&sin6->sin6_addr, e_addr); @@ -583,4 +586,15 @@ fddi_resolvemulti(ifp, llsa, sa) */ return (EAFNOSUPPORT); } + + return (0); } + +static moduledata_t fddi_mod = { + "fddi", /* module name */ + NULL, /* event handler */ + 0 /* extra data */ +}; + +DECLARE_MODULE(fddi, fddi_mod, SI_SUB_PSEUDO, SI_ORDER_ANY); +MODULE_VERSION(fddi, 1); |