/*
- * Copyright (c) 2012 Apple Inc. All rights reserved.
+ * Copyright (c) 2012-2017 Apple Inc. All rights reserved.
*
* @APPLE_OSREFERENCE_LICENSE_HEADER_START@
*
#include <kern/locks.h>
#include <netinet/in.h>
-#if MPTCP
#include <netinet/mptcp_var.h>
-#endif /* MPTCP */
extern struct domain mpdomain_s;
-static struct domain *mpdomain = NULL;
static void mp_dinit(struct domain *);
-lck_mtx_t *mp_domain_mutex;
-static struct protosw mpsw[] = {
-#if MPTCP
-{
+static struct protosw mpsw = {
.pr_type = SOCK_STREAM,
.pr_protocol = IPPROTO_TCP,
.pr_flags = PR_CONNREQUIRED|PR_MULTICONN|PR_EVCONNINFO|
- PR_WANTRCVD|PR_PCBLOCK|PR_PROTOLOCK,
+ PR_WANTRCVD|PR_PCBLOCK|PR_PROTOLOCK|
+ PR_PRECONN_WRITE|PR_DATA_IDEMPOTENT,
.pr_ctloutput = mptcp_ctloutput,
.pr_init = mptcp_init,
.pr_usrreqs = &mptcp_usrreqs,
.pr_lock = mptcp_lock,
.pr_unlock = mptcp_unlock,
.pr_getlock = mptcp_getlock,
-},
-#endif /* MPTCP */
};
-static int mp_proto_count = (sizeof (mpsw) / sizeof (struct protosw));
-
struct domain mpdomain_s = {
.dom_family = PF_MULTIPATH,
.dom_flags = DOM_REENTRANT,
void
mp_dinit(struct domain *dp)
{
- struct protosw *pr;
- int i;
-
VERIFY(!(dp->dom_flags & DOM_INITIALIZED));
- VERIFY(mpdomain == NULL);
-
- mpdomain = dp;
-
- for (i = 0, pr = &mpsw[0]; i < mp_proto_count; i++, pr++)
- net_add_proto(pr, dp, 1);
- mp_domain_mutex = dp->dom_mtx;
+ net_add_proto(&mpsw, dp, 1);
}