Print this page
NEX-13644 File access audit logging
Reviewed by: Gordon Ross <gordon.ross@nexenta.com>
Reviewed by: Roman Strashkin <roman.strashkin@nexenta.com>
Reviewed by: Saso Kiselkov <saso.kiselkov@nexenta.com>
Reviewed by: Rick McNeal <rick.mcneal@nexenta.com>
Reviewed by: Yuri Pankov <yuri.pankov@nexenta.com>
NEX-18380 Catch up with illumos SMB fix 9769
Reviewed by: Matt Barden <matt.barden@nexenta.com>
Reviewed by: Rick McNeal <rick.mcneal@nexenta.com>
Reviewed by: Evan Layton <evan.layton@nexenta.com>
Reviewed by: Yuri Pankov <yuri.pankov@nexenta.com>
9769 SMB domain logon fails with I18N user name
9774 libmlrpc changes in 1575 missed some things
Reviewed by: Toomas Soome <tsoome@me.com>
Reviewed by: Andy Fiddaman <omnios@citrus-it.co.uk>
Approved by: Robert Mustacchi <rm@joyent.com>
NEX-17589 Get "too high" smbd error when copy big file to cifs share (redo)
Reviewed by: Matt Barden <matt.barden@nexenta.com>
Reviewed by: Evan Layton <evan.layton@nexenta.com>
NEX-17558 add mdb walker for smbd share cache
Reviewed by: Matt Barden <matt.barden@nexenta.com>
Reviewed by: Joyce McIntosh <joyce.mcintosh@nexenta.com>
1575 untangle libmlrpc from SMB server
Reviewed by: Matt Barden <matt.barden@nexenta.com>
Reviewed by: Evan Layton <evan.layton@nexenta.com>
Reviewed by: Toomas Soome <tsoome@me.com>
Approved by: Richard Lowe <richlowe@richlowe.net>
NEX-9808 SMB3 persistent handles
Reviewed by: Matt Barden <matt.barden@nexenta.com>
Reviewed by: Evan Layton <evan.layton@nexenta.com>
NEX-15554 make-smbsrv needs updates
Reviewed by: Matt Barden <matt.barden@nexenta.com>
Reviewed by: Evan Layton <evan.layton@nexenta.com>
NEX-9808 SMB3 persistent handles
Reviewed by: Matt Barden <matt.barden@nexenta.com>
Reviewed by: Evan Layton <evan.layton@nexenta.com>
NEX-15554 make-smbsrv needs updates
Reviewed by: Matt Barden <matt.barden@nexenta.com>
Reviewed by: Evan Layton <evan.layton@nexenta.com>
NEX-4083 Upstream changes from illumos 5917 and 5995
Reviewed by: Matt Barden <matt.barden@nexenta.com>
Reviewed by: Kevin Crowe <kevin.crowe@nexenta.com>
Reviewed by: Yuri Pankov <yuri.pankov@nexenta.com>
NEX-2702 want make-smbsrv clean to be more selective
OS-266 sync v8 mdb module to illumos-joyent f1ab5c2
NEX-1633 smb_open_attr_only() does not return true if READ_CONTROL is set
NEX-1810 extended security Kerberos (inbound)
NEX-1638 Updated DC Locator
 Includes work by: matt.barden@nexenta.com, kevin.crowe@nexenta.com
NEX-1456 Cannot receive incremental stream for dataset shared via SMB: destination dataset has been modified. part 1
SMB-153 Quota tab for the Share does not work
SMB-123 misleading log messages from smb_logon
SMB-113 Some dtrace scripts for SMB
SMB-95 improve smbsrv developer tools
SMB-11 SMB2 message parse & dispatch
SMB-12 SMB2 Negotiate Protocol
SMB-13 SMB2 Session Setup
SMB-14 SMB2 Logoff
SMB-15 SMB2 Tree Connect
SMB-16 SMB2 Tree Disconnect
SMB-17 SMB2 Create
SMB-18 SMB2 Close
SMB-19 SMB2 Flush
SMB-20 SMB2 Read
SMB-21 SMB2 Write
SMB-22 SMB2 Lock/Unlock
SMB-23 SMB2 Ioctl
SMB-24 SMB2 Cancel
SMB-25 SMB2 Echo
SMB-26 SMB2 Query Dir
SMB-27 SMB2 Change Notify
SMB-28 SMB2 Query Info
SMB-29 SMB2 Set Info
SMB-30 SMB2 Oplocks
SMB-53 SMB2 Create Context options
(SMB2 code review cleanup 1, 2, 3)
SMB-72 Improve startup/shudown debug features
SMB-50 User-mode SMB server
 Includes work by these authors:
 Thomas Keiser <thomas.keiser@nexenta.com>
 Albert Lee <trisk@nexenta.com>
