svn commit: r316287 - in head: lib/libstand sys/boot/i386/libi386
Toomas Soome
tsoome at FreeBSD.org
Thu Mar 30 19:32:26 UTC 2017
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)
More information about the svn-src-all
mailing list