]> git.saurik.com Git - apple/xnu.git/blobdiff - bsd/netinet/mp_proto.c
xnu-4570.1.46.tar.gz
[apple/xnu.git] / bsd / netinet / mp_proto.c
index 08bb5102f3b2d24c41324b85de0faabae5e32dc9..1093fcc9b002b9e1d74d8db5666df6080d379890 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * 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,
@@ -76,16 +67,7 @@ struct domain mpdomain_s = {
 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);
 }