diff options
Diffstat (limited to 'examples/VFS')
-rw-r--r-- | examples/VFS/.cvsignore | 9 | ||||
-rw-r--r-- | examples/VFS/Makefile.in | 43 | ||||
-rw-r--r-- | examples/VFS/README | 20 | ||||
-rwxr-xr-x | examples/VFS/autogen.sh | 60 | ||||
-rw-r--r-- | examples/VFS/configure.in | 350 | ||||
-rw-r--r-- | examples/VFS/install-sh | 238 | ||||
-rw-r--r-- | examples/VFS/shadow_copy_test.c | 83 | ||||
-rw-r--r-- | examples/VFS/skel_opaque.c | 581 | ||||
-rw-r--r-- | examples/VFS/skel_transparent.c | 548 |
9 files changed, 0 insertions, 1932 deletions
diff --git a/examples/VFS/.cvsignore b/examples/VFS/.cvsignore deleted file mode 100644 index f269c98273c..00000000000 --- a/examples/VFS/.cvsignore +++ /dev/null @@ -1,9 +0,0 @@ -.libs -*.so -*.o -*.bak -autom4te.cache -autom4te-2.53.cache -Makefile -configure -config.* diff --git a/examples/VFS/Makefile.in b/examples/VFS/Makefile.in deleted file mode 100644 index c368974bd5e..00000000000 --- a/examples/VFS/Makefile.in +++ /dev/null @@ -1,43 +0,0 @@ -CC = @CC@ -CFLAGS = @CFLAGS@ -CPPFLAGS = @CPPFLAGS@ -LDFLAGS = @LDFLAGS@ -LDSHFLAGS = @LDSHFLAGS@ -INSTALLCMD = @INSTALL@ -SAMBA_SOURCE = @SAMBA_SOURCE@ -SHLIBEXT = @SHLIBEXT@ -OBJEXT = @OBJEXT@ -FLAGS = $(CFLAGS) -Iinclude -I$(SAMBA_SOURCE)/include -I$(SAMBA_SOURCE)/ubiqx -I$(SAMBA_SOURCE)/smbwrapper -I. $(CPPFLAGS) -I$(SAMBA_SOURCE) - - -prefix = @prefix@ -libdir = @libdir@ - -VFS_LIBDIR = $(libdir)/vfs - -# Auto target -default: $(patsubst %.c,%.$(SHLIBEXT),$(wildcard *.c)) - -# Pattern rules - -%.$(SHLIBEXT): %.$(OBJEXT) - @echo "Linking $@" - @$(CC) $(LDSHFLAGS) $(LDFLAGS) -o $@ $< - -%.$(OBJEXT): %.c - @echo "Compiling $<" - @$(CC) $(FLAGS) -c $< - - -install: default - $(INSTALLCMD) -d $(VFS_LIBDIR) - $(INSTALLCMD) -m 755 *.$(SHLIBEXT) $(VFS_LIBDIR) - -# Misc targets -clean: - rm -rf .libs - rm -f core *~ *% *.bak *.o *.$(SHLIBEXT) - -distclean: clean - rm config.* Makefile - diff --git a/examples/VFS/README b/examples/VFS/README deleted file mode 100644 index 2f6196d1178..00000000000 --- a/examples/VFS/README +++ /dev/null @@ -1,20 +0,0 @@ -README for Samba Virtual File System (VFS) Example -=================================================== - -This directory contains skeleton VFS modules. When used, -this module simply passes all requests back to the disk functions -(i.e it operates as a passthrough filter). It should be -useful as a starting point for developing new VFS -modules. - -Please look at skel_opaque.c when you want your module to provide -final functions, like a database filesystem. - -Please look at skel_transport.c when you want your module to provide -passthrough functions, like audit modules. - -Please read the VFS chapter in the HOWTO collection for general help -on the usage of VFS modules. - -Further documentation on writing VFS modules for Samba can be found in -Samba Developers Guide. diff --git a/examples/VFS/autogen.sh b/examples/VFS/autogen.sh deleted file mode 100755 index fcae16ec5c8..00000000000 --- a/examples/VFS/autogen.sh +++ /dev/null @@ -1,60 +0,0 @@ -#!/bin/sh - -# Run this script to build samba from CVS. - -## insert all possible names (only works with -## autoconf 2.x -#TESTAUTOHEADER="autoheader autoheader-2.53" -TESTAUTOCONF="autoconf autoconf-2.53" - -#AUTOHEADERFOUND="0" -AUTOCONFFOUND="0" - - -## -## Look for autoheader -## -#for i in $TESTAUTOHEADER; do -# if which $i > /dev/null 2>&1; then -# if [ `$i --version | head -n 1 | cut -d. -f 2` -ge 53 ]; then -# AUTOHEADER=$i -# AUTOHEADERFOUND="1" -# break -# fi -# fi -#done - -## -## Look for autoconf -## - -for i in $TESTAUTOCONF; do - if which $i > /dev/null 2>&1; then - if [ `$i --version | head -n 1 | cut -d. -f 2` -ge 53 ]; then - AUTOCONF=$i - AUTOCONFFOUND="1" - break - fi - fi -done - - -## -## do we have it? -## -if [ "$AUTOCONFFOUND" = "0" -o "$AUTOHEADERFOUND" = "0" ]; then - echo "$0: need autoconf 2.53 or later to build samba from CVS" >&2 - exit 1 -fi - - - -#echo "$0: running $AUTOHEADER" -#$AUTOHEADER || exit 1 - -echo "$0: running $AUTOCONF" -$AUTOCONF || exit 1 - -echo "Now run ./configure and then make." -exit 0 - diff --git a/examples/VFS/configure.in b/examples/VFS/configure.in deleted file mode 100644 index fda4cf3a316..00000000000 --- a/examples/VFS/configure.in +++ /dev/null @@ -1,350 +0,0 @@ -dnl -*- mode: m4-mode -*- -dnl Process this file with autoconf to produce a configure script. - -dnl We must use autotools 2.53 or above -AC_PREREQ(2.53) -AC_INIT(Makefile.in) - -#dnl Uncomment this if you want to use your own define's too -#AC_CONFIG_HEADER(module_config.h) -#dnl To make sure that didn't get #define PACKAGE_* in modules_config.h -#echo "" > confdefs.h - -dnl Checks for programs. -AC_PROG_CC -AC_PROG_INSTALL - -################################################# -# Directory handling stuff to support both the -# legacy SAMBA directories and FHS compliant -# ones... -AC_PREFIX_DEFAULT(/usr/local/samba) - -AC_ARG_WITH(fhs, -[ --with-fhs Use FHS-compliant paths (default=no)], - libdir="\${prefix}/lib/samba", - libdir="\${prefix}/lib") - -AC_SUBST(libdir) - -SAMBA_SOURCE="../../source" -#################################################### -# set the location location of the samba source tree -AC_ARG_WITH(samba-source, -[ --with-samba-source=DIR Where is the samba source tree (../../source)], -[ case "$withval" in - yes|no) - # - # Just in case anybody calls it without argument - # - AC_MSG_WARN([--with-samba-source called without argument - will use default]) - ;; - * ) - SAMBA_SOURCE="$withval" - ;; - esac]) - -AC_SUBST(SAMBA_SOURCE) - -dnl Unique-to-Samba variables we'll be playing with. -AC_SUBST(CC) -AC_SUBST(SHELL) -AC_SUBST(LDSHFLAGS) -AC_SUBST(SONAMEFLAG) -AC_SUBST(SHLD) -AC_SUBST(HOST_OS) -AC_SUBST(PICFLAGS) -AC_SUBST(PICSUFFIX) -AC_SUBST(SHLIBEXT) -AC_SUBST(INSTALLCLIENTCMD_SH) -AC_SUBST(INSTALLCLIENTCMD_A) -AC_SUBST(SHLIB_PROGS) -AC_SUBST(EXTRA_BIN_PROGS) -AC_SUBST(EXTRA_SBIN_PROGS) -AC_SUBST(EXTRA_ALL_TARGETS) - -AC_ARG_ENABLE(debug, -[ --enable-debug Turn on compiler debugging information (default=no)], - [if eval "test x$enable_debug = xyes"; then - CFLAGS="${CFLAGS} -g" - fi]) - -AC_ARG_ENABLE(developer, [ --enable-developer Turn on developer warnings and debugging (default=no)], - [if eval "test x$enable_developer = xyes"; then - developer=yes - CFLAGS="${CFLAGS} -g -Wall -Wshadow -Wstrict-prototypes -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -DDEBUG_PASSWORD -DDEVELOPER" - fi]) - -# compile with optimization and without debugging by default, but -# allow people to set their own preference. -if test "x$CFLAGS" = x -then - CFLAGS="-O ${CFLAGS}" -fi - - ################################################# - # check for krb5-config from recent MIT and Heimdal kerberos 5 - AC_PATH_PROG(KRB5_CONFIG, krb5-config) - AC_MSG_CHECKING(for working krb5-config) - if test -x "$KRB5_CONFIG"; then - CFLAGS="$CFLAGS `$KRB5_CONFIG --cflags | sed s/@INCLUDE_des@//`" - CPPFLAGS="$CPPFLAGS `$KRB5_CONFIG --cflags | sed s/@INCLUDE_des@//`" - FOUND_KRB5=yes - AC_MSG_RESULT(yes) - else - AC_MSG_RESULT(no. Fallback to previous krb5 detection strategy) - fi - - if test x$FOUND_KRB5 = x"no"; then - ################################################# - # check for location of Kerberos 5 install - AC_MSG_CHECKING(for kerberos 5 install path) - AC_ARG_WITH(krb5, - [ --with-krb5=base-dir Locate Kerberos 5 support (default=/usr)], - [ case "$withval" in - no) - AC_MSG_RESULT(no) - ;; - *) - AC_MSG_RESULT(yes) - CFLAGS="$CFLAGS -I$withval/include" - CPPFLAGS="$CPPFLAGS -I$withval/include" - FOUND_KRB5=yes - ;; - esac ], - AC_MSG_RESULT(no) - ) - fi - -if test x$FOUND_KRB5 = x"no"; then -################################################# -# see if this box has the SuSE location for the heimdal kerberos implementation -AC_MSG_CHECKING(for /usr/include/heimdal) -if test -d /usr/include/heimdal; then - if test -f /usr/lib/heimdal/lib/libkrb5.a; then - CFLAGS="$CFLAGS -I/usr/include/heimdal" - CPPFLAGS="$CPPFLAGS -I/usr/include/heimdal" - AC_MSG_RESULT(yes) - else - CFLAGS="$CFLAGS -I/usr/include/heimdal" - CPPFLAGS="$CPPFLAGS -I/usr/include/heimdal" - AC_MSG_RESULT(yes) - - fi -else - AC_MSG_RESULT(no) -fi -fi - - -if test x$FOUND_KRB5 = x"no"; then -################################################# -# see if this box has the RedHat location for kerberos -AC_MSG_CHECKING(for /usr/kerberos) -if test -d /usr/kerberos -a -f /usr/kerberos/lib/libkrb5.a; then - LDFLAGS="$LDFLAGS -L/usr/kerberos/lib" - CFLAGS="$CFLAGS -I/usr/kerberos/include" - CPPFLAGS="$CPPFLAGS -I/usr/kerberos/include" - AC_MSG_RESULT(yes) -else - AC_MSG_RESULT(no) -fi -fi - - # now check for krb5.h. Some systems have the libraries without the headers! - # note that this check is done here to allow for different kerberos - # include paths - AC_CHECK_HEADERS(krb5.h) - - # now check for gssapi headers. This is also done here to allow for - # different kerberos include paths - AC_CHECK_HEADERS(gssapi.h gssapi/gssapi_generic.h gssapi/gssapi.h com_err.h) - -#dnl Check if we use GNU ld -#LD=ld -#AC_PROG_LD_GNU - -#dnl look for executable suffix -#AC_EXEEXT - -builddir=`pwd` -AC_SUBST(builddir) - -# Assume non-shared by default and override below -BLDSHARED="false" - -# these are the defaults, good for lots of systems -HOST_OS="$host_os" -LDSHFLAGS="-shared" -SONAMEFLAG="#" -SHLD="\${CC}" -PICFLAGS="" -PICSUFFIX="po" -SHLIBEXT="so" - -if test "$enable_shared" = "yes"; then - # this bit needs to be modified for each OS that is suported by - # smbwrapper. You need to specify how to created a shared library and - # how to compile C code to produce PIC object files - - AC_MSG_CHECKING([ability to build shared libraries]) - - # and these are for particular systems - case "$host_os" in - *linux*) - BLDSHARED="true" - LDSHFLAGS="-shared" - DYNEXP="-Wl,--export-dynamic" - PICFLAGS="-fPIC" - SONAMEFLAG="-Wl,-soname=" - ;; - *solaris*) - BLDSHARED="true" - LDSHFLAGS="-G" - SONAMEFLAG="-h " - if test "${GCC}" = "yes"; then - PICFLAGS="-fPIC" - if test "${ac_cv_prog_gnu_ld}" = "yes"; then - DYNEXP="-Wl,-E" - fi - else - PICFLAGS="-KPIC" - ## ${CFLAGS} added for building 64-bit shared - ## libs using Sun's Compiler - LDSHFLAGS="-G \${CFLAGS}" - PICSUFFIX="po.o" - fi - ;; - *sunos*) - BLDSHARED="true" - LDSHFLAGS="-G" - SONAMEFLAG="-Wl,-h," - PICFLAGS="-KPIC" # Is this correct for SunOS - ;; - *netbsd* | *freebsd*) BLDSHARED="true" - LDSHFLAGS="-shared" - DYNEXP="-Wl,--export-dynamic" - SONAMEFLAG="-Wl,-soname," - PICFLAGS="-fPIC -DPIC" - ;; - *openbsd*) BLDSHARED="true" - LDSHFLAGS="-shared" - DYNEXP="-Wl,-Bdynamic" - SONAMEFLAG="-Wl,-soname," - PICFLAGS="-fPIC" - ;; - *irix*) - case "$host_os" in - *irix6*) - ;; - esac - ATTEMPT_WRAP32_BUILD=yes - BLDSHARED="true" - LDSHFLAGS="-set_version sgi1.0 -shared" - SONAMEFLAG="-soname " - SHLD="\${LD}" - if test "${GCC}" = "yes"; then - PICFLAGS="-fPIC" - else - PICFLAGS="-KPIC" - fi - ;; - *aix*) - BLDSHARED="true" - LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-bnoentry,-berok" - DYNEXP="-Wl,-brtl,-bexpall" - PICFLAGS="-O2" - if test "${GCC}" != "yes"; then - ## for funky AIX compiler using strncpy() - CFLAGS="$CFLAGS -D_LINUX_SOURCE_COMPAT -qmaxmem=32000" - fi - ;; - *hpux*) - SHLIBEXT="sl" - # Use special PIC flags for the native HP-UX compiler. - if test $ac_cv_prog_cc_Ae = yes; then - BLDSHARED="true" - SHLD="/usr/bin/ld" - LDSHFLAGS="-B symbolic -b -z" - SONAMEFLAG="+h " - PICFLAGS="+z" - fi - DYNEXP="-Wl,-E" - ;; - *qnx*) - ;; - *osf*) - BLDSHARED="true" - LDSHFLAGS="-shared" - SONAMEFLAG="-Wl,-soname," - PICFLAGS="-fPIC" - ;; - *sco*) - ;; - *unixware*) - BLDSHARED="true" - LDSHFLAGS="-shared" - SONAMEFLAG="-Wl,-soname," - PICFLAGS="-KPIC" - ;; - *next2*) - ;; - *dgux*) AC_CHECK_PROG( ROFF, groff, [groff -etpsR -Tascii -man]) - ;; - *sysv4*) - case "$host" in - *-univel-*) - LDSHFLAGS="-G" - DYNEXP="-Bexport" - ;; - *mips-sni-sysv4*) - ;; - esac - ;; - - *sysv5*) - LDSHFLAGS="-G" - ;; - *vos*) - BLDSHARED="false" - LDSHFLAGS="" - ;; - *) - ;; - esac - AC_SUBST(DYNEXP) - AC_MSG_RESULT($BLDSHARED) - AC_MSG_CHECKING([linker flags for shared libraries]) - AC_MSG_RESULT([$LDSHFLAGS]) - AC_MSG_CHECKING([compiler flags for position-independent code]) - AC_MSG_RESULT([$PICFLAGS]) -fi - -####################################################### -# test whether building a shared library actually works -if test $BLDSHARED = true; then -AC_CACHE_CHECK([whether building shared libraries actually works], - [ac_cv_shlib_works],[ - ac_cv_shlib_works=no - # try building a trivial shared library - if test "$PICSUFFIX" = "po"; then - $CC $CPPFLAGS $CFLAGS $PICFLAGS -c -o shlib.po ${srcdir-.}/tests/shlib.c && - $CC $CPPFLAGS $CFLAGS `eval echo $LDSHFLAGS` -o "shlib.$SHLIBEXT" shlib.po && - ac_cv_shlib_works=yes - else - $CC $CPPFLAGS $CFLAGS $PICFLAGS -c -o shlib.$PICSUFFIX ${srcdir-.}/tests/shlib.c && - mv shlib.$PICSUFFIX shlib.po && - $CC $CPPFLAGS $CFLAGS `eval echo $LDSHFLAGS` -o "shlib.$SHLIBEXT" shlib.po && - ac_cv_shlib_works=yes - fi - rm -f "shlib.$SHLIBEXT" shlib.po -]) -if test $ac_cv_shlib_works = no; then - BLDSHARED=false -fi -fi - - - - -AC_OUTPUT(Makefile) diff --git a/examples/VFS/install-sh b/examples/VFS/install-sh deleted file mode 100644 index 58719246f04..00000000000 --- a/examples/VFS/install-sh +++ /dev/null @@ -1,238 +0,0 @@ -#! /bin/sh -# -# install - install a program, script, or datafile -# This comes from X11R5. -# -# Calling this script install-sh is preferred over install.sh, to prevent -# `make' implicit rules from creating a file called install from it -# when there is no Makefile. -# -# This script is compatible with the BSD install script, but was written -# from scratch. -# - - -# set DOITPROG to echo to test this script - -# Don't use :- since 4.3BSD and earlier shells don't like it. -doit="${DOITPROG-}" - - -# put in absolute paths if you don't have them in your path; or use env. vars. - -mvprog="${MVPROG-mv}" -cpprog="${CPPROG-cp}" -chmodprog="${CHMODPROG-chmod}" -chownprog="${CHOWNPROG-chown}" -chgrpprog="${CHGRPPROG-chgrp}" -stripprog="${STRIPPROG-strip}" -rmprog="${RMPROG-rm}" -mkdirprog="${MKDIRPROG-mkdir}" - -transformbasename="" -transform_arg="" -instcmd="$mvprog" -chmodcmd="$chmodprog 0755" -chowncmd="" -chgrpcmd="" -stripcmd="" -rmcmd="$rmprog -f" -mvcmd="$mvprog" -src="" -dst="" -dir_arg="" - -while [ x"$1" != x ]; do - case $1 in - -c) instcmd="$cpprog" - shift - continue;; - - -d) dir_arg=true - shift - continue;; - - -m) chmodcmd="$chmodprog $2" - shift - shift - continue;; - - -o) chowncmd="$chownprog $2" - shift - shift - continue;; - - -g) chgrpcmd="$chgrpprog $2" - shift - shift - continue;; - - -s) stripcmd="$stripprog" - shift - continue;; - - -t=*) transformarg=`echo $1 | sed 's/-t=//'` - shift - continue;; - - -b=*) transformbasename=`echo $1 | sed 's/-b=//'` - shift - continue;; - - *) if [ x"$src" = x ] - then - src=$1 - else - # this colon is to work around a 386BSD /bin/sh bug - : - dst=$1 - fi - shift - continue;; - esac -done - -if [ x"$src" = x ] -then - echo "install: no input file specified" - exit 1 -else - true -fi - -if [ x"$dir_arg" != x ]; then - dst=$src - src="" - - if [ -d $dst ]; then - instcmd=: - else - instcmd=mkdir - fi -else - -# Waiting for this to be detected by the "$instcmd $src $dsttmp" command -# might cause directories to be created, which would be especially bad -# if $src (and thus $dsttmp) contains '*'. - - if [ -f $src -o -d $src ] - then - true - else - echo "install: $src does not exist" - exit 1 - fi - - if [ x"$dst" = x ] - then - echo "install: no destination specified" - exit 1 - else - true - fi - -# If destination is a directory, append the input filename; if your system -# does not like double slashes in filenames, you may need to add some logic - - if [ -d $dst ] - then - dst="$dst"/`basename $src` - else - true - fi -fi - -## this sed command emulates the dirname command -dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` - -# Make sure that the destination directory exists. -# this part is taken from Noah Friedman's mkinstalldirs script - -# Skip lots of stat calls in the usual case. -if [ ! -d "$dstdir" ]; then -defaultIFS=' -' -IFS="${IFS-${defaultIFS}}" - -oIFS="${IFS}" -# Some sh's can't handle IFS=/ for some reason. -IFS='%' -set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` -IFS="${oIFS}" - -pathcomp='' - -while [ $# -ne 0 ] ; do - pathcomp="${pathcomp}${1}" - shift - - if [ ! -d "${pathcomp}" ] ; - then - $mkdirprog "${pathcomp}" - else - true - fi - - pathcomp="${pathcomp}/" -done -fi - -if [ x"$dir_arg" != x ] -then - $doit $instcmd $dst && - - if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi && - if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi && - if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi && - if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi -else - -# If we're going to rename the final executable, determine the name now. - - if [ x"$transformarg" = x ] - then - dstfile=`basename $dst` - else - dstfile=`basename $dst $transformbasename | - sed $transformarg`$transformbasename - fi - -# don't allow the sed command to completely eliminate the filename - - if [ x"$dstfile" = x ] - then - dstfile=`basename $dst` - else - true - fi - -# Make a temp file name in the proper directory. - - dsttmp=$dstdir/#inst.$$# - -# Move or copy the file name to the temp name - - $doit $instcmd $src $dsttmp && - - trap "rm -f ${dsttmp}" 0 && - -# and set any options; do chmod last to preserve setuid bits - -# If any of these fail, we abort the whole thing. If we want to -# ignore errors from any of these, just make sure not to ignore -# errors from the above "$doit $instcmd $src $dsttmp" command. - - if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi && - if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi && - if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi && - if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi && - -# Now rename the file to the real destination. - - $doit $rmcmd -f $dstdir/$dstfile && - $doit $mvcmd $dsttmp $dstdir/$dstfile - -fi && - - -exit 0 diff --git a/examples/VFS/shadow_copy_test.c b/examples/VFS/shadow_copy_test.c deleted file mode 100644 index d2b7206cd35..00000000000 --- a/examples/VFS/shadow_copy_test.c +++ /dev/null @@ -1,83 +0,0 @@ -/* - * TEST implementation of an Shadow Copy module - * - * Copyright (C) Stefan Metzmacher 2003 - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -#include "includes.h" - -#undef DBGC_CLASS -#define DBGC_CLASS DBGC_VFS - -/* USE THIS MODULE ONLY FOR TESTING!!!! */ - -/* - For this share - Z:\ - - the ShadowCopies are in this directories - - Z:\@GMT-2003.08.05-12.00.00\ - Z:\@GMT-2003.08.05-12.01.00\ - Z:\@GMT-2003.08.05-12.02.00\ - - e.g. - - Z:\testfile.txt - Z:\@GMT-2003.08.05-12.02.00\testfile.txt - - or: - - Z:\testdir\testfile.txt - Z:\@GMT-2003.08.05-12.02.00\testdir\testfile.txt - - - Note: Files must differ to be displayed via Windows Explorer! - Directories are always displayed... -*/ - -static int test_get_shadow_copy_data(vfs_handle_struct *handle, files_struct *fsp, SHADOW_COPY_DATA *shadow_copy_data, BOOL labels) -{ - uint32 num = 3; - uint32 i; - - shadow_copy_data->num_volumes = num; - - if (labels) { - shadow_copy_data->labels = (SHADOW_COPY_LABEL *)talloc_zero(shadow_copy_data->mem_ctx,(num)*sizeof(SHADOW_COPY_LABEL)); - for (i=0;i<num;i++) { - snprintf(shadow_copy_data->labels[i], sizeof(SHADOW_COPY_LABEL), "@GMT-2003.08.05-12.%02u.00",i); - } - } else { - shadow_copy_data->labels = NULL; - } - - return 0; -} - -/* VFS operations structure */ - -static vfs_op_tuple shadow_copy_test_ops[] = { - {SMB_VFS_OP(test_get_shadow_copy_data), SMB_VFS_OP_GET_SHADOW_COPY_DATA,SMB_VFS_LAYER_OPAQUE}, - - {SMB_VFS_OP(NULL), SMB_VFS_OP_NOOP, SMB_VFS_LAYER_NOOP} -}; - -NTSTATUS init_module(void) -{ - return smb_register_vfs(SMB_VFS_INTERFACE_VERSION, "shadow_copy_test", shadow_copy_test_ops); -} diff --git a/examples/VFS/skel_opaque.c b/examples/VFS/skel_opaque.c deleted file mode 100644 index 310d305cee3..00000000000 --- a/examples/VFS/skel_opaque.c +++ /dev/null @@ -1,581 +0,0 @@ -/* - * Skeleton VFS module. Implements passthrough operation of all VFS - * calls to disk functions. - * - * Copyright (C) Tim Potter, 1999-2000 - * Copyright (C) Alexander Bokovoy, 2002 - * Copyright (C) Stefan (metze) Metzmacher, 2003 - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - - -#include "includes.h" - -/* PLEASE,PLEASE READ THE VFS MODULES CHAPTER OF THE - SAMBA DEVELOPERS GUIDE!!!!!! - */ - -/* If you take this file as template for your module - * please make sure that you remove all vfswrap_* functions and - * implement your own function!! - * - * for functions you didn't want to provide implement dummy functions - * witch return ERROR and errno = ENOSYS; ! - * - * --metze - */ - -static int skel_connect(vfs_handle_struct *handle, connection_struct *conn, const char *service, const char *user) -{ - return 0; -} - -static void skel_disconnect(vfs_handle_struct *handle, connection_struct *conn) -{ - return; -} - -static SMB_BIG_UINT skel_disk_free(vfs_handle_struct *handle, connection_struct *conn, const char *path, - BOOL small_query, SMB_BIG_UINT *bsize, - SMB_BIG_UINT *dfree, SMB_BIG_UINT *dsize) -{ - return vfswrap_disk_free(NULL, conn, path, small_query, bsize, - dfree, dsize); -} - -static int skel_get_quota(vfs_handle_struct *handle, connection_struct *conn, enum SMB_QUOTA_TYPE qtype, unid_t id, SMB_DISK_QUOTA *dq) -{ - return vfswrap_get_quota(NULL, conn, qtype, id, dq); -} - -static int skel_set_quota(vfs_handle_struct *handle, connection_struct *conn, enum SMB_QUOTA_TYPE qtype, unid_t id, SMB_DISK_QUOTA *dq) -{ - return vfswrap_set_quota(NULL, conn, qtype, id, dq); -} - -static int skel_get_shadow_copy_data(vfs_handle_struct *handle, files_struct *fsp, SHADOW_COPY_DATA *shadow_copy_data, BOOL labels) -{ - return vfswrap_get_shadow_copy_data(NULL, fsp, shadow_copy_data, labels); -} - -static DIR *skel_opendir(vfs_handle_struct *handle, connection_struct *conn, const char *fname) -{ - return vfswrap_opendir(NULL, conn, fname); -} - -static struct dirent *skel_readdir(vfs_handle_struct *handle, connection_struct *conn, DIR *dirp) -{ - return vfswrap_readdir(NULL, conn, dirp); -} - -static int skel_mkdir(vfs_handle_struct *handle, connection_struct *conn, const char *path, mode_t mode) -{ - return vfswrap_mkdir(NULL, conn, path, mode); -} - -static int skel_rmdir(vfs_handle_struct *handle, connection_struct *conn, const char *path) -{ - return vfswrap_rmdir(NULL, conn, path); -} - -static int skel_closedir(vfs_handle_struct *handle, connection_struct *conn, DIR *dir) -{ - return vfswrap_closedir(NULL, conn, dir); -} - -static int skel_open(vfs_handle_struct *handle, connection_struct *conn, const char *fname, int flags, mode_t mode) -{ - return vfswrap_open(NULL, conn, fname, flags, mode); -} - -static int skel_close(vfs_handle_struct *handle, files_struct *fsp, int fd) -{ - return vfswrap_close(NULL, fsp, fd); -} - -static ssize_t skel_read(vfs_handle_struct *handle, files_struct *fsp, int fd, void *data, size_t n) -{ - return vfswrap_read(NULL, fsp, fd, data, n); -} - -static ssize_t skel_pread(vfs_handle_struct *handle, struct files_struct *fsp, int fd, void *data, size_t n, SMB_OFF_T offset) -{ - return vfswrap_pread(NULL, fsp, fd, data, n, offset); -} - -static ssize_t skel_write(vfs_handle_struct *handle, files_struct *fsp, int fd, const void *data, size_t n) -{ - return vfswrap_write(NULL, fsp, fd, data, n); -} - -ssize_t skel_pwrite(vfs_handle_struct *handle, struct files_struct *fsp, int fd, const void *data, size_t n, SMB_OFF_T offset) -{ - return vfswrap_pwrite(NULL, fsp, fd, data, n, offset); -} - -static SMB_OFF_T skel_lseek(vfs_handle_struct *handle, files_struct *fsp, int filedes, SMB_OFF_T offset, int whence) -{ - return vfswrap_lseek(NULL, fsp, filedes, offset, whence); -} - -static int skel_rename(vfs_handle_struct *handle, connection_struct *conn, const char *old, const char *new) -{ - return vfswrap_rename(NULL, conn, old, new); -} - -static int skel_fsync(vfs_handle_struct *handle, files_struct *fsp, int fd) -{ - return vfswrap_fsync(NULL, fsp, fd); -} - -static int skel_stat(vfs_handle_struct *handle, connection_struct *conn, const char *fname, SMB_STRUCT_STAT *sbuf) -{ - return vfswrap_stat(NULL, conn, fname, sbuf); -} - -static int skel_fstat(vfs_handle_struct *handle, files_struct *fsp, int fd, SMB_STRUCT_STAT *sbuf) -{ - return vfswrap_fstat(NULL, fsp, fd, sbuf); -} - -static int skel_lstat(vfs_handle_struct *handle, connection_struct *conn, const char *path, SMB_STRUCT_STAT *sbuf) -{ - return vfswrap_lstat(NULL, conn, path, sbuf); -} - -static int skel_unlink(vfs_handle_struct *handle, connection_struct *conn, const char *path) -{ - return vfswrap_unlink(NULL, conn, path); -} - -static int skel_chmod(vfs_handle_struct *handle, connection_struct *conn, const char *path, mode_t mode) -{ - return vfswrap_chmod(NULL, conn, path, mode); -} - -static int skel_fchmod(vfs_handle_struct *handle, files_struct *fsp, int fd, mode_t mode) -{ - return vfswrap_fchmod(NULL, fsp, fd, mode); -} - -static int skel_chown(vfs_handle_struct *handle, connection_struct *conn, const char *path, uid_t uid, gid_t gid) -{ - return vfswrap_chown(NULL, conn, path, uid, gid); -} - -static int skel_fchown(vfs_handle_struct *handle, files_struct *fsp, int fd, uid_t uid, gid_t gid) -{ - return vfswrap_fchown(NULL, fsp, fd, uid, gid); -} - -static int skel_chdir(vfs_handle_struct *handle, connection_struct *conn, const char *path) -{ - return vfswrap_chdir(NULL, conn, path); -} - -static char *skel_getwd(vfs_handle_struct *handle, connection_struct *conn, char *buf) -{ - return vfswrap_getwd(NULL, conn, buf); -} - -static int skel_utime(vfs_handle_struct *handle, connection_struct *conn, const char *path, struct utimbuf *times) -{ - return vfswrap_utime(NULL, conn, path, times); -} - -static int skel_ftruncate(vfs_handle_struct *handle, files_struct *fsp, int fd, SMB_OFF_T offset) -{ - return vfswrap_ftruncate(NULL, fsp, fd, offset); -} - -static BOOL skel_lock(vfs_handle_struct *handle, files_struct *fsp, int fd, int op, SMB_OFF_T offset, SMB_OFF_T count, int type) -{ - return vfswrap_lock(NULL, fsp, fd, op, offset, count, type); -} - -static BOOL skel_symlink(vfs_handle_struct *handle, connection_struct *conn, const char *oldpath, const char *newpath) -{ - return vfswrap_symlink(NULL, conn, oldpath, newpath); -} - -static BOOL skel_readlink(vfs_handle_struct *handle, connection_struct *conn, const char *path, char *buf, size_t bufsiz) -{ - return vfswrap_readlink(NULL, conn, path, buf, bufsiz); -} - -static int skel_link(vfs_handle_struct *handle, connection_struct *conn, const char *oldpath, const char *newpath) -{ - return vfswrap_link(NULL, conn, oldpath, newpath); -} - -static int skel_mknod(vfs_handle_struct *handle, connection_struct *conn, const char *path, mode_t mode, SMB_DEV_T dev) -{ - return vfswrap_mknod(NULL, conn, path, mode, dev); -} - -static char *skel_realpath(vfs_handle_struct *handle, connection_struct *conn, const char *path, char *resolved_path) -{ - return vfswrap_realpath(NULL, conn, path, resolved_path); -} - -static size_t skel_fget_nt_acl(vfs_handle_struct *handle, files_struct *fsp, int fd, uint32 security_info, struct security_descriptor_info **ppdesc) -{ - errno = ENOSYS; - return 0; -} - -static size_t skel_get_nt_acl(vfs_handle_struct *handle, files_struct *fsp, const char *name, uint32 security_info, struct security_descriptor_info **ppdesc) -{ - errno = ENOSYS; - return 0; -} - -static BOOL skel_fset_nt_acl(vfs_handle_struct *handle, files_struct *fsp, int fd, uint32 security_info_sent, struct security_descriptor_info *psd) -{ - errno = ENOSYS; - return False; -} - -static BOOL skel_set_nt_acl(vfs_handle_struct *handle, files_struct *fsp, const char *name, uint32 security_info_sent, struct security_descriptor_info *psd) -{ - errno = ENOSYS; - return False; -} - -static int skel_chmod_acl(vfs_handle_struct *handle, connection_struct *conn, const char *name, mode_t mode) -{ - errno = ENOSYS; - return -1; -} - -static int skel_fchmod_acl(vfs_handle_struct *handle, files_struct *fsp, int fd, mode_t mode) -{ - errno = ENOSYS; - return -1; -} - -static int skel_sys_acl_get_entry(vfs_handle_struct *handle, connection_struct *conn, SMB_ACL_T theacl, int entry_id, SMB_ACL_ENTRY_T *entry_p) -{ - errno = ENOSYS; - return -1; -} - -static int skel_sys_acl_get_tag_type(vfs_handle_struct *handle, connection_struct *conn, SMB_ACL_ENTRY_T entry_d, SMB_ACL_TAG_T *tag_type_p) -{ - errno = ENOSYS; - return -1; -} - -static int skel_sys_acl_get_permset(vfs_handle_struct *handle, connection_struct *conn, SMB_ACL_ENTRY_T entry_d, SMB_ACL_PERMSET_T *permset_p) -{ - errno = ENOSYS; - return -1; -} - -static void *skel_sys_acl_get_qualifier(vfs_handle_struct *handle, connection_struct *conn, SMB_ACL_ENTRY_T entry_d) -{ - errno = ENOSYS; - return NULL; -} - -static SMB_ACL_T skel_sys_acl_get_file(vfs_handle_struct *handle, connection_struct *conn, const char *path_p, SMB_ACL_TYPE_T type) -{ - errno = ENOSYS; - return NULL; -} - -static SMB_ACL_T skel_sys_acl_get_fd(vfs_handle_struct *handle, files_struct *fsp, int fd) -{ - errno = ENOSYS; - return NULL; -} - -static int skel_sys_acl_clear_perms(vfs_handle_struct *handle, connection_struct *conn, SMB_ACL_PERMSET_T permset) -{ - errno = ENOSYS; - return -1; -} - -static int skel_sys_acl_add_perm(vfs_handle_struct *handle, connection_struct *conn, SMB_ACL_PERMSET_T permset, SMB_ACL_PERM_T perm) -{ - errno = ENOSYS; - return -1; -} - -static char *skel_sys_acl_to_text(vfs_handle_struct *handle, connection_struct *conn, SMB_ACL_T theacl, ssize_t *plen) -{ - errno = ENOSYS; - return NULL; -} - -static SMB_ACL_T skel_sys_acl_init(vfs_handle_struct *handle, connection_struct *conn, int count) -{ - errno = ENOSYS; - return NULL; -} - -static int skel_sys_acl_create_entry(vfs_handle_struct *handle, connection_struct *conn, SMB_ACL_T *pacl, SMB_ACL_ENTRY_T *pentry) -{ - errno = ENOSYS; - return -1; -} - -static int skel_sys_acl_set_tag_type(vfs_handle_struct *handle, connection_struct *conn, SMB_ACL_ENTRY_T entry, SMB_ACL_TAG_T tagtype) -{ - errno = ENOSYS; - return -1; -} - -static int skel_sys_acl_set_qualifier(vfs_handle_struct *handle, connection_struct *conn, SMB_ACL_ENTRY_T entry, void *qual) -{ - errno = ENOSYS; - return -1; -} - -static int skel_sys_acl_set_permset(vfs_handle_struct *handle, connection_struct *conn, SMB_ACL_ENTRY_T entry, SMB_ACL_PERMSET_T permset) -{ - errno = ENOSYS; - return -1; -} - -static int skel_sys_acl_valid(vfs_handle_struct *handle, connection_struct *conn, SMB_ACL_T theacl ) -{ - errno = ENOSYS; - return -1; -} - -static int skel_sys_acl_set_file(vfs_handle_struct *handle, connection_struct *conn, const char *name, SMB_ACL_TYPE_T acltype, SMB_ACL_T theacl) -{ - errno = ENOSYS; - return -1; -} - -static int skel_sys_acl_set_fd(vfs_handle_struct *handle, files_struct *fsp, int fd, SMB_ACL_T theacl) -{ - errno = ENOSYS; - return -1; -} - -static int skel_sys_acl_delete_def_file(vfs_handle_struct *handle, connection_struct *conn, const char *path) -{ - errno = ENOSYS; - return -1; -} - -static int skel_sys_acl_get_perm(vfs_handle_struct *handle, connection_struct *conn, SMB_ACL_PERMSET_T permset, SMB_ACL_PERM_T perm) -{ - errno = ENOSYS; - return -1; -} - -static int skel_sys_acl_free_text(vfs_handle_struct *handle, connection_struct *conn, char *text) -{ - errno = ENOSYS; - return -1; -} - -static int skel_sys_acl_free_acl(vfs_handle_struct *handle, connection_struct *conn, SMB_ACL_T posix_acl) -{ - errno = ENOSYS; - return -1; -} - -static int skel_sys_acl_free_qualifier(vfs_handle_struct *handle, connection_struct *conn, void *qualifier, SMB_ACL_TAG_T tagtype) -{ - errno = ENOSYS; - return -1; -} - -static ssize_t skel_getxattr(vfs_handle_struct *handle, struct connection_struct *conn,const char *path, const char *name, void *value, size_t size) -{ - errno = ENOSYS; - return -1; -} - -static ssize_t skel_lgetxattr(vfs_handle_struct *handle, struct connection_struct *conn,const char *path, const char *name, void *value, size_t -size) -{ - errno = ENOSYS; - return -1; -} - -static ssize_t skel_fgetxattr(vfs_handle_struct *handle, struct files_struct *fsp,int fd, const char *name, void *value, size_t size) -{ - errno = ENOSYS; - return -1; -} - -static ssize_t skel_listxattr(vfs_handle_struct *handle, struct connection_struct *conn,const char *path, char *list, size_t size) -{ - errno = ENOSYS; - return -1; -} - -static ssize_t skel_llistxattr(vfs_handle_struct *handle, struct connection_struct *conn,const char *path, char *list, size_t size) -{ - errno = ENOSYS; - return -1; -} - -static ssize_t skel_flistxattr(vfs_handle_struct *handle, struct files_struct *fsp,int fd, char *list, size_t size) -{ - errno = ENOSYS; - return -1; -} - -static int skel_removexattr(vfs_handle_struct *handle, struct connection_struct *conn,const char *path, const char *name) -{ - errno = ENOSYS; - return -1; -} - -static int skel_lremovexattr(vfs_handle_struct *handle, struct connection_struct *conn,const char *path, const char *name) -{ - errno = ENOSYS; - return -1; -} - -static int skel_fremovexattr(vfs_handle_struct *handle, struct files_struct *fsp,int fd, const char *name) -{ - errno = ENOSYS; - return -1; -} - -static int skel_setxattr(vfs_handle_struct *handle, struct connection_struct *conn,const char *path, const char *name, const void *value, size_t size, int flags) -{ - errno = ENOSYS; - return -1; -} - -static int skel_lsetxattr(vfs_handle_struct *handle, struct connection_struct *conn,const char *path, const char *name, const void *value, size_t size, int flags) -{ - errno = ENOSYS; - return -1; -} - -static int skel_fsetxattr(vfs_handle_struct *handle, struct files_struct *fsp,int fd, const char *name, const void *value, size_t size, int flags) -{ - errno = ENOSYS; - return -1; -} - -/* VFS operations structure */ - -static vfs_op_tuple skel_op_tuples[] = { - - /* Disk operations */ - - {SMB_VFS_OP(skel_connect), SMB_VFS_OP_CONNECT, SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(skel_disconnect), SMB_VFS_OP_DISCONNECT, SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(skel_disk_free), SMB_VFS_OP_DISK_FREE, SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(skel_get_quota), SMB_VFS_OP_GET_QUOTA, SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(skel_set_quota), SMB_VFS_OP_SET_QUOTA, SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(skel_get_shadow_copy_data), SMB_VFS_OP_GET_SHADOW_COPY_DATA,SMB_VFS_LAYER_OPAQUE}, - - /* Directory operations */ - - {SMB_VFS_OP(skel_opendir), SMB_VFS_OP_OPENDIR, SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(skel_readdir), SMB_VFS_OP_READDIR, SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(skel_mkdir), SMB_VFS_OP_MKDIR, SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(skel_rmdir), SMB_VFS_OP_RMDIR, SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(skel_closedir), SMB_VFS_OP_CLOSEDIR, SMB_VFS_LAYER_OPAQUE}, - - /* File operations */ - - {SMB_VFS_OP(skel_open), SMB_VFS_OP_OPEN, SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(skel_close), SMB_VFS_OP_CLOSE, SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(skel_read), SMB_VFS_OP_READ, SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(skel_pread), SMB_VFS_OP_PREAD, SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(skel_write), SMB_VFS_OP_WRITE, SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(skel_pwrite), SMB_VFS_OP_PWRITE, SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(skel_lseek), SMB_VFS_OP_LSEEK, SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(skel_rename), SMB_VFS_OP_RENAME, SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(skel_fsync), SMB_VFS_OP_FSYNC, SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(skel_stat), SMB_VFS_OP_STAT, SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(skel_fstat), SMB_VFS_OP_FSTAT, SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(skel_lstat), SMB_VFS_OP_LSTAT, SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(skel_unlink), SMB_VFS_OP_UNLINK, SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(skel_chmod), SMB_VFS_OP_CHMOD, SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(skel_fchmod), SMB_VFS_OP_FCHMOD, SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(skel_chown), SMB_VFS_OP_CHOWN, SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(skel_fchown), SMB_VFS_OP_FCHOWN, SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(skel_chdir), SMB_VFS_OP_CHDIR, SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(skel_getwd), SMB_VFS_OP_GETWD, SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(skel_utime), SMB_VFS_OP_UTIME, SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(skel_ftruncate), SMB_VFS_OP_FTRUNCATE, SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(skel_lock), SMB_VFS_OP_LOCK, SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(skel_symlink), SMB_VFS_OP_SYMLINK, SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(skel_readlink), SMB_VFS_OP_READLINK, SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(skel_link), SMB_VFS_OP_LINK, SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(skel_mknod), SMB_VFS_OP_MKNOD, SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(skel_realpath), SMB_VFS_OP_REALPATH, SMB_VFS_LAYER_OPAQUE}, - - /* NT File ACL operations */ - - {SMB_VFS_OP(skel_fget_nt_acl), SMB_VFS_OP_FGET_NT_ACL, SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(skel_get_nt_acl), SMB_VFS_OP_GET_NT_ACL, SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(skel_fset_nt_acl), SMB_VFS_OP_FSET_NT_ACL, SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(skel_set_nt_acl), SMB_VFS_OP_SET_NT_ACL, SMB_VFS_LAYER_OPAQUE}, - - /* POSIX ACL operations */ - - {SMB_VFS_OP(skel_chmod_acl), SMB_VFS_OP_CHMOD_ACL, SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(skel_fchmod_acl), SMB_VFS_OP_FCHMOD_ACL, SMB_VFS_LAYER_OPAQUE}, - - {SMB_VFS_OP(skel_sys_acl_get_entry), SMB_VFS_OP_SYS_ACL_GET_ENTRY, SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(skel_sys_acl_get_tag_type), SMB_VFS_OP_SYS_ACL_GET_TAG_TYPE, SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(skel_sys_acl_get_permset), SMB_VFS_OP_SYS_ACL_GET_PERMSET, SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(skel_sys_acl_get_qualifier), SMB_VFS_OP_SYS_ACL_GET_QUALIFIER, SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(skel_sys_acl_get_file), SMB_VFS_OP_SYS_ACL_GET_FILE, SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(skel_sys_acl_get_fd), SMB_VFS_OP_SYS_ACL_GET_FD, SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(skel_sys_acl_clear_perms), SMB_VFS_OP_SYS_ACL_CLEAR_PERMS, SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(skel_sys_acl_add_perm), SMB_VFS_OP_SYS_ACL_ADD_PERM, SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(skel_sys_acl_to_text), SMB_VFS_OP_SYS_ACL_TO_TEXT, SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(skel_sys_acl_init), SMB_VFS_OP_SYS_ACL_INIT, SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(skel_sys_acl_create_entry), SMB_VFS_OP_SYS_ACL_CREATE_ENTRY, SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(skel_sys_acl_set_tag_type), SMB_VFS_OP_SYS_ACL_SET_TAG_TYPE, SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(skel_sys_acl_set_qualifier), SMB_VFS_OP_SYS_ACL_SET_QUALIFIER, SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(skel_sys_acl_set_permset), SMB_VFS_OP_SYS_ACL_SET_PERMSET, SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(skel_sys_acl_valid), SMB_VFS_OP_SYS_ACL_VALID, SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(skel_sys_acl_set_file), SMB_VFS_OP_SYS_ACL_SET_FILE, SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(skel_sys_acl_set_fd), SMB_VFS_OP_SYS_ACL_SET_FD, SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(skel_sys_acl_delete_def_file), SMB_VFS_OP_SYS_ACL_DELETE_DEF_FILE, SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(skel_sys_acl_get_perm), SMB_VFS_OP_SYS_ACL_GET_PERM, SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(skel_sys_acl_free_text), SMB_VFS_OP_SYS_ACL_FREE_TEXT, SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(skel_sys_acl_free_acl), SMB_VFS_OP_SYS_ACL_FREE_ACL, SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(skel_sys_acl_free_qualifier), SMB_VFS_OP_SYS_ACL_FREE_QUALIFIER, SMB_VFS_LAYER_OPAQUE}, - - /* EA operations. */ - {SMB_VFS_OP(skel_getxattr), SMB_VFS_OP_GETXATTR, SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(skel_lgetxattr), SMB_VFS_OP_LGETXATTR, SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(skel_fgetxattr), SMB_VFS_OP_FGETXATTR, SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(skel_listxattr), SMB_VFS_OP_LISTXATTR, SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(skel_llistxattr), SMB_VFS_OP_LLISTXATTR, SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(skel_flistxattr), SMB_VFS_OP_FLISTXATTR, SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(skel_removexattr), SMB_VFS_OP_REMOVEXATTR, SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(skel_lremovexattr), SMB_VFS_OP_LREMOVEXATTR, SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(skel_fremovexattr), SMB_VFS_OP_FREMOVEXATTR, SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(skel_setxattr), SMB_VFS_OP_SETXATTR, SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(skel_lsetxattr), SMB_VFS_OP_LSETXATTR, SMB_VFS_LAYER_OPAQUE}, - {SMB_VFS_OP(skel_fsetxattr), SMB_VFS_OP_FSETXATTR, SMB_VFS_LAYER_OPAQUE}, - - {NULL, SMB_VFS_OP_NOOP, SMB_VFS_LAYER_NOOP} -}; - -NTSTATUS init_module(void) -{ - return smb_register_vfs(SMB_VFS_INTERFACE_VERSION, "skel_opaque", skel_op_tuples); -} diff --git a/examples/VFS/skel_transparent.c b/examples/VFS/skel_transparent.c deleted file mode 100644 index 448390e72f4..00000000000 --- a/examples/VFS/skel_transparent.c +++ /dev/null @@ -1,548 +0,0 @@ -/* - * Skeleton VFS module. Implements passthrough operation of all VFS - * calls to disk functions. - * - * Copyright (C) Tim Potter, 1999-2000 - * Copyright (C) Alexander Bokovoy, 2002 - * Copyright (C) Stefan (metze) Metzmacher, 2003 - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - - -#include "includes.h" - -/* PLEASE,PLEASE READ THE VFS MODULES CHAPTER OF THE - SAMBA DEVELOPERS GUIDE!!!!!! - */ - -/* If you take this file as template for your module - * please make sure that you remove all functions you didn't - * want to implement!! - * - * This passthrough operations are useless in reall vfs modules! - * - * --metze - */ - -static int skel_connect(vfs_handle_struct *handle, connection_struct *conn, const char *service, const char *user) -{ - return SMB_VFS_NEXT_CONNECT(handle, conn, service, user); -} - -static void skel_disconnect(vfs_handle_struct *handle, connection_struct *conn) -{ - SMB_VFS_NEXT_DISCONNECT(handle, conn); -} - -static SMB_BIG_UINT skel_disk_free(vfs_handle_struct *handle, connection_struct *conn, const char *path, - BOOL small_query, SMB_BIG_UINT *bsize, - SMB_BIG_UINT *dfree, SMB_BIG_UINT *dsize) -{ - return SMB_VFS_NEXT_DISK_FREE(handle, conn, path, small_query, bsize, - dfree, dsize); -} - -static int skel_get_quota(vfs_handle_struct *handle, connection_struct *conn, enum SMB_QUOTA_TYPE qtype, unid_t id, SMB_DISK_QUOTA *dq) -{ - return SMB_VFS_NEXT_GET_QUOTA(handle, conn, qtype, id, dq); -} - -static int skel_set_quota(vfs_handle_struct *handle, connection_struct *conn, enum SMB_QUOTA_TYPE qtype, unid_t id, SMB_DISK_QUOTA *dq) -{ - return SMB_VFS_NEXT_SET_QUOTA(handle, conn, qtype, id, dq); -} - -static int skel_get_shadow_copy_data(vfs_handle_struct *handle, files_struct *fsp, SHADOW_COPY_DATA *shadow_copy_data, BOOL labels) -{ - return SMB_VFS_NEXT_GET_SHADOW_COPY_DATA(handle, fsp, shadow_copy_data, labels); -} - -static DIR *skel_opendir(vfs_handle_struct *handle, connection_struct *conn, const char *fname) -{ - return SMB_VFS_NEXT_OPENDIR(handle, conn, fname); -} - -static struct dirent *skel_readdir(vfs_handle_struct *handle, connection_struct *conn, DIR *dirp) -{ - return SMB_VFS_NEXT_READDIR(handle, conn, dirp); -} - -static int skel_mkdir(vfs_handle_struct *handle, connection_struct *conn, const char *path, mode_t mode) -{ - return SMB_VFS_NEXT_MKDIR(handle, conn, path, mode); -} - -static int skel_rmdir(vfs_handle_struct *handle, connection_struct *conn, const char *path) -{ - return SMB_VFS_NEXT_RMDIR(handle, conn, path); -} - -static int skel_closedir(vfs_handle_struct *handle, connection_struct *conn, DIR *dir) -{ - return SMB_VFS_NEXT_CLOSEDIR(handle, conn, dir); -} - -static int skel_open(vfs_handle_struct *handle, connection_struct *conn, const char *fname, int flags, mode_t mode) -{ - return SMB_VFS_NEXT_OPEN(handle, conn, fname, flags, mode); -} - -static int skel_close(vfs_handle_struct *handle, files_struct *fsp, int fd) -{ - return SMB_VFS_NEXT_CLOSE(handle, fsp, fd); -} - -static ssize_t skel_read(vfs_handle_struct *handle, files_struct *fsp, int fd, void *data, size_t n) -{ - return SMB_VFS_NEXT_READ(handle, fsp, fd, data, n); -} - -static ssize_t skel_pread(vfs_handle_struct *handle, files_struct *fsp, int fd, void *data, size_t n, SMB_OFF_T offset) -{ - return SMB_VFS_NEXT_PREAD(handle, fsp, fd, data, n, offset); -} - -static ssize_t skel_write(vfs_handle_struct *handle, files_struct *fsp, int fd, const void *data, size_t n) -{ - return SMB_VFS_NEXT_WRITE(handle, fsp, fd, data, n); -} - -static ssize_t skel_pwrite(vfs_handle_struct *handle, files_struct *fsp, int fd, const void *data, size_t n, SMB_OFF_T offset) -{ - return SMB_VFS_NEXT_PWRITE(handle, fsp, fd, data, n, offset); -} - -static SMB_OFF_T skel_lseek(vfs_handle_struct *handle, files_struct *fsp, int filedes, SMB_OFF_T offset, int whence) -{ - return SMB_VFS_NEXT_LSEEK(handle, fsp, filedes, offset, whence); -} - -static int skel_rename(vfs_handle_struct *handle, connection_struct *conn, const char *old, const char *new) -{ - return SMB_VFS_NEXT_RENAME(handle, conn, old, new); -} - -static int skel_fsync(vfs_handle_struct *handle, files_struct *fsp, int fd) -{ - return SMB_VFS_NEXT_FSYNC(handle, fsp, fd); -} - -static int skel_stat(vfs_handle_struct *handle, connection_struct *conn, const char *fname, SMB_STRUCT_STAT *sbuf) -{ - return SMB_VFS_NEXT_STAT(handle, conn, fname, sbuf); -} - -static int skel_fstat(vfs_handle_struct *handle, files_struct *fsp, int fd, SMB_STRUCT_STAT *sbuf) -{ - return SMB_VFS_NEXT_FSTAT(handle, fsp, fd, sbuf); -} - -static int skel_lstat(vfs_handle_struct *handle, connection_struct *conn, const char *path, SMB_STRUCT_STAT *sbuf) -{ - return SMB_VFS_NEXT_LSTAT(handle, conn, path, sbuf); -} - -static int skel_unlink(vfs_handle_struct *handle, connection_struct *conn, const char *path) -{ - return SMB_VFS_NEXT_UNLINK(handle, conn, path); -} - -static int skel_chmod(vfs_handle_struct *handle, connection_struct *conn, const char *path, mode_t mode) -{ - return SMB_VFS_NEXT_CHMOD(handle, conn, path, mode); -} - -static int skel_fchmod(vfs_handle_struct *handle, files_struct *fsp, int fd, mode_t mode) -{ - return SMB_VFS_NEXT_FCHMOD(handle, fsp, fd, mode); -} - -static int skel_chown(vfs_handle_struct *handle, connection_struct *conn, const char *path, uid_t uid, gid_t gid) -{ - return SMB_VFS_NEXT_CHOWN(handle, conn, path, uid, gid); -} - -static int skel_fchown(vfs_handle_struct *handle, files_struct *fsp, int fd, uid_t uid, gid_t gid) -{ - return SMB_VFS_NEXT_FCHOWN(handle, fsp, fd, uid, gid); -} - -static int skel_chdir(vfs_handle_struct *handle, connection_struct *conn, const char *path) -{ - return SMB_VFS_NEXT_CHDIR(handle, conn, path); -} - -static char *skel_getwd(vfs_handle_struct *handle, connection_struct *conn, char *buf) -{ - return SMB_VFS_NEXT_GETWD(handle, conn, buf); -} - -static int skel_utime(vfs_handle_struct *handle, connection_struct *conn, const char *path, struct utimbuf *times) -{ - return SMB_VFS_NEXT_UTIME(handle, conn, path, times); -} - -static int skel_ftruncate(vfs_handle_struct *handle, files_struct *fsp, int fd, SMB_OFF_T offset) -{ - return SMB_VFS_NEXT_FTRUNCATE(handle, fsp, fd, offset); -} - -static BOOL skel_lock(vfs_handle_struct *handle, files_struct *fsp, int fd, int op, SMB_OFF_T offset, SMB_OFF_T count, int type) -{ - return SMB_VFS_NEXT_LOCK(handle, fsp, fd, op, offset, count, type); -} - -static BOOL skel_symlink(vfs_handle_struct *handle, connection_struct *conn, const char *oldpath, const char *newpath) -{ - return SMB_VFS_NEXT_SYMLINK(handle, conn, oldpath, newpath); -} - -static BOOL skel_readlink(vfs_handle_struct *handle, connection_struct *conn, const char *path, char *buf, size_t bufsiz) -{ - return SMB_VFS_NEXT_READLINK(handle, conn, path, buf, bufsiz); -} - -static int skel_link(vfs_handle_struct *handle, connection_struct *conn, const char *oldpath, const char *newpath) -{ - return SMB_VFS_NEXT_LINK(handle, conn, oldpath, newpath); -} - -static int skel_mknod(vfs_handle_struct *handle, connection_struct *conn, const char *path, mode_t mode, SMB_DEV_T dev) -{ - return SMB_VFS_NEXT_MKNOD(handle, conn, path, mode, dev); -} - -static char *skel_realpath(vfs_handle_struct *handle, connection_struct *conn, const char *path, char *resolved_path) -{ - return SMB_VFS_NEXT_REALPATH(handle, conn, path, resolved_path); -} - -static size_t skel_fget_nt_acl(vfs_handle_struct *handle, files_struct *fsp, int fd, uint32 security_info, struct security_descriptor_info **ppdesc) -{ - return SMB_VFS_NEXT_FGET_NT_ACL(handle, fsp, fd, security_info, ppdesc); -} - -static size_t skel_get_nt_acl(vfs_handle_struct *handle, files_struct *fsp, const char *name, uint32 security_info, struct security_descriptor_info **ppdesc) -{ - return SMB_VFS_NEXT_GET_NT_ACL(handle, fsp, name, security_info, ppdesc); -} - -static BOOL skel_fset_nt_acl(vfs_handle_struct *handle, files_struct *fsp, int fd, uint32 security_info_sent, struct security_descriptor_info *psd) -{ - return SMB_VFS_NEXT_FSET_NT_ACL(handle, fsp, fd, security_info_sent, psd); -} - -static BOOL skel_set_nt_acl(vfs_handle_struct *handle, files_struct *fsp, const char *name, uint32 security_info_sent, struct security_descriptor_info *psd) -{ - return SMB_VFS_NEXT_SET_NT_ACL(handle, fsp, name, security_info_sent, psd); -} - -static int skel_chmod_acl(vfs_handle_struct *handle, connection_struct *conn, const char *name, mode_t mode) -{ - /* If the underlying VFS doesn't have ACL support... */ - if (!handle->vfs_next.ops.chmod_acl) { - errno = ENOSYS; - return -1; - } - return SMB_VFS_NEXT_CHMOD_ACL(handle, conn, name, mode); -} - -static int skel_fchmod_acl(vfs_handle_struct *handle, files_struct *fsp, int fd, mode_t mode) -{ - /* If the underlying VFS doesn't have ACL support... */ - if (!handle->vfs_next.ops.fchmod_acl) { - errno = ENOSYS; - return -1; - } - return SMB_VFS_NEXT_FCHMOD_ACL(handle, fsp, fd, mode); -} - -static int skel_sys_acl_get_entry(vfs_handle_struct *handle, connection_struct *conn, SMB_ACL_T theacl, int entry_id, SMB_ACL_ENTRY_T *entry_p) -{ - return SMB_VFS_NEXT_SYS_ACL_GET_ENTRY(handle, conn, theacl, entry_id, entry_p); -} - -static int skel_sys_acl_get_tag_type(vfs_handle_struct *handle, connection_struct *conn, SMB_ACL_ENTRY_T entry_d, SMB_ACL_TAG_T *tag_type_p) -{ - return SMB_VFS_NEXT_SYS_ACL_GET_TAG_TYPE(handle, conn, entry_d, tag_type_p); -} - -static int skel_sys_acl_get_permset(vfs_handle_struct *handle, connection_struct *conn, SMB_ACL_ENTRY_T entry_d, SMB_ACL_PERMSET_T *permset_p) -{ - return SMB_VFS_NEXT_SYS_ACL_GET_PERMSET(handle, conn, entry_d, permset_p); -} - -static void *skel_sys_acl_get_qualifier(vfs_handle_struct *handle, connection_struct *conn, SMB_ACL_ENTRY_T entry_d) -{ - return SMB_VFS_NEXT_SYS_ACL_GET_QUALIFIER(handle, conn, entry_d); -} - -static SMB_ACL_T skel_sys_acl_get_file(vfs_handle_struct *handle, connection_struct *conn, const char *path_p, SMB_ACL_TYPE_T type) -{ - return SMB_VFS_NEXT_SYS_ACL_GET_FILE(handle, conn, path_p, type); -} - -static SMB_ACL_T skel_sys_acl_get_fd(vfs_handle_struct *handle, files_struct *fsp, int fd) -{ - return SMB_VFS_NEXT_SYS_ACL_GET_FD(handle, fsp, fd); -} - -static int skel_sys_acl_clear_perms(vfs_handle_struct *handle, connection_struct *conn, SMB_ACL_PERMSET_T permset) -{ - return SMB_VFS_NEXT_SYS_ACL_CLEAR_PERMS(handle, conn, permset); -} - -static int skel_sys_acl_add_perm(vfs_handle_struct *handle, connection_struct *conn, SMB_ACL_PERMSET_T permset, SMB_ACL_PERM_T perm) -{ - return SMB_VFS_NEXT_SYS_ACL_ADD_PERM(handle, conn, permset, perm); -} - -static char *skel_sys_acl_to_text(vfs_handle_struct *handle, connection_struct *conn, SMB_ACL_T theacl, ssize_t *plen) -{ - return SMB_VFS_NEXT_SYS_ACL_TO_TEXT(handle, conn, theacl, plen); -} - -static SMB_ACL_T skel_sys_acl_init(vfs_handle_struct *handle, connection_struct *conn, int count) -{ - return SMB_VFS_NEXT_SYS_ACL_INIT(handle, conn, count); -} - -static int skel_sys_acl_create_entry(vfs_handle_struct *handle, connection_struct *conn, SMB_ACL_T *pacl, SMB_ACL_ENTRY_T *pentry) -{ - return SMB_VFS_NEXT_SYS_ACL_CREATE_ENTRY(handle, conn, pacl, pentry); -} - -static int skel_sys_acl_set_tag_type(vfs_handle_struct *handle, connection_struct *conn, SMB_ACL_ENTRY_T entry, SMB_ACL_TAG_T tagtype) -{ - return SMB_VFS_NEXT_SYS_ACL_SET_TAG_TYPE(handle, conn, entry, tagtype); -} - -static int skel_sys_acl_set_qualifier(vfs_handle_struct *handle, connection_struct *conn, SMB_ACL_ENTRY_T entry, void *qual) -{ - return SMB_VFS_NEXT_SYS_ACL_SET_QUALIFIER(handle, conn, entry, qual); -} - -static int skel_sys_acl_set_permset(vfs_handle_struct *handle, connection_struct *conn, SMB_ACL_ENTRY_T entry, SMB_ACL_PERMSET_T permset) -{ - return SMB_VFS_NEXT_SYS_ACL_SET_PERMSET(handle, conn, entry, permset); -} - -static int skel_sys_acl_valid(vfs_handle_struct *handle, connection_struct *conn, SMB_ACL_T theacl ) -{ - return SMB_VFS_NEXT_SYS_ACL_VALID(handle, conn, theacl); -} - -static int skel_sys_acl_set_file(vfs_handle_struct *handle, connection_struct *conn, const char *name, SMB_ACL_TYPE_T acltype, SMB_ACL_T theacl) -{ - return SMB_VFS_NEXT_SYS_ACL_SET_FILE(handle, conn, name, acltype, theacl); -} - -static int skel_sys_acl_set_fd(vfs_handle_struct *handle, files_struct *fsp, int fd, SMB_ACL_T theacl) -{ - return SMB_VFS_NEXT_SYS_ACL_SET_FD(handle, fsp, fd, theacl); -} - -static int skel_sys_acl_delete_def_file(vfs_handle_struct *handle, connection_struct *conn, const char *path) -{ - return SMB_VFS_NEXT_SYS_ACL_DELETE_DEF_FILE(handle, conn, path); -} - -static int skel_sys_acl_get_perm(vfs_handle_struct *handle, connection_struct *conn, SMB_ACL_PERMSET_T permset, SMB_ACL_PERM_T perm) -{ - return SMB_VFS_NEXT_SYS_ACL_GET_PERM(handle, conn, permset, perm); -} - -static int skel_sys_acl_free_text(vfs_handle_struct *handle, connection_struct *conn, char *text) -{ - return SMB_VFS_NEXT_SYS_ACL_FREE_TEXT(handle, conn, text); -} - -static int skel_sys_acl_free_acl(vfs_handle_struct *handle, connection_struct *conn, SMB_ACL_T posix_acl) -{ - return SMB_VFS_NEXT_SYS_ACL_FREE_ACL(handle, conn, posix_acl); -} - -static int skel_sys_acl_free_qualifier(vfs_handle_struct *handle, connection_struct *conn, void *qualifier, SMB_ACL_TAG_T tagtype) -{ - return SMB_VFS_NEXT_SYS_ACL_FREE_QUALIFIER(handle, conn, qualifier, tagtype); -} - -static ssize_t skel_getxattr(vfs_handle_struct *handle, struct connection_struct *conn,const char *path, const char *name, void *value, size_t size) -{ - return SMB_VFS_NEXT_GETXATTR(handle, conn, path, name, value, size); -} - -static ssize_t skel_lgetxattr(vfs_handle_struct *handle, struct connection_struct *conn,const char *path, const char *name, void *value, size_t -size) -{ - return SMB_VFS_NEXT_LGETXATTR(handle, conn, path, name, value, size); -} - -static ssize_t skel_fgetxattr(vfs_handle_struct *handle, struct files_struct *fsp,int fd, const char *name, void *value, size_t size) -{ - return SMB_VFS_NEXT_FGETXATTR(handle, fsp, fd, name, value, size); -} - -static ssize_t skel_listxattr(vfs_handle_struct *handle, struct connection_struct *conn,const char *path, char *list, size_t size) -{ - return SMB_VFS_NEXT_LISTXATTR(handle, conn, path, list, size); -} - -static ssize_t skel_llistxattr(vfs_handle_struct *handle, struct connection_struct *conn,const char *path, char *list, size_t size) -{ - return SMB_VFS_NEXT_LLISTXATTR(handle, conn, path, list, size); -} - -static ssize_t skel_flistxattr(vfs_handle_struct *handle, struct files_struct *fsp,int fd, char *list, size_t size) -{ - return SMB_VFS_NEXT_FLISTXATTR(handle, fsp, fd, list, size); -} - -static int skel_removexattr(vfs_handle_struct *handle, struct connection_struct *conn,const char *path, const char *name) -{ - return SMB_VFS_NEXT_REMOVEXATTR(handle, conn, path, name); -} - -static int skel_lremovexattr(vfs_handle_struct *handle, struct connection_struct *conn,const char *path, const char *name) -{ - return SMB_VFS_NEXT_LREMOVEXATTR(handle, conn, path, name); -} - -static int skel_fremovexattr(vfs_handle_struct *handle, struct files_struct *fsp,int fd, const char *name) -{ - return SMB_VFS_NEXT_FREMOVEXATTR(handle, fsp, fd, name); -} - -static int skel_setxattr(vfs_handle_struct *handle, struct connection_struct *conn,const char *path, const char *name, const void *value, size_t size, int flags) -{ - return SMB_VFS_NEXT_SETXATTR(handle, conn, path, name, value, size, flags); -} - -static int skel_lsetxattr(vfs_handle_struct *handle, struct connection_struct *conn,const char *path, const char *name, const void *value, size_t size, int flags) -{ - return SMB_VFS_NEXT_LSETXATTR(handle, conn, path, name, value, size, flags); -} - -static int skel_fsetxattr(vfs_handle_struct *handle, struct files_struct *fsp,int fd, const char *name, const void *value, size_t size, int flags) -{ - return SMB_VFS_NEXT_FSETXATTR(handle, fsp, fd, name, value, size, flags); -} - -/* VFS operations structure */ - -static vfs_op_tuple skel_op_tuples[] = { - - /* Disk operations */ - - {SMB_VFS_OP(skel_connect), SMB_VFS_OP_CONNECT, SMB_VFS_LAYER_TRANSPARENT}, - {SMB_VFS_OP(skel_disconnect), SMB_VFS_OP_DISCONNECT, SMB_VFS_LAYER_TRANSPARENT}, - {SMB_VFS_OP(skel_disk_free), SMB_VFS_OP_DISK_FREE, SMB_VFS_LAYER_TRANSPARENT}, - {SMB_VFS_OP(skel_get_quota), SMB_VFS_OP_GET_QUOTA, SMB_VFS_LAYER_TRANSPARENT}, - {SMB_VFS_OP(skel_set_quota), SMB_VFS_OP_SET_QUOTA, SMB_VFS_LAYER_TRANSPARENT}, - {SMB_VFS_OP(skel_get_shadow_copy_data), SMB_VFS_OP_GET_SHADOW_COPY_DATA,SMB_VFS_LAYER_TRANSPARENT}, - - /* Directory operations */ - - {SMB_VFS_OP(skel_opendir), SMB_VFS_OP_OPENDIR, SMB_VFS_LAYER_TRANSPARENT}, - {SMB_VFS_OP(skel_readdir), SMB_VFS_OP_READDIR, SMB_VFS_LAYER_TRANSPARENT}, - {SMB_VFS_OP(skel_mkdir), SMB_VFS_OP_MKDIR, SMB_VFS_LAYER_TRANSPARENT}, - {SMB_VFS_OP(skel_rmdir), SMB_VFS_OP_RMDIR, SMB_VFS_LAYER_TRANSPARENT}, - {SMB_VFS_OP(skel_closedir), SMB_VFS_OP_CLOSEDIR, SMB_VFS_LAYER_TRANSPARENT}, - - /* File operations */ - - {SMB_VFS_OP(skel_open), SMB_VFS_OP_OPEN, SMB_VFS_LAYER_TRANSPARENT}, - {SMB_VFS_OP(skel_close), SMB_VFS_OP_CLOSE, SMB_VFS_LAYER_TRANSPARENT}, - {SMB_VFS_OP(skel_read), SMB_VFS_OP_READ, SMB_VFS_LAYER_TRANSPARENT}, - {SMB_VFS_OP(skel_write), SMB_VFS_OP_WRITE, SMB_VFS_LAYER_TRANSPARENT}, - {SMB_VFS_OP(skel_lseek), SMB_VFS_OP_LSEEK, SMB_VFS_LAYER_TRANSPARENT}, - {SMB_VFS_OP(skel_rename), SMB_VFS_OP_RENAME, SMB_VFS_LAYER_TRANSPARENT}, - {SMB_VFS_OP(skel_fsync), SMB_VFS_OP_FSYNC, SMB_VFS_LAYER_TRANSPARENT}, - {SMB_VFS_OP(skel_stat), SMB_VFS_OP_STAT, SMB_VFS_LAYER_TRANSPARENT}, - {SMB_VFS_OP(skel_fstat), SMB_VFS_OP_FSTAT, SMB_VFS_LAYER_TRANSPARENT}, - {SMB_VFS_OP(skel_lstat), SMB_VFS_OP_LSTAT, SMB_VFS_LAYER_TRANSPARENT}, - {SMB_VFS_OP(skel_unlink), SMB_VFS_OP_UNLINK, SMB_VFS_LAYER_TRANSPARENT}, - {SMB_VFS_OP(skel_chmod), SMB_VFS_OP_CHMOD, SMB_VFS_LAYER_TRANSPARENT}, - {SMB_VFS_OP(skel_fchmod), SMB_VFS_OP_FCHMOD, SMB_VFS_LAYER_TRANSPARENT}, - {SMB_VFS_OP(skel_chown), SMB_VFS_OP_CHOWN, SMB_VFS_LAYER_TRANSPARENT}, - {SMB_VFS_OP(skel_fchown), SMB_VFS_OP_FCHOWN, SMB_VFS_LAYER_TRANSPARENT}, - {SMB_VFS_OP(skel_chdir), SMB_VFS_OP_CHDIR, SMB_VFS_LAYER_TRANSPARENT}, - {SMB_VFS_OP(skel_getwd), SMB_VFS_OP_GETWD, SMB_VFS_LAYER_TRANSPARENT}, - {SMB_VFS_OP(skel_utime), SMB_VFS_OP_UTIME, SMB_VFS_LAYER_TRANSPARENT}, - {SMB_VFS_OP(skel_ftruncate), SMB_VFS_OP_FTRUNCATE, SMB_VFS_LAYER_TRANSPARENT}, - {SMB_VFS_OP(skel_lock), SMB_VFS_OP_LOCK, SMB_VFS_LAYER_TRANSPARENT}, - {SMB_VFS_OP(skel_symlink), SMB_VFS_OP_SYMLINK, SMB_VFS_LAYER_TRANSPARENT}, - {SMB_VFS_OP(skel_readlink), SMB_VFS_OP_READLINK, SMB_VFS_LAYER_TRANSPARENT}, - {SMB_VFS_OP(skel_link), SMB_VFS_OP_LINK, SMB_VFS_LAYER_TRANSPARENT}, - {SMB_VFS_OP(skel_mknod), SMB_VFS_OP_MKNOD, SMB_VFS_LAYER_TRANSPARENT}, - {SMB_VFS_OP(skel_realpath), SMB_VFS_OP_REALPATH, SMB_VFS_LAYER_TRANSPARENT}, - - /* NT File ACL operations */ - - {SMB_VFS_OP(skel_fget_nt_acl), SMB_VFS_OP_FGET_NT_ACL, SMB_VFS_LAYER_TRANSPARENT}, - {SMB_VFS_OP(skel_get_nt_acl), SMB_VFS_OP_GET_NT_ACL, SMB_VFS_LAYER_TRANSPARENT}, - {SMB_VFS_OP(skel_fset_nt_acl), SMB_VFS_OP_FSET_NT_ACL, SMB_VFS_LAYER_TRANSPARENT}, - {SMB_VFS_OP(skel_set_nt_acl), SMB_VFS_OP_SET_NT_ACL, SMB_VFS_LAYER_TRANSPARENT}, - - /* POSIX ACL operations */ - - {SMB_VFS_OP(skel_chmod_acl), SMB_VFS_OP_CHMOD_ACL, SMB_VFS_LAYER_TRANSPARENT}, - {SMB_VFS_OP(skel_fchmod_acl), SMB_VFS_OP_FCHMOD_ACL, SMB_VFS_LAYER_TRANSPARENT}, - - {SMB_VFS_OP(skel_sys_acl_get_entry), SMB_VFS_OP_SYS_ACL_GET_ENTRY, SMB_VFS_LAYER_TRANSPARENT}, - {SMB_VFS_OP(skel_sys_acl_get_tag_type), SMB_VFS_OP_SYS_ACL_GET_TAG_TYPE, SMB_VFS_LAYER_TRANSPARENT}, - {SMB_VFS_OP(skel_sys_acl_get_permset), SMB_VFS_OP_SYS_ACL_GET_PERMSET, SMB_VFS_LAYER_TRANSPARENT}, - {SMB_VFS_OP(skel_sys_acl_get_qualifier), SMB_VFS_OP_SYS_ACL_GET_QUALIFIER, SMB_VFS_LAYER_TRANSPARENT}, - {SMB_VFS_OP(skel_sys_acl_get_file), SMB_VFS_OP_SYS_ACL_GET_FILE, SMB_VFS_LAYER_TRANSPARENT}, - {SMB_VFS_OP(skel_sys_acl_get_fd), SMB_VFS_OP_SYS_ACL_GET_FD, SMB_VFS_LAYER_TRANSPARENT}, - {SMB_VFS_OP(skel_sys_acl_clear_perms), SMB_VFS_OP_SYS_ACL_CLEAR_PERMS, SMB_VFS_LAYER_TRANSPARENT}, - {SMB_VFS_OP(skel_sys_acl_add_perm), SMB_VFS_OP_SYS_ACL_ADD_PERM, SMB_VFS_LAYER_TRANSPARENT}, - {SMB_VFS_OP(skel_sys_acl_to_text), SMB_VFS_OP_SYS_ACL_TO_TEXT, SMB_VFS_LAYER_TRANSPARENT}, - {SMB_VFS_OP(skel_sys_acl_init), SMB_VFS_OP_SYS_ACL_INIT, SMB_VFS_LAYER_TRANSPARENT}, - {SMB_VFS_OP(skel_sys_acl_create_entry), SMB_VFS_OP_SYS_ACL_CREATE_ENTRY, SMB_VFS_LAYER_TRANSPARENT}, - {SMB_VFS_OP(skel_sys_acl_set_tag_type), SMB_VFS_OP_SYS_ACL_SET_TAG_TYPE, SMB_VFS_LAYER_TRANSPARENT}, - {SMB_VFS_OP(skel_sys_acl_set_qualifier), SMB_VFS_OP_SYS_ACL_SET_QUALIFIER, SMB_VFS_LAYER_TRANSPARENT}, - {SMB_VFS_OP(skel_sys_acl_set_permset), SMB_VFS_OP_SYS_ACL_SET_PERMSET, SMB_VFS_LAYER_TRANSPARENT}, - {SMB_VFS_OP(skel_sys_acl_valid), SMB_VFS_OP_SYS_ACL_VALID, SMB_VFS_LAYER_TRANSPARENT}, - {SMB_VFS_OP(skel_sys_acl_set_file), SMB_VFS_OP_SYS_ACL_SET_FILE, SMB_VFS_LAYER_TRANSPARENT}, - {SMB_VFS_OP(skel_sys_acl_set_fd), SMB_VFS_OP_SYS_ACL_SET_FD, SMB_VFS_LAYER_TRANSPARENT}, - {SMB_VFS_OP(skel_sys_acl_delete_def_file), SMB_VFS_OP_SYS_ACL_DELETE_DEF_FILE, SMB_VFS_LAYER_TRANSPARENT}, - {SMB_VFS_OP(skel_sys_acl_get_perm), SMB_VFS_OP_SYS_ACL_GET_PERM, SMB_VFS_LAYER_TRANSPARENT}, - {SMB_VFS_OP(skel_sys_acl_free_text), SMB_VFS_OP_SYS_ACL_FREE_TEXT, SMB_VFS_LAYER_TRANSPARENT}, - {SMB_VFS_OP(skel_sys_acl_free_acl), SMB_VFS_OP_SYS_ACL_FREE_ACL, SMB_VFS_LAYER_TRANSPARENT}, - {SMB_VFS_OP(skel_sys_acl_free_qualifier), SMB_VFS_OP_SYS_ACL_FREE_QUALIFIER, SMB_VFS_LAYER_TRANSPARENT}, - - /* EA operations. */ - {SMB_VFS_OP(skel_getxattr), SMB_VFS_OP_GETXATTR, SMB_VFS_LAYER_TRANSPARENT}, - {SMB_VFS_OP(skel_lgetxattr), SMB_VFS_OP_LGETXATTR, SMB_VFS_LAYER_TRANSPARENT}, - {SMB_VFS_OP(skel_fgetxattr), SMB_VFS_OP_FGETXATTR, SMB_VFS_LAYER_TRANSPARENT}, - {SMB_VFS_OP(skel_listxattr), SMB_VFS_OP_LISTXATTR, SMB_VFS_LAYER_TRANSPARENT}, - {SMB_VFS_OP(skel_llistxattr), SMB_VFS_OP_LLISTXATTR, SMB_VFS_LAYER_TRANSPARENT}, - {SMB_VFS_OP(skel_flistxattr), SMB_VFS_OP_FLISTXATTR, SMB_VFS_LAYER_TRANSPARENT}, - {SMB_VFS_OP(skel_removexattr), SMB_VFS_OP_REMOVEXATTR, SMB_VFS_LAYER_TRANSPARENT}, - {SMB_VFS_OP(skel_lremovexattr), SMB_VFS_OP_LREMOVEXATTR, SMB_VFS_LAYER_TRANSPARENT}, - {SMB_VFS_OP(skel_fremovexattr), SMB_VFS_OP_FREMOVEXATTR, SMB_VFS_LAYER_TRANSPARENT}, - {SMB_VFS_OP(skel_setxattr), SMB_VFS_OP_SETXATTR, SMB_VFS_LAYER_TRANSPARENT}, - {SMB_VFS_OP(skel_lsetxattr), SMB_VFS_OP_LSETXATTR, SMB_VFS_LAYER_TRANSPARENT}, - {SMB_VFS_OP(skel_fsetxattr), SMB_VFS_OP_FSETXATTR, SMB_VFS_LAYER_TRANSPARENT}, - - {NULL, SMB_VFS_OP_NOOP, SMB_VFS_LAYER_NOOP} -}; - -NTSTATUS init_module(void) -{ - return smb_register_vfs(SMB_VFS_INTERFACE_VERSION, "skel_transparent", skel_op_tuples); -} |