Print this page
    
11083 support NFS server in zone
Portions contributed by: Dan Kruchinin <dan.kruchinin@nexenta.com>
Portions contributed by: Stepan Zastupov <stepan.zastupov@gmail.com>
Portions contributed by: Joyce McIntosh <joyce.mcintosh@nexenta.com>
Portions contributed by: Mike Zeller <mike@mikezeller.net>
Portions contributed by: Dan McDonald <danmcd@joyent.com>
Portions contributed by: Gordon Ross <gordon.w.ross@gmail.com>
Portions contributed by: Vitaliy Gusev <gusev.vitaliy@gmail.com>
Reviewed by: Rick McNeal <rick.mcneal@nexenta.com>
Reviewed by: Rob Gittins <rob.gittins@nexenta.com>
Reviewed by: Sanjay Nadkarni <sanjay.nadkarni@nexenta.com>
Reviewed by: Jason King <jbk@joyent.com>
Reviewed by: C Fraire <cfraire@me.com>
Change-Id: I22f289d357503f9b48a0bc2482cc4328a6d43d16
    
      
        | Split | 
	Close | 
      
      | Expand all | 
      | Collapse all | 
    
    
          --- old/usr/src/lib/libdtrace/common/smb.d
          +++ new/usr/src/lib/libdtrace/common/smb.d
   1    1  /*
   2    2   * CDDL HEADER START
   3    3   *
   4    4   * The contents of this file are subject to the terms of the
   5    5   * Common Development and Distribution License (the "License").
   6    6   * You may not use this file except in compliance with the License.
   7    7   *
   8    8   * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
   9    9   * or http://www.opensolaris.org/os/licensing.
  10   10   * See the License for the specific language governing permissions
  11   11   * and limitations under the License.
  12   12   *
  13   13   * When distributing Covered Code, include this CDDL HEADER in each
  14   14   * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  15   15   * If applicable, add the following below this CDDL HEADER, with the
  
    | 
      ↓ open down ↓ | 
    15 lines elided | 
    
      ↑ open up ↑ | 
  
  16   16   * fields enclosed by brackets "[]" replaced with your own identifying
  17   17   * information: Portions Copyright [yyyy] [name of copyright owner]
  18   18   *
  19   19   * CDDL HEADER END
  20   20   */
  21   21  
  22   22  /*
  23   23   * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
  24   24   * Use is subject to license terms.
  25   25   *
  26      - * Copyright 2017 Nexenta Systems, Inc.  All rights reserved.
       26 + * Copyright 2018 Nexenta Systems, Inc.  All rights reserved.
  27   27   */
  28   28  
  29   29  #pragma D depends_on library ip.d
  30   30  #pragma D depends_on library net.d
  31   31  #pragma D depends_on module genunix
  32   32  #pragma D depends_on module smbsrv
  33   33  
  34   34  #pragma D binding "1.5" translator
  35   35  translator conninfo_t < struct smb_request *P > {
  36   36          ci_protocol =
  37   37              P->session->ipaddr.a_family == AF_INET6 ? "tcp6" :
  38   38              P->session->ipaddr.a_family == AF_INET ? "tcp" :
  39   39              "<unknown>";
  40   40          ci_local = "<any>"; /* not interesting */
  41   41          ci_remote = P->session->ip_addr_str;
  42   42  };
  43   43  
  44   44  /*
  45   45   * The smbopinfo_t structure describes the internal form of a
  46   46   * single SMB request (SMB v1).
  47   47   */
  48   48  typedef struct smbopinfo {
  49   49          cred_t   *soi_cred;             /* credentials for operation */
  50   50          string   soi_share;             /* share name */
  
    | 
      ↓ open down ↓ | 
    14 lines elided | 
    
      ↑ open up ↑ | 
  
  51   51          string   soi_curpath;           /* file handle path (if any) */
  52   52          uint64_t soi_sid;               /* session id */
  53   53          uint32_t soi_pid;               /* process id */
  54   54          uint32_t soi_status;            /* status */
  55   55          uint16_t soi_tid;               /* tree id */
  56   56          uint16_t soi_uid;               /* user id */
  57   57          uint16_t soi_mid;               /* request id */
  58   58          uint16_t soi_fid;               /* file id */
  59   59          uint16_t soi_flags2;            /* flags2 */
  60   60          uint8_t  soi_flags;             /* flags */
       61 +        zoneid_t soi_zoneid;            /* zone identifier */
  61   62  } smbopinfo_t;
  62   63  
  63   64  #pragma D binding "1.5" translator
  64   65  translator smbopinfo_t < struct smb_request *P > {
  65   66          soi_cred        = (cred_t *)P->user_cr;
  66   67          soi_sid         = P->session->s_kid;
  67   68          soi_pid         = P->smb_pid;
  68   69          soi_status      = P->smb_error.status;
  69   70          soi_tid         = P->smb_tid;
  70   71          soi_uid         = P->smb_uid;
  71   72          soi_mid         = P->smb_mid;
  72   73          soi_fid         = P->smb_fid;
  73   74          soi_flags2      = P->smb_flg2;
  74   75          soi_flags       = P->smb_flg;
       76 +        soi_zoneid      = P->sr_server->sv_zid;
  75   77  
  76   78          soi_share = (P->tid_tree == NULL) ? "<NULL>" :
  77   79              P->tid_tree->t_sharename;
  78   80  
  79   81          soi_curpath = (P->fid_ofile == NULL ||
  80   82              P->fid_ofile->f_node == NULL ||
  81   83              P->fid_ofile->f_node->vp == NULL ||
  82   84              P->fid_ofile->f_node->vp->v_path == NULL) ? "<NULL>" :
  83   85              P->fid_ofile->f_node->vp->v_path;
  84   86  };
  85   87  
  86   88  typedef struct smb_rw_args {
  87   89          off_t   soa_offset;
  88   90          uint_t  soa_count;
  89   91  } smb_rw_args_t;
  90   92  
  91   93  #pragma D binding "1.5" translator
  92   94  translator smb_rw_args_t < smb_request_t *P > {
  93   95          soa_offset = P->arg.rw->rw_offset;
  94   96          soa_count  = P->arg.rw->rw_count;
  95   97  };
  96   98  
  97   99  typedef struct smb_name_args {
  98  100          string  soa_name;
  99  101  } smb_name_args_t;
 100  102  
 101  103  #pragma D binding "1.5" translator
 102  104  translator smb_name_args_t < smb_request_t *P > {
 103  105          soa_name = (P->arg.dirop.fqi.fq_path.pn_path == NULL) ? "<NULL>" :
 104  106              P->arg.dirop.fqi.fq_path.pn_path;
 105  107  };
 106  108  
 107  109  typedef struct smb_open_args {
 108  110          string          soa_name;
 109  111          uint32_t        soa_desired_access;
 110  112          uint32_t        soa_share_access;
 111  113          uint32_t        soa_create_options;
 112  114          uint32_t        soa_create_disposition;
 113  115  } smb_open_args_t;
 114  116  
 115  117  #pragma D binding "1.5" translator
 116  118  translator smb_open_args_t < smb_request_t *P > {
 117  119          soa_name = (P->arg.open.fqi.fq_path.pn_path == NULL) ? "<NULL>" :
 118  120              P->arg.open.fqi.fq_path.pn_path;
 119  121          soa_desired_access = P->arg.open.desired_access;
 120  122          soa_share_access   = P->arg.open.share_access;
 121  123          soa_create_options = P->arg.open.create_options;
 122  124          soa_create_disposition = P->arg.open.create_disposition;
 123  125  };
 124  126  
 125  127  /*
 126  128   * The smb2opinfo_t structure describes the internal form of a
 127  129   * single SMB2 request (SMB v2 and later).
 128  130   */
 129  131  typedef struct smb2opinfo {
  
    | 
      ↓ open down ↓ | 
    45 lines elided | 
    
      ↑ open up ↑ | 
  
 130  132          cred_t   *soi_cred;             /* credentials for operation */
 131  133          string   soi_share;             /* share name */
 132  134          string   soi_curpath;           /* file handle path (if any) */
 133  135          uint64_t soi_sid;               /* (internal) session ID */
 134  136          uint64_t soi_mid;               /* Message ID */
 135  137          uint64_t soi_asyncid;           /* Message ID (when async) */
 136  138          uint64_t soi_uid;               /* user ID (SMB2 Session ID) */
 137  139          uint32_t soi_tid;               /* tree ID */
 138  140          uint32_t soi_status;
 139  141          uint32_t soi_flags;
      142 +        zoneid_t soi_zoneid;            /* zone identifier */
 140  143  } smb2opinfo_t;
 141  144  
 142  145  #pragma D binding "1.5" translator
 143  146  translator smb2opinfo_t < struct smb_request *P > {
 144  147          soi_cred        = (cred_t *)P->user_cr;
 145  148          soi_sid         = P->session->s_kid;
 146  149          soi_mid         = P->smb2_messageid;
 147  150          soi_asyncid     = P->smb2_async_id;
 148  151          soi_uid         = P->smb2_ssnid;
 149  152          soi_tid         = P->smb_tid;
 150  153          soi_status      = P->smb2_status;
 151  154          soi_flags       = P->smb2_hdr_flags;
      155 +        soi_zoneid      = P->sr_server->sv_zid;
 152  156  
 153  157          soi_share = (P->tid_tree == NULL) ? "<NULL>" :
 154  158              P->tid_tree->t_sharename;
 155  159  
 156  160          soi_curpath = (P->fid_ofile == NULL ||
 157  161              P->fid_ofile->f_node == NULL ||
 158  162              P->fid_ofile->f_node->vp == NULL ||
 159  163              P->fid_ofile->f_node->vp->v_path == NULL) ? "<NULL>" :
 160  164              P->fid_ofile->f_node->vp->v_path;
 161  165  };
    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX