fixes for fp context switching
[unix-history] / usr / src / sys / kern / uipc_domain.c
index 965ce13..fa67b61 100644 (file)
@@ -1,16 +1,25 @@
-/*     uipc_domain.c   6.5     85/06/02        */
+/*
+ * Copyright (c) 1982, 1986 Regents of the University of California.
+ * All rights reserved.
+ *
+ * %sccs.include.redist.c%
+ *
+ *     @(#)uipc_domain.c       7.9 (Berkeley) %G%
+ */
 
 
+#include <sys/cdefs.h>
 #include "param.h"
 #include "socket.h"
 #include "protosw.h"
 #include "domain.h"
 #include "param.h"
 #include "socket.h"
 #include "protosw.h"
 #include "domain.h"
+#include "mbuf.h"
 #include "time.h"
 #include "kernel.h"
 
 #define        ADDDOMAIN(x)    { \
 #include "time.h"
 #include "kernel.h"
 
 #define        ADDDOMAIN(x)    { \
-       extern struct domain x/**/domain; \
-       x/**/domain.dom_next = domains; \
-       domains = &x/**/domain; \
+       extern struct domain __CONCAT(x,domain); \
+       __CONCAT(x,domain.dom_next) = domains; \
+       domains = &__CONCAT(x,domain); \
 }
 
 domaininit()
 }
 
 domaininit()
@@ -18,16 +27,24 @@ domaininit()
        register struct domain *dp;
        register struct protosw *pr;
 
        register struct domain *dp;
        register struct protosw *pr;
 
+#undef unix
 #ifndef lint
        ADDDOMAIN(unix);
 #ifndef lint
        ADDDOMAIN(unix);
+       ADDDOMAIN(route);
 #ifdef INET
        ADDDOMAIN(inet);
 #endif
 #ifdef NS
        ADDDOMAIN(ns);
 #endif
 #ifdef INET
        ADDDOMAIN(inet);
 #endif
 #ifdef NS
        ADDDOMAIN(ns);
 #endif
-#ifdef PUP
-       ADDDOMAIN(pup);
+#ifdef ISO
+       ADDDOMAIN(iso);
+#endif
+#ifdef RMP
+       ADDDOMAIN(rmp);
+#endif
+#ifdef CCITT
+       ADDDOMAIN(ccitt);
 #endif
 #include "imp.h"
 #if NIMP > 0
 #endif
 #include "imp.h"
 #if NIMP > 0
@@ -42,6 +59,11 @@ domaininit()
                        if (pr->pr_init)
                                (*pr->pr_init)();
        }
                        if (pr->pr_init)
                                (*pr->pr_init)();
        }
+
+if (max_linkhdr < 16)          /* XXX */
+max_linkhdr = 16;
+       max_hdr = max_linkhdr + max_protohdr;
+       max_datalen = MHLEN - max_hdr;
        pffasttimo();
        pfslowtimo();
 }
        pffasttimo();
        pfslowtimo();
 }
@@ -80,8 +102,9 @@ pffindproto(family, protocol, type)
        return (0);
 found:
        for (pr = dp->dom_protosw; pr < dp->dom_protoswNPROTOSW; pr++) {
        return (0);
 found:
        for (pr = dp->dom_protosw; pr < dp->dom_protoswNPROTOSW; pr++) {
-               if (pr->pr_protocol == protocol)
+               if ((pr->pr_protocol == protocol) && (pr->pr_type == type))
                        return (pr);
                        return (pr);
+
                if (type == SOCK_RAW && pr->pr_type == SOCK_RAW &&
                    pr->pr_protocol == 0 && maybe == (struct protosw *)0)
                        maybe = pr;
                if (type == SOCK_RAW && pr->pr_type == SOCK_RAW &&
                    pr->pr_protocol == 0 && maybe == (struct protosw *)0)
                        maybe = pr;
@@ -89,9 +112,9 @@ found:
        return (maybe);
 }
 
        return (maybe);
 }
 
-pfctlinput(cmd, arg)
+pfctlinput(cmd, sa)
        int cmd;
        int cmd;
-       caddr_t arg;
+       struct sockaddr *sa;
 {
        register struct domain *dp;
        register struct protosw *pr;
 {
        register struct domain *dp;
        register struct protosw *pr;
@@ -99,7 +122,7 @@ pfctlinput(cmd, arg)
        for (dp = domains; dp; dp = dp->dom_next)
                for (pr = dp->dom_protosw; pr < dp->dom_protoswNPROTOSW; pr++)
                        if (pr->pr_ctlinput)
        for (dp = domains; dp; dp = dp->dom_next)
                for (pr = dp->dom_protosw; pr < dp->dom_protoswNPROTOSW; pr++)
                        if (pr->pr_ctlinput)
-                               (*pr->pr_ctlinput)(cmd, arg);
+                               (*pr->pr_ctlinput)(cmd, sa, (caddr_t) 0);
 }
 
 pfslowtimo()
 }
 
 pfslowtimo()