aboutsummaryrefslogtreecommitdiff
path: root/net/samba34
diff options
context:
space:
mode:
authorTimur I. Bakeyev <timur@FreeBSD.org>2010-02-05 01:08:29 +0000
committerTimur I. Bakeyev <timur@FreeBSD.org>2010-02-05 01:08:29 +0000
commit28a3f34336f6ad0c7af4e92ff68816777e13a3fb (patch)
treea12770fde4ec2a596a0655043e2193f17fab15a3 /net/samba34
parentd02e888da01316eb06bec11f5120f0cdb8d84957 (diff)
downloadports-28a3f34336f6ad0c7af4e92ff68816777e13a3fb.tar.gz
ports-28a3f34336f6ad0c7af4e92ff68816777e13a3fb.zip
Notes
Diffstat (limited to 'net/samba34')
-rw-r--r--net/samba34/Makefile532
-rw-r--r--net/samba34/distinfo3
-rw-r--r--net/samba34/files/README.FreeBSD32
-rw-r--r--net/samba34/files/patch-lib__tevent__tevent_signal.c11
-rw-r--r--net/samba34/files/patch-nsswitch__pam_winbind.c89
-rw-r--r--net/samba34/files/patch-nsswitch__wins_freebsd.c111
-rw-r--r--net/samba34/files/patch-source3__Makefile.in56
-rw-r--r--net/samba34/files/patch-source3__configure.in214
-rw-r--r--net/samba34/files/patch-source3__include__includes.h22
-rw-r--r--net/samba34/files/patch-source3__lib__fault.c164
-rw-r--r--net/samba34/files/patch-source3__m4__aclocal.m4180
-rw-r--r--net/samba34/files/patch-source3__script__tests__dlopen.sh11
-rw-r--r--net/samba34/files/patch-source3__smbd__aio.c12
-rw-r--r--net/samba34/files/patch-source3__smbd__quotas.c19
-rw-r--r--net/samba34/files/patch-source3__smbd__statvfs.c64
-rw-r--r--net/samba34/files/patch-source3__utils__net_time.c18
-rw-r--r--net/samba34/files/pkg-deinstall.in44
-rw-r--r--net/samba34/files/pkg-install.in41
-rw-r--r--net/samba34/files/pkg-message.in7
-rw-r--r--net/samba34/files/samba.in159
-rw-r--r--net/samba34/files/sernet.patch1027
-rw-r--r--net/samba34/files/smb.conf.sample.in291
-rw-r--r--net/samba34/pkg-descr12
-rw-r--r--net/samba34/pkg-plist231
-rw-r--r--net/samba34/pkg-plist.swat499
25 files changed, 3849 insertions, 0 deletions
diff --git a/net/samba34/Makefile b/net/samba34/Makefile
new file mode 100644
index 000000000000..bb2eaadbfe2f
--- /dev/null
+++ b/net/samba34/Makefile
@@ -0,0 +1,532 @@
+# New ports collection makefile for: samba34
+# Date created: 1 May 2009
+# Whom: timur@FreeBSD.org
+#
+# $FreeBSD$
+#
+
+PORTNAME?= ${SAMBA_PORTNAME}
+PORTVERSION?= ${SAMBA_VERSION}
+CATEGORIES?= net
+MASTER_SITES= ${MASTER_SITE_SAMBA}
+MASTER_SITE_SUBDIR= . old-versions rc pre
+DISTNAME= ${SAMBA_DISTNAME}
+
+MAINTAINER?= timur@FreeBSD.org
+COMMENT?= A free SMB and CIFS client and server for UNIX
+
+CONFLICTS?= ja-samba-[23].* samba-[23].* sharity-light-1.* tdb-1.*
+
+SAMBA_PORTNAME= samba34
+SAMBA_VERSION= 3.4.5
+SAMBA_DISTNAME= ${SAMBA_PORTNAME:S|34$||}-${SAMBA_VERSION:S|.p|pre|:S|.r|rc|:S|.t|tp|:S|.a|alpha|}
+
+# Additional patches from Sernet.de
+PATCH_STRIP= -p1
+EXTRA_PATCHES= ${PATCHDIR}/sernet.patch
+
+LATEST_LINK= ${PKGNAMEPREFIX}${PORTNAME}${PKGNAMESUFFIX}
+EXAMPLESDIR= ${PREFIX}/share/examples/${PKGNAMEPREFIX}${PORTNAME}${PKGNAMESUFFIX}
+PATCH_WRKSRC= ${WRKDIR}/${DISTNAME}
+WRKSRC= ${WRKDIR}/${DISTNAME}/source3
+IPATHS= -I${WRKDIR}/${DISTNAME}/source3/m4 -I${WRKDIR}/${DISTNAME}/m4 -I${WRKDIR}/${DISTNAME}/lib/replace -I${WRKDIR}/${DISTNAME}/source4
+AUTOHEADER_ARGS= ${IPATHS}
+AUTOCONF_ARGS= ${IPATHS}
+
+USE_GMAKE= yes
+USE_ICONV= yes
+GNU_CONFIGURE= yes
+USE_AUTOTOOLS= autoconf:262 autoheader:262
+# directories
+VARDIR?= /var
+SAMBA_SPOOL?= ${VARDIR}/spool/${PORTNAME}
+SAMBA_LOGDIR= ${VARDIR}/log/${PORTNAME}
+SAMBA_RUNDIR= ${VARDIR}/run/${PORTNAME}
+SAMBA_LOCKDIR?= ${VARDIR}/db/${PORTNAME}
+SAMBA_CONFIG?= smb.conf
+SAMBA_CONFDIR?= ${PREFIX}/etc
+RC_DIR= ${PREFIX}/etc/rc.d
+SAMBA_SWATDIR= ${PREFIX}/share/swat
+SAMBA_LIBDIR= ${PREFIX}/lib
+SAMBA_MODULEDIR= ${SAMBA_LIBDIR}/${PORTNAME}
+SAMBA_INCLUDEDIR= ${PREFIX}/include/${PORTNAME}
+SAMBA_PRIVATEDIR?= ${SAMBA_CONFDIR}/${PORTNAME}
+
+PKGCONFIGDIR?= ${PREFIX}/libdata/pkgconfig
+PKGCONFIGDIR_REL?= ${PKGCONFIGDIR:S|^${PREFIX}/||}
+
+CONFIGURE_ARGS+= --exec-prefix="${PREFIX}" \
+ --with-fhs \
+ --sysconfdir="${SAMBA_CONFDIR}" \
+ --with-configdir="${SAMBA_CONFDIR}" \
+ --includedir="${SAMBA_INCLUDEDIR}" \
+ --datadir="${DATADIR}" \
+ --with-swatdir="${SAMBA_SWATDIR}" \
+ --libdir="${SAMBA_LIBDIR}" \
+ --with-modulesdir="${SAMBA_MODULEDIR}" \
+ --with-pammodulesdir="${SAMBA_LIBDIR}" \
+ --localstatedir="${VARDIR}" \
+ --with-piddir="${SAMBA_RUNDIR}" \
+ --with-lockdir="${SAMBA_LOCKDIR}" \
+ --with-privatedir="${SAMBA_PRIVATEDIR}" \
+ --with-logfilebase="${SAMBA_LOGDIR}"
+
+CPPFLAGS+= -I${LOCALBASE}/include
+LDFLAGS+= -L${LOCALBASE}/lib
+CONFIGURE_ENV+= CPPFLAGS="${CPPFLAGS}" LDFLAGS="${LDFLAGS}"
+# Let process generate meaningful backtrace on a core dump
+LIB_DEPENDS+= execinfo.1:${PORTSDIR}/devel/libexecinfo
+# Always use external libtalloc
+LIB_DEPENDS+= talloc.2:${PORTSDIR}/devel/talloc
+CONFIGURE_ARGS+= --without-libtalloc --enable-external-libtalloc
+# These options are common for all (sub)ports
+CONFIGURE_ARGS+= --without-libtdb --with-libiconv="${LOCALBASE}"
+.if !defined(SAMBA_SUBPORT)
+OPTIONS= LDAP "With LDAP support" on \
+ ADS "With Active Directory support" off \
+ CUPS "With CUPS printing support" on \
+ WINBIND "With WinBIND support" on \
+ SWAT "With SWAT WebGUI" off \
+ ACL_SUPPORT "With ACL support" off \
+ AIO_SUPPORT "With Asyncronous IO support" off \
+ FAM_SUPPORT "With File Alteration Monitor" off \
+ SYSLOG "With Syslog support" off \
+ QUOTAS "With Disk quota support" off \
+ UTMP "With UTMP accounting support" off \
+ PAM_SMBPASS "With PAM authentication vs passdb backends" off \
+ DNSUPDATE "With dynamic DNS update(require ADS)" off \
+ DNSSD "With DNS service discovery support" off \
+ EXP_MODULES "With experimental modules" off \
+ POPT "With system-wide POPT library" on \
+ MAX_DEBUG "With maximum debugging" off \
+ SMBTORTURE "With smbtorture" off
+# !SAMBA_SUBPORT
+.endif
+
+.include <bsd.port.options.mk>
+
+.if ${OSVERSION} >= 701000 && ${OSVERSION} < 702000
+IGNORE= databases/tdb crashes on FreeBSD 7.1. Please, consider upgrading to 7.2 or higher
+.endif
+
+.if defined(SAMBA_SUBPORT)
+# Switch off all extra functionality
+CONFIGURE_ARGS+= --disable-cups --disable-fam --without-winbind \
+ --without-syslog --without-quotas --without-utmp \
+ --without-pam --without-pam_smbpass \
+ --without-aio-support
+# Dirty hack to work around usage of OPTIONS in slave ports
+. if exists(${.CURDIR}/Makefile.inc)
+. include "${.CURDIR}/Makefile.inc"
+. endif
+.else
+# Samba server itself
+USE_RC_SUBR= samba
+SUB_FILES= pkg-install pkg-message pkg-deinstall smb.conf.sample
+
+PLIST= ${WRKDIR}/.PLIST
+# We don't (yet) have clustered FS for cluster support
+CONFIGURE_ARGS+= --with-pam --with-readline=/usr \
+ --with-included-iniparser \
+ --with-sendfile-support \
+ --enable-largefile \
+ --without-cluster-support \
+ --without-libsmbclient \
+ --without-libaddns \
+ --without-libnetapi \
+ --without-libsmbsharemodes
+
+.if !defined(WITHOUT_LDAP)
+SAMBA_WANT_LDAP= yes
+.endif
+
+.if !defined(WITHOUT_CUPS)
+LIB_DEPENDS+= cups.2:${PORTSDIR}/print/cups-client
+CONFIGURE_ARGS+= --enable-cups --enable-iprint
+SUB_LIST+= CUPS=""
+.else
+CONFIGURE_ARGS+= --disable-cups --disable-iprint
+SUB_LIST+= CUPS="@comment "
+.endif
+
+.if defined(WITH_MAX_DEBUG)
+CPPFLAGS+= -g
+LDFLAGS+= -g
+LIB_DEPENDS+= dmalloc.1:${PORTSDIR}/devel/dmalloc
+CONFIGURE_ARGS+= --enable-debug \
+ --enable-socket-wrapper --enable-nss-wrapper \
+ --enable-developer --enable-krb5developer \
+ --enable-dmalloc --with-profiling-data
+
+CONFIGURE_ARGS+= --with-smbtorture4-path=${WRKDIR}/${DISTNAME}/source4/torture
+.else
+CONFIGURE_ARGS+= --disable-debug \
+ --disable-socket-wrapper --disable-nss-wrapper \
+ --disable-developer --disable-krb5developer \
+ --disable-dmalloc --without-profiling-data
+.endif
+
+.if defined(WITH_SYSLOG)
+CONFIGURE_ARGS+= --with-syslog
+.else
+CONFIGURE_ARGS+= --without-syslog
+.endif
+
+.if defined(WITH_QUOTAS)
+CONFIGURE_ARGS+= --with-quotas
+.else
+CONFIGURE_ARGS+= --without-quotas
+.endif
+
+.if !defined(WITHOUT_UTMP)
+CONFIGURE_ARGS+= --with-utmp
+.else
+CONFIGURE_ARGS+= --without-utmp
+.endif
+
+.if !defined(WITHOUT_WINBIND)
+CONFIGURE_ARGS+= --with-winbind
+PLIST_SUB+= WINBIND=""
+SUB_LIST+= WINBIND=""
+.else
+CONFIGURE_ARGS+= --without-winbind
+PLIST_SUB+= WINBIND="@comment "
+SUB_LIST+= WINBIND="@comment "
+.endif
+
+.if !defined(WITHOUT_SWAT)
+CONFIGURE_ARGS+= --enable-swat
+PLIST_SUB+= SWAT=""
+.else
+CONFIGURE_ARGS+= --disable-swat
+PLIST_SUB+= SWAT="@comment "
+.endif
+# Add some shared modules
+.if defined(WITH_EXP_MODULES)
+. if !defined(WANT_EXP_MODULES) || empty(WANT_EXP_MODULES)
+WANT_EXP_MODULES= idmap_tdb2 idmap_ad idmap_adex idmap_hash idmap_rid \
+ charset_weird
+. if !defined(WITH_MAX_DEBUG)
+WANT_EXP_MODULES+= rpc_echo
+. endif
+WANT_EXP_MODULES+= vfs_cacheprime vfs_catia vfs_commit vfs_dirsort \
+ vfs_readahead vfs_streams_depot vfs_syncops
+. endif
+.endif
+
+.if defined(WITH_FAM_SUPPORT)
+USE_FAM= yes
+WANT_EXP_MODULES+= vfs_notify_fam
+CONFIGURE_ARGS+= --enable-fam
+.else
+CONFIGURE_ARGS+= --disable-fam
+.endif
+
+.if defined(WITH_ACL_SUPPORT)
+CONFIGURE_ARGS+= --with-acl-support
+.else
+CONFIGURE_ARGS+= --without-acl-support
+.endif
+
+.if defined(WITH_AIO_SUPPORT)
+.if ${OSVERSION} < 700055
+IGNORE= an AIO support requires 7.0-RELEASE or later. Disable AIO support
+.endif
+CONFIGURE_ARGS+= --with-aio-support
+.else
+CONFIGURE_ARGS+= --without-aio-support
+.endif
+
+.if defined(WITH_PAM_SMBPASS)
+CONFIGURE_ARGS+= --with-pam_smbpass
+PLIST_SUB+= SMBPASS=""
+.else
+CONFIGURE_ARGS+= --without-pam_smbpass
+PLIST_SUB+= SMBPASS="@comment "
+.endif
+
+.if defined(WITH_DNSUPDATE)
+. if !defined(WITH_ADS)
+IGNORE= dynamic DNS updates require ADS support. Disable DNSUPDATE support
+. endif
+LIB_DEPENDS+= uuid.1:${PORTSDIR}/misc/e2fsprogs-libuuid
+CONFIGURE_ARGS+= --with-dnsupdate
+.else
+CONFIGURE_ARGS+= --without-dnsupdate
+.endif
+
+.if defined(WITH_DNSSD)
+SAMBA_WANT_PKG_CONFIG= yes
+CPPFLAGS+= `${PKG_CONFIG} --cflags avahi-compat-libdns_sd`
+DNSSD_LIBS= `${PKG_CONFIG} --libs avahi-compat-libdns_sd`
+LIB_DEPENDS+= dns_sd.1:${PORTSDIR}/net/avahi-libdns
+CONFIGURE_ENV+= DNSSD_LIBS="${DNSSD_LIBS}"
+CONFIGURE_ARGS+= --enable-dnssd
+.else
+CONFIGURE_ARGS+= --disable-dnssd
+.endif
+
+.if !defined(WITHOUT_POPT)
+LIB_DEPENDS+= popt.0:${PORTSDIR}/devel/popt
+CONFIGURE_ARGS+= --without-included-popt
+.else
+CONFIGURE_ARGS+= --with-included-popt
+.endif
+
+.if defined(WITH_SMBTORTURE)
+PLIST_SUB+= SMBTORTURE=""
+.else
+PLIST_SUB+= SMBTORTURE="@comment "
+.endif
+# !SAMBA_SUBPORT
+.endif
+
+###
+### Common part for port and it's subports
+###
+
+.if defined(WITH_ADS)
+SAMBA_WANT_LDAP= yes
+SAMBA_WANT_KRB5= yes
+CONFIGURE_ARGS+= --with-ads
+.else
+CONFIGURE_ARGS+= --without-ads
+.endif
+# Kerberos5 is necessary for ADS
+.if defined(SAMBA_WANT_KRB5)
+.if defined(KRB5_HOME) && exists(${KRB5_HOME}/lib/libgssapi_krb5.so)
+CONFIGURE_ARGS+= --with-krb5="${KRB5_HOME}"
+.elif defined(HEIMDAL_HOME) && exists(${HEIMDAL_HOME}/lib/libgssapi.so)
+CONFIGURE_ARGS+= --with-krb5="${HEIMDAL_HOME}"
+.elif exists(/usr/lib/libkrb5.so) && exists(/usr/bin/krb5-config)
+CONFIGURE_ARGS+= --with-krb5="/usr"
+.else
+LIB_DEPENDS+= krb5:${PORTSDIR}/security/heimdal
+CONFIGURE_ARGS+= --with-krb5="${LOCALBASE}"
+.endif
+.else
+CONFIGURE_ARGS+= --without-krb5
+.endif
+
+.if defined(SAMBA_WANT_LDAP)
+USE_OPENLDAP= yes
+CONFIGURE_ARGS+= --with-ldap
+.else
+CONFIGURE_ARGS+= --without-ldap
+.endif
+
+.if defined(SAMBA_WANT_PKG_CONFIG)
+PKG_CONFIG?= ${LOCALBASE}/bin/pkg-config
+CONFIGURE_ENV+= PKG_CONFIG="${PKG_CONFIG}"
+BUILD_DEPENDS+= pkg-config:${PORTSDIR}/devel/pkg-config
+.endif
+
+.if defined(WANT_EXP_MODULES) && !empty(WANT_EXP_MODULES)
+CONFIGURE_ARGS+= --with-shared-modules="${WANT_EXP_MODULES:Q:C/(\\\\ )+/,/g}"
+.endif
+
+.include <bsd.port.pre.mk>
+
+post-patch:
+ @${REINPLACE_CMD} -e 's|%%SAMBA_CONFIG%%|${SAMBA_CONFIG}|g' \
+ ${WRKSRC}/Makefile.in
+###
+### end of common part
+###
+
+.if !defined(SAMBA_SUBPORT)
+# Samba server only
+MAN1= findsmb.1 \
+ ldbadd.1 ldbdel.1 ldbedit.1 ldbmodify.1 ldbrename.1 ldbsearch.1 \
+ log2pcap.1 nmblookup.1 ntlm_auth.1 profiles.1 rpcclient.1 \
+ sharesec.1 smbcacls.1 smbclient.1 smbcontrol.1 smbcquotas.1 \
+ smbget.1 smbstatus.1 smbtar.1 smbtree.1 testparm.1 vfstest.1
+MAN3= ldb.3
+MAN5= lmhosts.5 smb.conf.5 smbgetrc.5 smbpasswd.5
+MAN7= samba.7
+MAN8= eventlogadm.8 net.8 nmbd.8 pdbedit.8 smbd.8 smbpasswd.8 \
+ smbspool.8 tdbbackup.8 tdbdump.8 tdbtool.8 \
+ idmap_nss.8 idmap_tdb.8 idmap_tdb2.8 \
+ vfs_acl_tdb.8 vfs_acl_xattr.8 \
+ vfs_audit.8 vfs_cap.8 vfs_default_quota.8 vfs_extd_audit.8 \
+ vfs_fake_perms.8 vfs_full_audit.8 vfs_netatalk.8 \
+ vfs_preopen.8 \
+ vfs_readahead.8 vfs_readonly.8 vfs_recycle.8 vfs_shadow_copy.8 \
+ vfs_shadow_copy2.8 vfs_smb_traffic_analyzer.8 \
+ vfs_streams_xattr.8 vfs_xattr_tdb.8
+
+.if !defined(WITHOUT_WINBIND)
+MAN1+= wbinfo.1
+MAN7+= winbind_krb5_locator.7
+MAN8+= pam_winbind.8 winbindd.8
+.endif
+
+.if !defined(WITHOUT_SWAT)
+MAN8+= swat.8
+.endif
+
+.if defined(WITH_FAM_SUPPORT)
+MAN8+= vfs_notify_fam.8
+.endif
+
+.if defined(SAMBA_WANT_LDAP)
+MAN8+= idmap_ldap.8
+.endif
+
+.if !empty(WANT_EXP_MODULES:Midmap_ad)
+MAN8+= idmap_ad.8
+.endif
+
+.if !empty(WANT_EXP_MODULES:Midmap_adex)
+MAN8+= idmap_adex.8
+.endif
+
+.if !empty(WANT_EXP_MODULES:Midmap_hash)
+MAN8+= idmap_hash.8
+.endif
+
+.if !empty(WANT_EXP_MODULES:Midmap_rid)
+MAN8+= idmap_rid.8
+.endif
+
+.if !empty(WANT_EXP_MODULES:Mvfs_cacheprime)
+MAN8+= vfs_cacheprime.8
+.endif
+
+.if !empty(WANT_EXP_MODULES:Mvfs_catia)
+MAN8+= vfs_catia.8
+.endif
+
+.if !empty(WANT_EXP_MODULES:Mvfs_commit)
+MAN8+= vfs_commit.8
+.endif
+
+.if !empty(WANT_EXP_MODULES:Mvfs_dirsort)
+MAN8+= vfs_dirsort.8
+.endif
+
+.if !empty(WANT_EXP_MODULES:Mvfs_streams_depot)
+MAN8+= vfs_streams_depot.8
+.endif
+
+PLIST_SUB+= SAMBA_LOGDIR="${SAMBA_LOGDIR}" \
+ SAMBA_LOCKDIR="${SAMBA_LOCKDIR}" \
+ SAMBA_CONFDIR="${SAMBA_CONFDIR}" \
+ SAMBA_CONFIG="${SAMBA_CONFIG}" \
+ SAMBA_RUNDIR="${SAMBA_RUNDIR}" \
+ SAMBA_SWATDIR="${SAMBA_SWATDIR}" \
+ SAMBA_SPOOL="${SAMBA_SPOOL}" \
+ SAMBA_PRIVATEDIR="${SAMBA_PRIVATEDIR}" \
+ PKGCONFIGDIR="${PKGCONFIGDIR_REL}"
+
+SUB_LIST+= SAMBA_LOGDIR="${SAMBA_LOGDIR}" \
+ SAMBA_LOCKDIR="${SAMBA_LOCKDIR}" \
+ SAMBA_CONFDIR="${SAMBA_CONFDIR}" \
+ SAMBA_CONFIG="${SAMBA_CONFIG}" \
+ SAMBA_RUNDIR="${SAMBA_RUNDIR}" \
+ SAMBA_SWATDIR="${SAMBA_SWATDIR}" \
+ SAMBA_SPOOL="${SAMBA_SPOOL}" \
+ SAMBA_PRIVATEDIR="${SAMBA_PRIVATEDIR}"
+
+ALL_TARGET= all
+.if defined(WITH_SMBTORTURE)
+ALL_TARGET+= smbtorture
+.endif
+
+# What will be installed
+INSTALL_TARGET= installservers installbin installscripts installdat \
+ installmodules installlibs
+
+.if !defined(WITHOUT_SWAT)
+INSTALL_TARGET+=installswat
+.endif
+
+.if defined(OPTIONS)
+pre-fetch:
+ @${ECHO_MSG} "===> -------------------------------------------"
+ @${ECHO_MSG} "===> Run 'make config' to (re)configure the port"
+ @${ECHO_MSG} "===> -------------------------------------------"
+.endif
+
+pre-configure:
+ @${FIND} ${WRKDIR}/${DISTNAME} -type d | ${XARGS} ${CHMOD} u+w,a+rx
+ @${FIND} ${WRKDIR}/${DISTNAME} -type f | ${XARGS} ${CHMOD} u+w,a+r
+
+post-configure:
+# It's in another port
+ @${RM} -f ${WRKDIR}/${DISTNAME}/docs/htmldocs/manpages/libsmbclient.7.html
+ @${RM} -rf ${WRKDIR}/${DISTNAME}/examples/libsmbclient
+
+# This would speedup compilation
+.if !defined(WITHOUT_PCH)
+pre-build:
+ cd ${WRKSRC} && ${MAKE} pch
+.endif
+
+pre-install:
+ -@${FIND} "${SAMBA_MODULEDIR}" -type f -o -type l 2>/dev/null | ${SORT} | ${SED} -E 's|^${PREFIX}/?||;' > ${WRKDIR}/.PLIST.exclude
+ @${CAT} ${PKGDIR}/pkg-plist > ${PLIST}
+.if !defined(WITHOUT_SWAT)
+ @${CAT} ${PKGDIR}/pkg-plist.swat >> ${PLIST}
+.endif
+
+post-install:
+.for sect in 1 3 5 7 8
+ @${MKDIR} ${MAN${sect}PREFIX}/man/man${sect}
+. for man in ${MAN${sect}}
+ @${INSTALL_MAN} "${WRKDIR}/${DISTNAME}/docs/manpages/${man}" "${MAN${sect}PREFIX}/man/man${sect}"
+. endfor
+.endfor
+# Put examples in place
+ @${MKDIR} "${EXAMPLESDIR}"
+ @${CP} -Rp ${WRKDIR}/${DISTNAME}/examples/* "${EXAMPLESDIR}"
+.if defined(WITH_PAM_SMBPASS)
+ @${MKDIR} "${EXAMPLESDIR}/pam_smbpass"
+ @${CP} -Rp ${WRKSRC}/pam_smbpass/samples/* "${EXAMPLESDIR}/pam_smbpass"
+.endif
+ ${INSTALL_DATA} "${WRKDIR}/smb.conf.sample" "${EXAMPLESDIR}/${SAMBA_CONFIG}.sample"
+ ${INSTALL_SCRIPT} "${WRKSRC}/script/mksmbpasswd.sh" "${PREFIX}/bin/make_smbpasswd"
+# Winbind
+.if !defined(WITHOUT_WINBIND)
+ ${INSTALL_PROGRAM} "${WRKDIR}/${DISTNAME}/nsswitch/nss_winbind.so" "${SAMBA_LIBDIR}/nss_winbind.so.1"
+ ${INSTALL_PROGRAM} "${WRKDIR}/${DISTNAME}/nsswitch/nss_wins.so" "${SAMBA_LIBDIR}/nss_wins.so.1"
+ ${INSTALL_PROGRAM} "${WRKSRC}/bin/pam_winbind.so" "${SAMBA_LIBDIR}"
+.endif
+.if defined(WITH_PAM_SMBPASS)
+ ${INSTALL_PROGRAM} "${WRKSRC}/bin/pam_smbpass.so" "${SAMBA_LIBDIR}"
+.endif
+# smbtorture
+.if defined(WITH_SMBTORTURE)
+ ${INSTALL_PROGRAM} "${WRKSRC}/bin/smbtorture" "${PREFIX}/bin"
+.endif
+# Lib
+ @${FIND} "${SAMBA_MODULEDIR}" -type f -o -type l | ${SED} -E 's|^${PREFIX}/?||;' | ${EGREP} -F -v -f ${WRKDIR}/.PLIST.exclude | ${SORT} >> ${TMPPLIST}
+ @for d in `${FIND} "${SAMBA_MODULEDIR}" -type d | ${SORT} -r`; do \
+ ${ECHO_CMD} "@unexec ${RMDIR} \"$$d\" 2>/dev/null || true" >> ${TMPPLIST}; \
+ done
+# Documentation
+.if !defined(NOPORTDOCS)
+ @${MKDIR} ${DOCSDIR}
+ @${CP} -Rp "${WRKDIR}/${DISTNAME}/docs/registry" "${DOCSDIR}"
+. for f in Samba3-ByExample.pdf Samba3-HOWTO.pdf Samba3-Developers-Guide.pdf
+ @${INSTALL_DATA} "${WRKDIR}/${DISTNAME}/docs/${f}" "${DOCSDIR}"
+. endfor
+. for f in README COPYING MAINTAINERS PFIF.txt Manifest Roadmap \
+ WHATSNEW.txt docs/THANKS docs/history
+ @${INSTALL_DATA} "${WRKDIR}/${DISTNAME}/${f}" "${DOCSDIR}"
+. endfor
+ @${INSTALL_DATA} "${FILESDIR}/README.FreeBSD" "${DOCSDIR}"
+# !NOPORTDOCS
+.endif
+# Run post-install script
+ @${SH} ${PKGINSTALL} ${PKGNAME} POST-INSTALL
+ @${CAT} ${PKGMESSAGE}
+
+.if defined(WITH_MAX_DEBUG)
+test:
+ (cd ${WRKSRC} && ${GMAKE} test_nss_modules test_pam_modules && ${GMAKE} test)
+.endif
+# !SAMBA_SUBPORT
+.endif
+
+.include <bsd.port.post.mk>
diff --git a/net/samba34/distinfo b/net/samba34/distinfo
new file mode 100644
index 000000000000..7b24ba8af2dd
--- /dev/null
+++ b/net/samba34/distinfo
@@ -0,0 +1,3 @@
+MD5 (samba-3.4.5.tar.gz) = 8e8a484782f2b7716b6c6bd9a7d2bf71
+SHA256 (samba-3.4.5.tar.gz) = 7e4ead58a7c1c0dd1811d6f1df22c6ecf7a1dabf0e46ea7f20a6da9cd457d1ca
+SIZE (samba-3.4.5.tar.gz) = 35377777
diff --git a/net/samba34/files/README.FreeBSD b/net/samba34/files/README.FreeBSD
new file mode 100644
index 000000000000..6070b61c81b7
--- /dev/null
+++ b/net/samba34/files/README.FreeBSD
@@ -0,0 +1,32 @@
+If you want to run this port:
+
+1. Copy /usr/local/etc/smb.conf.default to /usr/local/etc/smb.conf and edit
+ it.
+2. Put string 'samba_enable="YES"' into your /etc/rc.conf.
+3. Run '/usr/local/etc/rc.d/samba start' or reboot.
+
+This port doesn't create 'smbpasswd' file automatically anymore. Users
+are encouraged to use 'tdbsam' backend instead:
+
+ [global]
+ passdb backend = tdbsam, smbpasswd
+
+You can use pdbedit to migrate accounts from 'smbpasswd' to 'tdbsam',
+see the Samba3-HOWTO-Collection.
+
+You still can create 'smbpasswd' file with the supplied 'make_smbpasswd'
+script:
+
+ cat /etc/passwd | grep -v "^#" | make_smbpasswd > smbpasswd
+ chmod 600 smbpasswd
+
+But the usage of it is deprecated.
+
+See document files in /usr/local/share/doc/samba and example config files in
+/usr/local/share/examples/samba for details.
+
+This port doesn't come anymore with the IDEALX Samba LDAP management tools.
+They are a separate port now, net/smbldap-tools. Please, install it, if you
+are going to use Samba LDAP back end.
+
+FreeBSD Samba3 port maintainer: Timur I. Bakeyev <timur@FreeBSD.org>
diff --git a/net/samba34/files/patch-lib__tevent__tevent_signal.c b/net/samba34/files/patch-lib__tevent__tevent_signal.c
new file mode 100644
index 000000000000..6a31808f9eef
--- /dev/null
+++ b/net/samba34/files/patch-lib__tevent__tevent_signal.c
@@ -0,0 +1,11 @@
+--- ./lib/tevent/tevent_signal.c.orig 2010-01-22 02:45:28.000000000 +0100
++++ ./lib/tevent/tevent_signal.c 2010-01-22 02:45:54.000000000 +0100
+@@ -30,7 +30,7 @@
+ #include "tevent_internal.h"
+ #include "tevent_util.h"
+
+-#define NUM_SIGNALS 64
++#define NUM_SIGNALS SIGRTMAX
+
+ /* maximum number of SA_SIGINFO signals to hold in the queue.
+ NB. This *MUST* be a power of 2, in order for the ring buffer
diff --git a/net/samba34/files/patch-nsswitch__pam_winbind.c b/net/samba34/files/patch-nsswitch__pam_winbind.c
new file mode 100644
index 000000000000..5b66ad4ff516
--- /dev/null
+++ b/net/samba34/files/patch-nsswitch__pam_winbind.c
@@ -0,0 +1,89 @@
+--- ./nsswitch/pam_winbind.c.orig 2010-01-18 12:38:09.000000000 +0100
++++ ./nsswitch/pam_winbind.c 2010-01-22 02:42:50.000000000 +0100
+@@ -161,7 +161,6 @@
+ }
+ #endif
+
+-
+ /*
+ * Work around the pam API that has functions with void ** as parameters
+ * These lead to strict aliasing warnings with gcc.
+@@ -171,14 +170,20 @@
+ const void *_item)
+ {
+ const void **item = (const void **)_item;
+- return pam_get_item(pamh, item_type, item);
++ return pam_get_item((pam_handle_t *)pamh, item_type, item);
+ }
++
+ static int _pam_get_data(const pam_handle_t *pamh,
+ const char *module_data_name,
+ const void *_data)
+ {
++#if PAM_GET_DATA_ARG3_CONST_VOID_PP
+ const void **data = (const void **)_data;
+- return pam_get_data(pamh, module_data_name, data);
++ return pam_get_data((pam_handle_t *)pamh, module_data_name, data);
++#else
++ void **data = (void **)_data;
++ return pam_get_data((pam_handle_t *)pamh, module_data_name, data);
++#endif
+ }
+
+ /* some syslogging */
+@@ -309,7 +314,7 @@
+ if (item_type != 0) {
+ pam_get_item(ctx->pamh, item_type, &data);
+ } else {
+- pam_get_data(ctx->pamh, key, &data);
++ _pam_get_data(ctx->pamh, key, data);
+ }
+ if (data != NULL) {
+ const char *type = (item_type != 0) ? "ITEM" : "DATA";
+@@ -1321,12 +1326,12 @@
+ static bool _pam_check_remark_auth_err(struct pwb_context *ctx,
+ const struct wbcAuthErrorInfo *e,
+ const char *nt_status_string,
+- int *pam_error)
++ int *pam_err)
+ {
+ const char *ntstatus = NULL;
+ const char *error_string = NULL;
+
+- if (!e || !pam_error) {
++ if (!e || !pam_err) {
+ return false;
+ }
+
+@@ -1340,18 +1345,18 @@
+ error_string = _get_ntstatus_error_string(nt_status_string);
+ if (error_string) {
+ _make_remark(ctx, PAM_ERROR_MSG, error_string);
+- *pam_error = e->pam_error;
++ *pam_err = e->pam_error;
+ return true;
+ }
+
+ if (e->display_string) {
+ _make_remark(ctx, PAM_ERROR_MSG, e->display_string);
+- *pam_error = e->pam_error;
++ *pam_err = e->pam_error;
+ return true;
+ }
+
+ _make_remark(ctx, PAM_ERROR_MSG, nt_status_string);
+- *pam_error = e->pam_error;
++ *pam_err = e->pam_error;
+
+ return true;
+ }
+@@ -2729,8 +2734,7 @@
+ ret = PAM_USER_UNKNOWN;
+ goto out;
+ case 0:
+- pam_get_data(pamh, PAM_WINBIND_NEW_AUTHTOK_REQD,
+- (const void **)&tmp);
++ _pam_get_data(pamh, PAM_WINBIND_NEW_AUTHTOK_REQD, tmp);
+ if (tmp != NULL) {
+ ret = atoi((const char *)tmp);
+ switch (ret) {
diff --git a/net/samba34/files/patch-nsswitch__wins_freebsd.c b/net/samba34/files/patch-nsswitch__wins_freebsd.c
new file mode 100644
index 000000000000..956fc788cd39
--- /dev/null
+++ b/net/samba34/files/patch-nsswitch__wins_freebsd.c
@@ -0,0 +1,111 @@
+--- ./nsswitch/wins_freebsd.c.orig 2010-01-22 02:42:50.000000000 +0100
++++ ./nsswitch/wins_freebsd.c 2010-01-22 02:42:50.000000000 +0100
+@@ -0,0 +1,108 @@
++/*
++ Unix SMB/CIFS implementation.
++
++ Copyright (C) Timur I. Bakeyev 2007
++
++ This library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Library General Public
++ License as published by the Free Software Foundation; either
++ version 2 of the License, or (at your option) any later version.
++
++ This library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Library General Public License for more details.
++
++ You should have received a copy of the GNU Library General Public
++ License along with this library; if not, write to the
++ Free Software Foundation, Inc., 59 Temple Place - Suite 330,
++ Boston, MA 02111-1307, USA.
++*/
++
++#include "winbind_client.h"
++
++NSS_STATUS _nss_wins_gethostbyname_r(const char *hostname, struct hostent *he,
++ char *buffer, size_t buflen, int *h_errnop);
++NSS_STATUS _nss_wins_gethostbyname2_r(const char *name, int af, struct hostent *he,
++ char *buffer, size_t buflen, int *h_errnop);
++
++NSS_METHOD_PROTOTYPE(__nss_wins_freebsd_gethostbyname_r);
++NSS_METHOD_PROTOTYPE(__nss_wins_freebsd_gethostbyname2_r);
++
++static ns_mtab methods[] =
++{
++ { NSDB_HOSTS, "getaddrinfo", NULL, NULL },
++ { NSDB_HOSTS, "ghbyname", NULL, NULL },
++ { NSDB_HOSTS, "ghbyaddr", NULL, NULL },
++ { NSDB_HOSTS, "gethostbyaddr_r", __nss_wins_freebsd_gethostbyname_r, _nss_wins_gethostbyname_r },
++ { NSDB_HOSTS, "gethostbyname2_r", __nss_wins_freebsd_gethostbyname2_r, _nss_wins_gethostbyname2_r },
++ { NSDB_HOSTS, "getnetbyname_r", NULL, NULL },
++ { NSDB_HOSTS, "getnetbyaddr_r", NULL, NULL },
++ { NSDB_HOSTS, "gethostbyname", NULL, NULL },
++ { NSDB_HOSTS, "gethostbyaddr", NULL, NULL },
++ { NSDB_HOSTS, "getnetbyname", NULL, NULL },
++ { NSDB_HOSTS, "getnetbyaddr", NULL, NULL }
++};
++
++int
++__nss_wins_freebsd_gethostbyname_r(void *retval, void *mdata, va_list ap)
++{
++ int (*fn)(const char *, struct hostent *, char *, size_t, int *);
++ const char *hostname;
++ struct hostent *he;
++ char *buffer;
++ size_t buflen;
++ int *h_errnop;
++ enum nss_status status;
++
++ fn = mdata;
++ hostname = va_arg(ap, const char *);
++ he = va_arg(ap, struct hostent *);
++ buffer = va_arg(ap, char *);
++ buflen = va_arg(ap, size_t);
++ h_errnop = va_arg(ap, int *);
++
++ status = fn(hostname, he, buffer, buflen, h_errnop);
++ status = __nss_compat_result(status, *h_errnop);
++ if (status == NS_SUCCESS)
++ *(struct hostent **)retval = he;
++
++ return (status);
++}
++
++int
++__nss_wins_freebsd_gethostbyname2_r(void *retval, void *mdata, va_list ap)
++{
++ int (*fn)(const char *, int, struct hostent *, char *, size_t, int *);
++ const char *hostname;
++ int af;
++ struct hostent *he;
++ char *buffer;
++ size_t buflen;
++ int *h_errnop;
++ enum nss_status status;
++
++ fn = mdata;
++ hostname = va_arg(ap, const char *);
++ af = va_arg(ap, int);
++ he = va_arg(ap, struct hostent *);
++ buffer = va_arg(ap, char *);
++ buflen = va_arg(ap, size_t);
++ h_errnop = va_arg(ap, int *);
++
++ status = fn(hostname, af, he, buffer, buflen, h_errnop);
++ status = __nss_compat_result(status, *h_errnop);
++ if (status == NS_SUCCESS)
++ *(struct hostent **)retval = he;
++
++ return (status);
++}
++
++ns_mtab *
++nss_module_register(const char *source __unused, unsigned int *mtabsize,
++ nss_module_unregister_fn *unreg)
++{
++ *mtabsize = sizeof(methods) / sizeof(methods[0]);
++ *unreg = NULL;
++ return (methods);
++}
diff --git a/net/samba34/files/patch-source3__Makefile.in b/net/samba34/files/patch-source3__Makefile.in
new file mode 100644
index 000000000000..4a67d137a0f5
--- /dev/null
+++ b/net/samba34/files/patch-source3__Makefile.in
@@ -0,0 +1,56 @@
+--- ./source3/Makefile.in.orig 2010-01-18 12:38:09.000000000 +0100
++++ ./source3/Makefile.in 2010-01-22 02:42:51.000000000 +0100
+@@ -851,6 +851,7 @@
+ PAM_WINBIND_OBJ = ../nsswitch/pam_winbind.o localedir.o $(WBCOMMON_OBJ) \
+ $(LIBREPLACE_OBJ) @BUILD_INIPARSER@
+
++
+ LIBSMBCLIENT_OBJ0 = \
+ libsmb/libsmb_cache.o \
+ libsmb/libsmb_compat.o \
+@@ -1028,7 +1029,7 @@
+ $(LIBSAMBA_OBJ) \
+ $(POPT_LIB_OBJ)
+
+-TALLOCTORT_OBJ = @tallocdir@/testsuite.o @tallocdir@/testsuite_main.o \
++TALLOCTORT_OBJ = ../lib/talloc/testsuite.o ../lib/talloc/testsuite_main.o \
+ $(PARAM_OBJ) $(LIB_NONSMBD_OBJ) $(LIBSAMBA_OBJ)
+
+ REPLACETORT_OBJ = @libreplacedir@/test/testsuite.o \
+@@ -1281,6 +1282,7 @@
+
+ .SUFFIXES:
+ .SUFFIXES: .c .o .lo
++.SUFFIXES: .h .h.gch
+
+ .PHONY: showflags SHOWFLAGS
+
+@@ -1342,6 +1344,9 @@
+ $(COMPILE_CC) >/dev/null 2>&1
+ @BROKEN_CC@ -mv `echo $@ | sed 's%^.*/%%g'` $@
+
++.h.h.gch:
++ @echo Compiling $*.h
++
+ PRECOMPILED_HEADER = $(builddir)/include/includes.h.gch
+
+ # this adds support for precompiled headers. To use it, install a snapshot
+@@ -2705,7 +2710,8 @@
+ @echo "Linking shared library $@"
+ @$(SHLD) $(LDSHFLAGS) -o $@ $(PAM_SMBPASS_OBJ) -lpam $(DYNEXP) \
+ $(LIBS) $(LDAP_LIBS) $(NSCD_LIBS) \
+- $(LIBTALLOC_LIBS) $(LIBTDB_LIBS) $(LIBWBCLIENT_LIBS)
++ $(LIBTALLOC_LIBS) $(LIBTDB_LIBS) $(LIBWBCLIENT_LIBS) \
++ @SONAMEFLAG@`basename $@`
+
+ bin/tdbbackup@EXEEXT@: $(BINARY_PREREQS) $(TDBBACKUP_OBJ) @LIBTALLOC_TARGET@ @LIBTDB_TARGET@
+ @echo Linking $@
+@@ -3028,7 +3034,7 @@
+ @$(LIB_PATH_VAR)=./bin && \
+ export $(LIB_PATH_VAR) && \
+ for module in $(PAM_MODULES); do \
+- ./script/tests/dlopen.sh -lpam -ldl bin/$${module}.@SHLIBEXT@ \
++ ./script/tests/dlopen.sh -lpam bin/$${module}.@SHLIBEXT@ \
+ || exit 1; \
+ done
+
diff --git a/net/samba34/files/patch-source3__configure.in b/net/samba34/files/patch-source3__configure.in
new file mode 100644
index 000000000000..fcd1013fed13
--- /dev/null
+++ b/net/samba34/files/patch-source3__configure.in
@@ -0,0 +1,214 @@
+--- ./source3/configure.in.orig 2010-01-18 12:38:09.000000000 +0100
++++ ./source3/configure.in 2010-01-22 02:42:50.000000000 +0100
+@@ -210,16 +210,6 @@
+ fi
+ fi
+
+-AC_ARG_ENABLE(dmalloc, [AS_HELP_STRING([--enable-dmalloc], [Enable heap debugging [default=no]])])
+-
+-if test "x$enable_dmalloc" = xyes
+-then
+- AC_DEFINE(ENABLE_DMALLOC, 1, [Define to turn on dmalloc debugging])
+- AC_DEFINE(DMALLOC_FUNC_CHECK, 1,
+- [Define to check invariants around some common functions])
+- LIBS="$LIBS -ldmalloc"
+-fi
+-
+ #################################################
+ # check for a shared memory profiling support
+ AC_MSG_CHECKING(whether to use profiling)
+@@ -1747,9 +1737,6 @@
+ AC_MSG_CHECKING([PICFLAG])
+ AC_MSG_RESULT([$PICFLAG])
+
+-AC_MSG_CHECKING([NSSSONAMEVERSIONSUFFIX])
+-AC_MSG_RESULT([$NSSSONAMEVERSIONSUFFIX])
+-
+ AC_CACHE_CHECK([whether building shared libraries actually works],
+ [ac_cv_shlib_works],[
+ # try building a trivial shared library
+@@ -3959,10 +3946,10 @@
+
+ ################################################################
+ # first test for Active Directory support being enabled
+- #if test x"$with_ads_support" = x"no"; then
+- # AC_MSG_ERROR(Active Directory support is required to enable DNS Update support)
+- # with_dnsupdate_support=no
+- #fi
++ if test x"$with_ads_support" = x"no"; then
++ AC_MSG_ERROR(Active Directory support is required to enable DNS Update support)
++ with_dnsupdate_support=no
++ fi
+ ##################################################################
+ # then test for uuid.h (necessary to generate unique DNS keynames
+ # (uuid.h is required for this test)
+@@ -4179,15 +4166,51 @@
+ x"$ac_cv_header_pam_pam_modules_h" = x"no" ; then
+ if test x"${try_pam}" = x"yes";then
+ AC_MSG_ERROR([--with-pam=yes but pam_modules.h not found])
+- fi
++ fi
+ create_pam_modules=no
+- fi
++ fi
+
+ if test x"$use_pam" = x"yes"; then
+- AC_DEFINE(WITH_PAM,1,[Whether to include PAM support])
++ AC_DEFINE(WITH_PAM,1,[Whether to include PAM support])
+ AC_DEFINE(HAVE_LIBPAM,1,[Whether libpam is available])
+ AUTH_LIBS="$AUTH_LIBS $PAM_LIBS"
+- with_pam_for_crypt=yes
++ with_pam_for_crypt=yes
++
++ AC_VERIFY_C_PROTOTYPE(
++ [int pam_get_data(const pam_handle_t *pamh, const char *module_data_name, const void **data)],
++ [return 0;],
++ [AC_DEFINE(PAM_GET_DATA_ARG3_CONST_VOID_PP, 1, [Whether pam_get_data 3 argument is a const pointer to pointer])],
++ [
++ dnl Old OpenPAM declaration
++ AC_VERIFY_C_PROTOTYPE(
++ [int pam_get_data(pam_handle_t *pamh, const char *module_data_name, void **data)],
++ [return 0;],
++ [AC_DEFINE(PAM_GET_DATA_ARG3_VOID_PP, 1, [Whether pam_get_data 3 argument is a void pointer to pointer])],
++ [], [
++ #include <sys/types.h>
++ #if HAVE_SECURITY_PAM_APPL_H
++ #include <security/pam_appl.h>
++ #endif
++ #if HAVE_PAM_PAM_APPL_H
++ #include <pam/pam_appl.h>
++ #endif
++ #if HAVE_SECURITY_PAM_MODULES_H
++ #include <security/pam_modules.h>
++ #endif
++ ]
++ )],[
++ #include <sys/types.h>
++ #if HAVE_SECURITY_PAM_APPL_H
++ #include <security/pam_appl.h>
++ #endif
++ #if HAVE_PAM_PAM_APPL_H
++ #include <pam/pam_appl.h>
++ #endif
++ #if HAVE_SECURITY_PAM_MODULES_H
++ #include <security/pam_modules.h>
++ #endif
++ ]
++ )
+
+ if test x"$create_pam_modules" = x"yes"; then
+ AC_DEFINE(WITH_PAM_MODULES,1,[Whether to include PAM MODULES support])
+@@ -4197,7 +4220,7 @@
+ AC_CHECK_HEADERS(pam/pam_ext.h pam/_pam_macros.h)
+ AC_CHECK_FUNC_EXT(pam_vsyslog,$PAM_LIBS)
+ else
+- AC_MSG_WARN([PAM support detected but PAM MODULES support is missing])
++ AC_MSG_WARN([PAM support detected but PAM MODULES support is missing])
+ fi
+ fi
+ AC_MSG_CHECKING(whether to use PAM support)
+@@ -5794,6 +5817,7 @@
+ NSSSONAMEVERSIONSUFFIX=".1"
+ WINBIND_NSS_EXTRA_OBJS="../nsswitch/winbind_nss_freebsd.o \
+ ../nsswitch/winbind_nss_linux.o"
++ WINBIND_WINS_NSS_EXTRA_OBJS="nsswitch/wins_freebsd.o"
+ WINBIND_NSS="../nsswitch/nss_winbind.$SHLIBEXT"
+ WINBIND_WINS_NSS="../nsswitch/nss_wins.$SHLIBEXT"
+ ;;
+@@ -5886,17 +5910,10 @@
+ AC_DEFINE(WITH_WINBIND,1,[Whether to link to wbclient])
+ EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo\$(EXEEXT)"
+ else
+- if test x"$enable_developer" = x"yes" -a x"$LINK_LIBWBCLIENT" = x"STATIC" ; then
+- BUILD_LIBWBCLIENT_SHARED=no
+- else
+- BUILD_LIBWBCLIENT_SHARED=yes
+- fi
+-
+ LIBWBCLIENT_SHARED_TARGET=bin/libwbclient.$SHLIBEXT
+ LIBWBCLIENT_STATIC_TARGET=bin/libwbclient.a
+ LIBWBCLIENT_SOVER=0
+ if test $BLDSHARED = true -a x"$HAVE_WINBIND" = x"yes" -a x"$BUILD_LIBWBCLIENT_SHARED" = x"yes"; then
+- NSS_MODULES="${WINBIND_NSS} ${WINBIND_WINS_NSS}"
+ ## Only worry about libwbclient if we have shared
+ # library support
+ LIBWBCLIENT_SHARED=$LIBWBCLIENT_SHARED_TARGET
+@@ -5918,26 +5935,34 @@
+
+ EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo\$(EXEEXT)"
+ EXTRA_SBIN_PROGS="$EXTRA_SBIN_PROGS bin/winbindd\$(EXEEXT)"
+- if test $BLDSHARED = true -a x"$create_pam_modules" = x"yes"; then
++ if test $BLDSHARED = true; then
++ NSS_MODULES="${WINBIND_NSS} ${WINBIND_WINS_NSS}"
++ if test x"$create_pam_modules" = x"yes"; then
+ PAM_MODULES="$PAM_MODULES pam_winbind"
+ INSTALL_PAM_MODULES="installpammodules"
+ UNINSTALL_PAM_MODULES="uninstallpammodules"
++ fi
+ fi
+ else
+ AC_MSG_RESULT(no$winbind_no_reason)
+ fi
+
+-AC_CHECK_LIB(pthread, pthread_mutex_lock, [WINBIND_NSS_PTHREAD="-lpthread"
++AC_MSG_CHECKING([NSSSONAMEVERSIONSUFFIX])
++AC_MSG_RESULT([$NSSSONAMEVERSIONSUFFIX])
++
++AC_CHECK_LIB(pthread, pthread_mutex_lock, [WINBIND_NSS_PTHREAD="${PTHREAD_LIBS}"
+ AC_DEFINE(HAVE_PTHREAD, 1, [whether pthread exists])])
+
+ AC_SUBST(WINBIND_NSS_PTHREAD)
+ AC_SUBST(WINBIND_NSS)
+-AC_SUBST(WINBIND_WINS_NSS)
+ AC_SUBST(WINBIND_NSS_LDSHFLAGS)
+ AC_SUBST(WINBIND_NSS_EXTRA_OBJS)
+ AC_SUBST(WINBIND_NSS_EXTRA_LIBS)
+-AC_SUBST(NSSSONAMEVERSIONSUFFIX)
+ AC_SUBST(PAM_WINBIND_EXTRA_LIBS)
++AC_SUBST(WINBIND_WINS_NSS)
++AC_SUBST(WINBIND_WINS_NSS_EXTRA_OBJS)
++AC_SUBST(WINBIND_WINS_NSS_EXTRA_LIBS)
++AC_SUBST(NSSSONAMEVERSIONSUFFIX)
+
+ AC_SUBST(WINBIND_KRB5_LOCATOR)
+
+@@ -6129,13 +6154,21 @@
+ # Start
+ AC_CHECK_FUNC(getmntent)
+
+-AC_CHECK_HEADERS(sys/statfs.h)
++AC_CHECK_HEADERS(sys/statfs.h sys/mount.h)
+
+ AC_MSG_CHECKING([vfs_fileid: checking for statfs() and struct statfs.f_fsid)])
+ AC_CACHE_VAL(vfsfileid_cv_statfs,[
+ AC_TRY_RUN([
+ #include <sys/types.h>
++ #ifdef HAVE_SYS_PARAM_H
++ #include <sys/param.h>
++ #endif
++ #ifdef HAVE_SYS_MOUNT_H
++ #include <sys/mount.h>
++ #endif
++ #ifdef HAVE_SYS_STATFS_H
+ #include <sys/statfs.h>
++ #endif
+ int main(void)
+ {
+ struct statfs fsd;
+@@ -6447,6 +6480,16 @@
+ CFLAGS="-I../lib/zlib $CFLAGS"
+ ])
+
++AC_ARG_ENABLE(dmalloc, [AS_HELP_STRING([--enable-dmalloc], [Enable heap debugging [default=no]])])
++
++if test "x$enable_dmalloc" = xyes
++then
++ AC_DEFINE(ENABLE_DMALLOC, 1, [Define to turn on dmalloc debugging])
++ AC_DEFINE(DMALLOC_FUNC_CHECK, 1,
++ [Define to check invariants around some common functions])
++ LIBS="$LIBS -ldmalloc"
++fi
++
+ dnl Remove -L/usr/lib/? from LDFLAGS and LIBS
+ LIB_REMOVE_USR_LIB(LDFLAGS)
+ LIB_REMOVE_USR_LIB(LIBS)
diff --git a/net/samba34/files/patch-source3__include__includes.h b/net/samba34/files/patch-source3__include__includes.h
new file mode 100644
index 000000000000..d63e88c69868
--- /dev/null
+++ b/net/samba34/files/patch-source3__include__includes.h
@@ -0,0 +1,22 @@
+--- ./source3/include/includes.h.orig 2010-01-18 12:38:09.000000000 +0100
++++ ./source3/include/includes.h 2010-01-22 02:42:50.000000000 +0100
+@@ -222,6 +222,10 @@
+ #include <sys/uio.h>
+ #endif
+
++#ifdef HAVE_SYS_SYSCTL_H
++#include <sys/sysctl.h>
++#endif
++
+ #if HAVE_LANGINFO_H
+ #include <langinfo.h>
+ #endif
+@@ -756,7 +760,7 @@
+ #endif
+
+ #ifndef SIGRTMIN
+-#define SIGRTMIN 32
++#define SIGRTMIN NSIG
+ #endif
+
+ #ifndef MAP_FILE
diff --git a/net/samba34/files/patch-source3__lib__fault.c b/net/samba34/files/patch-source3__lib__fault.c
new file mode 100644
index 000000000000..a48207eb2376
--- /dev/null
+++ b/net/samba34/files/patch-source3__lib__fault.c
@@ -0,0 +1,164 @@
+--- ./source3/lib/fault.c.orig 2010-01-18 12:38:09.000000000 +0100
++++ ./source3/lib/fault.c 2010-01-22 02:42:50.000000000 +0100
+@@ -25,6 +25,10 @@
+ #endif
+
+
++#ifdef HAVE_SYS_SYSCTL_H
++#include <sys/sysctl.h>
++#endif
++
+ #ifdef HAVE_SYS_PRCTL_H
+ #include <sys/prctl.h>
+ #endif
+@@ -143,52 +147,93 @@
+ * before dump_core() calls abort.
+ */
+ #if (defined(FREEBSD) && defined(HAVE_SYSCTLBYNAME))
+-static char *get_freebsd_corepath(void)
++/*
++ * Expand the name described in corefilename, using name, uid, and pid.
++ * corefilename is a printf-like string, with three format specifiers:
++ * %N name of process ("name")
++ * %P process id (pid)
++ * %U user id (uid)
++ * For example, "%N.core" is the default; they can be disabled completely
++ * by using "/dev/null", or all core files can be stored in "/cores/%U/%N-%P".
++ */
++static char *get_freebsd_corepath(const char *name)
+ {
+- char *tmp_corepath = NULL;
+- char *end = NULL;
+- size_t len = 128;
++ TALLOC_CTX *tmp_ctx;
++ char format[MAXPATHLEN];
++ char *freebsd_corepath = NULL, *buffer = NULL;
++ char *start, *end;
++ size_t len;
+ int ret;
+
+- /* Loop with increasing sizes so we don't allocate too much. */
+- do {
+- if (len > 1024) {
+- goto err_out;
+- }
+-
+- tmp_corepath = (char *)talloc_realloc(NULL, tmp_corepath,
+- char, len);
+- if (!tmp_corepath) {
+- return NULL;
+- }
+-
+- ret = sysctlbyname("kern.corefile", tmp_corepath, &len, NULL,
+- 0);
+- if (ret == -1) {
+- if (errno != ENOMEM) {
+- DEBUG(0, ("sysctlbyname failed getting "
+- "kern.corefile %s\n",
+- strerror(errno)));
+- goto err_out;
+- }
+-
+- /* Not a large enough array, try a bigger one. */
+- len = len << 1;
+- }
+- } while (ret == -1);
+-
++ len = sizeof(format);
++ /* Read format string */
++ if((ret = sysctlbyname("kern.corefile", format, &len, NULL, 0)) == -1) {
++ return NULL;
++ }
+ /* Strip off the common filename expansion */
+- if ((end = strrchr_m(tmp_corepath, '/'))) {
++ if ((end=strrchr_m(format, '/')) != NULL) {
+ *end = '\0';
+ }
++ /* Core file is relative to the cwd */
++ if(!format[0] || format[0] != '/') {
++ return NULL;
++ }
+
+- return tmp_corepath;
+-
+- err_out:
+- if (tmp_corepath) {
+- talloc_free(tmp_corepath);
++ if((tmp_ctx = talloc_new(NULL)) == NULL) {
++ DEBUG(0, ("talloc_new failed\n"));
++ return NULL;
+ }
+- return NULL;
++ if((buffer = talloc_strdup(tmp_ctx, "")) == NULL) {
++ DEBUG(0, ("talloc_strdup: Out of memory!\n"));
++ goto failed;
++ }
++ /* Parse format string and expand variables */
++ start = format;
++ while((end=strchr_m(start, '%')) != NULL) {
++ /* Copy part of the string without format arguments */
++ if(end != start) {
++ buffer = talloc_strndup_append_buffer(buffer, start, end - start);
++ if(buffer == NULL) {
++ DEBUG(0, ("talloc_strdup: Out of memory!\n"));
++ goto failed;
++ }
++ }
++ start = end + 1;
++ switch (*start) {
++ case '%':
++ buffer = talloc_strdup_append_buffer(buffer, "%%");
++ break;
++ case 'N': /* process name */
++ buffer = talloc_asprintf_append_buffer(buffer, "%s", name);
++ break;
++ case 'P': /* process id */
++ buffer = talloc_asprintf_append_buffer(buffer, "%u", getpid());
++ break;
++ case 'U': /* user id */
++ buffer = talloc_asprintf_append_buffer(buffer, "%u", getuid());
++ break;
++ default:
++ DEBUG(0,(
++ "Unknown format character %c in "
++ "corename `%s'\n", *start, format));
++ }
++ if(buffer == NULL) {
++ DEBUG(0, ("talloc_asprintf_append_buffer: Out of memory!\n"));
++ goto failed;
++ }
++ start++;
++ }
++ /* Copy remaining part, if any */
++ if((buffer = talloc_strdup_append_buffer(buffer, start)) == NULL) {
++ DEBUG(0, ("talloc_strdup_append_buffer: Out of memory!\n"));
++ goto failed;
++ }
++ /* Duplicate assembled string in the unattached contenxt */
++ freebsd_corepath = talloc_strdup(NULL, buffer);
++failed:
++ TALLOC_FREE(tmp_ctx);
++
++ return freebsd_corepath;
+ }
+ #endif
+
+@@ -204,8 +249,7 @@
+ /* @todo: Add support for the linux corepath. */
+
+ char *tmp_corepath = NULL;
+- tmp_corepath = get_freebsd_corepath();
+-
++ tmp_corepath = get_freebsd_corepath(progname);
+ /* If this has been set correctly, we're done. */
+ if (tmp_corepath) {
+ return tmp_corepath;
+@@ -281,7 +325,7 @@
+ SAFE_FREE(logbase);
+ }
+
+- void dump_core(void)
++void dump_core(void)
+ {
+ static bool called;
+
diff --git a/net/samba34/files/patch-source3__m4__aclocal.m4 b/net/samba34/files/patch-source3__m4__aclocal.m4
new file mode 100644
index 000000000000..095316e0d0b4
--- /dev/null
+++ b/net/samba34/files/patch-source3__m4__aclocal.m4
@@ -0,0 +1,180 @@
+--- ./source3/m4/aclocal.m4.orig 2010-01-18 12:38:09.000000000 +0100
++++ ./source3/m4/aclocal.m4 2010-01-22 02:42:50.000000000 +0100
+@@ -99,14 +99,14 @@
+ build_lib=yes
+ ;;
+ *)
+- AC_MSG_RESULT(yes)
++ AC_MSG_RESULT(no)
+ build_lib=no
+ ;;
+ esac
+ ],
+ [
+ # if unspecified, default is not to build
+-AC_MSG_RESULT(yes)
++AC_MSG_RESULT(no)
+ build_lib=no
+ ]
+ )
+@@ -429,104 +429,81 @@
+ dnl those with the standalone portable libiconv installed).
+ AC_MSG_CHECKING(for iconv in $1)
+ jm_cv_func_iconv="no"
++ jm_cv_include=""
+ jm_cv_lib_iconv=""
+- jm_cv_giconv=no
++ jm_cv_giconv="no"
+ jm_save_LIBS="$LIBS"
+
+- dnl Check for include in giconv.h but no lib needed
+- if test "$jm_cv_func_iconv" != yes; then
+- AC_TRY_LINK([#include <stdlib.h>
++ dnl Check for include in funny place but no lib needed
++ if test "$jm_cv_func_iconv" != yes; then
++ AC_TRY_LINK([#include <stdlib.h>
+ #include <giconv.h>],
+ [iconv_t cd = iconv_open("","");
+ iconv(cd,NULL,NULL,NULL,NULL);
+ iconv_close(cd);],
+- jm_cv_func_iconv=yes
+- jm_cv_include="giconv.h"
+- jm_cv_giconv="yes"
+- jm_cv_lib_iconv="")
++ jm_cv_func_iconv=yes
++ jm_cv_include="giconv.h"
++ jm_cv_lib_iconv=""
++ jm_cv_giconv="yes")
+
+- dnl Standard iconv.h include, lib in glibc or libc ...
+- if test "$jm_cv_func_iconv" != yes; then
+- AC_TRY_LINK([#include <stdlib.h>
++ dnl Standard iconv.h include, lib in glibc or libc ...
++ if test "$jm_cv_func_iconv" != yes; then
++ AC_TRY_LINK([#include <stdlib.h>
+ #include <iconv.h>],
+- [iconv_t cd = iconv_open("","");
++ [iconv_t cd = iconv_open("","");
+ iconv(cd,NULL,NULL,NULL,NULL);
+ iconv_close(cd);],
+- jm_cv_include="iconv.h"
+- jm_cv_func_iconv=yes
+- jm_cv_lib_iconv="")
++ jm_cv_func_iconv=yes
++ jm_cv_include="iconv.h"
++ jm_cv_lib_iconv="")
+
+- dnl Include in giconv.h, libgiconv needed to link
+- if test "$jm_cv_func_iconv" != yes; then
+- jm_save_LIBS="$LIBS"
+- LIBS="$LIBS -lgiconv"
+- AC_TRY_LINK([#include <stdlib.h>
++ dnl Include in giconv.h, libgiconv needed to link
++ if test "$jm_cv_func_iconv" != yes; then
++ jm_save_LIBS="$LIBS"
++ LIBS="$LIBS -lgiconv"
++ AC_TRY_LINK([#include <stdlib.h>
+ #include <giconv.h>],
+- [iconv_t cd = iconv_open("","");
++ [iconv_t cd = iconv_open("","");
+ iconv(cd,NULL,NULL,NULL,NULL);
+ iconv_close(cd);],
+- jm_cv_lib_iconv=yes
+ jm_cv_func_iconv=yes
+ jm_cv_include="giconv.h"
+- jm_cv_giconv=yes
+- jm_cv_lib_iconv="giconv")
++ jm_cv_lib_iconv="giconv"
++ jm_cv_giconv=yes)
+
+- LIBS="$jm_save_LIBS"
++ LIBS="$jm_save_LIBS"
+
+- dnl Include in iconv.h, libiconv needed to link
+- if test "$jm_cv_func_iconv" != yes; then
+- jm_save_LIBS="$LIBS"
+- LIBS="$LIBS -liconv"
+- AC_TRY_LINK([#include <stdlib.h>
++ dnl Include in iconv.h, libiconv needed to link
++ if test "$jm_cv_func_iconv" != yes; then
++ jm_save_LIBS="$LIBS"
++ LIBS="$LIBS -liconv"
++ AC_TRY_LINK([#include <stdlib.h>
+ #include <iconv.h>],
+- [iconv_t cd = iconv_open("","");
+- iconv(cd,NULL,NULL,NULL,NULL);
+- iconv_close(cd);],
+- jm_cv_include="iconv.h"
+- jm_cv_func_iconv=yes
+- jm_cv_lib_iconv="iconv")
+- LIBS="$jm_save_LIBS"
+-
+- dnl Include in biconv.h, libbiconv needed to link
+- if test "$jm_cv_func_iconv" != yes; then
+- jm_save_LIBS="$LIBS"
+- LIBS="$LIBS -lbiconv"
+- AC_TRY_LINK([#include <stdlib.h>
+-#include <biconv.h>],
+- [iconv_t cd = iconv_open("","");
+- iconv(cd,NULL,NULL,NULL,NULL);
+- iconv_close(cd);],
+- jm_cv_lib_iconv=yes
+- jm_cv_func_iconv=yes
+- jm_cv_include="biconv.h"
+- jm_cv_biconv=yes
+- jm_cv_lib_iconv="biconv")
++ [iconv_t cd = iconv_open("","");
++ iconv(cd,NULL,NULL,NULL,NULL);
++ iconv_close(cd);],
++ jm_cv_func_iconv=yes
++ jm_cv_include="iconv.h"
++ jm_cv_lib_iconv="iconv")
+
+- LIBS="$jm_save_LIBS"
+- fi
+- fi
++ LIBS="$jm_save_LIBS"
++ fi
++ fi
+ fi
+ fi
+- fi
+- if test "$jm_cv_func_iconv" = yes; then
+- if test "$jm_cv_giconv" = yes; then
+- AC_DEFINE(HAVE_GICONV, 1, [What header to include for iconv() function: giconv.h])
+- AC_MSG_RESULT(yes)
+- ICONV_FOUND=yes
+- else
+- if test "$jm_cv_biconv" = yes; then
+- AC_DEFINE(HAVE_BICONV, 1, [What header to include for iconv() function: biconv.h])
+- AC_MSG_RESULT(yes)
+- ICONV_FOUND=yes
++ if test "$jm_cv_func_iconv" = yes; then
++ if test "$jm_cv_giconv" = yes; then
++ AC_DEFINE(HAVE_GICONV, 1, [What header to include for iconv() function: giconv.h])
++ AC_MSG_RESULT(yes)
++ ICONV_FOUND=yes
+ else
+ AC_DEFINE(HAVE_ICONV, 1, [What header to include for iconv() function: iconv.h])
+ AC_MSG_RESULT(yes)
+ ICONV_FOUND=yes
+ fi
++ else
++ AC_MSG_RESULT(no)
+ fi
+- else
+- AC_MSG_RESULT(no)
+- fi
+ ])
+
+ AC_DEFUN(rjs_CHARSET,[
+@@ -831,6 +808,9 @@
+ #include <fcntl.h>
+ #include <signal.h>
+
++#ifndef SIGRTMIN
++#define SIGRTMIN NSIG
++#endif
+ /* from smbd/notify_kernel.c */
+ #ifndef RT_SIGNAL_NOTIFY
+ #define RT_SIGNAL_NOTIFY (SIGRTMIN+2)
diff --git a/net/samba34/files/patch-source3__script__tests__dlopen.sh b/net/samba34/files/patch-source3__script__tests__dlopen.sh
new file mode 100644
index 000000000000..a65db7a2e22b
--- /dev/null
+++ b/net/samba34/files/patch-source3__script__tests__dlopen.sh
@@ -0,0 +1,11 @@
+--- ./source3/script/tests/dlopen.sh.orig 2010-01-18 12:38:09.000000000 +0100
++++ ./source3/script/tests/dlopen.sh 2010-01-22 02:42:50.000000000 +0100
+@@ -67,7 +67,7 @@
+ esac
+ done
+
+-${CC:-gcc} $RPM_OPT_FLAGS $CFLAGS -o $tempdir/dlopen $cflags $tempdir/dlopen.c $ldflags -ldl
++${CC:-gcc} $RPM_OPT_FLAGS $CFLAGS -o $tempdir/dlopen $cflags $tempdir/dlopen.c $ldflags
+
+ retval=0
+ for module in $modules ; do
diff --git a/net/samba34/files/patch-source3__smbd__aio.c b/net/samba34/files/patch-source3__smbd__aio.c
new file mode 100644
index 000000000000..ce644b5b20c4
--- /dev/null
+++ b/net/samba34/files/patch-source3__smbd__aio.c
@@ -0,0 +1,12 @@
+--- ./source3/smbd/aio.c.orig 2010-01-18 12:38:09.000000000 +0100
++++ ./source3/smbd/aio.c 2010-01-22 02:42:50.000000000 +0100
+@@ -25,9 +25,6 @@
+
+ /* The signal we'll use to signify aio done. */
+ #ifndef RT_SIGNAL_AIO
+-#ifndef SIGRTMIN
+-#define SIGRTMIN NSIG
+-#endif
+ #define RT_SIGNAL_AIO (SIGRTMIN+3)
+ #endif
+
diff --git a/net/samba34/files/patch-source3__smbd__quotas.c b/net/samba34/files/patch-source3__smbd__quotas.c
new file mode 100644
index 000000000000..70b540720e31
--- /dev/null
+++ b/net/samba34/files/patch-source3__smbd__quotas.c
@@ -0,0 +1,19 @@
+--- ./source3/smbd/quotas.c.orig 2010-01-18 12:38:09.000000000 +0100
++++ ./source3/smbd/quotas.c 2010-01-22 02:42:50.000000000 +0100
+@@ -1035,6 +1035,7 @@
+ if (!cutstr)
+ return False;
+
++ memset(&D, '\0', sizeof(D));
+ memset(cutstr, '\0', len+1);
+ host = strncat(cutstr,mnttype, sizeof(char) * len );
+ DEBUG(5,("nfs_quotas: looking for mount on \"%s\"\n", cutstr));
+@@ -1043,7 +1044,7 @@
+ args.gqa_pathp = testpath+1;
+ args.gqa_uid = uid;
+
+- DEBUG(5,("nfs_quotas: Asking for host \"%s\" rpcprog \"%i\" rpcvers \"%i\" network \"%s\"\n", host, RQUOTAPROG, RQUOTAVERS, "udp"));
++ DEBUG(5,("nfs_quotas: Asking for host \"%s\" rpcprog \"%lu\" rpcvers \"%lu\" network \"%s\"\n", host, RQUOTAPROG, RQUOTAVERS, "udp"));
+
+ if ((clnt = clnt_create(host, RQUOTAPROG, RQUOTAVERS, "udp")) == NULL) {
+ ret = False;
diff --git a/net/samba34/files/patch-source3__smbd__statvfs.c b/net/samba34/files/patch-source3__smbd__statvfs.c
new file mode 100644
index 000000000000..19009e5b7381
--- /dev/null
+++ b/net/samba34/files/patch-source3__smbd__statvfs.c
@@ -0,0 +1,64 @@
+--- ./source3/smbd/statvfs.c.orig 2010-01-18 12:38:09.000000000 +0100
++++ ./source3/smbd/statvfs.c 2010-01-22 02:42:51.000000000 +0100
+@@ -3,6 +3,7 @@
+ VFS API's statvfs abstraction
+ Copyright (C) Alexander Bokovoy 2005
+ Copyright (C) Steve French 2005
++ Copyright (C) Timur I. Bakeyev 2005
+ Copyright (C) James Peach 2006
+
+ This program is free software; you can redistribute it and/or modify
+@@ -47,9 +48,42 @@
+ }
+ return result;
+ }
+-#endif
++#elif defined(FREEBSD)
++static int bsd_statvfs(const char *path, vfs_statvfs_struct *statbuf)
++{
++ struct statfs statfs_buf;
++ int result;
+
+-#if defined(DARWINOS)
++ result = statfs(path, &statfs_buf);
++ if(result != 0) {
++ return result;
++ }
++
++ statbuf->OptimalTransferSize = statfs_buf.f_iosize;
++ statbuf->BlockSize = statfs_buf.f_bsize;
++ statbuf->TotalBlocks = statfs_buf.f_blocks;
++ statbuf->BlocksAvail = statfs_buf.f_bfree;
++ statbuf->UserBlocksAvail = statfs_buf.f_bavail;
++ statbuf->TotalFileNodes = statfs_buf.f_files;
++ statbuf->FreeFileNodes = statfs_buf.f_ffree;
++ statbuf->FsIdentifier =
++ (((uint64_t)statfs_buf.f_fsid.val[0]<<32) & 0xffffffff00000000LL) | (uint64_t)statfs_buf.f_fsid.val[1];
++ /* Try to extrapolate some of the fs flags into the
++ * capabilities
++ */
++ statbuf->FsCapabilities =
++ FILE_CASE_SENSITIVE_SEARCH | FILE_CASE_PRESERVED_NAMES;
++ if(statfs_buf.f_flags & MNT_ACLS)
++ statbuf->FsCapabilities |= FILE_PERSISTENT_ACLS;
++ if(statfs_buf.f_flags & MNT_QUOTA)
++ statbuf->FsCapabilities |= FILE_VOLUME_QUOTAS;
++ if(statfs_buf.f_flags & MNT_RDONLY)
++ statbuf->FsCapabilities |= FILE_READ_ONLY_VOLUME;
++
++ return 0;
++}
++
++#elif defined(DARWINOS)
+
+ #include <sys/attr.h>
+
+@@ -135,6 +169,8 @@
+ {
+ #if defined(LINUX) && defined(HAVE_FSID_INT)
+ return linux_statvfs(path, statbuf);
++#elif defined(FREEBSD)
++ return bsd_statvfs(path, statbuf);
+ #elif defined(DARWINOS)
+ return darwin_statvfs(path, statbuf);
+ #else
diff --git a/net/samba34/files/patch-source3__utils__net_time.c b/net/samba34/files/patch-source3__utils__net_time.c
new file mode 100644
index 000000000000..51ec57722a15
--- /dev/null
+++ b/net/samba34/files/patch-source3__utils__net_time.c
@@ -0,0 +1,18 @@
+--- ./source3/utils/net_time.c.orig 2010-01-18 12:38:09.000000000 +0100
++++ ./source3/utils/net_time.c 2010-01-22 02:42:51.000000000 +0100
+@@ -86,9 +86,15 @@
+ return "unknown";
+ }
+
++#if defined(FREEBSD)
++ fstr_sprintf(s, "%02d%02d%02d%02d%02d.%02d",
++ tm->tm_year+1900,tm->tm_mon+1,tm->tm_mday,
++ tm->tm_hour,tm->tm_min,tm->tm_sec);
++#else
+ fstr_sprintf(s, "%02d%02d%02d%02d%04d.%02d",
+ tm->tm_mon+1, tm->tm_mday, tm->tm_hour,
+ tm->tm_min, tm->tm_year + 1900, tm->tm_sec);
++#endif /* !FREEBSD */
+ return s;
+ }
+
diff --git a/net/samba34/files/pkg-deinstall.in b/net/samba34/files/pkg-deinstall.in
new file mode 100644
index 000000000000..e881cdc438d2
--- /dev/null
+++ b/net/samba34/files/pkg-deinstall.in
@@ -0,0 +1,44 @@
+#! /bin/sh
+#
+PATH=/bin:/usr/sbin:/usr/bin:/usr/sbin
+
+SAMBA_CONFIG="%%SAMBA_CONFIG%%"
+SAMBA_CONFDIR="%%SAMBA_CONFDIR%%"
+SAMBA_SPOOL="%%SAMBA_SPOOL%%"
+SAMBA_LOGDIR="%%SAMBA_LOGDIR%%"
+SAMBA_LOCKDIR="%%SAMBA_LOCKDIR%%"
+SAMBA_PRIVATEDIR="%%SAMBA_PRIVATEDIR%%"
+SAMBA_OWNER=root
+SAMBA_GROUP=wheel
+CMP="cmp"
+RM="rm"
+RMDIR="rmdir"
+ECHO_CMD="echo"
+
+post-deinstall() {
+ if ${CMP} -s ${SAMBA_CONFDIR}/${SAMBA_CONFIG} ${SAMBA_CONFDIR}/${SAMBA_CONFIG}.sample; then
+ ${RM} -f ${SAMBA_CONFDIR}/${SAMBA_CONFIG}
+ fi
+ ${RM} -f ${SAMBA_CONFDIR}/${SAMBA_CONFIG}.sample
+ ${RM} -rf ${SAMBA_SPOOL}
+ ${RMDIR} ${SAMBA_LOGDIR} 2>/dev/null || true
+ for f in connections.tdb locking.tdb messages.tdb sessionid.tdb \
+ unexpected.tdb brlock.tdb namelist.debug
+ do
+ ${RM} -f "${SAMBA_LOCKDIR}/${f}"
+ done
+ ${RMDIR} ${SAMBA_LOCKDIR} 2>/dev/null || true
+ ${RMDIR} ${SAMBA_PRIVATEDIR} 2>/dev/null || true
+ ${ECHO_CMD} "WARNING: If you will *NOT* use this package anymore, please remove the"
+ ${ECHO_CMD} " following directories manually:"
+ ${ECHO_CMD} " ${SAMBA_PRIVATEDIR}"
+ ${ECHO_CMD} " ${SAMBA_LOGDIR}"
+ ${ECHO_CMD} " ${SAMBA_LOCKDIR}"
+ ${ECHO_CMD}
+}
+
+case $2 in
+ POST-DEINSTALL)
+ post-deinstall
+ ;;
+esac
diff --git a/net/samba34/files/pkg-install.in b/net/samba34/files/pkg-install.in
new file mode 100644
index 000000000000..4272647e0b45
--- /dev/null
+++ b/net/samba34/files/pkg-install.in
@@ -0,0 +1,41 @@
+#! /bin/sh
+#
+PATH=/bin:/usr/sbin:/usr/bin:/usr/sbin
+
+EXAMPLESDIR="%%EXAMPLESDIR%%"
+SAMBA_CONFIG="%%SAMBA_CONFIG%%"
+SAMBA_CONFDIR="%%SAMBA_CONFDIR%%"
+SAMBA_SPOOL="%%SAMBA_SPOOL%%"
+SAMBA_LOGDIR="%%SAMBA_LOGDIR%%"
+SAMBA_LOCKDIR="%%SAMBA_LOCKDIR%%"
+SAMBA_PRIVATEDIR="%%SAMBA_PRIVATEDIR%%"
+SAMBA_OWNER=root
+SAMBA_GROUP=wheel
+INSTALL_DATA="install -c -m 0444"
+MKDIR="mkdir -p"
+CHMOD="chmod"
+CHOWN="chown"
+
+post-install() {
+ ${MKDIR} ${SAMBA_SPOOL} && ${CHMOD} 1777 ${SAMBA_SPOOL}
+ ${MKDIR} ${SAMBA_LOGDIR} && ${CHMOD} 0755 ${SAMBA_LOGDIR}
+ ${MKDIR} ${SAMBA_LOCKDIR} && ${CHMOD} 0755 ${SAMBA_LOCKDIR}
+ ${MKDIR} ${SAMBA_PRIVATEDIR} && ${CHMOD} 0700 ${SAMBA_PRIVATEDIR}
+ if [ $(id -u) -eq 0 ]; then
+ INSTALL_DATA="${INSTALL_DATA} -o ${SAMBA_OWNER} -g ${SAMBA_GROUP}"
+ ${CHOWN} ${SAMBA_OWNER}:${SAMBA_GROUP} ${SAMBA_SPOOL}
+ ${CHOWN} ${SAMBA_OWNER}:${SAMBA_GROUP} ${SAMBA_LOGDIR}
+ ${CHOWN} ${SAMBA_OWNER}:${SAMBA_GROUP} ${SAMBA_LOCKDIR}
+ ${CHOWN} ${SAMBA_OWNER}:${SAMBA_GROUP} ${SAMBA_PRIVATEDIR}
+ fi
+ ${INSTALL_DATA} ${EXAMPLESDIR}/${SAMBA_CONFIG}.sample ${SAMBA_CONFDIR}
+ if [ ! -f ${SAMBA_CONFDIR}/${SAMBA_CONFIG} ]; then
+ ${INSTALL_DATA} ${EXAMPLESDIR}/${SAMBA_CONFIG}.sample ${SAMBA_CONFDIR}/${SAMBA_CONFIG}
+ fi
+}
+
+case $2 in
+ POST-INSTALL)
+ post-install
+ ;;
+esac
diff --git a/net/samba34/files/pkg-message.in b/net/samba34/files/pkg-message.in
new file mode 100644
index 000000000000..e0f463aacaa3
--- /dev/null
+++ b/net/samba34/files/pkg-message.in
@@ -0,0 +1,7 @@
+===============================================================================
+Samba3 *package* now doesn't include ADS support due the portability problems
+with Kerberos5 libraries on different installations. You need to compile port
+yourself to get this functionality.
+
+For additional hints and directions, please, look into the README.FreeBSD file.
+===============================================================================
diff --git a/net/samba34/files/samba.in b/net/samba34/files/samba.in
new file mode 100644
index 000000000000..d3a119d33753
--- /dev/null
+++ b/net/samba34/files/samba.in
@@ -0,0 +1,159 @@
+#!/bin/sh
+#
+# $FreeBSD$
+#
+
+# PROVIDE: nmbd smbd
+%%WINBIND%%# PROVIDE: winbindd
+# REQUIRE: NETWORKING SERVERS DAEMON ldconfig resolv
+%%CUPS%%# REQUIRE: cupsd
+# BEFORE: LOGIN
+# KEYWORD: shutdown
+#
+# Add the following lines to /etc/rc.conf.local or /etc/rc.conf
+# to enable this service:
+#
+#samba_enable="YES"
+# or, for fine grain control:
+#nmbd_enable="YES"
+#smbd_enable="YES"
+%%WINBIND%%# You need to enable winbindd separately, by adding:
+%%WINBIND%%#winbindd_enable="YES"
+#
+# Configuration file can be set with:
+#samba_config="%%SAMBA_CONFDIR%%/%%SAMBA_CONFIG%%"
+#
+
+. %%RC_SUBR%%
+
+name="samba"
+rcvar=$(set_rcvar)
+
+load_rc_config "${name}"
+# Custom commands
+extra_commands="reload status"
+start_precmd="samba_start_precmd"
+start_cmd="samba_cmd"
+stop_cmd="samba_cmd"
+status_cmd="samba_cmd"
+restart_precmd="samba_checkconfig"
+reload_precmd="samba_checkconfig"
+reload_cmd="samba_reload_cmd"
+rcvar_cmd="samba_rcvar_cmd"
+# Defaults
+samba_enable=${samba_enable:=NO}
+samba_config_default="%%SAMBA_CONFDIR%%/%%SAMBA_CONFIG%%"
+samba_config=${samba_config="${samba_config_default}"}
+command_args=${samba_config:+-s "${samba_config}"}
+testparm_command="%%PREFIX%%/bin/testparm"
+smbcontrol_command="%%PREFIX%%/bin/smbcontrol"
+# Fetch parameters from configuration file
+samba_parm="${testparm_command} -s -v --parameter-name"
+%%WINBIND%%samba_idmap=$(${samba_parm} 'idmap uid' "${samba_config}" 2>/dev/null)
+samba_lockdir=$(${samba_parm} 'lock directory' "${samba_config}" 2>/dev/null)
+# Setup dependent variables
+if [ -n "${rcvar}" ] && checkyesno "${rcvar}"; then
+ nmbd_enable=${nmbd_enable=YES}
+ smbd_enable=${smbd_enable=YES}
+%%WINBIND%% # Check that winbindd is actually configured
+%%WINBIND%% if [ -n "${samba_idmap}" ]; then
+%%WINBIND%% winbindd_enable=${winbindd_enable=YES}
+%%WINBIND%% fi
+fi
+# Defaults for dependent variables
+nmbd_enable=${nmbd_enable:=NO}
+nmbd_flags=${nmbd_flags="-D"}
+smbd_enable=${smbd_enable:=NO}
+smbd_flags=${smbd_flags="-D"}
+%%WINBIND%%winbindd_enable=${winbindd_enable:=NO}
+%%WINBIND%%winbindd_flags=${winbindd_flags=''}
+samba_daemons="nmbd smbd"
+%%WINBIND%%samba_daemons="${samba_daemons} winbindd"
+# Hack to enable check of dependent variables
+eval real_${rcvar}="\${${rcvar}:=NO}" ${rcvar}=YES
+# Requirements
+required_files="${samba_config}"
+required_dirs="${samba_lockdir}"
+samba_checkconfig() {
+ echo -n "Performing sanity check on Samba configuration: "
+ if ${testparm_command} -s ${samba_config:+"${samba_config}"} >/dev/null 2>&1; then
+ echo "OK"
+ else
+ echo "FAILED"
+ return 1
+ fi
+}
+
+samba_start_precmd() {
+ # XXX: Never delete winbindd_idmap, winbindd_cache and group_mapping
+ if [ -n "${samba_lockdir}" -a -d "${samba_lockdir}" ]; then
+ echo -n "Removing stale Samba tdb files: "
+ for file in brlock.tdb browse.dat connections.tdb gencache.tdb \
+ locking.tdb messages.tdb namelist.debug sessionid.tdb \
+ unexpected.tdb
+ do
+ rm "${samba_lockdir}/${file}" </dev/null 2>/dev/null && echo -n '.'
+ done
+ echo " done"
+ fi
+}
+
+samba_rcvar_cmd() {
+ # Prevent recursive calling
+ unset "${rc_arg}_cmd" "${rc_arg}_precmd" "${rc_arg}_postcmd"
+ # Check master variable
+ echo "# ${name}"
+ if [ -n "${rcvar}" ]; then
+ # Use original configured value
+ if checkyesno "real_${rcvar}"; then
+ echo "\$${rcvar}=YES"
+ else
+ echo "\$${rcvar}=NO"
+ fi
+ fi
+ # Check dependent variables
+ samba_cmd "${_rc_prefix}${rc_arg}" ${rc_extra_args}
+}
+
+samba_reload_cmd() {
+ local name rcvar command pidfile
+ # Prevent recursive calling
+ unset "${rc_arg}_cmd" "${rc_arg}_precmd" "${rc_arg}_postcmd"
+ # Apply to all daemons
+ for name in ${samba_daemons}; do
+ rcvar=$(set_rcvar)
+ command="%%PREFIX%%/sbin/${name}"
+ pidfile="%%SAMBA_RUNDIR%%/${name}${pid_extra}.pid"
+ # Daemon should be enabled and running
+ if [ -n "${rcvar}" ] && checkyesno "${rcvar}"; then
+ if [ -n "$(check_pidfile "${pidfile}" "${command}")" ]; then
+ debug "reloading ${name} configuration"
+ echo "Reloading ${name}."
+ # XXX: Hack with pid_extra
+ ${smbcontrol_command} "${name}${pid_extra}" 'reload-config' ${command_args} >/dev/null 2>&1
+ fi
+ fi
+ done
+}
+
+samba_cmd() {
+ local name rcvar command pidfile samba_daemons
+ # Prevent recursive calling
+ unset "${rc_arg}_cmd" "${rc_arg}_precmd" "${rc_arg}_postcmd"
+ # Stop processes in the reverse to order
+ if [ "${rc_arg}" = "stop" ] ; then
+ samba_daemons=$(reverse_list ${samba_daemons})
+ fi
+ # Apply to all daemons
+ for name in ${samba_daemons}; do
+ rcvar=$(set_rcvar)
+ command="%%PREFIX%%/sbin/${name}"
+ pidfile="%%SAMBA_RUNDIR%%/${name}${pid_extra}.pid"
+ # Daemon should be enabled and running
+ if [ -n "${rcvar}" ] && checkyesno "${rcvar}"; then
+ run_rc_command "${_rc_prefix}${rc_arg}" ${rc_extra_args}
+ fi
+ done
+}
+
+run_rc_command "$1"
diff --git a/net/samba34/files/sernet.patch b/net/samba34/files/sernet.patch
new file mode 100644
index 000000000000..2c11e7c88bcd
--- /dev/null
+++ b/net/samba34/files/sernet.patch
@@ -0,0 +1,1027 @@
+samba-3.4-check-bad-password-count.patch
+samba-3.4-dont-search-for-empty-values.patch
+samba-3.4-net-trustdom-list-tidyup.patch
+samba-3.4-search-accpolicies-in-sambaDomain.patch
+samba3-3.4-honor-all-loopback-ips.patch
+samba3-3.4-skip-useless-ldap-queries-in-is_trusted_domain.patch
+samba3-3.4.3-make-idmap-cache-persistent-ldapsam-trusted.patch
+samba3-3.4.3-shortcut-uid_to_sid-when-ldapsam-trusted-yes.patch
+samba3-3.4.4-fix-account-unlock.patch
+
+ source3/auth/auth_sam.c | 159 +++++++++++++++++++++++++++++++++---------
+ source3/include/proto.h | 3 +
+ source3/passdb/pdb_get_set.c | 132 +++++++++++++++++++----------------
+ source3/smbd/chgpasswd.c | 87 ++++++++++++++++-------
+ 4 files changed, 262 insertions(+), 119 deletions(-)
+
+diff --git a/source3/auth/auth_sam.c b/source3/auth/auth_sam.c
+index fdfa292..24e7898 100644
+--- a/source3/auth/auth_sam.c
++++ b/source3/auth/auth_sam.c
+@@ -32,16 +32,14 @@
+
+ static NTSTATUS sam_password_ok(const struct auth_context *auth_context,
+ TALLOC_CTX *mem_ctx,
+- struct samu *sampass,
++ const char *username,
++ uint32_t acct_ctrl,
++ const uint8_t *lm_pw,
++ const uint8_t *nt_pw,
+ const auth_usersupplied_info *user_info,
+ DATA_BLOB *user_sess_key,
+ DATA_BLOB *lm_sess_key)
+ {
+- uint32 acct_ctrl;
+- const uint8 *lm_pw, *nt_pw;
+- const char *username = pdb_get_username(sampass);
+-
+- acct_ctrl = pdb_get_acct_ctrl(sampass);
+ if (acct_ctrl & ACB_PWNOTREQ) {
+ if (lp_null_passwords()) {
+ DEBUG(3,("Account for user '%s' has no password and null passwords are allowed.\n", username));
+@@ -52,9 +50,6 @@ static NTSTATUS sam_password_ok(const struct auth_context *auth_context,
+ }
+ }
+
+- lm_pw = pdb_get_lanman_passwd(sampass);
+- nt_pw = pdb_get_nt_passwd(sampass);
+-
+ return ntlm_password_check(mem_ctx, &auth_context->challenge,
+ &user_info->lm_resp, &user_info->nt_resp,
+ &user_info->lm_interactive_pwd, &user_info->nt_interactive_pwd,
+@@ -240,6 +235,75 @@ static NTSTATUS sam_account_ok(TALLOC_CTX *mem_ctx,
+ return NT_STATUS_OK;
+ }
+
++/**
++ * Check whether the given password is one of the last two
++ * password history entries. If so, the bad pwcount should
++ * not be incremented even thought the actual password check
++ * failed.
++ */
++static bool need_to_increment_bad_pw_count(
++ const struct auth_context *auth_context,
++ struct samu* sampass,
++ const auth_usersupplied_info *user_info)
++{
++ uint8_t i;
++ const uint8_t *pwhistory;
++ uint32_t pwhistory_len;
++ uint32_t policy_pwhistory_len;
++ uint32_t acct_ctrl;
++ const char *username;
++ TALLOC_CTX *mem_ctx = talloc_stackframe();
++ bool result = true;
++
++ pdb_get_account_policy(AP_PASSWORD_HISTORY,
++ &policy_pwhistory_len);
++ if (policy_pwhistory_len == 0) {
++ goto done;
++ }
++
++ pwhistory = pdb_get_pw_history(sampass, &pwhistory_len);
++ if (!pwhistory || pwhistory_len == 0) {
++ goto done;
++ }
++
++ acct_ctrl = pdb_get_acct_ctrl(sampass);
++ username = pdb_get_username(sampass);
++
++ for (i=1; i < MIN(MIN(3, policy_pwhistory_len), pwhistory_len); i++) {
++ static const uint8_t zero16[SALTED_MD5_HASH_LEN];
++ const uint8_t *salt;
++ const uint8_t *nt_pw;
++ NTSTATUS status;
++ DATA_BLOB user_sess_key = data_blob_null;
++ DATA_BLOB lm_sess_key = data_blob_null;
++
++ salt = &pwhistory[i*PW_HISTORY_ENTRY_LEN];
++ nt_pw = salt + PW_HISTORY_SALT_LEN;
++
++ if (memcmp(zero16, nt_pw, NT_HASH_LEN) == 0) {
++ /* skip zero password hash */
++ continue;
++ }
++
++ if (memcmp(zero16, salt, PW_HISTORY_SALT_LEN) != 0) {
++ /* skip nonzero salt (old format entry) */
++ continue;
++ }
++
++ status = sam_password_ok(auth_context, mem_ctx,
++ username, acct_ctrl, NULL, nt_pw,
++ user_info, &user_sess_key, &lm_sess_key);
++ if (NT_STATUS_IS_OK(status)) {
++ result = false;
++ break;
++ }
++ }
++
++done:
++ TALLOC_FREE(mem_ctx);
++ return result;
++}
++
+ /****************************************************************************
+ check if a username/password is OK assuming the password is a 24 byte
+ SMB hash supplied in the user_info structure
+@@ -259,6 +323,10 @@ static NTSTATUS check_sam_security(const struct auth_context *auth_context,
+ DATA_BLOB user_sess_key = data_blob_null;
+ DATA_BLOB lm_sess_key = data_blob_null;
+ bool updated_autolock = False, updated_badpw = False;
++ uint32_t acct_ctrl;
++ const char *username;
++ const uint8_t *nt_pw;
++ const uint8_t *lm_pw;
+
+ if (!user_info || !auth_context) {
+ return NT_STATUS_UNSUCCESSFUL;
+@@ -267,7 +335,8 @@ static NTSTATUS check_sam_security(const struct auth_context *auth_context,
+ /* the returned struct gets kept on the server_info, by means
+ of a steal further down */
+
+- if ( !(sampass = samu_new( mem_ctx )) ) {
++ sampass = samu_new(mem_ctx);
++ if (sampass == NULL) {
+ return NT_STATUS_NO_MEMORY;
+ }
+
+@@ -284,16 +353,22 @@ static NTSTATUS check_sam_security(const struct auth_context *auth_context,
+ return NT_STATUS_NO_SUCH_USER;
+ }
+
++ acct_ctrl = pdb_get_acct_ctrl(sampass);
++ username = pdb_get_username(sampass);
++ nt_pw = pdb_get_nt_passwd(sampass);
++ lm_pw = pdb_get_lanman_passwd(sampass);
++
+ /* see if autolock flag needs to be updated */
+- if (pdb_get_acct_ctrl(sampass) & ACB_NORMAL)
++ if (acct_ctrl & ACB_NORMAL)
+ pdb_update_autolock_flag(sampass, &updated_autolock);
+ /* Quit if the account was locked out. */
+- if (pdb_get_acct_ctrl(sampass) & ACB_AUTOLOCK) {
+- DEBUG(3,("check_sam_security: Account for user %s was locked out.\n", pdb_get_username(sampass)));
++ if (acct_ctrl & ACB_AUTOLOCK) {
++ DEBUG(3,("check_sam_security: Account for user %s was locked out.\n", username));
+ return NT_STATUS_ACCOUNT_LOCKED_OUT;
+ }
+
+- nt_status = sam_password_ok(auth_context, mem_ctx, sampass,
++ nt_status = sam_password_ok(auth_context, mem_ctx,
++ username, acct_ctrl, lm_pw, nt_pw,
+ user_info, &user_sess_key, &lm_sess_key);
+
+ /* Notify passdb backend of login success/failure. If not
+@@ -302,10 +377,19 @@ static NTSTATUS check_sam_security(const struct auth_context *auth_context,
+ update_login_attempts_status = pdb_update_login_attempts(sampass, NT_STATUS_IS_OK(nt_status));
+
+ if (!NT_STATUS_IS_OK(nt_status)) {
++ bool increment_bad_pw_count = false;
++
+ if (NT_STATUS_EQUAL(nt_status,NT_STATUS_WRONG_PASSWORD) &&
+- pdb_get_acct_ctrl(sampass) &ACB_NORMAL &&
++ acct_ctrl & ACB_NORMAL &&
+ NT_STATUS_IS_OK(update_login_attempts_status))
+- {
++ {
++ increment_bad_pw_count =
++ need_to_increment_bad_pw_count(auth_context,
++ sampass,
++ user_info);
++ }
++
++ if (increment_bad_pw_count) {
+ pdb_increment_bad_password_count(sampass);
+ updated_badpw = True;
+ } else {
+@@ -313,18 +397,21 @@ static NTSTATUS check_sam_security(const struct auth_context *auth_context,
+ &updated_badpw);
+ }
+ if (updated_autolock || updated_badpw){
++ NTSTATUS status;
++
+ become_root();
+- if(!NT_STATUS_IS_OK(pdb_update_sam_account(sampass)))
+- DEBUG(1, ("Failed to modify entry.\n"));
++ status = pdb_update_sam_account(sampass);
+ unbecome_root();
++
++ if (!NT_STATUS_IS_OK(status)) {
++ DEBUG(1, ("Failed to modify entry: %s\n",
++ nt_errstr(status)));
++ }
+ }
+- data_blob_free(&user_sess_key);
+- data_blob_free(&lm_sess_key);
+- TALLOC_FREE(sampass);
+- return nt_status;
++ goto done;
+ }
+
+- if ((pdb_get_acct_ctrl(sampass) & ACB_NORMAL) &&
++ if ((acct_ctrl & ACB_NORMAL) &&
+ (pdb_get_bad_password_count(sampass) > 0)){
+ pdb_set_bad_password_count(sampass, 0, PDB_CHANGED);
+ pdb_set_bad_password_time(sampass, 0, PDB_CHANGED);
+@@ -332,30 +419,32 @@ static NTSTATUS check_sam_security(const struct auth_context *auth_context,
+ }
+
+ if (updated_autolock || updated_badpw){
++ NTSTATUS status;
++
+ become_root();
+- if(!NT_STATUS_IS_OK(pdb_update_sam_account(sampass)))
+- DEBUG(1, ("Failed to modify entry.\n"));
++ status = pdb_update_sam_account(sampass);
+ unbecome_root();
+- }
++
++ if (!NT_STATUS_IS_OK(status)) {
++ DEBUG(1, ("Failed to modify entry: %s\n",
++ nt_errstr(status)));
++ }
++ }
+
+ nt_status = sam_account_ok(mem_ctx, sampass, user_info);
+
+ if (!NT_STATUS_IS_OK(nt_status)) {
+- TALLOC_FREE(sampass);
+- data_blob_free(&user_sess_key);
+- data_blob_free(&lm_sess_key);
+- return nt_status;
++ goto done;
+ }
+
+ become_root();
+ nt_status = make_server_info_sam(server_info, sampass);
+ unbecome_root();
++ sampass = NULL;
+
+ if (!NT_STATUS_IS_OK(nt_status)) {
+ DEBUG(0,("check_sam_security: make_server_info_sam() failed with '%s'\n", nt_errstr(nt_status)));
+- data_blob_free(&user_sess_key);
+- data_blob_free(&lm_sess_key);
+- return nt_status;
++ goto done;
+ }
+
+ (*server_info)->user_session_key =
+@@ -370,6 +459,10 @@ static NTSTATUS check_sam_security(const struct auth_context *auth_context,
+
+ (*server_info)->nss_token |= user_info->was_mapped;
+
++done:
++ TALLOC_FREE(sampass);
++ data_blob_free(&user_sess_key);
++ data_blob_free(&lm_sess_key);
+ return nt_status;
+ }
+
+diff --git a/source3/include/proto.h b/source3/include/proto.h
+index d2ae62c..2c72bc6 100644
+--- a/source3/include/proto.h
++++ b/source3/include/proto.h
+@@ -6179,6 +6179,9 @@ NTSTATUS pass_oem_change(char *user,
+ uchar password_encrypted_with_nt_hash[516],
+ const uchar old_nt_hash_encrypted[16],
+ uint32 *reject_reason);
++bool password_in_history(uint8_t nt_pw[NT_HASH_LEN],
++ uint32_t pw_history_len,
++ const uint8_t *pw_history);
+ NTSTATUS change_oem_password(struct samu *hnd, char *old_passwd, char *new_passwd, bool as_root, uint32 *samr_reject_reason);
+
+ /* The following definitions come from smbd/close.c */
+diff --git a/source3/passdb/pdb_get_set.c b/source3/passdb/pdb_get_set.c
+index c79caf2..6e6b82b 100644
+--- a/source3/passdb/pdb_get_set.c
++++ b/source3/passdb/pdb_get_set.c
+@@ -979,6 +979,9 @@ bool pdb_set_plaintext_passwd(struct samu *sampass, const char *plaintext)
+ {
+ uchar new_lanman_p16[LM_HASH_LEN];
+ uchar new_nt_p16[NT_HASH_LEN];
++ uchar *pwhistory;
++ uint32 pwHistLen;
++ uint32 current_history_len;
+
+ if (!plaintext)
+ return False;
+@@ -1008,68 +1011,79 @@ bool pdb_set_plaintext_passwd(struct samu *sampass, const char *plaintext)
+ if (!pdb_set_pass_last_set_time (sampass, time(NULL), PDB_CHANGED))
+ return False;
+
+- /* Store the password history. */
+- if (pdb_get_acct_ctrl(sampass) & ACB_NORMAL) {
+- uchar *pwhistory;
+- uint32 pwHistLen;
+- pdb_get_account_policy(AP_PASSWORD_HISTORY, &pwHistLen);
+- if (pwHistLen != 0){
+- uint32 current_history_len;
+- /* We need to make sure we don't have a race condition here - the
+- account policy history length can change between when the pw_history
+- was first loaded into the struct samu struct and now.... JRA. */
+- pwhistory = (uchar *)pdb_get_pw_history(sampass, &current_history_len);
+-
+- if (current_history_len != pwHistLen) {
+- /* After closing and reopening struct samu the history
+- values will sync up. We can't do this here. */
+-
+- /* current_history_len > pwHistLen is not a problem - we
+- have more history than we need. */
+-
+- if (current_history_len < pwHistLen) {
+- /* Ensure we have space for the needed history. */
+- uchar *new_history = (uchar *)TALLOC(sampass,
+- pwHistLen*PW_HISTORY_ENTRY_LEN);
+- if (!new_history) {
+- return False;
+- }
+-
+- /* And copy it into the new buffer. */
+- if (current_history_len) {
+- memcpy(new_history, pwhistory,
+- current_history_len*PW_HISTORY_ENTRY_LEN);
+- }
+- /* Clearing out any extra space. */
+- memset(&new_history[current_history_len*PW_HISTORY_ENTRY_LEN],
+- '\0', (pwHistLen-current_history_len)*PW_HISTORY_ENTRY_LEN);
+- /* Finally replace it. */
+- pwhistory = new_history;
+- }
+- }
+- if (pwhistory && pwHistLen){
+- /* Make room for the new password in the history list. */
+- if (pwHistLen > 1) {
+- memmove(&pwhistory[PW_HISTORY_ENTRY_LEN],
+- pwhistory, (pwHistLen -1)*PW_HISTORY_ENTRY_LEN );
+- }
+- /* Create the new salt as the first part of the history entry. */
+- generate_random_buffer(pwhistory, PW_HISTORY_SALT_LEN);
+-
+- /* Generate the md5 hash of the salt+new password as the second
+- part of the history entry. */
+-
+- E_md5hash(pwhistory, new_nt_p16, &pwhistory[PW_HISTORY_SALT_LEN]);
+- pdb_set_pw_history(sampass, pwhistory, pwHistLen, PDB_CHANGED);
+- } else {
+- DEBUG (10,("pdb_get_set.c: pdb_set_plaintext_passwd: pwhistory was NULL!\n"));
+- }
+- } else {
+- /* Set the history length to zero. */
+- pdb_set_pw_history(sampass, NULL, 0, PDB_CHANGED);
++ if ((pdb_get_acct_ctrl(sampass) & ACB_NORMAL) == 0) {
++ /*
++ * No password history for non-user accounts
++ */
++ return true;
++ }
++
++ pdb_get_account_policy(AP_PASSWORD_HISTORY, &pwHistLen);
++
++ if (pwHistLen == 0) {
++ /* Set the history length to zero. */
++ pdb_set_pw_history(sampass, NULL, 0, PDB_CHANGED);
++ return true;
++ }
++
++ /*
++ * We need to make sure we don't have a race condition here -
++ * the account policy history length can change between when
++ * the pw_history was first loaded into the struct samu struct
++ * and now.... JRA.
++ */
++ pwhistory = (uchar *)pdb_get_pw_history(sampass, &current_history_len);
++
++ if ((current_history_len != 0) && (pwhistory == NULL)) {
++ DEBUG(1, ("pdb_set_plaintext_passwd: pwhistory == NULL!\n"));
++ return false;
++ }
++
++ if (current_history_len < pwHistLen) {
++ /*
++ * Ensure we have space for the needed history. This
++ * also takes care of an account which did not have
++ * any history at all so far, i.e. pwhistory==NULL
++ */
++ uchar *new_history = talloc_zero_array(
++ sampass, uchar,
++ pwHistLen*PW_HISTORY_ENTRY_LEN);
++
++ if (!new_history) {
++ return False;
+ }
++
++ memcpy(new_history, pwhistory,
++ current_history_len*PW_HISTORY_ENTRY_LEN);
++
++ pwhistory = new_history;
+ }
+
++ /*
++ * Make room for the new password in the history list.
++ */
++ if (pwHistLen > 1) {
++ memmove(&pwhistory[PW_HISTORY_ENTRY_LEN], pwhistory,
++ (pwHistLen-1)*PW_HISTORY_ENTRY_LEN );
++ }
++
++ /*
++ * Fill the salt area with 0-s: this indicates that
++ * a plain nt has is stored in the has area.
++ * The old format was to store a 16 byte salt and
++ * then an md5hash of the nt_hash concatenated with
++ * the salt.
++ */
++ memset(pwhistory, 0, PW_HISTORY_SALT_LEN);
++
++ /*
++ * Generate the md5 hash of the salt+new password as the
++ * second part of the history entry.
++ */
++ memcpy(&pwhistory[PW_HISTORY_SALT_LEN], new_nt_p16, SALTED_MD5_HASH_LEN);
++
++ pdb_set_pw_history(sampass, pwhistory, pwHistLen, PDB_CHANGED);
++
+ return True;
+ }
+
+diff --git a/source3/smbd/chgpasswd.c b/source3/smbd/chgpasswd.c
+index 61c3afb..046cc2c 100644
+--- a/source3/smbd/chgpasswd.c
++++ b/source3/smbd/chgpasswd.c
+@@ -1007,6 +1007,59 @@ static NTSTATUS check_oem_password(const char *user,
+ return NT_STATUS_WRONG_PASSWORD;
+ }
+
++bool password_in_history(uint8_t nt_pw[NT_HASH_LEN],
++ uint32_t pw_history_len,
++ const uint8_t *pw_history)
++{
++ static const uint8_t zero_md5_nt_pw[SALTED_MD5_HASH_LEN] = { 0, };
++ int i;
++
++ dump_data(100, nt_pw, NT_HASH_LEN);
++ dump_data(100, pw_history, PW_HISTORY_ENTRY_LEN * pw_history_len);
++
++ for (i=0; i<pw_history_len; i++) {
++ uint8_t new_nt_pw_salted_md5_hash[SALTED_MD5_HASH_LEN];
++ const uint8_t *current_salt;
++ const uint8_t *old_nt_pw_salted_md5_hash;
++
++ current_salt = &pw_history[i*PW_HISTORY_ENTRY_LEN];
++ old_nt_pw_salted_md5_hash = current_salt + PW_HISTORY_SALT_LEN;
++
++ if (memcmp(zero_md5_nt_pw, old_nt_pw_salted_md5_hash,
++ SALTED_MD5_HASH_LEN) == 0) {
++ /* Ignore zero valued entries. */
++ continue;
++ }
++
++ if (memcmp(zero_md5_nt_pw, current_salt,
++ PW_HISTORY_SALT_LEN) == 0)
++ {
++ /*
++ * New format: zero salt and then plain nt hash.
++ * Directly compare the hashes.
++ */
++ if (memcmp(nt_pw, old_nt_pw_salted_md5_hash,
++ SALTED_MD5_HASH_LEN) == 0)
++ {
++ return true;
++ }
++ } else {
++ /*
++ * Old format: md5sum of salted nt hash.
++ * Create salted version of new pw to compare.
++ */
++ E_md5hash(current_salt, nt_pw, new_nt_pw_salted_md5_hash);
++
++ if (memcmp(new_nt_pw_salted_md5_hash,
++ old_nt_pw_salted_md5_hash,
++ SALTED_MD5_HASH_LEN) == 0) {
++ return true;
++ }
++ }
++ }
++ return false;
++}
++
+ /***********************************************************
+ This routine takes the given password and checks it against
+ the password history. Returns True if this password has been
+@@ -1016,11 +1069,8 @@ static NTSTATUS check_oem_password(const char *user,
+ static bool check_passwd_history(struct samu *sampass, const char *plaintext)
+ {
+ uchar new_nt_p16[NT_HASH_LEN];
+- uchar zero_md5_nt_pw[SALTED_MD5_HASH_LEN];
+ const uint8 *nt_pw;
+ const uint8 *pwhistory;
+- bool found = False;
+- int i;
+ uint32 pwHisLen, curr_pwHisLen;
+
+ pdb_get_account_policy(AP_PASSWORD_HISTORY, &pwHisLen);
+@@ -1047,30 +1097,13 @@ static bool check_passwd_history(struct samu *sampass, const char *plaintext)
+ return True;
+ }
+
+- dump_data(100, new_nt_p16, NT_HASH_LEN);
+- dump_data(100, pwhistory, PW_HISTORY_ENTRY_LEN*pwHisLen);
+-
+- memset(zero_md5_nt_pw, '\0', SALTED_MD5_HASH_LEN);
+- for (i=0; i<pwHisLen; i++) {
+- uchar new_nt_pw_salted_md5_hash[SALTED_MD5_HASH_LEN];
+- const uchar *current_salt = &pwhistory[i*PW_HISTORY_ENTRY_LEN];
+- const uchar *old_nt_pw_salted_md5_hash = &pwhistory[(i*PW_HISTORY_ENTRY_LEN)+
+- PW_HISTORY_SALT_LEN];
+- if (!memcmp(zero_md5_nt_pw, old_nt_pw_salted_md5_hash, SALTED_MD5_HASH_LEN)) {
+- /* Ignore zero valued entries. */
+- continue;
+- }
+- /* Create salted versions of new to compare. */
+- E_md5hash(current_salt, new_nt_p16, new_nt_pw_salted_md5_hash);
+-
+- if (!memcmp(new_nt_pw_salted_md5_hash, old_nt_pw_salted_md5_hash, SALTED_MD5_HASH_LEN)) {
+- DEBUG(1,("check_passwd_history: proposed new password for user %s found in history list !\n",
+- pdb_get_username(sampass) ));
+- found = True;
+- break;
+- }
++ if (password_in_history(new_nt_p16, pwHisLen, pwhistory)) {
++ DEBUG(1,("check_passwd_history: proposed new password for "
++ "user %s found in history list !\n",
++ pdb_get_username(sampass) ));
++ return true;
+ }
+- return found;
++ return false;
+ }
+
+ /***********************************************************
+@@ -1116,7 +1149,7 @@ NTSTATUS change_oem_password(struct samu *hnd, char *old_passwd, char *new_passw
+ }
+ }
+
+- /* removed calculation here, becuase passdb now calculates
++ /* removed calculation here, because passdb now calculates
+ based on policy. jmcd */
+ if ((can_change_time != 0) && (time(NULL) < can_change_time)) {
+ DEBUG(1, ("user %s cannot change password now, must "
+commit 70063522065ab3e5a21fb11db0097b808aa11100
+Author: Björn Jacke <bj@sernet.de>
+Date: Sat Oct 31 00:45:09 2009 +0100
+
+ s3:ldap: don't search when no values where found
+
+diff --git a/source3/passdb/pdb_ldap.c b/source3/passdb/pdb_ldap.c
+index 54cb03d..87df75e 100644
+--- a/source3/passdb/pdb_ldap.c
++++ b/source3/passdb/pdb_ldap.c
+@@ -2683,7 +2683,7 @@ static NTSTATUS ldapsam_enum_group_members(struct pdb_methods *methods,
+
+ values = ldap_get_values(conn->ldap_struct, entry, "memberUid");
+
+- if (values) {
++ if ((values != NULL) && (values[0] != NULL)) {
+
+ filter = talloc_asprintf(mem_ctx, "(&(objectClass=%s)(|", LDAP_OBJ_SAMBASAMACCOUNT);
+ if (filter == NULL) {
+--- a/source3/utils/net_rpc.c 2009-10-28 11:37:35.336126630 +0100
++++ b/source3/utils/net_rpc.c 2009-10-28 14:18:50.555361309 +0100
+@@ -5709,7 +5709,9 @@
+ const char **argv)
+ {
+ fstring str_sid;
+- sid_to_fstring(str_sid, domain_sid);
++ if (!sid_to_fstring(str_sid, domain_sid)) {
++ return NT_STATUS_UNSUCCESSFUL;
++ }
+ d_printf("%s\n", str_sid);
+ return NT_STATUS_OK;
+ }
+@@ -6182,14 +6184,14 @@
+ &ndr_table_lsarpc.syntax_id, 0,
+ rpc_query_domain_sid, argc,
+ argv))
+- d_fprintf(stderr, "couldn't get domain's sid\n");
++ d_printf("strange - couldn't get domain's sid\n");
+
+ cli_shutdown(remote_cli);
+-
+ } else {
+ d_fprintf(stderr, "domain controller is not "
+ "responding: %s\n",
+ nt_errstr(nt_status));
++ d_printf("couldn't get domain's sid\n");
+ };
+ };
+
+commit 72cec4a03145e11d299a5b679bb4a7ed6818032b
+Author: Björn Jacke <bj@sernet.de>
+Date: Fri Oct 30 21:50:41 2009 +0100
+
+ Ñ•3:ldap: search for account policies in objectclass sambaDomain, not *
+
+diff --git a/source3/passdb/pdb_ldap.c b/source3/passdb/pdb_ldap.c
+index c464a88..54cb03d 100644
+--- a/source3/passdb/pdb_ldap.c
++++ b/source3/passdb/pdb_ldap.c
+@@ -3864,6 +3864,7 @@ static NTSTATUS ldapsam_get_account_policy_from_ldap(struct pdb_methods *methods
+ int count;
+ int rc;
+ char **vals = NULL;
++ char *filter;
+ const char *policy_attr = NULL;
+
+ struct ldapsam_privates *ldap_state =
+@@ -3887,8 +3888,12 @@ static NTSTATUS ldapsam_get_account_policy_from_ldap(struct pdb_methods *methods
+ attrs[0] = policy_attr;
+ attrs[1] = NULL;
+
++ filter = talloc_asprintf(NULL, "(objectClass=%s)", LDAP_OBJ_DOMINFO);
++ if (filter == NULL) {
++ return NT_STATUS_NO_MEMORY;
++ }
+ rc = smbldap_search(ldap_state->smbldap_state, ldap_state->domain_dn,
+- LDAP_SCOPE_BASE, "(objectclass=*)", attrs, 0,
++ LDAP_SCOPE_BASE, filter, attrs, 0,
+ &result);
+
+ if (rc != LDAP_SUCCESS) {
+commit b6afe7ef236a454d8a6abf104b8846f817378f73
+Author: Björn Jacke <bj@sernet.de>
+Date: Thu Oct 15 02:02:30 2009 +0200
+
+ util: cope the all loopback addresses IPv4 knows
+
+ The fact that we just recogniced 127.0.0.1 as loopback IP address and not the
+ rest of the 127.0.0.0/8 IP address range we used the lo interface for sending
+ packages even though we should send them to some more physical interface. This
+ way we ended up with failing WINS registration and so on like in #6348.
+ On the lo interface sendto() returned "Invalid Argument" (EINVAL).
+
+diff --git a/lib/util/util_net.c b/lib/util/util_net.c
+index 0ce495e..0511a28 100644
+--- a/lib/util/util_net.c
++++ b/lib/util/util_net.c
+@@ -351,13 +351,11 @@ bool is_broadcast_addr(const struct sockaddr *pss)
+ }
+
+ /**
+- * Check if an IPv7 is 127.0.0.1
++ * Check if an IPv4 is in IN_LOOPBACKNET (127.0.0.0/8)
+ */
+ bool is_loopback_ip_v4(struct in_addr ip)
+ {
+- struct in_addr a;
+- a.s_addr = htonl(INADDR_LOOPBACK);
+- return(ip.s_addr == a.s_addr);
++ return ((ntohl(ip.s_addr) & IN_CLASSA_NET) == (IN_LOOPBACKNET << IN_CLASSA_NSHIFT));
+ }
+
+ /**
+From 144c23893ec580eed1a38b2fd577b4bd4ebf491d Mon Sep 17 00:00:00 2001
+From: Michael Adam <obnox@samba.org>
+Date: Sat, 14 Nov 2009 01:12:22 +0100
+Subject: [PATCH] s3:is_trusted_domain: shortcut if domain name is NULL or empty
+
+This saves some roundtrips to LDAP in an ldapsm setup.
+
+Michael
+---
+ source3/auth/auth_util.c | 4 ++++
+ 1 files changed, 4 insertions(+), 0 deletions(-)
+
+diff --git a/source3/auth/auth_util.c b/source3/auth/auth_util.c
+index 1d25e22..512cae0 100644
+--- a/source3/auth/auth_util.c
++++ b/source3/auth/auth_util.c
+@@ -2181,6 +2181,10 @@ bool is_trusted_domain(const char* dom_name)
+ if ( lp_server_role() == ROLE_STANDALONE )
+ return False;
+
++ if (dom_name == NULL || dom_name[0] == '\0') {
++ return false;
++ }
++
+ /* if we are a DC, then check for a direct trust relationships */
+
+ if ( IS_DC ) {
+--
+1.6.0.4
+
+
+From 2e3d9abeafebffa6ff1c7b3de80525cd5f6deb49 Mon Sep 17 00:00:00 2001
+From: Michael Adam <obnox@samba.org>
+Date: Sat, 14 Nov 2009 01:21:42 +0100
+Subject: [PATCH] s3:is_trusted_domain: shortcut if domain name == global_sam_name
+
+A domain can't have a trust with itself.
+This saves some roundtrips to the ldap server for ldapsam.
+
+Michael
+---
+ source3/auth/auth_util.c | 4 ++++
+ 1 files changed, 4 insertions(+), 0 deletions(-)
+
+diff --git a/source3/auth/auth_util.c b/source3/auth/auth_util.c
+index 512cae0..118f41c 100644
+--- a/source3/auth/auth_util.c
++++ b/source3/auth/auth_util.c
+@@ -2185,6 +2185,10 @@ bool is_trusted_domain(const char* dom_name)
+ return false;
+ }
+
++ if (strequal(dom_name, get_global_sam_name())) {
++ return false;
++ }
++
+ /* if we are a DC, then check for a direct trust relationships */
+
+ if ( IS_DC ) {
+--
+1.6.0.4
+
+From 1f88d2b729a273b0d10e3b57695037dede290baf Mon Sep 17 00:00:00 2001
+From: Michael Adam <obnox@samba.org>
+Date: Fri, 13 Nov 2009 15:51:33 +0100
+Subject: [PATCH] s3:smbd: make idmap cache persistent for "ldapsam:trusted".
+
+This stores the mappings found in the idmap cache (which lives
+inside gencache). This cache is already read in sid_to_Xid()
+and Xid_to_sid() for ldapsam:trusted, this fills the opposite
+direction, massively reducing the number of ldap roundtrips
+across smbd restarts.
+
+Michael
+---
+ source3/passdb/pdb_ldap.c | 4 ++++
+ 1 files changed, 4 insertions(+), 0 deletions(-)
+
+diff --git a/source3/passdb/pdb_ldap.c b/source3/passdb/pdb_ldap.c
+index d4a2fbe..7fda72e 100644
+--- a/source3/passdb/pdb_ldap.c
++++ b/source3/passdb/pdb_ldap.c
+@@ -1038,6 +1038,7 @@ static bool init_sam_from_ldap(struct ldapsam_privates *ldap_state,
+ /* We've got a uid, feed the cache */
+ uid_t uid = strtoul(temp, NULL, 10);
+ store_uid_sid_cache(pdb_get_user_sid(sampass), uid);
++ idmap_cache_set_sid2uid(pdb_get_user_sid(sampass), uid);
+ }
+ }
+
+@@ -2449,6 +2450,7 @@ for gidNumber(%lu)\n",(unsigned long)map->gid));
+
+ if (lp_parm_bool(-1, "ldapsam", "trusted", false)) {
+ store_gid_sid_cache(&map->sid, map->gid);
++ idmap_cache_set_sid2gid(&map->sid, map->gid);
+ }
+
+ TALLOC_FREE(ctx);
+@@ -4967,6 +4969,7 @@ static bool ldapsam_sid_to_id(struct pdb_methods *methods,
+
+ id->gid = strtoul(gid_str, NULL, 10);
+ *type = (enum lsa_SidType)strtoul(value, NULL, 10);
++ idmap_cache_set_sid2gid(sid, id->gid);
+ ret = True;
+ goto done;
+ }
+@@ -4983,6 +4986,7 @@ static bool ldapsam_sid_to_id(struct pdb_methods *methods,
+
+ id->uid = strtoul(value, NULL, 10);
+ *type = SID_NAME_USER;
++ idmap_cache_set_sid2uid(sid, id->uid);
+
+ ret = True;
+ done:
+--
+1.6.0.4
+
+
+From a582d52c6180d334d42f4e3d27a455e5fce53d53 Mon Sep 17 00:00:00 2001
+From: Michael Adam <obnox@samba.org>
+Date: Fri, 13 Nov 2009 16:16:50 +0100
+Subject: [PATCH] s3:smbd: also fill the memcache with sid<->id mappings in ldapsam_sid_to_id()
+
+not only the persistent idmap cache.
+
+Michael
+---
+ source3/passdb/pdb_ldap.c | 2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+diff --git a/source3/passdb/pdb_ldap.c b/source3/passdb/pdb_ldap.c
+index 7fda72e..cce2cf1 100644
+--- a/source3/passdb/pdb_ldap.c
++++ b/source3/passdb/pdb_ldap.c
+@@ -4969,6 +4969,7 @@ static bool ldapsam_sid_to_id(struct pdb_methods *methods,
+
+ id->gid = strtoul(gid_str, NULL, 10);
+ *type = (enum lsa_SidType)strtoul(value, NULL, 10);
++ store_gid_sid_cache(sid, id->gid);
+ idmap_cache_set_sid2gid(sid, id->gid);
+ ret = True;
+ goto done;
+@@ -4986,6 +4987,7 @@ static bool ldapsam_sid_to_id(struct pdb_methods *methods,
+
+ id->uid = strtoul(value, NULL, 10);
+ *type = SID_NAME_USER;
++ store_uid_sid_cache(sid, id->uid);
+ idmap_cache_set_sid2uid(sid, id->uid);
+
+ ret = True;
+--
+1.6.0.4
+
+From d90798e8fa1f56a60cf0260dd8679bc11c41603b Mon Sep 17 00:00:00 2001
+From: Michael Adam <obnox@samba.org>
+Date: Mon, 16 Nov 2009 11:37:18 +0100
+Subject: [PATCH] s3: shortcut uid_to_sid when "ldapsam:trusted = yes"
+
+The normal uid_to_sid behaviour is to call sys_getpwuid()
+to get the name for the given uid and then call the
+getsampwnam passdb method for the resulting name.
+
+In the ldapsam:trusted case we can reduce the uid_to_sid
+operation to one simple search for the uidNumber attribute
+and only get the sambaSID attribute from the correspoinding
+LDAP object. This reduces the number of ldap roundtrips
+for this operation.
+
+Michael
+---
+ source3/passdb/pdb_ldap.c | 75 +++++++++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 75 insertions(+), 0 deletions(-)
+
+diff --git a/source3/passdb/pdb_ldap.c b/source3/passdb/pdb_ldap.c
+index cce2cf1..401bf95 100644
+--- a/source3/passdb/pdb_ldap.c
++++ b/source3/passdb/pdb_ldap.c
+@@ -4996,6 +4996,80 @@ static bool ldapsam_sid_to_id(struct pdb_methods *methods,
+ return ret;
+ }
+
++/**
++ * Find the SID for a uid.
++ * This is shortcut is only used if ldapsam:trusted is set to true.
++ */
++static bool ldapsam_uid_to_sid(struct pdb_methods *methods, uid_t uid,
++ DOM_SID *sid)
++{
++ struct ldapsam_privates *priv =
++ (struct ldapsam_privates *)methods->private_data;
++ char *filter;
++ const char *attrs[] = { "sambaSID", NULL };
++ LDAPMessage *result = NULL;
++ LDAPMessage *entry = NULL;
++ bool ret = false;
++ char *user_sid_string;
++ DOM_SID *user_sid;
++ int rc;
++ TALLOC_CTX *tmp_ctx = talloc_stackframe();
++
++ filter = talloc_asprintf(tmp_ctx,
++ "(&(uidNumber=%u)"
++ "(objectClass=%s)"
++ "(objectClass=%s))",
++ (unsigned int)uid,
++ LDAP_OBJ_POSIXACCOUNT,
++ LDAP_OBJ_SAMBASAMACCOUNT);
++ if (filter == NULL) {
++ DEBUG(3, ("talloc_asprintf failed\n"));
++ goto done;
++ }
++
++ rc = smbldap_search_suffix(priv->smbldap_state, filter, attrs, &result);
++ if (rc != LDAP_SUCCESS) {
++ goto done;
++ }
++ talloc_autofree_ldapmsg(tmp_ctx, result);
++
++ if (ldap_count_entries(priv2ld(priv), result) != 1) {
++ DEBUG(3, ("ERROR: Got %d entries for uid %u, expected one\n",
++ ldap_count_entries(priv2ld(priv), result),
++ (unsigned int)uid));
++ goto done;
++ }
++
++ entry = ldap_first_entry(priv2ld(priv), result);
++
++ user_sid_string = smbldap_talloc_single_attribute(priv2ld(priv), entry,
++ "sambaSID", tmp_ctx);
++ if (user_sid_string == NULL) {
++ DEBUG(1, ("Could not find sambaSID in object '%s'\n",
++ smbldap_talloc_dn(tmp_ctx, priv2ld(priv), entry)));
++ goto done;
++ }
++
++ user_sid = string_sid_talloc(tmp_ctx, user_sid_string);
++ if (user_sid == NULL) {
++ DEBUG(3, ("Error calling sid_string_talloc for sid '%s'\n",
++ user_sid_string));
++ goto done;
++ }
++
++ sid_copy(sid, user_sid);
++
++ store_uid_sid_cache(sid, uid);
++ idmap_cache_set_sid2uid(sid, uid);
++
++ ret = true;
++
++ done:
++ TALLOC_FREE(tmp_ctx);
++ return ret;
++}
++
++
+ /*
+ * The following functions is called only if
+ * ldapsam:trusted and ldapsam:editposix are
+@@ -6344,6 +6418,7 @@ NTSTATUS pdb_init_ldapsam(struct pdb_methods **pdb_method, const char *location)
+ ldapsam_enum_group_memberships;
+ (*pdb_method)->lookup_rids = ldapsam_lookup_rids;
+ (*pdb_method)->sid_to_id = ldapsam_sid_to_id;
++ (*pdb_method)->uid_to_sid = ldapsam_uid_to_sid;
+
+ if (lp_parm_bool(-1, "ldapsam", "editposix", False)) {
+ (*pdb_method)->create_user = ldapsam_create_user;
+--
+1.6.0.4
+
+From 179e63ae9aa93984ea3d237c1039460c5acf01a5 Mon Sep 17 00:00:00 2001
+From: Michael Adam <obnox@samba.org>
+Date: Thu, 14 Jan 2010 14:24:35 +0100
+Subject: [PATCH] s3:auth: fix account unlock regression introduced with fix for bug #4347
+MIME-Version: 1.0
+Content-Type: text/plain; charset=utf-8
+Content-Transfer-Encoding: 8bit
+
+By an oversight, the patchset for #4347 made the unlocking of a locked
+account after the lockout duration ineffective.
+Thanks to Björn for finding this!
+
+Michael
+---
+ source3/auth/auth_sam.c | 12 +++++-------
+ 1 files changed, 5 insertions(+), 7 deletions(-)
+
+diff --git a/source3/auth/auth_sam.c b/source3/auth/auth_sam.c
+index 1dd8fc9..01b2517 100644
+--- a/source3/auth/auth_sam.c
++++ b/source3/auth/auth_sam.c
+@@ -369,7 +369,6 @@ static NTSTATUS check_sam_security(const struct auth_context *auth_context,
+ DATA_BLOB user_sess_key = data_blob_null;
+ DATA_BLOB lm_sess_key = data_blob_null;
+ bool updated_autolock = False, updated_badpw = False;
+- uint32_t acct_ctrl;
+ const char *username;
+ const uint8_t *nt_pw;
+ const uint8_t *lm_pw;
+@@ -399,22 +398,21 @@ static NTSTATUS check_sam_security(const struct auth_context *auth_context,
+ return NT_STATUS_NO_SUCH_USER;
+ }
+
+- acct_ctrl = pdb_get_acct_ctrl(sampass);
+ username = pdb_get_username(sampass);
+ nt_pw = pdb_get_nt_passwd(sampass);
+ lm_pw = pdb_get_lanman_passwd(sampass);
+
+ /* see if autolock flag needs to be updated */
+- if (acct_ctrl & ACB_NORMAL)
++ if (pdb_get_acct_ctrl(sampass) & ACB_NORMAL)
+ pdb_update_autolock_flag(sampass, &updated_autolock);
+ /* Quit if the account was locked out. */
+- if (acct_ctrl & ACB_AUTOLOCK) {
++ if (pdb_get_acct_ctrl(sampass) & ACB_AUTOLOCK) {
+ DEBUG(3,("check_sam_security: Account for user %s was locked out.\n", username));
+ return NT_STATUS_ACCOUNT_LOCKED_OUT;
+ }
+
+ nt_status = sam_password_ok(auth_context, mem_ctx,
+- username, acct_ctrl, lm_pw, nt_pw,
++ username, pdb_get_acct_ctrl(sampass), lm_pw, nt_pw,
+ user_info, &user_sess_key, &lm_sess_key);
+
+ /* Notify passdb backend of login success/failure. If not
+@@ -426,7 +424,7 @@ static NTSTATUS check_sam_security(const struct auth_context *auth_context,
+ bool increment_bad_pw_count = false;
+
+ if (NT_STATUS_EQUAL(nt_status,NT_STATUS_WRONG_PASSWORD) &&
+- acct_ctrl & ACB_NORMAL &&
++ pdb_get_acct_ctrl(sampass) & ACB_NORMAL &&
+ NT_STATUS_IS_OK(update_login_attempts_status))
+ {
+ increment_bad_pw_count =
+@@ -457,7 +455,7 @@ static NTSTATUS check_sam_security(const struct auth_context *auth_context,
+ goto done;
+ }
+
+- if ((acct_ctrl & ACB_NORMAL) &&
++ if ((pdb_get_acct_ctrl(sampass) & ACB_NORMAL) &&
+ (pdb_get_bad_password_count(sampass) > 0)){
+ pdb_set_bad_password_count(sampass, 0, PDB_CHANGED);
+ pdb_set_bad_password_time(sampass, 0, PDB_CHANGED);
+--
+1.6.3.3
+
diff --git a/net/samba34/files/smb.conf.sample.in b/net/samba34/files/smb.conf.sample.in
new file mode 100644
index 000000000000..b55405bd56b4
--- /dev/null
+++ b/net/samba34/files/smb.conf.sample.in
@@ -0,0 +1,291 @@
+# This is the main Samba configuration file. You should read the
+# smb.conf(5) manual page in order to understand the options listed
+# here. Samba has a huge number of configurable options (perhaps too
+# many!) most of which are not shown in this example
+#
+# For a step to step guide on installing, configuring and using samba,
+# read the Samba-HOWTO-Collection. This may be obtained from:
+# http://www.samba.org/samba/docs/Samba-HOWTO-Collection.pdf
+#
+# Many working examples of smb.conf files can be found in the
+# Samba-Guide which is generated daily and can be downloaded from:
+# http://www.samba.org/samba/docs/Samba-Guide.pdf
+#
+# Any line which starts with a ; (semi-colon) or a # (hash)
+# is a comment and is ignored. In this example we will use a #
+# for commentry and a ; for parts of the config file that you
+# may wish to enable
+#
+# NOTE: Whenever you modify this file you should run the command "testparm"
+# to check that you have not made any basic syntactic errors.
+#
+#======================= Global Settings =====================================
+[global]
+
+# workgroup = NT-Domain-Name or Workgroup-Name, eg: MIDEARTH
+ workgroup = MYGROUP
+
+# server string is the equivalent of the NT Description field
+ server string = Samba Server
+
+# Security mode. Defines in which mode Samba will operate. Possible
+# values are share, user, server, domain and ads. Most people will want
+# user level security. See the Samba-HOWTO-Collection for details.
+ security = user
+
+# This option is important for security. It allows you to restrict
+# connections to machines which are on your local network. The
+# following example restricts access to two C class networks and
+# the "loopback" interface. For more examples of the syntax see
+# the smb.conf man page
+; hosts allow = 192.168.1. 192.168.2. 127.
+
+# If you want to automatically load your printer list rather
+# than setting them up individually then you'll need this
+ load printers = yes
+
+# you may wish to override the location of the printcap file
+; printcap name = /etc/printcap
+
+# on SystemV system setting printcap name to lpstat should allow
+# you to automatically obtain a printer list from the SystemV spool
+# system
+; printcap name = lpstat
+
+# It should not be necessary to specify the print system type unless
+# it is non-standard. Currently supported print systems include:
+# bsd, cups, sysv, plp, lprng, aix, hpux, qnx
+; printing = cups
+
+# Uncomment this if you want a guest account, you must add this to /etc/passwd
+# otherwise the user "nobody" is used
+; guest account = pcguest
+
+# this tells Samba to use a separate log file for each machine
+# that connects
+ log file = %%SAMBA_LOGDIR%%/log.%m
+
+# Put a capping on the size of the log files (in Kb).
+ max log size = 50
+
+# Use password server option only with security = server
+# The argument list may include:
+# password server = My_PDC_Name [My_BDC_Name] [My_Next_BDC_Name]
+# or to auto-locate the domain controller/s
+# password server = *
+; password server = <NT-Server-Name>
+
+# Use the realm option only with security = ads
+# Specifies the Active Directory realm the host is part of
+; realm = MY_REALM
+
+# Backend to store user information in. New installations should
+# use either tdbsam or ldapsam. smbpasswd is available for backwards
+# compatibility. tdbsam requires no further configuration.
+; passdb backend = tdbsam
+
+# Using the following line enables you to customise your configuration
+# on a per machine basis. The %m gets replaced with the netbios name
+# of the machine that is connecting.
+# Note: Consider carefully the location in the configuration file of
+# this line. The included file is read at that point.
+; include = %%SAMBA_CONFDIR%%/smb.conf.%m
+
+# Most people will find that this option gives better performance.
+# See the chapter 'Samba performance issues' in the Samba HOWTO Collection
+# and the manual pages for details.
+# You may want to add the following on a Linux system:
+; socket options = SO_RCVBUF=8192 SO_SNDBUF=8192
+
+# Configure Samba to use multiple interfaces
+# If you have multiple network interfaces then you must list them
+# here. See the man page for details.
+; interfaces = 192.168.12.2/24 192.168.13.2/24
+
+# Browser Control Options:
+# set local master to no if you don't want Samba to become a master
+# browser on your network. Otherwise the normal election rules apply
+; local master = no
+
+# OS Level determines the precedence of this server in master browser
+# elections. The default value should be reasonable
+; os level = 33
+
+# Domain Master specifies Samba to be the Domain Master Browser. This
+# allows Samba to collate browse lists between subnets. Don't use this
+# if you already have a Windows NT domain controller doing this job
+; domain master = yes
+
+# Preferred Master causes Samba to force a local browser election on startup
+# and gives it a slightly higher chance of winning the election
+; preferred master = yes
+
+# Enable this if you want Samba to be a domain logon server for
+# Windows95 workstations.
+; domain logons = yes
+
+# if you enable domain logons then you may want a per-machine or
+# per user logon script
+# run a specific logon batch file per workstation (machine)
+; logon script = %m.bat
+# run a specific logon batch file per username
+; logon script = %U.bat
+
+# Where to store roving profiles (only for Win95 and WinNT)
+# %L substitutes for this servers netbios name, %U is username
+# You must uncomment the [Profiles] share below
+; logon path = \\%L\Profiles\%U
+
+# Windows Internet Name Serving Support Section:
+# WINS Support - Tells the NMBD component of Samba to enable it's WINS Server
+; wins support = yes
+
+# WINS Server - Tells the NMBD components of Samba to be a WINS Client
+# Note: Samba can be either a WINS Server, or a WINS Client, but NOT both
+; wins server = w.x.y.z
+
+# WINS Proxy - Tells Samba to answer name resolution queries on
+# behalf of a non WINS capable client, for this to work there must be
+# at least one WINS Server on the network. The default is NO.
+; wins proxy = yes
+
+# DNS Proxy - tells Samba whether or not to try to resolve NetBIOS names
+# via DNS nslookups. The default is NO.
+ dns proxy = no
+
+# Charset settings
+; display charset = koi8-r
+; unix charset = koi8-r
+; dos charset = cp866
+
+# Use extended attributes to store file modes
+; store dos attributes = yes
+; map hidden = no
+; map system = no
+; map archive = no
+
+# Use inherited ACLs for directories
+; nt acl support = yes
+; inherit acls = yes
+; map acl inherit = yes
+
+# These scripts are used on a domain controller or stand-alone
+# machine to add or delete corresponding unix accounts
+; add user script = /usr/sbin/useradd %u
+; add group script = /usr/sbin/groupadd %g
+; add machine script = /usr/sbin/adduser -n -g machines -c Machine -d /dev/null -s /bin/false %u
+; delete user script = /usr/sbin/userdel %u
+; delete user from group script = /usr/sbin/deluser %u %g
+; delete group script = /usr/sbin/groupdel %g
+
+
+#============================ Share Definitions ==============================
+[homes]
+ comment = Home Directories
+ browseable = no
+ writable = yes
+
+# Un-comment the following and create the netlogon directory for Domain Logons
+; [netlogon]
+; comment = Network Logon Service
+; path = /usr/local/samba/lib/netlogon
+; guest ok = yes
+; writable = no
+; share modes = no
+
+
+# Un-comment the following to provide a specific roving profile share
+# the default is to use the user's home directory
+;[Profiles]
+; path = /usr/local/samba/profiles
+; browseable = no
+; guest ok = yes
+
+
+# NOTE: If you have a BSD-style print system there is no need to
+# specifically define each individual printer
+[printers]
+ comment = All Printers
+ path = %%SAMBA_SPOOL%%
+ browseable = no
+# Set public = yes to allow user 'guest account' to print
+ guest ok = no
+ writable = no
+ printable = yes
+
+# This one is useful for people to share files
+;[tmp]
+; comment = Temporary file space
+; path = /tmp
+; read only = no
+; public = yes
+
+# A publicly accessible directory, but read only, except for people in
+# the "staff" group
+;[public]
+; comment = Public Stuff
+; path = /home/samba
+; public = yes
+; writable = yes
+; printable = no
+; write list = @staff
+
+# Other examples.
+#
+# A private printer, usable only by fred. Spool data will be placed in fred's
+# home directory. Note that fred must have write access to the spool directory,
+# wherever it is.
+;[fredsprn]
+; comment = Fred's Printer
+; valid users = fred
+; path = /homes/fred
+; printer = freds_printer
+; public = no
+; writable = no
+; printable = yes
+
+# A private directory, usable only by fred. Note that fred requires write
+# access to the directory.
+;[fredsdir]
+; comment = Fred's Service
+; path = /usr/somewhere/private
+; valid users = fred
+; public = no
+; writable = yes
+; printable = no
+
+# a service which has a different directory for each machine that connects
+# this allows you to tailor configurations to incoming machines. You could
+# also use the %U option to tailor it by user name.
+# The %m gets replaced with the machine name that is connecting.
+;[pchome]
+; comment = PC Directories
+; path = /usr/pc/%m
+; public = no
+; writable = yes
+
+# A publicly accessible directory, read/write to all users. Note that all files
+# created in the directory by users will be owned by the default user, so
+# any user with access can delete any other user's files. Obviously this
+# directory must be writable by the default user. Another user could of course
+# be specified, in which case all files would be owned by that user instead.
+;[public]
+; path = /usr/somewhere/else/public
+; public = yes
+; only guest = yes
+; writable = yes
+; printable = no
+
+# The following two entries demonstrate how to share a directory so that two
+# users can place files there that will be owned by the specific users. In this
+# setup, the directory should be writable by both users and should have the
+# sticky bit set on it to prevent abuse. Obviously this could be extended to
+# as many users as required.
+;[myshare]
+; comment = Mary's and Fred's stuff
+; path = /usr/somewhere/shared
+; valid users = mary fred
+; public = no
+; writable = yes
+; printable = no
+; create mask = 0765
diff --git a/net/samba34/pkg-descr b/net/samba34/pkg-descr
new file mode 100644
index 000000000000..28f431acf0f7
--- /dev/null
+++ b/net/samba34/pkg-descr
@@ -0,0 +1,12 @@
+The Samba suite is a set of programs which run under the FreeBSD
+operating system. These programs deliver most of the important
+functionality of a Microsoft Lan Manager server. That is, they support
+remote access to FreeBSD filespace and FreeBSD printers from Lan Manager
+compatible clients. In practical terms, this means that such clients can
+connect to and use FreeBSD filespace as if it was a local disk drive, or
+FreeBSD printers as if they were local printers.
+
+Some of the most popular Lan Manager compatible clients include Lan
+Manager itself, Windows for Workgroups, OS/2 and Windows NT.
+
+WWW: http://www.samba.org/
diff --git a/net/samba34/pkg-plist b/net/samba34/pkg-plist
new file mode 100644
index 000000000000..72f047d15e1b
--- /dev/null
+++ b/net/samba34/pkg-plist
@@ -0,0 +1,231 @@
+bin/eventlogadm
+bin/findsmb
+bin/ldbadd
+bin/ldbdel
+bin/ldbedit
+bin/ldbmodify
+bin/ldbrename
+bin/ldbsearch
+bin/make_smbpasswd
+bin/net
+bin/nmblookup
+bin/ntlm_auth
+bin/pdbedit
+bin/profiles
+bin/rpcclient
+bin/sharesec
+bin/smbcacls
+bin/smbclient
+bin/smbcontrol
+bin/smbcquotas
+bin/smbget
+bin/smbpasswd
+bin/smbspool
+bin/smbstatus
+bin/smbtar
+bin/smbtree
+bin/tdbbackup
+bin/tdbdump
+bin/tdbtool
+bin/testparm
+%%SMBTORTURE%%bin/smbtorture
+%%WINBIND%%bin/wbinfo
+sbin/smbd
+sbin/nmbd
+%%SWAT%%sbin/swat
+%%WINBIND%%sbin/winbindd
+%%WINBIND%%lib/nss_winbind.so.1
+%%WINBIND%%lib/nss_wins.so.1
+%%WINBIND%%lib/pam_winbind.so
+%%SMBPASS%%lib/pam_smbpass.so
+%%EXAMPLESDIR%%/%%SAMBA_CONFIG%%.sample
+%%EXAMPLESDIR%%/LDAP/README
+%%EXAMPLESDIR%%/LDAP/convertSambaAccount
+%%EXAMPLESDIR%%/LDAP/get_next_oid
+%%EXAMPLESDIR%%/LDAP/ol-schema-migrate.pl
+%%EXAMPLESDIR%%/LDAP/samba-nds.schema
+%%EXAMPLESDIR%%/LDAP/samba-schema-FDS.ldif
+%%EXAMPLESDIR%%/LDAP/samba-schema-netscapeds4.x
+%%EXAMPLESDIR%%/LDAP/samba-schema-netscapeds5.x
+%%EXAMPLESDIR%%/LDAP/samba-schema.IBMSecureWay
+%%EXAMPLESDIR%%/LDAP/samba.schema
+%%EXAMPLESDIR%%/LDAP/samba.schema.at.IBM-DS
+%%EXAMPLESDIR%%/LDAP/samba.schema.oc.IBM-DS
+%%EXAMPLESDIR%%/README
+%%EXAMPLESDIR%%/VFS/Makefile.in
+%%EXAMPLESDIR%%/VFS/README
+%%EXAMPLESDIR%%/VFS/autogen.sh
+%%EXAMPLESDIR%%/VFS/config.guess
+%%EXAMPLESDIR%%/VFS/config.sub
+%%EXAMPLESDIR%%/VFS/configure.in
+%%EXAMPLESDIR%%/VFS/install-sh
+%%EXAMPLESDIR%%/VFS/shadow_copy_test.c
+%%EXAMPLESDIR%%/VFS/skel_opaque.c
+%%EXAMPLESDIR%%/VFS/skel_transparent.c
+%%EXAMPLESDIR%%/auth/Makefile
+%%EXAMPLESDIR%%/auth/auth_skel.c
+%%EXAMPLESDIR%%/auth/crackcheck/Makefile
+%%EXAMPLESDIR%%/auth/crackcheck/crackcheck.c
+%%EXAMPLESDIR%%/autofs/auto.smb
+%%EXAMPLESDIR%%/dce-dfs/README
+%%EXAMPLESDIR%%/dce-dfs/smb.conf
+%%EXAMPLESDIR%%/logon/genlogon/genlogon.pl
+%%EXAMPLESDIR%%/logon/mklogon/mklogon.conf
+%%EXAMPLESDIR%%/logon/mklogon/mklogon.pl
+%%EXAMPLESDIR%%/logon/ntlogon/README
+%%EXAMPLESDIR%%/logon/ntlogon/ntlogon.conf
+%%EXAMPLESDIR%%/logon/ntlogon/ntlogon.py
+%%EXAMPLESDIR%%/misc/adssearch.pl
+%%EXAMPLESDIR%%/misc/check_multiple_LDAP_entries.pl
+%%EXAMPLESDIR%%/misc/cldap.pl
+%%EXAMPLESDIR%%/misc/extra_smbstatus
+%%EXAMPLESDIR%%/misc/swat.pl
+%%EXAMPLESDIR%%/misc/wall.perl
+%%EXAMPLESDIR%%/nss/nss_winbind.c
+%%EXAMPLESDIR%%/nss/nss_winbind.h
+%%EXAMPLESDIR%%/nss/wbtest.c
+%%SMBPASS%%%%EXAMPLESDIR%%/pam_smbpass/README
+%%SMBPASS%%%%EXAMPLESDIR%%/pam_smbpass/kdc-pdc
+%%SMBPASS%%%%EXAMPLESDIR%%/pam_smbpass/password-mature
+%%SMBPASS%%%%EXAMPLESDIR%%/pam_smbpass/password-migration
+%%SMBPASS%%%%EXAMPLESDIR%%/pam_smbpass/password-sync
+%%EXAMPLESDIR%%/pam_winbind/pam_winbind.conf
+%%EXAMPLESDIR%%/pcap2nbench/COPYING
+%%EXAMPLESDIR%%/pcap2nbench/Makefile
+%%EXAMPLESDIR%%/pcap2nbench/README
+%%EXAMPLESDIR%%/pcap2nbench/closerequest.cpp
+%%EXAMPLESDIR%%/pcap2nbench/closerequest.hpp
+%%EXAMPLESDIR%%/pcap2nbench/ethernet.cpp
+%%EXAMPLESDIR%%/pcap2nbench/ethernet.hpp
+%%EXAMPLESDIR%%/pcap2nbench/ip.cpp
+%%EXAMPLESDIR%%/pcap2nbench/ip.hpp
+%%EXAMPLESDIR%%/pcap2nbench/main.cpp
+%%EXAMPLESDIR%%/pcap2nbench/ntcreateandxrequest.cpp
+%%EXAMPLESDIR%%/pcap2nbench/ntcreateandxrequest.hpp
+%%EXAMPLESDIR%%/pcap2nbench/ntcreateandxresponse.cpp
+%%EXAMPLESDIR%%/pcap2nbench/ntcreateandxresponse.hpp
+%%EXAMPLESDIR%%/pcap2nbench/readandxrequest.cpp
+%%EXAMPLESDIR%%/pcap2nbench/readandxrequest.hpp
+%%EXAMPLESDIR%%/pcap2nbench/readandxresponse.hpp
+%%EXAMPLESDIR%%/pcap2nbench/smb.cpp
+%%EXAMPLESDIR%%/pcap2nbench/smb.hpp
+%%EXAMPLESDIR%%/pcap2nbench/tcp.cpp
+%%EXAMPLESDIR%%/pcap2nbench/tcp.hpp
+%%EXAMPLESDIR%%/pcap2nbench/writeandxrequest.cpp
+%%EXAMPLESDIR%%/pcap2nbench/writeandxrequest.hpp
+%%EXAMPLESDIR%%/pdb/Makefile
+%%EXAMPLESDIR%%/pdb/README
+%%EXAMPLESDIR%%/pdb/test.c
+%%EXAMPLESDIR%%/perfcounter/Makefile
+%%EXAMPLESDIR%%/perfcounter/perf.h
+%%EXAMPLESDIR%%/perfcounter/perf_writer.c
+%%EXAMPLESDIR%%/perfcounter/perf_writer_cpu.c
+%%EXAMPLESDIR%%/perfcounter/perf_writer_disk.c
+%%EXAMPLESDIR%%/perfcounter/perf_writer_mem.c
+%%EXAMPLESDIR%%/perfcounter/perf_writer_process.c
+%%EXAMPLESDIR%%/perfcounter/perf_writer_util.c
+%%EXAMPLESDIR%%/perfcounter/perfcountd.init
+%%EXAMPLESDIR%%/printer-accounting/README
+%%EXAMPLESDIR%%/printer-accounting/acct-all
+%%EXAMPLESDIR%%/printer-accounting/acct-sum
+%%EXAMPLESDIR%%/printer-accounting/hp5-redir
+%%EXAMPLESDIR%%/printer-accounting/lp-acct
+%%EXAMPLESDIR%%/printer-accounting/printcap
+%%EXAMPLESDIR%%/printing/VampireDriversFunctions
+%%EXAMPLESDIR%%/printing/prtpub.c
+%%EXAMPLESDIR%%/printing/readme.prtpub
+%%EXAMPLESDIR%%/printing/smbprint
+%%EXAMPLESDIR%%/printing/smbprint.sysv
+%%EXAMPLESDIR%%/scripts/debugging/linux/backtrace
+%%EXAMPLESDIR%%/scripts/debugging/solaris/README
+%%EXAMPLESDIR%%/scripts/debugging/solaris/solaris-oops.sh
+%%EXAMPLESDIR%%/scripts/eventlog/parselog.pl
+%%EXAMPLESDIR%%/scripts/mount/mount.smbfs
+%%EXAMPLESDIR%%/scripts/printing/cups/smbaddprinter.pl
+%%EXAMPLESDIR%%/scripts/printing/cups/smbdelprinter.pl
+%%EXAMPLESDIR%%/scripts/shares/perl/modify_samba_config.pl
+%%EXAMPLESDIR%%/scripts/shares/python/SambaConfig.py
+%%EXAMPLESDIR%%/scripts/shares/python/SambaParm.py
+%%EXAMPLESDIR%%/scripts/shares/python/generate_parm_table.py
+%%EXAMPLESDIR%%/scripts/shares/python/modify_samba_config.py
+%%EXAMPLESDIR%%/scripts/shares/python/smbparm.py
+%%EXAMPLESDIR%%/scripts/users_and_groups/adduserstogroups.pl
+%%EXAMPLESDIR%%/scripts/users_and_groups/createdomobj.pl
+%%EXAMPLESDIR%%/scripts/wins_hook/README
+%%EXAMPLESDIR%%/scripts/wins_hook/dns_update
+%%EXAMPLESDIR%%/smb.conf.default
+%%EXAMPLESDIR%%/tridge/README
+%%EXAMPLESDIR%%/tridge/smb.conf
+%%EXAMPLESDIR%%/tridge/smb.conf.WinNT
+%%EXAMPLESDIR%%/tridge/smb.conf.fjall
+%%EXAMPLESDIR%%/tridge/smb.conf.lapland
+%%EXAMPLESDIR%%/tridge/smb.conf.vittjokk
+%%EXAMPLESDIR%%/validchars/msdos70.out
+%%EXAMPLESDIR%%/validchars/nwdos70.out
+%%EXAMPLESDIR%%/validchars/readme
+%%EXAMPLESDIR%%/validchars/validchr.c
+%%EXAMPLESDIR%%/validchars/validchr.com
+@dirrm %%EXAMPLESDIR%%/validchars
+@dirrm %%EXAMPLESDIR%%/tridge
+@dirrm %%EXAMPLESDIR%%/scripts/wins_hook
+@dirrm %%EXAMPLESDIR%%/scripts/users_and_groups
+@dirrm %%EXAMPLESDIR%%/scripts/shares/python
+@dirrm %%EXAMPLESDIR%%/scripts/shares/perl
+@dirrm %%EXAMPLESDIR%%/scripts/shares
+@dirrm %%EXAMPLESDIR%%/scripts/printing/cups
+@dirrm %%EXAMPLESDIR%%/scripts/printing
+@dirrm %%EXAMPLESDIR%%/scripts/mount
+@dirrm %%EXAMPLESDIR%%/scripts/eventlog
+@dirrm %%EXAMPLESDIR%%/scripts/debugging/solaris
+@dirrm %%EXAMPLESDIR%%/scripts/debugging/linux
+@dirrm %%EXAMPLESDIR%%/scripts/debugging
+@dirrm %%EXAMPLESDIR%%/scripts
+@dirrm %%EXAMPLESDIR%%/printing
+@dirrm %%EXAMPLESDIR%%/printer-accounting
+@dirrm %%EXAMPLESDIR%%/perfcounter
+@dirrm %%EXAMPLESDIR%%/pdb
+@dirrm %%EXAMPLESDIR%%/pcap2nbench
+@dirrm %%EXAMPLESDIR%%/pam_winbind
+%%SMBPASS%%@dirrm %%EXAMPLESDIR%%/pam_smbpass
+@dirrm %%EXAMPLESDIR%%/nss
+@dirrm %%EXAMPLESDIR%%/misc
+@dirrm %%EXAMPLESDIR%%/logon/ntlogon
+@dirrm %%EXAMPLESDIR%%/logon/mklogon
+@dirrm %%EXAMPLESDIR%%/logon/genlogon
+@dirrm %%EXAMPLESDIR%%/logon
+@dirrm %%EXAMPLESDIR%%/dce-dfs
+@dirrm %%EXAMPLESDIR%%/autofs
+@dirrm %%EXAMPLESDIR%%/auth/crackcheck
+@dirrm %%EXAMPLESDIR%%/auth
+@dirrm %%EXAMPLESDIR%%/VFS
+@dirrm %%EXAMPLESDIR%%/LDAP
+@dirrm %%EXAMPLESDIR%%
+%%PORTDOCS%%%%DOCSDIR%%/COPYING
+%%PORTDOCS%%%%DOCSDIR%%/MAINTAINERS
+%%PORTDOCS%%%%DOCSDIR%%/Manifest
+%%PORTDOCS%%%%DOCSDIR%%/PFIF.txt
+%%PORTDOCS%%%%DOCSDIR%%/README
+%%PORTDOCS%%%%DOCSDIR%%/README.FreeBSD
+%%PORTDOCS%%%%DOCSDIR%%/Roadmap
+%%PORTDOCS%%%%DOCSDIR%%/Samba3-ByExample.pdf
+%%PORTDOCS%%%%DOCSDIR%%/Samba3-Developers-Guide.pdf
+%%PORTDOCS%%%%DOCSDIR%%/Samba3-HOWTO.pdf
+%%PORTDOCS%%%%DOCSDIR%%/THANKS
+%%PORTDOCS%%%%DOCSDIR%%/WHATSNEW.txt
+%%PORTDOCS%%%%DOCSDIR%%/history
+%%PORTDOCS%%%%DOCSDIR%%/registry/FolderRedir.adm
+%%PORTDOCS%%%%DOCSDIR%%/registry/NT4-Locking.reg
+%%PORTDOCS%%%%DOCSDIR%%/registry/NT4_PlainPassword.reg
+%%PORTDOCS%%%%DOCSDIR%%/registry/Win-2Kx-XPP-DeleteCachedProfiles.reg
+%%PORTDOCS%%%%DOCSDIR%%/registry/Win-2Kx-XPP-ForceLocalProfile.reg
+%%PORTDOCS%%%%DOCSDIR%%/registry/Win-NT-DeleteRoamingProfile.reg
+%%PORTDOCS%%%%DOCSDIR%%/registry/Win2000_PlainPassword.reg
+%%PORTDOCS%%%%DOCSDIR%%/registry/Win7_Samba3DomainMember.reg
+%%PORTDOCS%%%%DOCSDIR%%/registry/Win95_PlainPassword.reg
+%%PORTDOCS%%%%DOCSDIR%%/registry/Win98_PlainPassword.reg
+%%PORTDOCS%%%%DOCSDIR%%/registry/Win9X-CacheHandling.reg
+%%PORTDOCS%%%%DOCSDIR%%/registry/WinME_PlainPassword.reg
+%%PORTDOCS%%%%DOCSDIR%%/registry/WinXP_PlainPassword.reg
+%%PORTDOCS%%%%DOCSDIR%%/registry/WindowsTerminalServer.reg
+%%PORTDOCS%%@dirrm %%DOCSDIR%%/registry
+%%PORTDOCS%%@dirrm %%DOCSDIR%%
diff --git a/net/samba34/pkg-plist.swat b/net/samba34/pkg-plist.swat
new file mode 100644
index 000000000000..9155587b6844
--- /dev/null
+++ b/net/samba34/pkg-plist.swat
@@ -0,0 +1,499 @@
+share/swat/help/Samba3-ByExample/2000users.html
+share/swat/help/Samba3-ByExample/Big500users.html
+share/swat/help/Samba3-ByExample/DMSMig.html
+share/swat/help/Samba3-ByExample/DomApps.html
+share/swat/help/Samba3-ByExample/ExNetworks.html
+share/swat/help/Samba3-ByExample/HA.html
+share/swat/help/Samba3-ByExample/RefSection.html
+share/swat/help/Samba3-ByExample/apa.html
+share/swat/help/Samba3-ByExample/appendix.html
+share/swat/help/Samba3-ByExample/ch14.html
+share/swat/help/Samba3-ByExample/go01.html
+share/swat/help/Samba3-ByExample/happy.html
+share/swat/help/Samba3-ByExample/images/AccountingNetwork.png
+share/swat/help/Samba3-ByExample/images/Charity-Network.png
+share/swat/help/Samba3-ByExample/images/HostAnnouncment.png
+share/swat/help/Samba3-ByExample/images/NullConnect.png
+share/swat/help/Samba3-ByExample/images/UNIX-Samba-and-LDAP.png
+share/swat/help/Samba3-ByExample/images/UserConnect.png
+share/swat/help/Samba3-ByExample/images/UserMgrNT4.png
+share/swat/help/Samba3-ByExample/images/WINREPRESSME-Capture.png
+share/swat/help/Samba3-ByExample/images/WINREPRESSME-Capture2.png
+share/swat/help/Samba3-ByExample/images/WindowsXP-NullConnection.png
+share/swat/help/Samba3-ByExample/images/WindowsXP-UserConnection.png
+share/swat/help/Samba3-ByExample/images/XP-screen001.png
+share/swat/help/Samba3-ByExample/images/acct2net.png
+share/swat/help/Samba3-ByExample/images/ch7-dual-additive-LDAP-Ok.png
+share/swat/help/Samba3-ByExample/images/ch7-dual-additive-LDAP.png
+share/swat/help/Samba3-ByExample/images/ch7-fail-overLDAP.png
+share/swat/help/Samba3-ByExample/images/ch7-singleLDAP.png
+share/swat/help/Samba3-ByExample/images/ch8-migration.png
+share/swat/help/Samba3-ByExample/images/chap4-net.png
+share/swat/help/Samba3-ByExample/images/chap5-net.png
+share/swat/help/Samba3-ByExample/images/chap6-net.png
+share/swat/help/Samba3-ByExample/images/chap7-idresol.png
+share/swat/help/Samba3-ByExample/images/chap7-net-Ar.png
+share/swat/help/Samba3-ByExample/images/chap7-net2-Br.png
+share/swat/help/Samba3-ByExample/images/chap9-ADSDC.png
+share/swat/help/Samba3-ByExample/images/chap9-SambaDC.png
+share/swat/help/Samba3-ByExample/images/imc-usermanager2.png
+share/swat/help/Samba3-ByExample/images/lam-config.png
+share/swat/help/Samba3-ByExample/images/lam-group-members.png
+share/swat/help/Samba3-ByExample/images/lam-groups.png
+share/swat/help/Samba3-ByExample/images/lam-hosts.png
+share/swat/help/Samba3-ByExample/images/lam-login.png
+share/swat/help/Samba3-ByExample/images/lam-users.png
+share/swat/help/Samba3-ByExample/images/openmag.png
+share/swat/help/Samba3-ByExample/images/wxpp001.png
+share/swat/help/Samba3-ByExample/images/wxpp004.png
+share/swat/help/Samba3-ByExample/images/wxpp006.png
+share/swat/help/Samba3-ByExample/images/wxpp007.png
+share/swat/help/Samba3-ByExample/images/wxpp008.png
+share/swat/help/Samba3-ByExample/index.html
+share/swat/help/Samba3-ByExample/ix01.html
+share/swat/help/Samba3-ByExample/kerberos.html
+share/swat/help/Samba3-ByExample/ntmigration.html
+share/swat/help/Samba3-ByExample/nw4migration.html
+share/swat/help/Samba3-ByExample/pr01.html
+share/swat/help/Samba3-ByExample/pr02.html
+share/swat/help/Samba3-ByExample/pr03.html
+share/swat/help/Samba3-ByExample/preface.html
+share/swat/help/Samba3-ByExample/primer.html
+share/swat/help/Samba3-ByExample/secure.html
+share/swat/help/Samba3-ByExample/simple.html
+share/swat/help/Samba3-ByExample/small.html
+share/swat/help/Samba3-ByExample/unixclients.html
+share/swat/help/Samba3-ByExample/upgrades.html
+share/swat/help/Samba3-Developers-Guide/CodingSuggestions.html
+share/swat/help/Samba3-Developers-Guide/Packaging.html
+share/swat/help/Samba3-Developers-Guide/architecture.html
+share/swat/help/Samba3-Developers-Guide/contributing.html
+share/swat/help/Samba3-Developers-Guide/debug.html
+share/swat/help/Samba3-Developers-Guide/devprinting.html
+share/swat/help/Samba3-Developers-Guide/index.html
+share/swat/help/Samba3-Developers-Guide/internals.html
+share/swat/help/Samba3-Developers-Guide/modules.html
+share/swat/help/Samba3-Developers-Guide/ntdomain.html
+share/swat/help/Samba3-Developers-Guide/parsing.html
+share/swat/help/Samba3-Developers-Guide/pr01.html
+share/swat/help/Samba3-Developers-Guide/pt01.html
+share/swat/help/Samba3-Developers-Guide/pt02.html
+share/swat/help/Samba3-Developers-Guide/pt03.html
+share/swat/help/Samba3-Developers-Guide/pt04.html
+share/swat/help/Samba3-Developers-Guide/pt05.html
+share/swat/help/Samba3-Developers-Guide/pwencrypt.html
+share/swat/help/Samba3-Developers-Guide/rpc-plugin.html
+share/swat/help/Samba3-Developers-Guide/tracing.html
+share/swat/help/Samba3-Developers-Guide/unix-smb.html
+share/swat/help/Samba3-Developers-Guide/vfs.html
+share/swat/help/Samba3-Developers-Guide/wins.html
+share/swat/help/Samba3-HOWTO/AccessControls.html
+share/swat/help/Samba3-HOWTO/AdvancedNetworkManagement.html
+share/swat/help/Samba3-HOWTO/Appendix.html
+share/swat/help/Samba3-HOWTO/Backup.html
+share/swat/help/Samba3-HOWTO/CUPS-printing.html
+share/swat/help/Samba3-HOWTO/ChangeNotes.html
+share/swat/help/Samba3-HOWTO/ClientConfig.html
+share/swat/help/Samba3-HOWTO/DNSDHCP.html
+share/swat/help/Samba3-HOWTO/FastStart.html
+share/swat/help/Samba3-HOWTO/InterdomainTrusts.html
+share/swat/help/Samba3-HOWTO/IntroSMB.html
+share/swat/help/Samba3-HOWTO/NT4Migration.html
+share/swat/help/Samba3-HOWTO/NetCommand.html
+share/swat/help/Samba3-HOWTO/NetworkBrowsing.html
+share/swat/help/Samba3-HOWTO/Other-Clients.html
+share/swat/help/Samba3-HOWTO/PolicyMgmt.html
+share/swat/help/Samba3-HOWTO/Portability.html
+share/swat/help/Samba3-HOWTO/ProfileMgmt.html
+share/swat/help/Samba3-HOWTO/SWAT.html
+share/swat/help/Samba3-HOWTO/SambaHA.html
+share/swat/help/Samba3-HOWTO/ServerType.html
+share/swat/help/Samba3-HOWTO/StandAloneServer.html
+share/swat/help/Samba3-HOWTO/TOSHpreface.html
+share/swat/help/Samba3-HOWTO/VFS.html
+share/swat/help/Samba3-HOWTO/apa.html
+share/swat/help/Samba3-HOWTO/bugreport.html
+share/swat/help/Samba3-HOWTO/cfgsmarts.html
+share/swat/help/Samba3-HOWTO/ch-ldap-tls.html
+share/swat/help/Samba3-HOWTO/ch47.html
+share/swat/help/Samba3-HOWTO/classicalprinting.html
+share/swat/help/Samba3-HOWTO/compiling.html
+share/swat/help/Samba3-HOWTO/diagnosis.html
+share/swat/help/Samba3-HOWTO/domain-member.html
+share/swat/help/Samba3-HOWTO/go01.html
+share/swat/help/Samba3-HOWTO/groupmapping.html
+share/swat/help/Samba3-HOWTO/idmapper.html
+share/swat/help/Samba3-HOWTO/images/10small.png
+share/swat/help/Samba3-HOWTO/images/11small.png
+share/swat/help/Samba3-HOWTO/images/12small.png
+share/swat/help/Samba3-HOWTO/images/13small.png
+share/swat/help/Samba3-HOWTO/images/14small.png
+share/swat/help/Samba3-HOWTO/images/1small.png
+share/swat/help/Samba3-HOWTO/images/2small.png
+share/swat/help/Samba3-HOWTO/images/3small.png
+share/swat/help/Samba3-HOWTO/images/4small.png
+share/swat/help/Samba3-HOWTO/images/5small.png
+share/swat/help/Samba3-HOWTO/images/6small.png
+share/swat/help/Samba3-HOWTO/images/7small.png
+share/swat/help/Samba3-HOWTO/images/8small.png
+share/swat/help/Samba3-HOWTO/images/9small.png
+share/swat/help/Samba3-HOWTO/images/WME001.png
+share/swat/help/Samba3-HOWTO/images/WME002.png
+share/swat/help/Samba3-HOWTO/images/WME003.png
+share/swat/help/Samba3-HOWTO/images/WME005.png
+share/swat/help/Samba3-HOWTO/images/WME009.png
+share/swat/help/Samba3-HOWTO/images/WME010.png
+share/swat/help/Samba3-HOWTO/images/WME013.png
+share/swat/help/Samba3-HOWTO/images/WME014.png
+share/swat/help/Samba3-HOWTO/images/WXPP002.png
+share/swat/help/Samba3-HOWTO/images/WXPP003.png
+share/swat/help/Samba3-HOWTO/images/WXPP005.png
+share/swat/help/Samba3-HOWTO/images/WXPP009.png
+share/swat/help/Samba3-HOWTO/images/WXPP014.png
+share/swat/help/Samba3-HOWTO/images/a_small.png
+share/swat/help/Samba3-HOWTO/images/access1.png
+share/swat/help/Samba3-HOWTO/images/browsing1.png
+share/swat/help/Samba3-HOWTO/images/cups1.png
+share/swat/help/Samba3-HOWTO/images/cups2.png
+share/swat/help/Samba3-HOWTO/images/domain.png
+share/swat/help/Samba3-HOWTO/images/ethereal1.png
+share/swat/help/Samba3-HOWTO/images/ethereal2.png
+share/swat/help/Samba3-HOWTO/images/idmap-gid2sid.png
+share/swat/help/Samba3-HOWTO/images/idmap-sid2gid.png
+share/swat/help/Samba3-HOWTO/images/idmap-sid2uid.png
+share/swat/help/Samba3-HOWTO/images/idmap-store-gid2sid.png
+share/swat/help/Samba3-HOWTO/images/idmap-uid2sid.png
+share/swat/help/Samba3-HOWTO/images/idmap_winbind_no_loop.png
+share/swat/help/Samba3-HOWTO/images/pdftoepsonusb.png
+share/swat/help/Samba3-HOWTO/images/pdftosocket.png
+share/swat/help/Samba3-HOWTO/images/trusts1.png
+share/swat/help/Samba3-HOWTO/images/w2kp001.png
+share/swat/help/Samba3-HOWTO/images/w2kp002.png
+share/swat/help/Samba3-HOWTO/images/w2kp003.png
+share/swat/help/Samba3-HOWTO/images/w2kp004.png
+share/swat/help/Samba3-HOWTO/images/w2kp005.png
+share/swat/help/Samba3-HOWTO/images/wxpp001.png
+share/swat/help/Samba3-HOWTO/images/wxpp004.png
+share/swat/help/Samba3-HOWTO/images/wxpp006.png
+share/swat/help/Samba3-HOWTO/images/wxpp007.png
+share/swat/help/Samba3-HOWTO/images/wxpp008.png
+share/swat/help/Samba3-HOWTO/index.html
+share/swat/help/Samba3-HOWTO/install.html
+share/swat/help/Samba3-HOWTO/integrate-ms-networks.html
+share/swat/help/Samba3-HOWTO/introduction.html
+share/swat/help/Samba3-HOWTO/ix01.html
+share/swat/help/Samba3-HOWTO/largefile.html
+share/swat/help/Samba3-HOWTO/locking.html
+share/swat/help/Samba3-HOWTO/migration.html
+share/swat/help/Samba3-HOWTO/msdfs.html
+share/swat/help/Samba3-HOWTO/optional.html
+share/swat/help/Samba3-HOWTO/pam.html
+share/swat/help/Samba3-HOWTO/passdb.html
+share/swat/help/Samba3-HOWTO/pr01.html
+share/swat/help/Samba3-HOWTO/pr02.html
+share/swat/help/Samba3-HOWTO/pr03.html
+share/swat/help/Samba3-HOWTO/problems.html
+share/swat/help/Samba3-HOWTO/rights.html
+share/swat/help/Samba3-HOWTO/samba-bdc.html
+share/swat/help/Samba3-HOWTO/samba-pdc.html
+share/swat/help/Samba3-HOWTO/securing-samba.html
+share/swat/help/Samba3-HOWTO/speed.html
+share/swat/help/Samba3-HOWTO/tdb.html
+share/swat/help/Samba3-HOWTO/troubleshooting.html
+share/swat/help/Samba3-HOWTO/type.html
+share/swat/help/Samba3-HOWTO/unicode.html
+share/swat/help/Samba3-HOWTO/upgrading-to-3.0.html
+share/swat/help/Samba3-HOWTO/winbind.html
+share/swat/help/manpages/cifs.upcall.8.html
+share/swat/help/manpages/eventlogadm.8.html
+share/swat/help/manpages/findsmb.1.html
+share/swat/help/manpages/idmap_ad.8.html
+share/swat/help/manpages/idmap_adex.8.html
+share/swat/help/manpages/idmap_hash.8.html
+share/swat/help/manpages/idmap_ldap.8.html
+share/swat/help/manpages/idmap_nss.8.html
+share/swat/help/manpages/idmap_rid.8.html
+share/swat/help/manpages/idmap_tdb.8.html
+share/swat/help/manpages/idmap_tdb2.8.html
+share/swat/help/manpages/index.html
+share/swat/help/manpages/ldb.3.html
+share/swat/help/manpages/ldbadd.1.html
+share/swat/help/manpages/ldbdel.1.html
+share/swat/help/manpages/ldbedit.1.html
+share/swat/help/manpages/ldbmodify.1.html
+share/swat/help/manpages/ldbrename.1.html
+share/swat/help/manpages/ldbsearch.1.html
+share/swat/help/manpages/lmhosts.5.html
+share/swat/help/manpages/log2pcap.1.html
+share/swat/help/manpages/mount.cifs.8.html
+share/swat/help/manpages/net.8.html
+share/swat/help/manpages/nmbd.8.html
+share/swat/help/manpages/nmblookup.1.html
+share/swat/help/manpages/ntlm_auth.1.html
+share/swat/help/manpages/pam_winbind.8.html
+share/swat/help/manpages/pdbedit.8.html
+share/swat/help/manpages/profiles.1.html
+share/swat/help/manpages/rpcclient.1.html
+share/swat/help/manpages/samba.7.html
+share/swat/help/manpages/sharesec.1.html
+share/swat/help/manpages/smb.conf.5.html
+share/swat/help/manpages/smbcacls.1.html
+share/swat/help/manpages/smbclient.1.html
+share/swat/help/manpages/smbcontrol.1.html
+share/swat/help/manpages/smbcquotas.1.html
+share/swat/help/manpages/smbd.8.html
+share/swat/help/manpages/smbget.1.html
+share/swat/help/manpages/smbgetrc.5.html
+share/swat/help/manpages/smbpasswd.5.html
+share/swat/help/manpages/smbpasswd.8.html
+share/swat/help/manpages/smbspool.8.html
+share/swat/help/manpages/smbstatus.1.html
+share/swat/help/manpages/smbtar.1.html
+share/swat/help/manpages/smbtree.1.html
+share/swat/help/manpages/swat.8.html
+share/swat/help/manpages/tdbbackup.8.html
+share/swat/help/manpages/tdbdump.8.html
+share/swat/help/manpages/tdbtool.8.html
+share/swat/help/manpages/testparm.1.html
+share/swat/help/manpages/umount.cifs.8.html
+share/swat/help/manpages/vfs_acl_tdb.8.html
+share/swat/help/manpages/vfs_acl_xattr.8.html
+share/swat/help/manpages/vfs_audit.8.html
+share/swat/help/manpages/vfs_cacheprime.8.html
+share/swat/help/manpages/vfs_cap.8.html
+share/swat/help/manpages/vfs_catia.8.html
+share/swat/help/manpages/vfs_commit.8.html
+share/swat/help/manpages/vfs_default_quota.8.html
+share/swat/help/manpages/vfs_dirsort.8.html
+share/swat/help/manpages/vfs_extd_audit.8.html
+share/swat/help/manpages/vfs_fake_perms.8.html
+share/swat/help/manpages/vfs_fileid.8.html
+share/swat/help/manpages/vfs_full_audit.8.html
+share/swat/help/manpages/vfs_gpfs.8.html
+share/swat/help/manpages/vfs_netatalk.8.html
+share/swat/help/manpages/vfs_notify_fam.8.html
+share/swat/help/manpages/vfs_prealloc.8.html
+share/swat/help/manpages/vfs_preopen.8.html
+share/swat/help/manpages/vfs_readahead.8.html
+share/swat/help/manpages/vfs_readonly.8.html
+share/swat/help/manpages/vfs_recycle.8.html
+share/swat/help/manpages/vfs_shadow_copy.8.html
+share/swat/help/manpages/vfs_shadow_copy2.8.html
+share/swat/help/manpages/vfs_smb_traffic_analyzer.8.html
+share/swat/help/manpages/vfs_streams_depot.8.html
+share/swat/help/manpages/vfs_streams_xattr.8.html
+share/swat/help/manpages/vfs_xattr_tdb.8.html
+share/swat/help/manpages/vfstest.1.html
+share/swat/help/manpages/wbinfo.1.html
+share/swat/help/manpages/winbind_krb5_locator.7.html
+share/swat/help/manpages/winbindd.8.html
+share/swat/help/welcome-no-samba-doc.html
+share/swat/help/welcome.html
+share/swat/images/globals.gif
+share/swat/images/home.gif
+share/swat/images/passwd.gif
+share/swat/images/printers.gif
+share/swat/images/samba.gif
+share/swat/images/shares.gif
+share/swat/images/status.gif
+share/swat/images/viewconfig.gif
+share/swat/images/wizard.gif
+share/swat/include/footer.html
+share/swat/include/header.html
+share/swat/lang/ja/help/welcome.html
+share/swat/lang/tr/help/welcome.html
+share/swat/lang/tr/images/globals.gif
+share/swat/lang/tr/images/home.gif
+share/swat/lang/tr/images/passwd.gif
+share/swat/lang/tr/images/printers.gif
+share/swat/lang/tr/images/samba.gif
+share/swat/lang/tr/images/shares.gif
+share/swat/lang/tr/images/status.gif
+share/swat/lang/tr/images/viewconfig.gif
+share/swat/using_samba/appa.html
+share/swat/using_samba/appb.html
+share/swat/using_samba/appc.html
+share/swat/using_samba/appd.html
+share/swat/using_samba/appe.html
+share/swat/using_samba/appf.html
+share/swat/using_samba/appg.html
+share/swat/using_samba/ch00.html
+share/swat/using_samba/ch01.html
+share/swat/using_samba/ch02.html
+share/swat/using_samba/ch03.html
+share/swat/using_samba/ch04.html
+share/swat/using_samba/ch05.html
+share/swat/using_samba/ch06.html
+share/swat/using_samba/ch07.html
+share/swat/using_samba/ch08.html
+share/swat/using_samba/ch09.html
+share/swat/using_samba/ch10.html
+share/swat/using_samba/ch11.html
+share/swat/using_samba/ch12.html
+share/swat/using_samba/figs/sam2_0101.gif
+share/swat/using_samba/figs/sam2_0102.gif
+share/swat/using_samba/figs/sam2_0103.gif
+share/swat/using_samba/figs/sam2_0104.gif
+share/swat/using_samba/figs/sam2_0105.gif
+share/swat/using_samba/figs/sam2_0106.gif
+share/swat/using_samba/figs/sam2_0107.gif
+share/swat/using_samba/figs/sam2_0108.gif
+share/swat/using_samba/figs/sam2_0109.gif
+share/swat/using_samba/figs/sam2_0110.gif
+share/swat/using_samba/figs/sam2_0111.gif
+share/swat/using_samba/figs/sam2_0112.gif
+share/swat/using_samba/figs/sam2_0113.gif
+share/swat/using_samba/figs/sam2_0114.gif
+share/swat/using_samba/figs/sam2_0201.gif
+share/swat/using_samba/figs/sam2_0202.gif
+share/swat/using_samba/figs/sam2_0203.gif
+share/swat/using_samba/figs/sam2_0204.gif
+share/swat/using_samba/figs/sam2_0301.gif
+share/swat/using_samba/figs/sam2_0302.gif
+share/swat/using_samba/figs/sam2_0303.gif
+share/swat/using_samba/figs/sam2_0304.gif
+share/swat/using_samba/figs/sam2_0305.gif
+share/swat/using_samba/figs/sam2_0306.gif
+share/swat/using_samba/figs/sam2_0307.gif
+share/swat/using_samba/figs/sam2_0308.gif
+share/swat/using_samba/figs/sam2_0309.gif
+share/swat/using_samba/figs/sam2_0310.gif
+share/swat/using_samba/figs/sam2_0311.gif
+share/swat/using_samba/figs/sam2_0312.gif
+share/swat/using_samba/figs/sam2_0313.gif
+share/swat/using_samba/figs/sam2_0314.gif
+share/swat/using_samba/figs/sam2_0315.gif
+share/swat/using_samba/figs/sam2_0316.gif
+share/swat/using_samba/figs/sam2_0317.gif
+share/swat/using_samba/figs/sam2_0318.gif
+share/swat/using_samba/figs/sam2_0319.gif
+share/swat/using_samba/figs/sam2_0320.gif
+share/swat/using_samba/figs/sam2_0321.gif
+share/swat/using_samba/figs/sam2_0322.gif
+share/swat/using_samba/figs/sam2_0323.gif
+share/swat/using_samba/figs/sam2_0324.gif
+share/swat/using_samba/figs/sam2_0325.gif
+share/swat/using_samba/figs/sam2_0326.gif
+share/swat/using_samba/figs/sam2_0327.gif
+share/swat/using_samba/figs/sam2_0328.gif
+share/swat/using_samba/figs/sam2_0329.gif
+share/swat/using_samba/figs/sam2_0330.gif
+share/swat/using_samba/figs/sam2_0331.gif
+share/swat/using_samba/figs/sam2_0332.gif
+share/swat/using_samba/figs/sam2_0333.gif
+share/swat/using_samba/figs/sam2_0334.gif
+share/swat/using_samba/figs/sam2_0335.gif
+share/swat/using_samba/figs/sam2_0336.gif
+share/swat/using_samba/figs/sam2_0337.gif
+share/swat/using_samba/figs/sam2_0338.gif
+share/swat/using_samba/figs/sam2_0339.gif
+share/swat/using_samba/figs/sam2_0340.gif
+share/swat/using_samba/figs/sam2_0341.gif
+share/swat/using_samba/figs/sam2_0342.gif
+share/swat/using_samba/figs/sam2_0343.gif
+share/swat/using_samba/figs/sam2_0344.gif
+share/swat/using_samba/figs/sam2_0345.gif
+share/swat/using_samba/figs/sam2_0346.gif
+share/swat/using_samba/figs/sam2_0347.gif
+share/swat/using_samba/figs/sam2_0348.gif
+share/swat/using_samba/figs/sam2_0349.gif
+share/swat/using_samba/figs/sam2_0350.gif
+share/swat/using_samba/figs/sam2_0351.gif
+share/swat/using_samba/figs/sam2_0352.gif
+share/swat/using_samba/figs/sam2_0353.gif
+share/swat/using_samba/figs/sam2_0354.gif
+share/swat/using_samba/figs/sam2_0355.gif
+share/swat/using_samba/figs/sam2_0356.gif
+share/swat/using_samba/figs/sam2_0357.gif
+share/swat/using_samba/figs/sam2_0358.gif
+share/swat/using_samba/figs/sam2_0359.gif
+share/swat/using_samba/figs/sam2_0360.gif
+share/swat/using_samba/figs/sam2_0361.gif
+share/swat/using_samba/figs/sam2_0401.gif
+share/swat/using_samba/figs/sam2_0402.gif
+share/swat/using_samba/figs/sam2_0403.gif
+share/swat/using_samba/figs/sam2_0404.gif
+share/swat/using_samba/figs/sam2_0405.gif
+share/swat/using_samba/figs/sam2_0406.gif
+share/swat/using_samba/figs/sam2_0407.gif
+share/swat/using_samba/figs/sam2_0408.gif
+share/swat/using_samba/figs/sam2_0409.gif
+share/swat/using_samba/figs/sam2_0410.gif
+share/swat/using_samba/figs/sam2_0411.gif
+share/swat/using_samba/figs/sam2_0412.gif
+share/swat/using_samba/figs/sam2_0413.gif
+share/swat/using_samba/figs/sam2_0414.gif
+share/swat/using_samba/figs/sam2_0415.gif
+share/swat/using_samba/figs/sam2_0416.gif
+share/swat/using_samba/figs/sam2_0417.gif
+share/swat/using_samba/figs/sam2_0501.gif
+share/swat/using_samba/figs/sam2_0502.gif
+share/swat/using_samba/figs/sam2_0503.gif
+share/swat/using_samba/figs/sam2_0504.gif
+share/swat/using_samba/figs/sam2_0505.gif
+share/swat/using_samba/figs/sam2_0506.gif
+share/swat/using_samba/figs/sam2_0507.gif
+share/swat/using_samba/figs/sam2_0508.gif
+share/swat/using_samba/figs/sam2_0601.gif
+share/swat/using_samba/figs/sam2_0602.gif
+share/swat/using_samba/figs/sam2_0603.gif
+share/swat/using_samba/figs/sam2_0604.gif
+share/swat/using_samba/figs/sam2_0605.gif
+share/swat/using_samba/figs/sam2_0701.gif
+share/swat/using_samba/figs/sam2_0801.gif
+share/swat/using_samba/figs/sam2_0802.gif
+share/swat/using_samba/figs/sam2_0803.gif
+share/swat/using_samba/figs/sam2_0804.gif
+share/swat/using_samba/figs/sam2_0805.gif
+share/swat/using_samba/figs/sam2_0806.gif
+share/swat/using_samba/figs/sam2_0807.gif
+share/swat/using_samba/figs/sam2_0808.gif
+share/swat/using_samba/figs/sam2_0809.gif
+share/swat/using_samba/figs/sam2_0810.gif
+share/swat/using_samba/figs/sam2_0811.gif
+share/swat/using_samba/figs/sam2_0901.gif
+share/swat/using_samba/figs/sam2_0902.gif
+share/swat/using_samba/figs/sam2_0903.gif
+share/swat/using_samba/figs/sam2_1001.gif
+share/swat/using_samba/figs/sam2_1002.gif
+share/swat/using_samba/figs/sam2_1003.gif
+share/swat/using_samba/figs/sam2_1004.gif
+share/swat/using_samba/figs/sam2_1005.gif
+share/swat/using_samba/figs/sam2_1006.gif
+share/swat/using_samba/figs/sam2_1101.gif
+share/swat/using_samba/figs/sam2_1102.gif
+share/swat/using_samba/figs/sam2_af01.gif
+share/swat/using_samba/figs/sam2_af02.gif
+share/swat/using_samba/figs/sam2_af03.gif
+share/swat/using_samba/figs/sam2_af04.gif
+share/swat/using_samba/figs/sam2_af05.gif
+share/swat/using_samba/figs/sam2_af06.gif
+share/swat/using_samba/figs/sam2_af07.gif
+share/swat/using_samba/inx.html
+share/swat/using_samba/samba2_s.gif
+share/swat/using_samba/samba2_xs.gif
+share/swat/using_samba/toc.html
+@dirrm share/swat/using_samba/figs
+@dirrm share/swat/using_samba
+@dirrm share/swat/lang/tr/js
+@dirrm share/swat/lang/tr/include
+@dirrm share/swat/lang/tr/images
+@dirrm share/swat/lang/tr/help
+@dirrm share/swat/lang/tr
+@dirrm share/swat/lang/ja/js
+@dirrm share/swat/lang/ja/include
+@dirrm share/swat/lang/ja/images
+@dirrm share/swat/lang/ja/help
+@dirrm share/swat/lang/ja
+@dirrm share/swat/lang
+@dirrm share/swat/js
+@dirrm share/swat/include
+@dirrm share/swat/images
+@dirrm share/swat/help/manpages
+@dirrm share/swat/help/Samba3-HOWTO/images
+@dirrm share/swat/help/Samba3-HOWTO
+@dirrm share/swat/help/Samba3-Developers-Guide
+@dirrm share/swat/help/Samba3-ByExample/images
+@dirrm share/swat/help/Samba3-ByExample
+@dirrm share/swat/help
+@dirrm share/swat