From f739b33f57ff17e81e0c9dd401f651738456de49 Mon Sep 17 00:00:00 2001 From: Jake Burkholder Date: Wed, 31 Jul 2002 20:17:06 +0000 Subject: [PATCH] Stash various networking paramters in the environment for the kernel to pick up, ala pxe. --- lib/libstand/nfs.c | 16 +++++++++++++++- sys/boot/common/dev_net.c | 9 +++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/lib/libstand/nfs.c b/lib/libstand/nfs.c index e126a85f7c4c..76a4b8d8c120 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 5e7b73672d76..d0ed7013541b 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); }