diff --git a/source/build/smb_build/TODO b/source/build/smb_build/TODO index 1c2e6c2f61a..6c45e6e6b24 100644 --- a/source/build/smb_build/TODO +++ b/source/build/smb_build/TODO @@ -11,3 +11,4 @@ - utility function for 'init mutex' - install shared modules - improve (un)install scripts (rewrite in perl?) +- proper #include dependencies diff --git a/source/include/includes.h b/source/include/includes.h index 2222b4ff430..a8aecc36102 100644 --- a/source/include/includes.h +++ b/source/include/includes.h @@ -101,7 +101,6 @@ struct ipv4_addr { #include "smb_macros.h" #include "smb.h" #include "byteorder.h" -#include "lib/tdr/tdr.h" #include "librpc/ndr/libndr.h" #include "librpc/gen_ndr/misc.h" #include "librpc/gen_ndr/dcerpc.h" @@ -109,13 +108,13 @@ struct ipv4_addr { #include "librpc/gen_ndr/orpc.h" #include "librpc/rpc/dcerpc.h" #include "smb_interfaces.h" -#include "ntvfs/ntvfs.h" #include "cli_context.h" #include "auth/credentials/credentials.h" /***** automatically generated prototypes *****/ #define _PRINTF_ATTRIBUTE(a1, a2) PRINTF_ATTRIBUTE(a1, a2) #include "include/proto.h" +#include "basic.h" #undef _PRINTF_ATTRIBUTE #define _PRINTF_ATTRIBUTE(a1, a2) diff --git a/source/include/structs.h b/source/include/structs.h index 153902d13a2..2187fcd8ba8 100644 --- a/source/include/structs.h +++ b/source/include/structs.h @@ -157,7 +157,6 @@ struct request_buffer; struct smb2srv_request; struct smb2_request_buffer; -struct ntvfs_context; struct ntvfs_module_context; struct pvfs_dir; @@ -267,14 +266,10 @@ struct task_server; struct model_ops; struct stream_server_ops; -struct nbtd_server; -struct nbtd_interface; -struct nbtd_iface_name; struct wins_server; struct nbtd_proxy_wins_challenge; struct nbtd_proxy_wins_release_demand; -struct nbt_iface_name; struct nbt_dc_name; struct wb_sid_object; struct wb_dom_info; @@ -373,3 +368,6 @@ struct IUnknown_vtable; struct MprVar; struct registry_context; +struct nbtd_interface; +struct nbtd_iface_name; +struct nbtd_server; diff --git a/source/lib/basic.mk b/source/lib/basic.mk index 4d2d1b08fdd..b4bde76d3f6 100644 --- a/source/lib/basic.mk +++ b/source/lib/basic.mk @@ -32,6 +32,7 @@ MAJOR_VERSION = 0 MINOR_VERSION = 0 RELEASE_VERSION = 1 DESCRIPTION = Simple marshall/unmarshall library +PRIVATE_PROTO_HEADER = tdr/tdr_proto.h OBJ_FILES = tdr/tdr.o ############################## @@ -62,6 +63,7 @@ OBJ_FILES = \ ############################## # Start SUBSYSTEM LIBBASIC [SUBSYSTEM::LIBBASIC] +PRIVATE_PROTO_HEADER = basic.h OBJ_FILES = version.o \ xfile.o \ debug.o \ diff --git a/source/lib/registry/common/reg_interface.c b/source/lib/registry/common/reg_interface.c index b0540c1ba42..00fa42d3427 100644 --- a/source/lib/registry/common/reg_interface.c +++ b/source/lib/registry/common/reg_interface.c @@ -29,7 +29,7 @@ static struct reg_init_function_entry *backends = NULL; static struct reg_init_function_entry *reg_find_backend_entry(const char *name); /* Register new backend */ -NTSTATUS registry_register(const void *_hive_ops) +_PUBLIC_ NTSTATUS registry_register(const void *_hive_ops) { const struct hive_operations *hive_ops = _hive_ops; struct reg_init_function_entry *entry = backends; @@ -65,7 +65,7 @@ static struct reg_init_function_entry *reg_find_backend_entry(const char *name) return NULL; } -NTSTATUS registry_init(void) +_PUBLIC_ NTSTATUS registry_init(void) { init_module_fn static_init[] = STATIC_REGISTRY_MODULES; init_module_fn *shared_init = load_samba_modules(NULL, "registry"); @@ -101,7 +101,7 @@ static struct { { 0, NULL } }; -int reg_list_predefs(TALLOC_CTX *mem_ctx, char ***predefs, uint32_t **hkeys) +_PUBLIC_ int reg_list_predefs(TALLOC_CTX *mem_ctx, char ***predefs, uint32_t **hkeys) { int i; *predefs = talloc_array(mem_ctx, char *, ARRAY_SIZE(predef_names)); @@ -151,7 +151,7 @@ WERROR reg_get_predefined_key(struct registry_context *ctx, uint32_t hkey, struc } /* Open a registry file/host/etc */ -WERROR reg_open_hive(TALLOC_CTX *parent_ctx, const char *backend, const char *location, const char *credentials, struct registry_key **root) +_PUBLIC_ WERROR reg_open_hive(TALLOC_CTX *parent_ctx, const char *backend, const char *location, const char *credentials, struct registry_key **root) { struct registry_hive *rethive; struct registry_key *retkey = NULL; @@ -200,7 +200,7 @@ WERROR reg_open_hive(TALLOC_CTX *parent_ctx, const char *backend, const char *lo * First tries to use the open_key function from the backend * then falls back to get_subkey_by_name and later get_subkey_by_index */ -WERROR reg_open_key(TALLOC_CTX *mem_ctx, struct registry_key *parent, const char *name, struct registry_key **result) +_PUBLIC_ WERROR reg_open_key(TALLOC_CTX *mem_ctx, struct registry_key *parent, const char *name, struct registry_key **result) { WERROR error; @@ -251,7 +251,7 @@ WERROR reg_open_key(TALLOC_CTX *mem_ctx, struct registry_key *parent, const char return WERR_OK; } -WERROR reg_key_get_value_by_index(TALLOC_CTX *mem_ctx, const struct registry_key *key, int idx, struct registry_value **val) +_PUBLIC_ WERROR reg_key_get_value_by_index(TALLOC_CTX *mem_ctx, const struct registry_key *key, int idx, struct registry_value **val) { if(!key) return WERR_INVALID_PARAM; @@ -434,7 +434,7 @@ WERROR reg_key_add_name(TALLOC_CTX *mem_ctx, const struct registry_key *parent, return WERR_OK; } -WERROR reg_val_set(struct registry_key *key, const char *value, uint32_t type, DATA_BLOB data) +_PUBLIC_ WERROR reg_val_set(struct registry_key *key, const char *value, uint32_t type, DATA_BLOB data) { /* A 'real' set function has preference */ if (key->hive->functions->set_value) @@ -455,7 +455,7 @@ WERROR reg_get_sec_desc(TALLOC_CTX *ctx, const struct registry_key *key, struct return WERR_NOT_SUPPORTED; } -WERROR reg_del_value(const struct registry_key *key, const char *valname) +_PUBLIC_ WERROR reg_del_value(const struct registry_key *key, const char *valname) { WERROR ret = WERR_OK; if(!key->hive->functions->del_value) diff --git a/source/lib/registry/patchfile.c b/source/lib/registry/patchfile.c index dd118c780f0..21c9c26b216 100644 --- a/source/lib/registry/patchfile.c +++ b/source/lib/registry/patchfile.c @@ -173,7 +173,7 @@ static WERROR reg_generate_diff_key(struct reg_diff *diff, struct registry_key * /* * Generate diff between two registry contexts */ -struct reg_diff *reg_generate_diff(TALLOC_CTX *mem_ctx, struct registry_context *ctx1, struct registry_context *ctx2) +_PUBLIC_ struct reg_diff *reg_generate_diff(TALLOC_CTX *mem_ctx, struct registry_context *ctx1, struct registry_context *ctx2) { struct reg_diff *diff = talloc_zero(mem_ctx, struct reg_diff); int i; @@ -202,7 +202,7 @@ struct reg_diff *reg_generate_diff(TALLOC_CTX *mem_ctx, struct registry_context /* * Save registry diff */ -WERROR reg_diff_save(const struct reg_diff *diff, const char *filename) +_PUBLIC_ WERROR reg_diff_save(const struct reg_diff *diff, const char *filename) { int xf, i, j; @@ -363,7 +363,7 @@ struct reg_diff *reg_diff_load(TALLOC_CTX *ctx, const char *fn) /* * Apply diff to a registry context */ -BOOL reg_diff_apply (const struct reg_diff *diff, struct registry_context *ctx) +_PUBLIC_ BOOL reg_diff_apply (const struct reg_diff *diff, struct registry_context *ctx) { TALLOC_CTX *mem_ctx = talloc_init("apply_cmd_file"); struct registry_key *tmp = NULL; diff --git a/source/lib/tdr/tdr.c b/source/lib/tdr/tdr.c index 4a8d05a8abc..5ebe3f08523 100644 --- a/source/lib/tdr/tdr.c +++ b/source/lib/tdr/tdr.c @@ -24,6 +24,7 @@ #include "includes.h" #include "system/network.h" #include "system/filesys.h" +#include "tdr/tdr.h" #define TDR_BASE_MARSHALL_SIZE 1024 diff --git a/source/lib/tdr/tdr.h b/source/lib/tdr/tdr.h index f882a632750..8ca6717ceea 100644 --- a/source/lib/tdr/tdr.h +++ b/source/lib/tdr/tdr.h @@ -54,3 +54,5 @@ struct tdr_print { typedef NTSTATUS (*tdr_push_fn_t) (struct tdr_push *, const void *); typedef NTSTATUS (*tdr_pull_fn_t) (struct tdr_pull *, TALLOC_CTX *, void *); + +#include "tdr/tdr_proto.h" diff --git a/source/main.mk b/source/main.mk index b185ec97e4c..d21d57b790c 100644 --- a/source/main.mk +++ b/source/main.mk @@ -215,9 +215,9 @@ clean_pch: basics: include/config.h \ include/proto.h \ + $(PROTO_HEADERS) \ idl \ - heimdal_basics \ - $(PROTO_HEADERS) + heimdal_basics clean: heimdal_clean @echo Removing headers diff --git a/source/nbt_server/config.mk b/source/nbt_server/config.mk index 24e69eb52e5..61d2a7a3d60 100644 --- a/source/nbt_server/config.mk +++ b/source/nbt_server/config.mk @@ -47,6 +47,7 @@ OBJ_FILES = \ defense.o \ packet.o \ irpc.o +PRIVATE_PROTO_HEADER = nbt_server_proto.h REQUIRED_SUBSYSTEMS = \ LIBCLI_NBT NBTD_WINS NBTD_DGRAM # End SUBSYSTEM NBTD diff --git a/source/nbt_server/nbt_server.h b/source/nbt_server/nbt_server.h index 71e384bd2cd..9203f20fd91 100644 --- a/source/nbt_server/nbt_server.h +++ b/source/nbt_server/nbt_server.h @@ -86,3 +86,5 @@ struct nbtd_server { return; \ } \ } while (0) + +#include "nbt_server/nbt_server_proto.h" diff --git a/source/ntvfs/cifs/vfs_cifs.c b/source/ntvfs/cifs/vfs_cifs.c index b0d0d065522..16a472104b7 100644 --- a/source/ntvfs/cifs/vfs_cifs.c +++ b/source/ntvfs/cifs/vfs_cifs.c @@ -33,6 +33,7 @@ #include "smb_server/smb_server.h" #include "smbd/service_stream.h" #include "auth/auth.h" +#include "ntvfs/ntvfs.h" /* this is stored in ntvfs_private */ struct cvfs_private { diff --git a/source/ntvfs/config.mk b/source/ntvfs/config.mk index bc39d821568..74b62809f7e 100644 --- a/source/ntvfs/config.mk +++ b/source/ntvfs/config.mk @@ -77,6 +77,7 @@ PUBLIC_HEADERS = ntvfs.h MAJOR_VERSION = 0 MINOR_VERSION = 0 DESCRIPTION = Virtual File System with NTFS semantics +PRIVATE_PROTO_HEADER = ntvfs_proto.h RELEASE_VERSION = 1 OBJ_FILES = \ ntvfs_base.o \ diff --git a/source/ntvfs/ipc/vfs_ipc.c b/source/ntvfs/ipc/vfs_ipc.c index 3f91323fe51..3a643d71458 100644 --- a/source/ntvfs/ipc/vfs_ipc.c +++ b/source/ntvfs/ipc/vfs_ipc.c @@ -29,6 +29,7 @@ #include "system/filesys.h" #include "dlinklist.h" #include "smb_server/smb_server.h" +#include "ntvfs/ntvfs.h" #define IPC_BASE_FNUM 0x400 diff --git a/source/ntvfs/nbench/vfs_nbench.c b/source/ntvfs/nbench/vfs_nbench.c index acfa6313d37..3c95621694b 100644 --- a/source/ntvfs/nbench/vfs_nbench.c +++ b/source/ntvfs/nbench/vfs_nbench.c @@ -27,6 +27,7 @@ #include "includes.h" #include "system/filesys.h" #include "smb_server/smb_server.h" +#include "ntvfs/ntvfs.h" /* this is stored in ntvfs_private */ struct nbench_private { diff --git a/source/ntvfs/ntvfs.h b/source/ntvfs/ntvfs.h index 3a6a78c0327..4ec8926ebcc 100644 --- a/source/ntvfs/ntvfs.h +++ b/source/ntvfs/ntvfs.h @@ -180,3 +180,5 @@ struct ntvfs_critical_sizes { int sizeof_smbsrv_tcon; int sizeof_smbsrv_request; }; + +#include "ntvfs/ntvfs_proto.h" diff --git a/source/ntvfs/ntvfs_base.c b/source/ntvfs/ntvfs_base.c index 1b021527de6..d20904737f4 100644 --- a/source/ntvfs/ntvfs_base.c +++ b/source/ntvfs/ntvfs_base.c @@ -27,6 +27,7 @@ #include "dlinklist.h" #include "smb_server/smb_server.h" #include "smb_build.h" +#include "ntvfs/ntvfs.h" /* the list of currently registered NTVFS backends, note that there * can be more than one backend with the same name, as long as they diff --git a/source/ntvfs/ntvfs_generic.c b/source/ntvfs/ntvfs_generic.c index 8d2809cf6bb..dc638ade5fd 100644 --- a/source/ntvfs/ntvfs_generic.c +++ b/source/ntvfs/ntvfs_generic.c @@ -34,6 +34,7 @@ #include "includes.h" #include "smb_server/smb_server.h" #include "librpc/gen_ndr/ndr_security.h" +#include "ntvfs/ntvfs.h" /* a second stage function converts from the out parameters of the generic call onto the out parameters of the specific call made */ diff --git a/source/ntvfs/ntvfs_interface.c b/source/ntvfs/ntvfs_interface.c index 6a711bc3bd0..788dcafaca6 100644 --- a/source/ntvfs/ntvfs_interface.c +++ b/source/ntvfs/ntvfs_interface.c @@ -21,7 +21,7 @@ #include "includes.h" #include "smb_server/smb_server.h" - +#include "ntvfs/ntvfs.h" /* connect/disconnect */ NTSTATUS ntvfs_connect(struct smbsrv_request *req, const char *sharename) diff --git a/source/ntvfs/ntvfs_util.c b/source/ntvfs/ntvfs_util.c index e360321882b..ad31865425f 100644 --- a/source/ntvfs/ntvfs_util.c +++ b/source/ntvfs/ntvfs_util.c @@ -24,6 +24,7 @@ #include "includes.h" #include "dlinklist.h" #include "smb_server/smb_server.h" +#include "ntvfs/ntvfs.h" NTSTATUS ntvfs_async_state_push(struct smbsrv_request *req, diff --git a/source/ntvfs/posix/vfs_posix.h b/source/ntvfs/posix/vfs_posix.h index 9eec368157d..dd2bf74543a 100644 --- a/source/ntvfs/posix/vfs_posix.h +++ b/source/ntvfs/posix/vfs_posix.h @@ -25,6 +25,7 @@ #include "system/filesys.h" #include "smb_server/smb_server.h" +#include "ntvfs/ntvfs.h" /* this is the private structure for the posix vfs backend. It is used to hold per-connection (per tree connect) state information */ diff --git a/source/ntvfs/print/vfs_print.c b/source/ntvfs/print/vfs_print.c index c04cf76f332..e933f5502bb 100644 --- a/source/ntvfs/print/vfs_print.c +++ b/source/ntvfs/print/vfs_print.c @@ -25,6 +25,7 @@ #include "includes.h" #include "ioctl.h" #include "smb_server/smb_server.h" +#include "ntvfs/ntvfs.h" /* connect to a share - used when a tree_connect operation comes diff --git a/source/ntvfs/simple/svfs_util.c b/source/ntvfs/simple/svfs_util.c index ac5cf69e9a6..d332abb0910 100644 --- a/source/ntvfs/simple/svfs_util.c +++ b/source/ntvfs/simple/svfs_util.c @@ -28,6 +28,7 @@ #include "svfs.h" #include "system/time.h" #include "system/dir.h" +#include "ntvfs/ntvfs.h" /* convert a windows path to a unix path - don't do any manging or case sensitive handling diff --git a/source/ntvfs/simple/vfs_simple.c b/source/ntvfs/simple/vfs_simple.c index e9063c38c51..1198cafbe91 100644 --- a/source/ntvfs/simple/vfs_simple.c +++ b/source/ntvfs/simple/vfs_simple.c @@ -33,6 +33,7 @@ #include "system/time.h" #include "dlinklist.h" #include "smb_server/smb_server.h" +#include "ntvfs/ntvfs.h" #ifndef O_DIRECTORY #define O_DIRECTORY 0 diff --git a/source/ntvfs/unixuid/vfs_unixuid.c b/source/ntvfs/unixuid/vfs_unixuid.c index 928ff8241b2..8bdf732735c 100644 --- a/source/ntvfs/unixuid/vfs_unixuid.c +++ b/source/ntvfs/unixuid/vfs_unixuid.c @@ -27,6 +27,7 @@ #include "auth/auth.h" #include "librpc/gen_ndr/ndr_security.h" #include "smb_server/smb_server.h" +#include "ntvfs/ntvfs.h" struct unixuid_private { struct sidmap_context *sidmap; diff --git a/source/pidl/lib/Parse/Pidl/Samba4/TDR.pm b/source/pidl/lib/Parse/Pidl/Samba4/TDR.pm index 789fb7adbe1..3bdb7015260 100644 --- a/source/pidl/lib/Parse/Pidl/Samba4/TDR.pm +++ b/source/pidl/lib/Parse/Pidl/Samba4/TDR.pm @@ -242,6 +242,7 @@ sub Parser($$$) pidl ""; pidl_hdr "/* autogenerated by pidl */"; pidl_hdr "#include \"$baseheader\""; + pidl_hdr "#include \"tdr/tdr.h\""; pidl_hdr ""; foreach (@$idl) { ParserInterface($_) if ($_->{TYPE} eq "INTERFACE"); } diff --git a/source/script/mkproto.pl b/source/script/mkproto.pl index 479d53da325..1b2a9d355ab 100755 --- a/source/script/mkproto.pl +++ b/source/script/mkproto.pl @@ -56,14 +56,14 @@ if (not defined($private_define) and defined($private_file)) { } if (defined($public_file)) { - open PUBLIC, ">$public_file"; + open PUBLIC, ">$public_file" or die("Can't open `$public_file': $!"); $public_fd = \*PUBLIC; } if ($private_file eq $public_file) { $private_fd = $public_fd; } elsif (defined($private_file)) { - open PRIVATE, ">$private_file"; + open PRIVATE, ">$private_file" or die("Can't open `$private_file': $!"); ; $private_fd = \*PRIVATE; } @@ -128,6 +128,10 @@ sub process_file($$$) next if ($line =~ /^\/|[;]/); + if ($line =~ s/^_PUBLIC_[\t ]//) { + $target = $public_file; + } + next unless ( $line =~ / ^void|^BOOL|^int|^struct|^char|^const|^\w+_[tT]\s|^uint|^unsigned|^long| ^NTSTATUS|^ADS_STATUS|^enum\s.*\(|^DATA_BLOB|^WERROR|^XFILE|^FILE|^DIR| @@ -142,10 +146,6 @@ sub process_file($$$) next; } - if ($line =~ s/_PUBLIC_//xo) { - $target = $public_file; - } - if ( $line =~ /\(.*\)\s*$/o ) { chomp $line; print $target "$line;\n"; diff --git a/source/smb_server/config.mk b/source/smb_server/config.mk index 0810c29998e..d41ec24acaa 100644 --- a/source/smb_server/config.mk +++ b/source/smb_server/config.mk @@ -8,6 +8,7 @@ OBJ_FILES = \ tcon.o \ session.o \ management.o +PRIVATE_PROTO_HEADER = smb_server_proto.h REQUIRED_SUBSYSTEMS = \ LIBPACKET \ SMB_PROTOCOL \ diff --git a/source/smb_server/smb/nttrans.c b/source/smb_server/smb/nttrans.c index 215b378283c..7d5398671df 100644 --- a/source/smb_server/smb/nttrans.c +++ b/source/smb_server/smb/nttrans.c @@ -25,6 +25,7 @@ #include "includes.h" #include "smb_server/smb_server.h" #include "librpc/gen_ndr/ndr_security.h" +#include "ntvfs/ntvfs.h" diff --git a/source/smb_server/smb/receive.c b/source/smb_server/smb/receive.c index 806244ee12e..a7dde2163fc 100644 --- a/source/smb_server/smb/receive.c +++ b/source/smb_server/smb/receive.c @@ -25,6 +25,7 @@ #include "smbd/service_stream.h" #include "smb_server/smb_server.h" #include "lib/stream/packet.h" +#include "ntvfs/ntvfs.h" /* diff --git a/source/smb_server/smb/reply.c b/source/smb_server/smb/reply.c index d780cb1a753..644a5dd1a4d 100644 --- a/source/smb_server/smb/reply.c +++ b/source/smb_server/smb/reply.c @@ -26,6 +26,7 @@ #include "includes.h" #include "smb_server/smb_server.h" #include "libcli/nbt/libnbt.h" +#include "ntvfs/ntvfs.h" /* useful way of catching wct errors with file and line number */ diff --git a/source/smb_server/smb/request.c b/source/smb_server/smb/request.c index 5491089c8e0..08e3eb74a55 100644 --- a/source/smb_server/smb/request.c +++ b/source/smb_server/smb/request.c @@ -28,6 +28,7 @@ #include "smb_server/smb_server.h" #include "smbd/service_stream.h" #include "lib/stream/packet.h" +#include "ntvfs/ntvfs.h" /* we over allocate the data buffer to prevent too many realloc calls */ diff --git a/source/smb_server/smb/search.c b/source/smb_server/smb/search.c index 3ec66a0f334..e214d23e185 100644 --- a/source/smb_server/smb/search.c +++ b/source/smb_server/smb/search.c @@ -24,6 +24,7 @@ #include "includes.h" #include "smb_server/smb_server.h" +#include "ntvfs/ntvfs.h" /* check req->async.status and if not OK then send an error reply */ diff --git a/source/smb_server/smb/service.c b/source/smb_server/smb/service.c index 6032e5a20d2..f5ba1254d80 100644 --- a/source/smb_server/smb/service.c +++ b/source/smb_server/smb/service.c @@ -21,6 +21,7 @@ #include "includes.h" #include "smb_server/smb_server.h" #include "smbd/service_stream.h" +#include "ntvfs/ntvfs.h" /** diff --git a/source/smb_server/smb/trans2.c b/source/smb_server/smb/trans2.c index 6e4322d7b3f..ef7fa40b201 100644 --- a/source/smb_server/smb/trans2.c +++ b/source/smb_server/smb/trans2.c @@ -25,6 +25,7 @@ #include "dlinklist.h" #include "smb_server/smb_server.h" #include "librpc/gen_ndr/ndr_misc.h" +#include "ntvfs/ntvfs.h" #define CHECK_MIN_BLOB_SIZE(blob, size) do { \ if ((blob)->length < (size)) { \ diff --git a/source/smb_server/smb_server.h b/source/smb_server/smb_server.h index 7f38119f2ba..d0df15e022f 100644 --- a/source/smb_server/smb_server.h +++ b/source/smb_server/smb_server.h @@ -301,3 +301,5 @@ struct smbsrv_connection { BOOL nt_status_support; } config; }; + +#include "smb_server/smb_server_proto.h" diff --git a/source/smb_server/tcon.c b/source/smb_server/tcon.c index 0cb6738d31f..01194d1ea10 100644 --- a/source/smb_server/tcon.c +++ b/source/smb_server/tcon.c @@ -24,6 +24,7 @@ #include "dlinklist.h" #include "smb_server/smb_server.h" #include "smbd/service_stream.h" +#include "ntvfs/ntvfs.h" /**************************************************************************** diff --git a/source/smbd/server.c b/source/smbd/server.c index a753a1668bb..7174084f13d 100644 --- a/source/smbd/server.c +++ b/source/smbd/server.c @@ -32,6 +32,7 @@ #include "system/kerberos.h" #include "smb_build.h" #include "registry/registry.h" +#include "ntvfs/ntvfs.h" /* recursively delete a directory tree