README
1
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 2017 Nexenta Systems, Inc. All rights reserved.
15#
16
17This directory builds a program linking all of the SMB client code
18into a user-level process. The result is not a fully functional
19SMB client but is very useful for some kinds of development work.
20
21The architecture of this roughly parallels the in-kernel version,
22where the kernel modules are built as libraries including:
23 libfksmbfs, libfknsmb
24
25Just as with the kernel code, there are mdb modules that know
26how to walk data structures in libfksmbfs, etc.
27
28For debugging, etc. it's easiest to run this as a normal user,
29i.e. yourself (not root)
30
31Now you can run fksmbcl from the proto area using this script:
32 ./Run.sh -df
33
34You can also run it under dbx (see the .dbxrc file).
35To run it under mdb (with mdb modules build here):
36 mdb -L $ROOT/usr/lib/mdb/proc:/usr/lib/mdb/proc ...
37where ... is one of: fksmbcl, core.nnn, -p $PID
38
39There are also some dtrace scripts in here, and in ../dtrace
40for watching either all activity or only selected areas.
41Run these like: dtrace -s Watch-all.d -p $PID -o output
42
43These two (from over in ../dtrace) also work with fksmbcl:
44 dtrace -s fksmbcl.d -p `pgrep fksmbcl` -o output
45
46Here is the help output:
47
48 > help
49 Commands:
50 help
51 exit
52 logon [user [dom [pass]]]
53 logoff [close-driver]
54 shares
55 mount {share} [optstr]
56 umount
57 unmount
58 statfs
59 dir {rdir} [lfile]
60 dirx {rdir} [lfile]
61 get {rfile} [lfile]
62 put {lfile} [rfile]
63 mv {from} {to}
64 rm {rfile}
65 mkdir {rfile}
66 rmdir {rfile}
67 opt {option}
68
69
70Here is an example of how to connect, mount, and list a directory:
71
72 $ ./Run.sh //myserver
73 # Start with:
74 > logon [user [dom [pw]]]
75 > shares
76 > mount {share}
77
78 > logon test test test
79 > shares
80 open pipe: /srvsvc
81 enum strings
82 junk
83 c$
84 Default Share
85 test1
86 ipc$
87 Remote IPC
88 test
89 > mount test
90 > dir
91 1224750917 .
92 1224750917 ..
93 900818955 test9.dat
94 3908265151 lock1.txt
95 2452346625 test_dir
96 > umount
97 > logoff
98 > exit
99 $
100