1*8329232eSGordon Ross 2*8329232eSGordon Ross# 3*8329232eSGordon Ross# This file and its contents are supplied under the terms of the 4*8329232eSGordon Ross# Common Development and Distribution License ("CDDL"), version 1.0. 5*8329232eSGordon Ross# You may only use this file in accordance with the terms of version 6*8329232eSGordon Ross# 1.0 of the CDDL. 7*8329232eSGordon Ross# 8*8329232eSGordon Ross# A full copy of the text of the CDDL should have accompanied this 9*8329232eSGordon Ross# source. A copy of the CDDL is also available via the Internet at 10*8329232eSGordon Ross# http://www.illumos.org/license/CDDL. 11*8329232eSGordon Ross# 12*8329232eSGordon Ross 13*8329232eSGordon Ross# 14*8329232eSGordon Ross# Copyright 2017 Nexenta Systems, Inc. All rights reserved. 15*8329232eSGordon Ross# 16*8329232eSGordon Ross 17*8329232eSGordon RossThis directory builds a program linking all of the SMB client code 18*8329232eSGordon Rossinto a user-level process. The result is not a fully functional 19*8329232eSGordon RossSMB client but is very useful for some kinds of development work. 20*8329232eSGordon Ross 21*8329232eSGordon RossThe architecture of this roughly parallels the in-kernel version, 22*8329232eSGordon Rosswhere the kernel modules are built as libraries including: 23*8329232eSGordon Ross libfksmbfs, libfknsmb 24*8329232eSGordon Ross 25*8329232eSGordon RossJust as with the kernel code, there are mdb modules that know 26*8329232eSGordon Rosshow to walk data structures in libfksmbfs, etc. 27*8329232eSGordon Ross 28*8329232eSGordon RossFor debugging, etc. it's easiest to run this as a normal user, 29*8329232eSGordon Rossi.e. yourself (not root) 30*8329232eSGordon Ross 31*8329232eSGordon RossNow you can run fksmbcl from the proto area using this script: 32*8329232eSGordon Ross ./Run.sh -df 33*8329232eSGordon Ross 34*8329232eSGordon RossYou can also run it under dbx (see the .dbxrc file). 35*8329232eSGordon RossTo run it under mdb (with mdb modules build here): 36*8329232eSGordon Ross mdb -L $ROOT/usr/lib/mdb/proc:/usr/lib/mdb/proc ... 37*8329232eSGordon Rosswhere ... is one of: fksmbcl, core.nnn, -p $PID 38*8329232eSGordon Ross 39*8329232eSGordon RossThere are also some dtrace scripts in here, and in ../dtrace 40*8329232eSGordon Rossfor watching either all activity or only selected areas. 41*8329232eSGordon RossRun these like: dtrace -s Watch-all.d -p $PID -o output 42*8329232eSGordon Ross 43*8329232eSGordon RossThese two (from over in ../dtrace) also work with fksmbcl: 44*8329232eSGordon Ross dtrace -s fksmbcl.d -p `pgrep fksmbcl` -o output 45*8329232eSGordon Ross 46*8329232eSGordon RossHere is the help output: 47*8329232eSGordon Ross 48*8329232eSGordon Ross > help 49*8329232eSGordon Ross Commands: 50*8329232eSGordon Ross help 51*8329232eSGordon Ross exit 52*8329232eSGordon Ross logon [user [dom [pass]]] 53*8329232eSGordon Ross logoff [close-driver] 54*8329232eSGordon Ross shares 55*8329232eSGordon Ross mount {share} [optstr] 56*8329232eSGordon Ross umount 57*8329232eSGordon Ross unmount 58*8329232eSGordon Ross statfs 59*8329232eSGordon Ross dir {rdir} [lfile] 60*8329232eSGordon Ross dirx {rdir} [lfile] 61*8329232eSGordon Ross get {rfile} [lfile] 62*8329232eSGordon Ross put {lfile} [rfile] 63*8329232eSGordon Ross mv {from} {to} 64*8329232eSGordon Ross rm {rfile} 65*8329232eSGordon Ross mkdir {rfile} 66*8329232eSGordon Ross rmdir {rfile} 67*8329232eSGordon Ross opt {option} 68*8329232eSGordon Ross 69*8329232eSGordon Ross 70*8329232eSGordon RossHere is an example of how to connect, mount, and list a directory: 71*8329232eSGordon Ross 72*8329232eSGordon Ross $ ./Run.sh //myserver 73*8329232eSGordon Ross # Start with: 74*8329232eSGordon Ross > logon [user [dom [pw]]] 75*8329232eSGordon Ross > shares 76*8329232eSGordon Ross > mount {share} 77*8329232eSGordon Ross 78*8329232eSGordon Ross > logon test test test 79*8329232eSGordon Ross > shares 80*8329232eSGordon Ross open pipe: /srvsvc 81*8329232eSGordon Ross enum strings 82*8329232eSGordon Ross junk 83*8329232eSGordon Ross c$ 84*8329232eSGordon Ross Default Share 85*8329232eSGordon Ross test1 86*8329232eSGordon Ross ipc$ 87*8329232eSGordon Ross Remote IPC 88*8329232eSGordon Ross test 89*8329232eSGordon Ross > mount test 90*8329232eSGordon Ross > dir 91*8329232eSGordon Ross 1224750917 . 92*8329232eSGordon Ross 1224750917 .. 93*8329232eSGordon Ross 900818955 test9.dat 94*8329232eSGordon Ross 3908265151 lock1.txt 95*8329232eSGordon Ross 2452346625 test_dir 96*8329232eSGordon Ross > umount 97*8329232eSGordon Ross > logoff 98*8329232eSGordon Ross > exit 99*8329232eSGordon Ross $ 100