diff options
author | Andrew Bartlett <abartlet@samba.org> | 2011-06-24 16:26:23 +1000 |
---|---|---|
committer | Andrew Bartlett <abartlet@samba.org> | 2011-06-24 16:26:23 +1000 |
commit | 6da26870e0ae5acd6ff49a30ec2f6886b44d095e (patch) | |
tree | 850c71039563c16a5d563c47e7ba2ab645baf198 /source3/include | |
parent | 6925a799d04c6fa59dd2ddef1f5510f9bb7d17d1 (diff) | |
parent | 2610c05b5b95cc7036b3d6dfb894c6cfbdb68483 (diff) | |
download | samba-6da26870e0ae5acd6ff49a30ec2f6886b44d095e.tar.gz samba-6da26870e0ae5acd6ff49a30ec2f6886b44d095e.tar.bz2 samba-6da26870e0ae5acd6ff49a30ec2f6886b44d095e.zip |
Merge 2610c05b5b95cc7036b3d6dfb894c6cfbdb68483 as Samba-4.0alpha16
Diffstat (limited to 'source3/include')
31 files changed, 342 insertions, 2043 deletions
diff --git a/source3/include/ads.h b/source3/include/ads.h index ee6e5b8649..8a8ce28e53 100644 --- a/source3/include/ads.h +++ b/source3/include/ads.h @@ -6,6 +6,7 @@ basically this is a wrapper around ldap */ +#include "libads/ads_status.h" #include "smb_ldap.h" struct ads_struct; diff --git a/source3/include/async_smb.h b/source3/include/async_smb.h index d2303cc703..1685d4985d 100644 --- a/source3/include/async_smb.h +++ b/source3/include/async_smb.h @@ -20,7 +20,7 @@ #ifndef __ASYNC_SMB_H__ #define __ASYNC_SMB_H__ -#include "includes.h" +struct cli_state; /* * Fetch an error out of a NBT packet @@ -51,6 +51,8 @@ void cli_smb_req_unset_pending(struct tevent_req *req); bool cli_smb_req_set_pending(struct tevent_req *req); uint16_t cli_smb_req_mid(struct tevent_req *req); void cli_smb_req_set_mid(struct tevent_req *req, uint16_t mid); +uint32_t cli_smb_req_seqnum(struct tevent_req *req); +void cli_smb_req_set_seqnum(struct tevent_req *req, uint32_t seqnum); struct tevent_req *cli_smb_send(TALLOC_CTX *mem_ctx, struct event_context *ev, struct cli_state *cli, uint8_t smb_command, uint8_t additional_flags, diff --git a/source3/include/autoconf/README b/source3/include/autoconf/README new file mode 100644 index 0000000000..21afbc70ea --- /dev/null +++ b/source3/include/autoconf/README @@ -0,0 +1,5 @@ +This directory added so that the autoconf build can generate a +config.h in a location that the recursive waf build for smbtorture +won't find. + +Andrew Bartlett
\ No newline at end of file diff --git a/source3/include/client.h b/source3/include/client.h index 9e4a61dbac..a853e90af6 100644 --- a/source3/include/client.h +++ b/source3/include/client.h @@ -46,13 +46,6 @@ struct print_job_info { time_t t; }; -struct cli_state_seqnum { - struct cli_state_seqnum *prev, *next; - uint16_t mid; - uint32_t seqnum; - bool persistent; -}; - struct cli_state { /** * A list of subsidiary connections for DFS. @@ -71,7 +64,7 @@ struct cli_state { int rap_error; int privileges; - fstring desthost; + char *desthost; /* The credentials used to open the cli_state connection. */ char *domain; @@ -83,12 +76,12 @@ struct cli_state { * ones returned by the server if * the protocol > NT1. */ - fstring server_type; - fstring server_os; - fstring server_domain; + char *server_type; + char *server_os; + char *server_domain; - fstring share; - fstring dev; + char *share; + char *dev; struct nmb_name called; struct nmb_name calling; struct sockaddr_storage dest_ss; @@ -103,12 +96,12 @@ struct cli_state { size_t max_xmit; size_t max_mux; char *outbuf; - struct cli_state_seqnum *seqnum; char *inbuf; unsigned int bufsize; int initialised; int win95; bool is_samba; + bool is_guestlogin; uint32 capabilities; /* What the server offered. */ uint32_t server_posix_capabilities; diff --git a/source3/include/packet.h b/source3/include/ctdb_packet.h index c96a8017f8..026b23f90e 100644 --- a/source3/include/packet.h +++ b/source3/include/ctdb_packet.h @@ -1,6 +1,6 @@ -/* +/* Unix SMB/CIFS implementation. - Packet handling + CTDB Packet handling Copyright (C) Volker Lendecke 2007 This program is free software; you can redistribute it and/or modify @@ -18,35 +18,35 @@ */ /* - * A packet context is a wrapper around a bidirectional file descriptor, + * A ctdb_packet context is a wrapper around a bidirectional file descriptor, * hiding the handling of individual requests. */ -struct packet_context; +struct ctdb_packet_context; /* - * Initialize a packet context. The fd is given to the packet context, meaning - * that it is automatically closed when the packet context is freed. + * Initialize a ctdb_packet context. The fd is given to the ctdb_packet context, meaning + * that it is automatically closed when the ctdb_packet context is freed. */ -struct packet_context *packet_init(TALLOC_CTX *mem_ctx, int fd); +struct ctdb_packet_context *ctdb_packet_init(TALLOC_CTX *mem_ctx, int fd); /* * Pull data from the fd */ -NTSTATUS packet_fd_read(struct packet_context *ctx); +NTSTATUS ctdb_packet_fd_read(struct ctdb_packet_context *ctx); /* * Sync read, wait for the next chunk */ -NTSTATUS packet_fd_read_sync(struct packet_context *ctx, int timeout); +NTSTATUS ctdb_packet_fd_read_sync_timeout(struct ctdb_packet_context *ctx, int timeout); /* - * Handle an incoming packet: + * Handle an incoming ctdb_packet: * Return False if none is available * Otherwise return True and store the callback result in *status * Callback must either talloc_move or talloc_free buf */ -bool packet_handler(struct packet_context *ctx, +bool ctdb_packet_handler(struct ctdb_packet_context *ctx, bool (*full_req)(const uint8_t *buf, size_t available, size_t *length, @@ -59,27 +59,27 @@ bool packet_handler(struct packet_context *ctx, /* * How many bytes of outgoing data do we have pending? */ -size_t packet_outgoing_bytes(struct packet_context *ctx); +size_t ctdb_packet_outgoing_bytes(struct ctdb_packet_context *ctx); /* * Push data to the fd */ -NTSTATUS packet_fd_write(struct packet_context *ctx); +NTSTATUS ctdb_packet_fd_write(struct ctdb_packet_context *ctx); /* * Sync flush all outgoing bytes */ -NTSTATUS packet_flush(struct packet_context *ctx); +NTSTATUS ctdb_packet_flush(struct ctdb_packet_context *ctx); /* * Send a list of DATA_BLOBs * - * Example: packet_send(ctx, 2, data_blob_const(&size, sizeof(size)), + * Example: ctdb_packet_send(ctx, 2, data_blob_const(&size, sizeof(size)), * data_blob_const(buf, size)); */ -NTSTATUS packet_send(struct packet_context *ctx, int num_blobs, ...); +NTSTATUS ctdb_packet_send(struct ctdb_packet_context *ctx, int num_blobs, ...); /* - * Get the packet context's file descriptor + * Get the ctdb_packet context's file descriptor */ -int packet_get_fd(struct packet_context *ctx); +int ctdb_packet_get_fd(struct ctdb_packet_context *ctx); diff --git a/source3/include/ctdbd_conn.h b/source3/include/ctdbd_conn.h index ef291fb4ad..3d712674e0 100644 --- a/source3/include/ctdbd_conn.h +++ b/source3/include/ctdbd_conn.h @@ -20,6 +20,8 @@ #ifndef _CTDBD_CONN_H #define _CTDBD_CONN_H +#include "tdb_compat.h" + struct ctdbd_connection; struct messaging_context; struct messaging_rec; diff --git a/source3/include/dbwrap.h b/source3/include/dbwrap.h index ef35b0071d..303a554938 100644 --- a/source3/include/dbwrap.h +++ b/source3/include/dbwrap.h @@ -20,6 +20,8 @@ #ifndef __DBWRAP_H__ #define __DBWRAP_H__ +#include "tdb_compat.h" + struct db_record { TDB_DATA key, value; NTSTATUS (*store)(struct db_record *rec, TDB_DATA data, int flag); diff --git a/source3/include/dynconfig.h b/source3/include/dynconfig.h deleted file mode 100644 index d0e42dc9f5..0000000000 --- a/source3/include/dynconfig.h +++ /dev/null @@ -1,100 +0,0 @@ -/* - Unix SMB/CIFS implementation. - Copyright (C) 2001 by Martin Pool <mbp@samba.org> - Copyright (C) 2003 by Jim McDonough <jmcd@us.ibm.com> - - 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 3 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, see <http://www.gnu.org/licenses/>. -*/ - -/** - * @file dynconfig.h - * - * @brief Exported global configurations. - **/ - -const char *get_dyn_SBINDIR(void); -const char *set_dyn_SBINDIR(const char *newpath); -bool is_default_dyn_SBINDIR(void); - -const char *get_dyn_BINDIR(void); -const char *set_dyn_BINDIR(const char *newpath); -bool is_default_dyn_BINDIR(void); - -const char *get_dyn_SWATDIR(void); -const char *set_dyn_SWATDIR(const char *newpath); -bool is_default_dyn_SWATDIR(void); - -const char *get_dyn_CONFIGFILE(void); -const char *set_dyn_CONFIGFILE(const char *newpath); -bool is_default_dyn_CONFIGFILE(void); - -const char *get_dyn_LOGFILEBASE(void); -const char *set_dyn_LOGFILEBASE(const char *newpath); -bool is_default_dyn_LOGFILEBASE(void); - -const char *get_dyn_LMHOSTSFILE(void); -const char *set_dyn_LMHOSTSFILE(const char *newpath); -bool is_default_dyn_LMHOSTSFILE(void); - -const char *get_dyn_CODEPAGEDIR(void); -const char *set_dyn_CODEPAGEDIR(const char *newpath); -bool is_default_dyn_CODEPAGEDIR(void); - -const char *get_dyn_LIBDIR(void); -const char *set_dyn_LIBDIR(const char *newpath); -bool is_default_dyn_LIBDIR(void); - -const char *get_dyn_MODULESDIR(void); -const char *set_dyn_MODULESDIR(const char *newpath); -bool is_default_dyn_MODULESDIR(void); - -const char *get_dyn_SHLIBEXT(void); -const char *set_dyn_SHLIBEXT(const char *newpath); -bool is_default_dyn_SHLIBEXT(void); - -const char *get_dyn_LOCKDIR(void); -const char *set_dyn_LOCKDIR(const char *newpath); -bool is_default_dyn_LOCKDIR(void); - -const char *get_dyn_STATEDIR(void); -const char *set_dyn_STATEDIR(const char *newpath); -bool is_default_dyn_STATEDIR(void); - -const char *get_dyn_CACHEDIR(void); -const char *set_dyn_CACHEDIR(const char *newpath); -bool is_default_dyn_CACHEDIR(void); - -const char *get_dyn_PIDDIR(void); -const char *set_dyn_PIDDIR(const char *newpath); -bool is_default_dyn_PIDDIR(void); - -const char *get_dyn_NMBDSOCKETDIR(void); -const char *set_dyn_NMBDSOCKETDIR(const char *newpath); -bool is_default_dyn_NMBDSOCKETDIR(void); - -const char *get_dyn_NCALRPCDIR(void); -const char *set_dyn_NCALRPCDIR(const char *newpath); -bool is_default_dyn_NCALRPCDIR(void); - -const char *get_dyn_SMB_PASSWD_FILE(void); -const char *set_dyn_SMB_PASSWD_FILE(const char *newpath); -bool is_default_dyn_SMB_PASSWD_FILE(void); - -const char *get_dyn_PRIVATE_DIR(void); -const char *set_dyn_PRIVATE_DIR(const char *newpath); -bool is_default_dyn_PRIVATE_DIR(void); - -const char *get_dyn_LOCALEDIR(void); -const char *set_dyn_LOCALEDIR(const char *newpath); -bool is_default_dyn_LOCALEDIR(void); diff --git a/source3/include/includes.h b/source3/include/includes.h index a76942faad..08d5d96ab5 100644 --- a/source3/include/includes.h +++ b/source3/include/includes.h @@ -173,10 +173,6 @@ #include <aio.h> #endif -#ifdef WITH_MADVISE_PROTECTED -#include <sys/mman.h> -#endif - /* Special macros that are no-ops except when run under Valgrind on * x86. They've moved a little bit from valgrind 1.0.4 to 1.9.4 */ #if HAVE_VALGRIND_MEMCHECK_H @@ -308,10 +304,10 @@ typedef sig_atomic_t volatile SIG_ATOMIC_T; #endif #ifdef LARGE_SMB_INO_T -#define SINO_T_VAL(p, ofs, v) (SIVAL((p),(ofs),(v)&0xFFFFFFFF), SIVAL((p),(ofs)+4,(v)>>32)) -#define INO_T_VAL(p, ofs) ((SMB_INO_T)(((uint64_t)(IVAL(p,ofs)))| (((uint64_t)(IVAL(p,(ofs)+4))) << 32))) +#define SINO_T_VAL(p, ofs, v) SBVAL(p, ofs, v) +#define INO_T_VAL(p, ofs) ((SMB_INO_T)BVAL(p, ofs)) #else -#define SINO_T_VAL(p, ofs, v) (SIVAL(p,ofs,v),SIVAL(p,(ofs)+4,0)) +#define SINO_T_VAL(p, ofs, v) SBVAL(p, ofs, ((uint64_t)(v)) & UINT32_MAX) #define INO_T_VAL(p, ofs) ((SMB_INO_T)(IVAL((p),(ofs)))) #endif @@ -323,11 +319,10 @@ typedef sig_atomic_t volatile SIG_ATOMIC_T; # endif #endif -#define SBIG_UINT(p, ofs, v) (SIVAL(p,ofs,(v)&0xFFFFFFFF), SIVAL(p,(ofs)+4,(v)>>32)) -#define BIG_UINT(p, ofs) ((((uint64_t) IVAL(p,(ofs)+4))<<32)|IVAL(p,ofs)) -#define IVAL2_TO_SMB_BIG_UINT(buf,off) ( (((uint64_t)(IVAL((buf),(off)))) & ((uint64_t)0xFFFFFFFF)) | \ - (( ((uint64_t)(IVAL((buf),(off+4)))) & ((uint64_t)0xFFFFFFFF) ) << 32 ) ) - +/* TODO: remove this macros */ +#define SBIG_UINT(p, ofs, v) SBVAL(p, ofs, v) +#define BIG_UINT(p, ofs) BVAL(p, ofs) +#define IVAL2_TO_SMB_BIG_UINT(p, ofs) BVAL(p, ofs) /* this should really be a 64 bit type if possible */ typedef uint64_t br_off; @@ -515,53 +510,30 @@ typedef char fstring[FSTRING_LEN]; #include "../lib/util/attr.h" #include "../lib/util/tsort.h" #include "../lib/util/dlinklist.h" -#include <tdb.h> -#include "util_tdb.h" #include <talloc.h> #include "event.h" -#include "../lib/util/tevent_unix.h" -#include "../lib/util/tevent_ntstatus.h" -#include "../lib/tsocket/tsocket.h" #include "../lib/util/data_blob.h" #include "../lib/util/time.h" #include "../lib/util/debug.h" #include "../lib/util/debug_s3.h" -#include "libads/ads_status.h" +#include "../libcli/util/ntstatus.h" #include "../libcli/util/error.h" #include "../lib/util/charset/charset.h" -#include "dynconfig.h" +#include "dynconfig/dynconfig.h" #include "locking.h" #include "smb_perfcount.h" #include "smb.h" #include "../lib/util/byteorder.h" -#include "client.h" - #include "module.h" #include "../lib/util/talloc_stack.h" #include "../lib/util/smb_threads.h" #include "../lib/util/smb_threads_internal.h" -/* - * Reasons for cache flush. - */ - -enum flush_reason_enum { - SEEK_FLUSH, - READ_FLUSH, - WRITE_FLUSH, - READRAW_FLUSH, - OPLOCK_RELEASE_FLUSH, - CLOSE_FLUSH, - SYNC_FLUSH, - SIZECHANGE_FLUSH, - /* NUM_FLUSH_REASONS must remain the last value in the enumeration. */ - NUM_FLUSH_REASONS}; - /***** prototypes *****/ #ifndef NO_PROTO_H #include "proto.h" @@ -606,15 +578,6 @@ enum flush_reason_enum { #endif -#if HAVE_KERNEL_SHARE_MODES -#ifndef LOCK_MAND -#define LOCK_MAND 32 /* This is a mandatory flock */ -#define LOCK_READ 64 /* ... Which allows concurrent read operations */ -#define LOCK_WRITE 128 /* ... Which allows concurrent write operations */ -#define LOCK_RW 192 /* ... Which allows concurrent read & write ops */ -#endif -#endif - #define MAX_SEC_CTX_DEPTH 8 /* Maximum number of security contexts */ @@ -645,8 +608,6 @@ void sys_adminlog(int priority, const char *format_str, ...) PRINTF_ATTRIBUTE(2, /* PRINTFLIKE2 */ int fstr_sprintf(fstring s, const char *fmt, ...) PRINTF_ATTRIBUTE(2,3); -int d_vfprintf(FILE *f, const char *format, va_list ap) PRINTF_ATTRIBUTE(2,0); - int smb_xvasprintf(char **ptr, const char *format, va_list ap) PRINTF_ATTRIBUTE(2,0); int asprintf_strupper_m(char **strp, const char *fmt, ...) PRINTF_ATTRIBUTE(2,3); @@ -685,20 +646,11 @@ char *talloc_asprintf_strupper_m(TALLOC_CTX *t, const char *fmt, ...) PRINTF_ATT #undef HAVE_MMAP #endif -#ifndef CONST_DISCARD -#define CONST_DISCARD(type, ptr) ((type) ((void *) (ptr))) -#endif - void dump_core(void) _NORETURN_; void exit_server(const char *const reason) _NORETURN_; void exit_server_cleanly(const char *const reason) _NORETURN_; void exit_server_fault(void) _NORETURN_; -#if defined(HAVE_IPV6) -void in6_addr_to_sockaddr_storage(struct sockaddr_storage *ss, - struct in6_addr ip); -#endif - /* samba3 doesn't use uwrap yet */ #define uwrap_enabled() 0 diff --git a/source3/include/interfaces.h b/source3/include/interfaces.h deleted file mode 100644 index 6ba0e21f6d..0000000000 --- a/source3/include/interfaces.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - Unix SMB/CIFS implementation. - Machine customisation and include handling - Copyright (C) Jeremy Allison <jra@samba.org> 2007 - - 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 3 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, see <http://www.gnu.org/licenses/>. -*/ -/* - This structure is used by lib/interfaces.c to return the list of network - interfaces on the machine -*/ - -#ifndef _INTERFACES_H -#define _INTERFACES_H - -#include "../replace/replace.h" -#include "../replace/system/network.h" - -struct iface_struct { - char name[16]; - int flags; - struct sockaddr_storage ip; - struct sockaddr_storage netmask; - struct sockaddr_storage bcast; -}; - -bool make_netmask(struct sockaddr_storage *pss_out, - const struct sockaddr_storage *pss_in, - unsigned long masklen); -void make_bcast(struct sockaddr_storage *pss_out, - const struct sockaddr_storage *pss_in, - const struct sockaddr_storage *nmask); -void make_net(struct sockaddr_storage *pss_out, - const struct sockaddr_storage *pss_in, - const struct sockaddr_storage *nmask); -int get_interfaces(TALLOC_CTX *mem_ctx, struct iface_struct **pifaces); - -#endif diff --git a/source3/include/krb5_env.h b/source3/include/krb5_env.h index aa96795392..0022da839c 100644 --- a/source3/include/krb5_env.h +++ b/source3/include/krb5_env.h @@ -1,2 +1,26 @@ +/* + Samba Unix/Linux SMB client library + + Copyright (C) 2010 Günther Deschner + + 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 3 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, see <http://www.gnu.org/licenses/>. +*/ + +#ifndef _INCLUDE_KRB5_ENV_H_ +#define _INCLUDE_KRB5_ENV_H_ + /* Kerberos environment variable names */ #define KRB5_ENV_CCNAME "KRB5CCNAME" + +#endif /* _INCLUDE_KRB5_ENV_H_ */ diff --git a/source3/include/krb5_protos.h b/source3/include/krb5_protos.h index d80e77d2eb..37fc1c6cd5 100644 --- a/source3/include/krb5_protos.h +++ b/source3/include/krb5_protos.h @@ -1,3 +1,28 @@ +/* + Unix SMB/CIFS implementation. + simple kerberos5 routines for active directory + Copyright (C) Andrew Tridgell 2001 + Copyright (C) Luke Howard 2002-2003 + Copyright (C) Andrew Bartlett <abartlet@samba.org> 2005 + Copyright (C) Guenther Deschner 2005-2009 + + 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 3 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, see <http://www.gnu.org/licenses/>. +*/ + +#ifndef _INCLUDE_KRB5_PROTOS_H_ +#define _INCLUDE_KRB5_PROTOS_H_ + struct PAC_DATA; struct PAC_SIGNATURE_DATA; @@ -39,6 +64,8 @@ void krb5_free_unparsed_name(krb5_context ctx, char *val); #define initialize_krb5_error_table() #endif +/* The following definitions come from libsmb/clikrb5.c */ + /* Samba wrapper function for krb5 functionality. */ bool setup_kaddr( krb5_address *pkaddr, struct sockaddr_storage *paddr); int create_kerberos_key_from_string(krb5_context context, krb5_principal host_princ, krb5_data *password, krb5_keyblock *key, krb5_enctype enctype, bool no_salt); @@ -131,3 +158,9 @@ int cli_krb5_get_ticket(TALLOC_CTX *mem_ctx, time_t *tgs_expire, const char *impersonate_princ_s); +bool unwrap_edata_ntstatus(TALLOC_CTX *mem_ctx, + DATA_BLOB *edata, + DATA_BLOB *edata_out); +bool unwrap_pac(TALLOC_CTX *mem_ctx, DATA_BLOB *auth_data, DATA_BLOB *unwrapped_pac_data); + +#endif /* _INCLUDE_KRB5_PROTOS_H_ */ diff --git a/source3/include/libsmb_internal.h b/source3/include/libsmb_internal.h index 61dc95e0ad..7f16ab6859 100644 --- a/source3/include/libsmb_internal.h +++ b/source3/include/libsmb_internal.h @@ -366,7 +366,7 @@ SMBC_close_ctx(SMBCCTX *context, bool SMBC_getatr(SMBCCTX * context, SMBCSRV *srv, - char *path, + const char *path, uint16 *mode, SMB_OFF_T *size, struct timespec *create_time_ts, diff --git a/source3/include/mangle.h b/source3/include/mangle.h index c07b852453..7c4602b4eb 100644 --- a/source3/include/mangle.h +++ b/source3/include/mangle.h @@ -1,3 +1,22 @@ +/* + Unix SMB/CIFS implementation. + Name mangling interface + Copyright (C) Andrew Tridgell 2002 + + 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 3 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, see <http://www.gnu.org/licenses/>. +*/ + #ifndef _MANGLE_H_ #define _MANGLE_H_ /* diff --git a/source3/include/messages.h b/source3/include/messages.h index a78599055d..41d5bb19fd 100644 --- a/source3/include/messages.h +++ b/source3/include/messages.h @@ -49,13 +49,6 @@ /* - * Virtual Node Numbers are identifying a node within a cluster. Ctdbd sets - * this, we retrieve our vnn from it. - */ - -#define NONCLUSTER_VNN (0xFFFFFFFF) - -/* * ctdb gives us 64-bit server ids for messaging_send. This is done to avoid * pid clashes and to be able to register for special messages like "all * smbds". diff --git a/source3/include/nss_info.h b/source3/include/nss_info.h index bf66ef0a8c..f92937e990 100644 --- a/source3/include/nss_info.h +++ b/source3/include/nss_info.h @@ -95,5 +95,12 @@ NTSTATUS nss_map_from_alias( TALLOC_CTX *mem_ctx, const char *domain, NTSTATUS nss_close( const char *parameters ); +/* The following definitions come from winbindd/nss_info.c */ + + +/* The following definitions come from winbindd/nss_info_template.c */ + +NTSTATUS nss_info_template_init( void ); + #endif /* _IDMAP_NSS_H_ */ diff --git a/source3/include/nt_printing.h b/source3/include/nt_printing.h index 02a72b32f1..ad6262ecff 100644 --- a/source3/include/nt_printing.h +++ b/source3/include/nt_printing.h @@ -23,7 +23,7 @@ #define NT_PRINTING_H_ #include "client.h" -#include "../librpc/gen_ndr/srv_spoolss.h" +#include "../librpc/gen_ndr/spoolss.h" #ifndef SAMBA_PRINTER_PORT_NAME #define SAMBA_PRINTER_PORT_NAME "Samba Printer Port" @@ -169,11 +169,11 @@ bool printer_driver_files_in_use(TALLOC_CTX *mem_ctx, bool delete_driver_files(const struct auth_serversupplied_info *server_info, const struct spoolss_DriverInfo8 *r); -WERROR move_driver_to_download_area(struct pipes_struct *p, +WERROR move_driver_to_download_area(struct auth_serversupplied_info *session_info, struct spoolss_AddDriverInfoCtr *r); WERROR clean_up_driver_struct(TALLOC_CTX *mem_ctx, - struct pipes_struct *rpc_pipe, + struct auth_serversupplied_info *session_info, struct spoolss_AddDriverInfoCtr *r); void map_printer_permissions(struct security_descriptor *sd); diff --git a/source3/include/ntdomain.h b/source3/include/ntdomain.h index 077924d6f4..ff728736d4 100644 --- a/source3/include/ntdomain.h +++ b/source3/include/ntdomain.h @@ -86,7 +86,8 @@ typedef struct pipe_rpc_fns { const struct api_struct *cmds; int n_cmds; - uint32 context_id; + uint32_t context_id; + struct ndr_syntax_id syntax; } PIPE_RPC_FNS; @@ -97,20 +98,6 @@ typedef struct pipe_rpc_fns { struct gse_context; -/* auth state for all bind types. */ - -struct pipe_auth_data { - enum dcerpc_AuthType auth_type; - enum dcerpc_AuthLevel auth_level; - - void *auth_ctx; - - /* Only the client code uses these 3 for now */ - char *domain; - char *user_name; - DATA_BLOB user_session_key; -}; - struct dcesrv_ep_entry_list; /* @@ -129,7 +116,6 @@ struct pipes_struct { struct auth_serversupplied_info *session_info; struct messaging_context *msg_ctx; - struct ndr_syntax_id syntax; struct dcesrv_ep_entry_list *ep_entries; /* linked list of rpc dispatch tables associated @@ -207,4 +193,33 @@ struct api_struct { bool (*fn) (struct pipes_struct *); }; +/* The following definitions come from rpc_server/rpc_handles.c */ + +size_t num_pipe_handles(struct pipes_struct *p); +bool init_pipe_handles(struct pipes_struct *p, const struct ndr_syntax_id *syntax); +bool create_policy_hnd(struct pipes_struct *p, struct policy_handle *hnd, void *data_ptr); +bool find_policy_by_hnd(struct pipes_struct *p, const struct policy_handle *hnd, + void **data_p); +bool close_policy_hnd(struct pipes_struct *p, struct policy_handle *hnd); +void close_policy_by_pipe(struct pipes_struct *p); +bool pipe_access_check(struct pipes_struct *p); + +void *_policy_handle_create(struct pipes_struct *p, struct policy_handle *hnd, + uint32_t access_granted, size_t data_size, + const char *type, NTSTATUS *pstatus); +#define policy_handle_create(_p, _hnd, _access, _type, _pstatus) \ + (_type *)_policy_handle_create((_p), (_hnd), (_access), sizeof(_type), #_type, \ + (_pstatus)) + +void *_policy_handle_find(struct pipes_struct *p, + const struct policy_handle *hnd, + uint32_t access_required, uint32_t *paccess_granted, + const char *name, const char *location, + NTSTATUS *pstatus); +#define policy_handle_find(_p, _hnd, _access_required, _access_granted, _type, _pstatus) \ + (_type *)_policy_handle_find((_p), (_hnd), (_access_required), \ + (_access_granted), #_type, __location__, (_pstatus)) + +#include "rpc_server/srv_pipe_register.h" + #endif /* _NT_DOMAIN_H */ diff --git a/source3/include/ntioctl.h b/source3/include/ntioctl.h index 41b1dcefa2..131d596ded 100644 --- a/source3/include/ntioctl.h +++ b/source3/include/ntioctl.h @@ -2,17 +2,17 @@ Unix SMB/CIFS implementation. NT ioctl code constants Copyright (C) Andrew Tridgell 2002 - + 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 3 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, see <http://www.gnu.org/licenses/>. */ @@ -69,6 +69,7 @@ #endif +#define IO_REPARSE_TAG_SYMLINK 0xA000000C #define IO_REPARSE_TAG_MOUNT_POINT 0xA0000003 #define IO_REPARSE_TAG_HSM 0xC0000004 #define IO_REPARSE_TAG_SIS 0x80000007 @@ -77,13 +78,12 @@ /* For FSCTL_GET_SHADOW_COPY_DATA ...*/ typedef char SHADOW_COPY_LABEL[25]; -typedef struct shadow_copy_data { - TALLOC_CTX *mem_ctx; +struct shadow_copy_data { /* Total number of shadow volumes currently mounted */ uint32 num_volumes; /* Concatenated list of labels */ SHADOW_COPY_LABEL *labels; -} SHADOW_COPY_DATA; +}; #endif /* _NTIOCTL_H */ diff --git a/source3/include/popt_common.h b/source3/include/popt_common.h index 70d7278f01..10dd2f4ebe 100644 --- a/source3/include/popt_common.h +++ b/source3/include/popt_common.h @@ -42,7 +42,7 @@ extern const struct poptOption popt_common_dynconfig[]; #define POPT_COMMON_CONFIGFILE { NULL, 0, POPT_ARG_INCLUDE_TABLE, popt_common_configfile, 0, "Common samba config:", NULL }, #define POPT_COMMON_CREDENTIALS { NULL, 0, POPT_ARG_INCLUDE_TABLE, popt_common_credentials, 0, "Authentication options:", NULL }, #define POPT_COMMON_DYNCONFIG { NULL, 0, POPT_ARG_INCLUDE_TABLE, \ - CONST_DISCARD(poptOption *, popt_common_dynconfig), 0, \ + discard_const_p(poptOption, popt_common_dynconfig), 0, \ "Build-time configuration overrides:", NULL }, #define POPT_COMMON_DEBUGLEVEL { NULL, 0, POPT_ARG_INCLUDE_TABLE, popt_common_debuglevel, 0, "Common samba debugging:", NULL }, #define POPT_COMMON_OPTION { NULL, 0, POPT_ARG_INCLUDE_TABLE, popt_common_option, 0, "Common samba commandline config:", NULL }, diff --git a/source3/include/printing.h b/source3/include/printing.h index 084c699c5b..1bbb72c7be 100644 --- a/source3/include/printing.h +++ b/source3/include/printing.h @@ -24,6 +24,7 @@ This file defines the low-level printing system interfaces used by the SAMBA printing subsystem. */ +#include "tdb_compat.h" /* Extra fields above "LPQ_PRINTING" are used to map extra NT status codes. */ @@ -160,7 +161,7 @@ extern struct printif iprint_printif; struct tdb_print_db { struct tdb_print_db *next, *prev; - TDB_CONTEXT *tdb; + struct tdb_context *tdb; int ref_count; fstring printer_name; }; @@ -249,7 +250,7 @@ uint32_t print_parse_jobid(const char *fname); struct tdb_print_db *get_print_db_byname(const char *printername); void release_print_db( struct tdb_print_db *pdb); void close_all_print_db(void); -TDB_DATA get_printer_notify_pid_list(TDB_CONTEXT *tdb, const char *printer_name, bool cleanlist); +TDB_DATA get_printer_notify_pid_list(struct tdb_context *tdb, const char *printer_name, bool cleanlist); void print_queue_receive(struct messaging_context *msg, void *private_data, diff --git a/source3/include/proto.h b/source3/include/proto.h index 36f0235b02..90dbafc96c 100644 --- a/source3/include/proto.h +++ b/source3/include/proto.h @@ -73,19 +73,6 @@ int bitmap_find(struct bitmap *bm, unsigned ofs); /* The following definitions come from lib/charcnv.c */ void gfree_charcnv(void); -void init_iconv(void); -bool convert_string(charset_t from, charset_t to, - void const *src, size_t srclen, - void *dest, size_t destlen, - size_t *converted_size); -bool convert_string_error(charset_t from, charset_t to, - void const *src, size_t srclen, - void *dest, size_t destlen, - size_t *converted_size); -char *talloc_strdup_upper(TALLOC_CTX *ctx, const char *s); -char *strupper_talloc(TALLOC_CTX *ctx, const char *s); -char *talloc_strdup_lower(TALLOC_CTX *ctx, const char *s); -char *strlower_talloc(TALLOC_CTX *ctx, const char *s); size_t ucs2_align(const void *base_ptr, const void *p, int flags); size_t push_ascii(void *dest, const char *src, size_t dest_len, int flags); size_t push_ascii_fstring(void *dest, const char *src); @@ -93,17 +80,6 @@ size_t push_ascii_nstring(void *dest, const char *src); size_t pull_ascii(char *dest, const void *src, size_t dest_len, size_t src_len, int flags); size_t pull_ascii_fstring(char *dest, const void *src); size_t pull_ascii_nstring(char *dest, size_t dest_len, const void *src); -size_t push_ucs2(const void *base_ptr, void *dest, const char *src, size_t dest_len, int flags); -bool push_utf8_talloc(TALLOC_CTX *ctx, char **dest, const char *src, - size_t *converted_size); -bool push_ucs2_talloc(TALLOC_CTX *ctx, smb_ucs2_t **dest, const char *src, - size_t *converted_size); -bool pull_utf8_talloc(TALLOC_CTX *ctx, char **dest, const char *src, - size_t *converted_size); -bool pull_ucs2_talloc(TALLOC_CTX *ctx, char **dest, const smb_ucs2_t *src, - size_t *converted_size); -bool pull_ascii_talloc(TALLOC_CTX *ctx, char **dest, const char *src, - size_t *converted_size); size_t push_string_check_fn(void *dest, const char *src, size_t dest_len, int flags); size_t push_string_base(const char *base, uint16 flags2, @@ -232,7 +208,6 @@ void init_modules(void); int ms_fnmatch(const char *pattern, const char *string, bool translate_pattern, bool is_case_sensitive); -int gen_fnmatch(const char *pattern, const char *string); /* The following definitions come from lib/pidfile.c */ @@ -252,47 +227,6 @@ ssize_t sys_recvfile(int fromfd, size_t count); ssize_t drain_socket(int sockfd, size_t count); -/* The following definitions come from lib/secdesc.c */ - -uint32_t get_sec_info(const struct security_descriptor *sd); -struct security_descriptor *sec_desc_merge(TALLOC_CTX *ctx, struct security_descriptor *new_sdb, struct security_descriptor *old_sdb); -struct sec_desc_buf *sec_desc_merge_buf(TALLOC_CTX *ctx, struct sec_desc_buf *new_sdb, struct sec_desc_buf *old_sdb); -struct security_descriptor *make_sec_desc(TALLOC_CTX *ctx, - enum security_descriptor_revision revision, - uint16 type, - const struct dom_sid *owner_sid, const struct dom_sid *grp_sid, - struct security_acl *sacl, struct security_acl *dacl, size_t *sd_size); -struct security_descriptor *dup_sec_desc(TALLOC_CTX *ctx, const struct security_descriptor *src); -NTSTATUS marshall_sec_desc(TALLOC_CTX *mem_ctx, - struct security_descriptor *secdesc, - uint8 **data, size_t *len); -NTSTATUS marshall_sec_desc_buf(TALLOC_CTX *mem_ctx, - struct sec_desc_buf *secdesc_buf, - uint8_t **data, size_t *len); -NTSTATUS unmarshall_sec_desc(TALLOC_CTX *mem_ctx, uint8 *data, size_t len, - struct security_descriptor **psecdesc); -NTSTATUS unmarshall_sec_desc_buf(TALLOC_CTX *mem_ctx, uint8_t *data, size_t len, - struct sec_desc_buf **psecdesc_buf); -struct security_descriptor *make_standard_sec_desc(TALLOC_CTX *ctx, const struct dom_sid *owner_sid, const struct dom_sid *grp_sid, - struct security_acl *dacl, size_t *sd_size); -struct sec_desc_buf *make_sec_desc_buf(TALLOC_CTX *ctx, size_t len, struct security_descriptor *sec_desc); -struct sec_desc_buf *dup_sec_desc_buf(TALLOC_CTX *ctx, struct sec_desc_buf *src); -NTSTATUS sec_desc_add_sid(TALLOC_CTX *ctx, struct security_descriptor **psd, const struct dom_sid *sid, uint32 mask, size_t *sd_size); -NTSTATUS sec_desc_mod_sid(struct security_descriptor *sd, struct dom_sid *sid, uint32 mask); -NTSTATUS sec_desc_del_sid(TALLOC_CTX *ctx, struct security_descriptor **psd, struct dom_sid *sid, size_t *sd_size); -bool sd_has_inheritable_components(const struct security_descriptor *parent_ctr, bool container); -NTSTATUS se_create_child_secdesc(TALLOC_CTX *ctx, - struct security_descriptor **ppsd, - size_t *psize, - const struct security_descriptor *parent_ctr, - const struct dom_sid *owner_sid, - const struct dom_sid *group_sid, - bool container); -NTSTATUS se_create_child_secdesc_buf(TALLOC_CTX *ctx, - struct sec_desc_buf **ppsdb, - const struct security_descriptor *parent_ctr, - bool container); - /* The following definitions come from lib/sendfile.c */ ssize_t sys_sendfile(int tofd, int fromfd, const DATA_BLOB *header, SMB_OFF_T offset, size_t count); @@ -386,60 +320,6 @@ int sys_acl_set_fd(vfs_handle_struct *handle, files_struct *fsp, SMB_ACL_T acl_d); int sys_acl_delete_def_file(vfs_handle_struct *handle, const char *path); -SMB_ACL_T sys_acl_get_file(vfs_handle_struct *handle, - const char *path_p, SMB_ACL_TYPE_T type); -SMB_ACL_T sys_acl_get_fd(vfs_handle_struct *handle, files_struct *fsp); -int sys_acl_set_file(vfs_handle_struct *handle, - const char *name, SMB_ACL_TYPE_T type, SMB_ACL_T acl_d); -int sys_acl_set_fd(vfs_handle_struct *handle, files_struct *fsp, - SMB_ACL_T acl_d); -int sys_acl_delete_def_file(vfs_handle_struct *handle, - const char *path); -SMB_ACL_T sys_acl_get_file(vfs_handle_struct *handle, - const char *path_p, SMB_ACL_TYPE_T type); -SMB_ACL_T sys_acl_get_fd(vfs_handle_struct *handle, files_struct *fsp); -int sys_acl_set_file(vfs_handle_struct *handle, - const char *name, SMB_ACL_TYPE_T type, SMB_ACL_T acl_d); -int sys_acl_set_fd(vfs_handle_struct *handle, files_struct *fsp, - SMB_ACL_T acl_d); -int sys_acl_delete_def_file(vfs_handle_struct *handle, - const char *path); -SMB_ACL_T sys_acl_get_file(vfs_handle_struct *handle, - const char *path_p, SMB_ACL_TYPE_T type); -SMB_ACL_T sys_acl_get_fd(vfs_handle_struct *handle, files_struct *fsp); -int sys_acl_set_file(vfs_handle_struct *handle, - const char *name, SMB_ACL_TYPE_T type, SMB_ACL_T acl_d); -int sys_acl_set_fd(vfs_handle_struct *handle, files_struct *fsp, - SMB_ACL_T acl_d); -int sys_acl_delete_def_file(vfs_handle_struct *handle, - const char *path); -SMB_ACL_T sys_acl_get_file(vfs_handle_struct *handle, - const char *path_p, SMB_ACL_TYPE_T type); -SMB_ACL_T sys_acl_get_fd(vfs_handle_struct *handle, files_struct *fsp); -int sys_acl_set_file(vfs_handle_struct *handle, - const char *name, SMB_ACL_TYPE_T type, SMB_ACL_T acl_d); -int sys_acl_set_fd(vfs_handle_struct *handle, files_struct *fsp, - SMB_ACL_T acl_d); -int sys_acl_delete_def_file(vfs_handle_struct *handle, - const char *path); -SMB_ACL_T sys_acl_get_file(vfs_handle_struct *handle, - const char *path_p, SMB_ACL_TYPE_T type); -SMB_ACL_T sys_acl_get_fd(vfs_handle_struct *handle, files_struct *fsp); -int sys_acl_set_file(vfs_handle_struct *handle, - const char *name, SMB_ACL_TYPE_T type, SMB_ACL_T acl_d); -int sys_acl_set_fd(vfs_handle_struct *handle, files_struct *fsp, - SMB_ACL_T acl_d); -int sys_acl_delete_def_file(vfs_handle_struct *handle, - const char *path); -SMB_ACL_T sys_acl_get_file(vfs_handle_struct *handle, - const char *path_p, SMB_ACL_TYPE_T type); -SMB_ACL_T sys_acl_get_fd(vfs_handle_struct *handle, files_struct *fsp); -int sys_acl_set_file(vfs_handle_struct *handle, - const char *name, SMB_ACL_TYPE_T type, SMB_ACL_T acl_d); -int sys_acl_set_fd(vfs_handle_struct *handle, files_struct *fsp, - SMB_ACL_T acl_d); -int sys_acl_delete_def_file(vfs_handle_struct *handle, - const char *path); int no_acl_syscall_error(int err); /* The following definitions come from lib/sysquotas.c */ @@ -464,7 +344,6 @@ int sys_set_nfs_quota(const char *path, const char *bdev, /* The following definitions come from lib/system.c */ -void *sys_memalign( size_t align, size_t size ); int sys_usleep(long usecs); ssize_t sys_read(int fd, void *buf, size_t count); ssize_t sys_write(int fd, const void *buf, size_t count); @@ -504,7 +383,7 @@ void sys_rewinddir(SMB_STRUCT_DIR *dirp); int sys_closedir(SMB_STRUCT_DIR *dirp); int sys_mknod(const char *path, mode_t mode, SMB_DEV_T dev); int sys_waitpid(pid_t pid,int *status,int options); -char *sys_getwd(char *s); +char *sys_getwd(void); void set_effective_capability(enum smbd_capability capability); void drop_effective_capability(enum smbd_capability capability); long sys_random(void); @@ -542,15 +421,18 @@ int sys_aio_cancel(int fd, SMB_STRUCT_AIOCB *aiocb); int sys_aio_error(const SMB_STRUCT_AIOCB *aiocb); int sys_aio_fsync(int op, SMB_STRUCT_AIOCB *aiocb); int sys_aio_suspend(const SMB_STRUCT_AIOCB * const cblist[], int n, const struct timespec *timeout); -int sys_getpeereid( int s, uid_t *uid); -int sys_getnameinfo(const struct sockaddr *psa, - socklen_t salen, - char *host, - size_t hostlen, - char *service, - size_t servlen, - int flags); -int sys_connect(int fd, const struct sockaddr * addr); + +#if defined(HAVE_EXPLICIT_LARGEFILE_SUPPORT) && defined(HAVE_OFF64_T) && defined(HAVE_STAT64) +struct stat64; +void init_stat_ex_from_stat (struct stat_ex *dst, + const struct stat64 *src, + bool fake_dir_create_times); +#else +struct stat; +void init_stat_ex_from_stat (struct stat_ex *dst, + const struct stat *src, + bool fake_dir_create_times); +#endif /* The following definitions come from lib/system_smbd.c */ @@ -616,11 +498,6 @@ char *get_user_home_dir(TALLOC_CTX *mem_ctx, const char *user); struct passwd *Get_Pwnam_alloc(TALLOC_CTX *mem_ctx, const char *user); /* The following definitions come from lib/util_names.c */ -void gfree_netbios_names(void); -bool set_global_myname(const char *myname); -const char *global_myname(void); -bool set_global_myworkgroup(const char *myworkgroup); -const char *lp_workgroup(void); const char *get_global_sam_name(void); /* The following definitions come from lib/util.c */ @@ -628,8 +505,6 @@ const char *get_global_sam_name(void); enum protocol_types get_Protocol(void); void set_Protocol(enum protocol_types p); bool all_zero(const uint8_t *ptr, size_t size); -bool set_global_scope(const char *scope); -const char *global_scope(void); void gfree_names(void); void gfree_all( void ); const char *my_netbios_names(int i); @@ -640,8 +515,7 @@ bool file_exist_stat(const char *fname,SMB_STRUCT_STAT *sbuf, bool socket_exist(const char *fname); uint64_t get_file_size_stat(const SMB_STRUCT_STAT *sbuf); SMB_OFF_T get_file_size(char *file_name); -char *attrib_string(uint16 mode); -void show_msg(char *buf); +void show_msg(const char *buf); void smb_set_enclen(char *buf,int len,uint16 enc_ctx_num); void smb_setlen(char *buf,int len); int set_message_bcc(char *buf,int num_bytes); @@ -692,14 +566,11 @@ int set_maxfiles(int requested_max); int smb_mkstemp(char *name_template); void *smb_xmalloc_array(size_t size, unsigned int count); char *myhostname(void); +char *myhostname_upper(void); char *lock_path(const char *name); char *pid_path(const char *name); -char *lib_path(const char *name); -char *modules_path(const char *name); -char *data_path(const char *name); char *state_path(const char *name); char *cache_path(const char *name); -const char *shlib_ext(void); bool parent_dirname(TALLOC_CTX *mem_ctx, const char *dir, char **parent, const char **name); bool ms_has_wild(const char *s); @@ -722,7 +593,6 @@ bool cluster_id_equal(const struct server_id *id1, const struct server_id *id2); bool procid_is_me(const struct server_id *pid); struct server_id interpret_pid(const char *pid_string); -char *procid_str(TALLOC_CTX *mem_ctx, const struct server_id *pid); char *procid_str_static(const struct server_id *pid); bool procid_valid(const struct server_id *pid); bool procid_is_local(const struct server_id *pid); @@ -736,17 +606,13 @@ void split_domain_user(TALLOC_CTX *mem_ctx, const char *full_name, char **domain, char **user); -void *_talloc_zero_zeronull(const void *ctx, size_t size, const char *name); -void *_talloc_memdup_zeronull(const void *t, const void *p, size_t size, const char *name); -void *_talloc_array_zeronull(const void *ctx, size_t el_size, unsigned count, const char *name); -void *_talloc_zero_array_zeronull(const void *ctx, size_t el_size, unsigned count, const char *name); -void *talloc_zeronull(const void *context, size_t size, const char *name); const char *strip_hostname(const char *s); bool tevent_req_poll_ntstatus(struct tevent_req *req, struct tevent_context *ev, NTSTATUS *status); bool any_nt_status_not_ok(NTSTATUS err1, NTSTATUS err2, NTSTATUS *result); int timeval_to_msec(struct timeval t); +char *valid_share_pathname(TALLOC_CTX *ctx, const char *dos_pathname); /* The following definitions come from lib/util_cmdline.c */ @@ -936,6 +802,7 @@ struct tevent_req *getaddrinfo_send(TALLOC_CTX *mem_ctx, int getaddrinfo_recv(struct tevent_req *req, struct addrinfo **res); int poll_one_fd(int fd, int events, int timeout, int *revents); int poll_intr_one_fd(int fd, int events, int timeout, int *revents); +struct tstream_context; struct tevent_req *tstream_read_packet_send(TALLOC_CTX *mem_ctx, struct tevent_context *ev, struct tstream_context *stream, @@ -950,8 +817,6 @@ ssize_t tstream_read_packet_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx, /* The following definitions come from lib/util_str.c */ bool next_token(const char **ptr, char *buff, const char *sep, size_t bufsize); -int StrCaseCmp(const char *s, const char *t); -int StrnCaseCmp(const char *s, const char *t, size_t len); bool strnequal(const char *s1,const char *s2,size_t n); bool strcsequal(const char *s1,const char *s2); void strnorm(char *s, int case_default); @@ -961,22 +826,10 @@ size_t str_charnum(const char *s); bool trim_char(char *s,char cfront,char cback); bool strhasupper(const char *s); bool strhaslower(const char *s); -char *safe_strcpy_fn(char *dest, - const char *src, - size_t maxlength); -char *safe_strcat_fn(char *dest, - const char *src, - size_t maxlength); char *StrnCpy(char *dest,const char *src,size_t n); bool in_list(const char *s, const char *list, bool casesensitive); void string_free(char **s); bool string_set(char **dest,const char *src); -void string_sub2(char *s,const char *pattern, const char *insert, size_t len, - bool remove_unsafe_characters, bool replace_once, - bool allow_trailing_dollar); -void string_sub_once(char *s, const char *pattern, - const char *insert, size_t len); -void string_sub(char *s,const char *pattern, const char *insert, size_t len); void fstring_sub(char *s,const char *pattern,const char *insert); char *realloc_string_sub2(char *string, const char *pattern, @@ -1023,7 +876,7 @@ char *ipstr_list_make(char **ipstr_list, int ipstr_list_parse(const char *ipstr_list, struct ip_service **ip_list); void ipstr_list_free(char* ipstr_list); uint64_t STR_TO_SMB_BIG_UINT(const char *nptr, const char **entptr); -SMB_OFF_T conv_str_size(const char * str); +uint64_t conv_str_size(const char * str); bool add_string_to_array(TALLOC_CTX *mem_ctx, const char *str, const char ***strings, int *num); @@ -1032,7 +885,6 @@ void sprintf_append(TALLOC_CTX *mem_ctx, char **string, ssize_t *len, int asprintf_strupper_m(char **strp, const char *fmt, ...); char *talloc_asprintf_strupper_m(TALLOC_CTX *t, const char *fmt, ...); char *talloc_asprintf_strlower_m(TALLOC_CTX *t, const char *fmt, ...); -char *sstring_sub(const char *src, char front, char back); bool validate_net_name( const char *name, const char *invalid_chars, int max_len); @@ -1053,746 +905,10 @@ unsigned wins_srv_count(void); char **wins_srv_tags(void); void wins_srv_tags_free(char **list); struct in_addr wins_srv_ip_tag(const char *tag, struct in_addr src_ip); +bool wins_server_tag_ips(const char *tag, TALLOC_CTX *mem_ctx, + struct in_addr **pservers, int *pnum_servers); unsigned wins_srv_count_tag(const char *tag); -/* The following definitions come from libsmb/cliconnect.c */ - -ADS_STATUS cli_session_setup_spnego(struct cli_state *cli, const char *user, - const char *pass, const char *user_domain, - const char * dest_realm); - -NTSTATUS cli_session_setup(struct cli_state *cli, - const char *user, - const char *pass, int passlen, - const char *ntpass, int ntpasslen, - const char *workgroup); -struct tevent_req *cli_session_setup_guest_create(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, - struct tevent_req **psmbreq); -struct tevent_req *cli_session_setup_guest_send(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli); -NTSTATUS cli_session_setup_guest_recv(struct tevent_req *req); -struct tevent_req *cli_ulogoff_send(TALLOC_CTX *mem_ctx, - struct tevent_context *ev, - struct cli_state *cli); -NTSTATUS cli_ulogoff_recv(struct tevent_req *req); -NTSTATUS cli_ulogoff(struct cli_state *cli); -struct tevent_req *cli_tcon_andx_create(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, - const char *share, const char *dev, - const char *pass, int passlen, - struct tevent_req **psmbreq); -struct tevent_req *cli_tcon_andx_send(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, - const char *share, const char *dev, - const char *pass, int passlen); -NTSTATUS cli_tcon_andx_recv(struct tevent_req *req); -NTSTATUS cli_tcon_andx(struct cli_state *cli, const char *share, - const char *dev, const char *pass, int passlen); -struct tevent_req *cli_tdis_send(TALLOC_CTX *mem_ctx, - struct tevent_context *ev, - struct cli_state *cli); -NTSTATUS cli_tdis_recv(struct tevent_req *req); -NTSTATUS cli_tdis(struct cli_state *cli); -NTSTATUS cli_negprot(struct cli_state *cli); -struct tevent_req *cli_negprot_send(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli); -NTSTATUS cli_negprot_recv(struct tevent_req *req); -bool cli_session_request(struct cli_state *cli, - struct nmb_name *calling, struct nmb_name *called); -NTSTATUS cli_connect(struct cli_state *cli, - const char *host, - struct sockaddr_storage *dest_ss); -NTSTATUS cli_start_connection(struct cli_state **output_cli, - const char *my_name, - const char *dest_host, - struct sockaddr_storage *dest_ss, int port, - int signing_state, int flags); -NTSTATUS cli_full_connection(struct cli_state **output_cli, - const char *my_name, - const char *dest_host, - struct sockaddr_storage *dest_ss, int port, - const char *service, const char *service_type, - const char *user, const char *domain, - const char *password, int flags, - int signing_state); -bool attempt_netbios_session_request(struct cli_state **ppcli, const char *srchost, const char *desthost, - struct sockaddr_storage *pdest_ss); -NTSTATUS cli_raw_tcon(struct cli_state *cli, - const char *service, const char *pass, const char *dev, - uint16 *max_xmit, uint16 *tid); -struct cli_state *get_ipc_connect(char *server, - struct sockaddr_storage *server_ss, - const struct user_auth_info *user_info); -struct cli_state *get_ipc_connect_master_ip(TALLOC_CTX *ctx, - struct ip_service *mb_ip, - const struct user_auth_info *user_info, - char **pp_workgroup_out); -struct cli_state *get_ipc_connect_master_ip_bcast(TALLOC_CTX *ctx, - const struct user_auth_info *user_info, - char **pp_workgroup_out); - -/* The following definitions come from libsmb/clidfs.c */ - -NTSTATUS cli_cm_force_encryption(struct cli_state *c, - const char *username, - const char *password, - const char *domain, - const char *sharename); -struct cli_state *cli_cm_open(TALLOC_CTX *ctx, - struct cli_state *referring_cli, - const char *server, - const char *share, - const struct user_auth_info *auth_info, - bool show_hdr, - bool force_encrypt, - int max_protocol, - int port, - int name_type); -void cli_cm_display(const struct cli_state *c); -struct client_dfs_referral; -NTSTATUS cli_dfs_get_referral(TALLOC_CTX *ctx, - struct cli_state *cli, - const char *path, - struct client_dfs_referral **refs, - size_t *num_refs, - size_t *consumed); -bool cli_resolve_path(TALLOC_CTX *ctx, - const char *mountpt, - const struct user_auth_info *dfs_auth_info, - struct cli_state *rootcli, - const char *path, - struct cli_state **targetcli, - char **pp_targetpath); - -bool cli_check_msdfs_proxy(TALLOC_CTX *ctx, - struct cli_state *cli, - const char *sharename, - char **pp_newserver, - char **pp_newshare, - bool force_encrypt, - const char *username, - const char *password, - const char *domain); - -/* The following definitions come from libsmb/clientgen.c */ - -int cli_set_message(char *buf,int num_words,int num_bytes,bool zero); -unsigned int cli_set_timeout(struct cli_state *cli, unsigned int timeout); -void cli_set_port(struct cli_state *cli, int port); -bool cli_state_seqnum_persistent(struct cli_state *cli, - uint16_t mid); -bool cli_state_seqnum_remove(struct cli_state *cli, - uint16_t mid); -bool cli_receive_smb(struct cli_state *cli); -bool cli_send_smb(struct cli_state *cli); -bool cli_send_smb_direct_writeX(struct cli_state *cli, - const char *p, - size_t extradata); -void cli_setup_packet_buf(struct cli_state *cli, char *buf); -void cli_setup_packet(struct cli_state *cli); -void cli_setup_bcc(struct cli_state *cli, void *p); -NTSTATUS cli_set_domain(struct cli_state *cli, const char *domain); -NTSTATUS cli_set_username(struct cli_state *cli, const char *username); -NTSTATUS cli_set_password(struct cli_state *cli, const char *password); -NTSTATUS cli_init_creds(struct cli_state *cli, const char *username, const char *domain, const char *password); -struct cli_state *cli_initialise(void); -struct cli_state *cli_initialise_ex(int signing_state); -void cli_nt_pipes_close(struct cli_state *cli); -void cli_shutdown(struct cli_state *cli); -void cli_sockopt(struct cli_state *cli, const char *options); -uint16 cli_setpid(struct cli_state *cli, uint16 pid); -bool cli_set_case_sensitive(struct cli_state *cli, bool case_sensitive); -struct tevent_req *cli_echo_send(TALLOC_CTX *mem_ctx, struct event_context *ev, - struct cli_state *cli, uint16_t num_echos, - DATA_BLOB data); -NTSTATUS cli_echo_recv(struct tevent_req *req); -NTSTATUS cli_echo(struct cli_state *cli, uint16_t num_echos, DATA_BLOB data); -bool cli_ucs2(struct cli_state *cli); -bool is_andx_req(uint8_t cmd); -NTSTATUS cli_smb(TALLOC_CTX *mem_ctx, struct cli_state *cli, - uint8_t smb_command, uint8_t additional_flags, - uint8_t wct, uint16_t *vwv, - uint32_t num_bytes, const uint8_t *bytes, - struct tevent_req **result_parent, - uint8_t min_wct, uint8_t *pwct, uint16_t **pvwv, - uint32_t *pnum_bytes, uint8_t **pbytes); - -/* The following definitions come from libsmb/clierror.c */ - -const char *cli_errstr(struct cli_state *cli); -NTSTATUS cli_nt_error(struct cli_state *cli); -void cli_dos_error(struct cli_state *cli, uint8 *eclass, uint32 *ecode); -int cli_errno(struct cli_state *cli); -bool cli_is_error(struct cli_state *cli); -bool cli_is_nt_error(struct cli_state *cli); -bool cli_is_dos_error(struct cli_state *cli); -NTSTATUS cli_get_nt_error(struct cli_state *cli); -void cli_set_nt_error(struct cli_state *cli, NTSTATUS status); -void cli_reset_error(struct cli_state *cli); -bool cli_state_is_connected(struct cli_state *cli); - -/* The following definitions come from libsmb/clifile.c */ - -struct tevent_req *cli_setpathinfo_send(TALLOC_CTX *mem_ctx, - struct tevent_context *ev, - struct cli_state *cli, - uint16_t level, - const char *path, - uint8_t *data, - size_t data_len); -NTSTATUS cli_setpathinfo_recv(struct tevent_req *req); -NTSTATUS cli_setpathinfo(struct cli_state *cli, - uint16_t level, - const char *path, - uint8_t *data, - size_t data_len); - -struct tevent_req *cli_posix_symlink_send(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, - const char *oldname, - const char *newname); -NTSTATUS cli_posix_symlink_recv(struct tevent_req *req); -NTSTATUS cli_posix_symlink(struct cli_state *cli, - const char *oldname, - const char *newname); -struct tevent_req *cli_posix_readlink_send(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, - const char *fname, - size_t len); -NTSTATUS cli_posix_readlink_recv(struct tevent_req *req, struct cli_state *cli, - char *retpath, size_t len); -NTSTATUS cli_posix_readlink(struct cli_state *cli, const char *fname, - char *linkpath, size_t len); -struct tevent_req *cli_posix_hardlink_send(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, - const char *oldname, - const char *newname); -NTSTATUS cli_posix_hardlink_recv(struct tevent_req *req); -NTSTATUS cli_posix_hardlink(struct cli_state *cli, - const char *oldname, - const char *newname); -uint32_t unix_perms_to_wire(mode_t perms); -mode_t wire_perms_to_unix(uint32_t perms); -struct tevent_req *cli_posix_getfacl_send(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, - const char *fname); -NTSTATUS cli_posix_getfacl_recv(struct tevent_req *req, - TALLOC_CTX *mem_ctx, - size_t *prb_size, - char **retbuf); -NTSTATUS cli_posix_getfacl(struct cli_state *cli, - const char *fname, - TALLOC_CTX *mem_ctx, - size_t *prb_size, - char **retbuf); -struct tevent_req *cli_posix_stat_send(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, - const char *fname); -NTSTATUS cli_posix_stat_recv(struct tevent_req *req, - SMB_STRUCT_STAT *sbuf); -NTSTATUS cli_posix_stat(struct cli_state *cli, - const char *fname, - SMB_STRUCT_STAT *sbuf); -struct tevent_req *cli_posix_chmod_send(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, - const char *fname, - mode_t mode); -NTSTATUS cli_posix_chmod_recv(struct tevent_req *req); -NTSTATUS cli_posix_chmod(struct cli_state *cli, const char *fname, mode_t mode); -struct tevent_req *cli_posix_chown_send(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, - const char *fname, - uid_t uid, - gid_t gid); -NTSTATUS cli_posix_chown_recv(struct tevent_req *req); -NTSTATUS cli_posix_chown(struct cli_state *cli, - const char *fname, - uid_t uid, - gid_t gid); -struct tevent_req *cli_rename_send(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, - const char *fname_src, - const char *fname_dst); -NTSTATUS cli_rename_recv(struct tevent_req *req); -NTSTATUS cli_rename(struct cli_state *cli, const char *fname_src, const char *fname_dst); -struct tevent_req *cli_ntrename_send(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, - const char *fname_src, - const char *fname_dst); -NTSTATUS cli_ntrename_recv(struct tevent_req *req); -NTSTATUS cli_ntrename(struct cli_state *cli, const char *fname_src, const char *fname_dst); - -struct tevent_req *cli_nt_hardlink_send(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, - const char *fname_src, - const char *fname_dst); -NTSTATUS cli_nt_hardlink_recv(struct tevent_req *req); -NTSTATUS cli_nt_hardlink(struct cli_state *cli, const char *fname_src, const char *fname_dst); - -struct tevent_req *cli_unlink_send(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, - const char *fname, - uint16_t mayhave_attrs); -NTSTATUS cli_unlink_recv(struct tevent_req *req); -NTSTATUS cli_unlink(struct cli_state *cli, const char *fname, uint16_t mayhave_attrs); - -struct tevent_req *cli_mkdir_send(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, - const char *dname); -NTSTATUS cli_mkdir_recv(struct tevent_req *req); -NTSTATUS cli_mkdir(struct cli_state *cli, const char *dname); -struct tevent_req *cli_rmdir_send(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, - const char *dname); -NTSTATUS cli_rmdir_recv(struct tevent_req *req); -NTSTATUS cli_rmdir(struct cli_state *cli, const char *dname); -struct tevent_req *cli_nt_delete_on_close_send(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, - uint16_t fnum, - bool flag); -NTSTATUS cli_nt_delete_on_close_recv(struct tevent_req *req); -NTSTATUS cli_nt_delete_on_close(struct cli_state *cli, uint16_t fnum, bool flag); -struct tevent_req *cli_ntcreate_send(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, - const char *fname, - uint32_t CreatFlags, - uint32_t DesiredAccess, - uint32_t FileAttributes, - uint32_t ShareAccess, - uint32_t CreateDisposition, - uint32_t CreateOptions, - uint8_t SecurityFlags); -NTSTATUS cli_ntcreate_recv(struct tevent_req *req, uint16_t *pfnum); -NTSTATUS cli_ntcreate(struct cli_state *cli, - const char *fname, - uint32_t CreatFlags, - uint32_t DesiredAccess, - uint32_t FileAttributes, - uint32_t ShareAccess, - uint32_t CreateDisposition, - uint32_t CreateOptions, - uint8_t SecurityFlags, - uint16_t *pfid); -uint8_t *smb_bytes_push_str(uint8_t *buf, bool ucs2, const char *str, - size_t str_len, size_t *pconverted_size); -uint8_t *smb_bytes_push_bytes(uint8_t *buf, uint8_t prefix, - const uint8_t *bytes, size_t num_bytes); -struct tevent_req *cli_open_create(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, const char *fname, - int flags, int share_mode, - struct tevent_req **psmbreq); -struct tevent_req *cli_open_send(TALLOC_CTX *mem_ctx, struct event_context *ev, - struct cli_state *cli, const char *fname, - int flags, int share_mode); -NTSTATUS cli_open_recv(struct tevent_req *req, uint16_t *fnum); -NTSTATUS cli_open(struct cli_state *cli, const char *fname, int flags, int share_mode, uint16_t *pfnum); -struct tevent_req *cli_close_create(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, uint16_t fnum, - struct tevent_req **psubreq); -struct tevent_req *cli_close_send(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, uint16_t fnum); -NTSTATUS cli_close_recv(struct tevent_req *req); -NTSTATUS cli_close(struct cli_state *cli, uint16_t fnum); -struct tevent_req *cli_ftruncate_send(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, - uint16_t fnum, - uint64_t size); -NTSTATUS cli_ftruncate_recv(struct tevent_req *req); -NTSTATUS cli_ftruncate(struct cli_state *cli, uint16_t fnum, uint64_t size); -NTSTATUS cli_locktype(struct cli_state *cli, uint16_t fnum, - uint32_t offset, uint32_t len, - int timeout, unsigned char locktype); -bool cli_lock(struct cli_state *cli, uint16_t fnum, - uint32_t offset, uint32_t len, int timeout, enum brl_type lock_type); -struct tevent_req *cli_unlock_send(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, - uint16_t fnum, - uint64_t offset, - uint64_t len); -NTSTATUS cli_unlock_recv(struct tevent_req *req); -NTSTATUS cli_unlock(struct cli_state *cli, uint16_t fnum, uint32_t offset, uint32_t len); -bool cli_lock64(struct cli_state *cli, uint16_t fnum, - uint64_t offset, uint64_t len, int timeout, enum brl_type lock_type); -struct tevent_req *cli_unlock64_send(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, - uint16_t fnum, - uint64_t offset, - uint64_t len); -NTSTATUS cli_unlock64_recv(struct tevent_req *req); -NTSTATUS cli_unlock64(struct cli_state *cli, uint16_t fnum, uint64_t offset, uint64_t len); -struct tevent_req *cli_posix_lock_send(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, - uint16_t fnum, - uint64_t offset, - uint64_t len, - bool wait_lock, - enum brl_type lock_type); -NTSTATUS cli_posix_lock_recv(struct tevent_req *req); -NTSTATUS cli_posix_lock(struct cli_state *cli, uint16_t fnum, - uint64_t offset, uint64_t len, - bool wait_lock, enum brl_type lock_type); -struct tevent_req *cli_posix_unlock_send(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, - uint16_t fnum, - uint64_t offset, - uint64_t len); -NTSTATUS cli_posix_unlock_recv(struct tevent_req *req); -NTSTATUS cli_posix_unlock(struct cli_state *cli, uint16_t fnum, uint64_t offset, uint64_t len); -struct tevent_req *cli_getattrE_send(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, - uint16_t fnum); -NTSTATUS cli_getattrE_recv(struct tevent_req *req, - uint16_t *attr, - SMB_OFF_T *size, - time_t *change_time, - time_t *access_time, - time_t *write_time); -NTSTATUS cli_getattrE(struct cli_state *cli, - uint16_t fnum, - uint16_t *attr, - SMB_OFF_T *size, - time_t *change_time, - time_t *access_time, - time_t *write_time); -struct tevent_req *cli_setattrE_send(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, - uint16_t fnum, - time_t change_time, - time_t access_time, - time_t write_time); -NTSTATUS cli_setattrE_recv(struct tevent_req *req); -NTSTATUS cli_setattrE(struct cli_state *cli, - uint16_t fnum, - time_t change_time, - time_t access_time, - time_t write_time); -struct tevent_req *cli_getatr_send(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, - const char *fname); -NTSTATUS cli_getatr_recv(struct tevent_req *req, - uint16_t *attr, - SMB_OFF_T *size, - time_t *write_time); -NTSTATUS cli_getatr(struct cli_state *cli, - const char *fname, - uint16_t *attr, - SMB_OFF_T *size, - time_t *write_time); -struct tevent_req *cli_setatr_send(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, - const char *fname, - uint16_t attr, - time_t mtime); -NTSTATUS cli_setatr_recv(struct tevent_req *req); -NTSTATUS cli_setatr(struct cli_state *cli, - const char *fname, - uint16_t attr, - time_t mtime); -struct tevent_req *cli_chkpath_send(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, - const char *fname); -NTSTATUS cli_chkpath_recv(struct tevent_req *req); -NTSTATUS cli_chkpath(struct cli_state *cli, const char *path); -struct tevent_req *cli_dskattr_send(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli); -NTSTATUS cli_dskattr_recv(struct tevent_req *req, int *bsize, int *total, - int *avail); -NTSTATUS cli_dskattr(struct cli_state *cli, int *bsize, int *total, int *avail); -struct tevent_req *cli_ctemp_send(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, - const char *path); -NTSTATUS cli_ctemp_recv(struct tevent_req *req, - TALLOC_CTX *ctx, - uint16_t *pfnum, - char **outfile); -NTSTATUS cli_ctemp(struct cli_state *cli, - TALLOC_CTX *ctx, - const char *path, - uint16_t *pfnum, - char **out_path); -NTSTATUS cli_raw_ioctl(struct cli_state *cli, uint16_t fnum, uint32_t code, DATA_BLOB *blob); -NTSTATUS cli_set_ea_path(struct cli_state *cli, const char *path, - const char *ea_name, const char *ea_val, - size_t ea_len); -NTSTATUS cli_set_ea_fnum(struct cli_state *cli, uint16_t fnum, - const char *ea_name, const char *ea_val, - size_t ea_len); -struct tevent_req *cli_get_ea_list_path_send(TALLOC_CTX *mem_ctx, - struct tevent_context *ev, - struct cli_state *cli, - const char *fname); -NTSTATUS cli_get_ea_list_path_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx, - size_t *pnum_eas, struct ea_struct **peas); -NTSTATUS cli_get_ea_list_path(struct cli_state *cli, const char *path, - TALLOC_CTX *ctx, - size_t *pnum_eas, - struct ea_struct **pea_list); -struct tevent_req *cli_posix_open_send(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, - const char *fname, - int flags, - mode_t mode); -NTSTATUS cli_posix_open_recv(struct tevent_req *req, uint16_t *pfnum); -NTSTATUS cli_posix_open(struct cli_state *cli, const char *fname, - int flags, mode_t mode, uint16_t *fnum); -struct tevent_req *cli_posix_mkdir_send(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, - const char *fname, - mode_t mode); -NTSTATUS cli_posix_mkdir_recv(struct tevent_req *req); -NTSTATUS cli_posix_mkdir(struct cli_state *cli, const char *fname, mode_t mode); - -struct tevent_req *cli_posix_unlink_send(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, - const char *fname); -NTSTATUS cli_posix_unlink_recv(struct tevent_req *req); -NTSTATUS cli_posix_unlink(struct cli_state *cli, const char *fname); - -struct tevent_req *cli_posix_rmdir_send(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, - const char *fname); -NTSTATUS cli_posix_rmdir_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx); -NTSTATUS cli_posix_rmdir(struct cli_state *cli, const char *fname); -struct tevent_req *cli_notify_send(TALLOC_CTX *mem_ctx, - struct tevent_context *ev, - struct cli_state *cli, uint16_t fnum, - uint32_t buffer_size, - uint32_t completion_filter, bool recursive); -NTSTATUS cli_notify_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx, - uint32_t *pnum_changes, - struct notify_change **pchanges); - -/* The following definitions come from libsmb/clifsinfo.c */ - -struct tevent_req *cli_unix_extensions_version_send(TALLOC_CTX *mem_ctx, - struct tevent_context *ev, - struct cli_state *cli); -NTSTATUS cli_unix_extensions_version_recv(struct tevent_req *req, - uint16_t *pmajor, uint16_t *pminor, - uint32_t *pcaplow, - uint32_t *pcaphigh); -NTSTATUS cli_unix_extensions_version(struct cli_state *cli, uint16 *pmajor, - uint16 *pminor, uint32 *pcaplow, - uint32 *pcaphigh); -struct tevent_req *cli_set_unix_extensions_capabilities_send( - TALLOC_CTX *mem_ctx, struct tevent_context *ev, struct cli_state *cli, - uint16_t major, uint16_t minor, uint32_t caplow, uint32_t caphigh); -NTSTATUS cli_set_unix_extensions_capabilities_recv(struct tevent_req *req); -NTSTATUS cli_set_unix_extensions_capabilities(struct cli_state *cli, - uint16 major, uint16 minor, - uint32 caplow, uint32 caphigh); -struct tevent_req *cli_get_fs_attr_info_send(TALLOC_CTX *mem_ctx, - struct tevent_context *ev, - struct cli_state *cli); -NTSTATUS cli_get_fs_attr_info_recv(struct tevent_req *req, uint32_t *fs_attr); -NTSTATUS cli_get_fs_attr_info(struct cli_state *cli, uint32_t *fs_attr); -NTSTATUS cli_get_fs_volume_info(struct cli_state *cli, fstring volume_name, - uint32 *pserial_number, time_t *pdate); -NTSTATUS cli_get_fs_full_size_info(struct cli_state *cli, - uint64_t *total_allocation_units, - uint64_t *caller_allocation_units, - uint64_t *actual_allocation_units, - uint64_t *sectors_per_allocation_unit, - uint64_t *bytes_per_sector); -NTSTATUS cli_get_posix_fs_info(struct cli_state *cli, - uint32 *optimal_transfer_size, - uint32 *block_size, - uint64_t *total_blocks, - uint64_t *blocks_available, - uint64_t *user_blocks_available, - uint64_t *total_file_nodes, - uint64_t *free_file_nodes, - uint64_t *fs_identifier); -NTSTATUS cli_raw_ntlm_smb_encryption_start(struct cli_state *cli, - const char *user, - const char *pass, - const char *domain); -NTSTATUS cli_gss_smb_encryption_start(struct cli_state *cli); -NTSTATUS cli_force_encryption(struct cli_state *c, - const char *username, - const char *password, - const char *domain); - -/* The following definitions come from libsmb/clikrb5.c */ - -bool unwrap_edata_ntstatus(TALLOC_CTX *mem_ctx, - DATA_BLOB *edata, - DATA_BLOB *edata_out); -bool unwrap_pac(TALLOC_CTX *mem_ctx, DATA_BLOB *auth_data, DATA_BLOB *unwrapped_pac_data); - -/* The following definitions come from libsmb/clilist.c */ - -NTSTATUS cli_list_old(struct cli_state *cli,const char *Mask,uint16 attribute, - NTSTATUS (*fn)(const char *, struct file_info *, - const char *, void *), void *state); -NTSTATUS cli_list_trans(struct cli_state *cli, const char *mask, - uint16_t attribute, int info_level, - NTSTATUS (*fn)(const char *mnt, struct file_info *finfo, - const char *mask, void *private_data), - void *private_data); -struct tevent_req *cli_list_send(TALLOC_CTX *mem_ctx, - struct tevent_context *ev, - struct cli_state *cli, - const char *mask, - uint16_t attribute, - uint16_t info_level); -NTSTATUS cli_list_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx, - struct file_info **finfo, size_t *num_finfo); -NTSTATUS cli_list(struct cli_state *cli,const char *Mask,uint16 attribute, - NTSTATUS (*fn)(const char *, struct file_info *, const char *, - void *), void *state); - -/* The following definitions come from libsmb/climessage.c */ - -struct tevent_req *cli_message_send(TALLOC_CTX *mem_ctx, - struct tevent_context *ev, - struct cli_state *cli, - const char *host, const char *username, - const char *message); -NTSTATUS cli_message_recv(struct tevent_req *req); -NTSTATUS cli_message(struct cli_state *cli, const char *host, - const char *username, const char *message); - -/* The following definitions come from libsmb/clioplock.c */ - -struct tevent_req *cli_oplock_ack_send(TALLOC_CTX *mem_ctx, - struct tevent_context *ev, - struct cli_state *cli, - uint16_t fnum, uint8_t level); -NTSTATUS cli_oplock_ack_recv(struct tevent_req *req); -NTSTATUS cli_oplock_ack(struct cli_state *cli, uint16_t fnum, unsigned char level); -void cli_oplock_handler(struct cli_state *cli, - NTSTATUS (*handler)(struct cli_state *, uint16_t, unsigned char)); - -/* The following definitions come from libsmb/cliprint.c */ - -int cli_print_queue(struct cli_state *cli, - void (*fn)(struct print_job_info *)); -int cli_printjob_del(struct cli_state *cli, int job); - -/* The following definitions come from libsmb/cliquota.c */ - -NTSTATUS cli_get_quota_handle(struct cli_state *cli, uint16_t *quota_fnum); -void free_ntquota_list(SMB_NTQUOTA_LIST **qt_list); -NTSTATUS cli_get_user_quota(struct cli_state *cli, int quota_fnum, - SMB_NTQUOTA_STRUCT *pqt); -NTSTATUS cli_set_user_quota(struct cli_state *cli, int quota_fnum, - SMB_NTQUOTA_STRUCT *pqt); -NTSTATUS cli_list_user_quota(struct cli_state *cli, int quota_fnum, - SMB_NTQUOTA_LIST **pqt_list); -NTSTATUS cli_get_fs_quota_info(struct cli_state *cli, int quota_fnum, - SMB_NTQUOTA_STRUCT *pqt); -NTSTATUS cli_set_fs_quota_info(struct cli_state *cli, int quota_fnum, - SMB_NTQUOTA_STRUCT *pqt); - -/* The following definitions come from libsmb/clireadwrite.c */ - -struct tevent_req *cli_read_andx_create(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, uint16_t fnum, - off_t offset, size_t size, - struct tevent_req **psmbreq); -struct tevent_req *cli_read_andx_send(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, uint16_t fnum, - off_t offset, size_t size); -NTSTATUS cli_read_andx_recv(struct tevent_req *req, ssize_t *received, - uint8_t **rcvbuf); -struct tevent_req *cli_pull_send(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, - uint16_t fnum, off_t start_offset, - SMB_OFF_T size, size_t window_size, - NTSTATUS (*sink)(char *buf, size_t n, - void *priv), - void *priv); -NTSTATUS cli_pull_recv(struct tevent_req *req, SMB_OFF_T *received); -NTSTATUS cli_pull(struct cli_state *cli, uint16_t fnum, - off_t start_offset, SMB_OFF_T size, size_t window_size, - NTSTATUS (*sink)(char *buf, size_t n, void *priv), - void *priv, SMB_OFF_T *received); -ssize_t cli_read(struct cli_state *cli, uint16_t fnum, char *buf, - off_t offset, size_t size); -ssize_t cli_write(struct cli_state *cli, - uint16_t fnum, uint16 write_mode, - const char *buf, off_t offset, size_t size); -NTSTATUS cli_smbwrite(struct cli_state *cli, uint16_t fnum, char *buf, - off_t offset, size_t size1, size_t *ptotal); -struct tevent_req *cli_write_andx_create(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, uint16_t fnum, - uint16_t mode, const uint8_t *buf, - off_t offset, size_t size, - struct tevent_req **reqs_before, - int num_reqs_before, - struct tevent_req **psmbreq); -struct tevent_req *cli_write_andx_send(TALLOC_CTX *mem_ctx, - struct event_context *ev, - struct cli_state *cli, uint16_t fnum, - uint16_t mode, const uint8_t *buf, - off_t offset, size_t size); -NTSTATUS cli_write_andx_recv(struct tevent_req *req, size_t *pwritten); - -struct tevent_req *cli_push_send(TALLOC_CTX *mem_ctx, struct event_context *ev, - struct cli_state *cli, - uint16_t fnum, uint16_t mode, - off_t start_offset, size_t window_size, - size_t (*source)(uint8_t *buf, size_t n, - void *priv), - void *priv); -NTSTATUS cli_push_recv(struct tevent_req *req); -NTSTATUS cli_push(struct cli_state *cli, uint16_t fnum, uint16_t mode, - off_t start_offset, size_t window_size, - size_t (*source)(uint8_t *buf, size_t n, void *priv), - void *priv); - -/* The following definitions come from libsmb/clisecdesc.c */ - -struct security_descriptor *cli_query_secdesc(struct cli_state *cli, uint16_t fnum, - TALLOC_CTX *mem_ctx); -NTSTATUS cli_set_secdesc(struct cli_state *cli, uint16_t fnum, - struct security_descriptor *sd); - /* The following definitions come from libsmb/clispnego.c */ DATA_BLOB spnego_gen_negTokenInit(TALLOC_CTX *ctx, @@ -1836,57 +952,6 @@ DATA_BLOB spnego_gen_auth_response_and_mic(TALLOC_CTX *ctx, bool spnego_mech_list_blob(TALLOC_CTX *mem_ctx, char **oid_list, DATA_BLOB *data); -/* The following definitions come from libsmb/clistr.c */ - -size_t clistr_push_fn(struct cli_state *cli, - void *dest, - const char *src, - int dest_len, - int flags); -size_t clistr_pull_fn(const char *inbuf, - char *dest, - const void *src, - int dest_len, - int src_len, - int flags); -size_t clistr_pull_talloc(TALLOC_CTX *ctx, - const char *base, - uint16_t flags2, - char **pp_dest, - const void *src, - int src_len, - int flags); -size_t clistr_align_out(struct cli_state *cli, const void *p, int flags); - -/* The following definitions come from libsmb/clitrans.c */ - -struct tevent_req *cli_trans_send( - TALLOC_CTX *mem_ctx, struct event_context *ev, - struct cli_state *cli, uint8_t cmd, - const char *pipe_name, uint16_t fid, uint16_t function, int flags, - uint16_t *setup, uint8_t num_setup, uint8_t max_setup, - uint8_t *param, uint32_t num_param, uint32_t max_param, - uint8_t *data, uint32_t num_data, uint32_t max_data); -NTSTATUS cli_trans_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx, - uint16_t *recv_flags2, - uint16_t **setup, uint8_t min_setup, - uint8_t *num_setup, - uint8_t **param, uint32_t min_param, - uint32_t *num_param, - uint8_t **data, uint32_t min_data, - uint32_t *num_data); -NTSTATUS cli_trans(TALLOC_CTX *mem_ctx, struct cli_state *cli, - uint8_t trans_cmd, - const char *pipe_name, uint16_t fid, uint16_t function, - int flags, - uint16_t *setup, uint8_t num_setup, uint8_t max_setup, - uint8_t *param, uint32_t num_param, uint32_t max_param, - uint8_t *data, uint32_t num_data, uint32_t max_data, - uint16_t *recv_flags2, - uint16_t **rsetup, uint8_t min_rsetup, uint8_t *num_rsetup, - uint8_t **rparam, uint32_t min_rparam, uint32_t *num_rparam, - uint8_t **rdata, uint32_t min_rdata, uint32_t *num_rdata); - /* The following definitions come from libsmb/conncache.c */ NTSTATUS check_negative_conn_cache( const char *domain, const char *server); @@ -1909,9 +974,6 @@ NTSTATUS dsgetdcname(TALLOC_CTX *mem_ctx, /* The following definitions come from libsmb/errormap.c */ NTSTATUS dos_to_ntstatus(uint8 eclass, uint32 ecode); -void ntstatus_to_dos(NTSTATUS ntstatus, uint8 *eclass, uint32 *ecode); -NTSTATUS werror_to_ntstatus(WERROR error); -WERROR ntstatus_to_werror(NTSTATUS error); NTSTATUS map_nt_error_from_gss(uint32 gss_maj, uint32 minor); /* The following definitions come from libsmb/namecache.c */ @@ -1974,13 +1036,29 @@ NTSTATUS name_query(const char *name, int name_type, TALLOC_CTX *mem_ctx, struct sockaddr_storage **addrs, int *num_addrs, uint8_t *flags); +struct tevent_req *name_resolve_bcast_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + const char *name, + int name_type); +NTSTATUS name_resolve_bcast_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx, + struct sockaddr_storage **addrs, + int *num_addrs); NTSTATUS name_resolve_bcast(const char *name, int name_type, - struct ip_service **return_iplist, + TALLOC_CTX *mem_ctx, + struct sockaddr_storage **return_iplist, int *return_count); +struct tevent_req *resolve_wins_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + const char *name, + int name_type); +NTSTATUS resolve_wins_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx, + struct sockaddr_storage **addrs, + int *num_addrs, uint8_t *flags); NTSTATUS resolve_wins(const char *name, int name_type, - struct ip_service **return_iplist, + TALLOC_CTX *mem_ctx, + struct sockaddr_storage **return_iplist, int *return_count); NTSTATUS internal_resolve_name(const char *name, int name_type, @@ -2016,14 +1094,6 @@ bool get_dc_name(const char *domain, fstring srv_name, struct sockaddr_storage *ss_out); -/* The following definitions come from libsmb/nterr.c */ - -const char *nt_errstr(NTSTATUS nt_code); -const char *get_friendly_nt_error_msg(NTSTATUS nt_code); -const char *get_nt_error_c_code(NTSTATUS nt_code); -NTSTATUS nt_status_string_to_code(const char *nt_status_str); -NTSTATUS nt_status_squash(NTSTATUS nt_status); - /* The following definitions come from libsmb/ntlmssp.c */ struct ntlmssp_state; NTSTATUS ntlmssp_set_username(struct ntlmssp_state *ntlmssp_state, const char *user) ; @@ -2064,38 +1134,6 @@ bool netsamlogon_cache_store(const char *username, struct netr_SamInfo3 *info3); struct netr_SamInfo3 *netsamlogon_cache_get(TALLOC_CTX *mem_ctx, const struct dom_sid *user_sid); bool netsamlogon_cache_have(const struct dom_sid *user_sid); -/* The following definitions come from libsmb/smb_seal.c */ - -NTSTATUS get_enc_ctx_num(const uint8_t *buf, uint16 *p_enc_ctx_num); -bool common_encryption_on(struct smb_trans_enc_state *es); -NTSTATUS common_ntlm_decrypt_buffer(struct ntlmssp_state *ntlmssp_state, char *buf); -NTSTATUS common_ntlm_encrypt_buffer(struct ntlmssp_state *ntlmssp_state, - uint16 enc_ctx_num, - char *buf, - char **ppbuf_out); -NTSTATUS common_encrypt_buffer(struct smb_trans_enc_state *es, char *buffer, char **buf_out); -NTSTATUS common_decrypt_buffer(struct smb_trans_enc_state *es, char *buf); -void common_free_encryption_state(struct smb_trans_enc_state **pp_es); -void common_free_enc_buffer(struct smb_trans_enc_state *es, char *buf); -bool cli_encryption_on(struct cli_state *cli); -void cli_free_encryption_context(struct cli_state *cli); -void cli_free_enc_buffer(struct cli_state *cli, char *buf); -NTSTATUS cli_decrypt_message(struct cli_state *cli); -NTSTATUS cli_encrypt_message(struct cli_state *cli, char *buf, char **buf_out); - -/* The following definitions come from libsmb/clisigning.c */ - -bool cli_simple_set_signing(struct cli_state *cli, - const DATA_BLOB user_session_key, - const DATA_BLOB response); -bool cli_temp_set_signing(struct cli_state *cli); -void cli_calculate_sign_mac(struct cli_state *cli, char *buf, uint32_t *seqnum); -bool cli_check_sign_mac(struct cli_state *cli, const char *buf, uint32_t seqnum); -bool client_is_signing_on(struct cli_state *cli); -bool client_is_signing_allowed(struct cli_state *cli); -bool client_is_signing_mandatory(struct cli_state *cli); -void cli_set_signing_negotiated(struct cli_state *cli); - /* The following definitions come from libsmb/smberr.c */ const char *smb_dos_err_name(uint8 e_class, uint16 num); @@ -2131,22 +1169,15 @@ bool enumerate_domain_trusts( TALLOC_CTX *mem_ctx, const char *domain, struct dom_sid **sids ); NTSTATUS change_trust_account_password( const char *domain, const char *remote_machine); -/* The following definitions come from modules/vfs_default.c */ - -ssize_t vfswrap_llistxattr(struct vfs_handle_struct *handle, const char *path, char *list, size_t size); -ssize_t vfswrap_flistxattr(struct vfs_handle_struct *handle, struct files_struct *fsp, char *list, size_t size); -NTSTATUS vfs_default_init(void); - /* The following definitions come from param/loadparm.c */ -char *lp_smb_ports(void); -char *lp_dos_charset(void); -char *lp_unix_charset(void); -char *lp_display_charset(void); +const char *lp_smb_ports(void); +const char *lp_dos_charset(void); +const char *lp_unix_charset(void); char *lp_logfile(void); char *lp_configfile(void); -char *lp_smb_passwd_file(void); -char *lp_private_dir(void); +const char *lp_smb_passwd_file(void); +const char *lp_private_dir(void); char *lp_serverstring(void); int lp_printcap_cache_time(void); char *lp_addport_cmd(void); @@ -2154,14 +1185,14 @@ char *lp_enumports_cmd(void); char *lp_addprinter_cmd(void); char *lp_deleteprinter_cmd(void); char *lp_os2_driver_map(void); -char *lp_lockdir(void); -char *lp_statedir(void); -char *lp_cachedir(void); -char *lp_piddir(void); +const char *lp_lockdir(void); +const char *lp_statedir(void); +const char *lp_cachedir(void); +const char *lp_piddir(void); char *lp_mangling_method(void); int lp_mangle_prefix(void); -char *lp_utmpdir(void); -char *lp_wtmpdir(void); +const char *lp_utmpdir(void); +const char *lp_wtmpdir(void); bool lp_utmp(void); char *lp_rootdir(void); char *lp_defaultservice(void); @@ -2171,9 +1202,13 @@ char *lp_set_quota_command(void); char *lp_auto_services(void); char *lp_passwd_program(void); char *lp_passwd_chat(void); -char *lp_passwordserver(void); -char *lp_name_resolve_order(void); -char *lp_realm(void); +const char *lp_passwordserver(void); +const char *lp_name_resolve_order(void); +const char *lp_netbios_scope(void); +const char *lp_netbios_name(void); +const char *lp_workgroup(void); +const char *lp_realm(void); +const char *lp_dnsdomain(void); const char *lp_afs_username_map(void); int lp_afs_token_lifetime(void); char *lp_log_nt_token_command(void); @@ -2316,7 +1351,7 @@ bool lp_send_spnego_principal(void); bool lp_hostname_lookups(void); bool lp_change_notify(const struct share_params *p ); bool lp_kernel_change_notify(const struct share_params *p ); -char * lp_dedicated_keytab_file(void); +const char * lp_dedicated_keytab_file(void); int lp_kerberos_method(void); bool lp_defer_sharing_violations(void); bool lp_enable_privileges(void); @@ -2552,9 +1587,11 @@ bool dump_a_parameter(int snum, char *parm_name, FILE * f, bool isGlobal); struct parm_struct *lp_get_parameter(const char *param_name); struct parm_struct *lp_next_parameter(int snum, int *i, int allparameters); bool lp_snum_ok(int iService); -void lp_add_one_printer(const char *name, const char *comment, void *pdata); +void lp_add_one_printer(const char *name, const char *comment, + const char *location, void *pdata); bool lp_loaded(void); -void lp_killunused(bool (*snumused) (int)); +void lp_killunused(struct smbd_server_connection *sconn, + bool (*snumused) (struct smbd_server_connection *, int)); void lp_kill_all_services(void); void lp_killservice(int iServiceIn); const char* server_role_str(uint32 role); @@ -2570,7 +1607,7 @@ enum usershare_err parse_usershare_file(TALLOC_CTX *ctx, struct security_descriptor **ppsd, bool *pallow_guest); int load_usershare_service(const char *servicename); -int load_usershare_shares(void); +int load_usershare_shares(struct smbd_server_connection *sconn); void gfree_loadparm(void); void lp_set_in_client(bool b); bool lp_is_in_client(void); @@ -2592,10 +1629,6 @@ int lp_servicenumber(const char *pszServiceName); bool share_defined(const char *service_name); struct share_params *get_share_params(TALLOC_CTX *mem_ctx, const char *sharename); -struct share_iterator *share_list_all(TALLOC_CTX *mem_ctx); -struct share_params *next_share(struct share_iterator *list); -struct share_params *next_printer(struct share_iterator *list); -struct share_params *snum2params_static(int snum); const char *volume_label(int snum); bool lp_domain_master(void); bool lp_domain_master_true_or_auto(void); @@ -2603,8 +1636,6 @@ bool lp_preferred_master(void); void lp_remove_service(int snum); void lp_copy_service(int snum, const char *new_name); int lp_default_server_announce(void); -int lp_major_announce_version(void); -int lp_minor_announce_version(void); void lp_set_name_resolve_order(const char *new_order); const char *lp_printername(int snum); void lp_set_logfile(const char *name); @@ -2613,6 +1644,7 @@ const char *lp_printcapname(void); bool lp_disable_spoolss( void ); void lp_set_spoolss_state( uint32 state ); uint32 lp_get_spoolss_state( void ); +struct smb_signing_state; bool lp_use_sendfile(int snum, struct smb_signing_state *signing_state); void set_use_sendfile(int snum, bool val); void set_store_dos_attributes(int snum, bool val); @@ -2625,7 +1657,11 @@ int lp_min_receive_file_size(void); char* lp_perfcount_module(void); void lp_set_passdb_backend(const char *backend); void widelinks_warning(int snum); -char *lp_ncalrpc_dir(void); +const char *lp_ncalrpc_dir(void); + +/* The following definitions come from param/loadparm_ctx.c */ + +const struct loadparm_s3_context *loadparm_s3_context(void); /* The following definitions come from param/loadparm_server_role.c */ @@ -2637,145 +1673,6 @@ void set_server_role(void); uint32 get_int_param( const char* param ); char* get_string_param( const char* param ); -/* The following definitions come from librpc/rpc/rpc_common.c */ -struct ndr_interface_table; -bool smb_register_ndr_interface(const struct ndr_interface_table *interface); -const struct ndr_interface_table *get_iface_from_syntax( - const struct ndr_syntax_id *syntax); -const char *get_pipe_name_from_syntax(TALLOC_CTX *mem_ctx, - const struct ndr_syntax_id *syntax); - -/* The following definitions come from rpc_server/rpc_ncacn_np.c */ -struct auth_serversupplied_info; -struct pipes_struct *make_internal_rpc_pipe_p(TALLOC_CTX *mem_ctx, - const struct ndr_syntax_id *syntax, - struct client_address *client_id, - const struct auth_serversupplied_info *session_info, - struct messaging_context *msg_ctx); -struct dcerpc_binding_handle; -NTSTATUS rpcint_binding_handle(TALLOC_CTX *mem_ctx, - const struct ndr_interface_table *ndr_table, - struct client_address *client_id, - const struct auth_serversupplied_info *session_info, - struct messaging_context *msg_ctx, - struct dcerpc_binding_handle **binding_handle); -NTSTATUS rpc_pipe_open_internal(TALLOC_CTX *mem_ctx, - const struct ndr_syntax_id *abstract_syntax, - const struct auth_serversupplied_info *serversupplied_info, - struct client_address *client_id, - struct messaging_context *msg_ctx, - struct rpc_pipe_client **presult); -NTSTATUS rpc_pipe_open_interface(TALLOC_CTX *mem_ctx, - const struct ndr_syntax_id *syntax, - const struct auth_serversupplied_info *session_info, - struct client_address *client_id, - struct messaging_context *msg_ctx, - struct rpc_pipe_client **cli_pipe); - -/* The following definitions come from rpc_server/rpc_handles.c */ - -size_t num_pipe_handles(struct pipes_struct *p); -bool init_pipe_handles(struct pipes_struct *p, const struct ndr_syntax_id *syntax); -bool create_policy_hnd(struct pipes_struct *p, struct policy_handle *hnd, void *data_ptr); -bool find_policy_by_hnd(struct pipes_struct *p, const struct policy_handle *hnd, - void **data_p); -bool close_policy_hnd(struct pipes_struct *p, struct policy_handle *hnd); -void close_policy_by_pipe(struct pipes_struct *p); -bool pipe_access_check(struct pipes_struct *p); - -void *_policy_handle_create(struct pipes_struct *p, struct policy_handle *hnd, - uint32_t access_granted, size_t data_size, - const char *type, NTSTATUS *pstatus); -#define policy_handle_create(_p, _hnd, _access, _type, _pstatus) \ - (_type *)_policy_handle_create((_p), (_hnd), (_access), sizeof(_type), #_type, \ - (_pstatus)) - -void *_policy_handle_find(struct pipes_struct *p, - const struct policy_handle *hnd, - uint32_t access_required, uint32_t *paccess_granted, - const char *name, const char *location, - NTSTATUS *pstatus); -#define policy_handle_find(_p, _hnd, _access_required, _access_granted, _type, _pstatus) \ - (_type *)_policy_handle_find((_p), (_hnd), (_access_required), \ - (_access_granted), #_type, __location__, (_pstatus)) - - -/* The following definitions come from rpc_server/srv_rpc_register.c */ - -struct rpc_srv_callbacks { - bool (*init)(void *private_data); - bool (*shutdown)(void *private_data); - void *private_data; -}; - -struct api_struct; -NTSTATUS rpc_srv_register(int version, const char *clnt, - const char *srv, - const struct ndr_interface_table *iface, - const struct api_struct *cmds, int size, - const struct rpc_srv_callbacks *rpc_srv_cb); - -NTSTATUS rpc_srv_unregister(const struct ndr_interface_table *iface); - -/* The following definitions come from rpc_server/srv_pipe.c */ -struct ncacn_packet; -bool create_next_pdu(struct pipes_struct *p); -bool api_pipe_bind_auth3(struct pipes_struct *p, struct ncacn_packet *pkt); -bool setup_fault_pdu(struct pipes_struct *p, NTSTATUS status); -NTSTATUS rpc_pipe_register_commands(int version, const char *clnt, - const char *srv, - const struct ndr_syntax_id *interface, - const struct api_struct *cmds, int size); -bool is_known_pipename(const char *cli_filename, struct ndr_syntax_id *syntax); - -/* The following definitions come from rpc_server/srv_pipe_hnd.c */ - -struct pipes_struct *get_first_internal_pipe(void); -struct pipes_struct *get_next_internal_pipe(struct pipes_struct *p); -bool check_open_pipes(void); -int close_internal_rpc_pipe_hnd(struct pipes_struct *p); - -bool fsp_is_np(struct files_struct *fsp); -struct tsocket_address; -NTSTATUS np_open(TALLOC_CTX *mem_ctx, const char *name, - const struct tsocket_address *local_address, - const struct tsocket_address *remote_address, - struct client_address *client_id, - struct auth_serversupplied_info *session_info, - struct messaging_context *msg_ctx, - struct fake_file_handle **phandle); -bool np_read_in_progress(struct fake_file_handle *handle); -struct tevent_req *np_write_send(TALLOC_CTX *mem_ctx, struct event_context *ev, - struct fake_file_handle *handle, - const uint8_t *data, size_t len); -NTSTATUS np_write_recv(struct tevent_req *req, ssize_t *pnwritten); -struct tevent_req *np_read_send(TALLOC_CTX *mem_ctx, struct event_context *ev, - struct fake_file_handle *handle, - uint8_t *data, size_t len); -NTSTATUS np_read_recv(struct tevent_req *req, ssize_t *nread, - bool *is_data_outstanding); - -ssize_t process_incoming_data(struct pipes_struct *p, char *data, size_t n); - -/* The following definitions come from rpc_server/srv_spoolss_nt.c */ -void srv_spoolss_cleanup(void); - -void do_drv_upgrade_printer(struct messaging_context *msg, - void *private_data, - uint32_t msg_type, - struct server_id server_id, - DATA_BLOB *data); -void update_monitored_printq_cache(struct messaging_context *msg_ctx); - -/* The following definitions come from rpc_server/srv_srvsvc_nt.c */ - -char *valid_share_pathname(TALLOC_CTX *ctx, const char *dos_pathname); - -/* The following definitions come from rpc_server/srv_svcctl_nt.c */ - -bool init_service_op_table( void ); -bool shutdown_service_op_table(void); - /* The following definitions come from lib/server_contexts.c */ struct tevent_context *server_event_context(void); void server_event_context_free(void); @@ -2800,13 +1697,6 @@ int sessionid_traverse_read(int (*fn)(const char *key, char *stdin_new_passwd( void); char *get_pass( const char *prompt, bool stdin_get); -/* The following definitions come from winbindd/nss_info.c */ - - -/* The following definitions come from winbindd/nss_info_template.c */ - -NTSTATUS nss_info_template_init( void ); - /* The following definitions come from lib/avahi.c */ struct AvahiPoll *tevent_avahi_poll(TALLOC_CTX *mem_ctx, @@ -2837,7 +1727,7 @@ NTSTATUS smbsock_connect_recv(struct tevent_req *req, int *sock, NTSTATUS smbsock_connect(const struct sockaddr_storage *addr, uint16_t port, const char *called_name, int called_type, const char *calling_name, int calling_type, - int *pfd, uint16_t *ret_port); + int *pfd, uint16_t *ret_port, int sec_timeout); struct tevent_req *smbsock_any_connect_send(TALLOC_CTX *mem_ctx, struct tevent_context *ev, @@ -2856,6 +1746,7 @@ NTSTATUS smbsock_any_connect(const struct sockaddr_storage *addrs, int *calling_types, size_t num_addrs, uint16_t port, + int sec_timeout, int *pfd, size_t *chosen_index, uint16_t *chosen_port); @@ -2909,7 +1800,7 @@ void unbecome_root(void); /* The following definitions come from lib/dummysmbd.c */ int find_service(TALLOC_CTX *ctx, const char *service_in, char **p_service_out); -bool conn_snum_used(int snum); +bool conn_snum_used(struct smbd_server_connection *sconn, int snum); void cancel_pending_lock_requests_by_fid(files_struct *fsp, struct byte_range_lock *br_lck, enum file_close_type close_type); @@ -2918,7 +1809,7 @@ void send_stat_cache_delete_message(struct messaging_context *msg_ctx, NTSTATUS can_delete_directory(struct connection_struct *conn, const char *dirname); bool change_to_root_user(void); -struct event_context *smbd_event_context(void); +void smbd_set_server_fd(int fd); void contend_level2_oplocks_begin(files_struct *fsp, enum level2_contention_type type); void contend_level2_oplocks_end(files_struct *fsp, diff --git a/source3/include/pthreadpool.h b/source3/include/pthreadpool.h deleted file mode 100644 index 7ef7ddf419..0000000000 --- a/source3/include/pthreadpool.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Unix SMB/CIFS implementation. - * threadpool implementation based on pthreads - * Copyright (C) Volker Lendecke 2009 - * - * 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 3 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, see <http://www.gnu.org/licenses/>. - */ - -#ifndef __PTHREADPOOL_H__ -#define __PTHREADPOOL_H__ - -struct pthreadpool; - -int pthreadpool_init(unsigned max_threads, struct pthreadpool **presult); -int pthreadpool_destroy(struct pthreadpool *pool); - -/* - * Add a job to a pthreadpool. - */ -int pthreadpool_add_job(struct pthreadpool *pool, int job_id, - void (*fn)(void *private_data), void *private_data); - -/* - * Get the signalling fd out of a thread pool. This fd will become readable - * when a job is finished. The job that finished can be retrieved via - * pthreadpool_finished_job(). - */ -int pthreadpool_sig_fd(struct pthreadpool *pool); -int pthreadpool_finished_job(struct pthreadpool *pool); - -#endif diff --git a/source3/include/smb.h b/source3/include/smb.h index 8ebde2f4ad..589dfd78c3 100644 --- a/source3/include/smb.h +++ b/source3/include/smb.h @@ -27,6 +27,7 @@ #define _SMB_H #include "libcli/smb/smb_common.h" +#include "libds/common/roles.h" /* logged when starting the various Samba daemons */ #define COPYRIGHT_STARTUP_MESSAGE "Copyright Andrew Tridgell and the Samba Team 1992-2011" @@ -85,14 +86,6 @@ enum smb_read_errors { #define DIR_STRUCT_SIZE 43 -/* these define the attribute byte as seen by DOS */ -#define aRONLY (1L<<0) /* 0x01 */ -#define aHIDDEN (1L<<1) /* 0x02 */ -#define aSYSTEM (1L<<2) /* 0x04 */ -#define aVOLID (1L<<3) /* 0x08 */ -#define aDIR (1L<<4) /* 0x10 */ -#define aARCH (1L<<5) /* 0x20 */ - /* deny modes */ #define DENY_DOS 0 #define DENY_ALL 1 @@ -404,10 +397,6 @@ struct share_params { int service; }; -struct share_iterator { - int next_id; -}; - typedef struct connection_struct { struct connection_struct *next, *prev; struct smbd_server_connection *sconn; /* can be NULL */ @@ -1084,26 +1073,6 @@ struct bitmap { #define FILE_SHARE_WRITE 2 #define FILE_SHARE_DELETE 4 -/* FileAttributesField */ -#define FILE_ATTRIBUTE_READONLY 0x001L -#define FILE_ATTRIBUTE_HIDDEN 0x002L -#define FILE_ATTRIBUTE_SYSTEM 0x004L -#define FILE_ATTRIBUTE_DIRECTORY 0x010L -#define FILE_ATTRIBUTE_ARCHIVE 0x020L -#define FILE_ATTRIBUTE_NORMAL 0x080L -#define FILE_ATTRIBUTE_TEMPORARY 0x100L -#define FILE_ATTRIBUTE_SPARSE 0x200L -#define FILE_ATTRIBUTE_REPARSE_POINT 0x400L -#define FILE_ATTRIBUTE_COMPRESSED 0x800L -#define FILE_ATTRIBUTE_OFFLINE 0x1000L -#define FILE_ATTRIBUTE_NONINDEXED 0x2000L -#define FILE_ATTRIBUTE_ENCRYPTED 0x4000L -#define SAMBA_ATTRIBUTES_MASK (FILE_ATTRIBUTE_READONLY|\ - FILE_ATTRIBUTE_HIDDEN|\ - FILE_ATTRIBUTE_SYSTEM|\ - FILE_ATTRIBUTE_DIRECTORY|\ - FILE_ATTRIBUTE_ARCHIVE) - /* Flags - combined with attributes. */ #define FILE_FLAG_WRITE_THROUGH 0x80000000L #define FILE_FLAG_NO_BUFFERING 0x20000000L @@ -1232,7 +1201,7 @@ struct bitmap { /* where to find the base of the SMB packet proper */ -#define smb_base(buf) (((char *)(buf))+4) +#define smb_base(buf) (((const char *)(buf))+4) /* we don't allow server strings to be longer than 48 characters as otherwise NT will not honour the announce packets */ @@ -1267,8 +1236,8 @@ char *strdup(char *s); * This may change again in Samba-3.0 after further testing. JHT */ -#define DEFAULT_MAJOR_VERSION 0x04 -#define DEFAULT_MINOR_VERSION 0x09 +#define SAMBA_MAJOR_NBT_ANNOUNCE_VERSION 0x04 +#define SAMBA_MINOR_NBT_ANNOUNCE_VERSION 0x09 /* Browser Election Values */ #define BROWSER_ELECTION_VERSION 0x010f @@ -1323,17 +1292,6 @@ enum protocol_types { PROTOCOL_SMB2 }; -/* security levels */ -enum security_types {SEC_SHARE,SEC_USER,SEC_SERVER,SEC_DOMAIN,SEC_ADS}; - -/* server roles */ -enum server_types { - ROLE_STANDALONE, - ROLE_DOMAIN_MEMBER, - ROLE_DOMAIN_BDC, - ROLE_DOMAIN_PDC -}; - /* printing types */ enum printing_types {PRINT_BSD,PRINT_SYSV,PRINT_AIX,PRINT_HPUX, PRINT_QNX,PRINT_PLP,PRINT_LPRNG,PRINT_SOFTQ, @@ -1584,13 +1542,6 @@ typedef struct user_struct { struct auth_ntlmssp_state *auth_ntlmssp_state; } user_struct; -struct unix_error_map { - int unix_error; - int dos_class; - int dos_code; - NTSTATUS nt_error; -}; - /* Do you want session setups at user level security with a invalid password to be rejected or allowed in as guest? WinNT rejects them @@ -1736,4 +1687,20 @@ struct deferred_open_record; /* Used inside aio code. */ struct aio_extra; +/* + * Reasons for cache flush. + */ + +enum flush_reason_enum { + SEEK_FLUSH, + READ_FLUSH, + WRITE_FLUSH, + READRAW_FLUSH, + OPLOCK_RELEASE_FLUSH, + CLOSE_FLUSH, + SYNC_FLUSH, + SIZECHANGE_FLUSH, + /* NUM_FLUSH_REASONS must remain the last value in the enumeration. */ + NUM_FLUSH_REASONS}; + #endif /* _SMB_H */ diff --git a/source3/include/smb_krb5.h b/source3/include/smb_krb5.h index d87dc79ff9..bc9996c541 100644 --- a/source3/include/smb_krb5.h +++ b/source3/include/smb_krb5.h @@ -1,3 +1,25 @@ +/* + Unix SMB/CIFS implementation. + simple kerberos5 routines for active directory + Copyright (C) Andrew Tridgell 2001 + Copyright (C) Luke Howard 2002-2003 + Copyright (C) Andrew Bartlett <abartlet@samba.org> 2005 + Copyright (C) Guenther Deschner 2005-2009 + + 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 3 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, see <http://www.gnu.org/licenses/>. +*/ + #ifndef _HEADER_smb_krb5_h #define _HEADER_smb_krb5_h @@ -14,14 +36,6 @@ #include "libcli/auth/krb5_wrap.h" -#if HAVE_GSSAPI_GSSAPI_H -#include <gssapi/gssapi.h> -#elif HAVE_GSSAPI_GSSAPI_GENERIC_H -#include <gssapi/gssapi_generic.h> -#elif HAVE_GSSAPI_H -#include <gssapi.h> -#endif - #ifndef KRB5_ADDR_NETBIOS #define KRB5_ADDR_NETBIOS 0x14 #endif diff --git a/source3/include/smb_ldap.h b/source3/include/smb_ldap.h index 45e586859d..594f015862 100644 --- a/source3/include/smb_ldap.h +++ b/source3/include/smb_ldap.h @@ -1,3 +1,25 @@ +/* + Unix SMB/CIFS implementation. + Copyright (C) Andrew Tridgell 2001 + Copyright (C) Remus Koos 2001 + Copyright (C) Jim McDonough <jmcd@us.ibm.com> 2002 + Copyright (C) Guenther Deschner 2005 + Copyright (C) Gerald Carter 2006 + + 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 3 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, see <http://www.gnu.org/licenses/>. +*/ + #ifndef _SMB_LDAP_H #define _SMB_LDAP_H @@ -22,6 +44,20 @@ typedef int ber_int_t; #ifndef LDAP_CONST #define LDAP_CONST const #endif + +#ifdef HAVE_LDAP_PVT_H +#include <ldap_pvt.h> +#endif /* HAVE_LDAP_PVT_H */ + +#ifdef HAVE_LDAP_INIT_FD +int ldap_init_fd(ber_socket_t fd, int proto, char *uri, LDAP **ldp); +#endif + +/* function declarations not included in proto.h */ +LDAP *ldap_open_with_timeout(const char *server, + struct sockaddr_storage *ss, + int port, unsigned int to); + #ifndef LDAP_OPT_SUCCESS #define LDAP_OPT_SUCCESS 0 #endif @@ -36,9 +72,6 @@ typedef int ber_int_t; #define LDAPS_PORT 636 #endif -/* function declarations not included in proto.h */ -LDAP *ldap_open_with_timeout(const char *server, int port, unsigned int to); - #endif /* HAVE_LDAP_H */ #ifndef HAVE_LDAP diff --git a/source3/include/smb_macros.h b/source3/include/smb_macros.h index 93bda975bf..37ea1b4292 100644 --- a/source3/include/smb_macros.h +++ b/source3/include/smb_macros.h @@ -28,11 +28,11 @@ #define BITSETW(ptr,bit) ((SVAL(ptr,0) & (1<<(bit)))!=0) /* for readability... */ -#define IS_DOS_READONLY(test_mode) (((test_mode) & aRONLY) != 0) -#define IS_DOS_DIR(test_mode) (((test_mode) & aDIR) != 0) -#define IS_DOS_ARCHIVE(test_mode) (((test_mode) & aARCH) != 0) -#define IS_DOS_SYSTEM(test_mode) (((test_mode) & aSYSTEM) != 0) -#define IS_DOS_HIDDEN(test_mode) (((test_mode) & aHIDDEN) != 0) +#define IS_DOS_READONLY(test_mode) (((test_mode) & FILE_ATTRIBUTE_READONLY) != 0) +#define IS_DOS_DIR(test_mode) (((test_mode) & FILE_ATTRIBUTE_DIRECTORY) != 0) +#define IS_DOS_ARCHIVE(test_mode) (((test_mode) & FILE_ATTRIBUTE_ARCHIVE) != 0) +#define IS_DOS_SYSTEM(test_mode) (((test_mode) & FILE_ATTRIBUTE_SYSTEM) != 0) +#define IS_DOS_HIDDEN(test_mode) (((test_mode) & FILE_ATTRIBUTE_HIDDEN) != 0) #define SMB_WARN(condition, message) \ ((condition) ? (void)0 : \ @@ -123,6 +123,7 @@ /* Extra macros added by Ying Chen at IBM - speed increase by inlining. */ #define smb_buf(buf) (((char *)(buf)) + smb_size + CVAL(buf,smb_wct)*2) +#define smb_buf_const(buf) (((const char *)(buf)) + smb_size + CVAL(buf,smb_wct)*2) #define smb_buflen(buf) (SVAL(buf,smb_vwv0 + (int)CVAL(buf, smb_wct)*2)) /* the remaining number of bytes in smb buffer 'buf' from pointer 'p'. */ @@ -217,39 +218,12 @@ copy an IP address from one buffer to another #define SMB_XMALLOC_P(type) (type *)smb_xmalloc_array(sizeof(type),1) #define SMB_XMALLOC_ARRAY(type,count) (type *)smb_xmalloc_array(sizeof(type),(count)) -/* The new talloc is paranoid malloc checker safe. */ - -#if 0 - -Disable these now we have checked all code paths and ensured -NULL returns on zero request. JRA. - -#define TALLOC(ctx, size) talloc_zeronull(ctx, size, __location__) -#define TALLOC_P(ctx, type) (type *)talloc_zeronull(ctx, sizeof(type), #type) -#define TALLOC_ARRAY(ctx, type, count) (type *)_talloc_array_zeronull(ctx, sizeof(type), count, #type) -#define TALLOC_MEMDUP(ctx, ptr, size) _talloc_memdup_zeronull(ctx, ptr, size, __location__) -#define TALLOC_ZERO(ctx, size) _talloc_zero_zeronull(ctx, size, __location__) -#define TALLOC_ZERO_P(ctx, type) (type *)_talloc_zero_zeronull(ctx, sizeof(type), #type) -#define TALLOC_ZERO_ARRAY(ctx, type, count) (type *)_talloc_zero_array_zeronull(ctx, sizeof(type), count, #type) -#define TALLOC_SIZE(ctx, size) talloc_zeronull(ctx, size, __location__) -#define TALLOC_ZERO_SIZE(ctx, size) _talloc_zero_zeronull(ctx, size, __location__) - -#else - #define TALLOC(ctx, size) talloc_named_const(ctx, size, __location__) -#define TALLOC_P(ctx, type) (type *)talloc_named_const(ctx, sizeof(type), #type) -#define TALLOC_ARRAY(ctx, type, count) (type *)_talloc_array(ctx, sizeof(type), count, #type) -#define TALLOC_MEMDUP(ctx, ptr, size) _talloc_memdup(ctx, ptr, size, __location__) #define TALLOC_ZERO(ctx, size) _talloc_zero(ctx, size, __location__) -#define TALLOC_ZERO_P(ctx, type) (type *)_talloc_zero(ctx, sizeof(type), #type) -#define TALLOC_ZERO_ARRAY(ctx, type, count) (type *)_talloc_zero_array(ctx, sizeof(type), count, #type) #define TALLOC_SIZE(ctx, size) talloc_named_const(ctx, size, __location__) #define TALLOC_ZERO_SIZE(ctx, size) _talloc_zero(ctx, size, __location__) -#endif - #define TALLOC_REALLOC(ctx, ptr, count) _talloc_realloc(ctx, ptr, count, __location__) -#define TALLOC_REALLOC_ARRAY(ctx, ptr, type, count) (type *)_talloc_realloc_array(ctx, ptr, sizeof(type), count, #type) #define talloc_destroy(ctx) talloc_free(ctx) #ifndef TALLOC_FREE #define TALLOC_FREE(ctx) do { talloc_free(ctx); ctx=NULL; } while(0) @@ -312,7 +286,7 @@ NULL returns on zero request. JRA. #define ADD_TO_ARRAY(mem_ctx, type, elem, array, num) \ do { \ *(array) = ((mem_ctx) != NULL) ? \ - TALLOC_REALLOC_ARRAY(mem_ctx, (*(array)), type, (*(num))+1) : \ + talloc_realloc(mem_ctx, (*(array)), type, (*(num))+1) : \ SMB_REALLOC_ARRAY((*(array)), type, (*(num))+1); \ SMB_ASSERT((*(array)) != NULL); \ (*(array))[*(num)] = (elem); \ diff --git a/source3/include/trans2.h b/source3/include/trans2.h index 076780dec0..7a8c411396 100644 --- a/source3/include/trans2.h +++ b/source3/include/trans2.h @@ -355,433 +355,4 @@ Byte offset Type name description #define FLAG_TRANS2_FIND_CONTINUE 0x8 #define FLAG_TRANS2_FIND_BACKUP_INTENT 0x10 -/* UNIX CIFS Extensions - created by HP */ -/* - * UNIX CIFS Extensions have the range 0x200 - 0x2FF reserved. - * Supposedly Microsoft have agreed to this. - */ - -#define MIN_UNIX_INFO_LEVEL 0x200 -#define MAX_UNIX_INFO_LEVEL 0x2FF - -#define INFO_LEVEL_IS_UNIX(level) (((level) >= MIN_UNIX_INFO_LEVEL) && ((level) <= MAX_UNIX_INFO_LEVEL)) - -#define SMB_QUERY_FILE_UNIX_BASIC 0x200 /* UNIX File Info*/ -#define SMB_SET_FILE_UNIX_BASIC 0x200 -#define SMB_SET_FILE_UNIX_INFO2 0x20B /* UNIX File Info2 */ - -#define SMB_MODE_NO_CHANGE 0xFFFFFFFF /* file mode value which */ - /* means "don't change it" */ -#define SMB_UID_NO_CHANGE 0xFFFFFFFF -#define SMB_GID_NO_CHANGE 0xFFFFFFFF - -#define SMB_SIZE_NO_CHANGE_LO 0xFFFFFFFF -#define SMB_SIZE_NO_CHANGE_HI 0xFFFFFFFF - -#define SMB_TIME_NO_CHANGE_LO 0xFFFFFFFF -#define SMB_TIME_NO_CHANGE_HI 0xFFFFFFFF - -/* -Offset Size Name -0 LARGE_INTEGER EndOfFile File size -8 LARGE_INTEGER Blocks Number of bytes used on disk (st_blocks). -16 LARGE_INTEGER CreationTime Creation time -24 LARGE_INTEGER LastAccessTime Last access time -32 LARGE_INTEGER LastModificationTime Last modification time -40 LARGE_INTEGER Uid Numeric user id for the owner -48 LARGE_INTEGER Gid Numeric group id of owner -56 ULONG Type Enumeration specifying the pathname type: - 0 -- File - 1 -- Directory - 2 -- Symbolic link - 3 -- Character device - 4 -- Block device - 5 -- FIFO (named pipe) - 6 -- Unix domain socket - -60 LARGE_INTEGER devmajor Major device number if type is device -68 LARGE_INTEGER devminor Minor device number if type is device -76 LARGE_INTEGER uniqueid This is a server-assigned unique id for the file. The client - will typically map this onto an inode number. The scope of - uniqueness is the share. -84 LARGE_INTEGER permissions Standard UNIX file permissions - see below. -92 LARGE_INTEGER nlinks The number of directory entries that map to this entry - (number of hard links) - -100 - end. -*/ - -#define SMB_FILE_UNIX_BASIC_SIZE 100 - -/* UNIX filetype mappings. */ - -#define UNIX_TYPE_FILE 0 -#define UNIX_TYPE_DIR 1 -#define UNIX_TYPE_SYMLINK 2 -#define UNIX_TYPE_CHARDEV 3 -#define UNIX_TYPE_BLKDEV 4 -#define UNIX_TYPE_FIFO 5 -#define UNIX_TYPE_SOCKET 6 -#define UNIX_TYPE_UNKNOWN 0xFFFFFFFF - -/* - * Oh this is fun. "Standard UNIX permissions" has no - * meaning in POSIX. We need to define the mapping onto - * and off the wire as this was not done in the original HP - * spec. JRA. - */ - -#define UNIX_X_OTH 0000001 -#define UNIX_W_OTH 0000002 -#define UNIX_R_OTH 0000004 -#define UNIX_X_GRP 0000010 -#define UNIX_W_GRP 0000020 -#define UNIX_R_GRP 0000040 -#define UNIX_X_USR 0000100 -#define UNIX_W_USR 0000200 -#define UNIX_R_USR 0000400 -#define UNIX_STICKY 0001000 -#define UNIX_SET_GID 0002000 -#define UNIX_SET_UID 0004000 - -/* Masks for the above */ -#define UNIX_OTH_MASK 0000007 -#define UNIX_GRP_MASK 0000070 -#define UNIX_USR_MASK 0000700 -#define UNIX_PERM_MASK 0000777 -#define UNIX_EXTRA_MASK 0007000 -#define UNIX_ALL_MASK 0007777 - -/* Flags for chflags (CIFS_UNIX_EXTATTR_CAP capability) and - * SMB_QUERY_FILE_UNIX_INFO2. - */ -#define EXT_SECURE_DELETE 0x00000001 -#define EXT_ENABLE_UNDELETE 0x00000002 -#define EXT_SYNCHRONOUS 0x00000004 -#define EXT_IMMUTABLE 0x00000008 -#define EXT_OPEN_APPEND_ONLY 0x00000010 -#define EXT_DO_NOT_BACKUP 0x00000020 -#define EXT_NO_UPDATE_ATIME 0x00000040 -#define EXT_HIDDEN 0x00000080 - -#define SMB_QUERY_FILE_UNIX_LINK 0x201 -#define SMB_SET_FILE_UNIX_LINK 0x201 -#define SMB_SET_FILE_UNIX_HLINK 0x203 -/* SMB_QUERY_POSIX_ACL 0x204 see below */ -#define SMB_QUERY_XATTR 0x205 /* need for non-user XATTRs */ -#define SMB_QUERY_ATTR_FLAGS 0x206 /* chflags, chattr */ -#define SMB_SET_ATTR_FLAGS 0x206 -#define SMB_QUERY_POSIX_PERMISSION 0x207 -/* Only valid for qfileinfo */ -#define SMB_QUERY_POSIX_LOCK 0x208 -/* Only valid for setfileinfo */ -#define SMB_SET_POSIX_LOCK 0x208 - -/* The set info levels for POSIX path operations. */ -#define SMB_POSIX_PATH_OPEN 0x209 -#define SMB_POSIX_PATH_UNLINK 0x20A - -#define SMB_QUERY_FILE_UNIX_INFO2 0x20B /* UNIX File Info2 */ -#define SMB_SET_FILE_UNIX_INFO2 0x20B - -/* -SMB_QUERY_FILE_UNIX_INFO2 is SMB_QUERY_FILE_UNIX_BASIC with create -time and file flags appended. The corresponding info level for -findfirst/findnext is SMB_FIND_FILE_UNIX_INFO2. - Size Offset Value - --------------------- - 0 LARGE_INTEGER EndOfFile File size - 8 LARGE_INTEGER Blocks Number of blocks used on disk - 16 LARGE_INTEGER ChangeTime Attribute change time - 24 LARGE_INTEGER LastAccessTime Last access time - 32 LARGE_INTEGER LastModificationTime Last modification time - 40 LARGE_INTEGER Uid Numeric user id for the owner - 48 LARGE_INTEGER Gid Numeric group id of owner - 56 ULONG Type Enumeration specifying the file type - 60 LARGE_INTEGER devmajor Major device number if type is device - 68 LARGE_INTEGER devminor Minor device number if type is device - 76 LARGE_INTEGER uniqueid This is a server-assigned unique id - 84 LARGE_INTEGER permissions Standard UNIX permissions - 92 LARGE_INTEGER nlinks Number of hard links - 100 LARGE_INTEGER CreationTime Create/birth time - 108 ULONG FileFlags File flags enumeration - 112 ULONG FileFlagsMask Mask of valid flags -*/ - -/* Transact 2 Find First levels */ -#define SMB_FIND_FILE_UNIX 0x202 -#define SMB_FIND_FILE_UNIX_INFO2 0x20B /* UNIX File Info2 */ - -#define SMB_FILE_UNIX_INFO2_SIZE 116 - -/* - Info level for TRANS2_QFSINFO - returns version of CIFS UNIX extensions, plus - 64-bits worth of capability fun :-). - Use the same info level for TRANS2_SETFSINFO -*/ - -#define SMB_QUERY_CIFS_UNIX_INFO 0x200 -#define SMB_SET_CIFS_UNIX_INFO 0x200 - -/* Returns or sets the following. - - UINT16 major version number - UINT16 minor version number - LARGE_INTEGER capability bitfield - -*/ - -#define CIFS_UNIX_MAJOR_VERSION 1 -#define CIFS_UNIX_MINOR_VERSION 0 - -#define CIFS_UNIX_FCNTL_LOCKS_CAP 0x1 -#define CIFS_UNIX_POSIX_ACLS_CAP 0x2 -#define CIFS_UNIX_XATTTR_CAP 0x4 /* for support of other xattr - namespaces such as system, - security and trusted */ -#define CIFS_UNIX_EXTATTR_CAP 0x8 /* for support of chattr - (chflags) and lsattr */ -#define CIFS_UNIX_POSIX_PATHNAMES_CAP 0x10 /* Use POSIX pathnames on the wire. */ -#define CIFS_UNIX_POSIX_PATH_OPERATIONS_CAP 0x20 /* We can cope with POSIX open/mkdir/unlink etc. */ -#define CIFS_UNIX_LARGE_READ_CAP 0x40 /* We can cope with 24 bit reads in readX. */ -#define CIFS_UNIX_LARGE_WRITE_CAP 0x80 /* We can cope with 24 bit writes in writeX. */ -#define CIFS_UNIX_TRANSPORT_ENCRYPTION_CAP 0x100 /* We can do SPNEGO negotiations for encryption. */ -#define CIFS_UNIX_TRANSPORT_ENCRYPTION_MANDATORY_CAP 0x200 /* We *must* SPNEGO negotiations for encryption. */ - -#define SMB_QUERY_POSIX_FS_INFO 0x201 - -/* Returns FILE_SYSTEM_POSIX_INFO struct as follows - (NB For undefined values return -1 in that field) - le32 OptimalTransferSize; bsize on some os, iosize on other os, This - is a hint to the client about best size. Server - can return -1 if no preference, ie if SMB - negotiated size is adequate for optimal - read/write performance - le32 BlockSize; (often 512 bytes) NB: BlockSize * TotalBlocks = disk space - le64 TotalBlocks; redundant with other infolevels but easy to ret here - le64 BlocksAvail; although redundant, easy to return - le64 UserBlocksAvail; bavail - le64 TotalFileNodes; - le64 FreeFileNodes; - le64 FileSysIdentifier; fsid - (NB statfs field Namelen comes from FILE_SYSTEM_ATTRIBUTE_INFO call) - (NB statfs field flags can come from FILE_SYSTEM_DEVICE_INFO call) -*/ - -#define SMB_QUERY_POSIX_WHO_AM_I 0x202 /* QFS Info */ -/* returns: - __u32 flags; 0 = Authenticated user 1 = GUEST - __u32 mask; which flags bits server understands ie 0x0001 - __u64 unix_user_id; - __u64 unix_user_gid; - __u32 number_of_supplementary_gids; may be zero - __u32 number_of_sids; may be zero - __u32 length_of_sid_array; in bytes - may be zero - __u32 pad; reserved - MBZ - __u64 gid_array[0]; may be empty - __u8 * psid_list may be empty -*/ - -/* ... more as we think of them :-). */ - -/* SMB POSIX ACL definitions. */ -/* Wire format is (all little endian) : - -[2 bytes] - Version number. -[2 bytes] - Number of ACE entries to follow. -[2 bytes] - Number of default ACE entries to follow. -------------------------------------- -^ -| -ACE entries -| -v -------------------------------------- -^ -| -Default ACE entries -| -v -------------------------------------- - -Where an ACE entry looks like : - -[1 byte] - Entry type. - -Entry types are : - -ACL_USER_OBJ 0x01 -ACL_USER 0x02 -ACL_GROUP_OBJ 0x04 -ACL_GROUP 0x08 -ACL_MASK 0x10 -ACL_OTHER 0x20 - -[1 byte] - permissions (perm_t) - -perm_t types are : - -ACL_READ 0x04 -ACL_WRITE 0x02 -ACL_EXECUTE 0x01 - -[8 bytes] - uid/gid to apply this permission to. - -In the same format as the uid/gid fields in the other -UNIX extensions definitions. Use 0xFFFFFFFFFFFFFFFF for -the MASK and OTHER entry types. - -If the Number of ACE entries for either file or default ACE's -is set to 0xFFFF this means ignore this kind of ACE (and the -number of entries sent will be zero. - -*/ - -#define SMB_QUERY_POSIX_WHOAMI 0x202 - -enum smb_whoami_flags { - SMB_WHOAMI_GUEST = 0x1 /* Logged in as (or squashed to) guest */ -}; - -/* Mask of which WHOAMI bits are valid. This should make it easier for clients - * to cope with servers that have different sets of WHOAMI flags (as more get - * added). - */ -#define SMB_WHOAMI_MASK 0x00000001 - -/* - SMBWhoami - Query the user mapping performed by the server for the - connected tree. This is a subcommand of the TRANS2_QFSINFO. - - Returns: - 4 bytes unsigned - mapping flags (smb_whoami_flags) - 4 bytes unsigned - flags mask - - 8 bytes unsigned - primary UID - 8 bytes unsigned - primary GID - 4 bytes unsigned - number of supplementary GIDs - 4 bytes unsigned - number of SIDs - 4 bytes unsigned - SID list byte count - 4 bytes - pad / reserved (must be zero) - - 8 bytes unsigned[] - list of GIDs (may be empty) - struct dom_sid[] - list of SIDs (may be empty) -*/ - -/* - * The following trans2 is done between client and server - * as a FSINFO call to set up the encryption state for transport - * encryption. - * This is a subcommand of the TRANS2_QFSINFO. - * - * The request looks like : - * - * [data block] -> SPNEGO framed GSSAPI request. - * - * The reply looks like : - * - * [data block] -> SPNEGO framed GSSAPI reply - if error - * is NT_STATUS_OK then we're done, if it's - * NT_STATUS_MORE_PROCESSING_REQUIRED then the - * client needs to keep going. If it's an - * error it can be any NT_STATUS error. - * - */ - -#define SMB_REQUEST_TRANSPORT_ENCRYPTION 0x203 /* QFSINFO */ - - -/* The query/set info levels for POSIX ACLs. */ -#define SMB_QUERY_POSIX_ACL 0x204 -#define SMB_SET_POSIX_ACL 0x204 - -/* Current on the wire ACL version. */ -#define SMB_POSIX_ACL_VERSION 1 - -/* ACE entry type. */ -#define SMB_POSIX_ACL_USER_OBJ 0x01 -#define SMB_POSIX_ACL_USER 0x02 -#define SMB_POSIX_ACL_GROUP_OBJ 0x04 -#define SMB_POSIX_ACL_GROUP 0x08 -#define SMB_POSIX_ACL_MASK 0x10 -#define SMB_POSIX_ACL_OTHER 0x20 - -/* perm_t types. */ -#define SMB_POSIX_ACL_READ 0x04 -#define SMB_POSIX_ACL_WRITE 0x02 -#define SMB_POSIX_ACL_EXECUTE 0x01 - -#define SMB_POSIX_ACL_HEADER_SIZE 6 -#define SMB_POSIX_ACL_ENTRY_SIZE 10 - -#define SMB_POSIX_IGNORE_ACE_ENTRIES 0xFFFF - -/* Definition of data block of SMB_SET_POSIX_LOCK */ -/* - [2 bytes] lock_type - 0 = Read, 1 = Write, 2 = Unlock - [2 bytes] lock_flags - 1 = Wait (only valid for setlock) - [4 bytes] pid = locking context. - [8 bytes] start = unsigned 64 bits. - [8 bytes] length = unsigned 64 bits. -*/ - -#define POSIX_LOCK_TYPE_OFFSET 0 -#define POSIX_LOCK_FLAGS_OFFSET 2 -#define POSIX_LOCK_PID_OFFSET 4 -#define POSIX_LOCK_START_OFFSET 8 -#define POSIX_LOCK_LEN_OFFSET 16 -#define POSIX_LOCK_DATA_SIZE 24 - -#define POSIX_LOCK_FLAG_NOWAIT 0 -#define POSIX_LOCK_FLAG_WAIT 1 - -#define POSIX_LOCK_TYPE_READ 0 -#define POSIX_LOCK_TYPE_WRITE 1 -#define POSIX_LOCK_TYPE_UNLOCK 2 - -/* SMB_POSIX_PATH_OPEN "open_mode" definitions. */ -#define SMB_O_RDONLY 0x1 -#define SMB_O_WRONLY 0x2 -#define SMB_O_RDWR 0x4 - -#define SMB_ACCMODE 0x7 - -#define SMB_O_CREAT 0x10 -#define SMB_O_EXCL 0x20 -#define SMB_O_TRUNC 0x40 -#define SMB_O_APPEND 0x80 -#define SMB_O_SYNC 0x100 -#define SMB_O_DIRECTORY 0x200 -#define SMB_O_NOFOLLOW 0x400 -#define SMB_O_DIRECT 0x800 - -/* Definition of request data block for SMB_POSIX_PATH_OPEN */ -/* - [4 bytes] flags (as smb_ntcreate_Flags). - [4 bytes] open_mode - SMB_O_xxx flags above. - [8 bytes] mode_t (permissions) - same encoding as "Standard UNIX permissions" above in SMB_SET_FILE_UNIX_BASIC. - [2 bytes] ret_info_level - optimization. Info level to be returned. -*/ - -/* Definition of reply data block for SMB_POSIX_PATH_OPEN */ - -#define SMB_NO_INFO_LEVEL_RETURNED 0xFFFF - -/* - [2 bytes] - flags field. Identical to flags reply for oplock response field in SMBNTCreateX) - [2 bytes] - FID returned. - [4 bytes] - CreateAction (same as in NTCreateX response). - [2 bytes] - reply info level - as requested or 0xFFFF if not available. - [2 bytes] - padding (must be zero) - [n bytes] - info level reply - if available. -*/ - -/* Definition of request data block for SMB_POSIX_UNLINK */ -/* - [2 bytes] flags (defined below). -*/ - -#define SMB_POSIX_UNLINK_FILE_TARGET 0 -#define SMB_POSIX_UNLINK_DIRECTORY_TARGET 1 - #endif diff --git a/source3/include/util_tdb.h b/source3/include/util_tdb.h index 3bdb6977d8..f127cea1ea 100644 --- a/source3/include/util_tdb.h +++ b/source3/include/util_tdb.h @@ -20,16 +20,12 @@ #ifndef __TDBUTIL_H__ #define __TDBUTIL_H__ -#include <tdb.h> +#include "tdb_compat.h" #include <talloc.h> /* for tdb_wrap_open() */ #include "../libcli/util/ntstatus.h" /* for map_nt_error_from_tdb() */ #include "../../lib/util/util_tdb.h" -struct tdb_wrap { - struct tdb_context *tdb; -}; - int tdb_chainlock_with_timeout( struct tdb_context *tdb, TDB_DATA key, unsigned int timeout); int tdb_lock_bystring_with_timeout(struct tdb_context *tdb, const char *keyval, @@ -51,10 +47,6 @@ bool tdb_pack_append(TALLOC_CTX *mem_ctx, uint8 **buf, size_t *len, struct tdb_context *tdb_open_log(const char *name, int hash_size, int tdb_flags, int open_flags, mode_t mode); -struct tdb_wrap *tdb_wrap_open(TALLOC_CTX *mem_ctx, - const char *name, int hash_size, int tdb_flags, - int open_flags, mode_t mode); - NTSTATUS map_nt_error_from_tdb(enum TDB_ERROR err); int tdb_data_cmp(TDB_DATA t1, TDB_DATA t2); diff --git a/source3/include/vfs.h b/source3/include/vfs.h index 185bc7687c..5c7e4e52bc 100644 --- a/source3/include/vfs.h +++ b/source3/include/vfs.h @@ -134,7 +134,9 @@ to split out the two possible uses. JRA. */ /* Leave at 28 - not yet released. Add fdopendir. JRA. */ /* Leave at 28 - not yet released. Rename open function to open_fn. - gd */ -#define SMB_VFS_INTERFACE_VERSION 28 +/* Leave at 28 - not yet released. Make getwd function always return malloced memory. JRA. */ +/* Bump to version 29 - Samba 3.6.0 will ship with interface version 28. */ +#define SMB_VFS_INTERFACE_VERSION 29 /* All intercepted VFS operations must be declared as static functions inside module source @@ -250,7 +252,7 @@ struct vfs_fn_pointers { int (*fchown)(struct vfs_handle_struct *handle, struct files_struct *fsp, uid_t uid, gid_t gid); int (*lchown)(struct vfs_handle_struct *handle, const char *path, uid_t uid, gid_t gid); int (*chdir)(struct vfs_handle_struct *handle, const char *path); - char *(*getwd)(struct vfs_handle_struct *handle, char *buf); + char *(*getwd)(struct vfs_handle_struct *handle); int (*ntimes)(struct vfs_handle_struct *handle, const struct smb_filename *smb_fname, struct smb_file_time *ft); @@ -613,7 +615,7 @@ int smb_vfs_call_fchown(struct vfs_handle_struct *handle, int smb_vfs_call_lchown(struct vfs_handle_struct *handle, const char *path, uid_t uid, gid_t gid); int smb_vfs_call_chdir(struct vfs_handle_struct *handle, const char *path); -char *smb_vfs_call_getwd(struct vfs_handle_struct *handle, char *buf); +char *smb_vfs_call_getwd(struct vfs_handle_struct *handle); int smb_vfs_call_ntimes(struct vfs_handle_struct *handle, const struct smb_filename *smb_fname, struct smb_file_time *ft); diff --git a/source3/include/vfs_macros.h b/source3/include/vfs_macros.h index d04be9b5aa..c7686f1db5 100644 --- a/source3/include/vfs_macros.h +++ b/source3/include/vfs_macros.h @@ -239,10 +239,10 @@ #define SMB_VFS_NEXT_CHDIR(handle, path) \ smb_vfs_call_chdir((handle)->next, (path)) -#define SMB_VFS_GETWD(conn, buf) \ - smb_vfs_call_getwd((conn)->vfs_handles, (buf)) -#define SMB_VFS_NEXT_GETWD(handle, buf) \ - smb_vfs_call_getwd((handle)->next, (buf)) +#define SMB_VFS_GETWD(conn) \ + smb_vfs_call_getwd((conn)->vfs_handles) +#define SMB_VFS_NEXT_GETWD(handle) \ + smb_vfs_call_getwd((handle)->next) #define SMB_VFS_NTIMES(conn, path, ts) \ smb_vfs_call_ntimes((conn)->vfs_handles, (path), (ts)) @@ -364,9 +364,6 @@ #define SMB_VFS_NEXT_TRANSLATE_NAME(handle, name, direction, mem_ctx, mapped_name) \ smb_vfs_call_translate_name((handle)->next, (name), (direction), (mem_ctx), (mapped_name)) -#define SMB_VFS_NEXT_STRICT_UNLOCK(handle, fsp, plock) \ - smb_vfs_call_strict_unlock((handle)->next, (fsp), (plock)) - #define SMB_VFS_FGET_NT_ACL(fsp, security_info, ppdesc) \ smb_vfs_call_fget_nt_acl((fsp)->conn->vfs_handles, (fsp), (security_info), (ppdesc)) #define SMB_VFS_NEXT_FGET_NT_ACL(handle, fsp, security_info, ppdesc) \ |