projects
/
unix-history
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
tags
|
clone url
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
restore keywords
[unix-history]
/
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
847a1af
..
4303847
100644
(file)
--- 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.1
0 82/05/24
*/
+/* if_ec.c 4.1
4 82/06/05
*/
#include "ec.h"
#include "imp.h"
#include "ec.h"
#include "imp.h"
@@
-655,7
+655,19
@@
COUNT(ECPUT);
mp = m;
while (mp) {
mcp = mtod(mp, char *);
mp = m;
while (mp) {
mcp = mtod(mp, char *);
+ i = 0;
+ if ((int)bp&1) {
+ *bp++ = *mcp++;
+ i++;
+ }
for (i=0; i<mp->m_len; i++)
for (i=0; i<mp->m_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);
}
*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.
/*
* 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)
*/
struct mbuf *
ecget(ecbuf, totlen, off0)
@@
-707,7
+722,12
@@
COUNT(ECGET);
m->m_off = MMINOFF;
}
mcp = mtod(m, char *);
m->m_off = MMINOFF;
}
mcp = mtod(m, char *);
- for (i=0; i<len; i++)
+ for (i=0; i<len; i+=2) {
+ *(short *)mcp = *(short *)cp;
+ mcp += 2;
+ cp += 2;
+ }
+ if (len&1)
*mcp++ = *cp++;
*mp = m;
mp = &m->m_next;
*mcp++ = *cp++;
*mp = m;
mp = &m->m_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 = (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_net = sin->sin_addr.s_net;
- ifp->if_dstaddr =
ec
ifp->if_addr;
+ ifp->if_dstaddr = ifp->if_addr;
ifp->if_flags = IFF_UP|IFF_POINTOPOINT;
ifp->if_output = looutput;
if_attach(ifp);
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
}
#endif