Author: tsoome
Date: Thu Mar 30 19:32:25 2017
New Revision: 316287
URL: https://svnweb.freebsd.org/changeset/base/316287

Log:
  Remove OLD_NFSV2 from loader and libstand
  
  We have parallel NFSv2 and NFSv3 reader implementations, only configurable at
  build time, defaulting to v3. Remove v2.
  
  Reviewed by:  allanjude
  Approved by:  allanjude (mentor)
  Differential Revision:        https://reviews.freebsd.org/D10206

Modified:
  head/lib/libstand/nfs.c
  head/lib/libstand/nfsv2.h
  head/sys/boot/i386/libi386/pxe.c

Modified: head/lib/libstand/nfs.c
==============================================================================
--- head/lib/libstand/nfs.c     Thu Mar 30 18:21:36 2017        (r316286)
+++ head/lib/libstand/nfs.c     Thu Mar 30 19:32:25 2017        (r316287)
@@ -54,73 +54,6 @@ __FBSDID("$FreeBSD$");
 #define NFSREAD_MIN_SIZE 1024
 #define NFSREAD_MAX_SIZE 4096
 
-/* Define our own NFS attributes without NQNFS stuff. */
-#ifdef OLD_NFSV2
-struct nfsv2_fattrs {
-       n_long  fa_type;
-       n_long  fa_mode;
-       n_long  fa_nlink;
-       n_long  fa_uid;
-       n_long  fa_gid;
-       n_long  fa_size;
-       n_long  fa_blocksize;
-       n_long  fa_rdev;
-       n_long  fa_blocks;
-       n_long  fa_fsid;
-       n_long  fa_fileid;
-       struct nfsv2_time fa_atime;
-       struct nfsv2_time fa_mtime;
-       struct nfsv2_time fa_ctime;
-};
-
-struct nfs_read_args {
-       u_char  fh[NFS_FHSIZE];
-       n_long  off;
-       n_long  len;
-       n_long  xxx;                    /* XXX what's this for? */
-};
-
-/* Data part of nfs rpc reply (also the largest thing we receive) */
-struct nfs_read_repl {
-       n_long  errno;
-       struct  nfsv2_fattrs fa;
-       n_long  count;
-       u_char  data[NFSREAD_MAX_SIZE];
-};
-
-#ifndef NFS_NOSYMLINK
-struct nfs_readlnk_repl {
-       n_long  errno;
-       n_long  len;
-       char    path[NFS_MAXPATHLEN];
-};
-#endif
-
-struct nfs_readdir_args {
-       u_char  fh[NFS_FHSIZE];
-       n_long  cookie;
-       n_long  count;
-};
-
-struct nfs_readdir_data {
-       n_long  fileid;
-       n_long  len;
-       char    name[0];
-};
-
-struct nfs_readdir_off {
-       n_long  cookie;
-       n_long  follows;
-};
-
-struct nfs_iodesc {
-       struct  iodesc  *iodesc;
-       off_t   off;
-       u_char  fh[NFS_FHSIZE];
-       struct nfsv2_fattrs fa; /* all in network order */
-};
-#else  /* !OLD_NFSV2 */
-
 /* NFSv3 definitions */
 #define        NFS_V3MAXFHSIZE         64
 #define        NFS_VER3                3
@@ -185,7 +118,6 @@ struct nfs_iodesc {
        struct nfsv3_fattrs fa; /* all in network order */
        uint64_t cookie;
 };
