]> git.saurik.com Git - apple/xnu.git/blobdiff - bsd/netinet6/in6_proto.c
xnu-4570.51.1.tar.gz
[apple/xnu.git] / bsd / netinet6 / in6_proto.c
index a87c6e66233a148706a24a1bde15404ea6b0279a..e71714e69a380949c96b53b158c6572c5849fa6e 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008-2013 Apple Inc. All rights reserved.
+ * Copyright (c) 2008-2015 Apple Inc. All rights reserved.
  *
  * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
  *
 #include <netinet6/tcp6_var.h>
 #include <netinet6/raw_ip6.h>
 #include <netinet6/udp6_var.h>
-#include <netinet6/pim6_var.h>
 #include <netinet6/nd6.h>
 #include <netinet6/mld6_var.h>
 
-#include <netinet6/ip6_mroute.h>
-
 #if IPSEC
 #include <netinet6/ipsec.h>
 #if INET6
@@ -181,7 +178,7 @@ struct ip6protosw inet6sw[] = {
        .pr_type =              SOCK_DGRAM,
        .pr_protocol =          IPPROTO_UDP,
        .pr_flags =             PR_ATOMIC|PR_ADDR|PR_PROTOLOCK|PR_PCBLOCK|
-                               PR_EVCONNINFO,
+                               PR_EVCONNINFO|PR_PRECONN_WRITE,
        .pr_input =             udp6_input,
        .pr_ctlinput =          udp6_ctlinput,
        .pr_ctloutput =         ip6_ctloutput,
@@ -197,7 +194,8 @@ struct ip6protosw inet6sw[] = {
        .pr_type =              SOCK_STREAM,
        .pr_protocol =          IPPROTO_TCP,
        .pr_flags =             PR_CONNREQUIRED|PR_WANTRCVD|PR_PCBLOCK|
-                               PR_PROTOLOCK|PR_DISPOSE|PR_EVCONNINFO,
+                               PR_PROTOLOCK|PR_DISPOSE|PR_EVCONNINFO|
+                               PR_PRECONN_WRITE|PR_DATA_IDEMPOTENT,
        .pr_input =             tcp6_input,
        .pr_ctlinput =          tcp6_ctlinput,
        .pr_ctloutput =         tcp_ctloutput,
@@ -319,18 +317,6 @@ struct ip6protosw inet6sw[] = {
        .pr_usrreqs =           &rip6_usrreqs,
        .pr_unlock =            rip_unlock,
 },
-#if MROUTING
-{
-       .pr_type =              SOCK_RAW,
-       .pr_protocol =          IPPROTO_PIM,
-       .pr_flags =             PR_ATOMIC|PR_ADDR|PR_LASTHDR,
-       .pr_input =             pim6_input,
-       .pr_output =            rip6_pr_output,
-       .pr_ctloutput =         rip6_ctloutput,
-       .pr_usrreqs =           &rip6_usrreqs,
-       .pr_unlock =            rip_unlock,
-},
-#endif /* MROUTING */
 /* raw wildcard */
 {
        .pr_type =              SOCK_RAW,
@@ -494,6 +480,7 @@ u_int32_t   rip6_recvspace = RIPV6RCVQ;
 int    icmp6_rediraccept = 1;          /* accept and process redirects */
 int    icmp6_redirtimeout = 10 * 60;   /* 10 minutes */
 int    icmp6errppslim = 500;           /* 500 packets per second */
+int    icmp6rappslim = 10;             /* 10 packets per second */
 int    icmp6_nodeinfo = 3;             /* enable/disable NI response */
 
 /* UDP on IP6 parameters */
@@ -579,11 +566,19 @@ SYSCTL_INT(_net_inet6_ip6, IPV6CTL_SENDREDIRECTS,
        redirect, CTLFLAG_RW | CTLFLAG_LOCKED,  &ip6_sendredirects,     0, "");
 SYSCTL_INT(_net_inet6_ip6, IPV6CTL_DEFHLIM,
        hlim, CTLFLAG_RW | CTLFLAG_LOCKED,              &ip6_defhlim,   0, "");
-SYSCTL_PROC(_net_inet6_ip6, IPV6CTL_STATS, stats, CTLFLAG_RD | CTLFLAG_LOCKED,
+SYSCTL_PROC(_net_inet6_ip6, IPV6CTL_STATS, stats,
+       CTLTYPE_STRUCT | CTLFLAG_RD | CTLFLAG_LOCKED,
        0, 0, ip6_getstat, "S,ip6stat", "");
+
+#if (DEVELOPMENT || DEBUG)
+SYSCTL_INT(_net_inet6_ip6, IPV6CTL_ACCEPT_RTADV,
+       accept_rtadv, CTLFLAG_RW | CTLFLAG_LOCKED,
+        &ip6_accept_rtadv, 0, "");
+#else
 SYSCTL_INT(_net_inet6_ip6, IPV6CTL_ACCEPT_RTADV,
        accept_rtadv, CTLFLAG_RD | CTLFLAG_LOCKED,
-       &ip6_accept_rtadv,      0, "");
+       &ip6_accept_rtadv, 0, "");
+#endif /* (DEVELOPMENT || DEBUG) */
 SYSCTL_INT(_net_inet6_ip6, IPV6CTL_KEEPFAITH,
        keepfaith, CTLFLAG_RD | CTLFLAG_LOCKED,         &ip6_keepfaith, 0, "");
 SYSCTL_INT(_net_inet6_ip6, IPV6CTL_LOG_INTERVAL,
@@ -624,10 +619,6 @@ SYSCTL_INT(_net_inet6_ip6, IPV6CTL_USE_DEFAULTZONE,
        use_defaultzone, CTLFLAG_RW | CTLFLAG_LOCKED, &ip6_use_defzone,         0,"");
 SYSCTL_INT(_net_inet6_ip6, IPV6CTL_MCAST_PMTU,
        mcast_pmtu, CTLFLAG_RW | CTLFLAG_LOCKED,        &ip6_mcast_pmtu,        0, "");
-#if MROUTING
-SYSCTL_STRUCT(_net_inet6_ip6, OID_AUTO, mrt6stat, CTLFLAG_RD | CTLFLAG_LOCKED,
-        &mrt6stat, mrt6stat, "");
-#endif
 SYSCTL_INT(_net_inet6_ip6, IPV6CTL_NEIGHBORGCTHRESH,
        neighborgcthresh, CTLFLAG_RW | CTLFLAG_LOCKED,  &ip6_neighborgcthresh,  0, "");
 SYSCTL_INT(_net_inet6_ip6, IPV6CTL_MAXIFPREFIXES,
@@ -665,6 +656,8 @@ SYSCTL_INT(_net_inet6_icmp6, ICMPV6CTL_NODEINFO,
        nodeinfo, CTLFLAG_RW | CTLFLAG_LOCKED,  &icmp6_nodeinfo,        0, "");
 SYSCTL_INT(_net_inet6_icmp6, ICMPV6CTL_ERRPPSLIMIT,
        errppslimit, CTLFLAG_RW | CTLFLAG_LOCKED,       &icmp6errppslim,        0, "");
+SYSCTL_INT(_net_inet6_icmp6, OID_AUTO,
+       rappslimit, CTLFLAG_RW | CTLFLAG_LOCKED,        &icmp6rappslim, 0, "");
 SYSCTL_INT(_net_inet6_icmp6, ICMPV6CTL_ND6_DEBUG,
        nd6_debug, CTLFLAG_RW | CTLFLAG_LOCKED, &nd6_debug,             0, "");
 SYSCTL_INT(_net_inet6_icmp6, ICMPV6CTL_ND6_ONLINKNSRFC4861,