OS-3 Convenience scripts to build/clean smbsrv, zfs
   1 #!/bin/ksh
   2 #
   3 # This file and its contents are supplied under the terms of the
   4 # Common Development and Distribution License ("CDDL"), version 1.0.
   5 # You may only use this file in accordance with the terms of version
   6 # 1.0 of the CDDL.
   7 #
   8 # A full copy of the text of the CDDL should have accompanied this
   9 # source.  A copy of the CDDL is also available via the Internet at
  10 # http://www.illumos.org/license/CDDL.
  11 #
  12 
  13 #
  14 # Copyright 2014 Nexenta Systems, Inc.  All rights reserved.
  15 #
  16 
  17 # Use distributed make (dmake) by default.
  18 make=${MAKE:-dmake}
  19 
  20 CLOSED_IS_PRESENT=no
  21 export CLOSED_IS_PRESENT
  22 
  23 # Do this if you want to use dbx or gdb
  24 # export SOURCEDEBUG=yes
  25 
  26 [ -n "$SRC" ] || {
  27   echo "SRC not set.  Run 'ws' or 'bldenv' first."
  28   exit 1
  29 }
  30 
  31 cpu=`uname -p`
  32 case $cpu in
  33 i386)
  34         x=intel

  35         mdb_arch="ia32 amd64"
  36         arch64=amd64
  37         ;;
  38 sparc)
  39         x=sparc
  40         mdb_arch=v9

  41         arch64=sparcv9
  42         ;;
  43 *)  echo "Huh?" ; exit 1;;
  44 esac
  45 
  46 ################################################################
  47 
  48 build_tools() {
  49   test -f $SRC/tools/proto/root_i386-nd/opt/onbld/bin/genoffsets ||
  50     (cd $SRC/tools && $make install)
  51   (cd $SRC/common/mapfiles; $make install)
  52 }
  53 
  54 clobber_tools() {
  55   (cd $SRC/tools && $make clobber)
  56   (cd $SRC/common/mapfiles; $make clobber)
  57 }
  58 
  59 ################################################################
  60 
  61 do_hdrs() {
  62 
  63 targ=$1
  64 if [ "$targ" = clobber ]
  65 then
  66   (cd $SRC/uts && $make -k clobber_h)
  67   (cd $SRC/head && $make clobber)
  68 fi
  69 
  70 if [ "$targ" = install ]
  71 then
  72   targ=install_h
  73 
  74   # Just the parts of "make sgs" we need, and
  75   # skip them if they appear to be done.
  76   # ... stuff under $SRC
  77   test -f $SRC/uts/common/sys/priv_names.h ||
  78     (cd $SRC/uts && $make -k all_h)
  79 
  80   test -f $SRC/head/rpcsvc/nispasswd.h ||
  81     (cd $SRC/head && $make -k install_h)
  82 
  83   # ... stuff under $ROOT (proto area)
  84   test -d $ROOT/usr/include/sys ||
  85     (cd $SRC && $make rootdirs)
  86   test -f $ROOT/usr/include/sys/types.h ||
  87     (cd $SRC/uts && $make -k install_h)
  88   test -f $ROOT/usr/include/rpcsvc/daemon_utils.h ||
  89     (cd $SRC/head && $make install_h)
  90 
  91   # always update the smbsrv headers to be safe
  92   (cd $SRC/uts/common/gssapi && $make -k install_h)
  93   (cd $SRC/uts/common/sys && $make -k install_h)
  94   (cd $SRC/uts/common/smb && $make -k install_h)
  95   (cd $SRC/uts/common/smbsrv && $make -k install_h)


  96 





  97 fi
  98 
  99 # Need some library headers too...
 100 for lib in \
 101   libads \
 102   libbsm \
 103   libcmdutils \
 104   libcryptoutil \
 105   libdevid \
 106   libfakekernel \
 107   libgss \
 108   libkrb5 \
 109   libidmap \


 110   libpam \
 111   libsec \
 112   libscf \
 113   libshare \
 114   libsmbfs \
 115   libsqlite \
 116   libuutil \


 117   passwdutil \

 118   smbsrv
 119 do
 120   (cd $SRC/lib/$lib && $make $targ)
 121 done
 122 }
 123 
 124 ################################################################
 125 
 126 do_kern() {
 127   case $1 in
 128   lint) targ=modlintlib ;;
 129   *) targ=$1 ;;
 130   esac
 131   ( unset SOURCEDEBUG ;
 132   (cd $SRC/uts/$x/nsmb && $make $targ) ;
 133   (cd $SRC/uts/$x/smbfs && $make $targ) ;
 134   (cd $SRC/uts/$x/smbsrv && $make $targ) )
 135 }
 136 
 137 ################################################################


 145 for lib in \
 146   libavl \
 147   libgss \
 148   libkrb5 \
 149   libcmdutils \
 150   libsqlite \
 151   libuutil
 152 do
 153   (cd $SRC/lib/$lib && $make $1)
 154 done
 155 }
 156 
 157 # lib2 builds stuff we include in the tar file,
 158 # or that we don't mind rebuilding after clean.
 159 
 160 do_lib2() {
 161 
 162 for lib in \
 163   libfakekernel \
 164   libads \
 165   libsmbfs

 166 do
 167   (cd $SRC/lib/$lib && $make $1)
 168 done
 169 
 170 (cd $SRC/lib/libshare && $make $1 PLUGINS=smb)
 171 (cd $SRC/lib/smbsrv && $make $1)
 172 (cd $SRC/lib/passwdutil && $make $1)
 173 (cd $SRC/lib/pam_modules/smb && $make $1)
 174 
 175 }
 176 
 177 ################################################################
 178 
 179 do_cmds() {
 180 
 181 case $1 in
 182 install)
 183   # mount programs need fslib.o
 184   (cd $SRC/cmd/fs.d && $make fslib.o)
 185   (cd $SRC/cmd/fs.d/smbclnt && $make $1 catalog)
 186   ;;
 187 clean|clobber)
 188   (cd $SRC/cmd/fs.d/smbclnt && $make $1)
 189   (cd $SRC/cmd/fs.d && $make ${1}_local)
 190   ;;
 191 esac
 192 
 193 (cd $SRC/cmd/devfsadm && $make $1)
 194 (cd $SRC/cmd/smbsrv && $make $1)
 195 
 196 # Build the MDB modules, WITH the linktest
 197 (cd $SRC/cmd/mdb/tools && $make $1)
 198 for a in $mdb_arch


 199 do
 200   case $1 in
 201   install|lint)
 202     (cd $SRC/cmd/mdb/$x/$a/kmdb &&
 203         $make kmdb_modlinktest.o )
 204     ;;
 205   clean|clobber)
 206     (cd $SRC/cmd/mdb/$x/$a/kmdb &&
 207         $make -k $1 )
 208     ;;
 209   esac
 210 
 211   (cd $SRC/cmd/mdb/$x/$a/nsmb &&
 212         $make $1 KMDB_LINKTEST_ENABLE= )
 213   (cd $SRC/cmd/mdb/$x/$a/smbfs &&
 214         $make $1 KMDB_LINKTEST_ENABLE= )
 215   (cd $SRC/cmd/mdb/$x/$a/smbsrv &&
 216         $make $1 KMDB_LINKTEST_ENABLE= )
 217   (cd $SRC/cmd/mdb/$x/$a/libfksmbsrv &&
 218         $make $1 KMDB_LINKTEST_ENABLE= )
 219 
 220 # We build these libraries (to the proto area), so we need to
 221 # build the mdb modules too so mdb will load them.
 222   (cd $SRC/cmd/mdb/$x/$a/libcmdutils &&
 223         $make $1 )
 224   (cd $SRC/cmd/mdb/$x/$a/libavl &&
 225         $make $1 )
 226 
 227 done
 228 
 229 (cd $SRC/cmd/Adm/sun && $make $1)




 230 
 231 # Deal with mode 0400 file annoyance...
 232 # See usr/src/cmd/Adm/sun/Makefile
 233 if [ $1 = install ]; then
 234   chmod a+r $ROOT/var/smb/smbpasswd
 235 fi

 236 }
 237 
 238 
 239 ################################################################
 240 # This builds $SRC/TAGS (and cscope.files) in a helpful order.
 241 
 242 do_tags() {
 243         (cd $SRC ;
 244         find uts/common/sys -name '*.[ch]' -print |sort
 245         find uts/common/net -name '*.[ch]' -print |sort
 246         find uts/common/netinet -name '*.[ch]' -print |sort
 247         find uts/common/smb -name '*.[ch]' -print |sort
 248         find uts/common/smbsrv -name '*.ndl' -print |sort
 249         find uts/common/smbsrv -name '*.[ch]' -print |sort
 250         find uts/common/fs/smbsrv -name '*.[ch]' -print |sort
 251         find uts/common/gssapi -name '*.[ch]' -print |sort

 252         find head -name '*.h' -print |sort
 253         find lib/smbsrv -name '*.[ch]' -print |sort
 254         find lib/libsmbfs -name '*.[ch]' -print |sort


 255         find lib/libads -name '*.[ch]' -print |sort
 256         find lib/libgss -name '*.[ch]' -print |sort
 257         find cmd/smbsrv -name '*.[ch]' -print |sort
 258         find common/smbsrv -name '*.[ch]' -print |sort
 259         ) > $SRC/cscope.files
 260 
 261         (cd $SRC ;
 262         exctags -e --langmap=c:+.ndl -h ndl -L - < cscope.files
 263         cscope -b )
 264 }
 265 
 266 ################################################################
 267 # This creates a tarfile one can use to update a test machine.
 268 
 269 do_tar() {
 270         git_rev=`git rev-parse --short=8 HEAD`
 271         files="
 272 lib/svc/manifest/network/smb/server.xml
 273 usr/kernel/drv/$arch64/smbsrv
 274 usr/kernel/drv/smbsrv
 275 usr/kernel/kmdb/$arch64/smbsrv
 276 usr/kernel/kmdb/smbsrv
 277 usr/lib/fs/smb/$arch64/libshare_smb.so.1
 278 usr/lib/fs/smb/libshare_smb.so.1
 279 usr/lib/libsmbfs.so.1
 280 usr/lib/mdb/kvm/$arch64/smbsrv.so
 281 usr/lib/mdb/kvm/smbsrv.so

 282 usr/lib/reparse/libreparse_smb.so.1
 283 usr/lib/security/pam_smb_passwd.so.1
 284 usr/lib/smbsrv/dtrace
 285 usr/lib/smbsrv/libmlrpc.so.1
 286 usr/lib/smbsrv/libmlsvc.so.1
 287 usr/lib/smbsrv/libsmb.so.1
 288 usr/lib/smbsrv/libsmbns.so.1

 289 usr/lib/smbsrv/smbd
 290 usr/sbin/devfsadm
 291 usr/sbin/smbadm
 292 usr/sbin/smbstat
 293 "
 294 
 295         (cd $ROOT && tar cfj ../../smbsrv-${git_rev}.tar.bz2 $files)
 296 }
 297 
 298 ################################################################
 299 
 300 if [ "$1" = "" ]; then
 301   set '?' # force usage
 302 fi
 303 
 304 set -x
 305 
 306 for arg
 307 do
 308   case "$arg" in
 309   install)
 310     build_tools
 311     set -e
 312     do_hdrs $arg
 313     do_kern $arg
 314     do_lib1 $arg
 315     do_lib2 $arg
 316     do_cmds $arg
 317     ;;
 318   lint)

 319     do_kern $arg
 320     do_lib1 $arg
 321     do_lib2 $arg
 322     do_cmds $arg
 323     ;;
 324   clean)
 325     # intentionally skip: lib1, hdrs, tools
 326     do_cmds $arg
 327     do_lib2 $arg
 328     do_kern $arg
 329     ;;
 330   clobber)
 331     do_cmds $arg
 332     do_lib2 $arg
 333     do_lib1 $arg
 334     do_kern $arg
 335     do_hdrs $arg
 336     clobber_tools
 337     ;;
 338   tags)
   1 #!/bin/ksh
   2 #
   3 # This file and its contents are supplied under the terms of the
   4 # Common Development and Distribution License ("CDDL"), version 1.0.
   5 # You may only use this file in accordance with the terms of version
   6 # 1.0 of the CDDL.
   7 #
   8 # A full copy of the text of the CDDL should have accompanied this
   9 # source.  A copy of the CDDL is also available via the Internet at
  10 # http://www.illumos.org/license/CDDL.
  11 #
  12 
  13 #
  14 # Copyright 2018 Nexenta Systems, Inc.  All rights reserved.
  15 #
  16 
  17 # Use normal make (not dmake) by default.
  18 make=${MAKE:-make}
  19 
  20 CLOSED_IS_PRESENT=no
  21 export CLOSED_IS_PRESENT
  22 
  23 # Do this if you want to use dbx or gdb
  24 # export SOURCEDEBUG=yes
  25 
  26 [ -n "$SRC" ] || {
  27   echo "SRC not set.  Run 'ws' or 'bldenv' first."
  28   exit 1
  29 }
  30 
  31 cpu=`uname -p`
  32 case $cpu in
  33 i386)
  34         x=intel
  35         kmdb_arch="amd64"
  36         mdb_arch="ia32 amd64"
  37         arch64=amd64
  38         ;;
  39 sparc)
  40         x=sparc
  41         kmdb_arch=v9
  42         mdb_arch="v7 v9"
  43         arch64=sparcv9
  44         ;;
  45 *)  echo "Huh?" ; exit 1;;
  46 esac
  47 
  48 ################################################################
  49 
  50 build_tools() {
  51   test -f $SRC/tools/proto/root_i386-nd/opt/onbld/bin/genoffsets ||
  52     (cd $SRC/tools && $make install)
  53   (cd $SRC/common/mapfiles; $make install)
  54 }
  55 
  56 clobber_tools() {
  57   (cd $SRC/tools && $make clobber)
  58   (cd $SRC/common/mapfiles; $make clobber)
  59 }
  60 
  61 ################################################################
  62 
  63 do_hdrs() {
  64 
  65 targ=$1
  66 if [ "$targ" = clobber ]
  67 then
  68   (cd $SRC/uts && $make -k clobber_h)
  69   (cd $SRC/head && $make clobber)
  70 fi
  71 
  72 if [ "$targ" = install ]
  73 then
  74   targ=install_h
  75 
  76   # Just the parts of "make sgs" we need, and
  77   # skip them if they appear to be done.
  78   # ... stuff under $SRC
  79   test -f $SRC/uts/common/sys/priv_names.h ||
  80     (cd $SRC/uts && $make -k all_h)
  81 
  82   test -f $SRC/head/rpcsvc/nispasswd.h ||
  83     (cd $SRC/head && $make -k $targ)
  84 
  85   # ... stuff under $ROOT (proto area)
  86   test -d $ROOT/usr/include/sys ||
  87     (cd $SRC && $make rootdirs)
  88   test -f $ROOT/usr/include/sys/types.h ||
  89     (cd $SRC/uts && $make -k $targ)
  90   test -f $ROOT/usr/include/rpcsvc/daemon_utils.h ||
  91     (cd $SRC/head && $make $targ)
  92 
  93   # always update the smbsrv headers to be safe
  94   (cd $SRC/uts/common/gssapi && $make -k $targ)
  95   (cd $SRC/uts/common/sys && $make -k $targ)
  96   (cd $SRC/uts/common/smb && $make -k $targ)
  97   (cd $SRC/uts/common/smbsrv && $make -k $targ)
  98   (cd $SRC/uts/common/c2 && $make -k $targ)
  99 fi
 100 
 101 if [ "$targ" = lint ]
 102 then
 103   targ=check
 104   (cd $SRC/uts/common/smb && $make -k $targ)
 105   (cd $SRC/uts/common/smbsrv && $make -k $targ)
 106 fi
 107 
 108 # Need some library headers too...
 109 for lib in \
 110   libads \
 111   libbsm \
 112   libcmdutils \
 113   libcryptoutil \
 114   libdevid \
 115   libfakekernel \
 116   libgss \

 117   libidmap \
 118   libkrb5 \
 119   libmlrpc \
 120   libpam \
 121   libsec \
 122   libscf \
 123   libshare \
 124   libsmbfs \
 125   libsqlite \
 126   libuutil \
 127   libzfs_core \
 128   libzfs \
 129   passwdutil \
 130   pkcs11 \
 131   smbsrv
 132 do
 133   (cd $SRC/lib/$lib && $make $targ)
 134 done
 135 }
 136 
 137 ################################################################
 138 
 139 do_kern() {
 140   case $1 in
 141   lint) targ=modlintlib ;;
 142   *) targ=$1 ;;
 143   esac
 144   ( unset SOURCEDEBUG ;
 145   (cd $SRC/uts/$x/nsmb && $make $targ) ;
 146   (cd $SRC/uts/$x/smbfs && $make $targ) ;
 147   (cd $SRC/uts/$x/smbsrv && $make $targ) )
 148 }
 149 
 150 ################################################################


 158 for lib in \
 159   libavl \
 160   libgss \
 161   libkrb5 \
 162   libcmdutils \
 163   libsqlite \
 164   libuutil
 165 do
 166   (cd $SRC/lib/$lib && $make $1)
 167 done
 168 }
 169 
 170 # lib2 builds stuff we include in the tar file,
 171 # or that we don't mind rebuilding after clean.
 172 
 173 do_lib2() {
 174 
 175 for lib in \
 176   libfakekernel \
 177   libads \
 178   libsmbfs \
 179   libmlrpc
 180 do
 181   (cd $SRC/lib/$lib && $make $1)
 182 done
 183 
 184 (cd $SRC/lib/libshare && $make $1 PLUGINS=smb)
 185 (cd $SRC/lib/smbsrv && $make $1)
 186 (cd $SRC/lib/passwdutil && $make $1)
 187 (cd $SRC/lib/pam_modules/smb && $make $1)
 188 
 189 }
 190 
 191 ################################################################
 192 
 193 do_cmds() {
 194 
 195 case $1 in
 196 install)
 197   # mount programs need fslib.o
 198   (cd $SRC/cmd/fs.d && $make fslib.o)

 199   ;;
 200 clean|clobber)

 201   (cd $SRC/cmd/fs.d && $make ${1}_local)
 202   ;;
 203 esac
 204 

 205 (cd $SRC/cmd/smbsrv && $make $1)
 206 
 207 # Build the MDB modules, WITH the linktest
 208 (cd $SRC/cmd/mdb/tools && $make $1)
 209 
 210 # kmdb_arch is 64-bit only
 211 for a in $kmdb_arch
 212 do
 213   case $1 in
 214   install|lint)
 215     (cd $SRC/cmd/mdb/$x/$a/kmdb &&
 216         $make kmdb_modlinktest.o )
 217     ;;
 218   clean|clobber)
 219     (cd $SRC/cmd/mdb/$x/$a/kmdb &&
 220         $make -k $1 )
 221     ;;
 222   esac

 223   (cd $SRC/cmd/mdb/$x/$a/nsmb &&
 224         $make $1 KMDB_LINKTEST_ENABLE= )
 225   (cd $SRC/cmd/mdb/$x/$a/smbfs &&
 226         $make $1 KMDB_LINKTEST_ENABLE= )
 227   (cd $SRC/cmd/mdb/$x/$a/smbsrv &&
 228         $make $1 KMDB_LINKTEST_ENABLE= )










 229 done
 230 
 231 # mdb_arch is both 32-bit & 64-bit
 232 for a in $mdb_arch
 233 do
 234   # We build these libraries (to the proto area), so we need to
 235   # build the mdb modules for all dependent libraries too.
 236 
 237   for lib in libfksmbsrv libmlsvc libcmdutils libavl
 238   do
 239     (cd $SRC/cmd/mdb/$x/$a/$lib && $make $1 )
 240 
 241   done
 242 done
 243 }
 244 
 245 
 246 ################################################################
 247 # This builds $SRC/TAGS (and cscope.files) in a helpful order.
 248 
 249 do_tags() {
 250         (cd $SRC ;
 251         find uts/common/sys -name '*.[ch]' -print |sort
 252         find uts/common/net -name '*.[ch]' -print |sort
 253         find uts/common/netinet -name '*.[ch]' -print |sort
 254         find uts/common/smb -name '*.[ch]' -print |sort
 255         find uts/common/smbsrv -name '*.ndl' -print |sort
 256         find uts/common/smbsrv -name '*.[ch]' -print |sort
 257         find uts/common/fs/smbsrv -name '*.[ch]' -print |sort
 258         find uts/common/gssapi -name '*.[ch]' -print |sort
 259         find common/smbsrv -name '*.[ch]' -print |sort
 260         find head -name '*.h' -print |sort
 261         find lib/smbsrv -name '*.[ch]' -print |sort
 262         find lib/libsmbfs -name '*.[ch]' -print |sort
 263         find lib/libmlrpc -name '*.ndl' -print |sort
 264         find lib/libmlrpc -name '*.[ch]' -print |sort
 265         find lib/libads -name '*.[ch]' -print |sort
 266         find lib/libgss -name '*.[ch]' -print |sort
 267         find cmd/smbsrv -name '*.[ch]' -print |sort

 268         ) > $SRC/cscope.files
 269 
 270         (cd $SRC ;
 271         exctags -e --langmap=c:+.ndl -h ndl -L - < cscope.files
 272         cscope -b )
 273 }
 274 
 275 ################################################################
 276 # This creates a tarfile one can use to update a test machine.
 277 
 278 do_tar() {
 279         git_rev=`git rev-parse --short=8 HEAD`
 280         files="
 281 lib/svc/manifest/network/smb/server.xml
 282 usr/kernel/drv/$arch64/smbsrv

 283 usr/kernel/kmdb/$arch64/smbsrv

 284 usr/lib/fs/smb/$arch64/libshare_smb.so.1
 285 usr/lib/fs/smb/libshare_smb.so.1
 286 usr/lib/libsmbfs.so.1
 287 usr/lib/mdb/kvm/$arch64/smbsrv.so
 288 usr/lib/mdb/kvm/smbsrv.so
 289 usr/lib/mdb/proc/libmlsvc.so
 290 usr/lib/reparse/libreparse_smb.so.1
 291 usr/lib/security/pam_smb_passwd.so.1
 292 usr/lib/smbsrv/dtrace
 293 usr/lib/libmlrpc.so.2
 294 usr/lib/smbsrv/libmlsvc.so.1
 295 usr/lib/smbsrv/libsmb.so.1
 296 usr/lib/smbsrv/libsmbns.so.1
 297 usr/lib/smbsrv/nvlprint
 298 usr/lib/smbsrv/smbd

 299 usr/sbin/smbadm
 300 usr/sbin/smbstat
 301 "
 302 
 303         (cd $ROOT && tar cfj ../../smbsrv-${git_rev}.tar.bz2 $files)
 304 }
 305 
 306 ################################################################
 307 
 308 if [ "$1" = "" ]; then
 309   set '?' # force usage
 310 fi
 311 
 312 set -x
 313 
 314 for arg
 315 do
 316   case "$arg" in
 317   install)
 318     build_tools
 319     set -e
 320     do_hdrs $arg
 321     do_kern $arg
 322     do_lib1 $arg
 323     do_lib2 $arg
 324     do_cmds $arg
 325     ;;
 326   lint)
 327     do_hdrs $arg
 328     do_kern $arg
 329     do_lib1 $arg
 330     do_lib2 $arg
 331     do_cmds $arg
 332     ;;
 333   clean)
 334     # intentionally skip: lib1, hdrs, tools
 335     do_cmds $arg
 336     do_lib2 $arg
 337     do_kern $arg
 338     ;;
 339   clobber)
 340     do_cmds $arg
 341     do_lib2 $arg
 342     do_lib1 $arg
 343     do_kern $arg
 344     do_hdrs $arg
 345     clobber_tools
 346     ;;
 347   tags)