summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--contrib/smbfs/mount_smbfs/Makefile18
-rw-r--r--etc/defaults/rc.conf2
-rw-r--r--etc/mtree/BSD.include.dist2
-rw-r--r--etc/mtree/BSD.usr.dist4
-rw-r--r--include/Makefile5
-rw-r--r--lib/Makefile8
-rw-r--r--lib/libprocstat/Makefile1
-rw-r--r--lib/libprocstat/common_kvm.h1
-rw-r--r--lib/libprocstat/libprocstat.c1
-rw-r--r--rescue/rescue/Makefile2
-rw-r--r--sbin/mount/mount.82
-rw-r--r--sbin/mount/mount.c2
-rw-r--r--share/examples/Makefile1
-rw-r--r--share/examples/etc/README.examples1
-rw-r--r--share/mk/bsd.libnames.mk1
-rw-r--r--sys/conf/NOTES7
-rw-r--r--sys/conf/files20
-rw-r--r--sys/conf/files.amd642
-rw-r--r--sys/conf/files.arm2
-rw-r--r--sys/conf/files.i3862
-rw-r--r--sys/conf/files.ia642
-rw-r--r--sys/conf/files.mips2
-rw-r--r--sys/conf/files.pc982
-rw-r--r--sys/conf/files.powerpc2
-rw-r--r--sys/conf/files.sparc642
-rw-r--r--sys/conf/options4
-rw-r--r--sys/kern/Make.tags.inc1
-rw-r--r--sys/kern/sys_generic.c55
-rw-r--r--sys/modules/Makefile6
-rw-r--r--sys/sys/socketvar.h2
-rw-r--r--usr.bin/Makefile.amd641
-rw-r--r--usr.bin/Makefile.i3861
-rw-r--r--usr.bin/Makefile.ia641
-rw-r--r--usr.bin/Makefile.powerpc1
-rw-r--r--usr.bin/Makefile.sparc641
-rw-r--r--usr.bin/kdump/kdump.c2
-rw-r--r--usr.sbin/Makefile.amd641
-rw-r--r--usr.sbin/Makefile.i3861
-rw-r--r--usr.sbin/Makefile.ia641
-rw-r--r--usr.sbin/Makefile.powerpc1
-rw-r--r--usr.sbin/Makefile.sparc641
41 files changed, 142 insertions, 32 deletions
diff --git a/contrib/smbfs/mount_smbfs/Makefile b/contrib/smbfs/mount_smbfs/Makefile
deleted file mode 100644
index ffd79c9d4a56f..0000000000000
--- a/contrib/smbfs/mount_smbfs/Makefile
+++ /dev/null
@@ -1,18 +0,0 @@
-# $Id: Makefile,v 1.7 2001/04/16 04:34:26 bp Exp $
-
-PROG= mount_smbfs
-SRCS= mount_smbfs.c getmntopts.c
-MAN8= mount_smbfs.8
-
-BINDIR= /sbin
-#NOSHARED=yes
-
-MOUNT= ${.CURDIR}/../mount
-CFLAGS+= -DSMBFS -I${MOUNT}
-
-.PATH: ${MOUNT}
-
-LDADD+= -lsmb
-DPADD+= ${LIBSMB}
-
-.include <bsd.prog.mk>
diff --git a/etc/defaults/rc.conf b/etc/defaults/rc.conf
index dda185505de50..47d51455bd8fe 100644
--- a/etc/defaults/rc.conf
+++ b/etc/defaults/rc.conf
@@ -88,7 +88,7 @@ fsck_y_enable="NO" # Set to YES to do fsck -y if the initial preen fails.
fsck_y_flags="" # Additional flags for fsck -y
background_fsck="YES" # Attempt to run fsck in the background where possible.
background_fsck_delay="60" # Time to wait (seconds) before starting the fsck.
-netfs_types="nfs:NFS oldnfs:OLDNFS" # Net filesystems.
+netfs_types="nfs:NFS oldnfs:OLDNFS smbfs:SMB" # Net filesystems.
extra_netfs_types="NO" # List of network extra filesystem types for delayed
# mount at startup (or NO).
diff --git a/etc/mtree/BSD.include.dist b/etc/mtree/BSD.include.dist
index 02e831d7d5113..e29534841b0de 100644
--- a/etc/mtree/BSD.include.dist
+++ b/etc/mtree/BSD.include.dist
@@ -176,6 +176,8 @@
..
procfs
..
+ smbfs
+ ..
udf
..
unionfs
diff --git a/etc/mtree/BSD.usr.dist b/etc/mtree/BSD.usr.dist
index 02d2286e5375f..98e89b90bcf41 100644
--- a/etc/mtree/BSD.usr.dist
+++ b/etc/mtree/BSD.usr.dist
@@ -309,6 +309,10 @@
srcs
..
..
+ smbfs
+ print
+ ..
+ ..
sunrpc
dir
..
diff --git a/include/Makefile b/include/Makefile
index 4ccb759d57ac3..ae5ed7ce7737a 100644
--- a/include/Makefile
+++ b/include/Makefile
@@ -37,7 +37,7 @@ LHDRS= aio.h errno.h fcntl.h linker_set.h poll.h stdatomic.h stdint.h \
syslog.h ucontext.h
LDIRS= bsm cam geom net net80211 netatalk netgraph netinet netinet6 \
- netipsec ${_netipx} netnatm \
+ netipsec ${_netipx} netnatm netsmb \
nfs nfsclient nfsserver \
sys vm
@@ -48,7 +48,7 @@ LSUBDIRS= cam/ata cam/scsi \
dev/ofw dev/pbio dev/pci ${_dev_powermac_nvram} dev/ppbus dev/smbus \
dev/speaker dev/usb dev/utopia dev/vkbd dev/wi \
fs/devfs fs/fdescfs fs/msdosfs fs/nandfs fs/nfs fs/nullfs \
- fs/procfs fs/udf fs/unionfs \
+ fs/procfs fs/smbfs fs/udf fs/unionfs \
geom/cache geom/concat geom/eli geom/gate geom/journal geom/label \
geom/mirror geom/mountver geom/multipath geom/nop \
geom/raid geom/raid3 geom/shsec geom/stripe geom/virstor \
@@ -80,6 +80,7 @@ INCS+= iconv.h
LSUBSUBDIRS+= netgraph/bluetooth/include
.endif
+# XXX unconditionally needed by <netsmb/netbios.h>
#.if ${MK_IPX} != "no"
_netipx= netipx
#.endif
diff --git a/lib/Makefile b/lib/Makefile
index d28d55bc44225..71fe4d2354e4e 100644
--- a/lib/Makefile
+++ b/lib/Makefile
@@ -102,6 +102,7 @@ SUBDIR= ${SUBDIR_ORDERED} \
${_librtld_db} \
${_libsdp} \
${_libsm} \
+ ${_libsmb} \
${_libsmdb} \
${_libsmutil} \
libstand \
@@ -205,6 +206,7 @@ _libypclnt= libypclnt
.endif
.if ${MACHINE_CPUARCH} == "i386" || ${MACHINE_CPUARCH} == "amd64"
+_libsmb= libsmb
_libvgl= libvgl
_libproc= libproc
_librtld_db= librtld_db
@@ -216,6 +218,7 @@ _libvmmapi= libvmmapi
.if ${MACHINE_CPUARCH} == "ia64"
_libefi= libefi
+_libsmb= libsmb
.endif
.if ${MACHINE_CPUARCH} == "mips"
@@ -226,6 +229,11 @@ _librtld_db= librtld_db
.if ${MACHINE_CPUARCH} == "powerpc"
_libproc= libproc
_librtld_db= librtld_db
+_libsmb= libsmb
+.endif
+
+.if ${MACHINE_CPUARCH} == "sparc64"
+_libsmb= libsmb
.endif
.if ${MK_OPENSSL} != "no"
diff --git a/lib/libprocstat/Makefile b/lib/libprocstat/Makefile
index 1ba2398ace5bb..af5a775d7d056 100644
--- a/lib/libprocstat/Makefile
+++ b/lib/libprocstat/Makefile
@@ -9,6 +9,7 @@ SRCS= cd9660.c \
core.c \
libprocstat.c \
msdosfs.c \
+ smbfs.c \
udf.c
VERSION_DEF= ${.CURDIR}/Versions.def
diff --git a/lib/libprocstat/common_kvm.h b/lib/libprocstat/common_kvm.h
index d5e08e1cfc09c..06627bff448c9 100644
--- a/lib/libprocstat/common_kvm.h
+++ b/lib/libprocstat/common_kvm.h
@@ -41,6 +41,7 @@ int devfs_filestat(kvm_t *kd, struct vnode *vp, struct vnstat *vn);
int isofs_filestat(kvm_t *kd, struct vnode *vp, struct vnstat *vn);
int msdosfs_filestat(kvm_t *kd, struct vnode *vp, struct vnstat *vn);
int nfs_filestat(kvm_t *kd, struct vnode *vp, struct vnstat *vn);
+int smbfs_filestat(kvm_t *kd, struct vnode *vp, struct vnstat *vn);
int udf_filestat(kvm_t *kd, struct vnode *vp, struct vnstat *vn);
int ufs_filestat(kvm_t *kd, struct vnode *vp, struct vnstat *vn);
int zfs_filestat(kvm_t *kd, struct vnode *vp, struct vnstat *vn);
diff --git a/lib/libprocstat/libprocstat.c b/lib/libprocstat/libprocstat.c
index 7626c19e1019a..dfb5ed3281948 100644
--- a/lib/libprocstat/libprocstat.c
+++ b/lib/libprocstat/libprocstat.c
@@ -1220,6 +1220,7 @@ procstat_get_vnode_info_kvm(kvm_t *kd, struct filestat *fst,
FSTYPE(isofs),
FSTYPE(msdosfs),
FSTYPE(nfs),
+ FSTYPE(smbfs),
FSTYPE(udf),
FSTYPE(ufs),
#ifdef LIBPROCSTAT_ZFS
diff --git a/rescue/rescue/Makefile b/rescue/rescue/Makefile
index caec928fee7e0..80acf63bf0f0e 100644
--- a/rescue/rescue/Makefile
+++ b/rescue/rescue/Makefile
@@ -130,6 +130,8 @@ CRUNCH_LIBS+= -lgeom -lbsdxml -lkiconv -lmd -lsbuf -lufs -lz
.if ${MACHINE_CPUARCH} == "i386"
CRUNCH_PROGS_sbin+= bsdlabel sconfig fdisk
CRUNCH_ALIAS_bsdlabel= disklabel
+#CRUNCH_PROGS+= mount_smbfs
+#CRUNCH_LIBS+= -lsmb
.endif
.if ${MACHINE} == "pc98"
diff --git a/sbin/mount/mount.8 b/sbin/mount/mount.8
index 7cd80266ac51c..5b670eeaf5f1c 100644
--- a/sbin/mount/mount.8
+++ b/sbin/mount/mount.8
@@ -450,6 +450,7 @@ However, for the following file system types:
.Cm nfs ,
.Cm nullfs ,
.Cm oldnfs ,
+.Cm smbfs ,
.Cm udf ,
and
.Cm unionfs .
@@ -544,6 +545,7 @@ support for a particular file system might be provided either on a static
.Xr mount_msdosfs 8 ,
.Xr mount_nfs 8 ,
.Xr mount_nullfs 8 ,
+.Xr mount_smbfs 8 ,
.Xr mount_udf 8 ,
.Xr mount_unionfs 8 ,
.Xr umount 8 ,
diff --git a/sbin/mount/mount.c b/sbin/mount/mount.c
index a156089dc99b1..6284822239e35 100644
--- a/sbin/mount/mount.c
+++ b/sbin/mount/mount.c
@@ -143,7 +143,7 @@ use_mountprog(const char *vfstype)
unsigned int i;
const char *fs[] = {
"cd9660", "mfs", "msdosfs", "nfs",
- "nullfs", "oldnfs", "udf", "unionfs",
+ "nullfs", "oldnfs", "smbfs", "udf", "unionfs",
NULL
};
diff --git a/share/examples/Makefile b/share/examples/Makefile
index 90bef45f6dfc6..04f53d683a2c8 100644
--- a/share/examples/Makefile
+++ b/share/examples/Makefile
@@ -240,6 +240,7 @@ etc-examples:
.endif
.if ${SHARED} != "symlinks"
+SUBDIR= smbfs
.if ${MK_ATF} != "no"
SUBDIR+=atf
.endif
diff --git a/share/examples/etc/README.examples b/share/examples/etc/README.examples
index d703edbf56816..f7bf4ceb8cfb3 100644
--- a/share/examples/etc/README.examples
+++ b/share/examples/etc/README.examples
@@ -40,6 +40,7 @@ netstart - network startup script run from /etc/rc
network.subr - routines for network configuration scripts
networks - see networks(5)
newsyslog.conf - configuration for system log file rotator newsyslog(8)
+nsmb.conf - smbfs lookups configuration file
opieaccess - OPIE database of trusted networks
pf.conf - pf(4) example configuration file
pf.os - SYN fingerprint database
diff --git a/share/mk/bsd.libnames.mk b/share/mk/bsd.libnames.mk
index e11ac8163b124..f78a6564840df 100644
--- a/share/mk/bsd.libnames.mk
+++ b/share/mk/bsd.libnames.mk
@@ -149,6 +149,7 @@ LIBRT?= ${DESTDIR}${LIBDIR}/librt.a
LIBRTLD_DB?= ${DESTDIR}${LIBDIR}/librtld_db.a
LIBSBUF?= ${DESTDIR}${LIBDIR}/libsbuf.a
LIBSDP?= ${DESTDIR}${LIBDIR}/libsdp.a
+LIBSMB?= ${DESTDIR}${LIBDIR}/libsmb.a
LIBSSH?= ${DESTDIR}${LIBDIR}/libssh.a
LIBSSL?= ${DESTDIR}${LIBDIR}/libssl.a
LIBSTAND?= ${DESTDIR}${LIBDIR}/libstand.a
diff --git a/sys/conf/NOTES b/sys/conf/NOTES
index 3961e0f138933..dce216800a325 100644
--- a/sys/conf/NOTES
+++ b/sys/conf/NOTES
@@ -602,6 +602,12 @@ options IPX #IPX/SPX communications protocols
options NETATALK #Appletalk communications protocols
options NETATALKDEBUG #Appletalk debugging
+#
+# SMB/CIFS requester
+# NETSMB enables support for SMB protocol, it requires LIBMCHAIN and LIBICONV
+# options.
+options NETSMB #SMB/CIFS requester
+
# mchain library. It can be either loaded as KLD or compiled into kernel
options LIBMCHAIN
@@ -1038,6 +1044,7 @@ options NULLFS #NULL filesystem
options PROCFS #Process filesystem (requires PSEUDOFS)
options PSEUDOFS #Pseudo-filesystem framework
options PSEUDOFS_TRACE #Debugging support for PSEUDOFS
+options SMBFS #SMB/CIFS filesystem
options TMPFS #Efficient memory filesystem
options UDF #Universal Disk Format
options UNIONFS #Union filesystem
diff --git a/sys/conf/files b/sys/conf/files
index 4dc89148f04e7..385a4eb1c6669 100644
--- a/sys/conf/files
+++ b/sys/conf/files
@@ -536,8 +536,8 @@ crypto/blowfish/bf_ecb.c optional ipsec
crypto/blowfish/bf_skey.c optional crypto | ipsec
crypto/camellia/camellia.c optional crypto | ipsec
crypto/camellia/camellia-api.c optional crypto | ipsec
-crypto/des/des_ecb.c optional crypto | ipsec
-crypto/des/des_setkey.c optional crypto | ipsec
+crypto/des/des_ecb.c optional crypto | ipsec | netsmb
+crypto/des/des_setkey.c optional crypto | ipsec | netsmb
crypto/rc4/rc4.c optional netgraph_mppc_encryption | kgssapi
crypto/rijndael/rijndael-alg-fst.c optional crypto | geom_bde | \
ipsec | random | wlan_ccmp
@@ -2509,6 +2509,12 @@ fs/pseudofs/pseudofs.c optional pseudofs
fs/pseudofs/pseudofs_fileno.c optional pseudofs
fs/pseudofs/pseudofs_vncache.c optional pseudofs
fs/pseudofs/pseudofs_vnops.c optional pseudofs
+fs/smbfs/smbfs_io.c optional smbfs
+fs/smbfs/smbfs_node.c optional smbfs
+fs/smbfs/smbfs_smb.c optional smbfs
+fs/smbfs/smbfs_subr.c optional smbfs
+fs/smbfs/smbfs_vfsops.c optional smbfs
+fs/smbfs/smbfs_vnops.c optional smbfs
fs/udf/osta.c optional udf
fs/udf/udf_iconv.c optional udf_iconv
fs/udf/udf_vfsops.c optional udf
@@ -2746,6 +2752,7 @@ kern/kern_uuid.c standard
kern/kern_xxx.c standard
kern/link_elf.c standard
kern/linker_if.m standard
+kern/md4c.c optional netsmb
kern/md5c.c standard
kern/p1003_1b.c standard
kern/posix4_mib.c standard
@@ -3279,6 +3286,15 @@ netpfil/pf/pf_osfp.c optional pf inet
netpfil/pf/pf_ruleset.c optional pf inet
netpfil/pf/pf_table.c optional pf inet
netpfil/pf/in4_cksum.c optional pf inet
+netsmb/smb_conn.c optional netsmb
+netsmb/smb_crypt.c optional netsmb
+netsmb/smb_dev.c optional netsmb
+netsmb/smb_iod.c optional netsmb
+netsmb/smb_rq.c optional netsmb
+netsmb/smb_smb.c optional netsmb
+netsmb/smb_subr.c optional netsmb
+netsmb/smb_trantcp.c optional netsmb
+netsmb/smb_usr.c optional netsmb
nfs/bootp_subr.c optional bootp nfsclient | bootp nfscl
nfs/krpc_subr.c optional bootp nfsclient | bootp nfscl
nfs/nfs_common.c optional nfsclient | nfsserver
diff --git a/sys/conf/files.amd64 b/sys/conf/files.amd64
index 7a41a269c8f10..2cb1981cf3f3a 100644
--- a/sys/conf/files.amd64
+++ b/sys/conf/files.amd64
@@ -136,7 +136,7 @@ crypto/aesni/aeskeys_amd64.S optional aesni
crypto/aesni/aesni.c optional aesni
crypto/aesni/aesni_wrap.c optional aesni
crypto/blowfish/bf_enc.c optional crypto | ipsec
-crypto/des/des_enc.c optional crypto | ipsec
+crypto/des/des_enc.c optional crypto | ipsec | netsmb
crypto/via/padlock.c optional padlock
crypto/via/padlock_cipher.c optional padlock
crypto/via/padlock_hash.c optional padlock
diff --git a/sys/conf/files.arm b/sys/conf/files.arm
index 938386d70bff9..ac487041f6f40 100644
--- a/sys/conf/files.arm
+++ b/sys/conf/files.arm
@@ -61,7 +61,7 @@ board_id.h standard \
clean "board_id.h"
cddl/compat/opensolaris/kern/opensolaris_atomic.c optional zfs compile-with "${ZFS_C}"
crypto/blowfish/bf_enc.c optional crypto | ipsec
-crypto/des/des_enc.c optional crypto | ipsec
+crypto/des/des_enc.c optional crypto | ipsec | netsmb
dev/fb/fb.c optional sc
dev/hwpmc/hwpmc_arm.c optional hwpmc
dev/kbd/kbd.c optional sc
diff --git a/sys/conf/files.i386 b/sys/conf/files.i386
index 218472b71c528..0f65d3b8a3ddf 100644
--- a/sys/conf/files.i386
+++ b/sys/conf/files.i386
@@ -122,7 +122,7 @@ crypto/aesni/aesencdec_i386.S optional aesni
crypto/aesni/aeskeys_i386.S optional aesni
crypto/aesni/aesni.c optional aesni
crypto/aesni/aesni_wrap.c optional aesni
-crypto/des/arch/i386/des_enc.S optional crypto | ipsec
+crypto/des/arch/i386/des_enc.S optional crypto | ipsec | netsmb
crypto/via/padlock.c optional padlock
crypto/via/padlock_cipher.c optional padlock
crypto/via/padlock_hash.c optional padlock
diff --git a/sys/conf/files.ia64 b/sys/conf/files.ia64
index 474ba1b8132e8..6719c98706588 100644
--- a/sys/conf/files.ia64
+++ b/sys/conf/files.ia64
@@ -41,7 +41,7 @@ contrib/ia64/libuwx/src/uwx_trace.c standard
contrib/ia64/libuwx/src/uwx_uinfo.c standard
contrib/ia64/libuwx/src/uwx_utable.c standard
crypto/blowfish/bf_enc.c optional crypto | ipsec
-crypto/des/des_enc.c optional crypto | ipsec
+crypto/des/des_enc.c optional crypto | ipsec | netsmb
dev/atkbdc/atkbd.c optional atkbd atkbdc
dev/atkbdc/atkbd_atkbdc.c optional atkbd atkbdc
dev/atkbdc/atkbdc.c optional atkbdc
diff --git a/sys/conf/files.mips b/sys/conf/files.mips
index 79676b992887f..ca8dee27a415c 100644
--- a/sys/conf/files.mips
+++ b/sys/conf/files.mips
@@ -77,7 +77,7 @@ dev/uart/uart_cpu_fdt.c optional uart fdt
# crypto support -- use generic
crypto/blowfish/bf_enc.c optional crypto | ipsec
-crypto/des/des_enc.c optional crypto | ipsec
+crypto/des/des_enc.c optional crypto | ipsec | netsmb
# AP common nvram interface MIPS specific, but maybe should be more generic
dev/nvram2env/nvram2env.c optional nvram2env
diff --git a/sys/conf/files.pc98 b/sys/conf/files.pc98
index 252ecdddeac9e..a8e60b6f72903 100644
--- a/sys/conf/files.pc98
+++ b/sys/conf/files.pc98
@@ -77,7 +77,7 @@ bf_enc.o optional crypto | ipsec \
dependency "$S/crypto/blowfish/arch/i386/bf_enc.S $S/crypto/blowfish/arch/i386/bf_enc_586.S $S/crypto/blowfish/arch/i386/bf_enc_686.S" \
compile-with "${CC} -c -I$S/crypto/blowfish/arch/i386 ${ASM_CFLAGS} ${WERROR} ${.IMPSRC}" \
no-implicit-rule
-crypto/des/arch/i386/des_enc.S optional crypto | ipsec
+crypto/des/arch/i386/des_enc.S optional crypto | ipsec | netsmb
dev/agp/agp_ali.c optional agp
dev/agp/agp_amd.c optional agp
dev/agp/agp_i810.c optional agp
diff --git a/sys/conf/files.powerpc b/sys/conf/files.powerpc
index 96331f7ad0aa5..5808d856838f7 100644
--- a/sys/conf/files.powerpc
+++ b/sys/conf/files.powerpc
@@ -18,7 +18,7 @@ font.h optional sc \
cddl/compat/opensolaris/kern/opensolaris_atomic.c optional zfs powerpc compile-with "${ZFS_C}"
cddl/contrib/opensolaris/common/atomic/powerpc64/opensolaris_atomic.S optional zfs powerpc64 compile-with "${ZFS_S}"
crypto/blowfish/bf_enc.c optional crypto | ipsec
-crypto/des/des_enc.c optional crypto | ipsec
+crypto/des/des_enc.c optional crypto | ipsec | netsmb
dev/bm/if_bm.c optional bm powermac
dev/adb/adb_bus.c optional adb
dev/adb/adb_kbd.c optional adb
diff --git a/sys/conf/files.sparc64 b/sys/conf/files.sparc64
index 5019dabeab869..a0fad9b5477db 100644
--- a/sys/conf/files.sparc64
+++ b/sys/conf/files.sparc64
@@ -24,7 +24,7 @@ ukbdmap.h optional ukbd_dflt_keymap \
#
cddl/contrib/opensolaris/common/atomic/sparc64/opensolaris_atomic.S optional zfs compile-with "${ZFS_S}"
crypto/blowfish/bf_enc.c optional crypto | ipsec
-crypto/des/des_enc.c optional crypto | ipsec
+crypto/des/des_enc.c optional crypto | ipsec | netsmb
dev/atkbdc/atkbd.c optional atkbd atkbdc
dev/atkbdc/atkbd_atkbdc.c optional atkbd atkbdc
dev/atkbdc/atkbdc.c optional atkbdc
diff --git a/sys/conf/options b/sys/conf/options
index 03936fd94b40e..752893d32e6fc 100644
--- a/sys/conf/options
+++ b/sys/conf/options
@@ -222,6 +222,7 @@ NULLFS opt_dontuse.h
PROCFS opt_dontuse.h
PSEUDOFS opt_dontuse.h
REISERFS opt_dontuse.h
+SMBFS opt_dontuse.h
TMPFS opt_dontuse.h
UDF opt_dontuse.h
UNIONFS opt_dontuse.h
@@ -287,6 +288,9 @@ UFS_GJOURNAL opt_ufs.h
# they won't make any difference yet).
NFS_ROOT opt_nfsroot.h
+# SMB/CIFS requester
+NETSMB opt_netsmb.h
+
# Options used only in subr_param.c.
HZ opt_param.h
MAXFILES opt_param.h
diff --git a/sys/kern/Make.tags.inc b/sys/kern/Make.tags.inc
index 81205a6b429bb..cb8a3ff993e7f 100644
--- a/sys/kern/Make.tags.inc
+++ b/sys/kern/Make.tags.inc
@@ -30,6 +30,7 @@ COMM= ${SYS}/dev/advansys/*.[ch] \
${SYS}/fs/msdosfs/*.[ch] \
${SYS}/fs/nullfs/*.[ch] \
${SYS}/fs/procfs/*.[ch] \
+ ${SYS}/fs/smbfs/*.[ch] \
${SYS}/fs/udf/*.[ch] \
${SYS}/fs/unionfs/*.[ch] \
${SYS}/geom/*.[ch] \
diff --git a/sys/kern/sys_generic.c b/sys/kern/sys_generic.c
index 45b9327683dd4..a12773be5316c 100644
--- a/sys/kern/sys_generic.c
+++ b/sys/kern/sys_generic.c
@@ -1498,6 +1498,61 @@ sys_openbsd_poll(td, uap)
}
/*
+ * XXX This was created specifically to support netncp and netsmb. This
+ * allows the caller to specify a socket to wait for events on. It returns
+ * 0 if any events matched and an error otherwise. There is no way to
+ * determine which events fired.
+ */
+int
+selsocket(struct socket *so, int events, struct timeval *tvp, struct thread *td)
+{
+ struct timeval rtv;
+ sbintime_t asbt, precision, rsbt;
+ int error;
+
+ if (tvp != NULL) {
+ rtv = *tvp;
+ if (rtv.tv_sec < 0 || rtv.tv_usec < 0 ||
+ rtv.tv_usec >= 1000000)
+ return (EINVAL);
+ if (!timevalisset(&rtv))
+ asbt = 0;
+ else if (rtv.tv_sec <= INT32_MAX) {
+ rsbt = tvtosbt(rtv);
+ precision = rsbt;
+ precision >>= tc_precexp;
+ if (TIMESEL(&asbt, rsbt))
+ asbt += tc_tick_sbt;
+ if (asbt <= INT64_MAX - rsbt)
+ asbt += rsbt;
+ else
+ asbt = -1;
+ } else
+ asbt = -1;
+ } else
+ asbt = -1;
+ seltdinit(td);
+ /*
+ * Iterate until the timeout expires or the socket becomes ready.
+ */
+ for (;;) {
+ selfdalloc(td, NULL);
+ error = sopoll(so, events, NULL, td);
+ /* error here is actually the ready events. */
+ if (error)
+ return (0);
+ error = seltdwait(td, asbt, precision);
+ if (error)
+ break;
+ }
+ seltdclear(td);
+ /* XXX Duplicates ncp/smb behavior. */
+ if (error == ERESTART)
+ error = 0;
+ return (error);
+}
+
+/*
* Preallocate two selfds associated with 'cookie'. Some fo_poll routines
* have two select sets, one for read and another for write.
*/
diff --git a/sys/modules/Makefile b/sys/modules/Makefile
index 75cc5bd5bf575..e43d561cf1c13 100644
--- a/sys/modules/Makefile
+++ b/sys/modules/Makefile
@@ -301,6 +301,7 @@ SUBDIR= \
siis \
sis \
sk \
+ ${_smbfs} \
${_sn} \
${_snc} \
snp \
@@ -520,6 +521,7 @@ _rdma= rdma
_safe= safe
_sbni= sbni
_scsi_low= scsi_low
+_smbfs= smbfs
_sound= sound
_speaker= speaker
_splash= splash
@@ -722,6 +724,7 @@ _s3= s3
_safe= safe
_scsi_low= scsi_low
_sfxge= sfxge
+_smbfs= smbfs
_sound= sound
_speaker= speaker
_splash= splash
@@ -779,6 +782,7 @@ _ips= ips
_mly= mly
_pccard= pccard
_scsi_low= scsi_low
+_smbfs= smbfs
_sound= sound
_splash= splash
_sppp= sppp
@@ -801,6 +805,7 @@ _drm= drm
_exca= exca
_nvram= powermac_nvram
_pccard= pccard
+_smbfs= smbfs
_sound= sound
_cyclic= cyclic
_dtrace= dtrace
@@ -827,6 +832,7 @@ _igb= igb
.if ${MK_CDDL} != "no" || defined(ALL_MODULES)
_opensolaris= opensolaris
.endif
+_smbfs= smbfs
_sound= sound
.if ${MK_ZFS} != "no" || defined(ALL_MODULES)
_zfs= zfs
diff --git a/sys/sys/socketvar.h b/sys/sys/socketvar.h
index 77f31df336a78..89dec187cc913 100644
--- a/sys/sys/socketvar.h
+++ b/sys/sys/socketvar.h
@@ -371,6 +371,8 @@ void soupcall_clear(struct socket *so, int which);
void soupcall_set(struct socket *so, int which,
int (*func)(struct socket *, void *, int), void *arg);
void sowakeup(struct socket *so, struct sockbuf *sb);
+int selsocket(struct socket *so, int events, struct timeval *tv,
+ struct thread *td);
/*
* Accept filter functions (duh).
diff --git a/usr.bin/Makefile.amd64 b/usr.bin/Makefile.amd64
index b720e3de68bf0..fee2fb0768118 100644
--- a/usr.bin/Makefile.amd64
+++ b/usr.bin/Makefile.amd64
@@ -1,2 +1,3 @@
# $FreeBSD$
+SUBDIR+= smbutil
diff --git a/usr.bin/Makefile.i386 b/usr.bin/Makefile.i386
index b720e3de68bf0..fee2fb0768118 100644
--- a/usr.bin/Makefile.i386
+++ b/usr.bin/Makefile.i386
@@ -1,2 +1,3 @@
# $FreeBSD$
+SUBDIR+= smbutil
diff --git a/usr.bin/Makefile.ia64 b/usr.bin/Makefile.ia64
index b720e3de68bf0..fee2fb0768118 100644
--- a/usr.bin/Makefile.ia64
+++ b/usr.bin/Makefile.ia64
@@ -1,2 +1,3 @@
# $FreeBSD$
+SUBDIR+= smbutil
diff --git a/usr.bin/Makefile.powerpc b/usr.bin/Makefile.powerpc
index b720e3de68bf0..fee2fb0768118 100644
--- a/usr.bin/Makefile.powerpc
+++ b/usr.bin/Makefile.powerpc
@@ -1,2 +1,3 @@
# $FreeBSD$
+SUBDIR+= smbutil
diff --git a/usr.bin/Makefile.sparc64 b/usr.bin/Makefile.sparc64
index b720e3de68bf0..fee2fb0768118 100644
--- a/usr.bin/Makefile.sparc64
+++ b/usr.bin/Makefile.sparc64
@@ -1,2 +1,3 @@
# $FreeBSD$
+SUBDIR+= smbutil
diff --git a/usr.bin/kdump/kdump.c b/usr.bin/kdump/kdump.c
index 550c4cb904560..77a0caeb46d57 100644
--- a/usr.bin/kdump/kdump.c
+++ b/usr.bin/kdump/kdump.c
@@ -1482,6 +1482,8 @@ ktrsockaddr(struct sockaddr *sa)
TODO: Support additional address families
#include <netnatm/natm.h>
struct sockaddr_natm *natm;
+ #include <netsmb/netbios.h>
+ struct sockaddr_nb *nb;
*/
char addr[64];
diff --git a/usr.sbin/Makefile.amd64 b/usr.sbin/Makefile.amd64
index 5ee2165b38e46..b82162580bbcb 100644
--- a/usr.sbin/Makefile.amd64
+++ b/usr.sbin/Makefile.amd64
@@ -20,6 +20,7 @@ SUBDIR+= btxld
SUBDIR+= cpucontrol
SUBDIR+= kgmon
SUBDIR+= lptcontrol
+SUBDIR+= mount_smbfs
SUBDIR+= mptable
.if ${MK_NDIS} != "no"
SUBDIR+= ndiscvt
diff --git a/usr.sbin/Makefile.i386 b/usr.sbin/Makefile.i386
index 901c2d938a8cf..7d66f783f28a0 100644
--- a/usr.sbin/Makefile.i386
+++ b/usr.sbin/Makefile.i386
@@ -12,6 +12,7 @@ SUBDIR+= cpucontrol
SUBDIR+= kgmon
SUBDIR+= kgzip
SUBDIR+= lptcontrol
+SUBDIR+= mount_smbfs
SUBDIR+= mptable
.if ${MK_NDIS} != "no"
SUBDIR+= ndiscvt
diff --git a/usr.sbin/Makefile.ia64 b/usr.sbin/Makefile.ia64
index d047b3375156b..0a897b40b316e 100644
--- a/usr.sbin/Makefile.ia64
+++ b/usr.sbin/Makefile.ia64
@@ -4,5 +4,6 @@
SUBDIR+= acpi
.endif
SUBDIR+= kgmon
+SUBDIR+= mount_smbfs
SUBDIR:= ${SUBDIR:Nuathload}
SUBDIR+= zzz
diff --git a/usr.sbin/Makefile.powerpc b/usr.sbin/Makefile.powerpc
index 131eb571cdc4e..8833a2741e194 100644
--- a/usr.sbin/Makefile.powerpc
+++ b/usr.sbin/Makefile.powerpc
@@ -1,4 +1,5 @@
# $FreeBSD$
+SUBDIR+= mount_smbfs
SUBDIR+= nvram
SUBDIR+= ofwdump
diff --git a/usr.sbin/Makefile.sparc64 b/usr.sbin/Makefile.sparc64
index 81f7a9b953aca..632b3a83706d8 100644
--- a/usr.sbin/Makefile.sparc64
+++ b/usr.sbin/Makefile.sparc64
@@ -1,4 +1,5 @@
# $FreeBSD$
SUBDIR+= eeprom
+SUBDIR+= mount_smbfs
SUBDIR+= ofwdump