src/samplers/krb5kdc/stat.rs (533 lines of code) (raw):
// Copyright 2021 Twitter, Inc.
// Licensed under the Apache License, Version 2.0
// http://www.apache.org/licenses/LICENSE-2.0
use crate::metrics::*;
use serde_derive::{Deserialize, Serialize};
use strum_macros::{EnumIter, EnumString, IntoStaticStr};
#[cfg(feature = "bpf")]
use crate::common::bpf::*;
#[derive(
Clone,
Copy,
Debug,
Deserialize,
EnumIter,
EnumString,
Eq,
IntoStaticStr,
PartialEq,
Hash,
Serialize,
)]
#[serde(deny_unknown_fields, try_from = "&str", into = "&str")]
pub enum Krb5kdcStatistic {
#[strum(serialize = "krb5kdc/finish_process_as_req/unknown")]
FinishProcessAsReqUnknown,
#[strum(serialize = "krb5kdc/finish_process_as_req/none")]
FinishProcessAsReqNone,
#[strum(serialize = "krb5kdc/finish_process_as_req/name_exp")]
FinishProcessAsReqNameExp,
#[strum(serialize = "krb5kdc/finish_process_as_req/service_exp")]
FinishProcessAsReqServiceExp,
#[strum(serialize = "krb5kdc/finish_process_as_req/bad_pvno")]
FinishProcessAsReqBadPvno,
#[strum(serialize = "krb5kdc/finish_process_as_req/c_old_mast_kvno")]
FinishProcessAsReqCOldMastKvno,
#[strum(serialize = "krb5kdc/finish_process_as_req/s_old_mast_kvno")]
FinishProcessAsReqSOldMastKvno,
#[strum(serialize = "krb5kdc/finish_process_as_req/c_principal_unknown")]
FinishProcessAsReqCPrincipalUnknown,
#[strum(serialize = "krb5kdc/finish_process_as_req/s_principal_unknown")]
FinishProcessAsReqSPrincipalUnknown,
#[strum(serialize = "krb5kdc/finish_process_as_req/principal_not_unique")]
FinishProcessAsReqPrincipalNotUnique,
#[strum(serialize = "krb5kdc/finish_process_as_req/null_key")]
FinishProcessAsReqNullKey,
#[strum(serialize = "krb5kdc/finish_process_as_req/cannot_postdate")]
FinishProcessAsReqCannotPostdate,
#[strum(serialize = "krb5kdc/finish_process_as_req/never_valid")]
FinishProcessAsReqNeverValid,
#[strum(serialize = "krb5kdc/finish_process_as_req/policy")]
FinishProcessAsReqPolicy,
#[strum(serialize = "krb5kdc/finish_process_as_req/badoption")]
FinishProcessAsReqBadoption,
#[strum(serialize = "krb5kdc/finish_process_as_req/etype_nosupp")]
FinishProcessAsReqEtypeNosupp,
#[strum(serialize = "krb5kdc/finish_process_as_req/sumtype_nosupp")]
FinishProcessAsReqSumtypeNosupp,
#[strum(serialize = "krb5kdc/finish_process_as_req/padata_type_nosupp")]
FinishProcessAsReqPadataTypeNosupp,
#[strum(serialize = "krb5kdc/finish_process_as_req/trtype_nosupp")]
FinishProcessAsReqTrtypeNosupp,
#[strum(serialize = "krb5kdc/finish_process_as_req/client_revoked")]
FinishProcessAsReqClientRevoked,
#[strum(serialize = "krb5kdc/finish_process_as_req/service_revoked")]
FinishProcessAsReqServiceRevoked,
#[strum(serialize = "krb5kdc/finish_process_as_req/tgt_revoked")]
FinishProcessAsReqTgtRevoked,
#[strum(serialize = "krb5kdc/finish_process_as_req/client_notyet")]
FinishProcessAsReqClientNotyet,
#[strum(serialize = "krb5kdc/finish_process_as_req/service_notyet")]
FinishProcessAsReqServiceNotyet,
#[strum(serialize = "krb5kdc/finish_process_as_req/key_exp")]
FinishProcessAsReqKeyExp,
#[strum(serialize = "krb5kdc/finish_process_as_req/preauth_failed")]
FinishProcessAsReqPreauthFailed,
#[strum(serialize = "krb5kdc/finish_process_as_req/preauth_required")]
FinishProcessAsReqPreauthRequired,
#[strum(serialize = "krb5kdc/finish_process_as_req/server_nomatch")]
FinishProcessAsReqServerNomatch,
#[strum(serialize = "krb5kdc/finish_process_as_req/must_use_user2user")]
FinishProcessAsReqMustUseUser2user,
#[strum(serialize = "krb5kdc/finish_process_as_req/path_not_accepted")]
FinishProcessAsReqPathNotAccepted,
#[strum(serialize = "krb5kdc/finish_process_as_req/svc_unavailable")]
FinishProcessAsReqSvcUnavailable,
#[strum(serialize = "krb5kdc/finish_dispatch_cache/unknown")]
FinishDispatchCacheUnknown,
#[strum(serialize = "krb5kdc/finish_dispatch_cache/none")]
FinishDispatchCacheNone,
#[strum(serialize = "krb5kdc/finish_dispatch_cache/name_exp")]
FinishDispatchCacheNameExp,
#[strum(serialize = "krb5kdc/finish_dispatch_cache/service_exp")]
FinishDispatchCacheServiceExp,
#[strum(serialize = "krb5kdc/finish_dispatch_cache/bad_pvno")]
FinishDispatchCacheBadPvno,
#[strum(serialize = "krb5kdc/finish_dispatch_cache/c_old_mast_kvno")]
FinishDispatchCacheCOldMastKvno,
#[strum(serialize = "krb5kdc/finish_dispatch_cache/s_old_mast_kvno")]
FinishDispatchCacheSOldMastKvno,
#[strum(serialize = "krb5kdc/finish_dispatch_cache/c_principal_unknown")]
FinishDispatchCacheCPrincipalUnknown,
#[strum(serialize = "krb5kdc/finish_dispatch_cache/s_principal_unknown")]
FinishDispatchCacheSPrincipalUnknown,
#[strum(serialize = "krb5kdc/finish_dispatch_cache/principal_not_unique")]
FinishDispatchCachePrincipalNotUnique,
#[strum(serialize = "krb5kdc/finish_dispatch_cache/null_key")]
FinishDispatchCacheNullKey,
#[strum(serialize = "krb5kdc/finish_dispatch_cache/cannot_postdate")]
FinishDispatchCacheCannotPostdate,
#[strum(serialize = "krb5kdc/finish_dispatch_cache/never_valid")]
FinishDispatchCacheNeverValid,
#[strum(serialize = "krb5kdc/finish_dispatch_cache/policy")]
FinishDispatchCachePolicy,
#[strum(serialize = "krb5kdc/finish_dispatch_cache/badoption")]
FinishDispatchCacheBadoption,
#[strum(serialize = "krb5kdc/finish_dispatch_cache/etype_nosupp")]
FinishDispatchCacheEtypeNosupp,
#[strum(serialize = "krb5kdc/finish_dispatch_cache/sumtype_nosupp")]
FinishDispatchCacheSumtypeNosupp,
#[strum(serialize = "krb5kdc/finish_dispatch_cache/padata_type_nosupp")]
FinishDispatchCachePadataTypeNosupp,
#[strum(serialize = "krb5kdc/finish_dispatch_cache/trtype_nosupp")]
FinishDispatchCacheTrtypeNosupp,
#[strum(serialize = "krb5kdc/finish_dispatch_cache/client_revoked")]
FinishDispatchCacheClientRevoked,
#[strum(serialize = "krb5kdc/finish_dispatch_cache/service_revoked")]
FinishDispatchCacheServiceRevoked,
#[strum(serialize = "krb5kdc/finish_dispatch_cache/tgt_revoked")]
FinishDispatchCacheTgtRevoked,
#[strum(serialize = "krb5kdc/finish_dispatch_cache/client_notyet")]
FinishDispatchCacheClientNotyet,
#[strum(serialize = "krb5kdc/finish_dispatch_cache/service_notyet")]
FinishDispatchCacheServiceNotyet,
#[strum(serialize = "krb5kdc/finish_dispatch_cache/key_exp")]
FinishDispatchCacheKeyExp,
#[strum(serialize = "krb5kdc/finish_dispatch_cache/preauth_failed")]
FinishDispatchCachePreauthFailed,
#[strum(serialize = "krb5kdc/finish_dispatch_cache/preauth_required")]
FinishDispatchCachePreauthRequired,
#[strum(serialize = "krb5kdc/finish_dispatch_cache/server_nomatch")]
FinishDispatchCacheServerNomatch,
#[strum(serialize = "krb5kdc/finish_dispatch_cache/must_use_user2user")]
FinishDispatchCacheMustUseUser2user,
#[strum(serialize = "krb5kdc/finish_dispatch_cache/path_not_accepted")]
FinishDispatchCachePathNotAccepted,
#[strum(serialize = "krb5kdc/finish_dispatch_cache/svc_unavailable")]
FinishDispatchCacheSvcUnavailable,
#[strum(serialize = "krb5kdc/process_tgs_req/unknown")]
ProcessTgsReqUnknown,
#[strum(serialize = "krb5kdc/process_tgs_req/none")]
ProcessTgsReqNone,
#[strum(serialize = "krb5kdc/process_tgs_req/name_exp")]
ProcessTgsReqNameExp,
#[strum(serialize = "krb5kdc/process_tgs_req/service_exp")]
ProcessTgsReqServiceExp,
#[strum(serialize = "krb5kdc/process_tgs_req/bad_pvno")]
ProcessTgsReqBadPvno,
#[strum(serialize = "krb5kdc/process_tgs_req/c_old_mast_kvno")]
ProcessTgsReqCOldMastKvno,
#[strum(serialize = "krb5kdc/process_tgs_req/s_old_mast_kvno")]
ProcessTgsReqSOldMastKvno,
#[strum(serialize = "krb5kdc/process_tgs_req/c_principal_unknown")]
ProcessTgsReqCPrincipalUnknown,
#[strum(serialize = "krb5kdc/process_tgs_req/s_principal_unknown")]
ProcessTgsReqSPrincipalUnknown,
#[strum(serialize = "krb5kdc/process_tgs_req/principal_not_unique")]
ProcessTgsReqPrincipalNotUnique,
#[strum(serialize = "krb5kdc/process_tgs_req/null_key")]
ProcessTgsReqNullKey,
#[strum(serialize = "krb5kdc/process_tgs_req/cannot_postdate")]
ProcessTgsReqCannotPostdate,
#[strum(serialize = "krb5kdc/process_tgs_req/never_valid")]
ProcessTgsReqNeverValid,
#[strum(serialize = "krb5kdc/process_tgs_req/policy")]
ProcessTgsReqPolicy,
#[strum(serialize = "krb5kdc/process_tgs_req/badoption")]
ProcessTgsReqBadoption,
#[strum(serialize = "krb5kdc/process_tgs_req/etype_nosupp")]
ProcessTgsReqEtypeNosupp,
#[strum(serialize = "krb5kdc/process_tgs_req/sumtype_nosupp")]
ProcessTgsReqSumtypeNosupp,
#[strum(serialize = "krb5kdc/process_tgs_req/padata_type_nosupp")]
ProcessTgsReqPadataTypeNosupp,
#[strum(serialize = "krb5kdc/process_tgs_req/trtype_nosupp")]
ProcessTgsReqTrtypeNosupp,
#[strum(serialize = "krb5kdc/process_tgs_req/client_revoked")]
ProcessTgsReqClientRevoked,
#[strum(serialize = "krb5kdc/process_tgs_req/service_revoked")]
ProcessTgsReqServiceRevoked,
#[strum(serialize = "krb5kdc/process_tgs_req/tgt_revoked")]
ProcessTgsReqTgtRevoked,
#[strum(serialize = "krb5kdc/process_tgs_req/client_notyet")]
ProcessTgsReqClientNotyet,
#[strum(serialize = "krb5kdc/process_tgs_req/service_notyet")]
ProcessTgsReqServiceNotyet,
#[strum(serialize = "krb5kdc/process_tgs_req/key_exp")]
ProcessTgsReqKeyExp,
#[strum(serialize = "krb5kdc/process_tgs_req/preauth_failed")]
ProcessTgsReqPreauthFailed,
#[strum(serialize = "krb5kdc/process_tgs_req/preauth_required")]
ProcessTgsReqPreauthRequired,
#[strum(serialize = "krb5kdc/process_tgs_req/server_nomatch")]
ProcessTgsReqServerNomatch,
#[strum(serialize = "krb5kdc/process_tgs_req/must_use_user2user")]
ProcessTgsReqMustUseUser2user,
#[strum(serialize = "krb5kdc/process_tgs_req/path_not_accepted")]
ProcessTgsReqPathNotAccepted,
#[strum(serialize = "krb5kdc/process_tgs_req/svc_unavailable")]
ProcessTgsReqSvcUnavailable,
}
impl Krb5kdcStatistic {
pub fn bpf_table(self) -> &'static str {
match self {
Self::FinishProcessAsReqUnknown => "counts_finish_process_as_req",
Self::FinishProcessAsReqNone => "counts_finish_process_as_req",
Self::FinishProcessAsReqNameExp => "counts_finish_process_as_req",
Self::FinishProcessAsReqServiceExp => "counts_finish_process_as_req",
Self::FinishProcessAsReqBadPvno => "counts_finish_process_as_req",
Self::FinishProcessAsReqCOldMastKvno => "counts_finish_process_as_req",
Self::FinishProcessAsReqSOldMastKvno => "counts_finish_process_as_req",
Self::FinishProcessAsReqCPrincipalUnknown => "counts_finish_process_as_req",
Self::FinishProcessAsReqSPrincipalUnknown => "counts_finish_process_as_req",
Self::FinishProcessAsReqPrincipalNotUnique => "counts_finish_process_as_req",
Self::FinishProcessAsReqNullKey => "counts_finish_process_as_req",
Self::FinishProcessAsReqCannotPostdate => "counts_finish_process_as_req",
Self::FinishProcessAsReqNeverValid => "counts_finish_process_as_req",
Self::FinishProcessAsReqPolicy => "counts_finish_process_as_req",
Self::FinishProcessAsReqBadoption => "counts_finish_process_as_req",
Self::FinishProcessAsReqEtypeNosupp => "counts_finish_process_as_req",
Self::FinishProcessAsReqSumtypeNosupp => "counts_finish_process_as_req",
Self::FinishProcessAsReqPadataTypeNosupp => "counts_finish_process_as_req",
Self::FinishProcessAsReqTrtypeNosupp => "counts_finish_process_as_req",
Self::FinishProcessAsReqClientRevoked => "counts_finish_process_as_req",
Self::FinishProcessAsReqServiceRevoked => "counts_finish_process_as_req",
Self::FinishProcessAsReqTgtRevoked => "counts_finish_process_as_req",
Self::FinishProcessAsReqClientNotyet => "counts_finish_process_as_req",
Self::FinishProcessAsReqServiceNotyet => "counts_finish_process_as_req",
Self::FinishProcessAsReqKeyExp => "counts_finish_process_as_req",
Self::FinishProcessAsReqPreauthFailed => "counts_finish_process_as_req",
Self::FinishProcessAsReqPreauthRequired => "counts_finish_process_as_req",
Self::FinishProcessAsReqServerNomatch => "counts_finish_process_as_req",
Self::FinishProcessAsReqMustUseUser2user => "counts_finish_process_as_req",
Self::FinishProcessAsReqPathNotAccepted => "counts_finish_process_as_req",
Self::FinishProcessAsReqSvcUnavailable => "counts_finish_process_as_req",
Self::FinishDispatchCacheUnknown => "counts_finish_dispatch_cache",
Self::FinishDispatchCacheNone => "counts_finish_dispatch_cache",
Self::FinishDispatchCacheNameExp => "counts_finish_dispatch_cache",
Self::FinishDispatchCacheServiceExp => "counts_finish_dispatch_cache",
Self::FinishDispatchCacheBadPvno => "counts_finish_dispatch_cache",
Self::FinishDispatchCacheCOldMastKvno => "counts_finish_dispatch_cache",
Self::FinishDispatchCacheSOldMastKvno => "counts_finish_dispatch_cache",
Self::FinishDispatchCacheCPrincipalUnknown => "counts_finish_dispatch_cache",
Self::FinishDispatchCacheSPrincipalUnknown => "counts_finish_dispatch_cache",
Self::FinishDispatchCachePrincipalNotUnique => "counts_finish_dispatch_cache",
Self::FinishDispatchCacheNullKey => "counts_finish_dispatch_cache",
Self::FinishDispatchCacheCannotPostdate => "counts_finish_dispatch_cache",
Self::FinishDispatchCacheNeverValid => "counts_finish_dispatch_cache",
Self::FinishDispatchCachePolicy => "counts_finish_dispatch_cache",
Self::FinishDispatchCacheBadoption => "counts_finish_dispatch_cache",
Self::FinishDispatchCacheEtypeNosupp => "counts_finish_dispatch_cache",
Self::FinishDispatchCacheSumtypeNosupp => "counts_finish_dispatch_cache",
Self::FinishDispatchCachePadataTypeNosupp => "counts_finish_dispatch_cache",
Self::FinishDispatchCacheTrtypeNosupp => "counts_finish_dispatch_cache",
Self::FinishDispatchCacheClientRevoked => "counts_finish_dispatch_cache",
Self::FinishDispatchCacheServiceRevoked => "counts_finish_dispatch_cache",
Self::FinishDispatchCacheTgtRevoked => "counts_finish_dispatch_cache",
Self::FinishDispatchCacheClientNotyet => "counts_finish_dispatch_cache",
Self::FinishDispatchCacheServiceNotyet => "counts_finish_dispatch_cache",
Self::FinishDispatchCacheKeyExp => "counts_finish_dispatch_cache",
Self::FinishDispatchCachePreauthFailed => "counts_finish_dispatch_cache",
Self::FinishDispatchCachePreauthRequired => "counts_finish_dispatch_cache",
Self::FinishDispatchCacheServerNomatch => "counts_finish_dispatch_cache",
Self::FinishDispatchCacheMustUseUser2user => "counts_finish_dispatch_cache",
Self::FinishDispatchCachePathNotAccepted => "counts_finish_dispatch_cache",
Self::FinishDispatchCacheSvcUnavailable => "counts_finish_dispatch_cache",
Self::ProcessTgsReqUnknown => "counts_process_tgs_req",
Self::ProcessTgsReqNone => "counts_process_tgs_req",
Self::ProcessTgsReqNameExp => "counts_process_tgs_req",
Self::ProcessTgsReqServiceExp => "counts_process_tgs_req",
Self::ProcessTgsReqBadPvno => "counts_process_tgs_req",
Self::ProcessTgsReqCOldMastKvno => "counts_process_tgs_req",
Self::ProcessTgsReqSOldMastKvno => "counts_process_tgs_req",
Self::ProcessTgsReqCPrincipalUnknown => "counts_process_tgs_req",
Self::ProcessTgsReqSPrincipalUnknown => "counts_process_tgs_req",
Self::ProcessTgsReqPrincipalNotUnique => "counts_process_tgs_req",
Self::ProcessTgsReqNullKey => "counts_process_tgs_req",
Self::ProcessTgsReqCannotPostdate => "counts_process_tgs_req",
Self::ProcessTgsReqNeverValid => "counts_process_tgs_req",
Self::ProcessTgsReqPolicy => "counts_process_tgs_req",
Self::ProcessTgsReqBadoption => "counts_process_tgs_req",
Self::ProcessTgsReqEtypeNosupp => "counts_process_tgs_req",
Self::ProcessTgsReqSumtypeNosupp => "counts_process_tgs_req",
Self::ProcessTgsReqPadataTypeNosupp => "counts_process_tgs_req",
Self::ProcessTgsReqTrtypeNosupp => "counts_process_tgs_req",
Self::ProcessTgsReqClientRevoked => "counts_process_tgs_req",
Self::ProcessTgsReqServiceRevoked => "counts_process_tgs_req",
Self::ProcessTgsReqTgtRevoked => "counts_process_tgs_req",
Self::ProcessTgsReqClientNotyet => "counts_process_tgs_req",
Self::ProcessTgsReqServiceNotyet => "counts_process_tgs_req",
Self::ProcessTgsReqKeyExp => "counts_process_tgs_req",
Self::ProcessTgsReqPreauthFailed => "counts_process_tgs_req",
Self::ProcessTgsReqPreauthRequired => "counts_process_tgs_req",
Self::ProcessTgsReqServerNomatch => "counts_process_tgs_req",
Self::ProcessTgsReqMustUseUser2user => "counts_process_tgs_req",
Self::ProcessTgsReqPathNotAccepted => "counts_process_tgs_req",
Self::ProcessTgsReqSvcUnavailable => "counts_process_tgs_req",
}
}
pub fn bpf_entry(self) -> &'static str {
match self {
Self::FinishProcessAsReqUnknown => "UNKNOWN",
Self::FinishProcessAsReqNone => "NONE",
Self::FinishProcessAsReqNameExp => "NAME_EXP",
Self::FinishProcessAsReqServiceExp => "SERVICE_EXP",
Self::FinishProcessAsReqBadPvno => "BAD_PVNO",
Self::FinishProcessAsReqCOldMastKvno => "C_OLD_MAST_KVNO",
Self::FinishProcessAsReqSOldMastKvno => "S_OLD_MAST_KVNO",
Self::FinishProcessAsReqCPrincipalUnknown => "C_PRINCIPAL_UNKNOWN",
Self::FinishProcessAsReqSPrincipalUnknown => "S_PRINCIPAL_UNKNOWN",
Self::FinishProcessAsReqPrincipalNotUnique => "PRINCIPAL_NOT_UNIQUE",
Self::FinishProcessAsReqNullKey => "NULL_KEY",
Self::FinishProcessAsReqCannotPostdate => "CANNOT_POSTDATE",
Self::FinishProcessAsReqNeverValid => "NEVER_VALID",
Self::FinishProcessAsReqPolicy => "POLICY",
Self::FinishProcessAsReqBadoption => "BADOPTION",
Self::FinishProcessAsReqEtypeNosupp => "ETYPE_NOSUPP",
Self::FinishProcessAsReqSumtypeNosupp => "SUMTYPE_NOSUPP",
Self::FinishProcessAsReqPadataTypeNosupp => "PADATA_TYPE_NOSUPP",
Self::FinishProcessAsReqTrtypeNosupp => "TRTYPE_NOSUPP",
Self::FinishProcessAsReqClientRevoked => "CLIENT_REVOKED",
Self::FinishProcessAsReqServiceRevoked => "SERVICE_REVOKED",
Self::FinishProcessAsReqTgtRevoked => "TGT_REVOKED",
Self::FinishProcessAsReqClientNotyet => "CLIENT_NOTYET",
Self::FinishProcessAsReqServiceNotyet => "SERVICE_NOTYET",
Self::FinishProcessAsReqKeyExp => "KEY_EXP",
Self::FinishProcessAsReqPreauthFailed => "PREAUTH_FAILED",
Self::FinishProcessAsReqPreauthRequired => "PREAUTH_REQUIRED",
Self::FinishProcessAsReqServerNomatch => "SERVER_NOMATCH",
Self::FinishProcessAsReqMustUseUser2user => "MUST_USE_USER2USER",
Self::FinishProcessAsReqPathNotAccepted => "PATH_NOT_ACCEPTED",
Self::FinishProcessAsReqSvcUnavailable => "SVC_UNAVAILABLE",
Self::FinishDispatchCacheUnknown => "UNKNOWN",
Self::FinishDispatchCacheNone => "NONE",
Self::FinishDispatchCacheNameExp => "NAME_EXP",
Self::FinishDispatchCacheServiceExp => "SERVICE_EXP",
Self::FinishDispatchCacheBadPvno => "BAD_PVNO",
Self::FinishDispatchCacheCOldMastKvno => "C_OLD_MAST_KVNO",
Self::FinishDispatchCacheSOldMastKvno => "S_OLD_MAST_KVNO",
Self::FinishDispatchCacheCPrincipalUnknown => "C_PRINCIPAL_UNKNOWN",
Self::FinishDispatchCacheSPrincipalUnknown => "S_PRINCIPAL_UNKNOWN",
Self::FinishDispatchCachePrincipalNotUnique => "PRINCIPAL_NOT_UNIQUE",
Self::FinishDispatchCacheNullKey => "NULL_KEY",
Self::FinishDispatchCacheCannotPostdate => "CANNOT_POSTDATE",
Self::FinishDispatchCacheNeverValid => "NEVER_VALID",
Self::FinishDispatchCachePolicy => "POLICY",
Self::FinishDispatchCacheBadoption => "BADOPTION",
Self::FinishDispatchCacheEtypeNosupp => "ETYPE_NOSUPP",
Self::FinishDispatchCacheSumtypeNosupp => "SUMTYPE_NOSUPP",
Self::FinishDispatchCachePadataTypeNosupp => "PADATA_TYPE_NOSUPP",
Self::FinishDispatchCacheTrtypeNosupp => "TRTYPE_NOSUPP",
Self::FinishDispatchCacheClientRevoked => "CLIENT_REVOKED",
Self::FinishDispatchCacheServiceRevoked => "SERVICE_REVOKED",
Self::FinishDispatchCacheTgtRevoked => "TGT_REVOKED",
Self::FinishDispatchCacheClientNotyet => "CLIENT_NOTYET",
Self::FinishDispatchCacheServiceNotyet => "SERVICE_NOTYET",
Self::FinishDispatchCacheKeyExp => "KEY_EXP",
Self::FinishDispatchCachePreauthFailed => "PREAUTH_FAILED",
Self::FinishDispatchCachePreauthRequired => "PREAUTH_REQUIRED",
Self::FinishDispatchCacheServerNomatch => "SERVER_NOMATCH",
Self::FinishDispatchCacheMustUseUser2user => "MUST_USE_USER2USER",
Self::FinishDispatchCachePathNotAccepted => "PATH_NOT_ACCEPTED",
Self::FinishDispatchCacheSvcUnavailable => "SVC_UNAVAILABLE",
Self::ProcessTgsReqUnknown => "UNKNOWN",
Self::ProcessTgsReqNone => "NONE",
Self::ProcessTgsReqNameExp => "NAME_EXP",
Self::ProcessTgsReqServiceExp => "SERVICE_EXP",
Self::ProcessTgsReqBadPvno => "BAD_PVNO",
Self::ProcessTgsReqCOldMastKvno => "C_OLD_MAST_KVNO",
Self::ProcessTgsReqSOldMastKvno => "S_OLD_MAST_KVNO",
Self::ProcessTgsReqCPrincipalUnknown => "C_PRINCIPAL_UNKNOWN",
Self::ProcessTgsReqSPrincipalUnknown => "S_PRINCIPAL_UNKNOWN",
Self::ProcessTgsReqPrincipalNotUnique => "PRINCIPAL_NOT_UNIQUE",
Self::ProcessTgsReqNullKey => "NULL_KEY",
Self::ProcessTgsReqCannotPostdate => "CANNOT_POSTDATE",
Self::ProcessTgsReqNeverValid => "NEVER_VALID",
Self::ProcessTgsReqPolicy => "POLICY",
Self::ProcessTgsReqBadoption => "BADOPTION",
Self::ProcessTgsReqEtypeNosupp => "ETYPE_NOSUPP",
Self::ProcessTgsReqSumtypeNosupp => "SUMTYPE_NOSUPP",
Self::ProcessTgsReqPadataTypeNosupp => "PADATA_TYPE_NOSUPP",
Self::ProcessTgsReqTrtypeNosupp => "TRTYPE_NOSUPP",
Self::ProcessTgsReqClientRevoked => "CLIENT_REVOKED",
Self::ProcessTgsReqServiceRevoked => "SERVICE_REVOKED",
Self::ProcessTgsReqTgtRevoked => "TGT_REVOKED",
Self::ProcessTgsReqClientNotyet => "CLIENT_NOTYET",
Self::ProcessTgsReqServiceNotyet => "SERVICE_NOTYET",
Self::ProcessTgsReqKeyExp => "KEY_EXP",
Self::ProcessTgsReqPreauthFailed => "PREAUTH_FAILED",
Self::ProcessTgsReqPreauthRequired => "PREAUTH_REQUIRED",
Self::ProcessTgsReqServerNomatch => "SERVER_NOMATCH",
Self::ProcessTgsReqMustUseUser2user => "MUST_USE_USER2USER",
Self::ProcessTgsReqPathNotAccepted => "PATH_NOT_ACCEPTED",
Self::ProcessTgsReqSvcUnavailable => "SVC_UNAVAILABLE",
}
}
#[cfg(feature = "bpf")]
pub fn bpf_probes_required(self, binary_path: String) -> Vec<Probe> {
// define the unique probes below.
let process_probe = Probe {
name: "finish_process_as_req".to_string(),
handler: "count_finish_process_as_req".to_string(),
probe_type: ProbeType::User,
probe_location: ProbeLocation::Entry,
binary_path: Some(binary_path.clone()),
sub_system: None,
};
let dispatch_probe = Probe {
name: "finish_dispatch_cache".to_string(),
handler: "count_finish_dispatch_cache".to_string(),
probe_type: ProbeType::User,
probe_location: ProbeLocation::Entry,
binary_path: Some(binary_path.clone()),
sub_system: None,
};
let tgs_req_probe = Probe {
name: "process_tgs_req".to_string(),
handler: "count_process_tgs_req".to_string(),
probe_type: ProbeType::User,
probe_location: ProbeLocation::Return,
binary_path: Some(binary_path.clone()),
sub_system: None,
};
match self {
Self::FinishProcessAsReqUnknown => vec![process_probe],
Self::FinishProcessAsReqNone => vec![process_probe],
Self::FinishProcessAsReqNameExp => vec![process_probe],
Self::FinishProcessAsReqServiceExp => vec![process_probe],
Self::FinishProcessAsReqBadPvno => vec![process_probe],
Self::FinishProcessAsReqCOldMastKvno => vec![process_probe],
Self::FinishProcessAsReqSOldMastKvno => vec![process_probe],
Self::FinishProcessAsReqCPrincipalUnknown => vec![process_probe],
Self::FinishProcessAsReqSPrincipalUnknown => vec![process_probe],
Self::FinishProcessAsReqPrincipalNotUnique => vec![process_probe],
Self::FinishProcessAsReqNullKey => vec![process_probe],
Self::FinishProcessAsReqCannotPostdate => vec![process_probe],
Self::FinishProcessAsReqNeverValid => vec![process_probe],
Self::FinishProcessAsReqPolicy => vec![process_probe],
Self::FinishProcessAsReqBadoption => vec![process_probe],
Self::FinishProcessAsReqEtypeNosupp => vec![process_probe],
Self::FinishProcessAsReqSumtypeNosupp => vec![process_probe],
Self::FinishProcessAsReqPadataTypeNosupp => vec![process_probe],
Self::FinishProcessAsReqTrtypeNosupp => vec![process_probe],
Self::FinishProcessAsReqClientRevoked => vec![process_probe],
Self::FinishProcessAsReqServiceRevoked => vec![process_probe],
Self::FinishProcessAsReqTgtRevoked => vec![process_probe],
Self::FinishProcessAsReqClientNotyet => vec![process_probe],
Self::FinishProcessAsReqServiceNotyet => vec![process_probe],
Self::FinishProcessAsReqKeyExp => vec![process_probe],
Self::FinishProcessAsReqPreauthFailed => vec![process_probe],
Self::FinishProcessAsReqPreauthRequired => vec![process_probe],
Self::FinishProcessAsReqServerNomatch => vec![process_probe],
Self::FinishProcessAsReqMustUseUser2user => vec![process_probe],
Self::FinishProcessAsReqPathNotAccepted => vec![process_probe],
Self::FinishProcessAsReqSvcUnavailable => vec![process_probe],
Self::FinishDispatchCacheUnknown => vec![dispatch_probe],
Self::FinishDispatchCacheNone => vec![dispatch_probe],
Self::FinishDispatchCacheNameExp => vec![dispatch_probe],
Self::FinishDispatchCacheServiceExp => vec![dispatch_probe],
Self::FinishDispatchCacheBadPvno => vec![dispatch_probe],
Self::FinishDispatchCacheCOldMastKvno => vec![dispatch_probe],
Self::FinishDispatchCacheSOldMastKvno => vec![dispatch_probe],
Self::FinishDispatchCacheCPrincipalUnknown => vec![dispatch_probe],
Self::FinishDispatchCacheSPrincipalUnknown => vec![dispatch_probe],
Self::FinishDispatchCachePrincipalNotUnique => vec![dispatch_probe],
Self::FinishDispatchCacheNullKey => vec![dispatch_probe],
Self::FinishDispatchCacheCannotPostdate => vec![dispatch_probe],
Self::FinishDispatchCacheNeverValid => vec![dispatch_probe],
Self::FinishDispatchCachePolicy => vec![dispatch_probe],
Self::FinishDispatchCacheBadoption => vec![dispatch_probe],
Self::FinishDispatchCacheEtypeNosupp => vec![dispatch_probe],
Self::FinishDispatchCacheSumtypeNosupp => vec![dispatch_probe],
Self::FinishDispatchCachePadataTypeNosupp => vec![dispatch_probe],
Self::FinishDispatchCacheTrtypeNosupp => vec![dispatch_probe],
Self::FinishDispatchCacheClientRevoked => vec![dispatch_probe],
Self::FinishDispatchCacheServiceRevoked => vec![dispatch_probe],
Self::FinishDispatchCacheTgtRevoked => vec![dispatch_probe],
Self::FinishDispatchCacheClientNotyet => vec![dispatch_probe],
Self::FinishDispatchCacheServiceNotyet => vec![dispatch_probe],
Self::FinishDispatchCacheKeyExp => vec![dispatch_probe],
Self::FinishDispatchCachePreauthFailed => vec![dispatch_probe],
Self::FinishDispatchCachePreauthRequired => vec![dispatch_probe],
Self::FinishDispatchCacheServerNomatch => vec![dispatch_probe],
Self::FinishDispatchCacheMustUseUser2user => vec![dispatch_probe],
Self::FinishDispatchCachePathNotAccepted => vec![dispatch_probe],
Self::FinishDispatchCacheSvcUnavailable => vec![dispatch_probe],
Self::ProcessTgsReqUnknown => vec![tgs_req_probe],
Self::ProcessTgsReqNone => vec![tgs_req_probe],
Self::ProcessTgsReqNameExp => vec![tgs_req_probe],
Self::ProcessTgsReqServiceExp => vec![tgs_req_probe],
Self::ProcessTgsReqBadPvno => vec![tgs_req_probe],
Self::ProcessTgsReqCOldMastKvno => vec![tgs_req_probe],
Self::ProcessTgsReqSOldMastKvno => vec![tgs_req_probe],
Self::ProcessTgsReqCPrincipalUnknown => vec![tgs_req_probe],
Self::ProcessTgsReqSPrincipalUnknown => vec![tgs_req_probe],
Self::ProcessTgsReqPrincipalNotUnique => vec![tgs_req_probe],
Self::ProcessTgsReqNullKey => vec![tgs_req_probe],
Self::ProcessTgsReqCannotPostdate => vec![tgs_req_probe],
Self::ProcessTgsReqNeverValid => vec![tgs_req_probe],
Self::ProcessTgsReqPolicy => vec![tgs_req_probe],
Self::ProcessTgsReqBadoption => vec![tgs_req_probe],
Self::ProcessTgsReqEtypeNosupp => vec![tgs_req_probe],
Self::ProcessTgsReqSumtypeNosupp => vec![tgs_req_probe],
Self::ProcessTgsReqPadataTypeNosupp => vec![tgs_req_probe],
Self::ProcessTgsReqTrtypeNosupp => vec![tgs_req_probe],
Self::ProcessTgsReqClientRevoked => vec![tgs_req_probe],
Self::ProcessTgsReqServiceRevoked => vec![tgs_req_probe],
Self::ProcessTgsReqTgtRevoked => vec![tgs_req_probe],
Self::ProcessTgsReqClientNotyet => vec![tgs_req_probe],
Self::ProcessTgsReqServiceNotyet => vec![tgs_req_probe],
Self::ProcessTgsReqKeyExp => vec![tgs_req_probe],
Self::ProcessTgsReqPreauthFailed => vec![tgs_req_probe],
Self::ProcessTgsReqPreauthRequired => vec![tgs_req_probe],
Self::ProcessTgsReqServerNomatch => vec![tgs_req_probe],
Self::ProcessTgsReqMustUseUser2user => vec![tgs_req_probe],
Self::ProcessTgsReqPathNotAccepted => vec![tgs_req_probe],
Self::ProcessTgsReqSvcUnavailable => vec![tgs_req_probe],
}
}
}
impl Statistic for Krb5kdcStatistic {
fn name(&self) -> &str {
(*self).into()
}
fn source(&self) -> Source {
Source::Counter
}
}