diff options
Diffstat (limited to 'usr/src/uts/common/inet/ipsecesp.h')
-rw-r--r-- | usr/src/uts/common/inet/ipsecesp.h | 73 |
1 files changed, 72 insertions, 1 deletions
diff --git a/usr/src/uts/common/inet/ipsecesp.h b/usr/src/uts/common/inet/ipsecesp.h index 96e139add0..3039caf2e6 100644 --- a/usr/src/uts/common/inet/ipsecesp.h +++ b/usr/src/uts/common/inet/ipsecesp.h @@ -21,6 +21,7 @@ /* * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. + * Copyright (c) 2012 Nexenta Systems, Inc. All rights reserved. */ #ifndef _INET_IPSECESP_H @@ -44,6 +45,52 @@ typedef struct ipsecespparam_s { } ipsecespparam_t; /* + * Stats. This may eventually become a full-blown SNMP MIB once that spec + * stabilizes. + */ + +typedef struct esp_kstats_s { + kstat_named_t esp_stat_num_aalgs; + kstat_named_t esp_stat_good_auth; + kstat_named_t esp_stat_bad_auth; + kstat_named_t esp_stat_bad_padding; + kstat_named_t esp_stat_replay_failures; + kstat_named_t esp_stat_replay_early_failures; + kstat_named_t esp_stat_keysock_in; + kstat_named_t esp_stat_out_requests; + kstat_named_t esp_stat_acquire_requests; + kstat_named_t esp_stat_bytes_expired; + kstat_named_t esp_stat_out_discards; + kstat_named_t esp_stat_crypto_sync; + kstat_named_t esp_stat_crypto_async; + kstat_named_t esp_stat_crypto_failures; + kstat_named_t esp_stat_num_ealgs; + kstat_named_t esp_stat_bad_decrypt; + kstat_named_t esp_stat_sa_port_renumbers; +} esp_kstats_t; + +/* + * espstack->esp_kstats is equal to espstack->esp_ksp->ks_data if + * kstat_create_netstack for espstack->esp_ksp succeeds, but when it + * fails, it will be NULL. Note this is done for all stack instances, + * so it *could* fail. hence a non-NULL checking is done for + * ESP_BUMP_STAT and ESP_DEBUMP_STAT + */ +#define ESP_BUMP_STAT(espstack, x) \ +do { \ + if (espstack->esp_kstats != NULL) \ + (espstack->esp_kstats->esp_stat_ ## x).value.ui64++; \ +_NOTE(CONSTCOND) \ +} while (0) + +#define ESP_DEBUMP_STAT(espstack, x) \ +do { \ + if (espstack->esp_kstats != NULL) \ + (espstack->esp_kstats->esp_stat_ ## x).value.ui64--; \ +_NOTE(CONSTCOND) \ +} while (0) + +/* * IPSECESP stack instances */ struct ipsecesp_stack { @@ -72,7 +119,31 @@ struct ipsecesp_stack { }; typedef struct ipsecesp_stack ipsecesp_stack_t; -/* Define *this* NDD variable here because we use it outside ESP proper. */ +#define ipsecesp_debug ipsecesp_params[0].ipsecesp_param_value +#define ipsecesp_age_interval ipsecesp_params[1].ipsecesp_param_value +#define ipsecesp_age_int_max ipsecesp_params[1].ipsecesp_param_max +#define ipsecesp_reap_delay ipsecesp_params[2].ipsecesp_param_value +#define ipsecesp_replay_size ipsecesp_params[3].ipsecesp_param_value +#define ipsecesp_acquire_timeout \ + ipsecesp_params[4].ipsecesp_param_value +#define ipsecesp_larval_timeout \ + ipsecesp_params[5].ipsecesp_param_value +#define ipsecesp_default_soft_bytes \ + ipsecesp_params[6].ipsecesp_param_value +#define ipsecesp_default_hard_bytes \ + ipsecesp_params[7].ipsecesp_param_value +#define ipsecesp_default_soft_addtime \ + ipsecesp_params[8].ipsecesp_param_value +#define ipsecesp_default_hard_addtime \ + ipsecesp_params[9].ipsecesp_param_value +#define ipsecesp_default_soft_usetime \ + ipsecesp_params[10].ipsecesp_param_value +#define ipsecesp_default_hard_usetime \ + ipsecesp_params[11].ipsecesp_param_value +#define ipsecesp_log_unknown_spi \ + ipsecesp_params[12].ipsecesp_param_value +#define ipsecesp_padding_check \ + ipsecesp_params[13].ipsecesp_param_value #define ipsecesp_nat_keepalive_interval \ ipsecesp_params[14].ipsecesp_param_value |