diff options
author | rwatson <rwatson@FreeBSD.org> | 2006-08-07 12:02:43 +0000 |
---|---|---|
committer | rwatson <rwatson@FreeBSD.org> | 2006-08-07 12:02:43 +0000 |
commit | 3bd21f489dfd6312870849d0fe3e9f82c74b1b79 (patch) | |
tree | 632c3b48deb628a0bb5ceef890e7a8a5b66f131a /sys/kern/uipc_usrreq.c | |
parent | a107b7659257676eb8d54343ada8c0187e4f2f12 (diff) | |
download | FreeBSD-src-3bd21f489dfd6312870849d0fe3e9f82c74b1b79.zip FreeBSD-src-3bd21f489dfd6312870849d0fe3e9f82c74b1b79.tar.gz |
Move definition of UNIX domain socket protosw and domain entries from
uipc_proto.c to uipc_usrreq.c, making localdomain static. Remove
uipc_proto.c as it's no longer used. With this change, UNIX domain
sockets are entirely encapsulated in uipc_usrreq.c.
Diffstat (limited to 'sys/kern/uipc_usrreq.c')
-rw-r--r-- | sys/kern/uipc_usrreq.c | 38 |
1 files changed, 35 insertions, 3 deletions
diff --git a/sys/kern/uipc_usrreq.c b/sys/kern/uipc_usrreq.c index c3f2eaa..0c52a03 100644 --- a/sys/kern/uipc_usrreq.c +++ b/sys/kern/uipc_usrreq.c @@ -124,17 +124,18 @@ static u_long unpdg_recvspace = 4*1024; static int unp_rights; /* file descriptors in flight */ -SYSCTL_DECL(_net_local_stream); +SYSCTL_NODE(_net, PF_LOCAL, local, CTLFLAG_RW, 0, "Local domain"); +SYSCTL_NODE(_net_local, SOCK_STREAM, stream, CTLFLAG_RW, 0, "SOCK_STREAM"); +SYSCTL_NODE(_net_local, SOCK_DGRAM, dgram, CTLFLAG_RW, 0, "SOCK_DGRAM"); + SYSCTL_ULONG(_net_local_stream, OID_AUTO, sendspace, CTLFLAG_RW, &unpst_sendspace, 0, ""); SYSCTL_ULONG(_net_local_stream, OID_AUTO, recvspace, CTLFLAG_RW, &unpst_recvspace, 0, ""); -SYSCTL_DECL(_net_local_dgram); SYSCTL_ULONG(_net_local_dgram, OID_AUTO, maxdgram, CTLFLAG_RW, &unpdg_sendspace, 0, ""); SYSCTL_ULONG(_net_local_dgram, OID_AUTO, recvspace, CTLFLAG_RW, &unpdg_recvspace, 0, ""); -SYSCTL_DECL(_net_local); SYSCTL_INT(_net_local, OID_AUTO, inflight, CTLFLAG_RD, &unp_rights, 0, ""); /* @@ -187,6 +188,37 @@ static int unp_internalize(struct mbuf **, struct thread *); static int unp_listen(struct socket *, struct unpcb *, int, struct thread *); +/* + * Definitions of protocols supported in the LOCAL domain. + */ +static struct domain localdomain; +static struct protosw localsw[] = { +{ + .pr_type = SOCK_STREAM, + .pr_domain = &localdomain, + .pr_flags = PR_CONNREQUIRED|PR_WANTRCVD|PR_RIGHTS, + .pr_ctloutput = &uipc_ctloutput, + .pr_usrreqs = &uipc_usrreqs +}, +{ + .pr_type = SOCK_DGRAM, + .pr_domain = &localdomain, + .pr_flags = PR_ATOMIC|PR_ADDR|PR_RIGHTS, + .pr_usrreqs = &uipc_usrreqs +}, +}; + +static struct domain localdomain = { + .dom_family = AF_LOCAL, + .dom_name = "local", + .dom_init = unp_init, + .dom_externalize = unp_externalize, + .dom_dispose = unp_dispose, + .dom_protosw = localsw, + .dom_protoswNPROTOSW = &localsw[sizeof(localsw)/sizeof(localsw[0])] +}; +DOMAIN_SET(local); + static void uipc_abort(struct socket *so) { |