-#endif /* OLD_NFSV2 */
 
 /*
  * XXX interactions with tftp? See nfswrapper.c for a confusing
@@ -246,612 +178,6 @@ set_nfs_read_size(void)
        setenv("nfs.read_size", buf, 1);
 }
 
-#ifdef OLD_NFSV2
-/*
- * Fetch the root file handle (call mount daemon)
- * Return zero or error number.
- */
-int
-nfs_getrootfh(struct iodesc *d, char *path, u_char *fhp)
-{
-       int len;
-       struct args {
-               n_long  len;
-               char    path[FNAME_SIZE];
-       } *args;
-       struct repl {
-               n_long  errno;
-               u_char  fh[NFS_FHSIZE];
-       } *repl;
-       struct {
-               n_long  h[RPC_HEADER_WORDS];
-               struct args d;
-       } sdata;
-       struct {
-               n_long  h[RPC_HEADER_WORDS];
-               struct repl d;
-       } rdata;
-       size_t cc;
-
-#ifdef NFS_DEBUG
-       if (debug)
-               printf("nfs_getrootfh: %s\n", path);
-#endif
-
-       args = &sdata.d;
-       repl = &rdata.d;
-
-       bzero(args, sizeof(*args));
-       len = strlen(path);
-       if (len > sizeof(args->path))
-               len = sizeof(args->path);
-       args->len = htonl(len);
-       bcopy(path, args->path, len);
-       len = 4 + roundup(len, 4);
-
-       cc = rpc_call(d, RPCPROG_MNT, RPCMNT_VER1, RPCMNT_MOUNT,
-           args, len, repl, sizeof(*repl));
-       if (cc == -1) {
-               /* errno was set by rpc_call */
-               return (errno);
-       }
-       if (cc < 4)
-               return (EBADRPC);
-       if (repl->errno)
-               return (ntohl(repl->errno));
-       bcopy(repl->fh, fhp, sizeof(repl->fh));
-
-       set_nfs_read_size();
-       return (0);
-}
-
-/*
- * Lookup a file.  Store handle and attributes.
- * Return zero or error number.
- */
-int
-nfs_lookupfh(struct nfs_iodesc *d, const char *name, struct nfs_iodesc *newfd)
-{
-       int len, rlen;
-       struct args {
-               u_char  fh[NFS_FHSIZE];
-               n_long  len;
-               char    name[FNAME_SIZE];
-       } *args;
-       struct repl {
-               n_long  errno;
-               u_char  fh[NFS_FHSIZE];
-               struct  nfsv2_fattrs fa;
-       } *repl;
-       struct {
-               n_long  h[RPC_HEADER_WORDS];
-               struct args d;
-       } sdata;
-       struct {
-               n_long  h[RPC_HEADER_WORDS];
-               struct repl d;
-       } rdata;
-       ssize_t cc;
-
-#ifdef NFS_DEBUG
-       if (debug)
-               printf("lookupfh: called\n");
-#endif
-
-       args = &sdata.d;
-       repl = &rdata.d;
-
-       bzero(args, sizeof(*args));
-       bcopy(d->fh, args->fh, sizeof(args->fh));
-       len = strlen(name);
-       if (len > sizeof(args->name))
-               len = sizeof(args->name);
-       bcopy(name, args->name, len);
-       args->len = htonl(len);
-       len = 4 + roundup(len, 4);
-       len += NFS_FHSIZE;
-
-       rlen = sizeof(*repl);
-
-       cc = rpc_call(d->iodesc, NFS_PROG, NFS_VER2, NFSPROC_LOOKUP,
-           args, len, repl, rlen);
-       if (cc == -1)
-               return (errno);         /* XXX - from rpc_call */
-       if (cc < 4)
-               return (EIO);
-       if (repl->errno) {
-               /* saerrno.h now matches NFS error numbers. */
-               return (ntohl(repl->errno));
-       }
-       bcopy( repl->fh, &newfd->fh, sizeof(newfd->fh));
-       bcopy(&repl->fa, &newfd->fa, sizeof(newfd->fa));
-       return (0);
-}
-
-#ifndef NFS_NOSYMLINK
-/*
- * Get the destination of a symbolic link.
- */
-int
-nfs_readlink(struct nfs_iodesc *d, char *buf)
-{
-       struct {
-               n_long  h[RPC_HEADER_WORDS];
-               u_char fh[NFS_FHSIZE];
-       } sdata;
-       struct {
-               n_long  h[RPC_HEADER_WORDS];
-               struct nfs_readlnk_repl d;
-       } rdata;
-       ssize_t cc;
-
-#ifdef NFS_DEBUG
-       if (debug)
-               printf("readlink: called\n");
-#endif
-
-       bcopy(d->fh, sdata.fh, NFS_FHSIZE);
-       cc = rpc_call(d->iodesc, NFS_PROG, NFS_VER2, NFSPROC_READLINK,
-                     sdata.fh, NFS_FHSIZE,
-                     &rdata.d, sizeof(rdata.d));
-       if (cc == -1)
-               return (errno);
-
-       if (cc < 4)
-               return (EIO);
-
-       if (rdata.d.errno)
-               return (ntohl(rdata.d.errno));
-
-       rdata.d.len = ntohl(rdata.d.len);
-       if (rdata.d.len > NFS_MAXPATHLEN)
-               return (ENAMETOOLONG);
-
-       bcopy(rdata.d.path, buf, rdata.d.len);
-       buf[rdata.d.len] = 0;
-       return (0);
-}
-#endif
-
-/*
- * Read data from a file.
- * Return transfer count or -1 (and set errno)
- */
-ssize_t
-nfs_readdata(struct nfs_iodesc *d, off_t off, void *addr, size_t len)
-{
-       struct nfs_read_args *args;
-       struct nfs_read_repl *repl;
-       struct {
-               n_long  h[RPC_HEADER_WORDS];
-               struct nfs_read_args d;
-       } sdata;
-       struct {
-               n_long  h[RPC_HEADER_WORDS];
-               struct nfs_read_repl d;
-       } rdata;
-       size_t cc;
-       long x;
-       int hlen, rlen;
-
-       args = &sdata.d;
-       repl = &rdata.d;
-
-       bcopy(d->fh, args->fh, NFS_FHSIZE);
-       args->off = htonl((n_long)off);
-       if (len > nfs_read_size)
-               len = nfs_read_size;
-       args->len = htonl((n_long)len);
-       args->xxx = htonl((n_long)0);
-       hlen = offsetof(struct nfs_read_rpl, data[0]);
-
-       cc = rpc_call(d->iodesc, NFS_PROG, NFS_VER2, NFSPROC_READ,
-           args, sizeof(*args),
-           repl, sizeof(*repl));
-       if (cc == -1) {
-               /* errno was already set by rpc_call */
-               return (-1);
-       }
-       if (cc < hlen) {
-               errno = EBADRPC;
-               return (-1);
-       }
-       if (repl->errno) {
-               errno = ntohl(repl->errno);
-               return (-1);
-       }
-       rlen = cc - hlen;
-       x = ntohl(repl->count);
-       if (rlen < x) {
-               printf("nfsread: short packet, %d < %ld\n", rlen, x);
-               errno = EBADRPC;
-               return(-1);
-       }
-       bcopy(repl->data, addr, x);
-       return (x);
-}
-
-/*
- * Open a file.
- * return zero or error number
- */
-int
-nfs_open(const char *upath, struct open_file *f)
-{
-       struct iodesc *desc;
-       struct nfs_iodesc *currfd;
-       char buf[2 * NFS_FHSIZE + 3];
-       u_char *fh;
-       char *cp;
-       int i;
-#ifndef NFS_NOSYMLINK
-       struct nfs_iodesc *newfd;
-       struct nfsv2_fattrs *fa;
-       char *ncp;
-       int c;
-       char namebuf[NFS_MAXPATHLEN + 1];
-       char linkbuf[NFS_MAXPATHLEN + 1];
-       int nlinks = 0;
-#endif
-       int error;
-       char *path;
-
-       if (netproto != NET_NFS)
-               return (EINVAL);
-
-#ifdef NFS_DEBUG
-       if (debug)
-           printf("nfs_open: %s (rootpath=%s)\n", upath, rootpath);
-#endif
-       if (!rootpath[0]) {
-               printf("no rootpath, no nfs\n");
-               return (ENXIO);
-       }
-
-       /*
-        * This is silly - we should look at dv_type but that value is
-        * arch dependant and we can't use it here.
-        */
-#ifndef __i386__
-       if (strcmp(f->f_dev->dv_name, "net") != 0)
-               return(EINVAL);
-#else
-       if (strcmp(f->f_dev->dv_name, "pxe") != 0)
-               return(EINVAL);
-#endif
-
-       if (!(desc = socktodesc(*(int *)(f->f_devdata))))
-               return(EINVAL);
-
-       /* Bind to a reserved port. */
-       desc->myport = htons(--rpc_port);
-       desc->destip = rootip;
-       if ((error = nfs_getrootfh(desc, rootpath, nfs_root_node.fh)))
-               return (error);
-       nfs_root_node.fa.fa_type  = htonl(NFDIR);
-       nfs_root_node.fa.fa_mode  = htonl(0755);
-       nfs_root_node.fa.fa_nlink = htonl(2);
-       nfs_root_node.iodesc = desc;
-
-       fh = &nfs_root_node.fh[0];
-       buf[0] = 'X';
-       cp = &buf[1];
-       for (i = 0; i < NFS_FHSIZE; i++, cp += 2)
-               sprintf(cp, "%02x", fh[i]);
-       sprintf(cp, "X");
-       setenv("boot.nfsroot.server", inet_ntoa(rootip), 1);
-       setenv("boot.nfsroot.path", rootpath, 1);
-       setenv("boot.nfsroot.nfshandle", buf, 1);
-
-       /* Allocate file system specific data structure */
-       currfd = malloc(sizeof(*newfd));
-       if (currfd == NULL) {
-               error = ENOMEM;
-               goto out;
-       }
-
-#ifndef NFS_NOSYMLINK
-       bcopy(&nfs_root_node, currfd, sizeof(*currfd));
-       newfd = NULL;
-
-       cp = path = strdup(upath);
-       if (path == NULL) {
-           error = ENOMEM;
-           goto out;
-       }
-       while (*cp) {
-               /*
-                * Remove extra separators
-                */
-               while (*cp == '/')
-                       cp++;
-
-               if (*cp == '\0')
-                       break;
-               /*
-                * Check that current node is a directory.
-                */
-               if (currfd->fa.fa_type != htonl(NFDIR)) {
-                       error = ENOTDIR;
-                       goto out;
-               }
-
-               /* allocate file system specific data structure */
-               newfd = malloc(sizeof(*newfd));
-               newfd->iodesc = currfd->iodesc;
-
-               /*
-                * Get next component of path name.
-                */
-               {
-                       int len = 0;
-
-                       ncp = cp;
-                       while ((c = *cp) != '\0' && c != '/') {
-                               if (++len > NFS_MAXNAMLEN) {
-                                       error = ENOENT;
-                                       goto out;
-                               }
-                               cp++;
-                       }
-                       *cp = '\0';
-               }
-
-               /* lookup a file handle */
-               error = nfs_lookupfh(currfd, ncp, newfd);
-               *cp = c;
-               if (error)
-                       goto out;
-
-               /*
-                * Check for symbolic link
-                */
-               if (newfd->fa.fa_type == htonl(NFLNK)) {
-                       int link_len, len;
-
-                       error = nfs_readlink(newfd, linkbuf);
-                       if (error)
-                               goto out;
-
-                       link_len = strlen(linkbuf);
-                       len = strlen(cp);
-
-                       if (link_len + len > MAXPATHLEN
-                           || ++nlinks > MAXSYMLINKS) {
-                               error = ENOENT;
-                               goto out;
-                       }
-
-                       bcopy(cp, &namebuf[link_len], len + 1);
-                       bcopy(linkbuf, namebuf, link_len);
-
-                       /*
-                        * If absolute pathname, restart at root.
-                        * If relative pathname, restart at parent directory.
-                        */
-                       cp = namebuf;
-                       if (*cp == '/')
-                               bcopy(&nfs_root_node, currfd, sizeof(*currfd));
-
-                       free(newfd);
-                       newfd = NULL;
-
-                       continue;
-               }
-
-               free(currfd);
-               currfd = newfd;
-               newfd = NULL;
-       }
-
-       error = 0;
-
-out:
-       free(newfd);
-       free(path);
-#else
-        currfd->iodesc = desc;
-
-        error = nfs_lookupfh(&nfs_root_node, upath, currfd);
-#endif
-       if (!error) {
-               currfd->off = 0;
-               f->f_fsdata = (void *)currfd;
-               return (0);
-       }
-
-#ifdef NFS_DEBUG
-       if (debug)
-               printf("nfs_open: %s lookupfh failed: %s\n",
-                   path, strerror(error));
-#endif
-       free(currfd);
-
-       return (error);
-}
-
-int
-nfs_close(struct open_file *f)
-{
-       struct nfs_iodesc *fp = (struct nfs_iodesc *)f->f_fsdata;
-
-#ifdef NFS_DEBUG
-       if (debug)
-               printf("nfs_close: fp=0x%lx\n", (u_long)fp);
-#endif
-
-       if (fp)
-               free(fp);
-       f->f_fsdata = (void *)0;
-
-       return (0);
-}
-
-/*
- * read a portion of a file
- */
-int
-nfs_read(struct open_file *f, void *buf, size_t size, size_t *resid)
-{
-       struct nfs_iodesc *fp = (struct nfs_iodesc *)f->f_fsdata;
-       ssize_t cc;
-       char *addr = buf;
-
-#ifdef NFS_DEBUG
-       if (debug)
-               printf("nfs_read: size=%lu off=%d\n", (u_long)size,
-                      (int)fp->off);
-#endif
-       while ((int)size > 0) {
-               twiddle(16);
-               cc = nfs_readdata(fp, fp->off, (void *)addr, size);
-               /* XXX maybe should retry on certain errors */
-               if (cc == -1) {
-#ifdef NFS_DEBUG
-                       if (debug)
-                               printf("nfs_read: read: %s", strerror(errno));
-#endif
-                       return (errno); /* XXX - from nfs_readdata */
-               }
-               if (cc == 0) {
-#ifdef NFS_DEBUG
-                       if (debug)
-                               printf("nfs_read: hit EOF unexpectantly");
-#endif
-                       goto ret;
-               }
-               fp->off += cc;
-               addr += cc;
-               size -= cc;
-       }
-ret:
-       if (resid)
-               *resid = size;
-
-       return (0);
-}
-
-/*
- * Not implemented.
- */
-int
-nfs_write(struct open_file *f, void *buf, size_t size, size_t *resid)
-{
-       return (EROFS);
-}
-
-off_t
-nfs_seek(struct open_file *f, off_t offset, int where)
-{
-       struct nfs_iodesc *d = (struct nfs_iodesc *)f->f_fsdata;
-       n_long size = ntohl(d->fa.fa_size);
-
-       switch (where) {
-       case SEEK_SET:
-               d->off = offset;
-               break;
-       case SEEK_CUR:
-               d->off += offset;
-               break;
-       case SEEK_END:
-               d->off = size - offset;
-               break;
-       default:
-               errno = EINVAL;
-               return (-1);
-       }
-
-       return (d->off);
-}
-
-/* NFNON=0, NFREG=1, NFDIR=2, NFBLK=3, NFCHR=4, NFLNK=5 */
-int nfs_stat_types[8] = {
-       0, S_IFREG, S_IFDIR, S_IFBLK, S_IFCHR, S_IFLNK, 0 };
-
-int
-nfs_stat(struct open_file *f, struct stat *sb)
-{
-       struct nfs_iodesc *fp = (struct nfs_iodesc *)f->f_fsdata;
-       n_long ftype, mode;
-
-       ftype = ntohl(fp->fa.fa_type);
-       mode  = ntohl(fp->fa.fa_mode);
-       mode |= nfs_stat_types[ftype & 7];
-
-       sb->st_mode  = mode;
-       sb->st_nlink = ntohl(fp->fa.fa_nlink);
-       sb->st_uid   = ntohl(fp->fa.fa_uid);
-       sb->st_gid   = ntohl(fp->fa.fa_gid);
-       sb->st_size  = ntohl(fp->fa.fa_size);
-
-       return (0);
-}
-
-static int
-nfs_readdir(struct open_file *f, struct dirent *d)
-{
-       struct nfs_iodesc *fp = (struct nfs_iodesc *)f->f_fsdata;
-       struct nfs_readdir_args *args;
-       struct nfs_readdir_data *rd;
-       struct nfs_readdir_off  *roff = NULL;
-       static char *buf;
-       static struct nfs_iodesc *pfp = NULL;
-       static n_long cookie = 0;
-       size_t cc;
-       n_long eof;
-
-       struct {
-               n_long h[RPC_HEADER_WORDS];
-               struct nfs_readdir_args d;
-       } sdata;
-       static struct {
-               n_long h[RPC_HEADER_WORDS];
-               u_char d[NFS_READDIRSIZE];
-       } rdata;
-
-       if (fp != pfp || fp->off != cookie) {
-               pfp = NULL;
-       refill:
-               args = &sdata.d;
-               bzero(args, sizeof(*args));
-
-               bcopy(fp->fh, args->fh, NFS_FHSIZE);
-               args->cookie = htonl(fp->off);
-               args->count  = htonl(NFS_READDIRSIZE);
-
-               cc = rpc_call(fp->iodesc, NFS_PROG, NFS_VER2, NFSPROC_READDIR,
-                             args, sizeof(*args),
-                             rdata.d, sizeof(rdata.d));
-               buf  = rdata.d;
-               roff = (struct nfs_readdir_off *)buf;
-               if (ntohl(roff->cookie) != 0)
-                       return EIO;
-               pfp = fp;
-               cookie = fp->off;
-       }
-       roff = (struct nfs_readdir_off *)buf;
-
-       if (ntohl(roff->follows) == 0) {
-               eof = ntohl((roff+1)->cookie);
-               if (eof) {
-                       cookie = 0;
-                       return ENOENT;
-               }
-               goto refill;
-       }
-
-       buf += sizeof(struct nfs_readdir_off);
-       rd = (struct nfs_readdir_data *)buf;
-       d->d_namlen = ntohl(rd->len);
-       bcopy(rd->name, d->d_name, d->d_namlen);
-       d->d_name[d->d_namlen] = '\0';
-
-       buf += (sizeof(struct nfs_readdir_data) + roundup(htonl(rd->len),4));
-       roff = (struct nfs_readdir_off *)buf;
-       fp->off = cookie = ntohl(roff->cookie);
-       return 0;
-}
-#else  /* !OLD_NFSV2 */
 /*
  * Fetch the root file handle (call mount daemon)
  * Return zero or error number.
@@ -1517,4 +843,3 @@ nfs_readdir(struct open_file *f, struct 
        buf = (u_char *)&rent->nameplus[pos];
        return (0);
 }
-#endif /* OLD_NFSV2 */

