39#include <sys/kernel.h>
40#include <sys/module.h>
41#include <sys/protosw.h>
42#include <sys/socket.h>
52#include <netinet6/ip6_var.h>
53#include <netinet6/sctp6_var.h>
58struct protosw sctp_stream_protosw = {
59 .pr_type = SOCK_STREAM,
62 .pr_flags = PR_CONNREQUIRED|PR_WANTRCVD|PR_LASTHDR,
63 .pr_input = sctp_input,
70struct protosw sctp_seqpacket_protosw = {
71 .pr_type = SOCK_SEQPACKET,
74 .pr_flags = PR_WANTRCVD|PR_LASTHDR,
75 .pr_input = sctp_input,
84extern struct domain inet6domain;
86struct protosw sctp6_stream_protosw = {
87 .pr_type = SOCK_STREAM,
88 .pr_domain = &inet6domain,
90 .pr_flags = PR_CONNREQUIRED|PR_WANTRCVD|PR_LASTHDR,
91 .pr_input = sctp6_input,
92 .pr_ctlinput = sctp6_ctlinput,
95 .pr_usrreqs = &sctp6_usrreqs,
98struct protosw sctp6_seqpacket_protosw = {
99 .pr_type = SOCK_SEQPACKET,
100 .pr_domain = &inet6domain,
102 .pr_flags = PR_WANTRCVD|PR_LASTHDR,
103 .pr_input = sctp6_input,
104 .pr_ctlinput = sctp6_ctlinput,
109 .pr_usrreqs = &sctp6_usrreqs,
119 error = pf_proto_register(PF_INET, &sctp_stream_protosw);
122 error = pf_proto_register(PF_INET, &sctp_seqpacket_protosw);
130 error = pf_proto_register(PF_INET6, &sctp6_stream_protosw);
133 error = pf_proto_register(PF_INET6, &sctp6_seqpacket_protosw);
154 (void)pf_proto_unregister(PF_INET,
IPPROTO_SCTP, SOCK_STREAM);
155 (void)pf_proto_unregister(PF_INET,
IPPROTO_SCTP, SOCK_SEQPACKET);
159 (void)pf_proto_unregister(PF_INET6,
IPPROTO_SCTP, SOCK_STREAM);
160 (void)pf_proto_unregister(PF_INET6,
IPPROTO_SCTP, SOCK_SEQPACKET);
static moduledata_t sctp_mod
static int __unused sctp_module_unload(void)
static int sctp_modload(struct module *module, int cmd, void *arg)
static int sctp_module_load(void)
DECLARE_MODULE(sctp, sctp_mod, SI_SUB_PROTO_IFATTACHDOMAIN, SI_ORDER_ANY)
int sctp_syscalls_init(void)
int sctp_syscalls_uninit(void)
int sctp_ctloutput(struct socket *so, struct sockopt *sopt)
void sctp_ctlinput(int, struct sockaddr *, void *)
struct pr_usrreqs sctp_usrreqs