iodesc
struct iodesc *d;
efinet_put(struct iodesc *desc, void *pkt, size_t len)
efinet_get(struct iodesc *desc, void **pkt, time_t timeout)
efinet_init(struct iodesc *desc, void *machdep_hint __unused)
static ssize_t efinet_get(struct iodesc *, void **, time_t);
static void efinet_init(struct iodesc *, void *);
static ssize_t efinet_put(struct iodesc *, void *, size_t);
pxe_netif_init(struct iodesc *desc, void *machdep_hint __unused)
pxe_netif_get(struct iodesc *desc __unused, void **pkt, time_t timeout)
pxe_netif_put(struct iodesc *desc __unused, void *pkt, size_t len)
static void pxe_netif_init(struct iodesc *desc, void *machdep_hint);
static ssize_t pxe_netif_get(struct iodesc *, void **, time_t);
static ssize_t pxe_netif_put(struct iodesc *desc, void *pkt, size_t len);
arpsend(struct iodesc *d, void *pkt, size_t len)
arprecv(struct iodesc *d, void **pkt, void **payload, time_t tleft,
arp_reply(struct iodesc *d, void *pkt)
static ssize_t arpsend(struct iodesc *, void *, size_t);
static ssize_t arprecv(struct iodesc *, void **, void **, time_t, void *);
arpwhohas(struct iodesc *d, struct in_addr addr)
struct iodesc *d;
bootpsend(struct iodesc *d, void *pkt, size_t len)
bootprecv(struct iodesc *d, void **pkt, void **payload, time_t tleft,
static ssize_t bootpsend(struct iodesc *, void *, size_t);
static ssize_t bootprecv(struct iodesc *, void **, void **, time_t, void *);
struct iodesc *d;
struct iodesc *d;
sendether(struct iodesc *d, void *pkt, size_t len, uint8_t *dea, int etype)
readether(struct iodesc *d, void **pkt, void **payload, time_t tleft,
TAILQ_ENTRY(iodesc) io_link; /* next entry in list */
readipv4(struct iodesc *d, void **pkt, void **payload, ssize_t n)
readip(struct iodesc *d, void **pkt, void **payload, time_t tleft,
sendip(struct iodesc *d, void *pkt, size_t len, uint8_t proto)
sendrecv(struct iodesc *d,
ssize_t (*sproc)(struct iodesc *, void *, size_t),
ssize_t (*rproc)(struct iodesc *, void **, void**, time_t, void *),
ssize_t sendether(struct iodesc *d, void *pkt, size_t len,
ssize_t readether(struct iodesc *, void **, void **, time_t, u_int16_t *);
ssize_t sendip(struct iodesc *, void *, size_t, uint8_t);
ssize_t readip(struct iodesc *, void **, void **, time_t, uint8_t);
ssize_t sendudp(struct iodesc *, void *, size_t);
ssize_t readudp(struct iodesc *, void **, void **, time_t);
ssize_t sendrecv(struct iodesc *,
ssize_t (*)(struct iodesc *, void *, size_t),
ssize_t (*)(struct iodesc *, void **, void **, time_t,
u_char *arpwhohas(struct iodesc *, struct in_addr);
void arp_reply(struct iodesc *, void *);
netif_attach(struct netif *nif, struct iodesc *desc, void *machdep_hint)
netif_get(struct iodesc *desc, void **pkt, time_t timo)
netif_put(struct iodesc *desc, void *pkt, size_t len)
static struct iodesc *
struct iodesc *s;
struct iodesc *
struct iodesc *desc;
struct iodesc *s;
struct iodesc *last;
struct iodesc *s, *last;
typedef TAILQ_HEAD(socket_list, iodesc) socket_list_t;
void (*netif_init)(struct iodesc *, void *);
ssize_t (*netif_get)(struct iodesc *, void **, time_t);
ssize_t (*netif_put)(struct iodesc *, void *, size_t);
void netif_attach(struct netif *, struct iodesc *, void *);
ssize_t netif_get(struct iodesc *, void **, time_t);
ssize_t netif_put(struct iodesc *, void *, size_t);
struct iodesc *socktodesc(int);
struct iodesc *iodesc;
nfs_getrootfh(struct iodesc *d, char *path, uint32_t *fhlenp, uchar_t *fhp)
cc = rpc_call(d->iodesc, NFS_PROG, NFS_VER3, NFSPROCV3_LOOKUP,
cc = rpc_call(d->iodesc, NFS_PROG, NFS_VER3, NFSPROCV3_READLINK,
cc = rpc_call(d->iodesc, NFS_PROG, NFS_VER3, NFSPROCV3_READ,
struct iodesc *desc;
nfs_root_node.iodesc = desc;
newfd->iodesc = currfd->iodesc;
cc = rpc_call(fp->iodesc, NFS_PROG, NFS_VER3, NFSPROCV3_READDIR,
rarpsend(struct iodesc *d, void *pkt, size_t len)
rarprecv(struct iodesc *d, void **pkt, void **payload, time_t tleft,
static ssize_t rarpsend(struct iodesc *, void *, size_t);
static ssize_t rarprecv(struct iodesc *, void **, void **, time_t, void *);
struct iodesc *d;
static int rpc_getport(struct iodesc *, n_long, n_long);
rpc_call(struct iodesc *d, n_long prog, n_long vers, n_long proc,
recvrpc(struct iodesc *d, void **pkt, void **payload, time_t tleft,
rpc_getport(struct iodesc *d, n_long prog, n_long vers)
static ssize_t recvrpc(struct iodesc *, void **, void **, time_t, void *);
ssize_t rpc_call(struct iodesc *, n_long, n_long, n_long,
struct iodesc *iodesc;
sendudp(h->iodesc, &wbuf.t, wtail - (char *)&wbuf.t);
sendudp(h->iodesc, &wbuf.t, wtail - (char *)&wbuf.t);
recvtftp(struct iodesc *d, void **pkt, void **payload, time_t tleft,
h->iodesc->myport = htons(tftpport + (getsecs() & 0x3ff));
h->iodesc->destport = htons(IPPORT_TFTP);
h->iodesc->xid = 1; /* expected block */
res = sendrecv(h->iodesc, &sendudp, &wbuf.t, wtail - (char *)&wbuf.t,
h->iodesc->xid = h->currblock + 1; /* expected block */
res = sendrecv(h->iodesc, &sendudp, &wbuf.t, wtail - (char *)&wbuf.t,
sendudp(h->iodesc, &wbuf.t, wtail - (char *)&wbuf.t);
struct iodesc *io;
tftpfile->iodesc = io = socktodesc(*(int *)(dev->d_opendata));
static ssize_t recvtftp(struct iodesc *, void **, void **, time_t, void *);
readudp(struct iodesc *d, void **pkt, void **payload, time_t tleft)
sendudp(struct iodesc *d, void *pkt, size_t len)