summaryrefslogtreecommitdiffstats
path: root/lib/libstand/nfs.c
diff options
context:
space:
mode:
authorjake <jake@FreeBSD.org>2002-07-31 20:17:06 +0000
committerjake <jake@FreeBSD.org>2002-07-31 20:17:06 +0000
commitdea739f9839c0d837eb888857774dbba5e1fe783 (patch)
tree99be5d67fb34cc1046acd4f6522156c3e47b0c00 /lib/libstand/nfs.c
parent6af754015784ac8650c4198a8c2a2a5bd8e3e5d0 (diff)
downloadFreeBSD-src-dea739f9839c0d837eb888857774dbba5e1fe783.zip
FreeBSD-src-dea739f9839c0d837eb888857774dbba5e1fe783.tar.gz
Stash various networking paramters in the environment for the kernel
to pick up, ala pxe.
Diffstat (limited to 'lib/libstand/nfs.c')
-rw-r--r--lib/libstand/nfs.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/lib/libstand/nfs.c b/lib/libstand/nfs.c
index e126a85..76a4b8d 100644
--- a/lib/libstand/nfs.c
+++ b/lib/libstand/nfs.c
@@ -387,10 +387,14 @@ nfs_open(upath, 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 *cp, *ncp;
+ char *ncp;
int c;
char namebuf[NFS_MAXPATHLEN + 1];
char linkbuf[NFS_MAXPATHLEN + 1];
@@ -422,6 +426,16 @@ nfs_open(upath, f)
return (error);
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);
+
#ifndef NFS_NOSYMLINK
/* Fake up attributes for the root dir. */
fa = &nfs_root_node.fa;
OpenPOWER on IntegriCloud