summaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
Diffstat (limited to 'sys')
-rw-r--r--sys/arch/i386/stand/libsa/exec_i386.c7
-rw-r--r--sys/arch/i386/stand/libsa/pxe.c6
-rw-r--r--sys/arch/i386/stand/pxeboot/conf.c4
-rw-r--r--sys/arch/i386/stand/pxeboot/devopen.c14
4 files changed, 25 insertions, 6 deletions
diff --git a/sys/arch/i386/stand/libsa/exec_i386.c b/sys/arch/i386/stand/libsa/exec_i386.c
index 54fae4f6789..cfcefbcbb80 100644
--- a/sys/arch/i386/stand/libsa/exec_i386.c
+++ b/sys/arch/i386/stand/libsa/exec_i386.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: exec_i386.c,v 1.31 2006/03/27 20:34:21 mickey Exp $ */
+/* $OpenBSD: exec_i386.c,v 1.32 2007/07/27 17:46:56 tom Exp $ */
/*
* Copyright (c) 1997-1998 Michael Shalayeff
@@ -40,6 +40,8 @@
typedef void (*startfuncp)(int, int, int, int, int, int, int, int)
__attribute__ ((noreturn));
+char *bootmac = NULL;
+
void
run_loadfile(u_long *marks, int howto)
{
@@ -58,6 +60,9 @@ run_loadfile(u_long *marks, int howto)
cd.conspeed = com_speed;
addbootarg(BOOTARG_CONSDEV, sizeof(cd), &cd);
+ if (bootmac != NULL)
+ addbootarg(BOOTARG_BOOTMAC, sizeof(bios_bootmac_t), bootmac);
+
/* Pass memory map to the kernel */
mem_pass();
diff --git a/sys/arch/i386/stand/libsa/pxe.c b/sys/arch/i386/stand/libsa/pxe.c
index 554a82b3fcb..5c5fc8fe977 100644
--- a/sys/arch/i386/stand/libsa/pxe.c
+++ b/sys/arch/i386/stand/libsa/pxe.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: pxe.c,v 1.4 2006/05/20 22:37:40 deraadt Exp $ */
+/* $OpenBSD: pxe.c,v 1.5 2007/07/27 17:46:56 tom Exp $ */
/* $NetBSD: pxe.c,v 1.5 2003/03/11 18:29:00 drochner Exp $ */
/*
@@ -115,6 +115,8 @@ BOOTPLAYER bootplayer;
struct in_addr servip; /* for tftp */ /* XXX init this */
+extern char *bootmac; /* To pass to kernel */
+
/* static struct btinfo_netif bi_netif; */
/*****************************************************************************
@@ -230,7 +232,7 @@ pxe_netif_open()
}
bcopy(bootplayer.CAddr, desc.myea, ETHER_ADDR_LEN);
- addbootarg(BOOTARG_BOOTMAC, sizeof(bios_bootmac_t), bootplayer.CAddr);
+ bootmac = bootplayer.CAddr;
/*
* Since the PXE BIOS has already done DHCP, make sure we
diff --git a/sys/arch/i386/stand/pxeboot/conf.c b/sys/arch/i386/stand/pxeboot/conf.c
index 7222c6ad6f6..bd33bae866a 100644
--- a/sys/arch/i386/stand/pxeboot/conf.c
+++ b/sys/arch/i386/stand/pxeboot/conf.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: conf.c,v 1.14 2007/05/31 21:43:58 tom Exp $ */
+/* $OpenBSD: conf.c,v 1.15 2007/07/27 17:46:57 tom Exp $ */
/*
* Copyright (c) 2004 Tom Cosgrove
@@ -45,7 +45,7 @@
#include "pxeboot.h"
#include "pxe_net.h"
-const char version[] = "2.01";
+const char version[] = "2.02";
int debug = 1;
#undef _TEST
diff --git a/sys/arch/i386/stand/pxeboot/devopen.c b/sys/arch/i386/stand/pxeboot/devopen.c
index cf1deffdd75..836329474f1 100644
--- a/sys/arch/i386/stand/pxeboot/devopen.c
+++ b/sys/arch/i386/stand/pxeboot/devopen.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: devopen.c,v 1.3 2007/06/27 20:29:38 mk Exp $ */
+/* $OpenBSD: devopen.c,v 1.4 2007/07/27 17:46:57 tom Exp $ */
/*
* Copyright (c) 2004 Tom Cosgrove
@@ -38,6 +38,8 @@ extern char *fs_name[];
extern int nfsname;
extern struct devsw netsw[];
+extern char *bootmac; /* Gets passed to kernel for network boot */
+
/* XXX use slot for 'rd' for 'hd' pseudo-device */
const char bdevs[][4] = {
"wd", "", "fd", "", "sd", "st", "cd", "mcd",
@@ -96,6 +98,16 @@ devopen(struct open_file *f, const char *fname, char **file)
}
}
+ /*
+ * Assume that any network filesystems would be caught by the
+ * code above, so that the next phase of devopen() is only for
+ * local devices.
+ *
+ * Clear bootmac, to signal that we loaded this file from a
+ * non-network device.
+ */
+ bootmac = NULL;
+
for (i = 0; i < ndevs && rc != 0; dp++, i++) {
#ifdef DEBUG
if (debug)