Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/arch/mvme68k/stand Use the versions of dev_net.[ch] in l...



details:   https://anonhg.NetBSD.org/src/rev/9f59257de765
branches:  trunk
changeset: 510981:9f59257de765
user:      scw <scw%NetBSD.org@localhost>
date:      Sun Jun 10 14:12:48 2001 +0000

description:
Use the versions of dev_net.[ch] in libsa in order to get DHCP support.

In other words, mvme68k's "netboot" finally supports DHCP.

diffstat:

 sys/arch/mvme68k/stand/libsa/Makefile    |   12 +-
 sys/arch/mvme68k/stand/netboot/Makefile  |    5 +-
 sys/arch/mvme68k/stand/netboot/boot.c    |   37 ++++-
 sys/arch/mvme68k/stand/netboot/conf.c    |    3 +-
 sys/arch/mvme68k/stand/netboot/config.h  |    4 +-
 sys/arch/mvme68k/stand/netboot/dev_net.c |  233 -------------------------------
 sys/arch/mvme68k/stand/netboot/dev_net.h |    9 -
 7 files changed, 51 insertions(+), 252 deletions(-)

diffs (truncated from 394 to 300 lines):

diff -r 2bdf17962fa6 -r 9f59257de765 sys/arch/mvme68k/stand/libsa/Makefile
--- a/sys/arch/mvme68k/stand/libsa/Makefile     Sun Jun 10 13:56:13 2001 +0000
+++ b/sys/arch/mvme68k/stand/libsa/Makefile     Sun Jun 10 14:12:48 2001 +0000
@@ -1,4 +1,4 @@
-#      $NetBSD: Makefile,v 1.15 2000/11/30 22:26:27 scw Exp $
+#      $NetBSD: Makefile,v 1.16 2001/06/10 14:12:48 scw Exp $
 
 LIB=sa
 
@@ -7,15 +7,15 @@
 DIR_KERN=$S/lib/libkern
 
 SRC_net= nfs.c rpc.c net.c ether.c arp.c in_cksum.c netif.c \
-        bootparam.c rarp.c
+        bootparam.c rarp.c dev_net.c bootp.c
 
 
 SRC_sa = alloc.c memcpy.c memset.c close.c exit.c getfile.c gets.c \
         open.c printf.c read.c strerror.c ufs.c globals.c lseek.c panic.c \
         closeall.c dev.c dkcksum.c nullfs.c fstat.c twiddle.c sprintf.c \
-        subr_prf.c intoa.c udp.c memcmp.c bcmp.c loadfile.c
+        subr_prf.c intoa.c udp.c memcmp.c bcmp.c loadfile.c dev_net.c
 
-SRC_kern= ashrdi3.c strcmp.c strlen.c
+SRC_kern= ashrdi3.c strcmp.c strlen.c strncpy.c inet_addr.c
 
 SRC_mvme= exec_mvme.c
 
@@ -28,6 +28,10 @@
 
 DEFS= ${DBG} #-fno-defer-pop
 
+CPPFLAGS+= -DSUPPORT_BOOTP -DSUPPORT_DHCP
+CPPFLAGS+= -DSUPPORT_RARP -DSUPPORT_BOOTPARAM
+CPPFLAGS+= -DSUPPORT_NFS -DNFS_NOSYMLINK
+
 CLEANFILES+= SRT0.o
 
 .include "../Makefile.booters"
diff -r 2bdf17962fa6 -r 9f59257de765 sys/arch/mvme68k/stand/netboot/Makefile
--- a/sys/arch/mvme68k/stand/netboot/Makefile   Sun Jun 10 13:56:13 2001 +0000
+++ b/sys/arch/mvme68k/stand/netboot/Makefile   Sun Jun 10 14:12:48 2001 +0000
@@ -1,15 +1,14 @@
-#      $NetBSD: Makefile,v 1.12 2000/12/04 21:25:58 scw Exp $
+#      $NetBSD: Makefile,v 1.13 2001/06/10 14:12:49 scw Exp $
 
 DEFS= -DSUN_BOOTPARAMS
 
