From 0dd1d9c578ddc35507ac2072c5062f5d57c53147 Mon Sep 17 00:00:00 2001 From: davide Date: Fri, 28 Jun 2013 21:00:08 +0000 Subject: - Trim an unused and bogus Makefile for mount_smbfs. - Reconnect with some minor modifications, in particular now selsocket() internals are adapted to use sbintime units after recent'ish calloutng switch. --- contrib/smbfs/mount_smbfs/Makefile | 18 ------------- etc/defaults/rc.conf | 2 +- etc/mtree/BSD.include.dist | 2 ++ etc/mtree/BSD.usr.dist | 4 +++ include/Makefile | 5 ++-- lib/Makefile | 8 ++++++ lib/libprocstat/Makefile | 1 + lib/libprocstat/common_kvm.h | 1 + lib/libprocstat/libprocstat.c | 1 + rescue/rescue/Makefile | 2 ++ sbin/mount/mount.8 | 2 ++ sbin/mount/mount.c | 2 +- share/examples/Makefile | 1 + share/examples/etc/README.examples | 1 + share/mk/bsd.libnames.mk | 1 + sys/conf/NOTES | 7 +++++ sys/conf/files | 20 ++++++++++++-- sys/conf/files.amd64 | 2 +- sys/conf/files.arm | 2 +- sys/conf/files.i386 | 2 +- sys/conf/files.ia64 | 2 +- sys/conf/files.mips | 2 +- sys/conf/files.pc98 | 2 +- sys/conf/files.powerpc | 2 +- sys/conf/files.sparc64 | 2 +- sys/conf/options | 4 +++ sys/kern/Make.tags.inc | 1 + sys/kern/sys_generic.c | 55 ++++++++++++++++++++++++++++++++++++++ sys/modules/Makefile | 6 +++++ sys/sys/socketvar.h | 2 ++ usr.bin/Makefile.amd64 | 1 + usr.bin/Makefile.i386 | 1 + usr.bin/Makefile.ia64 | 1 + usr.bin/Makefile.powerpc | 1 + usr.bin/Makefile.sparc64 | 1 + usr.bin/kdump/kdump.c | 2 ++ usr.sbin/Makefile.amd64 | 1 + usr.sbin/Makefile.i386 | 1 + usr.sbin/Makefile.ia64 | 1 + usr.sbin/Makefile.powerpc | 1 + usr.sbin/Makefile.sparc64 | 1 + 41 files changed, 142 insertions(+), 32 deletions(-) delete mode 100644 contrib/smbfs/mount_smbfs/Makefile diff --git a/contrib/smbfs/mount_smbfs/Makefile b/contrib/smbfs/mount_smbfs/Makefile deleted file mode 100644 index ffd79c9..0000000 --- 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 diff --git a/etc/defaults/rc.conf b/etc/defaults/rc.conf index dda1855..47d5145 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 02e831d..e295348 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 02d2286..98e89b9 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 4ccb759..ae5ed7c 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 #.if ${MK_IPX} != "no" _netipx= netipx #.endif diff --git a/lib/Makefile b/lib/Makefile index d28d55b..71fe4d2 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 1ba2398..af5a775 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 d5e08e1..06627bf 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 7626c19..dfb5ed3 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 caec928..80acf63 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 7cd8026..5b670ee 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 a156089..6284822 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 90bef45..04f53d6 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 d703edb..f7bf4ce 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 e11ac81..f78a656 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 3961e0f..dce2168 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 4dc8914..385a4eb 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 7a41a26..2cb1981 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 938386d..ac48704 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 218472b..0f65d3b 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 474ba1b..6719c98 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 79676b9..ca8dee2 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 252ecdd..a8e60b6 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 96331f7..5808d85 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 5019dab..a0fad9b 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 03936fd..752893d 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 81205a6..cb8a3ff 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 45b9327..a12773b 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 75cc5bd..e43d561 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 77f31df..89dec18 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 b720e3d..fee2fb0 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 b720e3d..fee2fb0 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 b720e3d..fee2fb0 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 b720e3d..fee2fb0 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 b720e3d..fee2fb0 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 550c4cb..77a0cae 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 struct sockaddr_natm *natm; + #include + struct sockaddr_nb *nb; */ char addr[64]; diff --git a/usr.sbin/Makefile.amd64 b/usr.sbin/Makefile.amd64 index 5ee2165..b821625 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 901c2d9..7d66f78 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 d047b33..0a897b4 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 131eb57..8833a27 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 81f7a9b..632b3a8 100644 --- a/usr.sbin/Makefile.sparc64 +++ b/usr.sbin/Makefile.sparc64 @@ -1,4 +1,5 @@ # $FreeBSD$ SUBDIR+= eeprom +SUBDIR+= mount_smbfs SUBDIR+= ofwdump -- cgit v1.1