dllist
GetFileInfo(struct dllist *dl, int info)
mopFileRead(struct dllist *dlslot, u_char *buf)
GetMopFileInfo(struct dllist *dl, int info)
GetElf32FileInfo(struct dllist *dl, int info)
GetElf64FileInfo(struct dllist *dl, int info)
GetAOutFileInfo(struct dllist *dl, int info)
ssize_t mopFileRead(struct dllist *, u_char *);
int GetMopFileInfo(struct dllist *, int);
int GetElf32FileInfo(struct dllist *, int);
int GetElf64FileInfo(struct dllist *, int);
int GetAOutFileInfo(struct dllist *, int);
int GetFileInfo(struct dllist *, int);
struct dllist dl;
struct dllist dl;
mopStartLoad(u_char *dst, u_char *src, struct dllist *dl_rpr, int trans)
if (dllist[i].status != DL_STATUS_FREE)
if (mopCmpEAddr(dllist[i].eaddr, dst) == 0)
if (dllist[i].status == DL_STATUS_FREE) {
bcopy(dst, dllist[i].eaddr, 6);
dllist[slot] = *dl_rpr;
dllist[slot].status = DL_STATUS_READ_IMGHDR;
GetFileInfo(&dllist[slot], 0);
dllist[slot].nloadaddr = dllist[slot].loadaddr;
dllist[slot].lseek = lseek(dllist[slot].ldfd, 0L, SEEK_CUR);
dllist[slot].a_lseek = 0;
dllist[slot].count = 0;
if ((dllist[slot].dl_bsz >= 1492) || (dllist[slot].dl_bsz == 0))
dllist[slot].dl_bsz = 1492;
if (dllist[slot].dl_bsz == 1030) /* VS/uVAX 2000 needs this */
dllist[slot].dl_bsz = 1000;
dllist[slot].dl_bsz = dllist[slot].dl_bsz - 8;
mopPutChar(pkt, &idx, dllist[slot].count);
mopPutLong(pkt, &idx, dllist[slot].loadaddr);
len = mopFileRead(&dllist[slot], &pkt[idx]);
dllist[slot].nloadaddr = dllist[slot].loadaddr + len;
if (pfWrite(dllist[slot].ii->fd, pkt, idx, trans) != idx)
dllist[slot].status = DL_STATUS_SENT_MLD;
if (dllist[i].status != DL_STATUS_FREE) {
if (mopCmpEAddr(dst, dllist[i].eaddr) == 0)
if (new_count == ((dllist[slot].count+1) % 256)) {
dllist[slot].loadaddr = dllist[slot].nloadaddr;
dllist[slot].count = new_count;
if (dllist[slot].status == DL_STATUS_SENT_PLT) {
close(dllist[slot].ldfd);
dllist[slot].ldfd = 0;
dllist[slot].status = DL_STATUS_FREE;
dllist[slot].lseek = lseek(dllist[slot].ldfd, 0L, SEEK_CUR);
if (dllist[slot].dl_bsz >= 1492)
dllist[slot].dl_bsz = 1492;
mopPutChar(pkt, &idx, dllist[slot].count);
mopPutLong(pkt, &idx, dllist[slot].loadaddr);
len = mopFileRead(&dllist[slot], &pkt[idx]);
dllist[slot].nloadaddr = dllist[slot].loadaddr + len;
mopPutChar(pkt, &idx, dllist[slot].count);
mopPutLong(pkt, &idx, dllist[slot].xferaddr);
dllist[slot].status = DL_STATUS_SENT_PLT;
dllist[slot].status = DL_STATUS_FREE;
if (pfWrite(dllist[slot].ii->fd, pkt, idx, trans) != idx)
struct dllist dl, *dl_rpr;
struct dllist dllist[MAXDL]; /* dump/load list */
mopProcessInfo(u_char *pkt, int *idx, u_short moplen, struct dllist *dl_rpr,
struct dllist dl, *dl_rpr;