Modified: head/lib/libstand/nfsv2.h
==============================================================================
--- head/lib/libstand/nfsv2.h   Thu Mar 30 18:21:36 2017        (r316286)
+++ head/lib/libstand/nfsv2.h   Thu Mar 30 19:32:25 2017        (r316287)
@@ -119,46 +119,3 @@ typedef enum {
        NFCHR=4,
        NFLNK=5
 } nfstype;
-
-/* Structs for common parts of the rpc's */
-struct nfsv2_time {
-       n_long  nfs_sec;
-       n_long  nfs_usec;
-};
-
-/*
- * File attributes and setable attributes.
- */
-struct nfsv2_fattr {
-       n_long  fa_type;
-       n_long  fa_mode;
-       n_long  fa_nlink;
-       n_long  fa_uid;
-       n_long  fa_gid;
-       n_long  fa_size;
-       n_long  fa_blocksize;
-       n_long  fa_rdev;
-       n_long  fa_blocks;
-       n_long  fa_fsid;
-       n_long  fa_fileid;
-       struct nfsv2_time fa_atime;
-       struct nfsv2_time fa_mtime;
-       struct nfsv2_time fa_ctime;
-};
-
-struct nfsv2_sattr {
-       n_long  sa_mode;
-       n_long  sa_uid;
-       n_long  sa_gid;
-       n_long  sa_size;
-       struct nfsv2_time sa_atime;
-       struct nfsv2_time sa_mtime;
-};
-
-struct nfsv2_statfs {
-       n_long  sf_tsize;
-       n_long  sf_bsize;
-       n_long  sf_blocks;
-       n_long  sf_bfree;
-       n_long  sf_bavail;
-};

