X-Git-Url: https://git.subgeniuskitty.com/unix-history/.git/blobdiff_plain/4023eed27a3d5dfd1145560a2a8cc42880469c82..1b10c958d9dba33c94efa79a755d1515a1fcea0f:/usr/src/sys/net/raw_usrreq.c diff --git a/usr/src/sys/net/raw_usrreq.c b/usr/src/sys/net/raw_usrreq.c index 3c83a9da74..b301fdeef4 100644 --- a/usr/src/sys/net/raw_usrreq.c +++ b/usr/src/sys/net/raw_usrreq.c @@ -1,18 +1,17 @@ -/* raw_usrreq.c 4.17 82/06/20 */ +/* raw_usrreq.c 4.25 83/02/10 */ #include "../h/param.h" #include "../h/mbuf.h" #include "../h/protosw.h" #include "../h/socket.h" #include "../h/socketvar.h" -#include "../h/mtpr.h" -#include "../net/in.h" -#include "../net/in_systm.h" +#include "../h/errno.h" + #include "../net/if.h" +#include "../net/netisr.h" #include "../net/raw_cb.h" -#include -int rawqmaxlen = IFQ_MAXLEN; +#include "../vax/mtpr.h" /* * Initialize raw connection block q. @@ -39,13 +38,12 @@ raw_input(m0, proto, src, dst) /* * Rip off an mbuf for a generic header. */ - m = m_get(M_DONTWAIT); + m = m_get(M_DONTWAIT, MT_HEADER); if (m == 0) { m_freem(m0); return; } m->m_next = m0; - m->m_off = MMINOFF; m->m_len = sizeof(struct raw_header); rh = mtod(m, struct raw_header *); rh->raw_dst = *dst; @@ -112,7 +110,7 @@ next: continue; if (last) { struct mbuf *n; - if (n = m_copy(m->m_next, 0, (int)M_COPYALL)) + if ((n = m_copy(m->m_next, 0, (int)M_COPYALL)) == 0) goto nospace; if (sbappendaddr(&last->so_rcv, &rh->raw_src, n)==0) { /* should notify about lost packet */ @@ -136,6 +134,7 @@ drop: goto next; } +/*ARGSUSED*/ raw_ctlinput(cmd, arg) int cmd; caddr_t arg; @@ -143,14 +142,14 @@ raw_ctlinput(cmd, arg) if (cmd < 0 || cmd > PRC_NCMDS) return; + /* INCOMPLETE */ } /*ARGSUSED*/ -raw_usrreq(so, req, m, addr) +raw_usrreq(so, req, m, nam) struct socket *so; int req; - struct mbuf *m; - caddr_t addr; + struct mbuf *m, *nam; { register struct rawcb *rp = sotorawcb(so); int error = 0; @@ -170,7 +169,7 @@ raw_usrreq(so, req, m, addr) return (EACCES); if (rp) return (EINVAL); - error = raw_attach(so, (struct sockaddr *)addr); + error = raw_attach(so); break; /* @@ -192,7 +191,7 @@ raw_usrreq(so, req, m, addr) case PRU_CONNECT: if (rp->rcb_flags & RAW_FADDR) return (EISCONN); - raw_connaddr(rp, (struct sockaddr *)addr); + raw_connaddr(rp, nam); soisconnected(so); break; @@ -215,14 +214,14 @@ raw_usrreq(so, req, m, addr) * routine handles any massaging necessary. */ case PRU_SEND: - if (addr) { + if (nam) { if (rp->rcb_flags & RAW_FADDR) return (EISCONN); - raw_connaddr(rp, (struct sockaddr *)addr); + raw_connaddr(rp, nam); } else if ((rp->rcb_flags & RAW_FADDR) == 0) return (ENOTCONN); error = (*so->so_proto->pr_output)(m, so); - if (addr) + if (nam) rp->rcb_flags &= ~RAW_FADDR; break; @@ -245,7 +244,9 @@ raw_usrreq(so, req, m, addr) break; case PRU_SOCKADDR: - bcopy(addr, (caddr_t)&rp->rcb_laddr, sizeof (struct sockaddr)); + bcopy((caddr_t)&rp->rcb_laddr, mtod(nam, caddr_t), + sizeof (struct sockaddr)); + nam->m_len = sizeof (struct sockaddr); break; default: