- return(error);
-}
-
-enpsetaddr(ifp, sin)
-register struct ifnet *ifp;
-register struct sockaddr_in *sin;
-{
-
- ifp->if_addr = *(struct sockaddr *)sin;
- ifp->if_net = in_netof(sin->sin_addr);
- ifp->if_host[0] = in_lnaof(sin->sin_addr);
- sin = (struct sockaddr_in *)&ifp->if_broadaddr;
- sin->sin_family = AF_INET;
- sin->sin_addr = if_makeaddr(ifp->if_net, INADDR_ANY);
- ifp->if_flags |= IFF_BROADCAST;
-}
-
-
-/*
- * Get the ethernet addr, store it and print it
- * Read the ethernet address off the board, one byte at a time.
- * put it in enp_softc
- */
-
-
-enpgetaddr( unit )
-int unit;
-{
- register struct enp_softc *es = &enp_softc[unit];
- register ENPDEVICE *addr =(ENPDEVICE *)enpinfo[unit]->ui_addr;
- int i;
-
-#ifdef TAHOE
- enpcopy(&addr->enp_addr.e_baseaddr, &es->es_boardaddr, sizeof(es->es_boardaddr));
-#else
- es->es_boardaddr = addr->enp_addr.e_baseaddr;
-#endif TAHOE
- bcopy(&es->es_boardaddr, es->es_enaddr, ETHADDR_SIZE);
- return( 1 );
-}
-
-/*
- * enpram device
- *
- */
-
-enpr_open( dev )
-{
- register int unit = minor(dev);
- register struct vba_device *md;
- register ENPDEVICE *addr;
-
- if (unit >= NENP || (md = enpinfo[unit]) == 0 || md->ui_alive == 0 ||
- (addr = (ENPDEVICE *)md->ui_addr) == (ENPDEVICE *)0)
- return(ENODEV);
- if (addr->enp_state != S_ENPRESET)
- return(EACCES); /* enp is not in reset state, don't open */
- if ( !enpismapped[unit] ) {
- ioaccess(ENPmap[unit],ENPmapa[unit],ENPBPTE);
- ++enpismapped[unit];
- }
- enpram[unit] = ENP_OPEN;
- return( 0 );
-}
-
-enpr_close(dev)
-{
- enpram[minor(dev)] = ENP_CLOSE;
- return( 0 );
-}
-
-enpr_read( dev,uio )
-int dev;
-register struct uio *uio;
-{
- register ENPDEVICE *addr;
- register struct iovec *iov;
- register r=0;
-
- if (enpram[minor(dev)] != ENP_OPEN)
- return(EACCES);
- if ( uio->uio_offset > RAM_SIZE )
- return( ENODEV );
- if ( uio->uio_offset + iov->iov_len > RAM_SIZE )
- iov->iov_len = RAM_SIZE - uio->uio_offset;
- addr = (ENPDEVICE *)enpinfo[ minor( dev ) ]->ui_addr;
- iov = uio->uio_iov;
-
- if( r = enpcopyout( &addr->enp_ram[ uio->uio_offset ], iov->iov_base,
- iov->iov_len ) )
- return( r );
-
- uio->uio_resid -= iov->iov_len;
- iov->iov_len = 0;
-
- return( 0 );