1 /*
   2  * CDDL HEADER START
   3  *
   4  * The contents of this file are subject to the terms of the
   5  * Common Development and Distribution License (the "License").
   6  * You may not use this file except in compliance with the License.
   7  *
   8  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
   9  * or http://www.opensolaris.org/os/licensing.
  10  * See the License for the specific language governing permissions
  11  * and limitations under the License.
  12  *
  13  * When distributing Covered Code, include this CDDL HEADER in each
  14  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  15  * If applicable, add the following below this CDDL HEADER, with the
  16  * fields enclosed by brackets "[]" replaced with your own identifying
  17  * information: Portions Copyright [yyyy] [name of copyright owner]
  18  *
  19  * CDDL HEADER END
  20  */
  21 /*
  22  * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
  23  * Copyright 2013 Nexenta Systems, Inc.  All rights reserved.
  24  */
  25 
  26 /*
  27  * Kstat definitions for the SMB server module.
  28  */
  29 #ifndef _SMBSRV_SMB_KSTAT_H
  30 #define _SMBSRV_SMB_KSTAT_H
  31 
  32 #include        <smbsrv/smb.h>
  33 #include        <smbsrv/smb2.h>
  34 
  35 #ifdef  __cplusplus
  36 extern "C" {
  37 #endif
  38 
  39 #define SMBSRV_KSTAT_PROCESS            "smbd"
  40 #define SMBSRV_KSTAT_MODULE             "smbsrv"
  41 #define SMBSRV_KSTAT_CLASS              "net"
  42 #define SMBSRV_KSTAT_NAME               "smbsrv"
  43 #define SMBSRV_KSTAT_NAME_CMDS          "smbsrv_commands"
  44 #define SMBSRV_KSTAT_TXRCACHE           "smb_txreq"
  45 #define SMBSRV_KSTAT_REQUEST_CACHE      "smb_request_cache"
  46 #define SMBSRV_KSTAT_SESSION_CACHE      "smb_session_cache"
  47 #define SMBSRV_KSTAT_USER_CACHE         "smb_user_cache"
  48 #define SMBSRV_KSTAT_TREE_CACHE         "smb_tree_cache"
  49 #define SMBSRV_KSTAT_OFILE_CACHE        "smb_ofile_cache"
  50 #define SMBSRV_KSTAT_ODIR_CACHE         "smb_odir_cache"
  51 #define SMBSRV_KSTAT_NODE_CACHE         "smb_node_cache"
  52 #define SMBSRV_KSTAT_MBC_CACHE          "smb_mbc_cache"
  53 #define SMBSRV_KSTAT_STATISTICS         "smbsrv_statistics"
  54 #define SMBSRV_KSTAT_UNSUPPORTED        "Unsupported"
  55 #define SMBSRV_KSTAT_WORKERS            "smb_workers"
  56 
  57 #pragma pack(1)
  58 
  59 typedef struct smb_kstat_utilization {
  60         hrtime_t        ku_wtime;
  61         hrtime_t        ku_wlentime;
  62         hrtime_t        ku_rtime;
  63         hrtime_t        ku_rlentime;
  64 } smb_kstat_utilization_t;
  65 
  66 typedef struct smb_kstat_req {
  67         char            kr_name[KSTAT_STRLEN];
  68         char            kr_pad[(~(KSTAT_STRLEN & 0x07) + 1) & 0x07];
  69         uint64_t        kr_sum;
  70         uint64_t        kr_txb;
  71         uint64_t        kr_rxb;
  72         uint64_t        kr_nreq;
  73         uint64_t        kr_a_mean;
  74         uint64_t        kr_a_stddev;
  75         uint64_t        kr_d_mean;
  76         uint64_t        kr_d_stddev;
  77 } smb_kstat_req_t;
  78 
  79 typedef struct smbsrv_kstats {
  80         hrtime_t                ks_start_time;
  81         uint64_t                ks_txb;         /* Bytes transmitted */
  82         uint64_t                ks_rxb;         /* Bytes received */
  83         uint64_t                ks_nreq;        /* Requests treated */
  84         smb_kstat_utilization_t ks_utilization;
  85         smb_kstat_req_t         ks_reqs1[SMB_COM_NUM];
  86         smb_kstat_req_t         ks_reqs2[SMB2__NCMDS];
  87         uint32_t                ks_nbt_sess;    /* NBT sessions */
  88         uint32_t                ks_tcp_sess;    /* TCP sessions */
  89         uint32_t                ks_users;       /* Users logged in */
  90         uint32_t                ks_trees;       /* Trees connected */
  91         uint32_t                ks_files;       /* Open files */
  92         uint32_t                ks_pipes;       /* Open pipes */
  93         uint32_t                ks_maxreqs;     /* Max number of reqs */
  94         uint32_t                ks_padding;
  95 } smbsrv_kstats_t;
  96 
  97 #pragma pack()
  98 
  99 #ifdef  __cplusplus
 100 }
 101 #endif
 102 
 103 #endif /* _SMBSRV_SMB_KSTAT_H */