From 9f773c40c8d8601baa3a56ccbae02e9d26d59ec1 Mon Sep 17 00:00:00 2001 From: Mike Karels Date: Mon, 3 Jun 1985 06:25:47 -0800 Subject: [PATCH] allow raw sockets of any protocol if a wildcard raw entry is found SCCS-vsn: sys/kern/uipc_domain.c 6.5 --- usr/src/sys/kern/uipc_domain.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/usr/src/sys/kern/uipc_domain.c b/usr/src/sys/kern/uipc_domain.c index b53b1c5e87..965ce136dd 100644 --- a/usr/src/sys/kern/uipc_domain.c +++ b/usr/src/sys/kern/uipc_domain.c @@ -1,4 +1,4 @@ -/* uipc_domain.c 6.4 85/04/27 */ +/* uipc_domain.c 6.5 85/06/02 */ #include "param.h" #include "socket.h" @@ -65,11 +65,12 @@ found: } struct protosw * -pffindproto(family, protocol) - int family, protocol; +pffindproto(family, protocol, type) + int family, protocol, type; { register struct domain *dp; register struct protosw *pr; + struct protosw *maybe = 0; if (family == 0) return (0); @@ -78,10 +79,14 @@ pffindproto(family, protocol) goto found; return (0); found: - for (pr = dp->dom_protosw; pr < dp->dom_protoswNPROTOSW; pr++) + for (pr = dp->dom_protosw; pr < dp->dom_protoswNPROTOSW; pr++) { if (pr->pr_protocol == protocol) 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) -- 2.20.1