+ lck_mtx_init(&proxy6_lock, ip6_mutex_grp, ip6_mutex_attr);
+
+ in6_ifaddr_rwlock_grp_attr = lck_grp_attr_alloc_init();
+ in6_ifaddr_rwlock_grp = lck_grp_alloc_init("in6_ifaddr_rwlock",
+ in6_ifaddr_rwlock_grp_attr);
+ in6_ifaddr_rwlock_attr = lck_attr_alloc_init();
+ lck_rw_init(&in6_ifaddr_rwlock, in6_ifaddr_rwlock_grp,
+ in6_ifaddr_rwlock_attr);
+
+ IN6_IFSTAT_REQUIRE_ALIGNED_64(ifs6_in_receive);
+ IN6_IFSTAT_REQUIRE_ALIGNED_64(ifs6_in_hdrerr);
+ IN6_IFSTAT_REQUIRE_ALIGNED_64(ifs6_in_toobig);
+ IN6_IFSTAT_REQUIRE_ALIGNED_64(ifs6_in_noroute);
+ IN6_IFSTAT_REQUIRE_ALIGNED_64(ifs6_in_addrerr);
+ IN6_IFSTAT_REQUIRE_ALIGNED_64(ifs6_in_protounknown);
+ IN6_IFSTAT_REQUIRE_ALIGNED_64(ifs6_in_truncated);
+ IN6_IFSTAT_REQUIRE_ALIGNED_64(ifs6_in_discard);
+ IN6_IFSTAT_REQUIRE_ALIGNED_64(ifs6_in_deliver);
+ IN6_IFSTAT_REQUIRE_ALIGNED_64(ifs6_out_forward);
+ IN6_IFSTAT_REQUIRE_ALIGNED_64(ifs6_out_request);
+ IN6_IFSTAT_REQUIRE_ALIGNED_64(ifs6_out_discard);
+ IN6_IFSTAT_REQUIRE_ALIGNED_64(ifs6_out_fragok);
+ IN6_IFSTAT_REQUIRE_ALIGNED_64(ifs6_out_fragfail);
+ IN6_IFSTAT_REQUIRE_ALIGNED_64(ifs6_out_fragcreat);
+ IN6_IFSTAT_REQUIRE_ALIGNED_64(ifs6_reass_reqd);
+ IN6_IFSTAT_REQUIRE_ALIGNED_64(ifs6_reass_ok);
+ IN6_IFSTAT_REQUIRE_ALIGNED_64(ifs6_reass_fail);
+ IN6_IFSTAT_REQUIRE_ALIGNED_64(ifs6_in_mcast);
+ IN6_IFSTAT_REQUIRE_ALIGNED_64(ifs6_out_mcast);
+
+ ICMP6_IFSTAT_REQUIRE_ALIGNED_64(ifs6_in_msg);
+ ICMP6_IFSTAT_REQUIRE_ALIGNED_64(ifs6_in_error);
+ ICMP6_IFSTAT_REQUIRE_ALIGNED_64(ifs6_in_dstunreach);
+ ICMP6_IFSTAT_REQUIRE_ALIGNED_64(ifs6_in_adminprohib);
+ ICMP6_IFSTAT_REQUIRE_ALIGNED_64(ifs6_in_timeexceed);
+ ICMP6_IFSTAT_REQUIRE_ALIGNED_64(ifs6_in_paramprob);
+ ICMP6_IFSTAT_REQUIRE_ALIGNED_64(ifs6_in_pkttoobig);
+ ICMP6_IFSTAT_REQUIRE_ALIGNED_64(ifs6_in_echo);
+ ICMP6_IFSTAT_REQUIRE_ALIGNED_64(ifs6_in_echoreply);
+ ICMP6_IFSTAT_REQUIRE_ALIGNED_64(ifs6_in_routersolicit);
+ ICMP6_IFSTAT_REQUIRE_ALIGNED_64(ifs6_in_routeradvert);
+ ICMP6_IFSTAT_REQUIRE_ALIGNED_64(ifs6_in_neighborsolicit);
+ ICMP6_IFSTAT_REQUIRE_ALIGNED_64(ifs6_in_neighboradvert);
+ ICMP6_IFSTAT_REQUIRE_ALIGNED_64(ifs6_in_redirect);
+ ICMP6_IFSTAT_REQUIRE_ALIGNED_64(ifs6_in_mldquery);
+ ICMP6_IFSTAT_REQUIRE_ALIGNED_64(ifs6_in_mldreport);
+ ICMP6_IFSTAT_REQUIRE_ALIGNED_64(ifs6_in_mlddone);
+
+ ICMP6_IFSTAT_REQUIRE_ALIGNED_64(ifs6_out_msg);
+ ICMP6_IFSTAT_REQUIRE_ALIGNED_64(ifs6_out_error);
+ ICMP6_IFSTAT_REQUIRE_ALIGNED_64(ifs6_out_dstunreach);
+ ICMP6_IFSTAT_REQUIRE_ALIGNED_64(ifs6_out_adminprohib);
+ ICMP6_IFSTAT_REQUIRE_ALIGNED_64(ifs6_out_timeexceed);
+ ICMP6_IFSTAT_REQUIRE_ALIGNED_64(ifs6_out_paramprob);
+ ICMP6_IFSTAT_REQUIRE_ALIGNED_64(ifs6_out_pkttoobig);
+ ICMP6_IFSTAT_REQUIRE_ALIGNED_64(ifs6_out_echo);
+ ICMP6_IFSTAT_REQUIRE_ALIGNED_64(ifs6_out_echoreply);
+ ICMP6_IFSTAT_REQUIRE_ALIGNED_64(ifs6_out_routersolicit);
+ ICMP6_IFSTAT_REQUIRE_ALIGNED_64(ifs6_out_routeradvert);
+ ICMP6_IFSTAT_REQUIRE_ALIGNED_64(ifs6_out_neighborsolicit);
+ ICMP6_IFSTAT_REQUIRE_ALIGNED_64(ifs6_out_neighboradvert);
+ ICMP6_IFSTAT_REQUIRE_ALIGNED_64(ifs6_out_redirect);
+ ICMP6_IFSTAT_REQUIRE_ALIGNED_64(ifs6_out_mldquery);
+ ICMP6_IFSTAT_REQUIRE_ALIGNED_64(ifs6_out_mldreport);
+ ICMP6_IFSTAT_REQUIRE_ALIGNED_64(ifs6_out_mlddone);
+
+ getmicrotime(&tv);
+ ip6_desync_factor =
+ (RandomULong() ^ tv.tv_usec) % MAX_TEMP_DESYNC_FACTOR;