-SRCS=   boot.c conf.c devopen.c dev_net.c
+SRCS=   boot.c conf.c devopen.c
 SRCS+= if_ie.c if_le.c
 PROG=  netboot.tmp
 LIBS=  ${LIBSA} ${LIBBUG}
 DPADD= ${LIBS}
 CLEANFILES+= netboot.bin
 
-
 netboot.bin: ${PROG}
        ${OBJCOPY} -O binary ${.OBJDIR}/netboot.tmp $@
 
diff -r 2bdf17962fa6 -r 9f59257de765 sys/arch/mvme68k/stand/netboot/boot.c
--- a/sys/arch/mvme68k/stand/netboot/boot.c     Sun Jun 10 13:56:13 2001 +0000
+++ b/sys/arch/mvme68k/stand/netboot/boot.c     Sun Jun 10 14:12:48 2001 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: boot.c,v 1.6 2000/07/24 18:39:48 jdolecek Exp $ */
+/*     $NetBSD: boot.c,v 1.7 2001/06/10 14:12:49 scw Exp $ */
 
 /*
  * Copyright (c) 1982, 1986, 1990, 1993
@@ -43,6 +43,7 @@
 
 #include "stand.h"
 #include "libsa.h"
+#include "config.h"
 
 void main(void);
 
@@ -86,3 +87,37 @@
                ask = 1;
        }
 }
+
+/*
+ * machdep_common_ether: get ethernet address
+ */
+void
+machdep_common_ether(ether)
+       u_char *ether;
+{
+       u_char *ea;
+
+       if (bugargs.cputyp == CPU_147) {
+               ea = (u_char *) ETHER_ADDR_147;
+
+               if ((*(int *) ea & 0x2fffff00) == 0x2fffff00)
+                       panic("ERROR: ethernet address not set!\r\n");
+               ether[0] = 0x08;
+               ether[1] = 0x00;
+               ether[2] = 0x3e;
+               ether[3] = ea[0];
+               ether[4] = ea[1];
+               ether[5] = ea[2];
+       } else {
+               ea = (u_char *) ETHER_ADDR_16X;
+
+               if (ea[0] + ea[1] + ea[2] + ea[3] + ea[4] + ea[5] == 0)
+                       panic("ERROR: ethernet address not set!\r\n");
+               ether[0] = ea[0];
+               ether[1] = ea[1];
+               ether[2] = ea[2];
+               ether[3] = ea[3];
+               ether[4] = ea[4];
+               ether[5] = ea[5];
+       }
+}
diff -r 2bdf17962fa6 -r 9f59257de765 sys/arch/mvme68k/stand/netboot/conf.c
--- a/sys/arch/mvme68k/stand/netboot/conf.c     Sun Jun 10 13:56:13 2001 +0000
+++ b/sys/arch/mvme68k/stand/netboot/conf.c     Sun Jun 10 14:12:48 2001 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: conf.c,v 1.3 1996/05/17 21:08:38 chuck Exp $ */
+/*     $NetBSD: conf.c,v 1.4 2001/06/10 14:12:49 scw Exp $ */
 
 #include <sys/types.h>
 #include <netinet/in.h>
@@ -32,3 +32,4 @@
 int netif_debug;
 int debug;
 int errno;
