summaryrefslogtreecommitdiffstats
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
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.
-rw-r--r--lib/libstand/nfs.c16
-rw-r--r--sys/boot/common/dev_net.c9
2 files changed, 24 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;
diff --git a/sys/boot/common/dev_net.c b/sys/boot/common/dev_net.c
index 5e7b736..d0ed701 100644
--- a/sys/boot/common/dev_net.c
+++ b/sys/boot/common/dev_net.c
@@ -209,6 +209,7 @@ net_getparams(sock)
{
char buf[MAXHOSTNAMELEN];
char temp[FNAME_SIZE];
+ struct iodesc *d;
int i;
n_long smask;
@@ -284,6 +285,14 @@ net_getparams(sock)
bcopy(&temp[0], &rootpath[0], strlen(&rootpath[i])+1);
}
printf("net_open: server path: %s\n", rootpath);
+
+ d = socktodesc(sock);
+ sprintf(temp, "%6D", d->myea, ":");
+ setenv("boot.netif.ip", inet_ntoa(myip), 1);
+ setenv("boot.netif.netmask", intoa(netmask), 1);
+ setenv("boot.netif.gateway", inet_ntoa(gateip), 1);
+ setenv("boot.netif.hwaddr", temp, 1);
+
return (0);
}
OpenPOWER on IntegriCloud