Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/sommerfeld_i386mp_1]: src/sys/arch/i386/stand/lib/netif Make this compil...
details: https://anonhg.NetBSD.org/src/rev/04b15f519056
branches: sommerfeld_i386mp_1
changeset: 482554:04b15f519056
user: gmcgarry <gmcgarry%NetBSD.org@localhost>
date: Fri Jun 21 23:18:46 2002 +0000
description:
Make this compile with NETIF_DEBUG.
diffstat:
sys/arch/i386/stand/lib/netif/netif_small.c | 181 ++++++++++++++++++++++++++++
1 files changed, 181 insertions(+), 0 deletions(-)
diffs (185 lines):
diff -r 1fec719cfe64 -r 04b15f519056 sys/arch/i386/stand/lib/netif/netif_small.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sys/arch/i386/stand/lib/netif/netif_small.c Fri Jun 21 23:18:46 2002 +0000
@@ -0,0 +1,181 @@
+/* $NetBSD: netif_small.c,v 1.7.2.2 2002/06/21 23:18:46 gmcgarry Exp $ */
+
+/* minimal netif - for boot ROMs we don't have to select between
+ several interfaces, and we have to save space
+
+ hacked from netbsd:sys/arch/mvme68k/stand/libsa/netif.c
+ */
+
+/*
+ * 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.
+ */
+
+#include <sys/types.h>
+#include <sys/socket.h>
+#ifdef _STANDALONE
+#include <lib/libkern/libkern.h>
+#else
+#include <string.h>
+#endif
+
+#include <net/if.h>
+#include <net/if_ether.h>
+
+#include <netinet/in.h>
+#include <netinet/in_systm.h>
+
+#include <lib/libsa/stand.h>
+#include <lib/libsa/net.h>
+
+#include "netif_small.h"
+#include "etherdrv.h"
+
+#ifdef NETIF_DEBUG
+int netif_debug=1;
+#endif
+
+/* we allow for one socket only */
+static struct iodesc iosocket;
+
+struct iodesc *
+socktodesc(sock)
+ int sock;
+{
+ if (sock != 0) {
+ return(NULL);
+ }
+ return (&iosocket);
+}
+
+int
+netif_open()
+{
+ struct iodesc *io;
+
+ io = &iosocket;
+ if (io->io_netif) {
+#ifdef DEBUG
+ printf("netif_open: device busy\n");
+#endif
+ return (-1);
+ }
+ memset(io, 0, sizeof(*io));
+
+ if(!EtherInit(io->myea)) {
+ printf("EtherInit failed\n");
+ return(-1);
+ }
+
+ io->io_netif = (void*)1; /* mark busy */
+
+ return(0);
+}
+
+int
+netif_close(fd)
+ int fd;
+{
+ struct iodesc *io;
+
+ if (fd != 0) {
+ errno = EBADF;
+ return(-1);
+ }
+
+ io = &iosocket;
+ if(io->io_netif) {
+ EtherStop();
+ io->io_netif = NULL;
+ }
+ return(0);
+}
+
+/*
+ * Send a packet. The ether header is already there.
+ * Return the length sent (or -1 on error).
+ */
+int
+netif_put(desc, pkt, len)
+ struct iodesc *desc;
+ void *pkt;
+ size_t len;
+{
+#ifdef NETIF_DEBUG
+ if (netif_debug) {
+ struct ether_header *eh;
+
+ printf("netif_put: desc=%p pkt=%p len=%d\n",
+ desc, pkt, len);
+ eh = pkt;
+ printf("dst: %s ", ether_sprintf(eh->ether_dhost));
+ printf("src: %s ", ether_sprintf(eh->ether_shost));
+ printf("type: 0x%x\n", eh->ether_type & 0xFFFF);
+ }
+#endif
+ return(EtherSend(pkt, len));
+}
+
+/*
+ * Receive a packet, including the ether header.
+ * Return the total length received (or -1 on error).
+ */
+int
+netif_get(desc, pkt, maxlen, timo)
+ struct iodesc *desc;
+ void *pkt;
+ size_t maxlen;
+ time_t timo;
+{
+ int len;
+ time_t t;
+
+#ifdef NETIF_DEBUG
+ if (netif_debug)
+ printf("netif_get: pkt=%p, maxlen=%d, tmo=%ld\n",
+ pkt, maxlen, timo);
+#endif
+
+ t = getsecs();
+ len = 0;
+ while (((getsecs() - t) < timo) && !len) {
+ len = EtherReceive(pkt, maxlen);
+ }
+
+#ifdef NETIF_DEBUG
+ if (netif_debug) {
+ struct ether_header *eh = pkt;
+
+ printf("dst: %s ", ether_sprintf(eh->ether_dhost));
+ printf("src: %s ", ether_sprintf(eh->ether_shost));
+ printf("type: 0x%x\n", eh->ether_type & 0xFFFF);
+ }
+#endif
+
+ return len;
+}
Home |
Main Index |
Thread Index |
Old Index