diff options
| author | Davide Italiano <davide@FreeBSD.org> | 2013-06-28 21:00:08 +0000 | 
|---|---|---|
| committer | Davide Italiano <davide@FreeBSD.org> | 2013-06-28 21:00:08 +0000 | 
| commit | 237abf0c56afd2f4846230b70b42b4c3d02d2d19 (patch) | |
| tree | e1591b3e71dfbd12dfea7bc7669be4a10541da31 | |
| parent | bbc6d2c1af692549bb62ab4ce214c9b97c2fb040 (diff) | |
Notes
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 ffd79c9d4a56..000000000000 --- 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 dda185505de5..47d51455bd8f 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 02e831d7d511..e29534841b0d 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 02d2286e5375..98e89b90bcf4 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 4ccb759d57ac..ae5ed7ce7737 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 d28d55bc4422..71fe4d2354e4 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 1ba2398ace5b..af5a775d7d05 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 d5e08e1cfc09..06627bff448c 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 7626c19e1019..dfb5ed328194 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 caec928fee7e..80acf63bf0f0 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 7cd80266ac51..5b670eeaf5f1 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 a156089dc99b..6284822239e3 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 90bef45f6dfc..04f53d683a2c 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 d703edbf5681..f7bf4ceb8cfb 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 e11ac8163b12..f78a6564840d 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 3961e0f13893..dce216800a32 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 4dc89148f04e..385a4eb1c666 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 7a41a269c8f1..2cb1981cf3f3 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 938386d70bff..ac487041f6f4 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 218472b71c52..0f65d3b8a3dd 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 474ba1b8132e..6719c9870658 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 79676b992887..ca8dee27a415 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 252ecdddeac9..a8e60b6f7290 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 96331f7ad0aa..5808d856838f 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 5019dabeab86..a0fad9b5477d 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 03936fd94b40..752893d32e6f 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 81205a6b429b..cb8a3ff993e7 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 45b9327683dd..a12773be5316 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 75cc5bd5bf57..e43d561cf1c1 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 77f31df336a7..89dec187cc91 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 b720e3de68bf..fee2fb076811 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 b720e3de68bf..fee2fb076811 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 b720e3de68bf..fee2fb076811 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 b720e3de68bf..fee2fb076811 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 b720e3de68bf..fee2fb076811 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 550c4cb90456..77a0caeb46d5 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 5ee2165b38e4..b82162580bbc 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 901c2d938a8c..7d66f783f28a 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 d047b3375156..0a897b40b316 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 131eb571cdc4..8833a2741e19 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 81f7a9b953ac..632b3a83706d 100644 --- a/usr.sbin/Makefile.sparc64 +++ b/usr.sbin/Makefile.sparc64 @@ -1,4 +1,5 @@  # $FreeBSD$  SUBDIR+=	eeprom +SUBDIR+=	mount_smbfs  SUBDIR+=	ofwdump  | 