+int try_bootp = 1;
diff -r 2bdf17962fa6 -r 9f59257de765 sys/arch/mvme68k/stand/netboot/config.h
--- a/sys/arch/mvme68k/stand/netboot/config.h   Sun Jun 10 13:56:13 2001 +0000
+++ b/sys/arch/mvme68k/stand/netboot/config.h   Sun Jun 10 14:12:48 2001 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: config.h,v 1.1 1996/05/17 21:17:58 chuck Exp $ */
+/*     $NetBSD: config.h,v 1.2 2001/06/10 14:12:49 scw Exp $   */
 
 /*
  * Copyright (c) 1995 Theo de Raadt
@@ -64,3 +64,5 @@
        u_short devnum;
        u_long  bug;
 };
+
+void   machdep_common_ether __P((u_char *));
diff -r 2bdf17962fa6 -r 9f59257de765 sys/arch/mvme68k/stand/netboot/dev_net.c
--- a/sys/arch/mvme68k/stand/netboot/dev_net.c  Sun Jun 10 13:56:13 2001 +0000
+++ /dev/null   Thu Jan 01 00:00:00 1970 +0000
@@ -1,233 +0,0 @@
-/*     $NetBSD: dev_net.c,v 1.8 2000/07/24 18:39:49 jdolecek Exp $ */
-
-/*
- * Copyright (c) 1995 Gordon W. Ross
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. The name of the author may not be used to endorse or promote products
- *    derived from this software without specific prior written permission.
- * 4. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *      This product includes software developed by Gordon W. Ross
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-/*
- * This module implements a "raw device" interface suitable for
- * use by the stand-alone I/O library NFS code.  This interface
- * does not support any "block" access, and exists only for the
- * purpose of initializing the network interface, getting boot
- * parameters, and performing the NFS mount.
- *
- * At open time, this does:
- *
- * find interface      - netif_open()
- * RARP for IP address - rarp_getipaddress()
- * RPC/bootparams      - callrpc(d, RPC_BOOTPARAMS, ...)
- * RPC/mountd          - nfs_mount(sock, ip, path)
- *
- * the root file handle from mountd is saved in a global
- * for use by the NFS open code (NFS/lookup).
- */
-
-#include <sys/param.h>
-#include <sys/socket.h>
-#include <net/if.h>
-#include <netinet/in.h>
-#include <netinet/in_systm.h>
-
-#include <machine/prom.h>
-#include <machine/stdarg.h>
-
-#include <lib/libkern/libkern.h>
-#include <lib/libsa/stand.h>
-#include <lib/libsa/nfs.h>
-
-#include "libsa.h"
-#include "net.h"
-#include "netif.h"
-#include "config.h"
-#include "bootparam.h"
-#include "dev_net.h"
-
-extern int nfs_root_node[];    /* XXX - get from nfs_mount() */
-
-struct in_addr myip, rootip, gateip, mask;
-char rootpath[FNAME_SIZE];
-
-int netdev_sock = -1;
-static int open_count;
-
-/*
- * Called by devopen() after it sets f->f_dev to our devsw entry.
- * This opens the low-level device and sets f->f_devdata.
- */
-int
-net_open(struct open_file *f, ...)
-{
-       char *devname;          /* Device part of file name (or NULL). */
-       int error = 0;
-       va_list ap;
-
-       /* get devname */
-       va_start(ap, f);
-       devname = va_arg(ap, char *);
-       va_end(ap);
-
-       /* On first open, do netif open, mount, etc. */
-       if (open_count == 0) {
-               /* Find network interface. */
-               if ((netdev_sock = netif_open(devname)) < 0)
-                       return (error=ENXIO);
-               if ((error = net_mountroot(f, devname)) != 0)
-                       return (error);
-       }
-       open_count++;
-       f->f_devdata = nfs_root_node;
-       return (error);
-}
-
-int
-net_close(f)
-       struct open_file *f;
-{
-       /* On last close, do netif close, etc. */
-       if (open_count > 0)
-               if (--open_count == 0)
-                       netif_close(netdev_sock);
-       f->f_devdata = NULL;
-
-       return (0);
-}
-
-int
-net_ioctl(f, cmd, data)
-       struct open_file *f;
-       u_long cmd;
-       void *data;
-{
-       return EIO;
-}
-
-int
-net_strategy(devdata, rw, blk, size, buf, rsize)
-       void *devdata;
-       int rw;
-       daddr_t blk;
-       size_t size;
-       void *buf;
-       size_t *rsize;
-{
-       return EIO;
-}
-
-int
-net_mountroot(f, devname)
-       struct open_file *f;
-       char *devname;          /* Device part of file name (or NULL). */
-{
-       int error;
-
-#ifdef DEBUG
-       printf("net_mountroot: %s\n", devname);
-#endif
-



Home | Main Index | Thread Index | Old Index