X-Git-Url: https://git.subgeniuskitty.com/unix-history/.git/blobdiff_plain/dc39362e6461c1285a5af46c7190dd2401064739..949a0907b43a85dd280bf72409a5816702ecf8ca:/usr/src/sys/vax/if/if_ec.c diff --git a/usr/src/sys/vax/if/if_ec.c b/usr/src/sys/vax/if/if_ec.c index 847a1afa7f..43038476f6 100644 --- a/usr/src/sys/vax/if/if_ec.c +++ b/usr/src/sys/vax/if/if_ec.c @@ -1,4 +1,4 @@ -/* if_ec.c 4.10 82/05/24 */ +/* if_ec.c 4.14 82/06/05 */ #include "ec.h" #include "imp.h" @@ -655,7 +655,19 @@ COUNT(ECPUT); mp = m; while (mp) { mcp = mtod(mp, char *); + i = 0; + if ((int)bp&1) { + *bp++ = *mcp++; + i++; + } for (i=0; im_len; i++) + while (i < mp->m_len) { + *(short *)bp = *(short *)mcp; + bp += 2; + mcp += 2; + i += 2; + } + if (mp->m_len&1) *bp++ = *mcp++; mp = m_free(mp); } @@ -666,6 +678,9 @@ COUNT(ECPUT); /* * Routine to copy from UNIBUS memory into mbufs. * Similar in spirit to if_rubaget. + * + * Warning: This makes the fairly safe assumption that + * mbufs have even lengths. */ struct mbuf * ecget(ecbuf, totlen, off0) @@ -707,7 +722,12 @@ COUNT(ECGET); m->m_off = MMINOFF; } mcp = mtod(m, char *); - for (i=0; im_next; @@ -758,11 +778,12 @@ COUNT(ECLHINIT); sin = (struct sockaddr_in *)&ifp->if_addr; sin->sin_family = AF_INET; sin->sin_addr.s_addr = addr; + sin->sin_addr.s_lh = ecifp->if_host[0]; ifp->if_net = sin->sin_addr.s_net; - ifp->if_dstaddr = ecifp->if_addr; + ifp->if_dstaddr = ifp->if_addr; ifp->if_flags = IFF_UP|IFF_POINTOPOINT; ifp->if_output = looutput; if_attach(ifp); - rtinit(&ifp->if_addr, &ifp->if_addr, RTF_UP|RTF_DIRECT); + rtinit(&ifp->if_addr, &ifp->if_addr, RTF_UP|RTF_DIRECT|RTF_HOST); } #endif