Xinu7/src/serve11/sys/dgcntl.c
/* dgcntl.c - dgcntl */
#include <conf.h>
#include <kernel.h>
#include <network.h>
/*------------------------------------------------------------------------
* dgcntl - control function for datagram pseudo-devices
*------------------------------------------------------------------------
*/
dgcntl(devptr, func, arg)
struct devsw *devptr;
int func;
int arg;
{
struct dgblk *dgptr;
int freebuf();
char ps;
int ret;
disable(ps);
dgptr = (struct dgblk *)devptr->dvioblk;
ret = OK;
switch (func) {
case DG_SETMODE: /* set mode bits */
dgptr->dg_mode = arg;
break;
case DG_CLEAR: /* clear queued packets */
preset(dgptr->dg_xport, freebuf);
break;
default:
ret = SYSERR;
}
restore(ps);
return(ret);
}