Modified: head/sys/boot/i386/libi386/pxe.c
==============================================================================
--- head/sys/boot/i386/libi386/pxe.c    Thu Mar 30 18:21:36 2017        
(r316286)
+++ head/sys/boot/i386/libi386/pxe.c    Thu Mar 30 19:32:25 2017        
(r316287)
@@ -88,11 +88,7 @@ static int   pxe_netif_get(struct iodesc *
 static int     pxe_netif_put(struct iodesc *desc, void *pkt, size_t len);
 static void    pxe_netif_end(struct netif *nif);
 
-#ifdef OLD_NFSV2
-int nfs_getrootfh(struct iodesc*, char*, u_char*);
-#else
 int nfs_getrootfh(struct iodesc*, char*, uint32_t*, u_char*);
-#endif
 
 extern struct netif_stats      pxe_st[];
 extern u_int16_t               __bangpxeseg;
@@ -468,56 +464,6 @@ pxe_perror(int err)
  * Reach inside the libstand NFS code and dig out an NFS handle
  * for the root filesystem.
  */
-#ifdef OLD_NFSV2
-struct nfs_iodesc {
-       struct  iodesc  *iodesc;
-       off_t   off;
-       u_char  fh[NFS_FHSIZE];
-       /* structure truncated here */
-};
-extern struct  nfs_iodesc nfs_root_node;
-extern int             rpc_port;
-
-static void
-pxe_rpcmountcall()
-{
-       struct  iodesc *d;
-       int             error;
-
-       if (!(d = socktodesc(pxe_sock)))
-               return;
-       d->myport = htons(--rpc_port);
-       d->destip = rootip;
-       if ((error = nfs_getrootfh(d, rootpath, nfs_root_node.fh)) != 0)
-               printf("NFS MOUNT RPC error: %d\n", error);
-       nfs_root_node.iodesc = d;
-}
-
-static void
-pxe_setnfshandle(char *rootpath)
-{
-       int     i;
-       u_char  *fh;
-       char    buf[2 * NFS_FHSIZE + 3], *cp;
-
-       /*
-        * If NFS files were never opened, we need to do mount call
-        * ourselves. Use nfs_root_node.iodesc as flag indicating
-        * previous NFS usage.
-        */
-       if (nfs_root_node.iodesc == NULL)
-               pxe_rpcmountcall();
-
-       fh = &nfs_root_node.fh[0];
-       buf[0] = 'X';
-       cp = &buf[1];
-       for (i = 0; i < NFS_FHSIZE; i++, cp += 2)
-               sprintf(cp, "%02x", fh[i]);
-       sprintf(cp, "X");
-       setenv("boot.nfsroot.nfshandle", buf, 1);
-}
-#else  /* !OLD_NFSV2 */
-
 #define        NFS_V3MAXFHSIZE         64
 
 struct nfs_iodesc {
@@ -573,7 +519,6 @@ pxe_setnfshandle(char *rootpath)
        sprintf(buf, "%d", nfs_root_node.fhsize);
        setenv("boot.nfsroot.nfshandlelen", buf, 1);
 }
-#endif /* OLD_NFSV2 */
 
 void
 pxenv_call(int func)
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to