projects
/
unix-history
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
tags
|
clone url
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
do it right
[unix-history]
/
usr
/
src
/
sys
/
kern
/
uipc_domain.c
diff --git
a/usr/src/sys/kern/uipc_domain.c
b/usr/src/sys/kern/uipc_domain.c
index
b98274e
..
dc80dfc
100644
(file)
--- a/
usr/src/sys/kern/uipc_domain.c
+++ b/
usr/src/sys/kern/uipc_domain.c
@@
-1,11
+1,17
@@
-/* uipc_domain.c 5.9 83/03/15 */
+/*
+ * Copyright (c) 1982, 1986 Regents of the University of California.
+ * All rights reserved. The Berkeley software License Agreement
+ * specifies the terms and conditions for redistribution.
+ *
+ * @(#)uipc_domain.c 7.1 (Berkeley) %G%
+ */
-#include "
../h/
param.h"
-#include "
../h/
socket.h"
-#include "
../h/
protosw.h"
-#include "
../h/
domain.h"
-#include "
../h/
time.h"
-#include "
../h/
kernel.h"
+#include "param.h"
+#include "socket.h"
+#include "protosw.h"
+#include "domain.h"
+#include "time.h"
+#include "kernel.h"
#define ADDDOMAIN(x) { \
extern struct domain x/**/domain; \
#define ADDDOMAIN(x) { \
extern struct domain x/**/domain; \
@@
-23,8
+29,8
@@
domaininit()
#ifdef INET
ADDDOMAIN(inet);
#endif
#ifdef INET
ADDDOMAIN(inet);
#endif
-#ifdef
PUP
- ADDDOMAIN(
pup
);
+#ifdef
NS
+ ADDDOMAIN(
ns
);
#endif
#include "imp.h"
#if NIMP > 0
#endif
#include "imp.h"
#if NIMP > 0
@@
-32,10
+38,14
@@
domaininit()
#endif
#endif
#endif
#endif
- for (dp = domains; dp; dp = dp->dom_next)
+ for (dp = domains; dp; dp = dp->dom_next) {
+ if (dp->dom_init)
+ (*dp->dom_init)();
for (pr = dp->dom_protosw; pr < dp->dom_protoswNPROTOSW; pr++)
if (pr->pr_init)
(*pr->pr_init)();
for (pr = dp->dom_protosw; pr < dp->dom_protoswNPROTOSW; pr++)
if (pr->pr_init)
(*pr->pr_init)();
+ }
+ null_init();
pffasttimo();
pfslowtimo();
}
pffasttimo();
pfslowtimo();
}
@@
-59,11
+69,12
@@
found:
}
struct protosw *
}
struct protosw *
-pffindproto(family, protocol)
- int family, protocol;
+pffindproto(family, protocol
, type
)
+ int family, protocol
, type
;
{
register struct domain *dp;
register struct protosw *pr;
{
register struct domain *dp;
register struct protosw *pr;
+ struct protosw *maybe = 0;
if (family == 0)
return (0);
if (family == 0)
return (0);
@@
-72,15
+83,20
@@
pffindproto(family, protocol)
goto found;
return (0);
found:
goto found;
return (0);
found:
- for (pr = dp->dom_protosw; pr < dp->dom_protoswNPROTOSW; pr++)
- if (
pr->pr_protocol == protocol
)
+ for (pr = dp->dom_protosw; pr < dp->dom_protoswNPROTOSW; pr++)
{
+ if (
(pr->pr_protocol == protocol) && (pr->pr_type == type)
)
return (pr);
return (pr);
- return (0);
+
+ if (type == SOCK_RAW && pr->pr_type == SOCK_RAW &&
+ pr->pr_protocol == 0 && maybe == (struct protosw *)0)
+ maybe = pr;
+ }
+ 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;
@@
-88,7
+104,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
);
}
pfslowtimo()
}
pfslowtimo()