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