{ "rttUpdate", KSTAT_DATA_UINT32, 0 }, { "rttNoUpdate", KSTAT_DATA_UINT32, 0 }, { "timRetrans", KSTAT_DATA_UINT32, 0 }, { "timRetransDrop", KSTAT_DATA_UINT32, 0 }, { "timKeepalive", KSTAT_DATA_UINT32, 0 }, { "timKeepaliveProbe", KSTAT_DATA_UINT32, 0 }, { "timKeepaliveDrop", KSTAT_DATA_UINT32, 0 }, { "listenDrop", KSTAT_DATA_UINT32, 0 }, { "listenDropQ0", KSTAT_DATA_UINT32, 0 }, { "halfOpenDrop", KSTAT_DATA_UINT32, 0 }, { "outSackRetransSegs", KSTAT_DATA_UINT32, 0 }, { "connTableSize6", KSTAT_DATA_INT32, 0 } }; ksp = kstat_create_netstack(TCP_MOD_NAME, stackid, TCP_MOD_NAME, "mib2", KSTAT_TYPE_NAMED, NUM_OF_FIELDS(tcp_named_kstat_t), 0, stackid); if (ksp == NULL) return (NULL); template.rtoAlgorithm.value.ui32 = 4; template.maxConn.value.i32 = -1; bcopy(&template, ksp->ks_data, sizeof (template)); ksp->ks_update = tcp_kstat_update; ksp->ks_private = (void *)(uintptr_t)stackid; /* * If this is an exclusive netstack for a local zone, the global zone * should still be able to read the kstat. */
{ "sctpInAckUnsent", KSTAT_DATA_INT32, 0 }, { "sctpFragUsrMsgs", KSTAT_DATA_INT64, 0 }, { "sctpReasmUsrMsgs", KSTAT_DATA_INT64, 0 }, { "sctpOutSCTPPkts", KSTAT_DATA_INT64, 0 }, { "sctpInSCTPPkts", KSTAT_DATA_INT64, 0 }, { "sctpInInvalidCookie", KSTAT_DATA_INT32, 0 }, { "sctpTimRetrans", KSTAT_DATA_INT32, 0 }, { "sctpTimRetransDrop", KSTAT_DATA_INT32, 0 }, { "sctpTimHearBeatProbe", KSTAT_DATA_INT32, 0 }, { "sctpTimHearBeatDrop", KSTAT_DATA_INT32, 0 }, { "sctpListenDrop", KSTAT_DATA_INT32, 0 }, { "sctpInClosed", KSTAT_DATA_INT32, 0 } }; sctp_mibkp = kstat_create(SCTP_MOD_NAME, 0, "sctp", "mib2", KSTAT_TYPE_NAMED, NUM_OF_FIELDS(sctp_named_kstat_t), 0); if (sctp_mibkp == NULL) return; /* These won't change. */ template.sctpRtoAlgorithm.value.i32 = MIB2_SCTP_RTOALGO_VANJ; template.sctpMaxAssocs.value.i32 = -1; bcopy(&template, sctp_mibkp->ks_data, sizeof (template)); sctp_mibkp->ks_update = sctp_kstat_update; kstat_install(sctp_mibkp); if ((sctp_kstat = kstat_create(SCTP_MOD_NAME, 0, "sctpstat",