]> git.saurik.com Git - apple/xnu.git/blobdiff - bsd/net/if_disc.c
xnu-344.tar.gz
[apple/xnu.git] / bsd / net / if_disc.c
index 5a95376fbb9f61cfa84ac9207f32be1f80258a5d..c8c266bc477d64132c6766593c8ecf10a76b712e 100644 (file)
@@ -52,6 +52,7 @@
  * SUCH DAMAGE.
  *
  *     From: @(#)if_loop.c     8.1 (Berkeley) 6/10/93
+ * $FreeBSD: src/sys/net/if_disc.c,v 1.26.2.1 2001/03/06 00:32:09 obrien Exp $
  */
 
 /*
 #include <net/route.h>
 #include <net/bpf.h>
 
-#include "bpfilter.h"
-#include "opt_inet.h"
-
-#if TINY_DSMTU
+#ifdef TINY_DSMTU
 #define        DSMTU   (1024+512)
 #else
 #define DSMTU  65532
 #endif
 
-static void discattach __P((void *dummy));
-PSEUDO_SET(discattach, if_disc);
+static void discattach __P((void));
 
 static struct  ifnet discif;
 static int discoutput(struct ifnet *, struct mbuf *, struct sockaddr *,
@@ -91,8 +88,7 @@ static int discioctl(struct ifnet *, u_long, caddr_t);
 
 /* ARGSUSED */
 static void
-discattach(dummy)
-       void *dummy;
+discattach()
 {
        register struct ifnet *ifp = &discif;
 
@@ -106,11 +102,33 @@ discattach(dummy)
        ifp->if_hdrlen = 0;
        ifp->if_addrlen = 0;
        if_attach(ifp);
-#if NBPFILTER > 0
        bpfattach(ifp, DLT_NULL, sizeof(u_int));
-#endif
 }
 
+#ifndef __APPLE__
+static int
+disc_modevent(module_t mod, int type, void *data) 
+{ 
+       switch (type) { 
+       case MOD_LOAD: 
+               discattach();
+               break; 
+       case MOD_UNLOAD: 
+               printf("if_disc module unload - not possible for this module type\n"); 
+               return EINVAL; 
+       } 
+       return 0; 
+} 
+
+static moduledata_t disc_mod = { 
+       "if_disc", 
+       disc_modevent, 
+       NULL
+}; 
+
+DECLARE_MODULE(if_disc, disc_mod, SI_SUB_PSEUDO, SI_ORDER_ANY);
+#endif
+
 static int
 discoutput(ifp, m, dst, rt)
        struct ifnet *ifp;
@@ -120,7 +138,6 @@ discoutput(ifp, m, dst, rt)
 {
        if ((m->m_flags & M_PKTHDR) == 0)
                panic("discoutput no HDR");
-#if NBPFILTER > 0
        /* BPF write needs to be handled specially */
        if (dst->sa_family == AF_UNSPEC) {
                dst->sa_family = *(mtod(m, int *));
@@ -146,7 +163,6 @@ discoutput(ifp, m, dst, rt)
 
                bpf_mtap(&discif, &m0);
        }
-#endif
        m->m_pkthdr.rcvif = ifp;
 
        ifp->if_opackets++;
@@ -205,6 +221,10 @@ discioctl(ifp, cmd, data)
                case AF_INET:
                        break;
 #endif
+#if INET6
+               case AF_INET6:
+                       break;
+#endif
 
                default:
                        error = EAFNOSUPPORT;