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