summaryrefslogtreecommitdiff
path: root/source3/include
diff options
context:
space:
mode:
Diffstat (limited to 'source3/include')
-rw-r--r--source3/include/byteorder.h141
-rw-r--r--source3/include/charset.h16
-rw-r--r--source3/include/client.h43
-rw-r--r--source3/include/config.h.in115
-rw-r--r--source3/include/includes.h240
-rw-r--r--source3/include/local.h49
-rw-r--r--source3/include/nameserv.h8
-rw-r--r--source3/include/ntdomain.h214
-rw-r--r--source3/include/nterr.h11
-rw-r--r--source3/include/profile.h6
-rw-r--r--source3/include/proto.h3474
-rw-r--r--source3/include/rpc_dce.h74
-rw-r--r--source3/include/rpc_lsa.h123
-rw-r--r--source3/include/rpc_misc.h182
-rw-r--r--source3/include/rpc_netlogon.h324
-rw-r--r--source3/include/rpc_reg.h95
-rw-r--r--source3/include/rpc_samr.h977
-rw-r--r--source3/include/rpc_secdes.h7
-rw-r--r--source3/include/rpc_srvsvc.h193
-rw-r--r--source3/include/rpcclient.h54
-rw-r--r--source3/include/smb.h832
-rw-r--r--source3/include/trans2.h20
-rw-r--r--source3/include/version.h2
23 files changed, 2237 insertions, 4963 deletions
diff --git a/source3/include/byteorder.h b/source3/include/byteorder.h
index a3b1437dc2..59ae4979fd 100644
--- a/source3/include/byteorder.h
+++ b/source3/include/byteorder.h
@@ -19,6 +19,9 @@
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
+#ifndef _BYTEORDER_H
+#define _BYTEORDER_H
+
/*
This file implements macros for machine independent short and
int manipulation
@@ -80,9 +83,12 @@ SSVALS(buf,pos,val) - signed version of SSVAL()
SIVALS(buf,pos,val) - signed version of SIVAL()
RSVAL(buf,pos) - like SVAL() but for NMB byte ordering
+RSVALS(buf,pos) - like SVALS() but for NMB byte ordering
RIVAL(buf,pos) - like IVAL() but for NMB byte ordering
+RIVALS(buf,pos) - like IVALS() but for NMB byte ordering
RSSVAL(buf,pos,val) - like SSVAL() but for NMB ordering
RSIVAL(buf,pos,val) - like SIVAL() but for NMB ordering
+RSIVALS(buf,pos,val) - like SIVALS() but for NMB ordering
it also defines lots of intermediate macros, just ignore those :-)
@@ -91,28 +97,28 @@ it also defines lots of intermediate macros, just ignore those :-)
/* some switch macros that do both store and read to and from SMB buffers */
#define RW_PCVAL(read,inbuf,outbuf,len) \
- if (read) { PCVAL (inbuf,0,outbuf,len) } \
- else { PSCVAL(inbuf,0,outbuf,len) }
+ { if (read) { PCVAL (inbuf,0,outbuf,len); } \
+ else { PSCVAL(inbuf,0,outbuf,len); } }
-#define RW_PIVAL(read,inbuf,outbuf,len) \
- if (read) { PIVAL (inbuf,0,outbuf,len) } \
- else { PSIVAL(inbuf,0,outbuf,len) }
+#define RW_PIVAL(read,big_endian,inbuf,outbuf,len) \
+ { if (read) { if (big_endian) { RPIVAL(inbuf,0,outbuf,len); } else { PIVAL(inbuf,0,outbuf,len); } } \
+ else { if (big_endian) { RPSIVAL(inbuf,0,outbuf,len); } else { PSIVAL(inbuf,0,outbuf,len); } } }
-#define RW_PSVAL(read,inbuf,outbuf,len) \
- if (read) { PSVAL (inbuf,0,outbuf,len) } \
- else { PSSVAL(inbuf,0,outbuf,len) }
+#define RW_PSVAL(read,big_endian,inbuf,outbuf,len) \
+ { if (read) { if (big_endian) { RPSVAL(inbuf,0,outbuf,len); } else { PSVAL(inbuf,0,outbuf,len); } } \
+ else { if (big_endian) { RPSSVAL(inbuf,0,outbuf,len); } else { PSSVAL(inbuf,0,outbuf,len); } } }
#define RW_CVAL(read, inbuf, outbuf, offset) \
- if (read) (outbuf) = CVAL (inbuf,offset); \
- else SCVAL(inbuf,offset,outbuf);
+ { if (read) { (outbuf) = CVAL (inbuf,offset); } \
+ else { SCVAL(inbuf,offset,outbuf); } }
-#define RW_IVAL(read, inbuf, outbuf, offset) \
- if (read) (outbuf)= IVAL (inbuf,offset); \
- else SIVAL(inbuf,offset,outbuf);
+#define RW_IVAL(read, big_endian, inbuf, outbuf, offset) \
+ { if (read) { (outbuf) = ((big_endian) ? RIVAL(inbuf,offset) : IVAL (inbuf,offset)); } \
+ else { if (big_endian) { RSIVAL(inbuf,offset,outbuf); } else { SIVAL(inbuf,offset,outbuf); } } }
-#define RW_SVAL(read, inbuf, outbuf, offset) \
- if (read) (outbuf)= SVAL (inbuf,offset); \
- else SSVAL(inbuf,offset,outbuf);
+#define RW_SVAL(read, big_endian, inbuf, outbuf, offset) \
+ { if (read) { (outbuf) = ((big_endian) ? RSVAL(inbuf,offset) : SVAL (inbuf,offset)); } \
+ else { if (big_endian) { RSSVAL(inbuf,offset,outbuf); } else { SSVAL(inbuf,offset,outbuf); } } }
#undef CAREFUL_ALIGNMENT
@@ -144,7 +150,7 @@ it also defines lots of intermediate macros, just ignore those :-)
#define SSVALS(buf,pos,val) SSVALX((buf),(pos),((int16)(val)))
#define SIVALS(buf,pos,val) SIVALX((buf),(pos),((int32)(val)))
-#else
+#else /* CAREFUL_ALIGNMENT */
/* this handles things for architectures like the 386 that can handle
alignment errors */
@@ -154,32 +160,26 @@ it also defines lots of intermediate macros, just ignore those :-)
*/
/* get single value from an SMB buffer */
-#define SVAL(buf,pos) (*(const uint16 *)((const char *)(buf) + (pos)))
-#define IVAL(buf,pos) (*(const uint32 *)((const char *)(buf) + (pos)))
-#define SVALS(buf,pos) (*(const int16 *)((const char *)(buf) + (pos)))
-#define IVALS(buf,pos) (*(const int32 *)((const char *)(buf) + (pos)))
-
-#define SVALMOD(buf,pos) (*(uint16 *)((char *)(buf) + (pos)))
-#define IVALMOD(buf,pos) (*(uint32 *)((char *)(buf) + (pos)))
-#define SVALMODS(buf,pos) (*(int16 *)((char *)(buf) + (pos)))
-#define IVALMODS(buf,pos) (*(int32 *)((char *)(buf) + (pos)))
+#define SVAL(buf,pos) (*(uint16 *)((char *)(buf) + (pos)))
+#define IVAL(buf,pos) (*(uint32 *)((char *)(buf) + (pos)))
+#define SVALS(buf,pos) (*(int16 *)((char *)(buf) + (pos)))
+#define IVALS(buf,pos) (*(int32 *)((char *)(buf) + (pos)))
/* store single value in an SMB buffer */
-#define SSVAL(buf,pos,val) SVALMOD(buf,pos)=((uint16)(val))
-#define SIVAL(buf,pos,val) IVALMOD(buf,pos)=((uint32)(val))
-#define SSVALS(buf,pos,val) SVALMODS(buf,pos)=((int16)(val))
-#define SIVALS(buf,pos,val) IVALMODS(buf,pos)=((int32)(val))
-
-#endif
+#define SSVAL(buf,pos,val) SVAL(buf,pos)=((uint16)(val))
+#define SIVAL(buf,pos,val) IVAL(buf,pos)=((uint32)(val))
+#define SSVALS(buf,pos,val) SVALS(buf,pos)=((int16)(val))
+#define SIVALS(buf,pos,val) IVALS(buf,pos)=((int32)(val))
+#endif /* CAREFUL_ALIGNMENT */
/* macros for reading / writing arrays */
#define SMBMACRO(macro,buf,pos,val,len,size) \
-{ uint32 l; for (l = 0; l < (uint32)(len); l++) (val)[l] = macro((buf), (pos) + (size)*l); }
+{ int l; for (l = 0; l < (len); l++) (val)[l] = macro((buf), (pos) + (size)*l); }
#define SSMBMACRO(macro,buf,pos,val,len,size) \
-{ uint32 l; for (l = 0; l < (uint32)(len); l++) macro((buf), (pos) + (size)*l, (val)[l]); }
+{ int l; for (l = 0; l < (len); l++) macro((buf), (pos) + (size)*l, (val)[l]); }
/* reads multiple data from an SMB buffer */
#define PCVAL(buf,pos,val,len) SMBMACRO(CVAL,buf,pos,val,len,1)
@@ -203,46 +203,63 @@ it also defines lots of intermediate macros, just ignore those :-)
#define IREV(x) ((SREV(x)<<16) | (SREV((x)>>16)))
#define RSVAL(buf,pos) SREV(SVAL(buf,pos))
+#define RSVALS(buf,pos) SREV(SVALS(buf,pos))
#define RIVAL(buf,pos) IREV(IVAL(buf,pos))
+#define RIVALS(buf,pos) IREV(IVALS(buf,pos))
#define RSSVAL(buf,pos,val) SSVAL(buf,pos,SREV(val))
+#define RSSVALS(buf,pos,val) SSVALS(buf,pos,SREV(val))
#define RSIVAL(buf,pos,val) SIVAL(buf,pos,IREV(val))
+#define RSIVALS(buf,pos,val) SIVALS(buf,pos,IREV(val))
+
+/* reads multiple data from an SMB buffer (big-endian) */
+#define RPSVAL(buf,pos,val,len) SMBMACRO(RSVAL,buf,pos,val,len,2)
+#define RPIVAL(buf,pos,val,len) SMBMACRO(RIVAL,buf,pos,val,len,4)
+#define RPSVALS(buf,pos,val,len) SMBMACRO(RSVALS,buf,pos,val,len,2)
+#define RPIVALS(buf,pos,val,len) SMBMACRO(RIVALS,buf,pos,val,len,4)
+
+/* stores multiple data in an SMB buffer (big-endian) */
+#define RPSSVAL(buf,pos,val,len) SSMBMACRO(RSSVAL,buf,pos,val,len,2)
+#define RPSIVAL(buf,pos,val,len) SSMBMACRO(RSIVAL,buf,pos,val,len,4)
+#define RPSSVALS(buf,pos,val,len) SSMBMACRO(RSSVALS,buf,pos,val,len,2)
+#define RPSIVALS(buf,pos,val,len) SSMBMACRO(RSIVALS,buf,pos,val,len,4)
#define DBG_RW_PCVAL(charmode,string,depth,base,read,inbuf,outbuf,len) \
- RW_PCVAL(read,inbuf,outbuf,len) \
- DEBUG(10,("%s%04x %s: ", \
+ { RW_PCVAL(read,inbuf,outbuf,len) \
+ DEBUG(5,("%s%04x %s: ", \
tab_depth(depth), base,string)); \
- if (charmode) print_asc(10, (unsigned char*)(outbuf), (len)); else \
- { uint32 idx; for (idx = 0; idx < (uint32)(len); idx++) { DEBUGADD(10,("%02x ", (outbuf)[idx])); } } \
- DEBUG(10,("\n"));
+ if (charmode) print_asc(5, (unsigned char*)(outbuf), (len)); else \
+ { int idx; for (idx = 0; idx < len; idx++) { DEBUG(5,("%02x ", (outbuf)[idx])); } } \
+ DEBUG(5,("\n")); }
-#define DBG_RW_PSVAL(charmode,string,depth,base,read,inbuf,outbuf,len) \
- RW_PSVAL(read,inbuf,outbuf,len) \
- DEBUG(10,("%s%04x %s: ", \
+#define DBG_RW_PSVAL(charmode,string,depth,base,read,big_endian,inbuf,outbuf,len) \
+ { RW_PSVAL(read,big_endian,inbuf,outbuf,len) \
+ DEBUG(5,("%s%04x %s: ", \
tab_depth(depth), base,string)); \
- if (charmode) print_asc(10, (unsigned char*)(outbuf), 2*(len)); else \
- { uint32 idx; for (idx = 0; idx < (uint32)(len); idx++) { DEBUGADD(10,("%04x ", (outbuf)[idx])); } } \
- DEBUG(10,("\n"));
+ if (charmode) print_asc(5, (unsigned char*)(outbuf), 2*(len)); else \
+ { int idx; for (idx = 0; idx < len; idx++) { DEBUG(5,("%04x ", (outbuf)[idx])); } } \
+ DEBUG(5,("\n")); }
-#define DBG_RW_PIVAL(charmode,string,depth,base,read,inbuf,outbuf,len) \
- RW_PIVAL(read,inbuf,outbuf,len) \
- DEBUG(10,("%s%04x %s: ", \
+#define DBG_RW_PIVAL(charmode,string,depth,base,read,big_endian,inbuf,outbuf,len) \
+ { RW_PIVAL(read,big_endian,inbuf,outbuf,len) \
+ DEBUG(5,("%s%04x %s: ", \
tab_depth(depth), base,string)); \
- if (charmode) print_asc(10, (unsigned char*)(outbuf), 4*(len)); else \
- { uint32 idx; for (idx = 0; idx < (uint32)(len); idx++) { DEBUGADD(10,("%08x ", (outbuf)[idx])); } } \
- DEBUG(10,("\n"));
+ if (charmode) print_asc(5, (unsigned char*)(outbuf), 4*(len)); else \
+ { int idx; for (idx = 0; idx < len; idx++) { DEBUG(5,("%08x ", (outbuf)[idx])); } } \
+ DEBUG(5,("\n")); }
#define DBG_RW_CVAL(string,depth,base,read,inbuf,outbuf) \
- RW_CVAL(read,inbuf,outbuf,0) \
- DEBUG(10,("%s%04x %s: %02x\n", \
- tab_depth(depth), base, string, outbuf));
+ { RW_CVAL(read,inbuf,outbuf,0) \
+ DEBUG(5,("%s%04x %s: %02x\n", \
+ tab_depth(depth), base, string, outbuf)); }
-#define DBG_RW_SVAL(string,depth,base,read,inbuf,outbuf) \
- RW_SVAL(read,inbuf,outbuf,0) \
- DEBUG(10,("%s%04x %s: %04x\n", \
- tab_depth(depth), base, string, outbuf));
+#define DBG_RW_SVAL(string,depth,base,read,big_endian,inbuf,outbuf) \
+ { RW_SVAL(read,big_endian,inbuf,outbuf,0) \
+ DEBUG(5,("%s%04x %s: %04x\n", \
+ tab_depth(depth), base, string, outbuf)); }
-#define DBG_RW_IVAL(string,depth,base,read,inbuf,outbuf) \
- RW_IVAL(read,inbuf,outbuf,0) \
- DEBUG(10,("%s%04x %s: %08x\n", \
- tab_depth(depth), base, string, outbuf));
+#define DBG_RW_IVAL(string,depth,base,read,big_endian,inbuf,outbuf) \
+ { RW_IVAL(read,big_endian,inbuf,outbuf,0) \
+ DEBUG(5,("%s%04x %s: %08x\n", \
+ tab_depth(depth), base, string, outbuf)); }
+#endif /* _BYTEORDER_H */
diff --git a/source3/include/charset.h b/source3/include/charset.h
index b6f79c03dd..7c6fbe5509 100644
--- a/source3/include/charset.h
+++ b/source3/include/charset.h
@@ -1,3 +1,6 @@
+#ifndef _CHARSET_H
+#define _CHARSET_H
+
/*
Unix SMB/Netbios implementation.
Version 1.9.
@@ -73,3 +76,16 @@ extern void charset_initialise(void);
#define CODEPAGE_VERSION_OFFSET 0
#define CODEPAGE_CLIENT_CODEPAGE_OFFSET 2
#define CODEPAGE_LENGTH_OFFSET 4
+
+/* Version id for dynamically loadable unicode map files. */
+#define UNICODE_MAP_FILE_VERSION_ID 0x8001
+/* Version 0x80000001 unicode map file header size. */
+#define UNICODE_MAP_HEADER_SIZE 30
+#define UNICODE_MAP_CODEPAGE_ID_SIZE 20
+/* Offsets for unicode map file header entries. */
+#define UNICODE_MAP_VERSION_OFFSET 0
+#define UNICODE_MAP_CLIENT_CODEPAGE_OFFSET 2
+#define UNICODE_MAP_CP_TO_UNICODE_LENGTH_OFFSET 22
+#define UNICODE_MAP_UNICODE_TO_CP_LENGTH_OFFSET 26
+
+#endif /* _CHARSET_H */
diff --git a/source3/include/client.h b/source3/include/client.h
index 275f3b44da..15ba66e3e1 100644
--- a/source3/include/client.h
+++ b/source3/include/client.h
@@ -27,7 +27,7 @@
/* the client asks for a smaller buffer to save ram and also to get more
overlap on the wire. This size gives us a nice read/write size, which
will be a multiple of the page size on almost any system */
-#define CLI_BUFFER_SIZE (0x4400)
+#define CLI_BUFFER_SIZE (0xFFFF)
/*
* These definitions depend on smb.h
@@ -56,8 +56,22 @@ struct print_job_info
time_t t;
};
-struct cli_state
+struct pwd_info
{
+ BOOL null_pwd;
+ BOOL cleartext;
+ BOOL crypted;
+
+ fstring password;
+
+ uchar smb_lm_pwd[16];
+ uchar smb_nt_pwd[16];
+
+ uchar smb_lm_owf[24];
+ uchar smb_nt_owf[24];
+};
+
+struct cli_state {
int port;
int fd;
uint16 cnum;
@@ -69,11 +83,10 @@ struct cli_state
int rap_error;
int privileges;
- struct ntuser_creds usr;
- BOOL retry;
-
fstring eff_name;
fstring desthost;
+ fstring user_name;
+ fstring domain;
/*
* The following strings are the
@@ -88,23 +101,17 @@ struct cli_state
fstring dev;
struct nmb_name called;
struct nmb_name calling;
+ fstring full_dest_host_name;
struct in_addr dest_ip;
+ struct pwd_info pwd;
unsigned char cryptkey[8];
- unsigned char lm_cli_chal[8];
- unsigned char nt_cli_chal[128];
- size_t nt_cli_chal_len;
-
- BOOL use_ntlmv2;
- BOOL redirect;
- BOOL reuse;
-
uint32 sesskey;
int serverzone;
uint32 servertime;
int readbraw_supported;
int writebraw_supported;
- int timeout;
+ int timeout; /* in milliseconds. */
int max_xmit;
int max_mux;
char *outbuf;
@@ -119,16 +126,20 @@ struct cli_state
*/
uint32 nt_error; /* NT RPC error code. */
+ uint16 nt_pipe_fnum; /* Pipe handle. */
unsigned char sess_key[16]; /* Current session key. */
unsigned char ntlmssp_hash[258]; /* ntlmssp data. */
uint32 ntlmssp_cli_flgs; /* ntlmssp client flags */
uint32 ntlmssp_srv_flgs; /* ntlmssp server flags */
uint32 ntlmssp_seq_num; /* ntlmssp sequence number */
DOM_CRED clnt_cred; /* Client credential. */
+ fstring mach_acct; /* MYNAME$. */
+ fstring srv_name_slash; /* \\remote server. */
+ fstring clnt_name_slash; /* \\local client. */
uint16 max_xmit_frag;
uint16 max_recv_frag;
-};
-struct cli_connection;
+ BOOL use_oplocks; /* should we use oplocks? */
+};
#endif /* _CLIENT_H */
diff --git a/source3/include/config.h.in b/source3/include/config.h.in
index 5f0f4526d8..5858d303f5 100644
--- a/source3/include/config.h.in
+++ b/source3/include/config.h.in
@@ -18,6 +18,12 @@
/* Define to `int' if <sys/types.h> doesn't define. */
#undef gid_t
+/* Define if your system has a working fnmatch function. */
+#undef HAVE_FNMATCH
+
+/* Define if you have a working `mmap' system call. */
+#undef HAVE_MMAP
+
/* Define if your struct stat has st_rdev. */
#undef HAVE_ST_RDEV
@@ -30,6 +36,9 @@
/* Define to `int' if <sys/types.h> doesn't define. */
#undef mode_t
+/* Define if your C compiler doesn't accept -c and -o together. */
+#undef NO_MINUS_C_MINUS_O
+
/* Define to `long' if <sys/types.h> doesn't define. */
#undef off_t
@@ -55,6 +64,7 @@
byte first (like Motorola and SPARC, unlike Intel and VAX). */
#undef WORDS_BIGENDIAN
+#undef HAVE_VOLATILE
#undef HAVE_BROKEN_READDIR
#undef HAVE_ERRNO_DECL
#undef HAVE_LONGLONG
@@ -62,6 +72,7 @@
#undef HAVE_REMSH
#undef HAVE_UNSIGNED_CHAR
#undef HAVE_UTIMBUF
+#undef HAVE_SIG_ATOMIC_T_TYPE
#undef ssize_t
#undef ino_t
#undef ssize_t
@@ -79,19 +90,22 @@
#undef AIX
#undef BSD
#undef IRIX
+#undef IRIX6
#undef HPUX
#undef QNX
#undef SCO
#undef OSF1
#undef NEXT2
+#undef RELIANTUNIX
#undef HAVE_SHARED_MMAP
+#undef HAVE_MMAP
#undef HAVE_SYSV_IPC
#undef HAVE_FCNTL_LOCK
#undef HAVE_FTRUNCATE_EXTEND
+#undef FTRUNCATE_NEEDS_ROOT
#undef HAVE_TRAPDOOR_UID
#undef HAVE_ROOT
#undef HAVE_UNION_SEMUN
-#undef HAVE_NETMASK_IFCONF
#undef HAVE_GETTIMEOFDAY_TZ
#undef HAVE_SOCK_SIN_LEN
#undef STAT_READ_FILSYS
@@ -102,28 +116,27 @@
#undef STAT_STATFS4
#undef STAT_STATVFS
#undef STAT_STATVFS64
-#undef HAVE_NETMASK_IFREQ
-#undef HAVE_NETMASK_AIX
+#undef HAVE_IFACE_AIX
+#undef HAVE_IFACE_IFCONF
+#undef HAVE_IFACE_IFREQ
#undef HAVE_CRYPT
#undef HAVE_PUTPRPWNAM
#undef HAVE_SET_AUTH_PARAMETERS
-#undef WITH_MMAP
#undef WITH_SYSLOG
#undef WITH_PROFILE
#undef WITH_SSL
#undef WITH_LDAP
#undef WITH_NISPLUS
+#undef WITH_PAM
#undef WITH_NISPLUS_HOME
#undef WITH_AUTOMOUNT
#undef WITH_SMBMOUNT
-#undef HAVE_PAM_AUTHENTICATE
#undef HAVE_BROKEN_GETGROUPS
#undef REPLACE_GETPASS
#undef REPLACE_INET_NTOA
#undef HAVE_FILE_MACRO
#undef HAVE_FUNCTION_MACRO
#undef HAVE_SETRESUID_DECL
-#undef HAVE_CRYPT_DECL
#undef HAVE_SETRESUID
#undef WITH_NETATALK
#undef HAVE_INO64_T
@@ -132,7 +145,6 @@
#undef SIZEOF_OFF_T
#undef STAT_STATVFS64
#undef HAVE_LIBREADLINE
-#undef HAVE_READLINE_FCF_PROTO
#undef HAVE_KERNEL_OPLOCKS
#undef HAVE_IRIX_SPECIFIC_CAPABILITIES
#undef HAVE_INT16_FROM_RPC_RPC_H
@@ -140,11 +152,32 @@
#undef HAVE_INT32_FROM_RPC_RPC_H
#undef HAVE_UINT32_FROM_RPC_RPC_H
#undef KRB4_AUTH
+#undef KRB5_AUTH
#undef SEEKDIR_RETURNS_VOID
#undef HAVE_DIRENT_D_OFF
#undef HAVE_GETSPNAM
#undef HAVE_BIGCRYPT
#undef HAVE_GETPRPWNAM
+#undef HAVE_FSTAT64
+#undef HAVE_LSTAT64
+#undef HAVE_STAT64
+#undef HAVE_SETRESGID
+#undef HAVE_SETRESGID_DECL
+#undef HAVE_SHADOW_H
+#undef HAVE_MEMSET
+#undef HAVE_STRCASECMP
+#undef HAVE_STRUCT_DIRENT64
+#undef HAVE_TRUNCATED_SALT
+#undef BROKEN_NISPLUS_INCLUDE_FILES
+#undef HAVE_RPC_AUTH_ERROR_CONFLICT
+#undef HAVE_EXPLICIT_LARGEFILE_SUPPORT
+#undef USE_BOTH_CRYPT_CALLS
+#undef HAVE_BROKEN_FCNTL64_LOCKS
+#undef HAVE_FNMATCH
+#undef USE_SETEUID
+#undef USE_SETRESUID
+#undef USE_SETREUID
+#undef USE_SETUIDX
/* The number of bytes in a int. */
#undef SIZEOF_INT
@@ -404,12 +437,21 @@
/* Define if you have the execl function. */
#undef HAVE_EXECL
+/* Define if you have the fcvt function. */
+#undef HAVE_FCVT
+
+/* Define if you have the fcvtl function. */
+#undef HAVE_FCVTL
+
/* Define if you have the fopen64 function. */
#undef HAVE_FOPEN64
/* Define if you have the fseek64 function. */
#undef HAVE_FSEEK64
+/* Define if you have the fseeko64 function. */
+#undef HAVE_FSEEKO64
+
/* Define if you have the fstat function. */
#undef HAVE_FSTAT
@@ -422,6 +464,9 @@
/* Define if you have the ftell64 function. */
#undef HAVE_FTELL64
+/* Define if you have the ftello64 function. */
+#undef HAVE_FTELLO64
+
/* Define if you have the ftruncate function. */
#undef HAVE_FTRUNCATE
@@ -437,6 +482,9 @@
/* Define if you have the getdents function. */
#undef HAVE_GETDENTS
+/* Define if you have the getgrent function. */
+#undef HAVE_GETGRENT
+
/* Define if you have the getgrnam function. */
#undef HAVE_GETGRNAM
@@ -491,9 +539,6 @@
/* Define if you have the open64 function. */
#undef HAVE_OPEN64
-/* Define if you have the pam_authenticate function. */
-#undef HAVE_PAM_AUTHENTICATE
-
/* Define if you have the pathconf function. */
#undef HAVE_PATHCONF
@@ -539,6 +584,9 @@
/* Define if you have the setenv function. */
#undef HAVE_SETENV
+/* Define if you have the setgidx function. */
+#undef HAVE_SETGIDX
+
/* Define if you have the setgroups function. */
#undef HAVE_SETGROUPS
@@ -548,6 +596,9 @@
/* Define if you have the setnetgrent function. */
#undef HAVE_SETNETGRENT
+/* Define if you have the setpriv function. */
+#undef HAVE_SETPRIV
+
/* Define if you have the setsid function. */
#undef HAVE_SETSID
@@ -575,6 +626,9 @@
/* Define if you have the stat64 function. */
#undef HAVE_STAT64
+/* Define if you have the strcasecmp function. */
+#undef HAVE_STRCASECMP
+
/* Define if you have the strchr function. */
#undef HAVE_STRCHR
@@ -596,8 +650,8 @@
/* Define if you have the syscall function. */
#undef HAVE_SYSCALL
-/* Define if you have the tputs function. */
-#undef HAVE_TPUTS
+/* Define if you have the usleep function. */
+#undef HAVE_USLEEP
/* Define if you have the utime function. */
#undef HAVE_UTIME
@@ -614,6 +668,9 @@
/* Define if you have the yp_get_default_domain function. */
#undef HAVE_YP_GET_DEFAULT_DOMAIN
+/* Define if you have the <arpa/inet.h> header file. */
+#undef HAVE_ARPA_INET_H
+
/* Define if you have the <compat.h> header file. */
#undef HAVE_COMPAT_H
@@ -641,17 +698,20 @@
/* Define if you have the <memory.h> header file. */
#undef HAVE_MEMORY_H
-/* Define if you have the <mysql.h> header file. */
-#undef HAVE_MYSQL_H
-
/* Define if you have the <ndir.h> header file. */
#undef HAVE_NDIR_H
/* Define if you have the <net/if.h> header file. */
#undef HAVE_NET_IF_H
-/* Define if you have the <net/route.h> header file. */
-#undef HAVE_NET_ROUTE_H
+/* Define if you have the <netinet/in_ip.h> header file. */
+#undef HAVE_NETINET_IN_IP_H
+
+/* Define if you have the <netinet/in_systm.h> header file. */
+#undef HAVE_NETINET_IN_SYSTM_H
+
+/* Define if you have the <netinet/ip.h> header file. */
+#undef HAVE_NETINET_IP_H
/* Define if you have the <netinet/tcp.h> header file. */
#undef HAVE_NETINET_TCP_H
@@ -671,6 +731,9 @@
/* Define if you have the <rpc/rpc.h> header file. */
#undef HAVE_RPC_RPC_H
+/* Define if you have the <rpcsvc/nis.h> header file. */
+#undef HAVE_RPCSVC_NIS_H
+
/* Define if you have the <rpcsvc/yp_prot.h> header file. */
#undef HAVE_RPCSVC_YP_PROT_H
@@ -746,6 +809,9 @@
/* Define if you have the <sys/param.h> header file. */
#undef HAVE_SYS_PARAM_H
+/* Define if you have the <sys/priv.h> header file. */
+#undef HAVE_SYS_PRIV_H
+
/* Define if you have the <sys/resource.h> header file. */
#undef HAVE_SYS_RESOURCE_H
@@ -755,9 +821,6 @@
/* Define if you have the <sys/select.h> header file. */
#undef HAVE_SYS_SELECT_H
-/* Define if you have the <sys/un.h> header file. */
-#undef HAVE_SYS_UN_H
-
/* Define if you have the <sys/socket.h> header file. */
#undef HAVE_SYS_SOCKET_H
@@ -773,6 +836,9 @@
/* Define if you have the <sys/syscall.h> header file. */
#undef HAVE_SYS_SYSCALL_H
+/* Define if you have the <sys/termio.h> header file. */
+#undef HAVE_SYS_TERMIO_H
+
/* Define if you have the <sys/time.h> header file. */
#undef HAVE_SYS_TIME_H
@@ -788,6 +854,9 @@
/* Define if you have the <syscall.h> header file. */
#undef HAVE_SYSCALL_H
+/* Define if you have the <termio.h> header file. */
+#undef HAVE_TERMIO_H
+
/* Define if you have the <termios.h> header file. */
#undef HAVE_TERMIOS_H
@@ -797,9 +866,15 @@
/* Define if you have the <utime.h> header file. */
#undef HAVE_UTIME_H
+/* Define if you have the cups library (-lcups). */
+#undef HAVE_LIBCUPS
+
/* Define if you have the dl library (-ldl). */
#undef HAVE_LIBDL
+/* Define if you have the gen library (-lgen). */
+#undef HAVE_LIBGEN
+
/* Define if you have the inet library (-linet). */
#undef HAVE_LIBINET
diff --git a/source3/include/includes.h b/source3/include/includes.h
index ee3989d028..2a10badd73 100644
--- a/source3/include/includes.h
+++ b/source3/include/includes.h
@@ -45,16 +45,35 @@
#undef HAVE_TERMIOS_H
#endif
+#ifdef LINUX
+#define DEFAULT_PRINTING PRINT_BSD
+#define PRINTCAP_NAME "/etc/printcap"
+#endif
+
+#ifdef RELIANTUNIX
+/*
+ * <unistd.h> has to be included before any other to get
+ * large file support on Reliant UNIX
+ */
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#endif /* RELIANTUNIX */
+
+#ifdef HAVE_SYSV_IPC
+#define USE_SYSV_IPC
+#endif
-/* if we have both SYSV IPC and shared mmap then we need to
- choose. For most systems it is much faster to use SYSV IPC. We used
- to make an exception for Linux, but now Linux 2.2 has made it
- better to use sysv if possible */
-#if (defined(HAVE_SYSV_IPC) && defined(HAVE_SHARED_MMAP))
-# undef HAVE_SHARED_MMAP
+#ifdef HAVE_SHARED_MMAP
+#define USE_SHARED_MMAP
#endif
+/* if we have both SYSV IPC and shared mmap then we need to choose */
+#if (defined(USE_SYSV_IPC) && defined(USE_SHARED_MMAP))
+# undef USE_SHARED_MMAP
+#endif
+
#include <sys/types.h>
#ifdef TIME_WITH_SYS_TIME
@@ -79,11 +98,6 @@
#include <stdio.h>
#include <stddef.h>
-#include <netinet/in.h>
-#if defined(HAVE_RPC_RPC_H)
-#include <rpc/rpc.h>
-#endif
-
#ifdef HAVE_SYS_PARAM_H
#include <sys/param.h>
#endif
@@ -96,10 +110,6 @@
#include <sys/socket.h>
#endif
-#ifdef HAVE_SYS_UN_H
-#include <sys/un.h>
-#endif
-
#ifdef HAVE_SYS_SYSCALL_H
#include <sys/syscall.h>
#elif HAVE_SYSCALL_H
@@ -159,6 +169,9 @@
#ifdef HAVE_GRP_H
#include <grp.h>
#endif
+#ifdef HAVE_SYS_PRIV_H
+#include <sys/priv.h>
+#endif
#ifdef HAVE_SYS_ID_H
#include <sys/id.h>
#endif
@@ -193,6 +206,7 @@
#include <varargs.h>
#endif
+#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <syslog.h>
@@ -202,8 +216,32 @@
#include <netinet/tcp.h>
#endif
-#ifdef HAVE_TERMIOS_H
+/*
+ * The next three defines are needed to access the IPTOS_* options
+ * on some systems.
+ */
+
+#ifdef HAVE_NETINET_IN_SYSTM_H
+#include <netinet/in_systm.h>
+#endif
+
+#ifdef HAVE_NETINET_IN_IP_H
+#include <netinet/in_ip.h>
+#endif
+
+#ifdef HAVE_NETINET_IP_H
+#include <netinet/ip.h>
+#endif
+
+#if defined(HAVE_TERMIOS_H)
+/* POSIX terminal handling. */
#include <termios.h>
+#elif defined(HAVE_TERMIO_H)
+/* Older SYSV terminal handling - don't use if we can avoid it. */
+#include <termio.h>
+#elif defined(HAVE_SYS_TERMIO_H)
+/* Older SYSV terminal handling - don't use if we can avoid it. */
+#include <sys/termio.h>
#endif
#if HAVE_DIRENT_H
@@ -233,17 +271,6 @@
#include <sys/sem.h>
#endif
-#if 0
-/*
- * I have removed this as it prevents compilation under SCO Server
- * 3.2. If you need to add it back in then please add a comment as to
- * why it's needed and what OS it's needed for so we can work out how
- * to test for it properly (tridge) */
-#ifdef HAVE_NET_ROUTE_H
-#include <net/route.h>
-#endif
-#endif
-
#ifdef HAVE_NET_IF_H
#include <net/if.h>
#endif
@@ -314,6 +341,12 @@
#endif
#if defined(HAVE_RPC_RPC_H)
+/*
+ * Check for AUTH_ERROR define conflict with rpc/rpc.h in prot.h.
+ */
+#if defined(HAVE_SYS_SECURITY_H) && defined(HAVE_RPC_AUTH_ERROR_CONFLICT)
+#undef AUTH_ERROR
+#endif
#include <rpc/rpc.h>
#endif
@@ -330,12 +363,24 @@
#endif
#endif /* HAVE_NETGROUP */
-#if defined(HAVE_MYSQL_H)
-#include <mysql.h>
+/*
+ * Define VOLATILE if needed.
+ */
+
+#if defined(HAVE_VOLATILE)
+#define VOLATILE volatile
#else
-/* needed to get make proto to work with no <mysql.h> */
-#define MYSQL void
-#define MYSQL_ROW void
+#define VOLATILE
+#endif
+
+/*
+ * Define SIG_ATOMIC_T if needed.
+ */
+
+#if defined(HAVE_SIG_ATOMIC_T_TYPE)
+#define SIG_ATOMIC_T sig_atomic_t
+#else
+#define SIG_ATOMIC_T int
#endif
#ifndef uchar
@@ -420,7 +465,7 @@
*/
#ifndef SMB_INO_T
-# ifdef HAVE_INO64_T
+# if defined(HAVE_EXPLICIT_LARGEFILE_SUPPORT) && defined(HAVE_INO64_T)
# define SMB_INO_T ino64_t
# else
# define SMB_INO_T ino_t
@@ -428,7 +473,7 @@
#endif
#ifndef LARGE_SMB_INO_T
-# if defined(HAVE_INO64_T) || (defined(SIZEOF_INO_T) && (SIZEOF_INO_T == 8))
+# if (defined(HAVE_EXPLICIT_LARGEFILE_SUPPORT) && defined(HAVE_INO64_T)) || (defined(SIZEOF_INO_T) && (SIZEOF_INO_T == 8))
# define LARGE_SMB_INO_T 1
# endif
#endif
@@ -440,7 +485,7 @@
#endif
#ifndef SMB_OFF_T
-# ifdef HAVE_OFF64_T
+# if defined(HAVE_EXPLICIT_LARGEFILE_SUPPORT) && defined(HAVE_OFF64_T)
# define SMB_OFF_T off64_t
# else
# define SMB_OFF_T off_t
@@ -455,7 +500,7 @@
*/
#ifndef LARGE_SMB_OFF_T
-# if defined(HAVE_OFF64_T) || (defined(SIZEOF_OFF_T) && (SIZEOF_OFF_T == 8))
+# if (defined(HAVE_EXPLICIT_LARGEFILE_SUPPORT) && defined(HAVE_OFF64_T)) || (defined(SIZEOF_OFF_T) && (SIZEOF_OFF_T == 8))
# define LARGE_SMB_OFF_T 1
# endif
#endif
@@ -471,7 +516,7 @@
*/
#ifndef SMB_STRUCT_STAT
-# if defined(HAVE_STAT64) && defined(HAVE_OFF64_T)
+# if defined(HAVE_EXPLICIT_LARGEFILE_SUPPORT) && defined(HAVE_STAT64) && defined(HAVE_OFF64_T)
# define SMB_STRUCT_STAT struct stat64
# else
# define SMB_STRUCT_STAT struct stat
@@ -479,11 +524,23 @@
#endif
/*
+ * Type for dirent structure.
+ */
+
+#ifndef SMB_STRUCT_DIRENT
+# if defined(HAVE_EXPLICIT_LARGEFILE_SUPPORT) && defined(HAVE_STRUCT_DIRENT64)
+# define SMB_STRUCT_DIRENT struct dirent64
+# else
+# define SMB_STRUCT_DIRENT struct dirent
+# endif
+#endif
+
+/*
* Defines for 64 bit fcntl locks.
*/
#ifndef SMB_STRUCT_FLOCK
-# if defined(HAVE_STRUCT_FLOCK64) && defined(HAVE_OFF64_T)
+# if defined(HAVE_EXPLICIT_LARGEFILE_SUPPORT) && defined(HAVE_STRUCT_FLOCK64) && defined(HAVE_OFF64_T)
# define SMB_STRUCT_FLOCK struct flock64
# else
# define SMB_STRUCT_FLOCK struct flock
@@ -491,7 +548,7 @@
#endif
#ifndef SMB_F_SETLKW
-# if defined(HAVE_STRUCT_FLOCK64) && defined(HAVE_OFF64_T)
+# if defined(HAVE_EXPLICIT_LARGEFILE_SUPPORT) && defined(HAVE_STRUCT_FLOCK64) && defined(HAVE_OFF64_T)
# define SMB_F_SETLKW F_SETLKW64
# else
# define SMB_F_SETLKW F_SETLKW
@@ -499,7 +556,7 @@
#endif
#ifndef SMB_F_SETLK
-# if defined(HAVE_STRUCT_FLOCK64) && defined(HAVE_OFF64_T)
+# if defined(HAVE_EXPLICIT_LARGEFILE_SUPPORT) && defined(HAVE_STRUCT_FLOCK64) && defined(HAVE_OFF64_T)
# define SMB_F_SETLK F_SETLK64
# else
# define SMB_F_SETLK F_SETLK
@@ -507,7 +564,7 @@
#endif
#ifndef SMB_F_GETLK
-# if defined(HAVE_STRUCT_FLOCK64) && defined(HAVE_OFF64_T)
+# if defined(HAVE_EXPLICIT_LARGEFILE_SUPPORT) && defined(HAVE_STRUCT_FLOCK64) && defined(HAVE_OFF64_T)
# define SMB_F_GETLK F_GETLK64
# else
# define SMB_F_GETLK F_GETLK
@@ -517,9 +574,11 @@
#if defined(HAVE_LONGLONG)
#define SMB_BIG_UINT unsigned long long
#define SMB_BIG_INT long long
+#define SBIG_UINT(p, ofs, v) (SIVAL(p,ofs,(v)&0xFFFFFFFF), SIVAL(p,(ofs)+4,(v)>>32))
#else
#define SMB_BIG_UINT unsigned long
#define SMB_BIG_INT long
+#define SBIG_UINT(p, ofs, v) (SIVAL(p,ofs,v),SIVAL(p,(ofs)+4,0))
#endif
#ifndef MIN
@@ -555,11 +614,20 @@ extern int errno;
#include "ubi_sLinkList.h"
#include "ubi_dLinkList.h"
#include "dlinklist.h"
+#include "interfaces.h"
+
+#ifdef HAVE_FNMATCH
+#include <fnmatch.h>
+#else
+#include "fnmatch.h"
+#endif
#ifndef UBI_BINTREE_H
#include "ubi_Cache.h"
#endif /* UBI_BINTREE_H */
+#include "debugparse.h"
+
#include "version.h"
#include "smb.h"
#include "smbw.h"
@@ -583,9 +651,25 @@ extern int errno;
/***** automatically generated prototypes *****/
#include "proto.h"
-/* String routines */
+#ifdef strcpy
+#undef strcpy
+#endif /* strcpy */
+#define strcpy(dest,src) __ERROR__XX__NEVER_USE_STRCPY___;
+
+#ifdef strcat
+#undef strcat
+#endif /* strcat */
+#define strcat(dest,src) __ERROR__XX__NEVER_USE_STRCAT___;
+
+#ifdef sprintf
+#undef sprintf
+#endif /* sprintf */
+#define sprintf __ERROR__XX__NEVER_USE_SPRINTF__;
-#include "safe_string.h"
+#define pstrcpy(d,s) safe_strcpy((d),(s),sizeof(pstring)-1)
+#define pstrcat(d,s) safe_strcat((d),(s),sizeof(pstring)-1)
+#define fstrcpy(d,s) safe_strcpy((d),(s),sizeof(fstring)-1)
+#define fstrcat(d,s) safe_strcat((d),(s),sizeof(fstring)-1)
#ifdef __COMPAR_FN_T
#define QSORT_CAST (__compar_fn_t)
@@ -596,12 +680,15 @@ extern int errno;
#endif
/* this guess needs to be improved (tridge) */
-#if defined(STAT_STATVFS) && !defined(SYSV)
+#if (defined(STAT_STATVFS) || defined(STAT_STATVFS64)) && !defined(SYSV)
#define SYSV 1
#endif
#ifndef DEFAULT_PRINTING
-#ifdef SYSV
+#ifdef HAVE_LIBCUPS
+#define DEFAULT_PRINTING PRINT_CUPS
+#define PRINTCAP_NAME "cups"
+#elif defined(SYSV)
#define DEFAULT_PRINTING PRINT_SYSV
#define PRINTCAP_NAME "lpstat"
#else
@@ -638,17 +725,12 @@ union semun {
#if (!defined(WITH_NISPLUS) && !defined(WITH_LDAP))
#define USE_SMBPASS_DB 1
-#define USE_SMBUNIX_DB 1
#endif
#if defined(HAVE_PUTPRPWNAM) && defined(AUTH_CLEARTEXT_SEG_CHARS)
#define OSF1_ENH_SEC 1
#endif
-#if defined(HAVE_PAM_AUTHENTICATE) && defined(HAVE_SECURITY_PAM_APPL_H)
-#define HAVE_PAM 1
-#endif
-
#ifndef ALLOW_CHANGE_PASSWORD
#if (defined(HAVE_TERMIOS_H) && defined(HAVE_DUP2) && defined(HAVE_SETSID))
#define ALLOW_CHANGE_PASSWORD 1
@@ -673,10 +755,6 @@ union semun {
#define MAXPATHLEN 256
#endif
-#ifndef MAX_SERVER_POLICY_HANDLES
-#define MAX_SERVER_POLICY_HANDLES 64
-#endif
-
#ifndef SEEK_SET
#define SEEK_SET 0
#endif
@@ -697,14 +775,6 @@ union semun {
#define O_ACCMODE (O_RDONLY | O_WRONLY | O_RDWR)
#endif
-#ifndef SHM_R
-#define SHM_R (0400)
-#endif
-
-#ifndef SHM_W
-#define SHM_W (0200)
-#endif
-
#if defined(HAVE_CRYPT16) && defined(HAVE_GETAUTHUID)
#define ULTRIX_AUTH 1
#endif
@@ -725,14 +795,6 @@ union semun {
# undef HAVE_LIBREADLINE
# endif
# endif
-
-/* Some old versions of readline don't define a prototype for
- filename_completion_function() */
-
-# ifndef HAVE_READLINE_FCF_PROTO
-char *filename_completion_function(void);
-# endif
-
#endif
#ifndef HAVE_STRDUP
@@ -759,15 +821,16 @@ time_t mktime(struct tm *t);
int ftruncate(int f,long l);
#endif
-#if (defined(HAVE_SETRESUID) && !defined(HAVE_SETRESUID_DECL))
-/* stupid glibc */
-int setresuid(uid_t ruid, uid_t euid, uid_t suid);
-int setresgid(gid_t rgid, gid_t egid, gid_t sgid);
+#ifndef HAVE_STRTOUL
+unsigned long strtoul(const char *nptr, char **endptr, int base);
#endif
-#if (defined(HAVE_CRYPT) && !defined(HAVE_CRYPT_DECL) && !defined(KRB4_AUTH))
+#if (defined(USE_SETRESUID) && !defined(HAVE_SETRESUID_DECL))
/* stupid glibc */
-int crypt(const char *key, const char *salt);
+int setresuid(uid_t ruid, uid_t euid, uid_t suid);
+#endif
+#if (defined(USE_SETRESUID) && !defined(HAVE_SETRESGID_DECL))
+int setresgid(gid_t rgid, gid_t egid, gid_t sgid);
#endif
#if !defined(HAVE_BZERO) && defined(HAVE_MEMSET)
@@ -778,7 +841,32 @@ int crypt(const char *key, const char *salt);
#define getpass(prompt) getsmbpass((prompt))
#endif
+/*
+ * Some older systems seem not to have MAXHOSTNAMELEN
+ * defined.
+ */
+#ifndef MAXHOSTNAMELEN
+#define MAXHOSTNAMELEN 254
+#endif
+
/* yuck, I'd like a better way of doing this */
#define DIRP_SIZE (256 + 32)
+/*
+ * glibc on linux doesn't seem to have MSG_WAITALL
+ * defined. I think the kernel has it though..
+ */
+
+#ifndef MSG_WAITALL
+#define MSG_WAITALL 0
+#endif
+
+/* default socket options. Dave Miller thinks we should default to TCP_NODELAY
+ given the socket IO pattern that Samba uses */
+#ifdef TCP_NODELAY
+#define DEFAULT_SOCKET_OPTIONS "TCP_NODELAY"
+#else
+#define DEFAULT_SOCKET_OPTIONS ""
+#endif
+
#endif /* _INCLUDES_H */
diff --git a/source3/include/local.h b/source3/include/local.h
index e6e2fd4bad..961670f3a6 100644
--- a/source3/include/local.h
+++ b/source3/include/local.h
@@ -32,7 +32,15 @@
/* max number of directories open at once */
/* note that with the new directory code this no longer requires a
file handle per directory, but large numbers do use more memory */
-#define MAX_OPEN_DIRECTORIES 64
+#define MAX_OPEN_DIRECTORIES 256
+
+/* max number of directory handles */
+/* As this now uses the bitmap code this can be
+ quite large. */
+#define MAX_DIRECTORY_HANDLES 2048
+
+/* maximum number of file caches per smbd */
+#define MAX_WRITE_CACHES 10
/* define what facility to use for syslog */
#ifndef SYSLOG_FACILITY
@@ -98,12 +106,6 @@
#define GUEST_ACCOUNT "nobody"
#endif
-/* do you want smbd to send a 1 byte packet to nmbd to trigger it to start
- when smbd starts? */
-#ifndef PRIME_NMBD
-#define PRIME_NMBD 1
-#endif
-
/* the default pager to use for the client "more" command. Users can
override this with the PAGER environment variable */
#ifndef PAGER
@@ -121,16 +123,18 @@
/* the following control timings of various actions. Don't change
them unless you know what you are doing. These are all in seconds */
#define DEFAULT_SMBD_TIMEOUT (60*60*24*7)
-#define SMBD_RELOAD_CHECK (60)
+#define SMBD_RELOAD_CHECK (180)
#define IDLE_CLOSED_TIMEOUT (60)
#define DPTR_IDLE_TIMEOUT (120)
-#define SMBD_SELECT_LOOP (10)
+#define SMBD_SELECT_TIMEOUT (60)
+#define SMBD_SELECT_TIMEOUT_WITH_PENDING_LOCKS (10)
#define NMBD_SELECT_LOOP (10)
#define BROWSE_INTERVAL (60)
#define REGISTRATION_INTERVAL (10*60)
#define NMBD_INETD_TIMEOUT (120)
#define NMBD_MAX_TTL (24*60*60)
#define LPQ_LOCK_TIMEOUT (5)
+#define NMBD_INTERFACES_RELOAD (120)
/* the following are in milliseconds */
#define LOCK_RETRY_TIMEOUT (100)
@@ -146,17 +150,9 @@
/* shall we support browse requests via a FIFO to nmbd? */
#define ENABLE_FIFO 1
-/* how long to wait for a socket connect to happen */
-#define LONG_CONNECT_TIMEOUT 30
-#define SHORT_CONNECT_TIMEOUT 5
-
-/* default socket options. Dave Miller thinks we should default to TCP_NODELAY
- given the socket IO pattern that Samba uses*/
-#ifdef TCP_NODELAY
-#define DEFAULT_SOCKET_OPTIONS "TCP_NODELAY"
-#else
-#define DEFAULT_SOCKET_OPTIONS ""
-#endif
+/* how long (in miliseconds) to wait for a socket connect to happen */
+#define LONG_CONNECT_TIMEOUT 30000
+#define SHORT_CONNECT_TIMEOUT 5000
/* the default netbios keepalive timeout */
#define DEFAULT_KEEPALIVE 300
@@ -169,10 +165,6 @@
#define OPLOCK_BREAK_TIMEOUT 30
-/* how many times do we try to resend the oplock break request - useful
- for buggy MS clients */
-#define OPLOCK_BREAK_RESENDS 3
-
/* Timout (in seconds) to add to the oplock break timeout
to wait for the smbd to smbd message to return. */
@@ -185,4 +177,13 @@
/* name of directory that netatalk uses to store macintosh resource forks */
#define APPLEDOUBLE ".AppleDouble/"
+/*
+ * Default passwd chat script.
+ */
+
+#define DEFAULT_PASSWD_CHAT "*new*password* %n\\n *new*password* %n\\n *changed*"
+
+/* Minimum length of allowed password when changing UNIX password. */
+#define MINPASSWDLENGTH 5
+
#endif
diff --git a/source3/include/nameserv.h b/source3/include/nameserv.h
index 0de00f3636..3473c74a56 100644
--- a/source3/include/nameserv.h
+++ b/source3/include/nameserv.h
@@ -142,7 +142,7 @@ enum netbios_reply_type_code { NMB_QUERY, NMB_STATUS, NMB_REG, NMB_REG_REFRESH,
enum name_source {LMHOSTS_NAME, REGISTER_NAME, SELF_NAME, DNS_NAME,
DNSFAIL_NAME, PERMANENT_NAME, WINS_PROXY_NAME};
enum node_type {B_NODE=0, P_NODE=1, M_NODE=2, NBDD_NODE=3};
-enum packet_type {NMB_PACKET, DGRAM_PACKET, NMB_SOCK_PACKET, DGRAM_SOCK_PACKET };
+enum packet_type {NMB_PACKET, DGRAM_PACKET};
enum master_state
{
@@ -501,7 +501,6 @@ struct packet_struct
#define QUERYFORPDC_R 12 /* Response to Query for PDC. */
#define SAMLOGON 18
#define SAMLOGON_R 19
-#define SAMLOGON_UNK_R 21
/* Ids for netbios packet types. */
@@ -547,11 +546,6 @@ struct packet_struct
affects non-permanent self names (in seconds) */
#define MAX_REFRESH_TIME (60*20)
-/* Types of machine we can announce as. */
-#define ANNOUNCE_AS_NT 1
-#define ANNOUNCE_AS_WIN95 2
-#define ANNOUNCE_AS_WFW 3
-
/* Macro's to enumerate subnets either with or without
the UNICAST subnet. */
diff --git a/source3/include/ntdomain.h b/source3/include/ntdomain.h
index 096e7cd66c..d066ef3e36 100644
--- a/source3/include/ntdomain.h
+++ b/source3/include/ntdomain.h
@@ -40,70 +40,37 @@
#include "rpc_reg.h"
#include "rpc_samr.h"
#include "rpc_srvsvc.h"
-#include "rpc_svcctl.h"
#include "rpc_wkssvc.h"
-#include "rpc_brs.h"
-#include "rpc_atsvc.h"
-#include "rpc_spoolss.h"
-#include "rpc_eventlog.h"
/*
* A bunch of stuff that was put into smb.h
* in the NTDOM branch - it didn't belong there.
*/
-typedef struct
+typedef struct _prs_struct
{
- struct mem_buf *data; /* memory buffer */
- uint32 offset; /* offset currently being accessed in memory buffer */
- uint8 align; /* data alignment */
BOOL io; /* parsing in or out of data stream */
- BOOL error; /* error occurred */
-
+ /*
+ * If the (incoming) data is big-endian. On output we are
+ * always little-endian.
+ */
+ BOOL bigendian_data;
+ uint8 align; /* data alignment */
+ BOOL is_dynamic; /* Do we own this memory or not ? */
+ uint32 data_offset; /* Current working offset into data. */
+ uint32 buffer_size; /* Current size of the buffer. */
+ char *data_p; /* The buffer itself. */
} prs_struct;
-typedef struct rpcsrv_struct
-{
- prs_struct rhdr; /* output header */
- prs_struct rfault; /* fault */
- prs_struct rdata; /* output data */
- prs_struct rdata_i; /* output data (intermediate, for fragments) */
- prs_struct rauth; /* output authentication verifier */
- prs_struct rverf; /* output verifier */
- prs_struct rntlm; /* output ntlmssp */
-
- RPC_HDR hdr;
- RPC_HDR_BA hdr_ba;
- RPC_HDR_RB hdr_rb;
- RPC_HDR_REQ hdr_req;
- RPC_HDR_RESP hdr_resp;
- RPC_HDR_FAULT hdr_fault;
- RPC_HDR_AUTH auth_info;
- RPC_HDR_AUTHA autha_info;
-
- RPC_AUTH_NTLMSSP_VERIFIER auth_verifier;
- RPC_AUTH_NTLMSSP_NEG ntlmssp_neg;
- RPC_AUTH_NTLMSSP_CHAL ntlmssp_chal;
- RPC_AUTH_NTLMSSP_RESP ntlmssp_resp;
- RPC_AUTH_NTLMSSP_CHK ntlmssp_chk;
-
- BOOL ntlmssp_auth;
- BOOL ntlmssp_validated;
- unsigned char ntlmssp_hash[258];
- uint32 ntlmssp_seq_num;
- fstring user_name;
- fstring domain;
- fstring wks;
-
- uchar user_sess_key[16];
+/*
+ * Defines for io member of prs_struct.
+ */
- /* per-user authentication info. hmm, this not appropriate, but
- it will do for now. dcinfo contains NETLOGON-specific info,
- so have to think of a better method.
- */
- struct dcinfo dc;
+#define MARSHALL 0
+#define UNMARSHALL 1
-} rpcsrv_struct;
+#define MARSHALLING(ps) (!(ps)->io)
+#define UNMARSHALLING(ps) ((ps)->io)
typedef struct pipes_struct
{
@@ -117,120 +84,73 @@ typedef struct pipes_struct
fstring name;
fstring pipe_srv_name;
- /* remote, server-side rpc redirection */
- struct msrpc_state *m;
+ RPC_HDR hdr; /* Incoming RPC header. */
+ RPC_HDR_REQ hdr_req; /* Incoming request header. */
+
+ uint32 ntlmssp_chal_flags; /* Client challenge flags. */
+ BOOL ntlmssp_auth_requested; /* If the client wanted authenticated rpc. */
+ BOOL ntlmssp_auth_validated; /* If the client *got* authenticated rpc. */
+ unsigned char challenge[8];
+ unsigned char ntlmssp_hash[258];
+ uint32 ntlmssp_seq_num;
+
+ /*
+ * Windows user info.
+ */
+ fstring user_name;
+ fstring domain;
+ fstring wks;
+
+ /*
+ * Unix user name and credentials.
+ */
+ fstring unix_user_name;
+ uid_t uid;
+ gid_t gid;
+
+ /*
+ * Raw RPC output data. This does not include RPC headers or footers.
+ */
+ prs_struct rdata;
+
+ /* The amount of data sent from the current rdata struct. */
+ uint32 data_sent_length;
- /* local, server-side rpc state processing */
- rpcsrv_struct *l;
+ /*
+ * The current PDU being returned. This inclues
+ * headers, data and authentication footer.
+ */
+ unsigned char current_pdu[MAX_PDU_FRAG_LEN];
- /* to store pdus being constructed / communicated from smb to msrpc */
- prs_struct smb_pdu;
- prs_struct rsmb_pdu;
+ /* The amount of data in the current_pdu buffer. */
+ uint32 current_pdu_len;
- /* state-based info used in processing smbs to/from msrpc pdus */
- uint32 file_offset;
- uint32 prev_pdu_file_offset;
- uint32 hdr_offsets;
+ /* The amount of data sent from the current PDU. */
+ uint32 current_pdu_sent;
+ /* When replying to an SMBtrans, this is the maximum amount of
+ data that can be sent in the initial reply. */
+ int max_trans_reply;
} pipes_struct;
struct api_struct
{
char *name;
uint8 opnum;
- void (*fn) (rpcsrv_struct*, prs_struct*, prs_struct*);
+ BOOL (*fn) (uint16 vuid, prs_struct*, prs_struct*);
};
-struct mem_desc
-{
- /* array memory offsets */
- uint32 start;
- uint32 end;
-};
-
-struct mem_buf
+typedef struct
{
- BOOL dynamic; /* True iff data has been dynamically allocated
- (and therefore can be freed) */
- char *data;
- uint32 data_size;
- uint32 data_used;
-
- uint32 margin; /* safety margin when reallocing. */
- /* this can be abused quite nicely */
- uint8 align; /* alignment of data structures (smb, dce/rpc, udp etc) */
+ uint32 rid;
+ char *name;
- struct mem_desc offset;
-
- struct mem_buf *next;
-};
+} rid_name;
struct acct_info
{
fstring acct_name; /* account name */
- fstring acct_desc; /* account description */
- uint32 rid; /* domain-relative RID */
+ uint32 smb_userid; /* domain-relative RID */
};
-/*
- * higher order functions for use with msrpc client code
- */
-
-#define ALIAS_FN(fn)\
- void (*fn)(const char*, const DOM_SID*, uint32, const char*)
-#define ALIAS_INFO_FN(fn)\
- void (*fn)(const char*, const DOM_SID*, uint32, ALIAS_INFO_CTR *const)
-#define ALIAS_MEM_FN(fn)\
- void(*fn)(const char*, const DOM_SID*, uint32, const char*,\
- uint32, DOM_SID *const *const, char *const *const,\
- uint8*const)
-
-#define GROUP_FN(fn)\
- void (*fn)(const char*, const DOM_SID*, uint32, const char*)
-#define GROUP_INFO_FN(fn)\
- void (*fn)(const char*, const DOM_SID*, uint32, GROUP_INFO_CTR *const)
-#define GROUP_MEM_FN(fn)\
- void(*fn)(const char*, const DOM_SID*, uint32, const char*,\
- uint32, const uint32*, char *const *const,\
- uint32*const)
-
-#define DOMAIN_FN(fn)\
- void (*fn)(const char*)
-#define DOMAIN_INFO_FN(fn)\
- void (*fn)(const char*, const DOM_SID *, uint32, SAM_UNK_CTR *)
-
-#define USER_FN(fn)\
- void (*fn)(const char*, const DOM_SID*, uint32, const char*)
-#define USER_INFO_FN(fn)\
- void (*fn)(const char*, const DOM_SID*, uint32,\
- SAM_USER_INFO_21 *const)
-#define USER_MEM_FN(fn)\
- void (*fn)(const char*, const DOM_SID*, uint32, const char*,\
- uint32, const uint32*, char *const *const, uint32* const)
-
-#define DISP_FN(fn)\
- void (*fn)(const char*, const DOM_SID*, uint16, uint32, \
- SAM_DISPINFO_CTR *)
-
-#define REG_FN(fn)\
- void (*fn)(int, const char *, int)
-#define REG_KEY_FN(fn)\
- void (*fn)(const char*, const char*, time_t)
-#define REG_VAL_FN(fn)\
- void (*fn)(const char *, const char*, uint32, const BUFFER2 *)
-
-#define SVC_QUERY_FN(fn)\
- void (*fn)(const QUERY_SERVICE_CONFIG *)
-#define SVC_INFO_FN(fn)\
- void (*fn)(const ENUM_SRVC_STATUS *)
-
-#define TPRT_INFO_FN(fn)\
- void (*fn)(const SRV_TPRT_INFO_CTR *)
-
-#define PRINT_INFO_FN(fn)\
- void (*fn)(const char*, uint32, uint32, void *const *const)
-#define JOB_INFO_FN(fn)\
- void (*fn)(const char*, const char*, uint32, uint32, void *const *const)
-
#endif /* _NT_DOMAIN_H */
-
diff --git a/source3/include/nterr.h b/source3/include/nterr.h
index 86c049495c..a94464a013 100644
--- a/source3/include/nterr.h
+++ b/source3/include/nterr.h
@@ -1,12 +1,3 @@
-/* Win32 Status codes. */
-
-#define STATUS_BUFFER_OVERFLOW (5)
-#define STATUS_MORE_ENTRIES (0x105)
-#define ERROR_INVALID_HANDLE (6)
-#define ERROR_INVALID_PARAMETER (87)
-#define ERROR_INSUFFICIENT_BUFFER (122)
-
-
/* these are the NT error codes less than 1000. They are here for when
we start supporting NT error codes in Samba. They were extracted
using a loop in smbclient then printing a netmon sniff to a file */
@@ -16,6 +7,7 @@
#define NT_STATUS_INVALID_INFO_CLASS (3)
#define NT_STATUS_INFO_LENGTH_MISMATCH (4)
#define NT_STATUS_ACCESS_VIOLATION (5)
+#define STATUS_BUFFER_OVERFLOW (5)
#define NT_STATUS_IN_PAGE_ERROR (6)
#define NT_STATUS_PAGEFILE_QUOTA (7)
#define NT_STATUS_INVALID_HANDLE (8)
@@ -513,4 +505,3 @@
#define NT_STATUS_QUOTA_LIST_INCONSISTENT (614)
#define NT_STATUS_FILE_IS_OFFLINE (615)
#define NT_STATUS_NOTIFY_ENUM_DIR (0x10C)
-#define NT_STATUS_NO_SUCH_JOB (0xEDE) /* scheduler */
diff --git a/source3/include/profile.h b/source3/include/profile.h
index 353f6a6b42..0924dc2937 100644
--- a/source3/include/profile.h
+++ b/source3/include/profile.h
@@ -23,7 +23,13 @@
/* this file defines the profile structure in the profile shared
memory area */
+#define PROF_SHMEM_KEY ((key_t)0x07021999)
+#define PROF_SHM_MAGIC 0x6349985
+#define PROF_SHM_VERSION 1
+
struct profile_struct {
+ int prof_shm_magic;
+ int prof_shm_version;
unsigned smb_count; /* how many SMB packets we have processed */
unsigned uid_changes; /* how many times we change our effective uid */
};
diff --git a/source3/include/proto.h b/source3/include/proto.h
index 3c37085160..25d95323bc 100644
--- a/source3/include/proto.h
+++ b/source3/include/proto.h
@@ -3,15 +3,10 @@
/* This file is automatically generated with "make proto". DO NOT EDIT */
-/*The following definitions come from browserd/browserd.c */
-
-void msrpc_service_init(void);
-BOOL reload_services(BOOL test);
-
/*The following definitions come from client/client.c */
void do_list(const char *mask,uint16 attribute,void (*fn)(file_info *),BOOL rec, BOOL dirs);
-struct cli_state *do_connect(char *server, char *share, int smb_port);
+struct cli_state *do_connect(char *server, char *share);
/*The following definitions come from client/clitar.c */
@@ -22,121 +17,6 @@ void cmd_tar(void);
int process_tar(void);
int tar_parseargs(int argc, char *argv[], char *Optarg, int Optind);
-/*The following definitions come from groupdb/aliasdb.c */
-
-BOOL initialise_alias_db(void);
-LOCAL_GRP *iterate_getaliasgid(gid_t gid, LOCAL_GRP_MEMBER **mem, int *num_mem);
-LOCAL_GRP *iterate_getaliasrid(uint32 rid, LOCAL_GRP_MEMBER **mem, int *num_mem);
-LOCAL_GRP *iterate_getaliasntnam(const char *name, LOCAL_GRP_MEMBER **mem, int *num_mem);
-BOOL add_domain_alias(LOCAL_GRP **alss, int *num_alss, LOCAL_GRP *als);
-BOOL iterate_getuseraliasntnam(const char *user_name, LOCAL_GRP **alss, int *num_alss);
-BOOL enumdomaliases(LOCAL_GRP **alss, int *num_alss);
-void *startaliasent(BOOL update);
-void endaliasent(void *vp);
-LOCAL_GRP *getaliasent(void *vp, LOCAL_GRP_MEMBER **mem, int *num_mem);
-BOOL add_alias_entry(LOCAL_GRP *newgrp);
-BOOL mod_alias_entry(LOCAL_GRP* als);
-BOOL del_alias_entry(uint32 rid);
-BOOL add_alias_member(uint32 rid, DOM_SID *member_sid);
-BOOL del_alias_member(uint32 rid, DOM_SID *member_sid);
-LOCAL_GRP *getaliasntnam(const char *name, LOCAL_GRP_MEMBER **mem, int *num_mem);
-LOCAL_GRP *getaliasrid(uint32 alias_rid, LOCAL_GRP_MEMBER **mem, int *num_mem);
-LOCAL_GRP *getaliasgid(gid_t gid, LOCAL_GRP_MEMBER **mem, int *num_mem);
-BOOL getuseraliasntnam(const char *user_name, LOCAL_GRP **als, int *num_alss);
-void aldb_init_als(LOCAL_GRP *als);
-BOOL make_alias_line(char *p, int max_len,
- LOCAL_GRP *als,
- LOCAL_GRP_MEMBER **mem, int *num_mem);
-
-/*The following definitions come from groupdb/aliasfile.c */
-
-struct aliasdb_ops *file_initialise_alias_db(void);
-
-/*The following definitions come from groupdb/aliasldap.c */
-
-struct aliasdb_ops *ldap_initialise_alias_db(void);
-
-/*The following definitions come from groupdb/aliasunix.c */
-
-BOOL get_unixalias_members(struct group *grp,
- int *num_mem, LOCAL_GRP_MEMBER **members);
-struct aliasdb_ops *unix_initialise_alias_db(void);
-
-/*The following definitions come from groupdb/builtindb.c */
-
-BOOL initialise_builtin_db(void);
-LOCAL_GRP *iterate_getbuiltingid(gid_t gid, LOCAL_GRP_MEMBER **mem, int *num_mem);
-LOCAL_GRP *iterate_getbuiltinrid(uint32 rid, LOCAL_GRP_MEMBER **mem, int *num_mem);
-LOCAL_GRP *iterate_getbuiltinntnam(const char *name, LOCAL_GRP_MEMBER **mem, int *num_mem);
-BOOL add_domain_builtin(LOCAL_GRP **blts, int *num_blts, LOCAL_GRP *blt);
-BOOL iterate_getuserbuiltinntnam(const char *user_name, LOCAL_GRP **blts, int *num_blts);
-BOOL enumdombuiltins(LOCAL_GRP **blts, int *num_blts);
-void *startbuiltinent(BOOL update);
-void endbuiltinent(void *vp);
-LOCAL_GRP *getbuiltinent(void *vp, LOCAL_GRP_MEMBER **mem, int *num_mem);
-BOOL add_builtin_entry(LOCAL_GRP *newblt);
-BOOL mod_builtin_entry(LOCAL_GRP* blt);
-BOOL add_builtin_member(uint32 rid, DOM_SID *member_sid);
-BOOL del_builtin_member(uint32 rid, DOM_SID *member_sid);
-LOCAL_GRP *getbuiltinntnam(const char *name, LOCAL_GRP_MEMBER **mem, int *num_mem);
-LOCAL_GRP *getbuiltinrid(uint32 builtin_rid, LOCAL_GRP_MEMBER **mem, int *num_mem);
-LOCAL_GRP *getbuiltingid(gid_t gid, LOCAL_GRP_MEMBER **mem, int *num_mem);
-BOOL getuserbuiltinntnam(const char *user_name, LOCAL_GRP **blt, int *num_blts);
-void bidb_init_blt(LOCAL_GRP *blt);
-BOOL make_builtin_line(char *p, int max_len,
- LOCAL_GRP *blt,
- LOCAL_GRP_MEMBER **mem, int *num_mem);
-
-/*The following definitions come from groupdb/builtinldap.c */
-
-struct aliasdb_ops *ldap_initialise_builtin_db(void);
-
-/*The following definitions come from groupdb/builtinunix.c */
-
-BOOL get_unixbuiltin_members(struct group *grp,
- int *num_mem, LOCAL_GRP_MEMBER **members);
-struct aliasdb_ops *unix_initialise_builtin_db(void);
-
-/*The following definitions come from groupdb/groupdb.c */
-
-BOOL initialise_group_db(void);
-DOMAIN_GRP *iterate_getgroupgid(gid_t gid, DOMAIN_GRP_MEMBER **mem, int *num_mem);
-DOMAIN_GRP *iterate_getgrouprid(uint32 rid, DOMAIN_GRP_MEMBER **mem, int *num_mem);
-DOMAIN_GRP *iterate_getgroupntnam(const char *name, DOMAIN_GRP_MEMBER **mem, int *num_mem);
-BOOL add_domain_group(DOMAIN_GRP **grps, int *num_grps, DOMAIN_GRP *grp);
-BOOL iterate_getusergroupsnam(const char *user_name, DOMAIN_GRP **grps, int *num_grps);
-BOOL enumdomgroups(DOMAIN_GRP **grps, int *num_grps);
-void *startgroupent(BOOL update);
-void endgroupent(void *vp);
-DOMAIN_GRP *getgroupent(void *vp, DOMAIN_GRP_MEMBER **mem, int *num_mem);
-BOOL add_group_entry(DOMAIN_GRP *newgrp);
-BOOL del_group_entry(uint32 rid);
-BOOL mod_group_entry(DOMAIN_GRP* grp);
-BOOL add_group_member(uint32 rid, uint32 member_rid);
-BOOL del_group_member(uint32 rid, uint32 member_rid);
-DOMAIN_GRP *getgroupntnam(const char *name, DOMAIN_GRP_MEMBER **mem, int *num_mem);
-DOMAIN_GRP *getgrouprid(uint32 group_rid, DOMAIN_GRP_MEMBER **mem, int *num_mem);
-DOMAIN_GRP *getgroupgid(gid_t gid, DOMAIN_GRP_MEMBER **mem, int *num_mem);
-BOOL getusergroupsntnam(const char *user_name, DOMAIN_GRP **grp, int *num_grps);
-void gpdb_init_grp(DOMAIN_GRP *grp);
-BOOL make_group_line(char *p, int max_len,
- DOMAIN_GRP *grp,
- DOMAIN_GRP_MEMBER **mem, int *num_mem);
-
-/*The following definitions come from groupdb/groupfile.c */
-
-struct groupdb_ops *file_initialise_group_db(void);
-
-/*The following definitions come from groupdb/groupldap.c */
-
-struct groupdb_ops *ldap_initialise_group_db(void);
-
-/*The following definitions come from groupdb/groupunix.c */
-
-BOOL get_unixgroup_members(struct group *grp,
- int *num_mem, DOMAIN_GRP_MEMBER **members);
-struct groupdb_ops *unix_initialise_group_db(void);
-
/*The following definitions come from lib/access.c */
BOOL allow_access(char *deny_list,char *allow_list,
@@ -155,7 +35,7 @@ int bitmap_find(struct bitmap *bm, unsigned ofs);
char *unix2dos_format(char *str,BOOL overwrite);
char *dos2unix_format(char *str, BOOL overwrite);
-void interpret_character_set(char *str);
+void interpret_character_set(char *str, int codepage);
/*The following definitions come from lib/charset.c */
@@ -165,11 +45,10 @@ void add_char_string(char *s);
/*The following definitions come from lib/crc32.c */
-uint32 crc32_calc_buffer( uint32 count, char *buffer);
+uint32 crc32_calc_buffer( char *buffer, uint32 count);
/*The following definitions come from lib/debug.c */
-BOOL dbg_interactive(void);
void sig_usr2( int sig );
void sig_usr1( int sig );
void setup_logging( char *pname, BOOL interactive );
@@ -177,24 +56,6 @@ void reopen_logs( void );
void force_check_log_size( void );
void dbgflush( void );
BOOL dbghdr( int level, char *file, char *func, int line );
-dbg_Token dbg_char2token( dbg_Token *state, int c );
-
-/*The following definitions come from lib/domain_namemap.c */
-
-BOOL pwdb_rid_is_user(uint32 rid);
-BOOL map_unix_group_name(char *group_name, DOM_NAME_MAP *grp_info);
-BOOL map_unix_alias_name(char *alias_name, DOM_NAME_MAP *grp_info);
-BOOL map_nt_alias_name(char *ntalias_name, char *nt_domain, DOM_NAME_MAP *grp_info);
-BOOL map_nt_group_name(char *ntgroup_name, char *nt_domain, DOM_NAME_MAP *grp_info);
-BOOL map_alias_sid(DOM_SID *psid, DOM_NAME_MAP *grp_info);
-BOOL map_group_sid(DOM_SID *psid, DOM_NAME_MAP *grp_info);
-BOOL lookupsmbpwnam(const char *unix_usr_name, DOM_NAME_MAP *grp);
-BOOL lookupsmbpwuid(uid_t uid, DOM_NAME_MAP *gmep);
-BOOL lookupsmbpwntnam(const char *fullntname, DOM_NAME_MAP *gmep);
-BOOL lookupsmbpwsid(DOM_SID *sid, DOM_NAME_MAP *gmep);
-BOOL lookupsmbgrpnam(const char *unix_grp_name, DOM_NAME_MAP *grp);
-BOOL lookupsmbgrpsid(DOM_SID *sid, DOM_NAME_MAP *gmep);
-BOOL lookupsmbgrpgid(gid_t gid, DOM_NAME_MAP *gmep);
/*The following definitions come from lib/doscalls.c */
@@ -202,13 +63,13 @@ int dos_unlink(char *fname);
int dos_open(char *fname,int flags,mode_t mode);
DIR *dos_opendir(char *dname);
char *dos_readdirname(DIR *p);
+int dos_chown(char *fname, uid_t uid, gid_t gid);
int dos_stat(char *fname,SMB_STRUCT_STAT *sbuf);
int dos_lstat(char *fname,SMB_STRUCT_STAT *sbuf);
int dos_mkdir(char *dname,mode_t mode);
int dos_rmdir(char *dname);
int dos_chdir(char *dname);
int dos_utime(char *fname,struct utimbuf *times);
-int copy_reg(char *source, const char *dest);
int dos_rename(char *from, char *to);
int dos_chmod(char *fname,mode_t mode);
char *dos_getwd(char *unix_path);
@@ -223,6 +84,10 @@ char *dos_GetWd(char *path);
void fault_setup(void (*fn)(void *));
+/*The following definitions come from lib/fnmatch.c */
+
+int fnmatch (const char *pattern, const char *string, int flags);
+
/*The following definitions come from lib/genrand.c */
void generate_random_buffer( unsigned char *out, int len, BOOL re_seed);
@@ -231,28 +96,25 @@ void generate_random_buffer( unsigned char *out, int len, BOOL re_seed);
char *getsmbpass(char *prompt) ;
-/*The following definitions come from lib/hmacmd5.c */
-
-void hmac_md5_init_rfc2104(uchar* key, int key_len, HMACMD5Context *ctx);
-void hmac_md5_init_limK_to_64(const uchar* key, int key_len,
- HMACMD5Context *ctx);
-void hmac_md5_update(const uchar* text, int text_len, HMACMD5Context *ctx);
-void hmac_md5_final(uchar *digest, HMACMD5Context *ctx);
-
/*The following definitions come from lib/interface.c */
void load_interfaces(void);
-void iface_set_default(char *ip,char *bcast,char *nmask);
+BOOL interfaces_changed(void);
BOOL ismyip(struct in_addr ip);
BOOL is_local_net(struct in_addr from);
int iface_count(void);
BOOL we_are_multihomed(void);
struct interface *get_interface(int n);
struct in_addr *iface_n_ip(int n);
+struct in_addr *iface_n_bcast(int n);
unsigned iface_hash(void);
struct in_addr *iface_bcast(struct in_addr ip);
struct in_addr *iface_ip(struct in_addr ip);
+/*The following definitions come from lib/interfaces.c */
+
+int get_interfaces(struct iface_struct *ifaces, int max_interfaces);
+
/*The following definitions come from lib/kanji.c */
void interpret_coding_system(char *str);
@@ -261,80 +123,7 @@ void initialize_multibyte_vectors( int client_codepage);
/*The following definitions come from lib/md4.c */
-void mdfour(unsigned char *out, const unsigned char *in, int n);
-
-/*The following definitions come from lib/md5.c */
-
-void MD5Init(struct MD5Context *ctx);
-void MD5Update(struct MD5Context *ctx, uchar const *buf, unsigned len);
-void MD5Final(uchar digest[16], struct MD5Context *ctx);
-void MD5Transform(uint32 buf[4], const uchar inext[64]);
-
-/*The following definitions come from lib/membuffer.c */
-
-void mem_init(struct mem_buf *buf, int margin);
-void mem_create(struct mem_buf *buf, char *data, int offset, int size, int margin, BOOL dynamic);
-BOOL mem_alloc_data(struct mem_buf *buf, int size);
-BOOL mem_buf_copy(char *copy_into, struct mem_buf *buf,
- uint32 offset, uint32 len);
-BOOL mem_buf_init(struct mem_buf **buf, uint32 margin);
-void mem_buf_free(struct mem_buf **buf);
-void mem_free_data(struct mem_buf *buf);
-BOOL mem_realloc_data(struct mem_buf *buf, size_t new_size);
-BOOL mem_grow_data(struct mem_buf **buf, BOOL io, int new_size, BOOL force_grow);
-uint32 mem_buf_len(struct mem_buf *buf);
-char *mem_data(struct mem_buf **buf, uint32 offset);
-
-/*The following definitions come from lib/msrpc-agent.c */
-
-void start_msrpc_agent(char *pipe_name);
-
-/*The following definitions come from lib/msrpc-client.c */
-
-BOOL msrpc_receive(struct msrpc_state *msrpc);
-BOOL msrpc_send_prs(struct msrpc_state *msrpc, prs_struct *ps);
-BOOL msrpc_receive_prs(struct msrpc_state *msrpc, prs_struct *ps);
-BOOL msrpc_send(struct msrpc_state *msrpc, BOOL show);
-BOOL msrpc_connect(struct msrpc_state *msrpc, const char *pipe_name);
-void msrpc_init_creds(struct msrpc_state *msrpc, const struct user_creds *usr);
-void msrpc_close_socket(struct msrpc_state *msrpc);
-void msrpc_sockopt(struct msrpc_state *msrpc, char *options);
-BOOL msrpc_connect_auth(struct msrpc_state *msrpc,
- const char* pipename,
- const struct user_creds *usr);
-struct msrpc_state *msrpc_initialise(struct msrpc_state *msrpc);
-void msrpc_shutdown(struct msrpc_state *msrpc);
-BOOL msrpc_establish_connection(struct msrpc_state *msrpc,
- const char *pipe_name);
-
-/*The following definitions come from lib/msrpc_use.c */
-
-void init_msrpc_use(void);
-void free_msrpc_use(void);
-struct msrpc_state *msrpc_use_add(const char* pipe_name,
- const struct user_creds *usr_creds,
- BOOL redir);
-BOOL msrpc_use_del(const char* pipe_name,
- const struct user_creds *usr_creds,
- BOOL force_close,
- BOOL *connection_closed);
-void msrpc_net_use_enum(uint32 *num_cons, struct use_info ***use);
-
-/*The following definitions come from lib/netmask.c */
-
-int get_netmask(struct in_addr *ipaddr, struct in_addr *nmask);
-
-/*The following definitions come from lib/passcheck.c */
-
-BOOL smb_password_ok(struct smb_passwd *smb_pass, uchar challenge[8],
- const char *user, const char *domain,
- uchar *lm_pass, size_t lm_pwd_len,
- uchar *nt_pass, size_t nt_pwd_len,
- uchar user_sess_key[16]);
-BOOL pass_check_smb(struct smb_passwd *smb_pass, char *domain, uchar *chal,
- uchar *lm_pwd, size_t lm_pwd_len,
- uchar *nt_pwd, size_t nt_pwd_len,
- struct passwd *pwd, uchar user_sess_key[16]);
+void mdfour(unsigned char *out, unsigned char *in, int n);
/*The following definitions come from lib/pidfile.c */
@@ -345,27 +134,12 @@ void pidfile_create(char *name);
char *rep_inet_ntoa(struct in_addr ip);
-/*The following definitions come from lib/sids.c */
-
-struct sid_map* add_sidmap_to_array(uint32 *len, struct sid_map ***array,
- const struct sid_map *name);
-void get_sam_domain_name(void);
-BOOL get_member_domain_sid(void);
-void generate_wellknown_sids(void);
-BOOL create_sidmap_table(void);
-BOOL generate_sam_sid(char *domain_name, DOM_SID *sid);
-BOOL map_domain_name_to_sid(DOM_SID *sid, char **nt_domain);
-BOOL map_domain_sid_to_name(DOM_SID *sid, char *nt_domain);
-BOOL map_domain_sid_to_any_dc(DOM_SID *sid, char *dc_name);
-BOOL split_domain_name(const char *fullname, char *domain, char *name);
-BOOL enumtrustdoms(char ***doms, uint32 *num_entries);
-BOOL enumdomains(char ***doms, uint32 *num_entries);
-
/*The following definitions come from lib/signal.c */
void BlockSignals(BOOL block,int signum);
void CatchSignal(int signum,void (*handler)(int ));
void CatchChild(void);
+void CatchChildLeaveStatus(void);
/*The following definitions come from lib/slprintf.c */
@@ -380,8 +154,9 @@ int smbrun(char *cmd,char *outfile,BOOL shared);
/*The following definitions come from lib/system.c */
-int sys_select(int maxfd, fd_set *fds, fd_set *w_fds, struct timeval *tval);
-int sys_select(int maxfd, fd_set *r_fds, fd_set *w_fds, struct timeval *tval);
+int sys_select(int maxfd, fd_set *fds,struct timeval *tval);
+int sys_select(int maxfd, fd_set *fds,struct timeval *tval);
+int sys_usleep(long usecs);
int sys_stat(const char *fname,SMB_STRUCT_STAT *sbuf);
int sys_fstat(int fd,SMB_STRUCT_STAT *sbuf);
int sys_lstat(const char *fname,SMB_STRUCT_STAT *sbuf);
@@ -393,6 +168,7 @@ int sys_creat(const char *path, mode_t mode);
int sys_open(const char *path, int oflag, mode_t mode);
FILE *sys_fopen(const char *path, const char *type);
void *sys_mmap(void *addr, size_t len, int prot, int flags, int fd, SMB_OFF_T offset);
+SMB_STRUCT_DIRENT *sys_readdir(DIR *dirp);
int sys_waitpid(pid_t pid,int *status,int options);
char *sys_getwd(char *s);
int sys_chown(const char *fname,uid_t uid,gid_t gid);
@@ -403,7 +179,7 @@ BOOL set_inherited_process_capability( uint32 cap_flag, BOOL enable );
long sys_random(void);
void sys_srandom(unsigned int seed);
int sys_getgroups(int setlen, gid_t *gidset);
-struct passwd *copy_passwd_struct(struct passwd *pass);
+int sys_setgroups(int setlen, gid_t *gidset);
struct passwd *sys_getpwnam(const char *name);
struct passwd *sys_getpwuid(uid_t uid);
@@ -413,10 +189,9 @@ void GetTimeOfDay(struct timeval *tval);
void TimeInit(void);
int TimeDiff(time_t t);
struct tm *LocalTime(time_t *t);
-time_t nt_time_to_unix(const NTTIME *nt);
+time_t nt_time_to_unix(NTTIME *nt);
time_t interpret_long_date(char *p);
void unix_to_nt_time(NTTIME *nt, time_t t);
-void init_nt_time(NTTIME *nt);
void put_long_date(char *p,time_t t);
BOOL null_mtime(time_t mtime);
void put_dos_date(char *buf,int offset,time_t unixdate);
@@ -426,7 +201,7 @@ time_t make_unix_date(void *date_ptr);
time_t make_unix_date2(void *date_ptr);
time_t make_unix_date3(void *date_ptr);
char *http_timestring(time_t t);
-char *timestring(void );
+char *timestring(BOOL hires);
time_t get_create_time(SMB_STRUCT_STAT *st,BOOL fake_dirs);
/*The following definitions come from lib/ufc.c */
@@ -435,31 +210,24 @@ char *ufc_crypt(char *key,char *salt);
/*The following definitions come from lib/username.c */
-struct passwd *hashed_getpwnam(const char *name);
-char *uidtoname(uid_t uid);
-char *get_unixhome_dir(char *user);
+char *get_user_home_dir(char *user);
BOOL map_username(char *user);
-const struct passwd *Get_Pwnam(char *user,BOOL allow_change);
-BOOL user_ok(char *user,int snum);
+struct passwd *Get_Pwnam(char *user,BOOL allow_change);
BOOL user_in_list(char *user,char *list);
/*The following definitions come from lib/util.c */
-BOOL init_myworkgroup(void);
char *tmpdir(void);
BOOL in_group(gid_t group, gid_t current_gid, int ngroups, gid_t *groups);
-uint32 get_number(const char *tmp);
char *Atoic(char *p, int *n, char *c);
-uint32 *add_num_to_list(uint32 **num, int *count, int val);
char *get_numlist(char *p, uint32 **num, int *count);
void putip(void *dest,void *src);
char *dns_to_netbios_name(char *dns_name);
int name_mangle( char *In, char *Out, char name_type );
BOOL file_exist(char *fname,SMB_STRUCT_STAT *sbuf);
-int file_rename(char *from, char *to);
time_t file_modtime(char *fname);
BOOL directory_exist(char *dname,SMB_STRUCT_STAT *st);
-SMB_OFF_T file_size(char *file_name);
+SMB_OFF_T get_file_size(char *file_name);
char *attrib_string(uint16 mode);
void unix_format(char *fname);
void dos_format(char *fname);
@@ -483,15 +251,17 @@ SMB_OFF_T transfer_file(int infd,int outfd,SMB_OFF_T n,char *header,int headlen,
int name_extract(char *buf,int ofs,char *name);
int name_len(char *s1);
void msleep(int t);
-BOOL do_match(char *str, char *regexp, int case_sig);
-BOOL mask_match(char *str, char *regexp, int case_sig,BOOL trans2);
+BOOL unix_do_match(char *str, char *regexp, BOOL case_sig);
+BOOL exact_match(char *str, char *regexp, BOOL case_sig);
+BOOL mask_match(char *str, char *regexp, BOOL case_sig, BOOL trans2);
void become_daemon(void);
BOOL yesno(char *p);
int set_filelen(int fd, SMB_OFF_T len);
void *Realloc(void *p,size_t size);
-BOOL get_myname(char *my_name,struct in_addr *ip);
+BOOL get_myname(char *my_name);
BOOL ip_equal(struct in_addr ip1,struct in_addr ip2);
int interpret_protocol(char *str,int def);
+BOOL is_ipaddress(const char *str);
uint32 interpret_addr(char *str);
struct in_addr *interpret_addr2(char *str);
BOOL zero_ip(struct in_addr ip);
@@ -500,173 +270,100 @@ void standard_sub_basic(char *str);
void standard_sub(connection_struct *conn,char *str);
BOOL same_net(struct in_addr ip1,struct in_addr ip2,struct in_addr mask);
struct hostent *Get_Hostbyname(const char *name);
-BOOL process_exists(int pid);
-int get_unixgroups(char *user, uid_t uid, gid_t gid, int *p_ngroups, gid_t **p_groups);
-BOOL get_unix_grps(int *p_ngroups, struct group **p_groups);
-void free_unix_grps(int ngroups, struct group *p_groups);
+BOOL process_exists(pid_t pid);
+char *uidtoname(uid_t uid);
char *gidtoname(gid_t gid);
-BOOL nametogid(const char *name, gid_t *gid);
-BOOL nametouid(const char *name, uid_t *uid);
+uid_t nametouid(const char *name);
+gid_t nametogid(const char *name);
void smb_panic(char *why);
char *readdirname(DIR *p);
BOOL is_in_path(char *name, name_compare_entry *namelist);
void set_namearray(name_compare_entry **ppname_array, char *namelist);
void free_namearray(name_compare_entry *name_array);
+uint32 map_lock_offset(uint32 high, uint32 low);
BOOL fcntl_lock(int fd, int op, SMB_OFF_T offset, SMB_OFF_T count, int type);
BOOL is_myname(char *s);
void set_remote_arch(enum remote_arch_types type);
enum remote_arch_types get_remote_arch(void);
-char *align4(char *q, char *base);
char *align2(char *q, char *base);
-void out_ascii(FILE *f, const unsigned char *buf,int len);
-void out_struct(FILE *f, const char *buf1,int len, int per_line);
-void out_data(FILE *f, const char *buf1,int len, int per_line);
-void print_asc(int level, unsigned char const *buf,int len);
-void dump_data(int level, const char *buf1, int len);
+void out_ascii(FILE *f, unsigned char *buf,int len);
+void out_data(FILE *f,char *buf1,int len, int per_line);
+void print_asc(int level, unsigned char *buf,int len);
+void dump_data(int level,char *buf1,int len);
char *tab_depth(int depth);
int str_checksum(const char *s);
void zero_free(void *p, size_t size);
int set_maxfiles(int requested_max);
void reg_get_subkey(char *full_keyname, char *key_name, char *subkey_name);
-BOOL reg_split_key(const char *full_keyname, uint32 *reg_type, char *key_name);
-BOOL become_user_permanently(uid_t uid, gid_t gid);
-char *get_trusted_serverlist(const char* domain);
-char *pwdb_encode_acct_ctrl(uint16 acct_ctrl, size_t length);
-uint16 pwdb_decode_acct_ctrl(const char *p);
-time_t pwdb_get_last_set_time(const char *p);
-void pwdb_set_logon_time(char *p, int max_len, time_t t);
-void pwdb_set_logoff_time(char *p, int max_len, time_t t);
-void pwdb_set_kickoff_time(char *p, int max_len, time_t t);
-void pwdb_set_can_change_time(char *p, int max_len, time_t t);
-void pwdb_set_must_change_time(char *p, int max_len, time_t t);
-void pwdb_set_last_set_time(char *p, int max_len, time_t t);
-void pwdb_sethexpwd(char *p, const char *pwd, uint16 acct_ctrl);
-BOOL pwdb_gethexpwd(const char *p, char *pwd, uint32 *acct_ctrl);
-
-/*The following definitions come from lib/util_array.c */
-
-void free_void_array(uint32 num_entries, void **entries,
- void(free_item)(void*));
-void* add_copy_to_array(uint32 *len, void ***array, const void *item,
- void*(item_dup)(const void*), BOOL alloc_anyway);
-void* add_item_to_array(uint32 *len, void ***array, void *item);
-void free_use_info_array(uint32 num_entries, struct use_info **entries);
-struct use_info* add_use_info_to_array(uint32 *len, struct use_info ***array,
- const struct use_info *name);
-void free_char_array(uint32 num_entries, char **entries);
-char* add_chars_to_array(uint32 *len, char ***array, const char *name);
-void free_uint32_array(uint32 num_entries, uint32 **entries);
-uint32* add_uint32s_to_array(uint32 *len, uint32 ***array, const uint32 *name);
-void free_unistr_array(uint32 num_entries, UNISTR2 **entries);
-UNISTR2* add_unistr_to_array(uint32 *len, UNISTR2 ***array, UNISTR2 *name);
-void free_sid_array(uint32 num_entries, DOM_SID **entries);
-DOM_SID* add_sid_to_array(uint32 *len, DOM_SID ***array, const DOM_SID *sid);
-void free_devmode(DEVICEMODE *devmode);
-void free_printer_info_2(PRINTER_INFO_2 *printer);
-void free_print2_array(uint32 num_entries, PRINTER_INFO_2 **entries);
-PRINTER_INFO_2 *add_print2_to_array(uint32 *len, PRINTER_INFO_2 ***array,
- const PRINTER_INFO_2 *prt);
-void free_print1_array(uint32 num_entries, PRINTER_INFO_1 **entries);
-PRINTER_INFO_1 *add_print1_to_array(uint32 *len, PRINTER_INFO_1 ***array,
- const PRINTER_INFO_1 *prt);
-void free_job1_array(uint32 num_entries, JOB_INFO_1 **entries);
-JOB_INFO_1 *add_job1_to_array(uint32 *len, JOB_INFO_1 ***array,
- const JOB_INFO_1 *job);
-void free_job2_array(uint32 num_entries, JOB_INFO_2 **entries);
-JOB_INFO_2 *add_job2_to_array(uint32 *len, JOB_INFO_2 ***array,
- const JOB_INFO_2 *job);
+BOOL reg_split_key(char *full_keyname, uint32 *reg_type, char *key_name);
+char *smbd_mktemp(char *template);
+void *memdup(void *p, size_t size);
+char *myhostname(void);
/*The following definitions come from lib/util_file.c */
BOOL do_file_lock(int fd, int waitsecs, int type);
BOOL file_lock(int fd, int type, int secs, int *plock_depth);
BOOL file_unlock(int fd, int *plock_depth);
-void *startfileent(char *pfile, char *s_readbuf, int bufsize,
+void *startfilepwent(char *pfile, char *s_readbuf, int bufsize,
int *file_lock_depth, BOOL update);
-void endfileent(void *vp, int *file_lock_depth);
+void endfilepwent(void *vp, int *file_lock_depth);
SMB_BIG_UINT getfilepwpos(void *vp);
BOOL setfilepwpos(void *vp, SMB_BIG_UINT tok);
int getfileline(void *vp, char *linebuf, int linebuf_size);
char *fgets_slash(char *s2,int maxlen,FILE *f);
-BOOL file_modified(const char *filename, time_t *lastmodified);
-void *open_file_if_modified(const char *filename, char *mode, time_t *lastmodified);
-
-/*The following definitions come from lib/util_hnd.c */
-
-BOOL init_policy_hnd(int num_pol_hnds);
-BOOL register_policy_hnd(POLICY_HND *hnd);
-BOOL open_policy_hnd(POLICY_HND *hnd);
-int find_policy_by_hnd(const POLICY_HND *hnd);
-BOOL set_policy_samr_rid(POLICY_HND *hnd, uint32 rid);
-BOOL set_policy_samr_pol_status(POLICY_HND *hnd, uint32 pol_status);
-BOOL set_policy_samr_sid(POLICY_HND *hnd, DOM_SID *sid);
-BOOL get_policy_samr_sid(POLICY_HND *hnd, DOM_SID *sid);
-uint32 get_policy_samr_rid(POLICY_HND *hnd);
-BOOL set_policy_reg_name(POLICY_HND *hnd, fstring name);
-BOOL get_policy_reg_name(POLICY_HND *hnd, fstring name);
-BOOL set_policy_con(POLICY_HND *hnd, struct cli_connection *con,
- void (*free_fn)(struct cli_connection *));
-BOOL get_policy_con(const POLICY_HND *hnd, struct cli_connection **con);
-BOOL close_policy_hnd(POLICY_HND *hnd);
-
-/*The following definitions come from lib/util_pwdb.c */
-
-uint32 lookup_wk_group_name(const char *group_name, const char *domain,
- DOM_SID *sid, uint8 *type);
-uint32 lookup_wk_user_name(const char *user_name, const char *domain,
- DOM_SID *sid, uint8 *type);
-uint32 lookup_builtin_alias_name(const char *alias_name, const char *domain,
- DOM_SID *sid, uint8 *type);
-BOOL pwdb_initialise(BOOL is_server);
-char *lookup_wk_alias_rid(uint32 rid);
-char *lookup_wk_user_rid(uint32 rid);
-char *lookup_wk_group_rid(uint32 rid);
+
+/*The following definitions come from lib/util_sec.c */
+
+void gain_root_privilege(void);
+void gain_root_group_privilege(void);
+void set_effective_uid(uid_t uid);
+void set_effective_gid(gid_t gid);
+void save_re_uid(void);
+void restore_re_uid(void);
+int set_re_uid(void);
+void become_user_permanently(uid_t uid, gid_t gid);
/*The following definitions come from lib/util_sid.c */
-char *sid_to_string(pstring sidstr_out, const DOM_SID *sid);
-BOOL string_to_sid(DOM_SID *sidout, const char *sidstr);
+void generate_wellknown_sids(void);
+BOOL map_domain_sid_to_name(DOM_SID *sid, char *nt_domain);
+BOOL lookup_known_rid(DOM_SID *sid, uint32 rid, char *name, uint8 *psid_name_use);
+BOOL map_domain_name_to_sid(DOM_SID *sid, char *nt_domain);
+void split_domain_name(const char *fullname, char *domain, char *name);
+char *sid_to_string(fstring sidstr_out, DOM_SID *sid);
+BOOL string_to_sid(DOM_SID *sidout, char *sidstr);
BOOL sid_append_rid(DOM_SID *sid, uint32 rid);
BOOL sid_split_rid(DOM_SID *sid, uint32 *rid);
-void sid_copy(DOM_SID *sid1, const DOM_SID *sid2);
-BOOL sid_front_equal(const DOM_SID *sid1, const DOM_SID *sid2);
-BOOL sid_equal(const DOM_SID *sid1, const DOM_SID *sid2);
-int sid_size(const DOM_SID *sid);
-DOM_SID *sid_dup(const DOM_SID *src);
-BOOL read_sid(char *domain_name, DOM_SID *sid);
-BOOL write_sid(char *domain_name, DOM_SID *sid);
-BOOL create_new_sid(DOM_SID *sid);
+void sid_copy(DOM_SID *dst, DOM_SID *src);
+DOM_SID *sid_dup(DOM_SID *src);
+BOOL sid_linearize(char *outbuf, size_t len, DOM_SID *sid);
+BOOL sid_equal(DOM_SID *sid1, DOM_SID *sid2);
+size_t sid_size(DOM_SID *sid);
/*The following definitions come from lib/util_sock.c */
BOOL is_a_socket(int fd);
void set_socket_options(int fd, char *options);
void close_sockets(void );
-ssize_t write_socket(int fd,char *buf,size_t len);
ssize_t read_udp_socket(int fd,char *buf,size_t len);
ssize_t read_with_timeout(int fd,char *buf,size_t mincnt,size_t maxcnt,unsigned int time_out);
BOOL send_keepalive(int client);
ssize_t read_data(int fd,char *buffer,size_t N);
ssize_t write_data(int fd,char *buffer,size_t N);
+ssize_t write_socket_data(int fd,char *buffer,size_t N);
+ssize_t write_socket(int fd,char *buf,size_t len);
ssize_t read_smb_length(int fd,char *inbuf,unsigned int timeout);
BOOL receive_smb(int fd,char *buffer, unsigned int timeout);
BOOL client_receive_smb(int fd,char *buffer, unsigned int timeout);
+BOOL send_null_session_msg(int fd);
BOOL send_smb(int fd,char *buffer);
BOOL send_one_packet(char *buf,int len,struct in_addr ip,int port,int type);
-int open_socket_in(int type, int port, int dlevel,uint32 socket_addr);
+int open_socket_in(int type, int port, int dlevel,uint32 socket_addr, BOOL rebind);
int open_socket_out(int type, struct in_addr *addr, int port ,int timeout);
void reset_globals_after_fork(void);
char *client_name(int fd);
char *client_addr(int fd);
-int open_pipe_sock(char *path);
-int create_pipe_socket(char *dir, int dir_perms,
- char *path, int path_perms);
-
-/*The following definitions come from lib/util_status.c */
-
-BOOL get_connection_status(struct connect_record **crec,
- uint32 *connection_count);
-BOOL get_session_count(struct connect_record **srec,uint32 *session_count);
/*The following definitions come from lib/util_str.c */
@@ -689,69 +386,47 @@ BOOL trim_string(char *s,const char *front,const char *back);
BOOL strhasupper(const char *s);
BOOL strhaslower(const char *s);
size_t count_chars(const char *s,char c);
+BOOL str_is_all(const char *s,char c);
char *safe_strcpy(char *dest,const char *src, size_t maxlength);
char *safe_strcat(char *dest, const char *src, size_t maxlength);
-char *StrCpy(char *dest,const char *src);
+char *alpha_strcpy(char *dest, const char *src, size_t maxlength);
char *StrnCpy(char *dest,const char *src,size_t n);
-char *strncpyn(char *dest, char *src,size_t n, char c);
+char *strncpyn(char *dest, const char *src,size_t n, char c);
size_t strhex_to_str(char *p, size_t len, const char *strhex);
BOOL in_list(char *s,char *list,BOOL casesensitive);
BOOL string_init(char **dest,const char *src);
void string_free(char **s);
BOOL string_set(char **dest,const char *src);
-void string_sub(char *s,const char *pattern,const char *insert);
-void all_string_sub(char *s,const char *pattern,const char *insert);
-void split_at_first_component(char *path, char *front, char sep, char *back);
+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);
+void pstring_sub(char *s,const char *pattern,const char *insert);
+void all_string_sub(char *s,const char *pattern,const char *insert, size_t len);
void split_at_last_component(char *path, char *front, char sep, char *back);
-char *bit_field_to_str(uint32 type, struct field_info *bs);
-char *enum_field_to_str(uint32 type, struct field_info *bs, BOOL first_default);
+char *octal_string(int i);
+char *string_truncate(char *s, int length);
/*The following definitions come from lib/util_unistr.c */
-char *ascii_to_unibuf(char *dest, const char *src, int maxlen);
-const char* unibuf_to_ascii(char *dest, const char *src, int maxlen);
-void ascii_to_unistr(uint16 *dest, const char *src, int maxlen);
-void unistr_to_ascii(char *dest, const uint16 *src, int len);
-void unistr2_to_ascii(char *dest, const UNISTR2 *str, size_t maxlen);
-char *skip_unibuf(char *srcbuf, int len);
-char *uni_strncpy(char *destbuf, const char *srcbuf, int len);
-uint32 buffer2_to_uint32(const BUFFER2 *str);
-void buffer2_to_multistr(char *dest, const BUFFER2 *str, size_t maxlen);
-void buffer4_to_str(char *dest, const BUFFER4 *str, size_t maxlen);
-BOOL copy_unistr2(UNISTR2 *str, const UNISTR2 *from);
-UNISTR2 *unistr2_dup(const UNISTR2 *name);
-void unistr2_free(UNISTR2 *name);
-
-/*The following definitions come from lib/vagent.c */
-
-void init_sock_redir(struct vagent_ops*va);
-void free_sock_redir(struct vagent_ops*va);
-void start_agent(struct vagent_ops *va);
-
-/*The following definitions come from lib/vuser.c */
-
-user_struct *get_valid_user_struct(uint16 vuid);
-void invalidate_vuid(uint16 vuid);
-char *validated_username(uint16 vuid);
-uint16 create_vuid(uid_t uid, gid_t gid, int n_groups, gid_t *groups,
- char *unix_name, char *requested_name,
- char *real_name,
- BOOL guest, uchar user_sess_key[16]);
-uint16 register_vuid(uid_t uid,gid_t gid, char *unix_name, char *requested_name, BOOL guest, uchar user_sess_key[16]);
+int dos_PutUniCode(char *dst,const char *src, ssize_t len);
+char *skip_unicode_string(char *buf,int n);
+char *dos_unistrn2(uint16 *src, int len);
+char *dos_unistr2(uint16 *src);
+char *dos_unistr2_to_str(UNISTR2 *str);
+uint32 buffer2_to_uint32(BUFFER2 *str);
+char *dos_buffer2_to_str(BUFFER2 *str);
+char *dos_buffer2_to_multistr(BUFFER2 *str);
+size_t dos_struni2(char *dst, const char *src, size_t max_len);
+char *dos_unistr(char *buf);
+int unistrcpy(char *dst, char *src);
+void default_unicode_map(smb_ucs2_t **pp_cp_to_ucs2, uint16 **pp_ucs2_to_cp);
+BOOL load_unicode_map(const char *codepage, smb_ucs2_t **pp_cp_to_ucs2, uint16 **pp_ucs2_to_cp);
+BOOL load_dos_unicode_map(int codepage);
+BOOL load_unix_unicode_map(const char *unix_char_set);
/*The following definitions come from libsmb/clientgen.c */
int cli_set_port(struct cli_state *cli, int port);
char *cli_errstr(struct cli_state *cli);
-void cli_safe_smb_errstr(struct cli_state *cli, char *msg, size_t len);
-BOOL get_safe_rap_errstr(int rap_error, char *err_msg, size_t msglen);
-void cli_safe_errstr(struct cli_state *cli, char *err_msg, size_t msglen);
-BOOL cli_send_trans(struct cli_state *cli, int trans,
- char *name, int pipe_name_len,
- int fid, int flags,
- uint16 *setup, int lsetup, int msetup,
- char *param, int lparam, int mparam,
- char *data, int ldata, int mdata);
BOOL cli_api_pipe(struct cli_state *cli, char *pipe_name, int pipe_name_len,
uint16 *setup, uint32 setup_count, uint32 max_setup_count,
char *params, uint32 param_count, uint32 max_param_count,
@@ -767,16 +442,11 @@ BOOL cli_NetWkstaUserLogon(struct cli_state *cli,char *user, char *workstation);
BOOL cli_RNetShareEnum(struct cli_state *cli, void (*fn)(const char *, uint32, const char *));
BOOL cli_NetServerEnum(struct cli_state *cli, char *workgroup, uint32 stype,
void (*fn)(const char *, uint32, const char *));
-BOOL cli_session_setup_x(struct cli_state *cli,
- char *user,
- char *pass, int passlen,
- char *ntpass, int ntpasslen,
- char *user_domain);
BOOL cli_session_setup(struct cli_state *cli,
- char *myhostname, char *user,
- char *pass, int passlen,
- char *ntpass, int ntpasslen,
- char *user_domain);
+ char *user,
+ char *pass, int passlen,
+ char *ntpass, int ntpasslen,
+ char *workgroup);
BOOL cli_ulogoff(struct cli_state *cli);
BOOL cli_send_tconX(struct cli_state *cli,
char *share, char *dev, char *pass, int passlen);
@@ -785,9 +455,8 @@ BOOL cli_rename(struct cli_state *cli, char *fname_src, char *fname_dst);
BOOL cli_unlink(struct cli_state *cli, char *fname);
BOOL cli_mkdir(struct cli_state *cli, char *dname);
BOOL cli_rmdir(struct cli_state *cli, char *dname);
-int cli_nt_create(struct cli_state *cli, const char *fname);
-int cli_open(struct cli_state *cli, const char *fname,
- int flags, int share_mode);
+int cli_nt_create(struct cli_state *cli, char *fname);
+int cli_open(struct cli_state *cli, char *fname, int flags, int share_mode);
BOOL cli_close(struct cli_state *cli, int fnum);
BOOL cli_lock(struct cli_state *cli, int fnum, uint32 offset, uint32 len, int timeout);
BOOL cli_unlock(struct cli_state *cli, int fnum, uint32 offset, uint32 len, int timeout);
@@ -795,6 +464,8 @@ size_t cli_read(struct cli_state *cli, int fnum, char *buf, off_t offset, size_t
ssize_t cli_write(struct cli_state *cli,
int fnum, uint16 write_mode,
char *buf, off_t offset, size_t size);
+ssize_t cli_smbwrite(struct cli_state *cli,
+ int fnum, char *buf, off_t offset, size_t size1);
BOOL cli_getattrE(struct cli_state *cli, int fd,
uint16 *attr, size_t *size,
time_t *c_time, time_t *a_time, time_t *m_time);
@@ -820,27 +491,17 @@ BOOL cli_negprot(struct cli_state *cli);
BOOL cli_session_request(struct cli_state *cli,
struct nmb_name *calling, struct nmb_name *called);
BOOL cli_connect(struct cli_state *cli, const char *host, struct in_addr *ip);
-void cli_init_creds(struct cli_state *cli, const struct ntuser_creds *usr);
struct cli_state *cli_initialise(struct cli_state *cli);
-void cli_close_socket(struct cli_state *cli);
void cli_shutdown(struct cli_state *cli);
-int cli_error(struct cli_state *cli, uint8 *eclass, uint32 *num);
+int cli_error(struct cli_state *cli, uint8 *eclass, uint32 *num, uint32 *nt_rpc_error);
void cli_sockopt(struct cli_state *cli, char *options);
uint16 cli_setpid(struct cli_state *cli, uint16 pid);
BOOL cli_reestablish_connection(struct cli_state *cli);
BOOL cli_establish_connection(struct cli_state *cli,
- const char *dest_host, struct in_addr *dest_ip,
+ char *dest_host, struct in_addr *dest_ip,
struct nmb_name *calling, struct nmb_name *called,
char *service, char *service_type,
BOOL do_shutdown, BOOL do_tcon);
-BOOL cli_connect_auth(struct cli_state *cli,
- const char* desthost,
- struct in_addr *dest_ip,
- const struct ntuser_creds *usr);
-BOOL cli_connect_servers_auth(struct cli_state *cli,
- char *p,
- const struct ntuser_creds *usr);
-BOOL cli_connect_serverlist(struct cli_state *cli, char *p);
int cli_printjob_del(struct cli_state *cli, int job);
int cli_print_queue(struct cli_state *cli,
void (*fn)(struct print_job_info *));
@@ -850,12 +511,8 @@ BOOL cli_message_start(struct cli_state *cli, char *host, char *username,
BOOL cli_message_text(struct cli_state *cli, char *msg, int len, int grp);
BOOL cli_message_end(struct cli_state *cli, int grp);
BOOL cli_dskattr(struct cli_state *cli, int *bsize, int *total, int *avail);
-BOOL get_any_dc_name(const char *domain, char *srv_name);
-
-/*The following definitions come from libsmb/clienttrust.c */
-
-BOOL change_trust_account_password(char *domain, char *remote_machine_list,
- uint16 sec_chan);
+BOOL attempt_netbios_session_request(struct cli_state *cli, char *srchost, char *desthost,
+ struct in_addr *pdest_ip);
/*The following definitions come from libsmb/credentials.c */
@@ -882,17 +539,15 @@ struct in_addr *name_query(int fd,const char *name,int name_type, BOOL bcast,BOO
FILE *startlmhosts(char *fname);
BOOL getlmhostsent( FILE *fp, pstring name, int *name_type, struct in_addr *ipaddr);
void endlmhosts(FILE *fp);
-BOOL is_ip_address(const char *name);
BOOL resolve_name(const char *name, struct in_addr *return_ip, int name_type);
-BOOL resolve_srv_name(const char* srv_name, fstring dest_host,
- struct in_addr *ip);
BOOL find_master_ip(char *group, struct in_addr *master_ip);
+BOOL lookup_pdc_name(const char *srcname, const char *domain, struct in_addr *pdc_ip, char *ret_name);
+BOOL get_dc_list(char *group, struct in_addr **ip_list, int *count);
/*The following definitions come from libsmb/nmblib.c */
void debug_nmb_packet(struct packet_struct *p);
char *nmb_namestr(struct nmb_name *n);
-void nmb_safe_namestr(struct nmb_name *n, char *str, size_t len);
struct packet_struct *copy_packet(struct packet_struct *packet);
void free_packet(struct packet_struct *packet);
struct packet_struct *read_packet(int fd,enum packet_type packet_type);
@@ -901,12 +556,9 @@ BOOL nmb_name_equal(struct nmb_name *n1, struct nmb_name *n2);
BOOL send_packet(struct packet_struct *p);
struct packet_struct *receive_packet(int fd,enum packet_type type,int t);
void sort_query_replies(char *data, int n, struct in_addr ip);
-BOOL read_nmb_sock(int c, struct nmb_state *con);
-int get_nmb_sock(void);
/*The following definitions come from libsmb/nterr.c */
-void get_safe_nt_error_msg(uint32 nt_code, char *msg, size_t len);
char *get_nt_error_msg(uint32 nt_code);
/*The following definitions come from libsmb/passchange.c */
@@ -918,26 +570,19 @@ BOOL remote_password_change(const char *remote_machine, const char *user_name,
/*The following definitions come from libsmb/pwd_cache.c */
void pwd_init(struct pwd_info *pwd);
-BOOL pwd_is_nullpwd(const struct pwd_info *pwd);
void pwd_obfuscate_key(struct pwd_info *pwd, uint32 int_key, char *str_key);
-BOOL pwd_compare(struct pwd_info *pwd1, struct pwd_info *pwd2);
void pwd_read(struct pwd_info *pwd, char *passwd_report, BOOL do_encrypt);
void pwd_set_nullpwd(struct pwd_info *pwd);
void pwd_set_cleartext(struct pwd_info *pwd, char *clr);
void pwd_get_cleartext(struct pwd_info *pwd, char *clr);
void pwd_set_lm_nt_16(struct pwd_info *pwd, uchar lm_pwd[16], uchar nt_pwd[16]);
-void pwd_get_lm_nt_16(const struct pwd_info *pwd, uchar lm_pwd[16], uchar nt_pwd[16]);
+void pwd_get_lm_nt_16(struct pwd_info *pwd, uchar lm_pwd[16], uchar nt_pwd[16]);
void pwd_make_lm_nt_16(struct pwd_info *pwd, char *clr);
-void pwd_make_lm_nt_owf2(struct pwd_info *pwd, const uchar srv_key[8],
- const char *user, const char *server, const char *domain);
void pwd_make_lm_nt_owf(struct pwd_info *pwd, uchar cryptkey[8]);
-void pwd_get_lm_nt_owf(struct pwd_info *pwd, uchar lm_owf[24],
- uchar *nt_owf, size_t *nt_owf_len,
- uchar *sess_key);
+void pwd_get_lm_nt_owf(struct pwd_info *pwd, uchar lm_owf[24], uchar nt_owf[24]);
/*The following definitions come from libsmb/smbdes.c */
-void smbhash(unsigned char *out, const uchar *in, const uchar *key, int forw);
void E_P16(unsigned char *p14,unsigned char *p16);
void E_P24(unsigned char *p21, unsigned char *c8, unsigned char *p24);
void D_P16(unsigned char *p14, unsigned char *in, unsigned char *out);
@@ -946,54 +591,19 @@ void cred_hash1(unsigned char *out,unsigned char *in,unsigned char *key);
void cred_hash2(unsigned char *out,unsigned char *in,unsigned char *key);
void cred_hash3(unsigned char *out,unsigned char *in,unsigned char *key, int forw);
void SamOEMhash( unsigned char *data, unsigned char *key, int val);
-void sam_pwd_hash(uint32 rid, const uchar *in, uchar *out, int forw);
/*The following definitions come from libsmb/smbencrypt.c */
-void SMBencrypt(uchar *pwrd, uchar *c8, uchar *p24);
-void SMBNTencrypt(uchar *pwrd, uchar *c8, uchar *p24);
-void E_md4hash(uchar *pwrd, uchar *p16);
-void lm_owf_genW(const UNISTR2 *pwd, uchar p16[16]);
-void lm_owf_gen(const char *pwd, uchar p16[16]);
-void nt_owf_genW(const UNISTR2 *pwd, uchar nt_p16[16]);
-void nt_owf_gen(const char *pwd, uchar nt_p16[16]);
-void nt_lm_owf_genW(const UNISTR2 *pwd, uchar nt_p16[16], uchar lm_p16[16]);
-void nt_lm_owf_gen(const char *pwd, uchar nt_p16[16], uchar lm_p16[16]);
-void SMBOWFencrypt(uchar pwrd[16], uchar *c8, uchar p24[24]);
-void SMBOWFencrypt_ntv2(const uchar kr[16],
- const uchar *srv_chal, int srv_chal_len,
- const uchar *cli_chal, int cli_chal_len,
- char resp_buf[16]);
-void SMBsesskeygen_ntv2(const uchar kr[16],
- const uchar *nt_resp,
- char sess_key[16]);
-void SMBsesskeygen_ntv1(const uchar kr[16],
- const uchar *nt_resp,
- char sess_key[16]);
-void SMBgenclientchals(char *lm_cli_chal,
- char *nt_cli_chal, int *nt_cli_chal_len,
- const char *srv, const char *dom);
-void ntv2_owf_gen(const uchar owf[16],
- const char *user_n,
- const char *domain_n,
- uchar kr_buf[16]);
-void NTLMSSPOWFencrypt(uchar pwrd[8], uchar *ntlmchalresp, uchar p24[24]);
-BOOL make_oem_passwd_hash(char data[516], const char *pwrd, uchar old_pw_hash[16], BOOL unicode);
-BOOL nt_decrypt_string2(STRING2 *out, const STRING2 *in, const uchar *key);
-void create_ntlmssp_resp(struct pwd_info *pwd,
- char *domain, char *user_name, char *my_name,
- uint32 ntlmssp_cli_flgs,
- prs_struct *auth_resp);
-BOOL decode_pw_buffer(const char buffer[516], char *new_pwrd,
- int new_pwrd_size, uint32 *new_pw_len);
-BOOL encode_pw_buffer(char buffer[516], const char *new_pass,
- int new_pw_len, BOOL nt_pass_set);
+void SMBencrypt(uchar *passwd, uchar *c8, uchar *p24);
+void E_md4hash(uchar *passwd, uchar *p16);
+void nt_lm_owf_gen(char *pwd, uchar nt_p16[16], uchar p16[16]);
+void SMBOWFencrypt(uchar passwd[16], uchar *c8, uchar p24[24]);
+void NTLMSSPOWFencrypt(uchar passwd[8], uchar *ntlmchalresp, uchar p24[24]);
+void SMBNTencrypt(uchar *passwd, uchar *c8, uchar *p24);
+BOOL make_oem_passwd_hash(char data[516], const char *passwd, uchar old_pw_hash[16], BOOL unicode);
/*The following definitions come from libsmb/smberr.c */
-char *smb_err_msg(uint8 class, uint32 num);
-BOOL smb_safe_err_msg(uint8 class, uint32 num, char *ret, size_t len);
-BOOL smb_safe_errstr(char *inbuf, char *msg, size_t len);
char *smb_errstr(char *inbuf);
/*The following definitions come from locking/locking.c */
@@ -1017,7 +627,8 @@ int get_share_modes(connection_struct *conn,
void del_share_mode(int token, files_struct *fsp);
BOOL set_share_mode(int token, files_struct *fsp, uint16 port, uint16 op_type);
BOOL remove_share_oplock(int token, files_struct *fsp);
-BOOL modify_share_mode(int token, files_struct *fsp, int new_mode);
+BOOL downgrade_share_oplock(int token, files_struct *fsp);
+BOOL modify_share_mode(int token, files_struct *fsp, int new_mode, uint16 new_oplock);
int share_mode_forall(void (*fn)(share_mode_entry *, char *));
void share_status(FILE *f);
@@ -1037,44 +648,6 @@ struct shmem_ops *smb_shm_open(int ronly);
struct shmem_ops *sysv_shm_open(int ronly);
-/*The following definitions come from lsarpcd/lsarpcd.c */
-
-void msrpc_service_init(void);
-BOOL reload_services(BOOL test);
-
-/*The following definitions come from mem_man/mem_man.c */
-
-void *smb_mem_malloc(size_t size,char *file,int line);
-char *smb_mem_strdup(char *s, char *file, int line);
-int smb_mem_free(void *ptr,char *file,int line);
-void smb_mem_write_info(void *ptr,FILE *outfile);
-size_t smb_mem_query_size(void *ptr);
-size_t smb_mem_query_real_size(void *ptr);
-char *smb_mem_query_file(void *ptr);
-int smb_mem_query_line(void *ptr);
-int smb_mem_test(void *ptr);
-void smb_mem_write_status(FILE *outfile);
-void smb_mem_write_verbose(FILE *outfile);
-void smb_mem_write_errors(FILE *outfile);
-void smb_mem_set_multiplier(int multiplier);
-void *smb_mem_resize(void *ptr,size_t newsize);
-
-/*The following definitions come from msrpc/msrpcd.c */
-
-void exit_server(char *reason);
-int msrpc_main(int argc,char *argv[]);
-
-/*The following definitions come from msrpc/msrpcd_process.c */
-
-BOOL get_user_creds(int c, struct user_creds *usr);
-BOOL msrpcd_init(int c, pipes_struct *p);
-void msrpcd_process(int c, pipes_struct *p);
-
-/*The following definitions come from netlogond/netlogond.c */
-
-void msrpc_service_init(void);
-BOOL reload_services(BOOL test);
-
/*The following definitions come from nmbd/asyncdns.c */
int asyncdns_fd(void);
@@ -1166,6 +739,7 @@ void add_logon_names(void);
/*The following definitions come from nmbd/nmbd_mynames.c */
+void register_my_workgroup_one_subnet(struct subnet_record *subrec);
BOOL register_my_workgroup_and_names(void);
void release_my_names(void);
void refresh_my_names(time_t t);
@@ -1365,6 +939,8 @@ void write_browse_list(time_t t, BOOL force_write);
/*The following definitions come from nmbd/nmbd_subnetdb.c */
+void close_subnet(struct subnet_record *subrec);
+struct subnet_record *make_normal_subnet(struct interface *iface);
BOOL create_subnets(void);
BOOL we_are_a_wins_client(void);
struct subnet_record *get_next_subnet_maybe_unicast(struct subnet_record *subrec);
@@ -1415,14 +991,10 @@ void expire_workgroups_and_servers(time_t t);
/*The following definitions come from param/loadparm.c */
-struct vfs_options *lp_vfsoptions(int i) ;
char *lp_logfile(void);
char *lp_smbrun(void);
char *lp_configfile(void);
char *lp_smb_passwd_file(void);
-char *lp_smb_passgrp_file(void);
-char *lp_smb_group_file(void);
-char *lp_smb_alias_file(void);
char *lp_serverstring(void);
char *lp_printcapname(void);
char *lp_lockdir(void);
@@ -1436,14 +1008,8 @@ char *lp_passwd_chat(void);
char *lp_passwordserver(void);
char *lp_name_resolve_order(void);
char *lp_workgroup(void);
-char *lp_trusted_domains(void);
-char *lp_trusting_domains(void);
char *lp_username_map(void);
-char *lp_aliasname_map(void);
char *lp_groupname_map(void);
-char *lp_builtinname_map(void);
-char *lp_builtinrid_file(void);
-char *lp_ntusrname_map(void);
char *lp_logon_script(void);
char *lp_logon_path(void);
char *lp_logon_drive(void);
@@ -1457,13 +1023,19 @@ char *lp_nis_home_map_name(void);
char *lp_netbios_aliases(void);
char *lp_driverfile(void);
char *lp_panic_action(void);
-char *lp_nt_forms(void);
-char *lp_nt_drivers_file(void);
-char *lp_dfs_map(void);
+char *lp_adduser_script(void);
+char *lp_deluser_script(void);
+char *lp_wins_hook(void);
+char *lp_domain_groups(void);
+char *lp_domain_admin_group(void);
+char *lp_domain_guest_group(void);
+char *lp_domain_admin_users(void);
+char *lp_domain_guest_users(void);
char *lp_ldap_server(void);
char *lp_ldap_suffix(void);
-char *lp_ldap_bind_as(void);
-char *lp_ldap_passwd_file(void);
+char *lp_ldap_filter(void);
+char *lp_ldap_root(void);
+char *lp_ldap_rootpasswd(void);
int lp_ssl_version(void);
char *lp_ssl_hosts(void);
char *lp_ssl_hosts_resign(void);
@@ -1483,7 +1055,9 @@ BOOL lp_wins_support(void);
BOOL lp_we_are_a_wins_server(void);
BOOL lp_wins_proxy(void);
BOOL lp_local_master(void);
+BOOL lp_domain_master(void);
BOOL lp_domain_logons(void);
+BOOL lp_preferred_master(void);
BOOL lp_load_printers(void);
BOOL lp_use_rhosts(void);
BOOL lp_readprediction(void);
@@ -1494,10 +1068,11 @@ BOOL lp_null_passwords(void);
BOOL lp_strip_dot(void);
BOOL lp_encrypted_passwords(void);
BOOL lp_update_encrypted(void);
-BOOL lp_client_ntlmv2(void);
-BOOL lp_server_ntlmv2(void);
BOOL lp_syslog_only(void);
BOOL lp_timestamp_logs(void);
+BOOL lp_debug_hires_timestamp(void);
+BOOL lp_debug_pid(void);
+BOOL lp_debug_uid(void);
BOOL lp_browse_list(void);
BOOL lp_unix_realname(void);
BOOL lp_nis_home_map(void);
@@ -1507,7 +1082,10 @@ BOOL lp_passwd_chat_debug(void);
BOOL lp_ole_locking_compat(void);
BOOL lp_nt_smb_support(void);
BOOL lp_nt_pipe_support(void);
+BOOL lp_nt_acl_support(void);
BOOL lp_stat_cache(void);
+BOOL lp_allow_trusted_domains(void);
+BOOL lp_restrict_anonymous(void);
int lp_os_level(void);
int lp_max_ttl(void);
int lp_max_wins_ttl(void);
@@ -1533,6 +1111,8 @@ int lp_machine_password_timeout(void);
int lp_change_notify_timeout(void);
int lp_stat_cache_size(void);
int lp_map_to_guest(void);
+int lp_min_passwd_length(void);
+int lp_oplock_break_wait_time(void);
int lp_ldap_port(void);
char *lp_preexec(int );
char *lp_postexec(int );
@@ -1565,12 +1145,13 @@ char *lp_force_group(int );
char *lp_readlist(int );
char *lp_writelist(int );
char *lp_fstype(int );
-char *lp_vfsobj(int );
char *lp_mangled_map(int );
char *lp_veto_files(int );
char *lp_hide_files(int );
char *lp_veto_oplocks(int );
char *lp_driverlocation(int );
+BOOL lp_preexec_close(int );
+BOOL lp_rootpreexec_close(int );
BOOL lp_revalidate(int );
BOOL lp_casesensitive(int );
BOOL lp_preservecase(int );
@@ -1591,6 +1172,7 @@ BOOL lp_locking(int );
BOOL lp_strict_locking(int );
BOOL lp_share_modes(int );
BOOL lp_oplocks(int );
+BOOL lp_level2_oplocks(int );
BOOL lp_onlyuser(int );
BOOL lp_manglednames(int );
BOOL lp_widelinks(int );
@@ -1605,20 +1187,21 @@ BOOL lp_dos_filetimes(int );
BOOL lp_dos_filetime_resolution(int );
BOOL lp_fake_dir_create_times(int );
BOOL lp_blocking_locks(int );
-int lp_create_mode(int );
+int lp_create_mask(int );
int lp_force_create_mode(int );
-int lp_dir_mode(int );
+int _lp_security_mask(int );
+int _lp_force_security_mode(int );
+int lp_dir_mask(int );
int lp_force_dir_mode(int );
+int _lp_dir_security_mask(int );
+int _lp_force_dir_security_mode(int );
int lp_max_connections(int );
int lp_defaultcase(int );
int lp_minprintspace(int );
int lp_printing(int );
+int lp_oplock_contention_limit(int );
+int lp_write_cache_size(int );
char lp_magicchar(int );
-char *lp_mysql_host(void);
-char *lp_mysql_user(void);
-char *lp_mysql_passfile(void);
-char *lp_mysql_db(void);
-char *lp_mysql_table(void);
BOOL lp_add_home(char *pszHomename, int iDefaultService, char *pszHomedir);
int lp_add_service(char *pszService, int iDefaultService);
BOOL lp_add_printer(char *pszPrintername, int iDefaultService);
@@ -1632,8 +1215,10 @@ void lp_add_one_printer(char *name,char *comment);
BOOL lp_loaded(void);
void lp_killunused(BOOL (*snumused)(int ));
BOOL lp_load(char *pszFname,BOOL global_only, BOOL save_defaults, BOOL add_ipc);
+void lp_resetnumservices(void);
int lp_numservices(void);
-void lp_dump(FILE *f, BOOL show_defaults);
+void lp_dump(FILE *f, BOOL show_defaults, int maxtoprint);
+void lp_dump_one(FILE *f, BOOL show_defaults, int snum);
int lp_servicenumber(char *pszServiceName);
char *volume_label(int snum);
void lp_remove_service(int snum);
@@ -1644,9 +1229,10 @@ int lp_minor_announce_version(void);
void lp_set_name_resolve_order(char *new_order);
void lp_set_kernel_oplocks(BOOL val);
BOOL lp_kernel_oplocks(void);
-int lp_server_role(void);
-BOOL lp_domain_master(void);
-BOOL lp_preferred_master(void);
+int lp_security_mask(int snum);
+int lp_force_security_mode(int snum);
+int lp_dir_security_mask(int snum);
+int lp_force_dir_security_mode(int snum);
/*The following definitions come from param/params.c */
@@ -1656,54 +1242,11 @@ BOOL pm_process( char *FileName,
/*The following definitions come from passdb/ldap.c */
-BOOL ldap_connect(void);
-void ldap_disconnect(void);
-BOOL ldap_search_for(char *filter);
-BOOL ldap_search_by_name(const char *user);
-BOOL ldap_search_by_uid(int uid);
-BOOL ldap_get_attribute(char *attribute, char *value);
-struct smb_passwd *ldap_getpw(void);
-BOOL ldap_allocaterid(uint32 *rid);
-struct smb_passdb_ops *ldap_initialise_password_db(void);
-
-/*The following definitions come from passdb/mysqlpass.c */
-
-int mysql_db_lock_connect( MYSQL *handle );
-void *mysql_startpwent( BOOL update );
-void mysql_endpwent( void *ptr );
-SMB_BIG_UINT mysql_getpwpos(void *vp);
-BOOL mysql_setpwpos(void *vp, SMB_BIG_UINT pos);
-void *mysql_fill_smb_passwd( MYSQL_ROW *row );
-struct smb_passwd *mysql_getsmbpwent(void *vp);
-void *mysql_fetch_passwd( void *(*filler)(MYSQL_ROW*), char *where );
-void *mysql_getpwuid(void *(*filler)(MYSQL_ROW *), uid_t uid);
-struct smb_passwd *mysql_getsmbpwuid(uid_t uid);
-void *mysql_getpwnam(void *(*filler)(MYSQL_ROW *), char *field, const char *name);
-struct smb_passwd *mysql_getsmbpwnam(const char *unix_name);
-BOOL mysql_del_smb( MYSQL *handle, char *unix_name );
-BOOL mysql_add_smb( MYSQL *handle, struct smb_passwd *smb );
-BOOL mysql_mod_smb( MYSQL *handle, struct smb_passwd *smb, BOOL override );
-BOOL mysql_add_smbpwd_entry(struct smb_passwd *smb);
-BOOL mysql_mod_smbpwd_entry(struct smb_passwd *smb, BOOL override);
-struct smb_passdb_ops *mysql_initialise_password_db(void);
-
-/*The following definitions come from passdb/mysqlsampass.c */
-
-void *mysql_fill_sam_passwd( MYSQL_ROW *row );
-struct sam_passwd *mysql_getsampwent(void *vp);
-struct sam_passwd *mysql_getsampwrid(uint32 rid);
-struct sam_passwd *mysql_getsampwuid(uid_t uid);
-struct sam_passwd *mysql_getsampwntnam(const char *nt_name);
-struct sam_disp_info *mysql_getsamdispntnam(const char *nt_name);
-struct sam_disp_info *mysql_getsamdisprid(uint32 rid);
-struct sam_disp_info *mysql_getsamdispent(void *vp);
-BOOL mysql_add_sampwd_entry(struct sam_passwd *sam);
-BOOL mysql_mod_sampwd_entry(struct sam_passwd *sam, BOOL override);
-struct sam_passdb_ops *mysql_initialise_sam_password_db(void);
+struct passdb_ops *ldap_initialize_password_db(void);
/*The following definitions come from passdb/nispass.c */
-struct passdb_ops *nisplus_initialise_password_db(void);
+struct passdb_ops *nisplus_initialize_password_db(void);
/*The following definitions come from passdb/pass_check.c */
@@ -1713,144 +1256,84 @@ BOOL pass_check(char *user,char *password, int pwlen, struct passwd *pwd,
/*The following definitions come from passdb/passdb.c */
-BOOL initialise_password_db(void);
-struct smb_passwd *iterate_getsmbpwuid(uid_t unix_uid);
-struct smb_passwd *iterate_getsmbpwnam(const char *name);
+BOOL initialize_password_db(void);
+struct smb_passwd *iterate_getsmbpwrid(uint32 user_rid);
+struct smb_passwd *iterate_getsmbpwuid(uid_t smb_userid);
+struct smb_passwd *iterate_getsmbpwnam(char *name);
void *startsmbpwent(BOOL update);
void endsmbpwent(void *vp);
-SMB_BIG_UINT getsmbpwpos(void *vp);
-BOOL setsmbpwpos(void *vp, SMB_BIG_UINT tok);
struct smb_passwd *getsmbpwent(void *vp);
BOOL add_smbpwd_entry(struct smb_passwd *newpwd);
BOOL mod_smbpwd_entry(struct smb_passwd* pwd, BOOL override);
-struct smb_passwd *getsmbpwnam(const char *name);
-struct smb_passwd *getsmbpwuid(uid_t unix_uid);
-void pwdb_init_smb(struct smb_passwd *user);
-struct smb_passwd *pwdb_smb_map_names(struct smb_passwd *smb);
-
-/*The following definitions come from passdb/passgrp.c */
-
-BOOL initialise_passgrp_db(void);
-struct smb_passwd *iterate_getsmbgrprid(uint32 user_rid,
- uint32 **grps, int *num_grps,
- uint32 **alss, int *num_alss);
-struct smb_passwd *iterate_getsmbgrpuid(uid_t unix_uid,
- uint32 **grps, int *num_grps,
- uint32 **alss, int *num_alss);
-struct smb_passwd *iterate_getsmbgrpntnam(const char *nt_name,
- uint32 **grps, int *num_grps,
- uint32 **alss, int *num_alss);
-void *startsmbgrpent(BOOL update);
-void endsmbgrpent(void *vp);
-struct smb_passwd *getsmbgrpent(void *vp,
- uint32 **grps, int *num_grps,
- uint32 **alss, int *num_alss);
-struct smb_passwd *getsmbgrpntnam(char *name,
- uint32 **grps, int *num_grps,
- uint32 **alss, int *num_alss);
-struct smb_passwd *getsmbgrprid(uint32 user_rid,
- uint32 **grps, int *num_grps,
- uint32 **alss, int *num_alss);
-struct smb_passwd *getsmbgrpuid(uid_t unix_uid,
- uint32 **grps, int *num_grps,
- uint32 **alss, int *num_alss);
-
-/*The following definitions come from passdb/passgrpldap.c */
-
-struct passgrp_ops *ldap_initialise_password_grp(void);
-
-/*The following definitions come from passdb/sampass.c */
-
-struct sam_passdb_ops *file_initialise_sam_password_db(void);
-
-/*The following definitions come from passdb/sampassdb.c */
-
-BOOL initialise_sam_password_db(void);
-void *startsam21pwent(BOOL update);
-void endsam21pwent(void *vp);
-struct sam_passwd *getsam21pwent(void *vp);
-BOOL mod_sam21pwd_entry(struct sam_passwd* pwd, BOOL override);
-struct sam_passwd *iterate_getsam21pwntnam(const char *ntname);
+struct smb_passwd *getsmbpwnam(char *name);
+struct smb_passwd *getsmbpwrid(uint32 user_rid);
+struct smb_passwd *getsmbpwuid(uid_t smb_userid);
+struct sam_passwd *iterate_getsam21pwnam(char *name);
struct sam_passwd *iterate_getsam21pwrid(uint32 rid);
struct sam_passwd *iterate_getsam21pwuid(uid_t uid);
struct sam_disp_info *getsamdisprid(uint32 rid);
-struct sam_passwd *getsam21pwntnam(const char *name);
+struct sam_passwd *getsam21pwent(void *vp);
+struct sam_passwd *getsam21pwnam(char *name);
struct sam_passwd *getsam21pwrid(uint32 rid);
-void pwdb_init_sam(struct sam_passwd *user);
-struct sam_disp_info *pwdb_sam_to_dispinfo(struct sam_passwd *user);
-void copy_id23_to_sam_passwd(struct sam_passwd *to, const SAM_USER_INFO_23 *from);
-void copy_sam_passwd(struct sam_passwd *to, const struct sam_passwd *from);
-struct smb_passwd *pwdb_sam_to_smb(struct sam_passwd *user);
-struct sam_passwd *pwdb_smb_to_sam(struct smb_passwd *user);
-struct sam_passwd *pwdb_sam_map_names(struct sam_passwd *sam);
-
-/*The following definitions come from passdb/sampassldap.c */
-
-BOOL ldap_search_by_rid(uint32 rid);
-BOOL ldap_search_by_ntname(const char *ntname);
-struct sam_passdb_ops *ldap_initialise_sam_password_db(void);
+void pdb_init_smb(struct smb_passwd *user);
+void pdb_init_sam(struct sam_passwd *user);
+struct sam_disp_info *pdb_sam_to_dispinfo(struct sam_passwd *user);
+struct smb_passwd *pdb_sam_to_smb(struct sam_passwd *user);
+struct sam_passwd *pdb_smb_to_sam(struct smb_passwd *user);
+char *pdb_encode_acct_ctrl(uint16 acct_ctrl, size_t length);
+uint16 pdb_decode_acct_ctrl(const char *p);
+time_t pdb_get_last_set_time(const char *p);
+void pdb_set_logon_time(char *p, int max_len, time_t t);
+void pdb_set_logoff_time(char *p, int max_len, time_t t);
+void pdb_set_kickoff_time(char *p, int max_len, time_t t);
+void pdb_set_can_change_time(char *p, int max_len, time_t t);
+void pdb_set_must_change_time(char *p, int max_len, time_t t);
+void pdb_set_last_set_time(char *p, int max_len, time_t t);
+void pdb_sethexpwd(char *p, unsigned char *pwd, uint16 acct_ctrl);
+BOOL pdb_gethexpwd(char *p, unsigned char *pwd);
+BOOL pdb_name_to_rid(char *user_name, uint32 *u_rid, uint32 *g_rid);
+BOOL pdb_generate_sam_sid(void);
+uid_t pdb_user_rid_to_uid(uint32 user_rid);
+gid_t pdb_user_rid_to_gid(uint32 user_rid);
+uint32 pdb_uid_to_user_rid(uid_t uid);
+uint32 pdb_gid_to_group_rid(gid_t gid);
+BOOL pdb_rid_is_user(uint32 rid);
+BOOL lookup_local_rid(uint32 rid, char *name, uint8 *psid_name_use);
+BOOL lookup_local_name(char *domain, char *user, DOM_SID *psid, uint8 *psid_name_use);
/*The following definitions come from passdb/smbpass.c */
-struct smb_passwd *getsmbfilepwent(void *vp);
-struct smb_passdb_ops *file_initialise_password_db(void);
+struct passdb_ops *file_initialize_password_db(void);
/*The following definitions come from passdb/smbpasschange.c */
-BOOL local_password_change(char *user_name,
- BOOL add_user,
- uint16 acb_info, uint16 acb_mask,
- char *new_passwd,
- char *err_str, size_t err_str_len,
- char *msg_str, size_t msg_str_len);
+BOOL local_password_change(char *user_name, BOOL trust_account, BOOL add_user,
+ BOOL enable_user, BOOL disable_user, BOOL set_no_password,
+ char *new_passwd,
+ char *err_str, size_t err_str_len,
+ char *msg_str, size_t msg_str_len);
/*The following definitions come from passdb/smbpassfile.c */
+BOOL pw_file_lock(int fd, int type, int secs, int *plock_depth);
+BOOL pw_file_unlock(int fd, int *plock_depth);
BOOL trust_password_lock( char *domain, char *name, BOOL update);
BOOL trust_password_unlock(void);
BOOL trust_password_delete( char *domain, char *name );
BOOL get_trust_account_password( unsigned char *ret_pwd, time_t *pass_last_set_time);
BOOL set_trust_account_password( unsigned char *md4_new_pwd);
BOOL trust_get_passwd( unsigned char trust_passwd[16], char *domain, char *myname);
-BOOL create_trust_account_file(char *domain, char *name, uchar pass[16]);
-
-/*The following definitions come from passdb/smbpassgroup.c */
-
-struct passgrp_ops *file_initialise_password_grp(void);
-
-/*The following definitions come from passdb/smbpassgroupunix.c */
-
-struct passgrp_ops *unix_initialise_password_grp(void);
-
-/*The following definitions come from printing/nt_printing.c */
-
-int get_ntforms(nt_forms_struct **list);
-int write_ntforms(nt_forms_struct **list, int number);
-void add_a_form(nt_forms_struct **list, FORM form, int *count);
-void update_a_form(nt_forms_struct **list, FORM form, int count);
-int get_ntdrivers(fstring **list, char *architecture);
-void get_short_archi(char *short_archi, char *long_archi);
-void dump_a_param(NT_PRINTER_PARAM *param);
-BOOL add_a_specific_param(NT_PRINTER_INFO_LEVEL_2 *info_2, NT_PRINTER_PARAM *param);
-BOOL unlink_specific_param_if_exist(NT_PRINTER_INFO_LEVEL_2 *info_2, NT_PRINTER_PARAM *param);
-uint32 add_a_printer(NT_PRINTER_INFO_LEVEL printer, uint32 level);
-uint32 get_a_printer(NT_PRINTER_INFO_LEVEL *printer, uint32 level, fstring sharename);
-uint32 free_a_printer(NT_PRINTER_INFO_LEVEL printer, uint32 level);
-uint32 add_a_printer_driver(NT_PRINTER_DRIVER_INFO_LEVEL driver, uint32 level);
-uint32 get_a_printer_driver(NT_PRINTER_DRIVER_INFO_LEVEL *driver, uint32 level,
- fstring printername, fstring architecture);
-uint32 free_a_printer_driver(NT_PRINTER_DRIVER_INFO_LEVEL driver, uint32 level);
-BOOL get_specific_param_by_index(NT_PRINTER_INFO_LEVEL printer, uint32 level, uint32 param_index,
- fstring value, uint8 **data, uint32 *type, uint32 *len);
-BOOL get_specific_param(NT_PRINTER_INFO_LEVEL printer, uint32 level,
- fstring value, uint8 **data, uint32 *type, uint32 *len);
-void init_devicemode(NT_DEVICEMODE *nt_devmode);
/*The following definitions come from printing/pcap.c */
BOOL pcap_printername_ok(char *pszPrintername, char *pszPrintcapname);
void pcap_printer_fn(void (*fn)(char *, char *));
+/*The following definitions come from printing/print_cups.c */
+
+void cups_printer_fn(void (*fn)(char *, char *));
+int cups_printername_ok(char *name);
+
/*The following definitions come from printing/print_svid.c */
void sysv_printer_fn(void (*fn)(char *, char *));
@@ -1859,8 +1342,9 @@ int sysv_printername_ok(char *name);
/*The following definitions come from printing/printing.c */
void lpq_reset(int snum);
-void print_file(connection_struct *conn, int snum, files_struct *file);
-int get_printqueue(int snum, connection_struct *conn, print_queue_struct **queue,
+void print_file(connection_struct *conn, files_struct *file);
+int get_printqueue(int snum,
+ connection_struct *conn,print_queue_struct **queue,
print_status_struct *status);
void del_printqueue(connection_struct *conn,int snum,int jobid);
void status_printjob(connection_struct *conn,int snum,int jobid,int status);
@@ -1873,867 +1357,315 @@ void load_printers(void);
BOOL profile_setup(BOOL rdonly);
-/*The following definitions come from rpc_client/cli_atsvc.c */
-
-BOOL at_add_job(
- char *srv_name, AT_JOB_INFO *info, char *command,
- uint32 *jobid);
-BOOL at_del_job( char *srv_name, uint32 min_jobid, uint32 max_jobid);
-BOOL at_enum_jobs( char *srv_name, uint32 *num_jobs,
- AT_ENUM_INFO *jobs, char ***commands);
-BOOL at_query_job(char *srv_name,
- uint32 jobid, AT_JOB_INFO *job, fstring command);
-
-/*The following definitions come from rpc_client/cli_brs.c */
-
-BOOL brs_query_info( const char *srv_name, uint32 switch_value,
- void *id);
-
-/*The following definitions come from rpc_client/cli_connect.c */
-
-void init_connections(void);
-void free_connections(void);
-void cli_connection_free(struct cli_connection *con);
-void cli_connection_unlink(struct cli_connection *con);
-BOOL cli_connection_init(const char* srv_name, const char* pipe_name,
- struct cli_connection **con);
-BOOL cli_connection_getsrv(const char* srv_name, const char* pipe_name,
- struct cli_connection **con);
-BOOL cli_connection_get(const POLICY_HND *pol, struct cli_connection **con);
-BOOL cli_pol_link(POLICY_HND *to, const POLICY_HND *from);
-BOOL cli_get_con_usr_sesskey(struct cli_connection *con, uchar usr_sess_key[16]);
-BOOL cli_get_con_sesskey(struct cli_connection *con, uchar sess_key[16]);
-BOOL cli_con_get_srvname(struct cli_connection *con, char *srv_name);
-BOOL cli_get_usr_sesskey(const POLICY_HND *pol, uchar usr_sess_key[16]);
-BOOL cli_get_sesskey(const POLICY_HND *pol, uchar sess_key[16]);
-BOOL cli_get_sesskey_srv(const char* srv_name, uchar sess_key[16]);
-void cli_con_gen_next_creds(struct cli_connection *con,
- DOM_CRED *new_clnt_cred);
-void cli_con_get_cli_cred(struct cli_connection *con,
- DOM_CRED *clnt_cred);
-BOOL cli_con_deal_with_creds(struct cli_connection *con,
- DOM_CRED *rcv_srv_cred);
-BOOL cli_con_set_creds(const char* srv_name, const uchar sess_key[16],
- DOM_CRED *cred);
-BOOL rpc_hnd_pipe_req(const POLICY_HND *hnd, uint8 op_num,
- prs_struct *data, prs_struct *rdata);
-BOOL rpc_con_pipe_req(struct cli_connection *con, uint8 op_num,
- prs_struct *data, prs_struct *rdata);
-
-/*The following definitions come from rpc_client/cli_eventlog.c */
-
-BOOL event_open(const char* srv_name, const char *log, POLICY_HND *hnd);
-BOOL event_close( POLICY_HND *hnd);
-BOOL event_numofeventlogrec( POLICY_HND *hnd, uint32 *number);
-BOOL event_readeventlog(POLICY_HND *hnd,
- uint32 number, uint32 flags, uint32 offset,
- uint32 *number_of_bytes, EVENTLOGRECORD *ev);
-
/*The following definitions come from rpc_client/cli_login.c */
-uint32 cli_nt_setup_creds( const char* srv_name, const char* myhostname,
- const char* trust_acct,
- unsigned char trust_pwd[16],
- uint16 sec_chan);
-BOOL cli_nt_srv_pwset(const char* srv_name, const char* myhostname,
- const char* trust_acct,
- unsigned char *new_hashof_trust_pwd,
- uint16 sec_chan);
-BOOL cli_nt_login_interactive(const char* srv_name, const char* myhostname,
- const char *domain, const char *username,
- uint32 luid_low, char *password,
- NET_ID_INFO_CTR *ctr,
- NET_USER_INFO_3 *user_info3);
-BOOL cli_nt_login_network(const char* srv_name, const char* myhostname,
- const char *domain, const char *username,
- uint32 luid_low, char lm_chal[8],
- char lm_chal_resp[24],
- char nt_chal_resp[24],
- NET_ID_INFO_CTR *ctr,
- NET_USER_INFO_3 *user_info3);
-BOOL cli_nt_logoff(const char* srv_name, const char* myhostname,
- NET_ID_INFO_CTR *ctr);
-BOOL net_sam_sync(const char* srv_name, const char* myhostname,
- const char* trust_acct,
- uchar trust_passwd[16],
- SAM_DELTA_HDR hdr_deltas[MAX_SAM_DELTAS],
- SAM_DELTA_CTR deltas [MAX_SAM_DELTAS],
- uint32 *num_deltas);
+BOOL cli_nt_setup_creds(struct cli_state *cli, unsigned char mach_pwd[16]);
+BOOL cli_nt_srv_pwset(struct cli_state *cli, unsigned char *new_hashof_mach_pwd);
+BOOL cli_nt_login_interactive(struct cli_state *cli, char *domain, char *username,
+ uint32 smb_userid_low, char *password,
+ NET_ID_INFO_CTR *ctr, NET_USER_INFO_3 *user_info3);
+BOOL cli_nt_login_network(struct cli_state *cli, char *domain, char *username,
+ uint32 smb_userid_low, char lm_chal[8], char lm_chal_resp[24],
+ char nt_chal_resp[24],
+ NET_ID_INFO_CTR *ctr, NET_USER_INFO_3 *user_info3);
+BOOL cli_nt_logoff(struct cli_state *cli, NET_ID_INFO_CTR *ctr);
/*The following definitions come from rpc_client/cli_lsarpc.c */
-BOOL get_domain_sids(const char *domain, DOM_SID *sid3, DOM_SID *sid5);
-BOOL get_trust_sid_and_domain(const char* myname, char *server,
- DOM_SID *sid,
- char *domain, size_t len);
-BOOL lsa_open_policy(const char *server_name, POLICY_HND *hnd,
+BOOL do_lsa_open_policy(struct cli_state *cli,
+ char *server_name, POLICY_HND *hnd,
BOOL sec_qos);
-BOOL lsa_open_policy2( const char *server_name, POLICY_HND *hnd,
- BOOL sec_qos);
-BOOL lsa_open_secret( const POLICY_HND *hnd,
- const char *secret_name,
- uint32 des_access,
- POLICY_HND *hnd_secret);
-BOOL lsa_query_secret(POLICY_HND *hnd, STRING2 *secret,
- NTTIME *last_update);
-BOOL lsa_lookup_names( POLICY_HND *hnd,
- int num_names,
- char **names,
- DOM_SID **sids,
- uint8 **types,
- int *num_sids);
-BOOL lsa_lookup_sids(POLICY_HND *hnd,
+BOOL do_lsa_lookup_sids(struct cli_state *cli,
+ POLICY_HND *hnd,
int num_sids,
DOM_SID **sids,
char ***names,
- uint8 **types,
int *num_names);
-BOOL lsa_query_info_pol(POLICY_HND *hnd, uint16 info_class,
+BOOL do_lsa_query_info_pol(struct cli_state *cli,
+ POLICY_HND *hnd, uint16 info_class,
fstring domain_name, DOM_SID *domain_sid);
-BOOL lsa_enum_trust_dom(POLICY_HND *hnd, uint32 *enum_ctx,
- uint32 *num_doms, char ***names,
- DOM_SID ***sids);
-BOOL lsa_close(POLICY_HND *hnd);
+BOOL do_lsa_close(struct cli_state *cli, POLICY_HND *hnd);
/*The following definitions come from rpc_client/cli_netlogon.c */
-void gen_next_creds( struct cli_state *cli, DOM_CRED *new_clnt_cred);
-BOOL cli_net_logon_ctrl2(const char* srv_name, uint32 status_level);
-uint32 cli_net_auth2(const char *srv_name,
- const char *trust_acct,
- const char *acct_name,
- uint16 sec_chan,
- uint32 neg_flags, DOM_CHAL *srv_chal);
-uint32 cli_net_req_chal( const char *srv_name, const char* myhostname,
- DOM_CHAL *clnt_chal, DOM_CHAL *srv_chal);
-BOOL cli_net_srv_pwset(const char* srv_name,
- const char* myhostname,
- const char* trust_acct,
- uint8 hashed_trust_pwd[16],
- uint16 sec_chan_type);
-BOOL cli_net_sam_logon(const char* srv_name, const char* myhostname,
- NET_ID_INFO_CTR *ctr,
- NET_USER_INFO_3 *user_info3);
-BOOL cli_net_sam_logoff(const char* srv_name, const char* myhostname,
- NET_ID_INFO_CTR *ctr);
-BOOL cli_net_sam_sync( const char* srv_name, const char* myhostname,
- uint32 database_id,
- uint32 *num_deltas,
- SAM_DELTA_HDR *hdr_deltas,
- SAM_DELTA_CTR *deltas);
-
-/*The following definitions come from rpc_client/cli_netlogon_sync.c */
-
-BOOL synchronise_passdb(void);
+BOOL cli_net_logon_ctrl2(struct cli_state *cli, uint32 status_level);
+BOOL cli_net_auth2(struct cli_state *cli, uint16 sec_chan,
+ uint32 neg_flags, DOM_CHAL *srv_chal);
+BOOL cli_net_req_chal(struct cli_state *cli, DOM_CHAL *clnt_chal, DOM_CHAL *srv_chal);
+BOOL cli_net_srv_pwset(struct cli_state *cli, uint8 hashed_mach_pwd[16]);
+BOOL cli_net_sam_logon(struct cli_state *cli, NET_ID_INFO_CTR *ctr,
+ NET_USER_INFO_3 *user_info3);
+BOOL cli_net_sam_logoff(struct cli_state *cli, NET_ID_INFO_CTR *ctr);
+BOOL change_trust_account_password( char *domain, char *remote_machine_list);
/*The following definitions come from rpc_client/cli_pipe.c */
-BOOL create_rpc_bind_resp(struct pwd_info *pwd,
- char *domain, char *user_name, char *my_name,
- uint32 ntlmssp_cli_flgs,
- uint32 rpc_call_id,
- prs_struct *rhdr,
- prs_struct *rhdr_autha,
- prs_struct *auth_resp);
-BOOL rpc_api_pipe_req(struct cli_state *cli, uint16 fnum, uint8 op_num,
+BOOL rpc_api_pipe_req(struct cli_state *cli, uint8 op_num,
prs_struct *data, prs_struct *rdata);
void cli_nt_set_ntlmssp_flgs(struct cli_state *cli, uint32 ntlmssp_flgs);
-BOOL cli_nt_session_open(struct cli_state *cli, const char *pipe_name,
- uint16* fnum);
-void cli_nt_session_close(struct cli_state *cli, uint16 fnum);
+BOOL cli_nt_session_open(struct cli_state *cli, char *pipe_name);
+void cli_nt_session_close(struct cli_state *cli);
/*The following definitions come from rpc_client/cli_reg.c */
-BOOL reg_connect( const char* srv_name,
- const char *full_keyname,
- char *key_name,
+BOOL do_reg_connect(struct cli_state *cli, char *full_keyname, char *key_name,
POLICY_HND *reg_hnd);
-BOOL reg_open_hkcr( struct cli_connection *con,
- uint16 unknown_0, uint32 level,
- POLICY_HND *hnd);
-BOOL reg_open_hklm( struct cli_connection *con,
- uint16 unknown_0, uint32 level,
+BOOL do_reg_open_hklm(struct cli_state *cli, uint16 unknown_0, uint32 level,
POLICY_HND *hnd);
-BOOL reg_open_hku( struct cli_connection *con,
- uint16 unknown_0, uint32 level,
+BOOL do_reg_open_hku(struct cli_state *cli, uint16 unknown_0, uint32 level,
POLICY_HND *hnd);
-BOOL reg_flush_key( POLICY_HND *hnd);
-BOOL reg_query_key( POLICY_HND *hnd,
- char *key_class, uint32 *class_len,
+BOOL do_reg_flush_key(struct cli_state *cli, POLICY_HND *hnd);
+BOOL do_reg_query_key(struct cli_state *cli, POLICY_HND *hnd,
+ char *class, uint32 *class_len,
uint32 *num_subkeys, uint32 *max_subkeylen,
uint32 *max_subkeysize, uint32 *num_values,
uint32 *max_valnamelen, uint32 *max_valbufsize,
uint32 *sec_desc, NTTIME *mod_time);
-BOOL reg_unknown_1a( POLICY_HND *hnd, uint32 *unk);
-BOOL reg_query_info( POLICY_HND *hnd,
- const char* val_name,
- uint32 *type, BUFFER2 *buffer);
-BOOL reg_set_key_sec( POLICY_HND *hnd,
- uint32 sec_info,
- uint32 sec_buf_size, SEC_DESC *sec_buf);
-BOOL reg_get_key_sec( POLICY_HND *hnd,
- uint32 sec_info,
- uint32 *sec_buf_size, SEC_DESC_BUF *sec_buf);
-BOOL reg_delete_val( POLICY_HND *hnd, char *val_name);
-BOOL reg_delete_key( POLICY_HND *hnd, char *key_name);
-BOOL reg_create_key( POLICY_HND *hnd,
+BOOL do_reg_unknown_1a(struct cli_state *cli, POLICY_HND *hnd, uint32 *unk);
+BOOL do_reg_query_info(struct cli_state *cli, POLICY_HND *hnd,
+ char *type, uint32 *unk_0, uint32 *unk_1);
+BOOL do_reg_set_key_sec(struct cli_state *cli, POLICY_HND *hnd, SEC_DESC_BUF *sec_desc_buf);
+BOOL do_reg_get_key_sec(struct cli_state *cli, POLICY_HND *hnd, uint32 *sec_buf_size, SEC_DESC_BUF **ppsec_desc_buf);
+BOOL do_reg_delete_val(struct cli_state *cli, POLICY_HND *hnd, char *val_name);
+BOOL do_reg_delete_key(struct cli_state *cli, POLICY_HND *hnd, char *key_name);
+BOOL do_reg_create_key(struct cli_state *cli, POLICY_HND *hnd,
char *key_name, char *key_class,
SEC_ACCESS *sam_access,
POLICY_HND *key);
-BOOL reg_enum_key( POLICY_HND *hnd,
+BOOL do_reg_enum_key(struct cli_state *cli, POLICY_HND *hnd,
int key_index, char *key_name,
uint32 *unk_1, uint32 *unk_2,
time_t *mod_time);
-BOOL reg_create_val( POLICY_HND *hnd,
+BOOL do_reg_create_val(struct cli_state *cli, POLICY_HND *hnd,
char *val_name, uint32 type, BUFFER3 *data);
-BOOL reg_enum_val( POLICY_HND *hnd,
+BOOL do_reg_enum_val(struct cli_state *cli, POLICY_HND *hnd,
int val_index, int max_valnamelen, int max_valbufsize,
fstring val_name,
uint32 *val_type, BUFFER2 *value);
-BOOL reg_open_entry( POLICY_HND *hnd,
+BOOL do_reg_open_entry(struct cli_state *cli, POLICY_HND *hnd,
char *key_name, uint32 unk_0,
POLICY_HND *key_hnd);
-BOOL reg_close( POLICY_HND *hnd);
-BOOL reg_shutdown(const char *srv_name,
- const char *msg, uint32 timeout, uint16 flags);
+BOOL do_reg_close(struct cli_state *cli, POLICY_HND *hnd);
/*The following definitions come from rpc_client/cli_samr.c */
-BOOL samr_chgpasswd_user( struct cli_connection *con,
+BOOL get_samr_query_usergroups(struct cli_state *cli,
+ POLICY_HND *pol_open_domain, uint32 user_rid,
+ uint32 *num_groups, DOM_GID *gid);
+BOOL get_samr_query_userinfo(struct cli_state *cli,
+ POLICY_HND *pol_open_domain,
+ uint32 info_level,
+ uint32 user_rid, SAM_USER_INFO_21 *usr);
+BOOL do_samr_chgpasswd_user(struct cli_state *cli,
char *srv_name, char *user_name,
char nt_newpass[516], uchar nt_oldhash[16],
char lm_newpass[516], uchar lm_oldhash[16]);
-BOOL samr_unknown_38(struct cli_connection *con, char *srv_name);
-BOOL samr_query_dom_info( POLICY_HND *domain_pol, uint16 switch_value,
- SAM_UNK_CTR *ctr);
-uint32 samr_enum_domains( POLICY_HND *pol,
- uint32 *start_idx, uint32 size,
- struct acct_info **sam,
- uint32 *num_sam_domains);
-uint32 samr_enum_dom_groups( POLICY_HND *pol,
- uint32 *start_idx, uint32 size,
- struct acct_info **sam,
- uint32 *num_sam_groups);
-uint32 samr_enum_dom_aliases( POLICY_HND *pol,
- uint32 *start_idx, uint32 size,
- struct acct_info **sam,
- uint32 *num_sam_aliases);
-uint32 samr_enum_dom_users( POLICY_HND *pol, uint32 *start_idx,
+BOOL do_samr_unknown_38(struct cli_state *cli, char *srv_name);
+BOOL do_samr_query_dom_info(struct cli_state *cli,
+ POLICY_HND *domain_pol, uint16 switch_value);
+BOOL do_samr_enum_dom_users(struct cli_state *cli,
+ POLICY_HND *pol, uint16 num_entries, uint16 unk_0,
uint16 acb_mask, uint16 unk_1, uint32 size,
struct acct_info **sam,
- uint32 *num_sam_users);
-BOOL samr_connect( const char *srv_name, uint32 unknown_0,
+ int *num_sam_users);
+BOOL do_samr_connect(struct cli_state *cli,
+ char *srv_name, uint32 unknown_0,
POLICY_HND *connect_pol);
-BOOL samr_open_user( const POLICY_HND *pol,
- uint32 unk_0, uint32 rid,
+BOOL do_samr_open_user(struct cli_state *cli,
+ POLICY_HND *pol, uint32 unk_0, uint32 rid,
POLICY_HND *user_pol);
-BOOL samr_open_alias( const POLICY_HND *domain_pol,
- uint32 flags, uint32 rid,
- POLICY_HND *alias_pol);
-BOOL samr_del_aliasmem( POLICY_HND *alias_pol, DOM_SID *sid);
-BOOL samr_add_aliasmem( POLICY_HND *alias_pol, DOM_SID *sid);
-BOOL samr_delete_dom_alias( POLICY_HND *alias_pol);
-uint32 samr_create_dom_user( POLICY_HND *domain_pol, const char *acct_name,
- uint32 unk_0, uint32 unk_1,
- POLICY_HND *user_pol, uint32 *rid);
-BOOL samr_create_dom_alias( POLICY_HND *domain_pol, const char *acct_name,
- POLICY_HND *alias_pol, uint32 *rid);
-BOOL samr_query_aliasinfo( POLICY_HND *alias_pol, uint16 switch_value,
- ALIAS_INFO_CTR *ctr);
-BOOL samr_set_aliasinfo( POLICY_HND *alias_pol, ALIAS_INFO_CTR *ctr);
-BOOL samr_open_group( const POLICY_HND *domain_pol,
- uint32 flags, uint32 rid,
- POLICY_HND *group_pol);
-BOOL samr_del_groupmem( POLICY_HND *group_pol, uint32 rid);
-BOOL samr_add_groupmem( POLICY_HND *group_pol, uint32 rid);
-BOOL samr_delete_dom_group( POLICY_HND *group_pol);
-BOOL samr_create_dom_group( POLICY_HND *domain_pol, const char *acct_name,
- POLICY_HND *group_pol, uint32 *rid);
-BOOL samr_set_groupinfo( POLICY_HND *group_pol, GROUP_INFO_CTR *ctr);
-BOOL samr_open_domain( const POLICY_HND *connect_pol,
- uint32 ace_perms,
- const DOM_SID *sid,
+BOOL do_samr_open_domain(struct cli_state *cli,
+ POLICY_HND *connect_pol, uint32 rid, DOM_SID *sid,
POLICY_HND *domain_pol);
-BOOL samr_query_lookup_domain( POLICY_HND *pol, const char *dom_name,
- DOM_SID *dom_sid);
-BOOL samr_query_lookup_names( POLICY_HND *pol, uint32 flags,
- uint32 num_names, char **names,
- uint32 *num_rids,
- uint32 rid[MAX_LOOKUP_SIDS],
- uint32 type[MAX_LOOKUP_SIDS]);
-BOOL samr_query_lookup_rids( const POLICY_HND *pol, uint32 flags,
- uint32 num_rids, uint32 *rids,
- uint32 *num_names,
- char ***names,
- uint32 **type);
-BOOL samr_query_aliasmem( const POLICY_HND *alias_pol,
- uint32 *num_mem, DOM_SID2 *sid);
-BOOL samr_query_useraliases( const POLICY_HND *pol,
- uint32 *ptr_sid, DOM_SID2 *sid,
- uint32 *num_aliases, uint32 **rid);
-BOOL samr_query_groupmem( POLICY_HND *group_pol,
- uint32 *num_mem, uint32 **rid, uint32 **attr);
-BOOL samr_query_usergroups( POLICY_HND *pol, uint32 *num_groups,
- DOM_GID **gid);
-BOOL samr_query_groupinfo( POLICY_HND *pol,
- uint16 switch_value, GROUP_INFO_CTR* ctr);
-BOOL samr_set_userinfo2( POLICY_HND *pol, uint16 switch_value,
- void* usr);
-BOOL samr_set_userinfo( POLICY_HND *pol, uint16 switch_value, void* usr);
-BOOL samr_query_userinfo( POLICY_HND *pol, uint16 switch_value, void* usr);
-BOOL samr_close( POLICY_HND *hnd);
-BOOL samr_query_dispinfo( POLICY_HND *pol_domain, uint16 level,
- uint32 *num_entries,
- SAM_DISPINFO_CTR *ctr);
-
-/*The following definitions come from rpc_client/cli_spoolss.c */
-
-BOOL spoolss_enum_printers(uint32 flags, const char *srv_name,
- uint32 level,
- uint32 *count,
- void ***printers);
-uint32 spoolss_enum_jobs( const POLICY_HND *hnd,
- uint32 firstjob,
- uint32 numofjobs,
- uint32 level,
- uint32 *buf_size,
- uint32 *count,
- void ***jobs);
-BOOL spoolss_open_printer_ex( const char *printername,
- uint32 cbbuf, uint32 devmod, uint32 des_access,
- const char *station, const char *username,
- POLICY_HND *hnd);
-BOOL spoolss_closeprinter(POLICY_HND *hnd);
+BOOL do_samr_query_unknown_12(struct cli_state *cli,
+ POLICY_HND *pol, uint32 rid, uint32 num_gids, uint32 *gids,
+ uint32 *num_aliases,
+ fstring als_names [MAX_LOOKUP_SIDS],
+ uint32 num_als_users[MAX_LOOKUP_SIDS]);
+BOOL do_samr_query_usergroups(struct cli_state *cli,
+ POLICY_HND *pol, uint32 *num_groups, DOM_GID *gid);
+BOOL do_samr_query_userinfo(struct cli_state *cli,
+ POLICY_HND *pol, uint16 switch_value, void* usr);
+BOOL do_samr_close(struct cli_state *cli, POLICY_HND *hnd);
/*The following definitions come from rpc_client/cli_srvsvc.c */
-BOOL srv_net_srv_tprt_enum(
- const char *srv_name,
- uint32 switch_value, SRV_TPRT_INFO_CTR *ctr,
- uint32 preferred_len,
- ENUM_HND *hnd);
-BOOL srv_net_srv_conn_enum( char *srv_name, char *qual_name,
+BOOL do_srv_net_srv_conn_enum(struct cli_state *cli,
+ char *server_name, char *qual_name,
uint32 switch_value, SRV_CONN_INFO_CTR *ctr,
uint32 preferred_len,
ENUM_HND *hnd);
-BOOL srv_net_srv_sess_enum( char *srv_name, char *qual_name, char *user_name,
+BOOL do_srv_net_srv_sess_enum(struct cli_state *cli,
+ char *server_name, char *qual_name,
uint32 switch_value, SRV_SESS_INFO_CTR *ctr,
uint32 preferred_len,
ENUM_HND *hnd);
-BOOL srv_net_srv_share_enum( char *srv_name,
- uint32 switch_value, SRV_SHARE_INFO_CTR *ctr,
- uint32 preferred_len,
- ENUM_HND *hnd);
-BOOL srv_net_srv_file_enum( char *srv_name, char *qual_name, uint32 file_id,
+BOOL do_srv_net_srv_share_enum(struct cli_state *cli,
+ char *server_name,
+ uint32 switch_value, SRV_R_NET_SHARE_ENUM *r_o,
+ uint32 preferred_len, ENUM_HND *hnd);
+BOOL do_srv_net_srv_file_enum(struct cli_state *cli,
+ char *server_name, char *qual_name,
uint32 switch_value, SRV_FILE_INFO_CTR *ctr,
uint32 preferred_len,
ENUM_HND *hnd);
-BOOL srv_net_srv_get_info( char *srv_name, uint32 switch_value,
- SRV_INFO_CTR *ctr);
-BOOL srv_net_remote_tod( char *srv_name, TIME_OF_DAY_INFO *tod);
-
-/*The following definitions come from rpc_client/cli_svcctl.c */
-
-BOOL svc_open_sc_man( const char *srv_name, char *db_name,
- uint32 des_access,
- POLICY_HND *hnd);
-BOOL svc_open_service( POLICY_HND *scm_hnd,
- const char *srv_name,
- uint32 des_access,
- POLICY_HND *hnd);
-BOOL svc_enum_svcs( POLICY_HND *hnd,
- uint32 services_type, uint32 services_state,
- uint32 *buf_size, uint32 *resume_hnd,
- uint32 *dos_error,
- ENUM_SRVC_STATUS **svcs, uint32 *num_svcs);
-BOOL svc_stop_service( POLICY_HND *hnd,
- uint32 unknown);
-BOOL svc_start_service( POLICY_HND *hnd,
- uint32 argc,
- char **argv);
-BOOL svc_query_svc_cfg( POLICY_HND *hnd,
- QUERY_SERVICE_CONFIG *cfg,
- uint32 *buf_size);
-BOOL svc_close(POLICY_HND *hnd);
-BOOL svc_change_svc_cfg( POLICY_HND *hnd,
- uint32 service_type, uint32 start_type,
- uint32 unknown_0,
- uint32 error_control,
- char* bin_path_name, char* load_order_grp,
- uint32 tag_id,
- char* dependencies, char* service_start_name,
- char* password,
- char* disp_name);
-
-/*The following definitions come from rpc_client/cli_use.c */
-
-void init_cli_use(void);
-void free_cli_use(void);
-struct cli_state *cli_net_use_add(const char* srv_name,
- const struct ntuser_creds *usr_creds,
- BOOL redir,
- BOOL reuse);
-BOOL cli_net_use_del(const char* srv_name,
- const struct ntuser_creds *usr_creds,
- BOOL force_close,
- BOOL *connection_closed);
-void cli_net_use_enum(uint32 *num_cons, struct use_info ***use);
-void cli_use_wait_keyboard(void);
+BOOL do_srv_net_srv_get_info(struct cli_state *cli,
+ char *server_name, uint32 switch_value, SRV_INFO_CTR *ctr);
/*The following definitions come from rpc_client/cli_wkssvc.c */
-BOOL wks_query_info( char *srv_name, uint32 switch_value,
+BOOL do_wks_query_info(struct cli_state *cli,
+ char *server_name, uint32 switch_value,
WKS_INFO_100 *wks100);
-/*The following definitions come from rpc_client/msrpc_lsarpc.c */
-
-BOOL msrpc_lsa_query_secret(const char* srv_name,
- const char* secret_name,
- STRING2 *secret,
- NTTIME *last_update);
-
-/*The following definitions come from rpc_client/msrpc_netlogon.c */
-
-BOOL check_domain_security(char *orig_user, char *domain,
- uchar *challenge,
- char *smb_apasswd, int smb_apasslen,
- char *smb_ntpasswd, int smb_ntpasslen,
- uchar user_sess_key[16]);
-
-/*The following definitions come from rpc_client/msrpc_samr.c */
-
-BOOL req_user_info( const POLICY_HND *pol_dom,
- const char *domain,
- const DOM_SID *sid,
- uint32 user_rid,
- USER_INFO_FN(usr_inf));
-uint32 sam_query_usergroups(
- const POLICY_HND *pol_dom,
- const char *domain,
- const DOM_SID *sid,
- uint32 user_rid,
- const char *user_name,
- uint32 *num_groups,
- DOM_GID **gid,
- char ***name,
- uint32 **type,
- USER_MEM_FN(usr_mem));
-void msrpc_sam_user( const POLICY_HND *pol_dom, const POLICY_HND *pol_blt,
- const char* domain,
- const DOM_SID *sid1,
- const DOM_SID *blt_sid1,
- uint32 user_rid,
- char *user_name,
- USER_FN(usr_fn),
- USER_INFO_FN(usr_inf_fn),
- USER_MEM_FN(usr_grp_fn),
- USER_MEM_FN(usr_als_fn));
-BOOL msrpc_sam_query_user( const char* srv_name,
- const char* domain,
- const DOM_SID *sid,
- char *user_name,
- USER_FN(usr_fn),
- USER_INFO_FN(usr_inf_fn),
- USER_MEM_FN(usr_grp_fn),
- USER_MEM_FN(usr_als_fn));
-int msrpc_sam_enum_users( const char* srv_name,
- const char* domain,
- const DOM_SID *sid1,
- struct acct_info **sam,
- uint32 *num_sam_entries,
- USER_FN(usr_fn),
- USER_INFO_FN(usr_inf_fn),
- USER_MEM_FN(usr_grp_fn),
- USER_MEM_FN(usr_als_fn));
-BOOL sam_query_dominfo(const char* srv_name,
- const DOM_SID *sid1,
- uint32 switch_value, SAM_UNK_CTR *ctr);
-BOOL query_aliasinfo(
- const POLICY_HND *pol_dom,
- const char *domain,
- const DOM_SID *sid,
- uint32 alias_rid,
- ALIAS_INFO_FN(grp_inf));
-BOOL sam_query_aliasmem(const char *srv_name,
- const POLICY_HND *pol_dom,
- uint32 alias_rid,
- uint32 *num_names,
- DOM_SID ***sids,
- char ***name,
- uint8 **type);
-BOOL req_aliasmem_info(const char* srv_name,
- const POLICY_HND *pol_dom,
- const char *domain,
- const DOM_SID *sid,
- uint32 alias_rid,
- const char *alias_name,
- ALIAS_MEM_FN(als_mem));
-BOOL sam_query_groupmem(
- const POLICY_HND *pol_dom,
- uint32 group_rid,
- uint32 *num_names,
- uint32 **rid_mem,
- char ***name,
- uint32 **type);
-BOOL query_groupinfo( const POLICY_HND *pol_dom,
- const char *domain,
- const DOM_SID *sid,
- uint32 group_rid,
- GROUP_INFO_FN(grp_inf));
-BOOL req_groupmem_info( const POLICY_HND *pol_dom,
- const char *domain,
- const DOM_SID *sid,
- uint32 group_rid,
- const char *group_name,
- GROUP_MEM_FN(grp_mem));
-uint32 msrpc_sam_enum_domains( const char* srv_name,
- struct acct_info **sam,
- uint32 *num_sam_entries,
- DOMAIN_FN(dom_fn),
- DOMAIN_INFO_FN(dom_inf_fn));
-uint32 msrpc_sam_enum_groups( const char* srv_name,
- const char* domain,
- const DOM_SID *sid1,
- struct acct_info **sam,
- uint32 *num_sam_entries,
- GROUP_FN(grp_fn),
- GROUP_INFO_FN(grp_inf_fn),
- GROUP_MEM_FN(grp_mem_fn));
-uint32 msrpc_sam_enum_aliases( const char* srv_name,
- const char* domain,
- const DOM_SID *sid1,
- struct acct_info **sam,
- uint32 *num_sam_entries,
- ALIAS_FN(als_fn),
- ALIAS_INFO_FN(als_inf_fn),
- ALIAS_MEM_FN(als_mem_fn));
-BOOL create_samr_domain_user( POLICY_HND *pol_dom,
- char *acct_name, uint16 acb_info,
- const char* password, int plen,
- uint32 *rid);
-BOOL create_samr_domain_alias( POLICY_HND *pol_open_domain,
- const char *acct_name, const char *acct_desc,
- uint32 *rid);
-BOOL create_samr_domain_group(
- POLICY_HND *pol_open_domain,
- const char *acct_name, const char *acct_desc,
- uint32 *rid);
-BOOL get_samr_query_usergroups( const POLICY_HND *pol_open_domain,
- uint32 user_rid,
- uint32 *num_groups, DOM_GID **gid);
-BOOL delete_samr_dom_group(
- POLICY_HND *pol_open_domain,
- uint32 group_rid);
-BOOL get_samr_query_groupmem(
- const POLICY_HND *pol_open_domain,
- uint32 group_rid, uint32 *num_mem,
- uint32 **rid, uint32 **attr);
-BOOL delete_samr_dom_alias(
- POLICY_HND *pol_open_domain,
- uint32 alias_rid);
-BOOL get_samr_query_aliasmem(
- const POLICY_HND *pol_open_domain,
- uint32 alias_rid, uint32 *num_mem, DOM_SID2 *sid);
-BOOL set_samr_set_userinfo2(
- POLICY_HND *pol_open_domain,
- uint32 info_level,
- uint32 user_rid, void *usr);
-BOOL set_samr_set_userinfo(
- POLICY_HND *pol_open_domain,
- uint32 info_level,
- uint32 user_rid, void *usr);
-BOOL get_samr_query_userinfo(
- const POLICY_HND *pol_open_domain,
- uint32 info_level,
- uint32 user_rid, void *usr);
-BOOL get_samr_query_groupinfo(
- const POLICY_HND *pol_open_domain,
- uint32 info_level,
- uint32 group_rid, GROUP_INFO_CTR *ctr);
-BOOL get_samr_query_aliasinfo(
- const POLICY_HND *pol_open_domain,
- uint32 info_level,
- uint32 alias_rid, ALIAS_INFO_CTR *ctr);
-BOOL msrpc_sam_create_dom_user(const char* srv_name, DOM_SID *sid1,
- char *acct_name, uint16 acb_info,
- const char *password, int plen,
- uint32 *rid);
-BOOL msrpc_sam_query_dispinfo(const char* srv_name, const char* domain,
- DOM_SID *sid1,
- uint16 switch_value,
- uint32 *num_entries, SAM_DISPINFO_CTR *ctr,
- DISP_FN(disp_fn));
-
-/*The following definitions come from rpc_parse/parse_at.c */
-
-BOOL make_at_q_add_job(AT_Q_ADD_JOB *q_a, char *server,
- AT_JOB_INFO *info, char *command);
-BOOL at_io_job_info(char *desc, AT_JOB_INFO *info, prs_struct *ps, int depth);
-BOOL at_io_q_add_job(char *desc, AT_Q_ADD_JOB *q_a, prs_struct *ps, int depth);
-BOOL at_io_r_add_job(char *desc, AT_R_ADD_JOB *r_a, prs_struct *ps, int depth);
-BOOL make_at_q_del_job(AT_Q_DEL_JOB *q_a, char *server, uint32 min_jobid,
- uint32 max_jobid);
-BOOL at_io_q_del_job(char *desc, AT_Q_DEL_JOB *q_d, prs_struct *ps, int depth);
-BOOL at_io_r_del_job(char *desc, AT_R_DEL_JOB *r_d, prs_struct *ps, int depth);
-BOOL make_at_q_enum_jobs(AT_Q_ENUM_JOBS *q_e, char *server);
-BOOL at_io_q_enum_jobs(char *desc, AT_Q_ENUM_JOBS *q_e, prs_struct *ps, int depth);
-BOOL at_io_r_enum_jobs(char *desc, AT_R_ENUM_JOBS *r_e, prs_struct *ps, int depth);
-BOOL make_at_q_query_job(AT_Q_QUERY_JOB *q_q, char *server, uint32 jobid);
-BOOL at_io_q_query_job(char *desc, AT_Q_QUERY_JOB *q_q, prs_struct *ps, int depth);
-BOOL at_io_r_query_job(char *desc, AT_R_QUERY_JOB *r_q, prs_struct *ps, int depth);
-
-/*The following definitions come from rpc_parse/parse_brs.c */
-
-BOOL make_brs_q_query_info(BRS_Q_QUERY_INFO *q_u,
- const char *server, uint16 switch_value) ;
-BOOL brs_io_q_query_info(char *desc, BRS_Q_QUERY_INFO *q_u, prs_struct *ps, int depth);
-BOOL make_brs_info_100(BRS_INFO_100 *inf);
-BOOL make_brs_r_query_info(BRS_R_QUERY_INFO *r_u,
- uint32 switch_value, void *inf,
- int status) ;
-BOOL brs_io_r_query_info(char *desc, BRS_R_QUERY_INFO *r_u, prs_struct *ps, int depth);
-
-/*The following definitions come from rpc_parse/parse_creds.c */
-
-BOOL make_creds_unix(CREDS_UNIX *r_u, const char* user_name,
- const char* requested_name,
- const char* real_name,
- BOOL guest);
-BOOL creds_io_unix(char *desc, CREDS_UNIX *r_u, prs_struct *ps, int depth);
-void creds_free_unix(CREDS_UNIX *r_u);
-BOOL make_creds_unix_sec(CREDS_UNIX_SEC *r_u,
- uint32 uid, uint32 gid, uint32 num_grps, gid_t *grps);
-BOOL creds_io_unix_sec(char *desc, CREDS_UNIX_SEC *r_u, prs_struct *ps, int depth);
-void creds_free_unix_sec(CREDS_UNIX_SEC *r_u);
-BOOL make_creds_nt_sec(CREDS_NT_SEC *r_u,
- DOM_SID *sid, uint32 num_grps, uint32 *grps);
-BOOL creds_io_nt_sec(char *desc, CREDS_NT_SEC *r_u, prs_struct *ps, int depth);
-void creds_free_nt_sec(CREDS_NT_SEC *r_u);
-BOOL creds_io_pwd_info(char *desc, struct pwd_info *pwd, prs_struct *ps, int depth);
-BOOL creds_io_nt(char *desc, CREDS_NT *r_u, prs_struct *ps, int depth);
-void creds_free_nt(CREDS_NT *r_u);
-BOOL creds_io_hybrid(char *desc, CREDS_HYBRID *r_u, prs_struct *ps, int depth);
-void copy_unix_creds(CREDS_UNIX *to, const CREDS_UNIX *from);
-void copy_nt_sec_creds(CREDS_NT_SEC *to, const CREDS_NT_SEC *from);
-void copy_unix_sec_creds(CREDS_UNIX_SEC *to, const CREDS_UNIX_SEC *from);
-void copy_nt_creds(struct ntuser_creds *to,
- const struct ntuser_creds *from);
-void copy_user_creds(struct user_creds *to,
- const struct user_creds *from);
-void free_user_creds(struct user_creds *creds);
-BOOL creds_io_cmd(char *desc, CREDS_CMD *r_u, prs_struct *ps, int depth);
-BOOL create_ntuser_creds( prs_struct *ps,
- const char* name,
- uint16 version, uint16 command,
- const struct ntuser_creds *ntu,
- BOOL reuse);
-BOOL create_user_creds( prs_struct *ps,
- const char* name,
- uint16 version, uint16 command,
- const struct user_creds *usr);
-
-/*The following definitions come from rpc_parse/parse_eventlog.c */
-
-BOOL make_eventlog_q_open(EVENTLOG_Q_OPEN *q_u, const char *journal, char *unk);
-BOOL eventlog_io_q_open(char *desc, EVENTLOG_Q_OPEN *q_u, prs_struct *ps, int depth);
-BOOL eventlog_io_r_open(char *desc, EVENTLOG_R_OPEN *r_u, prs_struct *ps, int depth);
-BOOL make_eventlog_q_close(EVENTLOG_Q_CLOSE *q_u, POLICY_HND *pol);
-BOOL eventlog_io_q_close(char *desc, EVENTLOG_Q_CLOSE *q_u, prs_struct *ps, int depth);
-BOOL eventlog_io_r_close(char *desc, EVENTLOG_R_CLOSE *r_u, prs_struct *ps, int depth);
-BOOL make_eventlog_q_numofeventlogrec(EVENTLOG_Q_NUMOFEVENTLOGREC *q_u, POLICY_HND *pol);
-BOOL eventlog_io_q_numofeventlogrec(char *desc,EVENTLOG_Q_NUMOFEVENTLOGREC *q_u, prs_struct *ps, int depth);
-BOOL eventlog_io_r_numofeventlogrec(char *desc, EVENTLOG_R_NUMOFEVENTLOGREC *r_u, prs_struct *ps, int depth);
-BOOL make_eventlog_q_readeventlog(EVENTLOG_Q_READEVENTLOG *q_u, POLICY_HND *pol,
- uint32 flags, uint32 offset, uint32 number_of_bytes);
-BOOL eventlog_io_q_readeventlog(char *desc, EVENTLOG_Q_READEVENTLOG *q_u, prs_struct *ps, int depth);
-BOOL eventlog_io_r_readeventlog(char *desc, EVENTLOG_R_READEVENTLOG *r_u, prs_struct *ps, int depth);
-
/*The following definitions come from rpc_parse/parse_lsa.c */
-BOOL make_lsa_trans_name(LSA_TRANS_NAME *trn, UNISTR2 *uni_name,
+void init_lsa_trans_name(LSA_TRANS_NAME *trn, UNISTR2 *uni_name,
uint32 sid_name_use, char *name, uint32 idx);
-BOOL make_lsa_sec_qos(LSA_SEC_QOS *qos, uint16 imp_lev, uint8 ctxt, uint8 eff,
+void init_lsa_sec_qos(LSA_SEC_QOS *qos, uint16 imp_lev, uint8 ctxt, uint8 eff,
uint32 unknown);
-BOOL make_lsa_obj_attr(LSA_OBJ_ATTR *attr, uint32 attributes, LSA_SEC_QOS *qos);
-BOOL make_q_open_pol(LSA_Q_OPEN_POL *r_q, uint16 system_name,
+void init_lsa_obj_attr(LSA_OBJ_ATTR *attr, uint32 attributes, LSA_SEC_QOS *qos);
+void init_q_open_pol(LSA_Q_OPEN_POL *r_q, uint16 system_name,
uint32 attributes,
uint32 desired_access,
LSA_SEC_QOS *qos);
-BOOL lsa_io_q_open_pol(char *desc, LSA_Q_OPEN_POL *r_q, prs_struct *ps, int depth);
-BOOL lsa_io_r_open_pol(char *desc, LSA_R_OPEN_POL *r_p, prs_struct *ps, int depth);
-BOOL make_q_open_pol2(LSA_Q_OPEN_POL2 *r_q, const char *server_name,
+BOOL lsa_io_q_open_pol(char *desc, LSA_Q_OPEN_POL *r_q, prs_struct *ps, int depth);
+BOOL lsa_io_r_open_pol(char *desc, LSA_R_OPEN_POL *r_p, prs_struct *ps, int depth);
+void init_q_open_pol2(LSA_Q_OPEN_POL2 *r_q, char *server_name,
uint32 attributes,
uint32 desired_access,
LSA_SEC_QOS *qos);
-BOOL lsa_io_q_open_pol2(char *desc, LSA_Q_OPEN_POL2 *r_q, prs_struct *ps, int depth);
-BOOL lsa_io_r_open_pol2(char *desc, LSA_R_OPEN_POL2 *r_p, prs_struct *ps, int depth);
-BOOL make_q_query(LSA_Q_QUERY_INFO *q_q, POLICY_HND *hnd, uint16 info_class);
-BOOL lsa_io_q_query(char *desc, LSA_Q_QUERY_INFO *q_q, prs_struct *ps, int depth);
-BOOL make_q_open_secret(LSA_Q_OPEN_SECRET *q_o, const POLICY_HND *pol_hnd,
- const char *secret_name, uint32 desired_access);
-BOOL lsa_io_q_open_secret(char *desc, LSA_Q_OPEN_SECRET *q_o, prs_struct *ps, int depth);
-BOOL lsa_io_r_open_secret(char *desc, LSA_R_OPEN_SECRET *r_o, prs_struct *ps, int depth);
-BOOL lsa_io_secret_value(char *desc, LSA_SECRET_VALUE *value, prs_struct *ps, int depth);
-BOOL lsa_io_secret_info(char *desc, LSA_SECRET_INFO *info, prs_struct *ps, int depth);
-BOOL make_q_query_secret(LSA_Q_QUERY_SECRET *q_q, POLICY_HND *pol);
-BOOL lsa_io_q_query_secret(char *desc, LSA_Q_QUERY_SECRET *q_q, prs_struct *ps, int depth);
-BOOL lsa_io_r_query_secret(char *desc, LSA_R_QUERY_SECRET *r_q, prs_struct *ps, int depth);
-BOOL make_q_enum_trust_dom(LSA_Q_ENUM_TRUST_DOM *q_e,
- POLICY_HND *pol,
- uint32 enum_context, uint32 preferred_len);
-BOOL lsa_io_q_enum_trust_dom(char *desc, LSA_Q_ENUM_TRUST_DOM *q_e, prs_struct *ps, int depth);
-BOOL make_r_enum_trust_dom(LSA_R_ENUM_TRUST_DOM *r_e,
- int32 enum_context,
- char *domain_name, DOM_SID *domain_sid,
- uint32 status);
-BOOL lsa_io_r_enum_trust_dom(char *desc, LSA_R_ENUM_TRUST_DOM *r_e, prs_struct *ps, int depth);
-BOOL lsa_io_r_query(char *desc, LSA_R_QUERY_INFO *r_q, prs_struct *ps, int depth);
-BOOL make_lsa_sid_enum(LSA_SID_ENUM *sen, uint32 num_entries, DOM_SID **sids);
-BOOL make_q_lookup_sids(LSA_Q_LOOKUP_SIDS *q_l, POLICY_HND *hnd,
+BOOL lsa_io_q_open_pol2(char *desc, LSA_Q_OPEN_POL2 *r_q, prs_struct *ps, int depth);
+BOOL lsa_io_r_open_pol2(char *desc, LSA_R_OPEN_POL2 *r_p, prs_struct *ps, int depth);
+void init_q_query(LSA_Q_QUERY_INFO *q_q, POLICY_HND *hnd, uint16 info_class);
+BOOL lsa_io_q_query(char *desc, LSA_Q_QUERY_INFO *q_q, prs_struct *ps, int depth);
+BOOL lsa_io_q_enum_trust_dom(char *desc, LSA_Q_ENUM_TRUST_DOM *q_e, prs_struct *ps, int depth);
+void init_r_enum_trust_dom(LSA_R_ENUM_TRUST_DOM *r_e,
+ uint32 enum_context, char *domain_name, DOM_SID *domain_sid,
+ uint32 status);
+BOOL lsa_io_r_enum_trust_dom(char *desc, LSA_R_ENUM_TRUST_DOM *r_e, prs_struct *ps, int depth);
+BOOL lsa_io_r_query(char *desc, LSA_R_QUERY_INFO *r_q, prs_struct *ps, int depth);
+void init_lsa_sid_enum(LSA_SID_ENUM *sen, int num_entries, DOM_SID **sids);
+void init_q_lookup_sids(LSA_Q_LOOKUP_SIDS *q_l, POLICY_HND *hnd,
int num_sids, DOM_SID **sids,
uint16 level);
BOOL lsa_io_q_lookup_sids(char *desc, LSA_Q_LOOKUP_SIDS *q_s, prs_struct *ps, int depth);
-BOOL lsa_io_r_lookup_sids(char *desc, LSA_R_LOOKUP_SIDS *r_s, prs_struct *ps, int depth);
-BOOL make_q_lookup_names(LSA_Q_LOOKUP_NAMES *q_l, POLICY_HND *hnd,
- uint32 num_names, char **names);
-BOOL lsa_io_q_lookup_names(char *desc, LSA_Q_LOOKUP_NAMES *q_r, prs_struct *ps, int depth);
-BOOL lsa_io_r_lookup_names(char *desc, LSA_R_LOOKUP_NAMES *r_r, prs_struct *ps, int depth);
-BOOL make_lsa_q_close(LSA_Q_CLOSE *q_c, POLICY_HND *hnd);
-BOOL lsa_io_q_close(char *desc, LSA_Q_CLOSE *q_c, prs_struct *ps, int depth);
+BOOL lsa_io_r_lookup_sids(char *desc, LSA_R_LOOKUP_SIDS *r_s, prs_struct *ps, int depth);
+void init_q_lookup_names(LSA_Q_LOOKUP_NAMES *q_l, POLICY_HND *hnd,
+ int num_names, char **names);
+BOOL lsa_io_q_lookup_names(char *desc, LSA_Q_LOOKUP_NAMES *q_r, prs_struct *ps, int depth);
+BOOL lsa_io_r_lookup_names(char *desc, LSA_R_LOOKUP_NAMES *r_r, prs_struct *ps, int depth);
+void init_lsa_q_close(LSA_Q_CLOSE *q_c, POLICY_HND *hnd);
+BOOL lsa_io_q_close(char *desc, LSA_Q_CLOSE *q_c, prs_struct *ps, int depth);
BOOL lsa_io_r_close(char *desc, LSA_R_CLOSE *r_c, prs_struct *ps, int depth);
/*The following definitions come from rpc_parse/parse_misc.c */
-BOOL smb_io_bigint(char *desc, BIGINT *bigint, prs_struct *ps, int depth);
-BOOL smb_io_time(char *desc, NTTIME *nttime, prs_struct *ps, int depth);
+BOOL smb_io_time(char *desc, NTTIME *nttime, prs_struct *ps, int depth);
BOOL smb_io_lookup_level(char *desc, LOOKUP_LEVEL *level, prs_struct *ps, int depth);
uint32 get_enum_hnd(ENUM_HND *enh);
-BOOL make_enum_hnd(ENUM_HND *enh, uint32 hnd);
-BOOL smb_io_enum_hnd(char *desc, ENUM_HND *hnd, prs_struct *ps, int depth);
-BOOL smb_io_dom_sid(char *desc, DOM_SID *sid, prs_struct *ps, int depth);
-BOOL make_dom_sid2(DOM_SID2 *sid2, const DOM_SID *sid);
-BOOL smb_io_dom_sid2(char *desc, DOM_SID2 *sid, prs_struct *ps, int depth);
-BOOL make_str_hdr(STRHDR *hdr, int max_len, int len, uint32 buffer);
+void init_enum_hnd(ENUM_HND *enh, uint32 hnd);
+BOOL smb_io_enum_hnd(char *desc, ENUM_HND *hnd, prs_struct *ps, int depth);
+BOOL smb_io_dom_sid(char *desc, DOM_SID *sid, prs_struct *ps, int depth);
+void init_dom_sid(DOM_SID *sid, char *str_sid);
+void init_dom_sid2(DOM_SID2 *sid2, DOM_SID *sid);
+BOOL smb_io_dom_sid2(char *desc, DOM_SID2 *sid, prs_struct *ps, int depth);
+void init_str_hdr(STRHDR *hdr, int max_len, int len, uint32 buffer);
BOOL smb_io_strhdr(char *desc, STRHDR *hdr, prs_struct *ps, int depth);
-BOOL make_strhdr2(STRHDR2 *hdr, uint32 max_len, uint32 len, uint32 buffer);
-BOOL smb_io_strhdr2(char *desc, STRHDR2 *hdr, prs_struct *ps, int depth);
-BOOL make_uni_hdr(UNIHDR *hdr, int len);
-BOOL smb_io_unihdr(char *desc, UNIHDR *hdr, prs_struct *ps, int depth);
-BOOL make_buf_hdr(BUFHDR *hdr, int max_len, int len);
-BOOL smb_io_hdrbuf_pre(char *desc, BUFHDR *hdr, prs_struct *ps, int depth, uint32 *offset);
-BOOL smb_io_hdrbuf_post(char *desc, BUFHDR *hdr, prs_struct *ps, int depth,
+void init_uni_hdr(UNIHDR *hdr, int len);
+BOOL smb_io_unihdr(char *desc, UNIHDR *hdr, prs_struct *ps, int depth);
+void init_buf_hdr(BUFHDR *hdr, int max_len, int len);
+BOOL smb_io_hdrbuf_pre(char *desc, BUFHDR *hdr, prs_struct *ps, int depth, uint32 *offset);
+BOOL smb_io_hdrbuf_post(char *desc, BUFHDR *hdr, prs_struct *ps, int depth,
uint32 ptr_hdrbuf, uint32 max_len, uint32 len);
-BOOL smb_io_hdrbuf(char *desc, BUFHDR *hdr, prs_struct *ps, int depth);
-BOOL make_bufhdr2(BUFHDR2 *hdr, uint32 info_level, uint32 length, uint32 buffer);
-BOOL smb_io_bufhdr2(char *desc, BUFHDR2 *hdr, prs_struct *ps, int depth);
-BOOL make_uni_hdr2(UNIHDR2 *hdr, int len);
-BOOL smb_io_unihdr2(char *desc, UNIHDR2 *hdr2, prs_struct *ps, int depth);
-BOOL make_unistr(UNISTR *str, char *buf);
-BOOL smb_io_unistr(char *desc, UNISTR *uni, prs_struct *ps, int depth);
-BOOL make_buffer3_uint32(BUFFER3 *str, uint32 val);
-BOOL make_buffer3_str(BUFFER3 *str, const char *buf, int len);
-BOOL make_buffer3_hex(BUFFER3 *str, char *buf);
-BOOL make_buffer3_bytes(BUFFER3 *str, uint8 *buf, int len);
-BOOL smb_io_buffer3(char *desc, BUFFER3 *buf3, prs_struct *ps, int depth);
-BOOL make_buffer4_str(BUFFER4 *str, const char *buf, int len);
-BOOL smb_io_buffer4(char *desc, BUFFER4 *buf4, uint32 buffer, prs_struct *ps, int depth);
-BOOL init_buffer5(BUFFER5 **str);
-BOOL clear_buffer5(BUFFER5 **str);
-BOOL make_buffer5(BUFFER5 *str, char *buf, int len);
-BOOL smb_io_buffer5(char *desc, BUFFER5 *buf5, prs_struct *ps, int depth);
-BOOL make_buffer2_multi(BUFFER2 *str, char *const* const buf, uint32 num);
-BOOL make_buffer2(BUFFER2 *str, const char *buf, int len);
-BOOL smb_io_buffer2(char *desc, BUFFER2 *buf2, uint32 buffer, prs_struct *ps, int depth);
-BOOL make_buf_unistr2(UNISTR2 *str, uint32 *ptr, const char *buf);
-BOOL make_string2(STRING2 *str, const char *buf, int len);
-BOOL make_buf_string2(STRING2 *str, uint32 *ptr, const char *buf);
-BOOL smb_io_string2(char *desc, STRING2 *str2, uint32 buffer, prs_struct *ps, int depth);
-BOOL make_unistr2(UNISTR2 *str, const char *buf, int len);
-BOOL smb_io_unistr2(char *desc, UNISTR2 *uni2, uint32 buffer, prs_struct *ps, int depth);
-BOOL make_dom_rid2(DOM_RID2 *rid2, uint32 rid, uint8 type, uint32 idx);
-BOOL smb_io_dom_rid2(char *desc, DOM_RID2 *rid2, prs_struct *ps, int depth);
-BOOL make_dom_rid3(DOM_RID3 *rid3, uint32 rid, uint8 type);
-BOOL smb_io_dom_rid3(char *desc, DOM_RID3 *rid3, prs_struct *ps, int depth);
-BOOL make_log_info(DOM_LOG_INFO *log,
- const char *logon_srv, const char *acct_name,
- uint16 sec_chan, const char *comp_name);
-BOOL smb_io_log_info(char *desc, DOM_LOG_INFO *log, prs_struct *ps, int depth);
-BOOL smb_io_chal(char *desc, DOM_CHAL *chal, prs_struct *ps, int depth);
+BOOL smb_io_hdrbuf(char *desc, BUFHDR *hdr, prs_struct *ps, int depth);
+void init_uni_hdr2(UNIHDR2 *hdr, int len);
+BOOL smb_io_unihdr2(char *desc, UNIHDR2 *hdr2, prs_struct *ps, int depth);
+void init_unistr(UNISTR *str, char *buf);
+BOOL smb_io_unistr(char *desc, UNISTR *uni, prs_struct *ps, int depth);
+void init_buffer3_uint32(BUFFER3 *str, uint32 val);
+void init_buffer3_str(BUFFER3 *str, char *buf, int len);
+void init_buffer3_hex(BUFFER3 *str, char *buf);
+void init_buffer3_bytes(BUFFER3 *str, uint8 *buf, int len);
+BOOL smb_io_buffer3(char *desc, BUFFER3 *buf3, prs_struct *ps, int depth);
+void init_buffer2(BUFFER2 *str, uint8 *buf, int len);
+BOOL smb_io_buffer2(char *desc, BUFFER2 *buf2, uint32 buffer, prs_struct *ps, int depth);
+void init_buf_unistr2(UNISTR2 *str, uint32 *ptr, char *buf);
+void copy_unistr2(UNISTR2 *str, UNISTR2 *from);
+void init_string2(STRING2 *str, char *buf, int len);
+BOOL smb_io_string2(char *desc, STRING2 *str2, uint32 buffer, prs_struct *ps, int depth);
+void init_unistr2(UNISTR2 *str, char *buf, int len);
+BOOL smb_io_unistr2(char *desc, UNISTR2 *uni2, uint32 buffer, prs_struct *ps, int depth);
+void init_dom_rid2(DOM_RID2 *rid2, uint32 rid, uint8 type, uint32 idx);
+BOOL smb_io_dom_rid2(char *desc, DOM_RID2 *rid2, prs_struct *ps, int depth);
+void init_dom_rid3(DOM_RID3 *rid3, uint32 rid, uint8 type);
+BOOL smb_io_dom_rid3(char *desc, DOM_RID3 *rid3, prs_struct *ps, int depth);
+void init_dom_rid4(DOM_RID4 *rid4, uint16 unknown, uint16 attr, uint32 rid);
+void init_log_info(DOM_LOG_INFO *log, char *logon_srv, char *acct_name,
+ uint16 sec_chan, char *comp_name);
+BOOL smb_io_log_info(char *desc, DOM_LOG_INFO *log, prs_struct *ps, int depth);
+BOOL smb_io_chal(char *desc, DOM_CHAL *chal, prs_struct *ps, int depth);
BOOL smb_io_cred(char *desc, DOM_CRED *cred, prs_struct *ps, int depth);
-BOOL make_clnt_info2(DOM_CLNT_INFO2 *clnt,
- const char *logon_srv, const char *comp_name,
+void init_clnt_info2(DOM_CLNT_INFO2 *clnt,
+ char *logon_srv, char *comp_name,
DOM_CRED *clnt_cred);
-BOOL smb_io_clnt_info2(char *desc, DOM_CLNT_INFO2 *clnt, prs_struct *ps, int depth);
-BOOL make_clnt_info(DOM_CLNT_INFO *clnt,
- const char *logon_srv, const char *acct_name,
- uint16 sec_chan, const char *comp_name,
+BOOL smb_io_clnt_info2(char *desc, DOM_CLNT_INFO2 *clnt, prs_struct *ps, int depth);
+void init_clnt_info(DOM_CLNT_INFO *clnt,
+ char *logon_srv, char *acct_name,
+ uint16 sec_chan, char *comp_name,
DOM_CRED *cred);
BOOL smb_io_clnt_info(char *desc, DOM_CLNT_INFO *clnt, prs_struct *ps, int depth);
-BOOL make_owf_info(OWF_INFO *hash, uint8 data[16]);
+void init_logon_id(DOM_LOGON_ID *log, uint32 log_id_low, uint32 log_id_high);
+BOOL smb_io_logon_id(char *desc, DOM_LOGON_ID *log, prs_struct *ps, int depth);
+void init_owf_info(OWF_INFO *hash, uint8 data[16]);
BOOL smb_io_owf_info(char *desc, OWF_INFO *hash, prs_struct *ps, int depth);
BOOL smb_io_gid(char *desc, DOM_GID *gid, prs_struct *ps, int depth);
-BOOL smb_io_pol_hnd(char *desc, POLICY_HND *pol, prs_struct *ps, int depth);
-BOOL smb_io_dom_query_3(char *desc, DOM_QUERY_3 *d_q, prs_struct *ps, int depth);
-BOOL smb_io_dom_query_5(char *desc, DOM_QUERY_3 *d_q, prs_struct *ps, int depth);
-BOOL smb_io_unistr3(char *desc, UNISTR3 *name, prs_struct *ps, int depth);
+BOOL smb_io_pol_hnd(char *desc, POLICY_HND *pol, prs_struct *ps, int depth);
+BOOL smb_io_dom_query_3(char *desc, DOM_QUERY_3 *d_q, prs_struct *ps, int depth);
+BOOL smb_io_dom_query_5(char *desc, DOM_QUERY_3 *d_q, prs_struct *ps, int depth);
+BOOL smb_io_unistr3(char *desc, UNISTR3 *name, prs_struct *ps, int depth);
/*The following definitions come from rpc_parse/parse_net.c */
-BOOL make_q_logon_ctrl2(NET_Q_LOGON_CTRL2 *q_l,
- const char* srv_name,
- uint32 function_code,
- uint32 query_level,
- uint32 switch_value);
-BOOL net_io_q_logon_ctrl2(char *desc, NET_Q_LOGON_CTRL2 *q_l, prs_struct *ps, int depth);
-BOOL make_r_logon_ctrl2(NET_R_LOGON_CTRL2 *r_l, uint32 query_level,
+BOOL net_io_q_logon_ctrl2(char *desc, NET_Q_LOGON_CTRL2 *q_l, prs_struct *ps, int depth);
+void init_r_logon_ctrl2(NET_R_LOGON_CTRL2 *r_l, uint32 query_level,
uint32 flags, uint32 pdc_status, uint32 logon_attempts,
uint32 tc_status, char *trusted_domain_name);
-BOOL net_io_r_logon_ctrl2(char *desc, NET_R_LOGON_CTRL2 *r_l, prs_struct *ps, int depth);
-BOOL make_r_trust_dom(NET_R_TRUST_DOM_LIST *r_t,
- uint32 num_doms, char **dom_name);
-BOOL net_io_r_trust_dom(char *desc, NET_R_TRUST_DOM_LIST *r_t, prs_struct *ps, int depth);
-BOOL net_io_q_trust_dom(char *desc, NET_Q_TRUST_DOM_LIST *q_l, prs_struct *ps, int depth);
-BOOL make_q_req_chal(NET_Q_REQ_CHAL *q_c,
- const char *logon_srv, const char *logon_clnt,
+BOOL net_io_r_logon_ctrl2(char *desc, NET_R_LOGON_CTRL2 *r_l, prs_struct *ps, int depth);
+void init_r_trust_dom(NET_R_TRUST_DOM_LIST *r_t,
+ uint32 num_doms, char *dom_name);
+BOOL net_io_r_trust_dom(char *desc, NET_R_TRUST_DOM_LIST *r_t, prs_struct *ps, int depth);
+BOOL net_io_q_trust_dom(char *desc, NET_Q_TRUST_DOM_LIST *q_l, prs_struct *ps, int depth);
+void init_q_req_chal(NET_Q_REQ_CHAL *q_c,
+ char *logon_srv, char *logon_clnt,
DOM_CHAL *clnt_chal);
BOOL net_io_q_req_chal(char *desc, NET_Q_REQ_CHAL *q_c, prs_struct *ps, int depth);
-BOOL net_io_r_req_chal(char *desc, NET_R_REQ_CHAL *r_c, prs_struct *ps, int depth);
-BOOL make_q_auth(NET_Q_AUTH *q_a,
- const char *logon_srv, const char *acct_name,
- uint16 sec_chan, const char *comp_name,
- DOM_CHAL *clnt_chal);
-BOOL net_io_q_auth(char *desc, NET_Q_AUTH *q_a, prs_struct *ps, int depth);
-BOOL net_io_r_auth(char *desc, NET_R_AUTH *r_a, prs_struct *ps, int depth);
-BOOL make_q_auth_2(NET_Q_AUTH_2 *q_a,
- const char *logon_srv, const char *acct_name,
- uint16 sec_chan, const char *comp_name,
+BOOL net_io_r_req_chal(char *desc, NET_R_REQ_CHAL *r_c, prs_struct *ps, int depth);
+void init_q_auth_2(NET_Q_AUTH_2 *q_a,
+ char *logon_srv, char *acct_name, uint16 sec_chan, char *comp_name,
DOM_CHAL *clnt_chal, uint32 clnt_flgs);
-BOOL net_io_q_auth_2(char *desc, NET_Q_AUTH_2 *q_a, prs_struct *ps, int depth);
-BOOL net_io_r_auth_2(char *desc, NET_R_AUTH_2 *r_a, prs_struct *ps, int depth);
-BOOL make_q_srv_pwset(NET_Q_SRV_PWSET *q_s,
- const char *logon_srv, const char *acct_name,
- uint16 sec_chan, const char *comp_name,
- DOM_CRED *cred, char nt_cypher[16]);
-BOOL net_io_q_srv_pwset(char *desc, NET_Q_SRV_PWSET *q_s, prs_struct *ps, int depth);
-BOOL net_io_r_srv_pwset(char *desc, NET_R_SRV_PWSET *r_s, prs_struct *ps, int depth);
-BOOL make_id_info1(NET_ID_INFO_1 *id, const char *domain_name,
+BOOL net_io_q_auth_2(char *desc, NET_Q_AUTH_2 *q_a, prs_struct *ps, int depth);
+BOOL net_io_r_auth_2(char *desc, NET_R_AUTH_2 *r_a, prs_struct *ps, int depth);
+void init_q_srv_pwset(NET_Q_SRV_PWSET *q_s, char *logon_srv, char *acct_name,
+ uint16 sec_chan, char *comp_name, DOM_CRED *cred, char nt_cypher[16]);
+BOOL net_io_q_srv_pwset(char *desc, NET_Q_SRV_PWSET *q_s, prs_struct *ps, int depth);
+BOOL net_io_r_srv_pwset(char *desc, NET_R_SRV_PWSET *r_s, prs_struct *ps, int depth);
+void init_id_info1(NET_ID_INFO_1 *id, char *domain_name,
uint32 param_ctrl, uint32 log_id_low, uint32 log_id_high,
- const char *user_name, const char *wksta_name,
+ char *user_name, char *wksta_name,
char sess_key[16],
unsigned char lm_cypher[16], unsigned char nt_cypher[16]);
-BOOL make_id_info2(NET_ID_INFO_2 *id, const char *domain_name,
- uint32 param_ctrl,
- uint32 log_id_low, uint32 log_id_high,
- const char *user_name, const char *wksta_name,
+void init_id_info2(NET_ID_INFO_2 *id, char *domain_name,
+ uint32 param_ctrl, uint32 log_id_low, uint32 log_id_high,
+ char *user_name, char *wksta_name,
unsigned char lm_challenge[8],
unsigned char lm_chal_resp[24],
unsigned char nt_chal_resp[24]);
-BOOL make_sam_info(DOM_SAM_INFO *sam,
- const char *logon_srv, const char *comp_name,
- DOM_CRED *clnt_cred,
+void init_sam_info(DOM_SAM_INFO *sam,
+ char *logon_srv, char *comp_name, DOM_CRED *clnt_cred,
DOM_CRED *rtn_cred, uint16 logon_level,
NET_ID_INFO_CTR *ctr);
-BOOL make_net_user_info3(NET_USER_INFO_3 *usr,
+void init_net_user_info3(NET_USER_INFO_3 *usr,
NTTIME *logon_time,
NTTIME *logoff_time,
@@ -2765,518 +1697,284 @@ BOOL make_net_user_info3(NET_USER_INFO_3 *usr,
DOM_SID *dom_sid,
char *other_sids);
-BOOL net_io_q_sam_logon(char *desc, NET_Q_SAM_LOGON *q_l, prs_struct *ps, int depth);
-BOOL net_io_r_sam_logon(char *desc, NET_R_SAM_LOGON *r_l, prs_struct *ps, int depth);
+BOOL net_io_q_sam_logon(char *desc, NET_Q_SAM_LOGON *q_l, prs_struct *ps, int depth);
+BOOL net_io_r_sam_logon(char *desc, NET_R_SAM_LOGON *r_l, prs_struct *ps, int depth);
BOOL net_io_q_sam_logoff(char *desc, NET_Q_SAM_LOGOFF *q_l, prs_struct *ps, int depth);
-BOOL net_io_r_sam_logoff(char *desc, NET_R_SAM_LOGOFF *r_l, prs_struct *ps, int depth);
-BOOL make_q_sam_sync(NET_Q_SAM_SYNC *q_s,
- const char *srv_name,
- const char *cli_name,
- DOM_CRED *cli_creds, uint32 database_id);
-BOOL net_io_q_sam_sync(char *desc, NET_Q_SAM_SYNC *q_s, prs_struct *ps, int depth);
-BOOL make_sam_delta_hdr(SAM_DELTA_HDR *delta, uint16 type, uint32 rid);
-BOOL make_sam_account_info(SAM_ACCOUNT_INFO *info, char *user_name,
- char *full_name, uint32 user_rid, uint32 group_rid,
- char *home_dir, char *dir_drive, char *logon_script,
- char *acct_desc, uint32 acb_info, char *profile);
-BOOL net_io_r_sam_sync(char *desc, uint8 sess_key[16],
- NET_R_SAM_SYNC *r_s, prs_struct *ps, int depth);
+BOOL net_io_r_sam_logoff(char *desc, NET_R_SAM_LOGOFF *r_l, prs_struct *ps, int depth);
/*The following definitions come from rpc_parse/parse_prs.c */
void prs_debug(prs_struct *ps, int depth, char *desc, char *fn_name);
-void prs_debug_out(prs_struct *ps, char *msg, int level);
-void prs_init(prs_struct *ps, uint32 size,
- uint8 align, uint32 margin,
- BOOL io);
-BOOL prs_copy(prs_struct *ps, const prs_struct *from);
+BOOL prs_init(prs_struct *ps, uint32 size, uint8 align, BOOL io);
void prs_mem_free(prs_struct *ps);
-void prs_link(prs_struct *prev, prs_struct *ps, prs_struct *next);
-void prs_align(prs_struct *ps);
-BOOL prs_grow(prs_struct *ps, uint32 new_size);
-BOOL prs_append_data(prs_struct *ps, const char *data, int len);
-BOOL _prs_uint8(char *name, prs_struct *ps, int depth, uint8 *data8);
-BOOL _prs_uint16(char *name, prs_struct *ps, int depth, uint16 *data16);
-BOOL _prs_hash1(prs_struct *ps, uint32 offset, uint8 sess_key[16]);
-BOOL _prs_uint32(char *name, prs_struct *ps, int depth, uint32 *data32);
-BOOL _prs_uint8s(BOOL charmode, char *name, prs_struct *ps, int depth, uint8 *data8s, int len);
-BOOL _prs_uint16s(BOOL charmode, char *name, prs_struct *ps, int depth, uint16 *data16s, int len);
-BOOL _prs_uint32s(BOOL charmode, char *name, prs_struct *ps, int depth, uint32 *data32s, int len);
-BOOL _prs_buffer2(BOOL charmode, char *name, prs_struct *ps, int depth, BUFFER2 *str);
-BOOL _prs_string2(BOOL charmode, char *name, prs_struct *ps, int depth, STRING2 *str);
-BOOL _prs_unistr2(BOOL charmode, char *name, prs_struct *ps, int depth, UNISTR2 *str);
-BOOL _prs_unistr3(BOOL charmode, char *name, UNISTR3 *str, prs_struct *ps, int depth);
-BOOL _prs_unistr(char *name, prs_struct *ps, int depth, UNISTR *str);
-BOOL _prs_string(char *name, prs_struct *ps, int depth, char *str, uint16 len, uint16 max_buf_size);
-BOOL _prs_uint16_pre(char *name, prs_struct *ps, int depth, uint16 *data16, uint32 *offset);
-BOOL _prs_uint16_post(char *name, prs_struct *ps, int depth, uint16 *data16,
+void prs_give_memory(prs_struct *ps, char *buf, uint32 size, BOOL is_dynamic);
+char *prs_take_memory(prs_struct *ps, uint32 *psize);
+BOOL prs_grow(prs_struct *ps, uint32 extra_space);
+BOOL prs_force_grow(prs_struct *ps, uint32 extra_space);
+char *prs_data_p(prs_struct *ps);
+uint32 prs_data_size(prs_struct *ps);
+uint32 prs_offset(prs_struct *ps);
+BOOL prs_set_offset(prs_struct *ps, uint32 offset);
+BOOL prs_append_prs_data(prs_struct *dst, prs_struct *src);
+BOOL prs_append_data(prs_struct *dst, char *src, uint32 len);
+void prs_set_bigendian_data(prs_struct *ps);
+BOOL prs_align(prs_struct *ps);
+char *prs_mem_get(prs_struct *ps, uint32 extra_size);
+BOOL prs_uint8(char *name, prs_struct *ps, int depth, uint8 *data8);
+BOOL prs_uint16(char *name, prs_struct *ps, int depth, uint16 *data16);
+BOOL prs_uint32(char *name, prs_struct *ps, int depth, uint32 *data32);
+BOOL prs_uint8s(BOOL charmode, char *name, prs_struct *ps, int depth, uint8 *data8s, int len);
+BOOL prs_uint32s(BOOL charmode, char *name, prs_struct *ps, int depth, uint32 *data32s, int len);
+BOOL prs_buffer2(BOOL charmode, char *name, prs_struct *ps, int depth, BUFFER2 *str);
+BOOL prs_string2(BOOL charmode, char *name, prs_struct *ps, int depth, STRING2 *str);
+BOOL prs_unistr2(BOOL charmode, char *name, prs_struct *ps, int depth, UNISTR2 *str);
+BOOL prs_unistr3(BOOL charmode, char *name, UNISTR3 *str, prs_struct *ps, int depth);
+BOOL prs_unistr(char *name, prs_struct *ps, int depth, UNISTR *str);
+BOOL prs_string(char *name, prs_struct *ps, int depth, char *str, int len, int max_buf_size);
+BOOL prs_uint16_pre(char *name, prs_struct *ps, int depth, uint16 *data16, uint32 *offset);
+BOOL prs_uint16_post(char *name, prs_struct *ps, int depth, uint16 *data16,
uint32 ptr_uint16, uint32 start_offset);
-BOOL _prs_uint32_pre(char *name, prs_struct *ps, int depth, uint32 *data32, uint32 *offset);
-BOOL _prs_uint32_post(char *name, prs_struct *ps, int depth, uint32 *data32,
+BOOL prs_uint32_pre(char *name, prs_struct *ps, int depth, uint32 *data32, uint32 *offset);
+BOOL prs_uint32_post(char *name, prs_struct *ps, int depth, uint32 *data32,
uint32 ptr_uint32, uint32 data_size);
/*The following definitions come from rpc_parse/parse_reg.c */
-BOOL make_reg_q_open_hkcr(REG_Q_OPEN_HKCR *q_o,
- uint16 unknown_0, uint32 level);
-BOOL reg_io_q_open_hkcr(char *desc, REG_Q_OPEN_HKCR *r_q, prs_struct *ps, int depth);
-BOOL reg_io_r_open_hkcr(char *desc, REG_R_OPEN_HKCR *r_r, prs_struct *ps, int depth);
-BOOL make_reg_q_open_hklm(REG_Q_OPEN_HKLM *q_o,
+void init_reg_q_open_hklm(REG_Q_OPEN_HKLM *q_o,
uint16 unknown_0, uint32 level);
BOOL reg_io_q_open_hklm(char *desc, REG_Q_OPEN_HKLM *r_q, prs_struct *ps, int depth);
BOOL reg_io_r_open_hklm(char *desc, REG_R_OPEN_HKLM *r_r, prs_struct *ps, int depth);
-BOOL make_reg_q_flush_key(REG_Q_FLUSH_KEY *q_u, POLICY_HND *pol);
+void init_reg_q_flush_key(REG_Q_FLUSH_KEY *q_u, POLICY_HND *pol);
BOOL reg_io_q_flush_key(char *desc, REG_Q_FLUSH_KEY *r_q, prs_struct *ps, int depth);
BOOL reg_io_r_flush_key(char *desc, REG_R_FLUSH_KEY *r_r, prs_struct *ps, int depth);
-BOOL make_reg_q_create_key(REG_Q_CREATE_KEY *q_c, POLICY_HND *hnd,
- char *key_name, char *key_class,
- SEC_ACCESS *sam_access,
- SEC_DESC_BUF *sec_buf,
- int sec_len, SEC_DESC *sec);
+void init_reg_q_create_key(REG_Q_CREATE_KEY *q_c, POLICY_HND *hnd,
+ char *name, char *class, SEC_ACCESS *sam_access,
+ SEC_DESC_BUF *sec_buf);
BOOL reg_io_q_create_key(char *desc, REG_Q_CREATE_KEY *r_q, prs_struct *ps, int depth);
BOOL reg_io_r_create_key(char *desc, REG_R_CREATE_KEY *r_r, prs_struct *ps, int depth);
-BOOL make_reg_q_delete_val(REG_Q_DELETE_VALUE *q_c, POLICY_HND *hnd,
+void init_reg_q_delete_val(REG_Q_DELETE_VALUE *q_c, POLICY_HND *hnd,
char *name);
BOOL reg_io_q_delete_val(char *desc, REG_Q_DELETE_VALUE *r_q, prs_struct *ps, int depth);
BOOL reg_io_r_delete_val(char *desc, REG_R_DELETE_VALUE *r_r, prs_struct *ps, int depth);
-BOOL make_reg_q_delete_key(REG_Q_DELETE_KEY *q_c, POLICY_HND *hnd,
+void init_reg_q_delete_key(REG_Q_DELETE_KEY *q_c, POLICY_HND *hnd,
char *name);
BOOL reg_io_q_delete_key(char *desc, REG_Q_DELETE_KEY *r_q, prs_struct *ps, int depth);
BOOL reg_io_r_delete_key(char *desc, REG_R_DELETE_KEY *r_r, prs_struct *ps, int depth);
-BOOL make_reg_q_query_key(REG_Q_QUERY_KEY *q_o, POLICY_HND *hnd,
+void init_reg_q_query_key(REG_Q_QUERY_KEY *q_o, POLICY_HND *hnd,
uint32 max_class_len);
BOOL reg_io_q_query_key(char *desc, REG_Q_QUERY_KEY *r_q, prs_struct *ps, int depth);
BOOL reg_io_r_query_key(char *desc, REG_R_QUERY_KEY *r_r, prs_struct *ps, int depth);
-BOOL make_reg_q_unk_1a(REG_Q_UNK_1A *q_o, POLICY_HND *hnd);
+void init_reg_q_unk_1a(REG_Q_UNK_1A *q_o, POLICY_HND *hnd);
BOOL reg_io_q_unk_1a(char *desc, REG_Q_UNK_1A *r_q, prs_struct *ps, int depth);
BOOL reg_io_r_unk_1a(char *desc, REG_R_UNK_1A *r_r, prs_struct *ps, int depth);
-BOOL make_reg_q_open_hku(REG_Q_OPEN_HKU *q_o,
+void init_reg_q_open_hku(REG_Q_OPEN_HKU *q_o,
uint16 unknown_0, uint32 level);
BOOL reg_io_q_open_hku(char *desc, REG_Q_OPEN_HKU *r_q, prs_struct *ps, int depth);
BOOL reg_io_r_open_hku(char *desc, REG_R_OPEN_HKU *r_r, prs_struct *ps, int depth);
-BOOL make_reg_q_close(REG_Q_CLOSE *q_c, POLICY_HND *hnd);
+void init_reg_q_close(REG_Q_CLOSE *q_c, POLICY_HND *hnd);
BOOL reg_io_q_close(char *desc, REG_Q_CLOSE *q_u, prs_struct *ps, int depth);
BOOL reg_io_r_close(char *desc, REG_R_CLOSE *r_u, prs_struct *ps, int depth);
-BOOL make_reg_q_set_key_sec(REG_Q_SET_KEY_SEC *q_i, POLICY_HND *pol,
- uint32 sec_info,
- uint32 buf_len, SEC_DESC *sec_desc);
+void init_reg_q_set_key_sec(REG_Q_SET_KEY_SEC *q_i, POLICY_HND *pol, SEC_DESC_BUF *sec_desc_buf);
BOOL reg_io_q_set_key_sec(char *desc, REG_Q_SET_KEY_SEC *r_q, prs_struct *ps, int depth);
BOOL reg_io_r_set_key_sec(char *desc, REG_R_SET_KEY_SEC *r_q, prs_struct *ps, int depth);
-BOOL make_reg_q_get_key_sec(REG_Q_GET_KEY_SEC *q_i, POLICY_HND *pol,
- uint32 sec_info,
- uint32 buf_len, SEC_DESC_BUF *sec_buf);
+void init_reg_q_get_key_sec(REG_Q_GET_KEY_SEC *q_i, POLICY_HND *pol,
+ uint32 sec_buf_size, SEC_DESC_BUF *psdb);
BOOL reg_io_q_get_key_sec(char *desc, REG_Q_GET_KEY_SEC *r_q, prs_struct *ps, int depth);
BOOL reg_io_r_get_key_sec(char *desc, REG_R_GET_KEY_SEC *r_q, prs_struct *ps, int depth);
-BOOL make_reg_q_info(REG_Q_INFO *q_i, POLICY_HND *pol, const char *val_name,
- uint8 major, uint8 minor);
+void init_reg_q_info(REG_Q_INFO *q_i, POLICY_HND *pol, char *product_type,
+ time_t unix_time, uint8 major, uint8 minor);
BOOL reg_io_q_info(char *desc, REG_Q_INFO *r_q, prs_struct *ps, int depth);
-BOOL make_reg_r_info(REG_R_INFO *r_r,
- uint32 *type, BUFFER2 *buf,
+void init_reg_r_info(REG_R_INFO *r_r,
+ uint32 level, char *os_type,
+ uint32 unknown_0, uint32 unknown_1,
uint32 status);
BOOL reg_io_r_info(char *desc, REG_R_INFO *r_r, prs_struct *ps, int depth);
-BOOL make_reg_q_enum_val(REG_Q_ENUM_VALUE *q_i, POLICY_HND *pol,
+void init_reg_q_enum_val(REG_Q_ENUM_VALUE *q_i, POLICY_HND *pol,
uint32 val_idx, uint32 max_val_len,
uint32 max_buf_len);
BOOL reg_io_q_enum_val(char *desc, REG_Q_ENUM_VALUE *q_q, prs_struct *ps, int depth);
BOOL reg_io_r_enum_val(char *desc, REG_R_ENUM_VALUE *r_q, prs_struct *ps, int depth);
-BOOL make_reg_q_create_val(REG_Q_CREATE_VALUE *q_i, POLICY_HND *pol,
+void init_reg_q_create_val(REG_Q_CREATE_VALUE *q_i, POLICY_HND *pol,
char *val_name, uint32 type,
BUFFER3 *val);
BOOL reg_io_q_create_val(char *desc, REG_Q_CREATE_VALUE *q_q, prs_struct *ps, int depth);
BOOL reg_io_r_create_val(char *desc, REG_R_CREATE_VALUE *r_q, prs_struct *ps, int depth);
-BOOL make_reg_q_enum_key(REG_Q_ENUM_KEY *q_i, POLICY_HND *pol, uint32 key_idx);
+void init_reg_q_enum_key(REG_Q_ENUM_KEY *q_i, POLICY_HND *pol, uint32 key_idx);
BOOL reg_io_q_enum_key(char *desc, REG_Q_ENUM_KEY *q_q, prs_struct *ps, int depth);
BOOL reg_io_r_enum_key(char *desc, REG_R_ENUM_KEY *r_q, prs_struct *ps, int depth);
-BOOL make_reg_q_open_entry(REG_Q_OPEN_ENTRY *r_q, POLICY_HND *pol,
+void init_reg_q_open_entry(REG_Q_OPEN_ENTRY *r_q, POLICY_HND *pol,
char *key_name, uint32 unk);
BOOL reg_io_q_open_entry(char *desc, REG_Q_OPEN_ENTRY *r_q, prs_struct *ps, int depth);
-BOOL make_reg_r_open_entry(REG_R_OPEN_ENTRY *r_r,
+void init_reg_r_open_entry(REG_R_OPEN_ENTRY *r_r,
POLICY_HND *pol, uint32 status);
BOOL reg_io_r_open_entry(char *desc, REG_R_OPEN_ENTRY *r_r, prs_struct *ps, int depth);
-BOOL make_reg_q_shutdown(REG_Q_SHUTDOWN *q_i,
- const char *msg, uint32 timeout, uint16 flags);
-BOOL reg_io_q_shutdown(char *desc, REG_Q_SHUTDOWN *q_q, prs_struct *ps, int depth);
-BOOL reg_io_r_shutdown(char *desc, REG_R_SHUTDOWN *r_q, prs_struct *ps, int depth);
/*The following definitions come from rpc_parse/parse_rpc.c */
-BOOL make_rpc_hdr(RPC_HDR *hdr, enum RPC_PKT_TYPE pkt_type, uint8 flags,
+void init_rpc_hdr(RPC_HDR *hdr, enum RPC_PKT_TYPE pkt_type, uint8 flags,
uint32 call_id, int data_len, int auth_len);
BOOL smb_io_rpc_hdr(char *desc, RPC_HDR *rpc, prs_struct *ps, int depth);
-BOOL smb_io_rpc_hdr_fault(char *desc, RPC_HDR_FAULT *rpc, prs_struct *ps, int depth);
-BOOL make_rpc_hdr_rb(RPC_HDR_RB *rpc,
+void init_rpc_hdr_rb(RPC_HDR_RB *rpc,
uint16 max_tsize, uint16 max_rsize, uint32 assoc_gid,
uint32 num_elements, uint16 context_id, uint8 num_syntaxes,
RPC_IFACE *abstract, RPC_IFACE *transfer);
-BOOL smb_io_rpc_hdr_rb(char *desc, RPC_HDR_RB *rpc, prs_struct *ps, int depth);
-BOOL make_rpc_hdr_ba(RPC_HDR_BA *rpc,
+BOOL smb_io_rpc_hdr_rb(char *desc, RPC_HDR_RB *rpc, prs_struct *ps, int depth);
+void init_rpc_hdr_ba(RPC_HDR_BA *rpc,
uint16 max_tsize, uint16 max_rsize, uint32 assoc_gid,
- const char *pipe_addr,
+ char *pipe_addr,
uint8 num_results, uint16 result, uint16 reason,
RPC_IFACE *transfer);
-BOOL smb_io_rpc_hdr_ba(char *desc, RPC_HDR_BA *rpc, prs_struct *ps, int depth);
-BOOL make_rpc_hdr_req(RPC_HDR_REQ *hdr, uint32 alloc_hint, uint16 opnum);
-BOOL smb_io_rpc_hdr_req(char *desc, RPC_HDR_REQ *rpc, prs_struct *ps, int depth);
-BOOL smb_io_rpc_hdr_resp(char *desc, RPC_HDR_RESP *rpc, prs_struct *ps, int depth);
-BOOL make_rpc_hdr_autha(RPC_HDR_AUTHA *rai,
+BOOL smb_io_rpc_hdr_ba(char *desc, RPC_HDR_BA *rpc, prs_struct *ps, int depth);
+void init_rpc_hdr_req(RPC_HDR_REQ *hdr, uint32 alloc_hint, uint16 opnum);
+BOOL smb_io_rpc_hdr_req(char *desc, RPC_HDR_REQ *rpc, prs_struct *ps, int depth);
+BOOL smb_io_rpc_hdr_resp(char *desc, RPC_HDR_RESP *rpc, prs_struct *ps, int depth);
+void init_rpc_hdr_autha(RPC_HDR_AUTHA *rai,
uint16 max_tsize, uint16 max_rsize,
uint8 auth_type, uint8 auth_level,
uint8 stub_type_len);
BOOL smb_io_rpc_hdr_autha(char *desc, RPC_HDR_AUTHA *rai, prs_struct *ps, int depth);
BOOL rpc_hdr_auth_chk(RPC_HDR_AUTH *rai);
-BOOL make_rpc_hdr_auth(RPC_HDR_AUTH *rai,
+void init_rpc_hdr_auth(RPC_HDR_AUTH *rai,
uint8 auth_type, uint8 auth_level,
uint8 stub_type_len,
uint32 ptr);
BOOL smb_io_rpc_hdr_auth(char *desc, RPC_HDR_AUTH *rai, prs_struct *ps, int depth);
-BOOL rpc_auth_ntlmssp_verifier_chk(RPC_AUTH_NTLMSSP_VERIFIER *rav,
+BOOL rpc_auth_verifier_chk(RPC_AUTH_VERIFIER *rav,
char *signature, uint32 msg_type);
-BOOL make_rpc_auth_ntlmssp_verifier(RPC_AUTH_NTLMSSP_VERIFIER *rav,
+void init_rpc_auth_verifier(RPC_AUTH_VERIFIER *rav,
char *signature, uint32 msg_type);
-BOOL smb_io_rpc_auth_ntlmssp_verifier(char *desc, RPC_AUTH_NTLMSSP_VERIFIER *rav, prs_struct *ps, int depth);
-BOOL make_rpc_auth_ntlmssp_neg(RPC_AUTH_NTLMSSP_NEG *neg,
+BOOL smb_io_rpc_auth_verifier(char *desc, RPC_AUTH_VERIFIER *rav, prs_struct *ps, int depth);
+void init_rpc_auth_ntlmssp_neg(RPC_AUTH_NTLMSSP_NEG *neg,
uint32 neg_flgs,
fstring myname, fstring domain);
BOOL smb_io_rpc_auth_ntlmssp_neg(char *desc, RPC_AUTH_NTLMSSP_NEG *neg, prs_struct *ps, int depth);
-BOOL make_rpc_auth_ntlmssp_chal(RPC_AUTH_NTLMSSP_CHAL *chl,
+void init_rpc_auth_ntlmssp_chal(RPC_AUTH_NTLMSSP_CHAL *chl,
uint32 neg_flags,
uint8 challenge[8]);
BOOL smb_io_rpc_auth_ntlmssp_chal(char *desc, RPC_AUTH_NTLMSSP_CHAL *chl, prs_struct *ps, int depth);
-BOOL make_rpc_auth_ntlmssp_resp(RPC_AUTH_NTLMSSP_RESP *rsp,
- uchar lm_resp[24],
- uchar *nt_resp, size_t nt_len,
+void init_rpc_auth_ntlmssp_resp(RPC_AUTH_NTLMSSP_RESP *rsp,
+ uchar lm_resp[24], uchar nt_resp[24],
char *domain, char *user, char *wks,
uint32 neg_flags);
BOOL smb_io_rpc_auth_ntlmssp_resp(char *desc, RPC_AUTH_NTLMSSP_RESP *rsp, prs_struct *ps, int depth);
BOOL rpc_auth_ntlmssp_chk(RPC_AUTH_NTLMSSP_CHK *chk, uint32 crc32, uint32 seq_num);
-BOOL make_rpc_auth_ntlmssp_chk(RPC_AUTH_NTLMSSP_CHK *chk,
+void init_rpc_auth_ntlmssp_chk(RPC_AUTH_NTLMSSP_CHK *chk,
uint32 ver, uint32 crc32, uint32 seq_num);
BOOL smb_io_rpc_auth_ntlmssp_chk(char *desc, RPC_AUTH_NTLMSSP_CHK *chk, prs_struct *ps, int depth);
/*The following definitions come from rpc_parse/parse_samr.c */
-BOOL make_samr_q_close_hnd(SAMR_Q_CLOSE_HND *q_c, POLICY_HND *hnd);
+void init_samr_q_close_hnd(SAMR_Q_CLOSE_HND *q_c, POLICY_HND *hnd);
BOOL samr_io_q_close_hnd(char *desc, SAMR_Q_CLOSE_HND *q_u, prs_struct *ps, int depth);
BOOL samr_io_r_close_hnd(char *desc, SAMR_R_CLOSE_HND *r_u, prs_struct *ps, int depth);
-BOOL make_samr_q_lookup_domain(SAMR_Q_LOOKUP_DOMAIN *q_u,
- POLICY_HND *pol, const char *dom_name);
-BOOL samr_io_q_lookup_domain(char *desc, SAMR_Q_LOOKUP_DOMAIN *q_u, prs_struct *ps, int depth);
-BOOL samr_io_r_lookup_domain(char *desc, SAMR_R_LOOKUP_DOMAIN *r_u, prs_struct *ps, int depth);
-BOOL make_samr_q_open_domain(SAMR_Q_OPEN_DOMAIN *q_u,
- const POLICY_HND *connect_pol, uint32 flags,
- const DOM_SID *sid);
-BOOL samr_io_q_open_domain(char *desc, SAMR_Q_OPEN_DOMAIN *q_u, prs_struct *ps, int depth);
-BOOL samr_io_r_open_domain(char *desc, SAMR_R_OPEN_DOMAIN *r_u, prs_struct *ps, int depth);
-BOOL make_samr_q_unknown_2c(SAMR_Q_UNKNOWN_2C *q_u, POLICY_HND *user_pol);
+void init_samr_q_open_domain(SAMR_Q_OPEN_DOMAIN *q_u,
+ POLICY_HND *connect_pol, uint32 rid,
+ DOM_SID *sid);
+BOOL samr_io_q_open_domain(char *desc, SAMR_Q_OPEN_DOMAIN *q_u, prs_struct *ps, int depth);
+BOOL samr_io_r_open_domain(char *desc, SAMR_R_OPEN_DOMAIN *r_u, prs_struct *ps, int depth);
+void init_samr_q_unknown_2c(SAMR_Q_UNKNOWN_2C *q_u, POLICY_HND *user_pol);
BOOL samr_io_q_unknown_2c(char *desc, SAMR_Q_UNKNOWN_2C *q_u, prs_struct *ps, int depth);
-BOOL make_samr_r_unknown_2c(SAMR_R_UNKNOWN_2C *q_u, uint32 status);
+void init_samr_r_unknown_2c(SAMR_R_UNKNOWN_2C *q_u, uint32 status);
BOOL samr_io_r_unknown_2c(char *desc, SAMR_R_UNKNOWN_2C *r_u, prs_struct *ps, int depth);
-BOOL make_samr_q_unknown_3(SAMR_Q_UNKNOWN_3 *q_u,
+void init_samr_q_unknown_3(SAMR_Q_UNKNOWN_3 *q_u,
POLICY_HND *user_pol, uint16 switch_value);
BOOL samr_io_q_unknown_3(char *desc, SAMR_Q_UNKNOWN_3 *q_u, prs_struct *ps, int depth);
-BOOL make_samr_q_query_dom_info(SAMR_Q_QUERY_DOMAIN_INFO *q_u,
+void init_samr_q_query_dom_info(SAMR_Q_QUERY_DOMAIN_INFO *q_u,
POLICY_HND *domain_pol, uint16 switch_value);
BOOL samr_io_q_query_dom_info(char *desc, SAMR_Q_QUERY_DOMAIN_INFO *q_u, prs_struct *ps, int depth);
-BOOL make_unk_info3(SAM_UNK_INFO_3 *u_3);
-BOOL sam_io_unk_info3(char *desc, SAM_UNK_INFO_3 *u_3, prs_struct *ps, int depth);
-BOOL make_unk_info6(SAM_UNK_INFO_6 *u_6);
-BOOL sam_io_unk_info6(char *desc, SAM_UNK_INFO_6 *u_6, prs_struct *ps, int depth);
-BOOL make_unk_info7(SAM_UNK_INFO_7 *u_7);
-BOOL sam_io_unk_info7(char *desc, SAM_UNK_INFO_7 *u_7, prs_struct *ps, int depth);
-BOOL make_unk_info2(SAM_UNK_INFO_2 *u_2, char *domain, char *server);
+void init_unk_info2(SAM_UNK_INFO_2 *u_2, char *domain, char *server);
BOOL sam_io_unk_info2(char *desc, SAM_UNK_INFO_2 *u_2, prs_struct *ps, int depth);
-BOOL make_unk_info1(SAM_UNK_INFO_1 *u_1);
-BOOL sam_io_unk_info1(char *desc, SAM_UNK_INFO_1 *u_1, prs_struct *ps, int depth);
-BOOL make_samr_r_query_dom_info(SAMR_R_QUERY_DOMAIN_INFO *r_u,
+void init_samr_r_query_dom_info(SAMR_R_QUERY_DOMAIN_INFO *r_u,
uint16 switch_value, SAM_UNK_CTR *ctr,
uint32 status);
BOOL samr_io_r_query_dom_info(char *desc, SAMR_R_QUERY_DOMAIN_INFO *r_u, prs_struct *ps, int depth);
-BOOL make_dom_sid3(DOM_SID3 *sid3, uint16 unk_0, uint16 unk_1, DOM_SID *sid);
-BOOL make_samr_r_unknown_3(SAMR_R_UNKNOWN_3 *r_u,
+void init_dom_sid3(DOM_SID3 *sid3, uint16 unk_0, uint16 unk_1, DOM_SID *sid);
+void init_samr_r_unknown_3(SAMR_R_UNKNOWN_3 *r_u,
uint16 unknown_2, uint16 unknown_3,
uint32 unknown_4, uint16 unknown_6, uint16 unknown_7,
int num_sid3s, DOM_SID3 sid3[MAX_SAM_SIDS],
uint32 status);
BOOL samr_io_r_unknown_3(char *desc, SAMR_R_UNKNOWN_3 *r_u, prs_struct *ps, int depth);
-BOOL make_samr_q_enum_dom_users(SAMR_Q_ENUM_DOM_USERS *q_e, POLICY_HND *pol,
- uint32 start_idx,
+void init_samr_q_enum_dom_users(SAMR_Q_ENUM_DOM_USERS *q_e, POLICY_HND *pol,
+ uint16 req_num_entries, uint16 unk_0,
uint16 acb_mask, uint16 unk_1, uint32 size);
BOOL samr_io_q_enum_dom_users(char *desc, SAMR_Q_ENUM_DOM_USERS *q_e, prs_struct *ps, int depth);
-BOOL make_samr_r_enum_dom_users(SAMR_R_ENUM_DOM_USERS *r_u,
- uint32 next_idx,
+void init_samr_r_enum_dom_users(SAMR_R_ENUM_DOM_USERS *r_u,
+ uint16 total_num_entries, uint16 unk_0,
uint32 num_sam_entries, SAM_USER_INFO_21 pass[MAX_SAM_ENTRIES], uint32 status);
-BOOL samr_io_r_enum_dom_users(char *desc, SAMR_R_ENUM_DOM_USERS *r_u, prs_struct *ps, int depth);
-BOOL make_samr_q_query_dispinfo(SAMR_Q_QUERY_DISPINFO *q_e, POLICY_HND *pol,
- uint16 switch_level, uint32 start_idx,
- uint32 max_entries);
-BOOL samr_io_q_query_dispinfo(char *desc, SAMR_Q_QUERY_DISPINFO *q_e, prs_struct *ps, int depth);
-BOOL make_sam_dispinfo_1(SAM_DISPINFO_1 *sam, uint32 *num_entries,
- uint32 *data_size, uint32 start_idx,
- SAM_USER_INFO_21 pass[MAX_SAM_ENTRIES]);
-BOOL make_sam_dispinfo_2(SAM_DISPINFO_2 *sam, uint32 *num_entries,
- uint32 *data_size, uint32 start_idx,
- SAM_USER_INFO_21 pass[MAX_SAM_ENTRIES]);
-BOOL make_sam_dispinfo_3(SAM_DISPINFO_3 *sam, uint32 *num_entries,
- uint32 *data_size, uint32 start_idx,
- DOMAIN_GRP *grp);
-BOOL make_sam_dispinfo_4(SAM_DISPINFO_4 *sam, uint32 *num_entries,
- uint32 *data_size, uint32 start_idx,
- SAM_USER_INFO_21 pass[MAX_SAM_ENTRIES]);
-BOOL make_sam_dispinfo_5(SAM_DISPINFO_5 *sam, uint32 *num_entries,
- uint32 *data_size, uint32 start_idx,
- DOMAIN_GRP *grp);
-BOOL make_samr_r_query_dispinfo(SAMR_R_QUERY_DISPINFO *r_u,
- uint32 num_entries, uint32 data_size,
- uint16 switch_level, SAM_DISPINFO_CTR *ctr,
- uint32 status);
-BOOL samr_io_r_query_dispinfo(char *desc, SAMR_R_QUERY_DISPINFO *r_u, prs_struct *ps, int depth);
-BOOL make_samr_q_open_group(SAMR_Q_OPEN_GROUP *q_c,
- const POLICY_HND *hnd, uint32 unk, uint32 rid);
-BOOL samr_io_q_open_group(char *desc, SAMR_Q_OPEN_GROUP *q_u, prs_struct *ps, int depth);
-BOOL samr_io_r_open_group(char *desc, SAMR_R_OPEN_GROUP *r_u, prs_struct *ps, int depth);
-BOOL make_samr_group_info1(GROUP_INFO1 *gr1,
- char *acct_name, char *acct_desc,
- uint32 num_members);
-BOOL samr_io_group_info1(char *desc, GROUP_INFO1 *gr1, prs_struct *ps, int depth);
-BOOL make_samr_group_info4(GROUP_INFO4 *gr4, const char *acct_desc);
-BOOL samr_io_group_info4(char *desc, GROUP_INFO4 *gr4, prs_struct *ps, int depth);
-BOOL samr_group_info_ctr(char *desc, GROUP_INFO_CTR *ctr, prs_struct *ps, int depth);
-BOOL make_samr_q_create_dom_group(SAMR_Q_CREATE_DOM_GROUP *q_e,
- POLICY_HND *pol,
- const char *acct_desc);
-BOOL samr_io_q_create_dom_group(char *desc, SAMR_Q_CREATE_DOM_GROUP *q_e, prs_struct *ps, int depth);
-BOOL make_samr_r_create_dom_group(SAMR_R_CREATE_DOM_GROUP *r_u, POLICY_HND *pol,
- uint32 rid, uint32 status);
-BOOL samr_io_r_create_dom_group(char *desc, SAMR_R_CREATE_DOM_GROUP *r_u, prs_struct *ps, int depth);
-BOOL make_samr_q_delete_dom_group(SAMR_Q_DELETE_DOM_GROUP *q_c, POLICY_HND *hnd);
-BOOL samr_io_q_delete_dom_group(char *desc, SAMR_Q_DELETE_DOM_GROUP *q_u, prs_struct *ps, int depth);
-BOOL make_samr_r_delete_dom_group(SAMR_R_DELETE_DOM_GROUP *r_u,
- uint32 status);
-BOOL samr_io_r_delete_dom_group(char *desc, SAMR_R_DELETE_DOM_GROUP *r_u, prs_struct *ps, int depth);
-BOOL make_samr_q_del_groupmem(SAMR_Q_DEL_GROUPMEM *q_e,
- POLICY_HND *pol,
- uint32 rid);
-BOOL samr_io_q_del_groupmem(char *desc, SAMR_Q_DEL_GROUPMEM *q_e, prs_struct *ps, int depth);
-BOOL make_samr_r_del_groupmem(SAMR_R_DEL_GROUPMEM *r_u, POLICY_HND *pol,
- uint32 status);
-BOOL samr_io_r_del_groupmem(char *desc, SAMR_R_DEL_GROUPMEM *r_u, prs_struct *ps, int depth);
-BOOL make_samr_q_add_groupmem(SAMR_Q_ADD_GROUPMEM *q_e,
- POLICY_HND *pol,
- uint32 rid);
-BOOL samr_io_q_add_groupmem(char *desc, SAMR_Q_ADD_GROUPMEM *q_e, prs_struct *ps, int depth);
-BOOL make_samr_r_add_groupmem(SAMR_R_ADD_GROUPMEM *r_u, POLICY_HND *pol,
- uint32 status);
-BOOL samr_io_r_add_groupmem(char *desc, SAMR_R_ADD_GROUPMEM *r_u, prs_struct *ps, int depth);
-BOOL make_samr_q_set_groupinfo(SAMR_Q_SET_GROUPINFO *q_e,
- POLICY_HND *pol, GROUP_INFO_CTR *ctr);
-BOOL samr_io_q_set_groupinfo(char *desc, SAMR_Q_SET_GROUPINFO *q_e, prs_struct *ps, int depth);
-BOOL make_samr_r_set_groupinfo(SAMR_R_SET_GROUPINFO *r_u,
+BOOL samr_io_r_enum_dom_users(char *desc, SAMR_R_ENUM_DOM_USERS *r_u, prs_struct *ps, int depth);
+void init_samr_q_enum_dom_aliases(SAMR_Q_ENUM_DOM_ALIASES *q_e, POLICY_HND *pol, uint32 size);
+BOOL samr_io_q_enum_dom_aliases(char *desc, SAMR_Q_ENUM_DOM_ALIASES *q_e, prs_struct *ps, int depth);
+void init_samr_r_enum_dom_aliases(SAMR_R_ENUM_DOM_ALIASES *r_u,
+ uint32 num_sam_entries, SAM_USER_INFO_21 grps[MAX_SAM_ENTRIES],
uint32 status);
-BOOL samr_io_r_set_groupinfo(char *desc, SAMR_R_SET_GROUPINFO *r_u, prs_struct *ps, int depth);
-BOOL make_samr_q_query_groupinfo(SAMR_Q_QUERY_GROUPINFO *q_e,
- POLICY_HND *pol,
- uint16 switch_level);
-BOOL samr_io_q_query_groupinfo(char *desc, SAMR_Q_QUERY_GROUPINFO *q_e, prs_struct *ps, int depth);
-BOOL make_samr_r_query_groupinfo(SAMR_R_QUERY_GROUPINFO *r_u, GROUP_INFO_CTR *ctr,
+BOOL samr_io_r_enum_dom_aliases(char *desc, SAMR_R_ENUM_DOM_ALIASES *r_u, prs_struct *ps, int depth);
+void init_samr_q_query_dispinfo(SAMR_Q_QUERY_DISPINFO *q_e, POLICY_HND *pol,
+ uint16 switch_level, uint32 start_idx, uint32 size);
+BOOL samr_io_q_query_dispinfo(char *desc, SAMR_Q_QUERY_DISPINFO *q_e, prs_struct *ps, int depth);
+void init_sam_info_2(SAM_INFO_2 *sam, uint32 acb_mask,
+ uint32 start_idx, uint32 num_sam_entries,
+ SAM_USER_INFO_21 pass[MAX_SAM_ENTRIES]);
+void init_sam_info_1(SAM_INFO_1 *sam, uint32 acb_mask,
+ uint32 start_idx, uint32 num_sam_entries,
+ SAM_USER_INFO_21 pass[MAX_SAM_ENTRIES]);
+void init_samr_r_query_dispinfo(SAMR_R_QUERY_DISPINFO *r_u,
+ uint16 switch_level, SAM_INFO_CTR *ctr, uint32 status);
+BOOL samr_io_r_query_dispinfo(char *desc, SAMR_R_QUERY_DISPINFO *r_u, prs_struct *ps, int depth);
+void init_samr_q_enum_dom_groups(SAMR_Q_ENUM_DOM_GROUPS *q_e, POLICY_HND *pol,
+ uint16 switch_level, uint32 start_idx, uint32 size);
+BOOL samr_io_q_enum_dom_groups(char *desc, SAMR_Q_ENUM_DOM_GROUPS *q_e, prs_struct *ps, int depth);
+void init_samr_r_enum_dom_groups(SAMR_R_ENUM_DOM_GROUPS *r_u,
+ uint32 start_idx, uint32 num_sam_entries,
+ SAM_USER_INFO_21 pass[MAX_SAM_ENTRIES],
uint32 status);
-BOOL samr_io_r_query_groupinfo(char *desc, SAMR_R_QUERY_GROUPINFO *r_u, prs_struct *ps, int depth);
-BOOL make_samr_q_query_groupmem(SAMR_Q_QUERY_GROUPMEM *q_c, POLICY_HND *hnd);
-BOOL samr_io_q_query_groupmem(char *desc, SAMR_Q_QUERY_GROUPMEM *q_u, prs_struct *ps, int depth);
-BOOL make_samr_r_query_groupmem(SAMR_R_QUERY_GROUPMEM *r_u,
- uint32 num_entries, uint32 *rid, uint32 *attr, uint32 status);
-BOOL samr_io_r_query_groupmem(char *desc, SAMR_R_QUERY_GROUPMEM *r_u, prs_struct *ps, int depth);
-void samr_free_r_query_groupmem(SAMR_R_QUERY_GROUPMEM *r_u);
-BOOL make_samr_q_query_usergroups(SAMR_Q_QUERY_USERGROUPS *q_u,
- POLICY_HND *hnd);
-BOOL samr_io_q_query_usergroups(char *desc, SAMR_Q_QUERY_USERGROUPS *q_u, prs_struct *ps, int depth);
-BOOL make_samr_r_query_usergroups(SAMR_R_QUERY_USERGROUPS *r_u,
- uint32 num_gids, DOM_GID *gid, uint32 status);
-BOOL samr_io_r_query_usergroups(char *desc, SAMR_R_QUERY_USERGROUPS *r_u, prs_struct *ps, int depth);
-BOOL make_samr_q_enum_domains(SAMR_Q_ENUM_DOMAINS *q_e, POLICY_HND *pol,
- uint32 start_idx, uint32 size);
-BOOL samr_io_q_enum_domains(char *desc, SAMR_Q_ENUM_DOMAINS *q_e, prs_struct *ps, int depth);
-BOOL make_samr_r_enum_domains(SAMR_R_ENUM_DOMAINS *r_u,
- uint32 next_idx,
- uint32 num_sam_entries, char **doms, uint32 status);
-BOOL samr_io_r_enum_domains(char *desc, SAMR_R_ENUM_DOMAINS *r_u, prs_struct *ps, int depth);
-BOOL make_samr_q_enum_dom_groups(SAMR_Q_ENUM_DOM_GROUPS *q_e, POLICY_HND *pol,
- uint32 start_idx, uint32 size);
-BOOL samr_io_q_enum_dom_groups(char *desc, SAMR_Q_ENUM_DOM_GROUPS *q_e, prs_struct *ps, int depth);
-BOOL make_samr_r_enum_dom_groups(SAMR_R_ENUM_DOM_GROUPS *r_u,
- uint32 next_idx,
- uint32 num_sam_entries, DOMAIN_GRP *grps, uint32 status);
-BOOL samr_io_r_enum_dom_groups(char *desc, SAMR_R_ENUM_DOM_GROUPS *r_u, prs_struct *ps, int depth);
-BOOL make_samr_q_enum_dom_aliases(SAMR_Q_ENUM_DOM_ALIASES *q_e, POLICY_HND *pol,
- uint32 start_idx, uint32 size);
-BOOL samr_io_q_enum_dom_aliases(char *desc, SAMR_Q_ENUM_DOM_ALIASES *q_e, prs_struct *ps, int depth);
-BOOL make_samr_r_enum_dom_aliases(SAMR_R_ENUM_DOM_ALIASES *r_u,
- uint32 next_idx,
- uint32 num_sam_entries, LOCAL_GRP *alss, uint32 status);
-BOOL samr_io_r_enum_dom_aliases(char *desc, SAMR_R_ENUM_DOM_ALIASES *r_u, prs_struct *ps, int depth);
-BOOL make_samr_alias_info3(ALIAS_INFO3 *al3, const char *acct_desc);
-BOOL samr_io_alias_info3(char *desc, ALIAS_INFO3 *al3, prs_struct *ps, int depth);
-BOOL samr_alias_info_ctr(char *desc, ALIAS_INFO_CTR *ctr, prs_struct *ps, int depth);
-BOOL make_samr_q_query_aliasinfo(SAMR_Q_QUERY_ALIASINFO *q_e,
+BOOL samr_io_r_enum_dom_groups(char *desc, SAMR_R_ENUM_DOM_GROUPS *r_u, prs_struct *ps, int depth);
+void init_samr_q_query_aliasinfo(SAMR_Q_QUERY_ALIASINFO *q_e,
POLICY_HND *pol,
uint16 switch_level);
BOOL samr_io_q_query_aliasinfo(char *desc, SAMR_Q_QUERY_ALIASINFO *q_e, prs_struct *ps, int depth);
-BOOL make_samr_r_query_aliasinfo(SAMR_R_QUERY_ALIASINFO *r_u, ALIAS_INFO_CTR *ctr,
+void init_samr_r_query_aliasinfo(SAMR_R_QUERY_ALIASINFO *r_u,
+ uint16 switch_value, char *acct_desc,
uint32 status);
BOOL samr_io_r_query_aliasinfo(char *desc, SAMR_R_QUERY_ALIASINFO *r_u, prs_struct *ps, int depth);
-BOOL make_samr_q_set_aliasinfo(SAMR_Q_SET_ALIASINFO *q_u, POLICY_HND *hnd,
- ALIAS_INFO_CTR *ctr);
-BOOL samr_io_q_set_aliasinfo(char *desc, SAMR_Q_SET_ALIASINFO *q_u, prs_struct *ps, int depth);
-BOOL samr_io_r_set_aliasinfo(char *desc, SAMR_R_SET_ALIASINFO *r_u, prs_struct *ps, int depth);
-BOOL make_samr_q_query_useraliases(SAMR_Q_QUERY_USERALIASES *q_u,
- const POLICY_HND *hnd,
- uint32 *ptr_sid, DOM_SID2 *sid);
-BOOL samr_io_q_query_useraliases(char *desc, SAMR_Q_QUERY_USERALIASES *q_u, prs_struct *ps, int depth);
-void samr_free_q_query_useraliases(SAMR_Q_QUERY_USERALIASES *q_u);
-BOOL make_samr_r_query_useraliases(SAMR_R_QUERY_USERALIASES *r_u,
+BOOL samr_io_q_lookup_ids(char *desc, SAMR_Q_LOOKUP_IDS *q_u, prs_struct *ps, int depth);
+void init_samr_r_lookup_ids(SAMR_R_LOOKUP_IDS *r_u,
uint32 num_rids, uint32 *rid, uint32 status);
-BOOL samr_io_r_query_useraliases(char *desc, SAMR_R_QUERY_USERALIASES *r_u, prs_struct *ps, int depth);
-void samr_free_r_query_useraliases(SAMR_R_QUERY_USERALIASES *r_u);
-BOOL make_samr_q_open_alias(SAMR_Q_OPEN_ALIAS *q_u, const POLICY_HND *pol,
- uint32 unknown_0, uint32 rid);
-BOOL samr_io_q_open_alias(char *desc, SAMR_Q_OPEN_ALIAS *q_u, prs_struct *ps, int depth);
-BOOL samr_io_r_open_alias(char *desc, SAMR_R_OPEN_ALIAS *r_u, prs_struct *ps, int depth);
-BOOL make_samr_q_lookup_rids(SAMR_Q_LOOKUP_RIDS *q_u,
- const POLICY_HND *pol, uint32 flags,
- uint32 num_rids, uint32 *rid);
-BOOL samr_io_q_lookup_rids(char *desc, SAMR_Q_LOOKUP_RIDS *q_u, prs_struct *ps, int depth);
-void samr_free_q_lookup_rids(SAMR_Q_LOOKUP_RIDS *q_u);
-BOOL make_samr_r_lookup_rids(SAMR_R_LOOKUP_RIDS *r_u,
- uint32 num_names, fstring *name, uint8 *type,
- uint32 status);
-BOOL samr_io_r_lookup_rids(char *desc, SAMR_R_LOOKUP_RIDS *r_u, prs_struct *ps, int depth);
-void samr_free_r_lookup_rids(SAMR_R_LOOKUP_RIDS *r_u);
-BOOL make_samr_q_delete_alias(SAMR_Q_DELETE_DOM_ALIAS *q_u, POLICY_HND *hnd);
-BOOL samr_io_q_delete_alias(char *desc, SAMR_Q_DELETE_DOM_ALIAS *q_u, prs_struct *ps, int depth);
-BOOL samr_io_r_delete_alias(char *desc, SAMR_R_DELETE_DOM_ALIAS *r_u, prs_struct *ps, int depth);
-BOOL make_samr_q_create_dom_alias(SAMR_Q_CREATE_DOM_ALIAS *q_u, POLICY_HND *hnd,
- const char *acct_desc);
-BOOL samr_io_q_create_dom_alias(char *desc, SAMR_Q_CREATE_DOM_ALIAS *q_u, prs_struct *ps, int depth);
-BOOL make_samr_r_create_dom_alias(SAMR_R_CREATE_DOM_ALIAS *r_u, POLICY_HND *pol,
- uint32 rid, uint32 status);
-BOOL samr_io_r_create_dom_alias(char *desc, SAMR_R_CREATE_DOM_ALIAS *r_u, prs_struct *ps, int depth);
-BOOL make_samr_q_add_aliasmem(SAMR_Q_ADD_ALIASMEM *q_u, POLICY_HND *hnd,
- DOM_SID *sid);
-BOOL samr_io_q_add_aliasmem(char *desc, SAMR_Q_ADD_ALIASMEM *q_u, prs_struct *ps, int depth);
-BOOL samr_io_r_add_aliasmem(char *desc, SAMR_R_ADD_ALIASMEM *r_u, prs_struct *ps, int depth);
-BOOL make_samr_q_del_aliasmem(SAMR_Q_DEL_ALIASMEM *q_u, POLICY_HND *hnd,
- DOM_SID *sid);
-BOOL samr_io_q_del_aliasmem(char *desc, SAMR_Q_DEL_ALIASMEM *q_u, prs_struct *ps, int depth);
-BOOL samr_io_r_del_aliasmem(char *desc, SAMR_R_DEL_ALIASMEM *r_u, prs_struct *ps, int depth);
-BOOL make_samr_q_delete_dom_alias(SAMR_Q_DELETE_DOM_ALIAS *q_c, POLICY_HND *hnd);
-BOOL samr_io_q_delete_dom_alias(char *desc, SAMR_Q_DELETE_DOM_ALIAS *q_u, prs_struct *ps, int depth);
-BOOL make_samr_r_delete_dom_alias(SAMR_R_DELETE_DOM_ALIAS *r_u,
- uint32 status);
-BOOL samr_io_r_delete_dom_alias(char *desc, SAMR_R_DELETE_DOM_ALIAS *r_u, prs_struct *ps, int depth);
-BOOL make_samr_q_query_aliasmem(SAMR_Q_QUERY_ALIASMEM *q_c,
- const POLICY_HND *hnd);
-BOOL samr_io_q_query_aliasmem(char *desc, SAMR_Q_QUERY_ALIASMEM *q_u, prs_struct *ps, int depth);
-BOOL make_samr_r_query_aliasmem(SAMR_R_QUERY_ALIASMEM *r_u,
- uint32 num_sids, DOM_SID2 *sid, uint32 status);
-BOOL samr_io_r_query_aliasmem(char *desc, SAMR_R_QUERY_ALIASMEM *r_u, prs_struct *ps, int depth);
-BOOL make_samr_q_lookup_names(SAMR_Q_LOOKUP_NAMES *q_u,
- POLICY_HND *pol, uint32 flags,
- uint32 num_names, char **name);
+BOOL samr_io_r_lookup_ids(char *desc, SAMR_R_LOOKUP_IDS *r_u, prs_struct *ps, int depth);
BOOL samr_io_q_lookup_names(char *desc, SAMR_Q_LOOKUP_NAMES *q_u, prs_struct *ps, int depth);
-BOOL make_samr_r_lookup_names(SAMR_R_LOOKUP_NAMES *r_u,
- uint32 num_rids, uint32 *rid, uint8 *type, uint32 status);
+void init_samr_r_lookup_names(SAMR_R_LOOKUP_NAMES *r_u,
+ uint32 num_rids, uint32 *rid, uint8 *type, uint32 status);
BOOL samr_io_r_lookup_names(char *desc, SAMR_R_LOOKUP_NAMES *r_u, prs_struct *ps, int depth);
-BOOL make_samr_q_open_user(SAMR_Q_OPEN_USER *q_u,
- const POLICY_HND *pol,
+BOOL samr_io_q_unknown_12(char *desc, SAMR_Q_UNKNOWN_12 *q_u, prs_struct *ps, int depth);
+void init_samr_r_unknown_12(SAMR_R_UNKNOWN_12 *r_u,
+ uint32 num_aliases, fstring *als_name, uint32 *num_als_usrs,
+ uint32 status);
+BOOL samr_io_r_unknown_12(char *desc, SAMR_R_UNKNOWN_12 *r_u, prs_struct *ps, int depth);
+void init_samr_q_open_user(SAMR_Q_OPEN_USER *q_u,
+ POLICY_HND *pol,
uint32 unk_0, uint32 rid);
BOOL samr_io_q_open_user(char *desc, SAMR_Q_OPEN_USER *q_u, prs_struct *ps, int depth);
BOOL samr_io_r_open_user(char *desc, SAMR_R_OPEN_USER *r_u, prs_struct *ps, int depth);
-BOOL make_samr_q_create_user(SAMR_Q_CREATE_USER *q_u,
- POLICY_HND *pol,
- const char *name,
- uint16 acb_info, uint32 unk_1);
-BOOL samr_io_q_create_user(char *desc, SAMR_Q_CREATE_USER *q_u, prs_struct *ps, int depth);
-BOOL make_samr_r_create_user(SAMR_R_CREATE_USER *r_u,
- POLICY_HND *user_pol,
- uint32 unk_0, uint32 user_rid,
- uint32 status);
-BOOL samr_io_r_create_user(char *desc, SAMR_R_CREATE_USER *r_u, prs_struct *ps, int depth);
-BOOL make_samr_q_query_userinfo(SAMR_Q_QUERY_USERINFO *q_u,
+void init_samr_q_query_usergroups(SAMR_Q_QUERY_USERGROUPS *q_u,
+ POLICY_HND *hnd);
+BOOL samr_io_q_query_usergroups(char *desc, SAMR_Q_QUERY_USERGROUPS *q_u, prs_struct *ps, int depth);
+void init_samr_r_query_usergroups(SAMR_R_QUERY_USERGROUPS *r_u,
+ uint32 num_gids, DOM_GID *gid, uint32 status);
+BOOL samr_io_r_query_usergroups(char *desc, SAMR_R_QUERY_USERGROUPS *r_u, prs_struct *ps, int depth);
+void init_samr_q_query_userinfo(SAMR_Q_QUERY_USERINFO *q_u,
POLICY_HND *hnd, uint16 switch_value);
BOOL samr_io_q_query_userinfo(char *desc, SAMR_Q_QUERY_USERINFO *q_u, prs_struct *ps, int depth);
-BOOL make_sam_user_info10(SAM_USER_INFO_10 *usr,
+void init_sam_user_info10(SAM_USER_INFO_10 *usr,
uint32 acb_info);
BOOL sam_io_user_info10(char *desc, SAM_USER_INFO_10 *usr, prs_struct *ps, int depth);
-BOOL make_sam_user_info11(SAM_USER_INFO_11 *usr,
+void init_sam_user_info11(SAM_USER_INFO_11 *usr,
NTTIME *expiry,
char *mach_acct,
uint32 rid_user,
uint32 rid_group,
uint16 acct_ctrl);
BOOL sam_io_user_info11(char *desc, SAM_USER_INFO_11 *usr, prs_struct *ps, int depth);
-BOOL make_sam_user_info24(SAM_USER_INFO_24 *usr,
- char newpass[516], uint16 passlen);
-BOOL make_sam_user_info23W(SAM_USER_INFO_23 *usr,
-
- NTTIME *logon_time, /* all zeros */
- NTTIME *logoff_time, /* all zeros */
- NTTIME *kickoff_time, /* all zeros */
- NTTIME *pass_last_set_time, /* all zeros */
- NTTIME *pass_can_change_time, /* all zeros */
- NTTIME *pass_must_change_time, /* all zeros */
-
- UNISTR2 *user_name, /* NULL */
- UNISTR2 *full_name,
- UNISTR2 *home_dir,
- UNISTR2 *dir_drive,
- UNISTR2 *log_scr,
- UNISTR2 *prof_path,
- UNISTR2 *desc,
- UNISTR2 *wkstas,
- UNISTR2 *unk_str,
- UNISTR2 *mung_dial,
-
- uint32 user_rid, /* 0x0000 0000 */
- uint32 group_rid,
- uint16 acb_info,
-
- uint32 unknown_3,
- uint16 logon_divs,
- LOGON_HRS *hrs,
- uint32 unknown_5,
- char newpass[516],
- uint32 unknown_6);
-BOOL make_sam_user_info23A(SAM_USER_INFO_23 *usr,
-
- NTTIME *logon_time, /* all zeros */
- NTTIME *logoff_time, /* all zeros */
- NTTIME *kickoff_time, /* all zeros */
- NTTIME *pass_last_set_time, /* all zeros */
- NTTIME *pass_can_change_time, /* all zeros */
- NTTIME *pass_must_change_time, /* all zeros */
-
- char *user_name, /* NULL */
- char *full_name,
- char *home_dir,
- char *dir_drive,
- char *log_scr,
- char *prof_path,
- char *desc,
- char *wkstas,
- char *unk_str,
- char *mung_dial,
-
- uint32 user_rid, /* 0x0000 0000 */
- uint32 group_rid,
- uint16 acb_info,
-
- uint32 unknown_3,
- uint16 logon_divs,
- LOGON_HRS *hrs,
- uint32 unknown_5,
- char newpass[516],
- uint32 unknown_6);
-BOOL make_sam_user_info21(SAM_USER_INFO_21 *usr,
-
+void init_sam_user_info21(SAM_USER_INFO_21 *usr,
NTTIME *logon_time,
NTTIME *logoff_time,
NTTIME *kickoff_time,
@@ -3288,12 +1986,12 @@ BOOL make_sam_user_info21(SAM_USER_INFO_21 *usr,
char *full_name,
char *home_dir,
char *dir_drive,
- char *log_scr,
- char *prof_path,
- char *desc,
- char *wkstas,
- char *unk_str,
- char *mung_dial,
+ char *logon_script,
+ char *profile_path,
+ char *description,
+ char *workstations,
+ char *unknown_str,
+ char *munged_dial,
uint32 user_rid,
uint32 group_rid,
@@ -3304,435 +2002,201 @@ BOOL make_sam_user_info21(SAM_USER_INFO_21 *usr,
LOGON_HRS *hrs,
uint32 unknown_5,
uint32 unknown_6);
-BOOL make_samr_r_query_userinfo(SAMR_R_QUERY_USERINFO *r_u,
+void init_samr_r_query_userinfo(SAMR_R_QUERY_USERINFO *r_u,
uint16 switch_value, void *info, uint32 status);
BOOL samr_io_r_query_userinfo(char *desc, SAMR_R_QUERY_USERINFO *r_u, prs_struct *ps, int depth);
-BOOL make_samr_q_set_userinfo(SAMR_Q_SET_USERINFO *q_u,
- POLICY_HND *hnd,
- uint16 switch_value, void *info);
-BOOL samr_io_q_set_userinfo(char *desc, SAMR_Q_SET_USERINFO *q_u, prs_struct *ps, int depth);
-void free_samr_q_set_userinfo(SAMR_Q_SET_USERINFO *q_u);
-BOOL make_samr_r_set_userinfo(SAMR_R_SET_USERINFO *r_u, uint32 status);
-BOOL samr_io_r_set_userinfo(char *desc, SAMR_R_SET_USERINFO *r_u, prs_struct *ps, int depth);
-BOOL make_samr_q_set_userinfo2(SAMR_Q_SET_USERINFO2 *q_u,
- POLICY_HND *hnd,
- uint16 switch_value, void *info);
-BOOL samr_io_q_set_userinfo2(char *desc, SAMR_Q_SET_USERINFO2 *q_u, prs_struct *ps, int depth);
-void free_samr_q_set_userinfo2(SAMR_Q_SET_USERINFO2 *q_u);
-BOOL make_samr_r_set_userinfo2(SAMR_R_SET_USERINFO2 *r_u,
- uint32 status);
-BOOL samr_io_r_set_userinfo2(char *desc, SAMR_R_SET_USERINFO2 *r_u, prs_struct *ps, int depth);
-BOOL make_samr_q_connect(SAMR_Q_CONNECT *q_u,
- const char *srv_name, uint32 unknown_0);
+BOOL samr_io_q_unknown_32(char *desc, SAMR_Q_UNKNOWN_32 *q_u, prs_struct *ps, int depth);
+BOOL samr_io_r_unknown_32(char *desc, SAMR_R_UNKNOWN_32 *r_u, prs_struct *ps, int depth);
+void init_samr_q_connect(SAMR_Q_CONNECT *q_u,
+ char *srv_name, uint32 unknown_0);
BOOL samr_io_q_connect(char *desc, SAMR_Q_CONNECT *q_u, prs_struct *ps, int depth);
BOOL samr_io_r_connect(char *desc, SAMR_R_CONNECT *r_u, prs_struct *ps, int depth);
-BOOL make_samr_q_connect_anon(SAMR_Q_CONNECT_ANON *q_u);
+void init_samr_q_connect_anon(SAMR_Q_CONNECT_ANON *q_u);
BOOL samr_io_q_connect_anon(char *desc, SAMR_Q_CONNECT_ANON *q_u, prs_struct *ps, int depth);
BOOL samr_io_r_connect_anon(char *desc, SAMR_R_CONNECT_ANON *r_u, prs_struct *ps, int depth);
-BOOL make_samr_q_unknown_38(SAMR_Q_UNKNOWN_38 *q_u, char *srv_name);
+void init_samr_q_open_alias(SAMR_Q_OPEN_ALIAS *q_u,
+ uint32 unknown_0, uint32 rid);
+BOOL samr_io_q_open_alias(char *desc, SAMR_Q_OPEN_ALIAS *q_u, prs_struct *ps, int depth);
+BOOL samr_io_r_open_alias(char *desc, SAMR_R_OPEN_ALIAS *r_u, prs_struct *ps, int depth);
+void init_samr_q_unknown_12(SAMR_Q_UNKNOWN_12 *q_u,
+ POLICY_HND *pol, uint32 rid,
+ uint32 num_gids, uint32 *gid);
+void init_samr_q_unknown_21(SAMR_Q_UNKNOWN_21 *q_c,
+ POLICY_HND *hnd, uint16 unk_1, uint16 unk_2);
+void init_samr_q_unknown_13(SAMR_Q_UNKNOWN_13 *q_c,
+ POLICY_HND *hnd, uint16 unk_1, uint16 unk_2);
+void init_samr_q_unknown_38(SAMR_Q_UNKNOWN_38 *q_u, char *srv_name);
BOOL samr_io_q_unknown_38(char *desc, SAMR_Q_UNKNOWN_38 *q_u, prs_struct *ps, int depth);
-BOOL make_samr_r_unknown_38(SAMR_R_UNKNOWN_38 *r_u);
+void init_samr_r_unknown_38(SAMR_R_UNKNOWN_38 *r_u);
BOOL samr_io_r_unknown_38(char *desc, SAMR_R_UNKNOWN_38 *r_u, prs_struct *ps, int depth);
-BOOL make_enc_passwd(SAMR_ENC_PASSWD *pwd, char pass[512]);
+void init_enc_passwd(SAMR_ENC_PASSWD *pwd, char pass[512]);
BOOL samr_io_enc_passwd(char *desc, SAMR_ENC_PASSWD *pwd, prs_struct *ps, int depth);
-BOOL make_enc_hash(SAMR_ENC_HASH *hsh, uchar hash[16]);
+void init_enc_hash(SAMR_ENC_HASH *hsh, uchar hash[16]);
BOOL samr_io_enc_hash(char *desc, SAMR_ENC_HASH *hsh, prs_struct *ps, int depth);
-BOOL make_samr_q_chgpasswd_user(SAMR_Q_CHGPASSWD_USER *q_u,
+void init_samr_q_chgpasswd_user(SAMR_Q_CHGPASSWD_USER *q_u,
char *dest_host, char *user_name,
char nt_newpass[516], uchar nt_oldhash[16],
char lm_newpass[516], uchar lm_oldhash[16]);
BOOL samr_io_q_chgpasswd_user(char *desc, SAMR_Q_CHGPASSWD_USER *q_u, prs_struct *ps, int depth);
-BOOL make_samr_r_chgpasswd_user(SAMR_R_CHGPASSWD_USER *r_u, uint32 status);
+void init_samr_r_chgpasswd_user(SAMR_R_CHGPASSWD_USER *r_u, uint32 status);
BOOL samr_io_r_chgpasswd_user(char *desc, SAMR_R_CHGPASSWD_USER *r_u, prs_struct *ps, int depth);
/*The following definitions come from rpc_parse/parse_sec.c */
-BOOL make_sec_access(SEC_ACCESS *t, uint32 mask);
+void init_sec_access(SEC_ACCESS *t, uint32 mask);
BOOL sec_io_access(char *desc, SEC_ACCESS *t, prs_struct *ps, int depth);
-BOOL make_sec_ace(SEC_ACE *t, DOM_SID *sid, uint8 type, SEC_ACCESS mask, uint8 flag);
-BOOL sec_io_ace(char *desc, SEC_ACE *t, prs_struct *ps, int depth);
-BOOL make_sec_acl(SEC_ACL *t, uint16 revision, int num_aces, SEC_ACE *ace);
-void free_sec_acl(SEC_ACL *t);
-BOOL sec_io_acl(char *desc, SEC_ACL *t, prs_struct *ps, int depth);
-int make_sec_desc(SEC_DESC *t, uint16 revision, uint16 type,
+void init_sec_ace(SEC_ACE *t, DOM_SID *sid, uint8 type, SEC_ACCESS mask, uint8 flag);
+BOOL sec_io_ace(char *desc, SEC_ACE *psa, prs_struct *ps, int depth);
+SEC_ACL *make_sec_acl(uint16 revision, int num_aces, SEC_ACE *ace_list);
+SEC_ACL *dup_sec_acl( SEC_ACL *src);
+void free_sec_acl(SEC_ACL **ppsa);
+BOOL sec_io_acl(char *desc, SEC_ACL **ppsa, prs_struct *ps, int depth);
+SEC_DESC *make_sec_desc(uint16 revision, uint16 type,
DOM_SID *owner_sid, DOM_SID *grp_sid,
- SEC_ACL *sacl, SEC_ACL *dacl);
-void free_sec_desc(SEC_DESC *t);
-BOOL make_sec_desc_buf(SEC_DESC_BUF *buf, int len, SEC_DESC *data);
-void free_sec_desc_buf(SEC_DESC_BUF *buf);
-BOOL sec_io_desc_buf(char *desc, SEC_DESC_BUF *sec, prs_struct *ps, int depth);
-
-/*The following definitions come from rpc_parse/parse_spoolss.c */
-
-BOOL make_systemtime(SYSTEMTIME *systime, struct tm *unixtime);
-BOOL smb_io_notify_info_data_strings(char *desc,SPOOL_NOTIFY_INFO_DATA *data,
- prs_struct *ps, int depth);
-BOOL spoolss_io_r_open_printer_ex(char *desc, SPOOL_R_OPEN_PRINTER_EX *r_u, prs_struct *ps, int depth);
-BOOL make_spoolss_q_open_printer_ex(SPOOL_Q_OPEN_PRINTER_EX *q_u,
- const char *printername,
- uint32 cbbuf, uint32 devmod, uint32 des_access,
- const char *station,
- const char *username);
-BOOL spoolss_io_q_open_printer_ex(char *desc, SPOOL_Q_OPEN_PRINTER_EX *q_u, prs_struct *ps, int depth);
-BOOL make_spoolss_q_getprinterdata(SPOOL_Q_GETPRINTERDATA *q_u,
- POLICY_HND *handle,
- char *valuename,
- uint32 size);
-BOOL spoolss_io_q_getprinterdata(char *desc, SPOOL_Q_GETPRINTERDATA *q_u, prs_struct *ps, int depth);
-BOOL spoolss_io_r_getprinterdata(char *desc, SPOOL_R_GETPRINTERDATA *r_u, prs_struct *ps, int depth);
-BOOL make_spoolss_q_closeprinter(SPOOL_Q_CLOSEPRINTER *q_u, POLICY_HND *hnd);
-BOOL spoolss_io_q_closeprinter(char *desc, SPOOL_Q_CLOSEPRINTER *q_u, prs_struct *ps, int depth);
-BOOL spoolss_io_r_closeprinter(char *desc, SPOOL_R_CLOSEPRINTER *r_u, prs_struct *ps, int depth);
-BOOL spoolss_io_q_startdocprinter(char *desc, SPOOL_Q_STARTDOCPRINTER *q_u, prs_struct *ps, int depth);
-BOOL spoolss_io_r_startdocprinter(char *desc, SPOOL_R_STARTDOCPRINTER *r_u, prs_struct *ps, int depth);
-BOOL spoolss_io_q_enddocprinter(char *desc, SPOOL_Q_ENDDOCPRINTER *q_u, prs_struct *ps, int depth);
-BOOL spoolss_io_r_enddocprinter(char *desc, SPOOL_R_ENDDOCPRINTER *r_u, prs_struct *ps, int depth);
-BOOL spoolss_io_q_startpageprinter(char *desc, SPOOL_Q_STARTPAGEPRINTER *q_u, prs_struct *ps, int depth);
-BOOL spoolss_io_r_startpageprinter(char *desc, SPOOL_R_STARTPAGEPRINTER *r_u, prs_struct *ps, int depth);
-BOOL spoolss_io_q_endpageprinter(char *desc, SPOOL_Q_ENDPAGEPRINTER *q_u, prs_struct *ps, int depth);
-BOOL spoolss_io_r_endpageprinter(char *desc, SPOOL_R_ENDPAGEPRINTER *r_u, prs_struct *ps, int depth);
-BOOL spoolss_io_q_writeprinter(char *desc, SPOOL_Q_WRITEPRINTER *q_u, prs_struct *ps, int depth);
-BOOL spoolss_io_r_writeprinter(char *desc, SPOOL_R_WRITEPRINTER *r_u, prs_struct *ps, int depth);
-BOOL spoolss_io_q_rffpcnex(char *desc, SPOOL_Q_RFFPCNEX *q_u,
- prs_struct *ps, int depth);
-BOOL spoolss_io_r_rffpcnex(char *desc, SPOOL_R_RFFPCNEX *r_u,
- prs_struct *ps, int depth);
-BOOL spoolss_io_q_rfnpcnex(char *desc, SPOOL_Q_RFNPCNEX *q_u,
- prs_struct *ps, int depth);
-BOOL spoolss_io_r_rfnpcnex(char *desc,
- SPOOL_R_RFNPCNEX *r_u,
- prs_struct *ps, int depth);
-BOOL spoolss_io_free_buffer(BUFFER *buffer);
-BOOL spoolss_io_q_getprinterdriver2(char *desc,
- SPOOL_Q_GETPRINTERDRIVER2 *q_u,
- prs_struct *ps, int depth);
-BOOL spoolss_io_r_getprinterdriver2(char *desc, SPOOL_R_GETPRINTERDRIVER2 *r_u,
- prs_struct *ps, int depth);
-BOOL make_spoolss_q_enumprinters(SPOOL_Q_ENUMPRINTERS *q_u,
- uint32 flags,
- const char* servername,
- uint32 level,
- uint32 size);
-BOOL spoolss_io_q_enumprinters(char *desc, SPOOL_Q_ENUMPRINTERS *q_u,
- prs_struct *ps, int depth);
-void free_r_enumprinters(SPOOL_R_ENUMPRINTERS *r_u);
-BOOL spoolss_io_r_enumprinters(char *desc,
- SPOOL_R_ENUMPRINTERS *r_u,
- prs_struct *ps, int depth);
-BOOL spoolss_io_r_getprinter(char *desc,
- SPOOL_R_GETPRINTER *r_u,
- prs_struct *ps, int depth);
-BOOL make_spoolss_q_getprinter(SPOOL_Q_GETPRINTER *q_u,
- POLICY_HND *hnd,
- uint32 level,
- uint32 buf_size);
-BOOL spoolss_io_q_getprinter(char *desc, SPOOL_Q_GETPRINTER *q_u,
- prs_struct *ps, int depth);
-BOOL spoolss_io_r_setprinter(char *desc, SPOOL_R_SETPRINTER *r_u, prs_struct *ps, int depth);
-BOOL spoolss_io_q_setprinter(char *desc, SPOOL_Q_SETPRINTER *q_u, prs_struct *ps, int depth);
-BOOL spoolss_io_r_fcpn(char *desc, SPOOL_R_FCPN *r_u, prs_struct *ps, int depth);
-BOOL spoolss_io_q_fcpn(char *desc, SPOOL_Q_FCPN *q_u, prs_struct *ps, int depth);
-BOOL spoolss_io_r_addjob(char *desc, SPOOL_R_ADDJOB *r_u, prs_struct *ps, int depth);
-BOOL spoolss_io_q_addjob(char *desc, SPOOL_Q_ADDJOB *q_u, prs_struct *ps, int depth);
-void free_r_enumjobs(SPOOL_R_ENUMJOBS *r_u);
-BOOL spoolss_io_r_enumjobs(char *desc, SPOOL_R_ENUMJOBS *r_u, prs_struct *ps, int depth);
-BOOL make_spoolss_q_enumjobs(SPOOL_Q_ENUMJOBS *q_u, const POLICY_HND *hnd,
- uint32 firstjob,
- uint32 numofjobs,
- uint32 level,
- uint32 buf_size);
-BOOL spoolss_io_q_enumjobs(char *desc, SPOOL_Q_ENUMJOBS *q_u, prs_struct *ps, int depth);
-BOOL spoolss_io_r_schedulejob(char *desc, SPOOL_R_SCHEDULEJOB *r_u, prs_struct *ps, int depth);
-BOOL spoolss_io_q_schedulejob(char *desc, SPOOL_Q_SCHEDULEJOB *q_u, prs_struct *ps, int depth);
-BOOL spoolss_io_r_setjob(char *desc, SPOOL_R_SETJOB *r_u, prs_struct *ps, int depth);
-BOOL spoolss_io_q_setjob(char *desc, SPOOL_Q_SETJOB *q_u, prs_struct *ps, int depth);
-BOOL spoolss_io_r_enumdrivers(char *desc, SPOOL_R_ENUMPRINTERDRIVERS *r_u, prs_struct *ps, int depth);
-BOOL spoolss_io_q_enumprinterdrivers(char *desc, SPOOL_Q_ENUMPRINTERDRIVERS *q_u, prs_struct *ps, int depth);
-BOOL spoolss_io_r_enumforms(char *desc, SPOOL_R_ENUMFORMS *r_u, prs_struct *ps, int depth);
-BOOL spoolss_io_q_enumforms(char *desc, SPOOL_Q_ENUMFORMS *q_u, prs_struct *ps, int depth);
-BOOL spoolss_io_r_enumports(char *desc, SPOOL_R_ENUMPORTS *r_u, prs_struct *ps, int depth);
-BOOL spoolss_io_q_enumports(char *desc, SPOOL_Q_ENUMPORTS *q_u, prs_struct *ps, int depth);
-BOOL spool_io_printer_info_level_2(char *desc, SPOOL_PRINTER_INFO_LEVEL_2 **q_u, prs_struct *ps, int depth);
-BOOL spool_io_printer_info_level(char *desc, SPOOL_PRINTER_INFO_LEVEL *il, prs_struct *ps, int depth);
-BOOL spool_io_user_level_1(char *desc, SPOOL_USER_LEVEL_1 **q_u, prs_struct *ps, int depth);
-BOOL spool_io_user_level(char *desc, SPOOL_USER_LEVEL *q_u, prs_struct *ps, int depth);
-BOOL spoolss_io_q_addprinterex(char *desc, SPOOL_Q_ADDPRINTEREX *q_u, prs_struct *ps, int depth);
-BOOL spoolss_io_r_addprinterex(char *desc, SPOOL_R_ADDPRINTEREX *r_u, prs_struct *ps, int depth);
-BOOL spool_io_printer_driver_info_level_3(char *desc, SPOOL_PRINTER_DRIVER_INFO_LEVEL_3 **q_u,
- prs_struct *ps, int depth);
-BOOL uniarray_2_ascarray(BUFFER5 *buf5, char ***ar);
-BOOL smb_io_unibuffer(char *desc, UNISTR2 *buffer, prs_struct *ps, int depth);
-BOOL spool_io_printer_driver_info_level(char *desc, SPOOL_PRINTER_DRIVER_INFO_LEVEL *il, prs_struct *ps, int depth);
-BOOL spoolss_io_q_addprinterdriver(char *desc, SPOOL_Q_ADDPRINTERDRIVER *q_u, prs_struct *ps, int depth);
-BOOL spoolss_io_r_addprinterdriver(char *desc, SPOOL_R_ADDPRINTERDRIVER *q_u, prs_struct *ps, int depth);
-BOOL uni_2_asc_printer_driver_3(SPOOL_PRINTER_DRIVER_INFO_LEVEL_3 *uni,
- NT_PRINTER_DRIVER_INFO_LEVEL_3 **asc);
-BOOL uni_2_asc_printer_info_2(SPOOL_PRINTER_INFO_LEVEL_2 *uni,
- NT_PRINTER_INFO_LEVEL_2 **asc);
-BOOL convert_printer_info(SPOOL_PRINTER_INFO_LEVEL uni,
- NT_PRINTER_INFO_LEVEL *printer,
- uint32 level);
-BOOL convert_printer_driver_info(SPOOL_PRINTER_DRIVER_INFO_LEVEL uni,
- NT_PRINTER_DRIVER_INFO_LEVEL *printer,
- uint32 level);
-BOOL convert_devicemode(DEVICEMODE devmode, NT_DEVICEMODE *nt_devmode);
-BOOL spoolss_io_r_getprinterdriverdir(char *desc, SPOOL_R_GETPRINTERDRIVERDIR *r_u, prs_struct *ps, int depth);
-BOOL spoolss_io_q_getprinterdriverdir(char *desc, SPOOL_Q_GETPRINTERDRIVERDIR *q_u, prs_struct *ps, int depth);
-BOOL spoolss_io_r_enumprintprocessors(char *desc, SPOOL_R_ENUMPRINTPROCESSORS *r_u, prs_struct *ps, int depth);
-BOOL spoolss_io_q_enumprintprocessors(char *desc, SPOOL_Q_ENUMPRINTPROCESSORS *q_u, prs_struct *ps, int depth);
-BOOL spoolss_io_r_enumprintmonitors(char *desc, SPOOL_R_ENUMPRINTMONITORS *r_u, prs_struct *ps, int depth);
-BOOL spoolss_io_q_enumprintmonitors(char *desc, SPOOL_Q_ENUMPRINTMONITORS *q_u, prs_struct *ps, int depth);
-BOOL spoolss_io_r_enumprinterdata(char *desc, SPOOL_R_ENUMPRINTERDATA *r_u, prs_struct *ps, int depth);
-BOOL spoolss_io_q_enumprinterdata(char *desc, SPOOL_Q_ENUMPRINTERDATA *q_u, prs_struct *ps, int depth);
-BOOL spoolss_io_q_setprinterdata(char *desc, SPOOL_Q_SETPRINTERDATA *q_u, prs_struct *ps, int depth);
-BOOL spoolss_io_r_setprinterdata(char *desc, SPOOL_R_SETPRINTERDATA *r_u, prs_struct *ps, int depth);
-BOOL convert_specific_param(NT_PRINTER_PARAM **param, UNISTR2 value , uint32 type, uint8 *data, uint32 len);
-BOOL spoolss_io_q_addform(char *desc, SPOOL_Q_ADDFORM *q_u, prs_struct *ps, int depth);
-BOOL spoolss_io_r_addform(char *desc, SPOOL_R_ADDFORM *r_u, prs_struct *ps, int depth);
-BOOL spoolss_io_q_setform(char *desc, SPOOL_Q_SETFORM *q_u, prs_struct *ps, int depth);
-BOOL spoolss_io_r_setform(char *desc, SPOOL_R_SETFORM *r_u, prs_struct *ps, int depth);
-BOOL spoolss_io_r_getjob(char *desc, SPOOL_R_GETJOB *r_u, prs_struct *ps, int depth);
-BOOL spoolss_io_q_getjob(char *desc, SPOOL_Q_GETJOB *q_u, prs_struct *ps, int depth);
+ SEC_ACL *sacl, SEC_ACL *dacl, size_t *sec_desc_size);
+SEC_DESC *dup_sec_desc( SEC_DESC *src);
+void free_sec_desc(SEC_DESC **ppsd);
+SEC_DESC *make_standard_sec_desc(DOM_SID *owner_sid, DOM_SID *grp_sid,
+ SEC_ACL *dacl, size_t *sec_desc_size);
+BOOL sec_io_desc(char *desc, SEC_DESC **ppsd, prs_struct *ps, int depth);
+SEC_DESC_BUF *make_sec_desc_buf(int len, SEC_DESC *sec_desc);
+SEC_DESC_BUF *dup_sec_desc_buf(SEC_DESC_BUF *src);
+void free_sec_desc_buf(SEC_DESC_BUF **ppsdb);
+BOOL sec_io_desc_buf(char *desc, SEC_DESC_BUF **ppsdb, prs_struct *ps, int depth);
/*The following definitions come from rpc_parse/parse_srv.c */
-BOOL make_srv_share_info1_str(SH_INFO_1_STR *sh1, char *net_name, char *remark);
-BOOL make_srv_share_info1(SH_INFO_1 *sh1, char *net_name, uint32 type, char *remark);
-BOOL make_srv_share_info2_str(SH_INFO_2_STR *sh2,
+void init_srv_share_info1_str(SH_INFO_1_STR *sh1, char *net_name, char *remark);
+void init_srv_share_info1(SH_INFO_1 *sh1, char *net_name, uint32 type, char *remark);
+void init_srv_share_info2_str(SH_INFO_2_STR *sh2,
char *net_name, char *remark,
- char *path, char *pass);
-BOOL make_srv_share_info2(SH_INFO_2 *sh2,
+ char *path, char *passwd);
+void init_srv_share_info2(SH_INFO_2 *sh2,
char *net_name, uint32 type, char *remark,
uint32 perms, uint32 max_uses, uint32 num_uses,
- char *path, char *pass);
-BOOL make_srv_q_net_share_enum(SRV_Q_NET_SHARE_ENUM *q_n,
- const char *srv_name,
- uint32 share_level, SRV_SHARE_INFO_CTR *ctr,
- uint32 preferred_len,
- ENUM_HND *hnd);
-BOOL srv_io_q_net_share_enum(char *desc, SRV_Q_NET_SHARE_ENUM *q_n, prs_struct *ps, int depth);
-BOOL srv_io_r_net_share_enum(char *desc, SRV_R_NET_SHARE_ENUM *r_n, prs_struct *ps, int depth);
-BOOL make_srv_sess_info0_str(SESS_INFO_0_STR *ss0, char *name);
-BOOL make_srv_sess_info0(SESS_INFO_0 *ss0, char *name);
-BOOL make_srv_sess_info1_str(SESS_INFO_1_STR *ss1, char *name, char *user);
-BOOL make_srv_sess_info1(SESS_INFO_1 *ss1,
+ char *path, char *passwd);
+void free_srv_share_info_ctr(SRV_SHARE_INFO_CTR *ctr);
+void free_srv_q_net_share_enum(SRV_Q_NET_SHARE_ENUM *q_n);
+void free_srv_r_net_share_enum(SRV_R_NET_SHARE_ENUM *r_n);
+void init_srv_q_net_share_enum(SRV_Q_NET_SHARE_ENUM *q_n,
+ char *srv_name, uint32 info_level,
+ uint32 preferred_len, ENUM_HND *hnd);
+BOOL srv_io_q_net_share_enum(char *desc, SRV_Q_NET_SHARE_ENUM *q_n, prs_struct *ps, int depth);
+BOOL srv_io_r_net_share_enum(char *desc, SRV_R_NET_SHARE_ENUM *r_n, prs_struct *ps, int depth);
+void free_srv_q_net_share_get_info(SRV_Q_NET_SHARE_GET_INFO *q_n);
+void free_srv_r_net_share_get_info(SRV_R_NET_SHARE_GET_INFO *r_n);
+BOOL srv_io_q_net_share_get_info(char *desc, SRV_Q_NET_SHARE_GET_INFO *q_n, prs_struct *ps, int depth);
+BOOL srv_io_r_net_share_get_info(char *desc, SRV_R_NET_SHARE_GET_INFO *r_n, prs_struct *ps, int depth);
+void init_srv_sess_info0_str(SESS_INFO_0_STR *ss0, char *name);
+void init_srv_sess_info0(SESS_INFO_0 *ss0, char *name);
+void init_srv_sess_info1_str(SESS_INFO_1_STR *ss1, char *name, char *user);
+void init_srv_sess_info1(SESS_INFO_1 *ss1,
char *name, char *user,
uint32 num_opens, uint32 open_time, uint32 idle_time,
uint32 user_flags);
-BOOL make_srv_q_net_sess_enum(SRV_Q_NET_SESS_ENUM *q_n,
- const char *srv_name, const char *qual_name,
- char *user_name,
+void init_srv_q_net_sess_enum(SRV_Q_NET_SESS_ENUM *q_n,
+ char *srv_name, char *qual_name,
uint32 sess_level, SRV_SESS_INFO_CTR *ctr,
uint32 preferred_len,
ENUM_HND *hnd);
-BOOL srv_io_q_net_sess_enum(char *desc, SRV_Q_NET_SESS_ENUM *q_n, prs_struct *ps, int depth);
-BOOL srv_io_r_net_sess_enum(char *desc, SRV_R_NET_SESS_ENUM *r_n, prs_struct *ps, int depth);
-BOOL make_srv_conn_info0(CONN_INFO_0 *ss0, uint32 id);
-BOOL make_srv_conn_info1_str(CONN_INFO_1_STR *ss1, char *usr_name, char *net_name);
-BOOL make_srv_conn_info1(CONN_INFO_1 *ss1,
+BOOL srv_io_q_net_sess_enum(char *desc, SRV_Q_NET_SESS_ENUM *q_n, prs_struct *ps, int depth);
+BOOL srv_io_r_net_sess_enum(char *desc, SRV_R_NET_SESS_ENUM *r_n, prs_struct *ps, int depth);
+void init_srv_conn_info0(CONN_INFO_0 *ss0, uint32 id);
+void init_srv_conn_info1_str(CONN_INFO_1_STR *ss1, char *usr_name, char *net_name);
+void init_srv_conn_info1(CONN_INFO_1 *ss1,
uint32 id, uint32 type,
uint32 num_opens, uint32 num_users, uint32 open_time,
char *usr_name, char *net_name);
-BOOL make_srv_q_net_conn_enum(SRV_Q_NET_CONN_ENUM *q_n,
- const char *srv_name, const char *qual_name,
+void init_srv_q_net_conn_enum(SRV_Q_NET_CONN_ENUM *q_n,
+ char *srv_name, char *qual_name,
uint32 conn_level, SRV_CONN_INFO_CTR *ctr,
uint32 preferred_len,
ENUM_HND *hnd);
-BOOL srv_io_q_net_conn_enum(char *desc, SRV_Q_NET_CONN_ENUM *q_n, prs_struct *ps, int depth);
+BOOL srv_io_q_net_conn_enum(char *desc, SRV_Q_NET_CONN_ENUM *q_n, prs_struct *ps, int depth);
BOOL srv_io_r_net_conn_enum(char *desc, SRV_R_NET_CONN_ENUM *r_n, prs_struct *ps, int depth);
-BOOL make_srv_tprt_info0_str(TPRT_INFO_0_STR *tp0,
- char *trans_name,
- char *trans_addr, uint32 trans_addr_len,
- char *addr_name);
-BOOL make_srv_tprt_info0(TPRT_INFO_0 *tp0,
- uint32 num_vcs, uint32 trans_addr_len,
- char *trans_name, char *trans_addr,
- char *addr_name);
-void free_srv_tprt_info_0(SRV_TPRT_INFO_0 *tp0);
-void free_srv_tprt_ctr(SRV_TPRT_INFO_CTR *ctr);
-BOOL make_srv_q_net_tprt_enum(SRV_Q_NET_TPRT_ENUM *q_n,
- const char *srv_name,
- uint32 tprt_level, SRV_TPRT_INFO_CTR *ctr,
- uint32 preferred_len,
- ENUM_HND *hnd);
-BOOL srv_io_q_net_tprt_enum(char *desc, SRV_Q_NET_TPRT_ENUM *q_n, prs_struct *ps, int depth);
-BOOL srv_io_r_net_tprt_enum(char *desc, SRV_R_NET_TPRT_ENUM *r_n, prs_struct *ps, int depth);
-BOOL make_srv_file_info3_str(FILE_INFO_3_STR *fi3, char *user_name, char *path_name);
-BOOL make_srv_file_info3(FILE_INFO_3 *fl3,
+void init_srv_file_info3_str(FILE_INFO_3_STR *fi3, char *user_name, char *path_name);
+void init_srv_file_info3(FILE_INFO_3 *fl3,
uint32 id, uint32 perms, uint32 num_locks,
char *path_name, char *user_name);
-BOOL make_srv_q_net_file_enum(SRV_Q_NET_FILE_ENUM *q_n,
- const char *srv_name, const char *qual_name,
- uint32 file_id,
+void init_srv_q_net_file_enum(SRV_Q_NET_FILE_ENUM *q_n,
+ char *srv_name, char *qual_name,
uint32 file_level, SRV_FILE_INFO_CTR *ctr,
uint32 preferred_len,
ENUM_HND *hnd);
-BOOL srv_io_q_net_file_enum(char *desc, SRV_Q_NET_FILE_ENUM *q_n, prs_struct *ps, int depth);
-BOOL srv_io_r_net_file_enum(char *desc, SRV_R_NET_FILE_ENUM *r_n, prs_struct *ps, int depth);
-BOOL make_srv_info_101(SRV_INFO_101 *sv101, uint32 platform_id, char *name,
+BOOL srv_io_q_net_file_enum(char *desc, SRV_Q_NET_FILE_ENUM *q_n, prs_struct *ps, int depth);
+BOOL srv_io_r_net_file_enum(char *desc, SRV_R_NET_FILE_ENUM *r_n, prs_struct *ps, int depth);
+void init_srv_info_101(SRV_INFO_101 *sv101, uint32 platform_id, char *name,
uint32 ver_major, uint32 ver_minor,
uint32 srv_type, char *comment);
-BOOL make_srv_info_102(SRV_INFO_102 *sv102, uint32 platform_id, char *name,
+void init_srv_info_102(SRV_INFO_102 *sv102, uint32 platform_id, char *name,
char *comment, uint32 ver_major, uint32 ver_minor,
uint32 srv_type, uint32 users, uint32 disc, uint32 hidden,
uint32 announce, uint32 ann_delta, uint32 licenses,
char *usr_path);
-BOOL make_srv_q_net_srv_get_info(SRV_Q_NET_SRV_GET_INFO *srv,
+void init_srv_q_net_srv_get_info(SRV_Q_NET_SRV_GET_INFO *srv,
char *server_name, uint32 switch_value);
-BOOL srv_io_q_net_srv_get_info(char *desc, SRV_Q_NET_SRV_GET_INFO *q_n, prs_struct *ps, int depth);
-BOOL make_srv_r_net_srv_get_info(SRV_R_NET_SRV_GET_INFO *srv,
+BOOL srv_io_q_net_srv_get_info(char *desc, SRV_Q_NET_SRV_GET_INFO *q_n, prs_struct *ps, int depth);
+void init_srv_r_net_srv_get_info(SRV_R_NET_SRV_GET_INFO *srv,
uint32 switch_value, SRV_INFO_CTR *ctr, uint32 status);
-BOOL srv_io_r_net_srv_get_info(char *desc, SRV_R_NET_SRV_GET_INFO *r_n, prs_struct *ps, int depth);
-BOOL make_srv_q_net_remote_tod(SRV_Q_NET_REMOTE_TOD *q_t, char *server_name);
-BOOL srv_io_q_net_remote_tod(char *desc, SRV_Q_NET_REMOTE_TOD *q_n, prs_struct *ps, int depth);
-BOOL make_time_of_day_info(TIME_OF_DAY_INFO *tod, uint32 elapsedt, uint32 msecs,
+BOOL srv_io_r_net_srv_get_info(char *desc, SRV_R_NET_SRV_GET_INFO *r_n, prs_struct *ps, int depth);
+BOOL srv_io_q_net_remote_tod(char *desc, SRV_Q_NET_REMOTE_TOD *q_n, prs_struct *ps, int depth);
+void init_time_of_day_info(TIME_OF_DAY_INFO *tod, uint32 elapsedt, uint32 msecs,
uint32 hours, uint32 mins, uint32 secs, uint32 hunds,
uint32 zone, uint32 tintervals, uint32 day,
uint32 month, uint32 year, uint32 weekday);
BOOL srv_io_r_net_remote_tod(char *desc, SRV_R_NET_REMOTE_TOD *r_n, prs_struct *ps, int depth);
-/*The following definitions come from rpc_parse/parse_svc.c */
-
-BOOL make_svc_q_open_sc_man(SVC_Q_OPEN_SC_MAN *q_u,
- const char *server, const char *database,
- uint32 des_access) ;
-BOOL svc_io_q_open_sc_man(char *desc, SVC_Q_OPEN_SC_MAN *q_u, prs_struct *ps, int depth);
-BOOL make_svc_r_open_sc_man(SVC_R_OPEN_SC_MAN *r_u, POLICY_HND *hnd,
- uint32 status) ;
-BOOL svc_io_r_open_sc_man(char *desc, SVC_R_OPEN_SC_MAN *r_u, prs_struct *ps, int depth);
-BOOL make_svc_q_open_service(SVC_Q_OPEN_SERVICE *q_u,
- POLICY_HND *hnd,
- const char *server,
- uint32 des_access) ;
-BOOL svc_io_q_open_service(char *desc, SVC_Q_OPEN_SERVICE *q_u, prs_struct *ps, int depth);
-BOOL make_svc_r_open_service(SVC_R_OPEN_SERVICE *r_u, POLICY_HND *hnd,
- uint32 status) ;
-BOOL svc_io_r_open_service(char *desc, SVC_R_OPEN_SERVICE *r_u, prs_struct *ps, int depth);
-BOOL make_svc_q_stop_service(SVC_Q_STOP_SERVICE *q_c, POLICY_HND *hnd,
- uint32 unk);
-BOOL svc_io_q_stop_service(char *desc, SVC_Q_STOP_SERVICE *q_s, prs_struct *ps, int depth);
-BOOL svc_io_r_stop_service(char *desc, SVC_R_STOP_SERVICE *r_s, prs_struct *ps, int depth);
-BOOL make_svc_q_start_service(SVC_Q_START_SERVICE *q_c, POLICY_HND *hnd,
- uint32 argc,
- char **argv);
-BOOL svc_io_q_start_service(char *desc, SVC_Q_START_SERVICE *q_s, prs_struct *ps, int depth);
-BOOL svc_io_r_start_service(char *desc, SVC_R_START_SERVICE *r_s, prs_struct *ps, int depth);
-BOOL make_svc_query_svc_cfg(QUERY_SERVICE_CONFIG *q_u,
- uint32 service_type, uint32 start_type,
- uint32 error_control,
- char* bin_path_name, char* load_order_grp,
- uint32 tag_id,
- char* dependencies, char* service_start_name,
- char* disp_name);
-BOOL svc_io_query_svc_cfg(char *desc, QUERY_SERVICE_CONFIG *q_u, prs_struct *ps, int depth);
-BOOL make_svc_q_enum_svcs_status(SVC_Q_ENUM_SVCS_STATUS *q_c, POLICY_HND *hnd,
- uint32 service_type, uint32 service_state,
- uint32 buf_size, uint32 resume_hnd );
-BOOL svc_io_q_enum_svcs_status(char *desc, SVC_Q_ENUM_SVCS_STATUS *q_u, prs_struct *ps, int depth);
-BOOL make_svc_r_enum_svcs_status(SVC_R_ENUM_SVCS_STATUS *r_c,
- ENUM_SRVC_STATUS *svcs, uint32 more_buf_size,
- uint32 num_svcs, uint32 resume_hnd,
- uint32 dos_status);
-BOOL svc_io_r_enum_svcs_status(char *desc, SVC_R_ENUM_SVCS_STATUS *svc, prs_struct *ps, int depth);
-BOOL svc_io_svc_status(char *desc, SVC_STATUS *svc, prs_struct *ps, int depth);
-BOOL make_svc_q_query_svc_config(SVC_Q_QUERY_SVC_CONFIG *q_c, POLICY_HND *hnd,
- uint32 buf_size);
-BOOL svc_io_q_query_svc_config(char *desc, SVC_Q_QUERY_SVC_CONFIG *q_u, prs_struct *ps, int depth);
-BOOL make_svc_r_query_svc_config(SVC_R_QUERY_SVC_CONFIG *r_c,
- QUERY_SERVICE_CONFIG *cfg,
- uint32 buf_size);
-BOOL svc_io_r_query_svc_config(char *desc, SVC_R_QUERY_SVC_CONFIG *r_u, prs_struct *ps, int depth);
-BOOL svc_io_q_query_disp_name(char *desc, SVC_Q_QUERY_DISP_NAME *q_u, prs_struct *ps, int depth);
-BOOL make_svc_r_query_disp_name(SVC_R_QUERY_DISP_NAME *r_d,
- char *disp_name, uint32 status);
-BOOL svc_io_r_query_disp_name(char *desc, SVC_R_QUERY_DISP_NAME *r_u, prs_struct *ps, int depth);
-BOOL make_svc_q_close(SVC_Q_CLOSE *q_c, POLICY_HND *hnd);
-BOOL svc_io_q_close(char *desc, SVC_Q_CLOSE *q_u, prs_struct *ps, int depth);
-BOOL svc_io_r_close(char *desc, SVC_R_CLOSE *r_u, prs_struct *ps, int depth);
-BOOL make_svc_q_change_svc_config(SVC_Q_CHANGE_SVC_CONFIG *q_u, POLICY_HND *hnd,
- uint32 service_type, uint32 start_type,
- uint32 unknown_0,
- uint32 error_control,
- char* bin_path_name, char* load_order_grp,
- uint32 tag_id,
- char* dependencies, char* service_start_name,
- char* password,
- char* disp_name);
-BOOL svc_io_q_change_svc_config(char *desc, SVC_Q_CHANGE_SVC_CONFIG *q_u, prs_struct *ps, int depth);
-BOOL make_svc_r_change_svc_config(SVC_R_CHANGE_SVC_CONFIG *r_c,
- uint32 unknown_0, uint32 status);
-BOOL svc_io_r_change_svc_config(char *desc, SVC_R_CHANGE_SVC_CONFIG *r_u, prs_struct *ps, int depth);
-
/*The following definitions come from rpc_parse/parse_wks.c */
-BOOL make_wks_q_query_info(WKS_Q_QUERY_INFO *q_u,
+void init_wks_q_query_info(WKS_Q_QUERY_INFO *q_u,
char *server, uint16 switch_value) ;
BOOL wks_io_q_query_info(char *desc, WKS_Q_QUERY_INFO *q_u, prs_struct *ps, int depth);
-BOOL make_wks_info_100(WKS_INFO_100 *inf,
+void init_wks_info_100(WKS_INFO_100 *inf,
uint32 platform_id, uint32 ver_major, uint32 ver_minor,
char *my_name, char *domain_name);
-BOOL make_wks_r_query_info(WKS_R_QUERY_INFO *r_u,
+void init_wks_r_query_info(WKS_R_QUERY_INFO *r_u,
uint32 switch_value, WKS_INFO_100 *wks100,
int status) ;
-BOOL wks_io_r_query_info(char *desc, WKS_R_QUERY_INFO *r_u, prs_struct *ps, int depth);
-
-/*The following definitions come from rpc_server/srv_brs.c */
-
-BOOL api_brs_rpc(rpcsrv_struct *p, prs_struct *data);
-
-/*The following definitions come from rpc_server/srv_lookup.c */
-
-int make_dom_gids(DOMAIN_GRP *mem, int num_members, DOM_GID **ppgids);
-int get_domain_user_groups(DOMAIN_GRP_MEMBER **grp_members, uint32 group_rid);
-uint32 lookup_builtin_sid(DOM_SID *sid, char *name, uint8 *type);
-uint32 lookup_added_sid(DOM_SID *sid, char *name, uint8 *type);
-uint32 lookup_sid(DOM_SID *sid, char *name, uint8 *type);
-uint32 lookup_wk_group_sid(DOM_SID *sid, char *group_name, uint8 *type);
-uint32 lookup_group_sid(DOM_SID *sid, char *group_name, uint8 *type);
-uint32 lookup_wk_alias_sid(DOM_SID *sid, char *alias_name, uint8 *type);
-uint32 lookup_alias_sid(DOM_SID *sid, char *alias_name, uint8 *type);
-uint32 lookup_wk_user_sid(DOM_SID *sid, char *user_name, uint8 *type);
-uint32 lookup_user_sid(DOM_SID *sid, char *user_name, uint8 *type);
-uint32 lookup_added_group_name(const char *grp_name, const char *domain,
- DOM_SID *sid, uint8 *type);
-uint32 lookup_added_alias_name(const char *als_name, const char *domain,
- DOM_SID *sid, uint8 *type);
-uint32 lookup_added_user_rids(char *nt_name,
- uint32 *usr_rid, uint32 *grp_rid);
-uint32 lookup_name(char *name, DOM_SID *sid, uint8 *type);
+BOOL wks_io_r_query_info(char *desc, WKS_R_QUERY_INFO *r_u, prs_struct *ps, int depth);
/*The following definitions come from rpc_server/srv_lsa.c */
-BOOL api_ntlsa_rpc(rpcsrv_struct *p, prs_struct *data);
+BOOL api_ntlsa_rpc(pipes_struct *p, prs_struct *data);
+
+/*The following definitions come from rpc_server/srv_lsa_hnd.c */
+
+void init_lsa_policy_hnd(void);
+BOOL open_lsa_policy_hnd(POLICY_HND *hnd);
+int find_lsa_policy_by_hnd(POLICY_HND *hnd);
+BOOL set_lsa_policy_samr_rid(POLICY_HND *hnd, uint32 rid);
+BOOL set_lsa_policy_samr_pol_status(POLICY_HND *hnd, uint32 pol_status);
+BOOL set_lsa_policy_samr_sid(POLICY_HND *hnd, DOM_SID *sid);
+BOOL get_lsa_policy_samr_sid(POLICY_HND *hnd, DOM_SID *sid);
+uint32 get_lsa_policy_samr_rid(POLICY_HND *hnd);
+BOOL set_lsa_policy_reg_name(POLICY_HND *hnd, fstring name);
+BOOL close_lsa_policy_hnd(POLICY_HND *hnd);
/*The following definitions come from rpc_server/srv_netlog.c */
-BOOL api_netlog_rpc(rpcsrv_struct *p, prs_struct *data);
+BOOL api_netlog_rpc(pipes_struct *p, prs_struct *data);
/*The following definitions come from rpc_server/srv_pipe.c */
-void rpcsrv_free_temp(rpcsrv_struct *l);
-BOOL create_rpc_reply(rpcsrv_struct *l, uint32 data_start);
-void close_msrpc_command_processor(void);
-void add_msrpc_command_processor(char* pipe_name,
- char* process_name,
- BOOL (*fn) (rpcsrv_struct *, prs_struct *));
-BOOL rpc_add_to_pdu(prs_struct *ps, const char *data, int len);
-BOOL rpc_send_and_rcv_pdu(pipes_struct *p);
-BOOL rpc_to_smb(pipes_struct *p, char *data, int len);
-BOOL api_rpcTNP(rpcsrv_struct *l, char *rpc_name, struct api_struct *api_rpc_cmds,
- prs_struct *data);
-BOOL is_complete_pdu(prs_struct *ps);
+BOOL create_next_pdu(pipes_struct *p);
+BOOL rpc_command(pipes_struct *p, char *input_data, int data_len);
+BOOL api_rpcTNP(pipes_struct *p, char *rpc_name, struct api_struct *api_rpc_cmds,
+ prs_struct *rpc_in);
/*The following definitions come from rpc_server/srv_pipe_hnd.c */
void set_pipe_handle_offset(int max_open_files);
void reset_chain_p(void);
void init_rpc_pipe_hnd(void);
+BOOL pipe_init_outgoing_data( pipes_struct *p);
pipes_struct *open_rpc_pipe_p(char *pipe_name,
connection_struct *conn, uint16 vuid);
-ssize_t write_pipe(pipes_struct *p, char *data, size_t n);
-int read_pipe(pipes_struct *p, char *data, uint32 pos, int n);
+ssize_t write_to_pipe(pipes_struct *p, char *data, size_t n);
+int read_from_pipe(pipes_struct *p, char *data, int n);
BOOL wait_rpc_pipe_hnd_state(pipes_struct *p, uint16 priority);
BOOL set_rpc_pipe_hnd_state(pipes_struct *p, uint16 device_state);
BOOL close_rpc_pipe_hnd(pipes_struct *p, connection_struct *conn);
@@ -3741,351 +2205,142 @@ pipes_struct *get_rpc_pipe(int pnum);
/*The following definitions come from rpc_server/srv_reg.c */
-BOOL api_reg_rpc(rpcsrv_struct *p, prs_struct *data);
+BOOL api_reg_rpc(pipes_struct *p, prs_struct *data);
/*The following definitions come from rpc_server/srv_samr.c */
-BOOL api_samr_rpc(rpcsrv_struct *p, prs_struct *data);
-
-/*The following definitions come from rpc_server/srv_spoolss.c */
-
-void init_printer_hnd(void);
-uint32 size_of_notify_info_data(uint16 type, uint16 field);
-BOOL type_of_notify_info_data(uint16 type, uint16 field);
-BOOL api_spoolss_rpc(rpcsrv_struct *p, prs_struct *data);
+BOOL api_samr_rpc(pipes_struct *p, prs_struct *data);
/*The following definitions come from rpc_server/srv_srvsvc.c */
-BOOL api_srvsvc_rpc(rpcsrv_struct *p, prs_struct *data);
+BOOL api_srvsvc_rpc(pipes_struct *p, prs_struct *data);
-/*The following definitions come from rpc_server/srv_svcctl.c */
+/*The following definitions come from rpc_server/srv_util.c */
-BOOL api_svcctl_rpc(rpcsrv_struct *p, prs_struct *data);
+int make_dom_gids(char *gids_str, DOM_GID **ppgids);
+void get_domain_user_groups(char *domain_groups, char *user);
+uint32 lookup_group_name(uint32 rid, char *group_name, uint32 *type);
+uint32 lookup_alias_name(uint32 rid, char *alias_name, uint32 *type);
+uint32 lookup_user_name(uint32 rid, char *user_name, uint32 *type);
+uint32 lookup_group_rid(char *group_name, uint32 *rid);
+uint32 lookup_alias_rid(char *alias_name, uint32 *rid);
+uint32 lookup_user_rid(char *user_name, uint32 *rid);
/*The following definitions come from rpc_server/srv_wkssvc.c */
-BOOL api_wkssvc_rpc(rpcsrv_struct *p, prs_struct *data);
-
-/*The following definitions come from rpcclient/cmd_atsvc.c */
-
-void cmd_at(struct client_info *info, int argc, char *argv[]);
-
-/*The following definitions come from rpcclient/cmd_brs.c */
-
-void cmd_brs_query_info(struct client_info *info, int argc, char *argv[]);
-
-/*The following definitions come from rpcclient/cmd_eventlog.c */
-
-void cmd_eventlog(struct client_info *info, int argc, char *argv[]);
+BOOL api_wkssvc_rpc(pipes_struct *p, prs_struct *data);
/*The following definitions come from rpcclient/cmd_lsarpc.c */
-void cmd_lsa_enum_trust_dom(struct client_info *info, int argc, char *argv[]);
-void cmd_lsa_query_info(struct client_info *info, int argc, char *argv[]);
-void cmd_lsa_lookup_names(struct client_info *info, int argc, char *argv[]);
-void cmd_lsa_lookup_sids(struct client_info *info, int argc, char *argv[]);
-void cmd_lsa_query_secret(struct client_info *info, int argc, char *argv[]);
+void cmd_lsa_query_info(struct client_info *info);
+void cmd_lsa_lookup_sids(struct client_info *info);
/*The following definitions come from rpcclient/cmd_netlogon.c */
-void cmd_netlogon_login_test(struct client_info *info, int argc, char *argv[]);
-void cmd_netlogon_domain_test(struct client_info *info, int argc, char *argv[]);
-void cmd_sam_sync(struct client_info *info, int argc, char *argv[]);
+void cmd_netlogon_login_test(struct client_info *info);
/*The following definitions come from rpcclient/cmd_reg.c */
-void split_server_keyname(char *srv_name, char *key, const char* arg);
-BOOL msrpc_reg_enum_key(const char* srv_name, const char* full_keyname,
- REG_FN(reg_fn),
- REG_KEY_FN(reg_key_fn),
- REG_VAL_FN(reg_val_fn));
-void cmd_reg_enum(struct client_info *info, int argc, char *argv[]);
-void cmd_reg_query_info(struct client_info *info, int argc, char *argv[]);
-void cmd_reg_query_key(struct client_info *info, int argc, char *argv[]);
-void cmd_reg_create_val(struct client_info *info, int argc, char *argv[]);
-void cmd_reg_delete_val(struct client_info *info, int argc, char *argv[]);
-void cmd_reg_delete_key(struct client_info *info, int argc, char *argv[]);
-void cmd_reg_create_key(struct client_info *info, int argc, char *argv[]);
-void cmd_reg_test_key_sec(struct client_info *info, int argc, char *argv[]);
-void cmd_reg_get_key_sec(struct client_info *info, int argc, char *argv[]);
-void cmd_reg_shutdown(struct client_info *info, int argc, char *argv[]);
+void cmd_reg_enum(struct client_info *info);
+void cmd_reg_query_key(struct client_info *info);
+void cmd_reg_create_val(struct client_info *info);
+void cmd_reg_delete_val(struct client_info *info);
+void cmd_reg_delete_key(struct client_info *info);
+void cmd_reg_create_key(struct client_info *info);
+void cmd_reg_test_key_sec(struct client_info *info);
+void cmd_reg_get_key_sec(struct client_info *info);
/*The following definitions come from rpcclient/cmd_samr.c */
-void cmd_sam_ntchange_pwd(struct client_info *info, int argc, char *argv[]);
-void cmd_sam_test(struct client_info *info, int argc, char *argv[]);
-void cmd_sam_lookup_domain(struct client_info *info, int argc, char *argv[]);
-void cmd_sam_del_aliasmem(struct client_info *info, int argc, char *argv[]);
-void cmd_sam_delete_dom_alias(struct client_info *info, int argc, char *argv[]);
-void cmd_sam_add_aliasmem(struct client_info *info, int argc, char *argv[]);
-void cmd_sam_create_dom_trusting(struct client_info *info, int argc, char *argv[]);
-void cmd_sam_create_dom_user(struct client_info *info, int argc, char *argv[]);
-void cmd_sam_create_dom_alias(struct client_info *info, int argc, char *argv[]);
-void cmd_sam_del_groupmem(struct client_info *info, int argc, char *argv[]);
-void cmd_sam_delete_dom_group(struct client_info *info, int argc, char *argv[]);
-void cmd_sam_add_groupmem(struct client_info *info, int argc, char *argv[]);
-void cmd_sam_create_dom_group(struct client_info *info, int argc, char *argv[]);
-void cmd_sam_enum_users(struct client_info *info, int argc, char *argv[]);
-void cmd_sam_query_groupmem(struct client_info *info, int argc, char *argv[]);
-void cmd_sam_query_group(struct client_info *info, int argc, char *argv[]);
-void cmd_sam_query_user(struct client_info *info, int argc, char *argv[]);
-void cmd_sam_set_userinfo2(struct client_info *info, int argc, char *argv[]);
-void cmd_sam_set_userinfo(struct client_info *info, int argc, char *argv[]);
-void cmd_sam_query_dispinfo(struct client_info *info, int argc, char *argv[]);
-void cmd_sam_query_dominfo(struct client_info *info, int argc, char *argv[]);
-void cmd_sam_query_aliasmem(struct client_info *info, int argc, char *argv[]);
-void cmd_sam_query_alias(struct client_info *info, int argc, char *argv[]);
-void cmd_sam_enum_aliases(struct client_info *info, int argc, char *argv[]);
-void cmd_sam_enum_groups(struct client_info *info, int argc, char *argv[]);
-void cmd_sam_enum_domains(struct client_info *info, int argc, char *argv[]);
-
-/*The following definitions come from rpcclient/cmd_spoolss.c */
-
-BOOL msrpc_spoolss_enum_printers( const char* srv_name,
- uint32 level,
- uint32 *num,
- void ***ctr,
- PRINT_INFO_FN(fn));
-void cmd_spoolss_enum_printers(struct client_info *info, int argc, char *argv[]);
-void cmd_spoolss_open_printer_ex(struct client_info *info, int argc, char *argv[]);
-BOOL msrpc_spoolss_enum_jobs( const char* printer_name,
- const char* station, const char* user_name,
- uint32 level,
- uint32 *num,
- void ***ctr,
- JOB_INFO_FN(fn));
-void cmd_spoolss_enum_jobs(struct client_info *info, int argc, char *argv[]);
+void cmd_sam_ntchange_pwd(struct client_info *info);
+void cmd_sam_test(struct client_info *info);
+void cmd_sam_enum_users(struct client_info *info);
+void cmd_sam_query_user(struct client_info *info);
+void cmd_sam_query_groups(struct client_info *info);
+void cmd_sam_enum_aliases(struct client_info *info);
/*The following definitions come from rpcclient/cmd_srvsvc.c */
-BOOL net_srv_get_info(struct client_info *info,
- uint32 info_level,
- SRV_INFO_CTR *ctr);
-void cmd_srv_query_info(struct client_info *info, int argc, char *argv[]);
-BOOL msrpc_srv_enum_tprt( const char* dest_srv,
- uint32 info_level,
- SRV_TPRT_INFO_CTR *ctr,
- TPRT_INFO_FN(tprt_fn));
-void cmd_srv_enum_tprt(struct client_info *info, int argc, char *argv[]);
-void cmd_srv_enum_conn(struct client_info *info, int argc, char *argv[]);
-void cmd_srv_enum_shares(struct client_info *info, int argc, char *argv[]);
-void cmd_srv_enum_sess(struct client_info *info, int argc, char *argv[]);
-void cmd_srv_enum_files(struct client_info *info, int argc, char *argv[]);
-void cmd_time(struct client_info *info, int argc, char *argv[]);
-
-/*The following definitions come from rpcclient/cmd_svcctl.c */
-
-void svc_display_query_svc_cfg(const QUERY_SERVICE_CONFIG *cfg);
-BOOL svc_query_service( POLICY_HND *pol_scm,
- const char *svc_name,
- SVC_QUERY_FN(svc_query_fn));
-void cmd_svc_info(struct client_info *info, int argc, char *argv[]);
-BOOL msrpc_svc_enum(const char* srv_name,
- ENUM_SRVC_STATUS **svcs,
- uint32 *num_svcs,
- SVC_INFO_FN(info_fn),
- SVC_QUERY_FN(query_fn));
-void cmd_svc_enum(struct client_info *info, int argc, char *argv[]);
-void cmd_svc_stop(struct client_info *info, int argc, char *argv[]);
-void cmd_svc_start(struct client_info *info, int argc, char *argv[]);
-void cmd_svc_set(struct client_info *info, int argc, char *argv[]);
+void cmd_srv_query_info(struct client_info *info);
+void cmd_srv_enum_conn(struct client_info *info);
+void cmd_srv_enum_shares(struct client_info *info);
+void cmd_srv_enum_sess(struct client_info *info);
+void cmd_srv_enum_files(struct client_info *info);
/*The following definitions come from rpcclient/cmd_wkssvc.c */
-void cmd_wks_query_info(struct client_info *info, int argc, char *argv[]);
+void cmd_wks_query_info(struct client_info *info);
-/*The following definitions come from rpcclient/display_at.c */
+/*The following definitions come from rpcclient/display.c */
-void display_at_enum_info(FILE *out_hnd, enum action_type action,
- uint32 num_jobs, const AT_ENUM_INFO *const jobs,
- char *const *const commands);
-void display_at_job_info(FILE *out_hnd, enum action_type action,
- AT_JOB_INFO *const job, fstring command);
-
-/*The following definitions come from rpcclient/display_event.c */
-
-void display_eventlog_eventrecord(FILE *out_hnd, enum action_type action, EVENTLOGRECORD *const ev);
-
-/*The following definitions come from rpcclient/display_reg.c */
-
-char *get_reg_val_type_str(uint32 type);
-void display_reg_value_info(FILE *out_hnd, enum action_type action,
- const char *val_name,
- uint32 val_type, const BUFFER2 *value);
-void display_reg_key_info(FILE *out_hnd, enum action_type action,
- const char *key_name, time_t key_mod_time);
-
-/*The following definitions come from rpcclient/display_sam.c */
-
-void display_alias_members(FILE *out_hnd, enum action_type action,
- uint32 num_mem, char *const *const sid_mem,
- uint8 *const type);
-void display_alias_rid_info(FILE *out_hnd, enum action_type action,
- DOM_SID *const sid,
- uint32 num_rids, uint32 *const rid);
-void display_group_members(FILE *out_hnd, enum action_type action,
- uint32 num_mem, char *const *const name, uint32 *const type);
-void display_group_info1(FILE *out_hnd, enum action_type action, GROUP_INFO1 *const info1);
-void display_group_info4(FILE *out_hnd, enum action_type action, GROUP_INFO4 *const info4);
-void display_group_info_ctr(FILE *out_hnd, enum action_type action,
- GROUP_INFO_CTR *const ctr);
-void display_group_rid_info(FILE *out_hnd, enum action_type action,
- uint32 num_gids, DOM_GID *const gid);
-void display_alias_name_info(FILE *out_hnd, enum action_type action,
- uint32 num_aliases, fstring *const alias_name, const uint32 *const num_als_usrs);
-void display_alias_info3(FILE *out_hnd, enum action_type action, ALIAS_INFO3 *const info3);
-void display_alias_info_ctr(FILE *out_hnd, enum action_type action,
- ALIAS_INFO_CTR *const ctr);
-void display_sam_user_info_21(FILE *out_hnd, enum action_type action, SAM_USER_INFO_21 *const usr);
-void display_sam_unk_info_2(FILE *out_hnd, enum action_type action,
- SAM_UNK_INFO_2 *const info2);
-void display_sam_unk_ctr(FILE *out_hnd, enum action_type action,
- uint32 switch_value, SAM_UNK_CTR *const ctr);
-void display_sam_info_1(FILE *out_hnd, enum action_type action,
- SAM_ENTRY1 *const e1, SAM_STR1 *const s1);
-void display_sam_info_1_ctr(FILE *out_hnd, enum action_type action,
- uint32 count, SAM_DISPINFO_1 *const ctr);
-void display_sam_disp_info_ctr(FILE *out_hnd, enum action_type action,
- uint16 level, uint32 count,
- SAM_DISPINFO_CTR *const ctr);
-
-/*The following definitions come from rpcclient/display_sec.c */
-
-char *get_sec_mask_str(uint32 type);
-void display_sec_access(FILE *out_hnd, enum action_type action, SEC_ACCESS *const info);
-void display_sec_ace(FILE *out_hnd, enum action_type action, SEC_ACE *const ace);
-void display_sec_acl(FILE *out_hnd, enum action_type action, SEC_ACL *const sec_acl);
-void display_sec_desc(FILE *out_hnd, enum action_type action, SEC_DESC *const sec);
-
-/*The following definitions come from rpcclient/display_spool.c */
-
-void display_print_info_0(FILE *out_hnd, enum action_type action,
- PRINTER_INFO_0 *const i0);
-void display_print_info_1(FILE *out_hnd, enum action_type action,
- PRINTER_INFO_1 *const i1);
-void display_printer_info_0_ctr(FILE *out_hnd, enum action_type action,
- uint32 count, PRINTER_INFO_0 *const *const ctr);
-void display_printer_info_1_ctr(FILE *out_hnd, enum action_type action,
- uint32 count, PRINTER_INFO_1 *const *const ctr);
-void display_printer_info_ctr(FILE *out_hnd, enum action_type action,
- uint32 level, uint32 count,
- void *const *const ctr);
-void display_job_info_2(FILE *out_hnd, enum action_type action,
- JOB_INFO_2 *const i2);
-void display_job_info_1(FILE *out_hnd, enum action_type action,
- JOB_INFO_1 *const i1);
-void display_job_info_2_ctr(FILE *out_hnd, enum action_type action,
- uint32 count, JOB_INFO_2 *const *const ctr);
-void display_job_info_1_ctr(FILE *out_hnd, enum action_type action,
- uint32 count, JOB_INFO_1 *const *const ctr);
-void display_job_info_ctr(FILE *out_hnd, enum action_type action,
- uint32 level, uint32 count,
- void *const *const ctr);
-
-/*The following definitions come from rpcclient/display_srv.c */
-
-char *get_sid_name_use_str(uint8 sid_name_use);
char *get_file_mode_str(uint32 share_mode);
char *get_file_oplock_str(uint32 op_type);
char *get_share_type_str(uint32 type);
char *get_server_type_str(uint32 type);
-void display_srv_info_101(FILE *out_hnd, enum action_type action,
- SRV_INFO_101 *const sv101);
-void display_srv_info_102(FILE *out_hnd, enum action_type action, SRV_INFO_102 *const sv102);
-void display_srv_info_ctr(FILE *out_hnd, enum action_type action, SRV_INFO_CTR *const ctr);
-void display_conn_info_0(FILE *out_hnd, enum action_type action,
- CONN_INFO_0 *const info0);
-void display_conn_info_1(FILE *out_hnd, enum action_type action,
- CONN_INFO_1 *const info1, CONN_INFO_1_STR *const str1);
-void display_srv_conn_info_0_ctr(FILE *out_hnd, enum action_type action,
- SRV_CONN_INFO_0 *const ctr);
-void display_srv_conn_info_1_ctr(FILE *out_hnd, enum action_type action,
- SRV_CONN_INFO_1 *const ctr);
-void display_srv_conn_info_ctr(FILE *out_hnd, enum action_type action,
- SRV_CONN_INFO_CTR *const ctr);
-void display_tprt_info_0(FILE *out_hnd, enum action_type action,
- TPRT_INFO_0 *const info0, TPRT_INFO_0_STR *const str0);
-void display_srv_tprt_info_0_ctr(FILE *out_hnd, enum action_type action,
- const SRV_TPRT_INFO_0 *const ctr);
-void display_srv_tprt_info_ctr(FILE *out_hnd, enum action_type action,
- const SRV_TPRT_INFO_CTR *const ctr);
-void display_share_info_1(FILE *out_hnd, enum action_type action,
- SH_INFO_1 *const info1, SH_INFO_1_STR *const str1);
-void display_share_info_2(FILE *out_hnd, enum action_type action,
- SH_INFO_2 *const info2, SH_INFO_2_STR *const str2);
-void display_srv_share_info_1_ctr(FILE *out_hnd, enum action_type action,
- SRV_SHARE_INFO_1 *const ctr);
-void display_srv_share_info_2_ctr(FILE *out_hnd, enum action_type action,
- SRV_SHARE_INFO_2 *const ctr);
-void display_srv_share_info_ctr(FILE *out_hnd, enum action_type action,
- SRV_SHARE_INFO_CTR *const ctr);
-void display_file_info_3(FILE *out_hnd, enum action_type action,
- FILE_INFO_3 *const info3, FILE_INFO_3_STR *const str3);
-void display_srv_file_info_3_ctr(FILE *out_hnd, enum action_type action,
- SRV_FILE_INFO_3 *const ctr);
-void display_srv_file_info_ctr(FILE *out_hnd, enum action_type action,
- SRV_FILE_INFO_CTR *const ctr);
-void display_sess_info_0(FILE *out_hnd, enum action_type action,
- SESS_INFO_0 *const info0, SESS_INFO_0_STR *const str0);
-void display_sess_info_1(FILE *out_hnd, enum action_type action,
- SESS_INFO_1 *const info1, SESS_INFO_1_STR *const str1);
-void display_srv_sess_info_0_ctr(FILE *out_hnd, enum action_type action,
- SRV_SESS_INFO_0 *const ctr);
-void display_srv_sess_info_1_ctr(FILE *out_hnd, enum action_type action,
- SRV_SESS_INFO_1 *const ctr);
-void display_srv_sess_info_ctr(FILE *out_hnd, enum action_type action,
- SRV_SESS_INFO_CTR *const ctr);
-void display_server(FILE *out_hnd, enum action_type action,
- char *const sname, uint32 type, char *const comment);
-void display_share(FILE *out_hnd, enum action_type action,
- char *const sname, uint32 type, char *const comment);
-void display_share2(FILE *out_hnd, enum action_type action,
- char *const sname, uint32 type, char *const comment,
- uint32 perms, uint32 max_uses, uint32 num_uses,
- char *const path, char *const password);
-void display_name(FILE *out_hnd, enum action_type action,
- char *const sname);
-
-/*The following definitions come from rpcclient/display_svc.c */
-
-char *get_svc_start_type_str(uint32 type);
-void display_query_svc_cfg(FILE *out_hnd, enum action_type action,
- const QUERY_SERVICE_CONFIG *const cfg);
-void display_svc_info(FILE *out_hnd, enum action_type action,
- const ENUM_SRVC_STATUS *const svc);
-
-/*The following definitions come from rpcclient/display_sync.c */
-
-void display_sam_sync_ctr(FILE *out_hnd, enum action_type action,
- SAM_DELTA_HDR *const delta,
- SAM_DELTA_CTR *const ctr);
-void display_sam_sync(FILE *out_hnd, enum action_type action,
- SAM_DELTA_HDR *const deltas,
- SAM_DELTA_CTR *const ctr,
- uint32 num);
+void display_srv_info_101(FILE *out_hnd, enum action_type action,
+ SRV_INFO_101 *sv101);
+void display_srv_info_102(FILE *out_hnd, enum action_type action,SRV_INFO_102 *sv102);
+void display_srv_info_ctr(FILE *out_hnd, enum action_type action,SRV_INFO_CTR *ctr);
+void display_conn_info_0(FILE *out_hnd, enum action_type action,
+ CONN_INFO_0 *info0);
+void display_conn_info_1(FILE *out_hnd, enum action_type action,
+ CONN_INFO_1 *info1, CONN_INFO_1_STR *str1);
+void display_srv_conn_info_0_ctr(FILE *out_hnd, enum action_type action,
+ SRV_CONN_INFO_0 *ctr);
+void display_srv_conn_info_1_ctr(FILE *out_hnd, enum action_type action,
+ SRV_CONN_INFO_1 *ctr);
+void display_srv_conn_info_ctr(FILE *out_hnd, enum action_type action,
+ SRV_CONN_INFO_CTR *ctr);
+void display_share_info_1(FILE *out_hnd, enum action_type action,
+ SRV_SHARE_INFO_1 *info1);
+void display_share_info_2(FILE *out_hnd, enum action_type action,
+ SRV_SHARE_INFO_2 *info2);
+void display_srv_share_info_ctr(FILE *out_hnd, enum action_type action,
+ SRV_SHARE_INFO_CTR *ctr);
+void display_file_info_3(FILE *out_hnd, enum action_type action,
+ FILE_INFO_3 *info3, FILE_INFO_3_STR *str3);
+void display_srv_file_info_3_ctr(FILE *out_hnd, enum action_type action,
+ SRV_FILE_INFO_3 *ctr);
+void display_srv_file_info_ctr(FILE *out_hnd, enum action_type action,
+ SRV_FILE_INFO_CTR *ctr);
+void display_server(FILE *out_hnd, enum action_type action,
+ char *sname, uint32 type, char *comment);
+void display_share(FILE *out_hnd, enum action_type action,
+ char *sname, uint32 type, char *comment);
+void display_share2(FILE *out_hnd, enum action_type action,
+ char *sname, uint32 type, char *comment,
+ uint32 perms, uint32 max_uses, uint32 num_uses,
+ char *path, char *passwd);
+void display_name(FILE *out_hnd, enum action_type action,
+ char *sname);
+void display_group_rid_info(FILE *out_hnd, enum action_type action,
+ uint32 num_gids, DOM_GID *gid);
+void display_alias_name_info(FILE *out_hnd, enum action_type action,
+ uint32 num_aliases, fstring *alias_name, uint32 *num_als_usrs);
+void display_sam_user_info_21(FILE *out_hnd, enum action_type action, SAM_USER_INFO_21 *usr);
+char *get_sec_mask_str(uint32 type);
+void display_sec_access(FILE *out_hnd, enum action_type action, SEC_ACCESS *info);
+void display_sec_ace(FILE *out_hnd, enum action_type action, SEC_ACE *ace);
+void display_sec_acl(FILE *out_hnd, enum action_type action, SEC_ACL *sec_acl);
+void display_sec_desc(FILE *out_hnd, enum action_type action, SEC_DESC *sec);
+char *get_reg_val_type_str(uint32 type);
+void display_reg_value_info(FILE *out_hnd, enum action_type action,
+ char *val_name, uint32 val_type, BUFFER2 *value);
+void display_reg_key_info(FILE *out_hnd, enum action_type action,
+ char *key_name, time_t key_mod_time);
/*The following definitions come from rpcclient/rpcclient.c */
-void readline_init(void);
-
-/*The following definitions come from samrd/samrd.c */
-
-void msrpc_service_init(void);
-BOOL reload_services(BOOL test);
+void rpcclient_init(void);
/*The following definitions come from smbd/blocking.c */
BOOL push_blocking_lock_request( char *inbuf, int length, int lock_timeout, int lock_num);
void remove_pending_lock_requests_by_fid(files_struct *fsp);
void remove_pending_lock_requests_by_mid(int mid);
+BOOL blocking_locks_pending(void);
void process_blocking_lock_queue(time_t t);
-/*The following definitions come from smbd/challenge.c */
-
-void generate_next_challenge(char *challenge);
-BOOL set_challenge(unsigned char *challenge);
-BOOL last_challenge(unsigned char *challenge);
-
/*The following definitions come from smbd/chgpasswd.c */
BOOL chgpasswd(char *name,char *oldpass,char *newpass, BOOL as_root);
@@ -4105,8 +2360,7 @@ BOOL change_oem_password(struct smb_passwd *smbpw, char *new_passwd, BOOL overri
/*The following definitions come from smbd/close.c */
-void close_file(files_struct *fsp, BOOL normal_close);
-void close_directory(files_struct *fsp);
+int close_file(files_struct *fsp, BOOL normal_close);
/*The following definitions come from smbd/conn.c */
@@ -4126,13 +2380,8 @@ BOOL claim_connection(connection_struct *conn,char *name,int max_connections,BOO
/*The following definitions come from smbd/dfree.c */
-SMB_BIG_UINT sys_disk_free(char *path,SMB_BIG_UINT *bsize,SMB_BIG_UINT *dfree,SMB_BIG_UINT *dsize);
-
-/*The following definitions come from smbd/dfs.c */
-
-BOOL init_dfs_table(void);
-int under_dfs(connection_struct *conn, const char *path,
- char *local_path, size_t local_plen);
+SMB_BIG_UINT sys_disk_free(char *path, BOOL small_query,
+ SMB_BIG_UINT *bsize,SMB_BIG_UINT *dfree,SMB_BIG_UINT *dsize);
/*The following definitions come from smbd/dir.c */
@@ -4142,11 +2391,11 @@ char *dptr_wcard(int key);
BOOL dptr_set_wcard(int key, char *wcard);
BOOL dptr_set_attr(int key, uint16 attr);
uint16 dptr_attr(int key);
-void dptr_close(int key);
+void dptr_close(int *key);
void dptr_closecnum(connection_struct *conn);
void dptr_idlecnum(connection_struct *conn);
-void dptr_closepath(char *path,int pid);
-int dptr_create(connection_struct *conn,char *path, BOOL expect_close,int pid);
+void dptr_closepath(char *path,uint16 spid);
+int dptr_create(connection_struct *conn,char *path, BOOL old_handle, BOOL expect_close,uint16 spid);
BOOL dptr_fill(char *buf1,unsigned int key);
BOOL dptr_zero(char *buf);
void *dptr_fetch(char *buf,int *num);
@@ -4180,19 +2429,19 @@ int error_packet(char *inbuf,char *outbuf,int error_class,uint32 error_code,int
/*The following definitions come from smbd/fileio.c */
SMB_OFF_T seek_file(files_struct *fsp,SMB_OFF_T pos);
+BOOL read_from_write_cache(files_struct *fsp,char *data,SMB_OFF_T pos,size_t n);
ssize_t read_file(files_struct *fsp,char *data,SMB_OFF_T pos,size_t n);
-ssize_t write_file(files_struct *fsp,char *data,size_t n);
-void sys_sync_file(int fd);
+ssize_t write_file(files_struct *fsp, char *data, SMB_OFF_T pos, size_t n);
+void delete_write_cache(files_struct *fsp);
+void set_filelen_write_cache(files_struct *fsp, SMB_OFF_T file_size);
+ssize_t flush_write_cache(files_struct *fsp, enum flush_reason_enum reason);
+void sync_file(connection_struct *conn, files_struct *fsp);
/*The following definitions come from smbd/filename.c */
void print_stat_cache_statistics(void);
-BOOL unix_dfs_convert(char *name,connection_struct *conn,
- char *saved_last_component,
- BOOL *bad_path, SMB_STRUCT_STAT *pst);
-BOOL unix_convert(char *name,connection_struct *conn,
- char *saved_last_component,
- BOOL *bad_path, SMB_STRUCT_STAT *pst);
+BOOL unix_convert(char *name,connection_struct *conn,char *saved_last_component,
+ BOOL *bad_path, SMB_STRUCT_STAT *pst);
BOOL check_name(char *name,connection_struct *conn);
/*The following definitions come from smbd/files.c */
@@ -4226,7 +2475,7 @@ BOOL is_8_3( char *fname, BOOL check_case );
void reset_mangled_cache( void );
BOOL check_mangled_cache( char *s );
void mangle_name_83( char *s);
-BOOL name_map_mangle(char *OutName, BOOL need83, int snum);
+BOOL name_map_mangle(char *OutName, BOOL need83, BOOL cache83, int snum);
/*The following definitions come from smbd/message.c */
@@ -4252,6 +2501,7 @@ BOOL disk_quotas(char *path,SMB_BIG_UINT *bsize,SMB_BIG_UINT *dfree,SMB_BIG_UINT
/*The following definitions come from smbd/nttrans.c */
void fail_next_srvsvc_open(void);
+BOOL should_fail_next_srvsvc_open(const char *pipename);
int reply_ntcreate_and_X(connection_struct *conn,
char *inbuf,char *outbuf,int length,int bufsize);
int reply_ntcancel(connection_struct *conn,
@@ -4259,30 +2509,36 @@ int reply_ntcancel(connection_struct *conn,
int reply_nttranss(connection_struct *conn,
char *inbuf,char *outbuf,int length,int bufsize);
void remove_pending_change_notify_requests_by_fid(files_struct *fsp);
-void process_pending_change_notify_queue(time_t t);
+void remove_pending_change_notify_requests_by_filename(files_struct *fsp);
+BOOL process_pending_change_notify_queue(time_t t);
+BOOL change_notifies_pending(void);
int reply_nttrans(connection_struct *conn,
char *inbuf,char *outbuf,int length,int bufsize);
/*The following definitions come from smbd/open.c */
void fd_add_to_uid_cache(file_fd_struct *fd_ptr, uid_t u);
-uint16 fd_attempt_close(files_struct *fsp);
-void open_file_shared(files_struct *fsp, connection_struct *conn,
- char *fname, int share_mode, int ofun,
- mode_t mode, int oplock_request, int *Access,
- int *action);
+uint16 fd_attempt_close(file_fd_struct *fd_ptr, int *err_ret);
+void open_file_shared(files_struct *fsp,connection_struct *conn,char *fname,int share_mode,int ofun,
+ mode_t mode,int oplock_request, int *Access,int *action);
+int open_file_stat(files_struct *fsp,connection_struct *conn,
+ char *fname, int smb_ofun, SMB_STRUCT_STAT *pst, int *action);
int open_directory(files_struct *fsp,connection_struct *conn,
char *fname, int smb_ofun, mode_t unixmode, int *action);
BOOL check_file_sharing(connection_struct *conn,char *fname, BOOL rename_op);
/*The following definitions come from smbd/oplock.c */
+int32 get_number_of_exclusive_open_oplocks(void);
BOOL setup_kernel_oplock_pipe(void);
BOOL open_oplock_ipc(void);
BOOL receive_local_message(fd_set *fds, char *buffer, int buffer_len, int timeout);
-BOOL set_file_oplock(files_struct *fsp);
+BOOL set_file_oplock(files_struct *fsp, int oplock_type);
+void release_file_oplock(files_struct *fsp);
+BOOL remove_oplock(files_struct *fsp);
int setup_oplock_select_set( fd_set *fds);
BOOL process_local_message(char *buffer, int buf_size);
+BOOL oplock_break_level2(files_struct *fsp, BOOL local_request, int token);
BOOL request_oplock_break(share_mode_entry *share_entry,
SMB_DEV_T dev, SMB_INO_T inode);
BOOL attempt_close_oplocked_file(files_struct *fsp);
@@ -4290,9 +2546,22 @@ void check_kernel_oplocks(void);
/*The following definitions come from smbd/password.c */
+void generate_next_challenge(char *challenge);
+BOOL set_challenge(unsigned char *challenge);
+user_struct *get_valid_user_struct(uint16 vuid);
+void invalidate_vuid(uint16 vuid);
+char *validated_username(uint16 vuid);
+int setup_groups(char *user, uid_t uid, gid_t gid, int *p_ngroups, gid_t **p_groups);
+uint16 register_vuid(uid_t uid,gid_t gid, char *unix_name, char *requested_name, BOOL guest);
void add_session_user(char *user);
-BOOL password_ok(char *user, char *password, int pwlen, struct passwd *pwd,
- uchar user_sess_key[16]);
+BOOL smb_password_check(char *password, unsigned char *part_passwd, unsigned char *c8);
+BOOL smb_password_ok(struct smb_passwd *smb_pass, uchar chal[8],
+ uchar lm_pass[24], uchar nt_pass[24]);
+BOOL pass_check_smb(char *user, char *domain,
+ uchar *chal, uchar *lm_pwd, uchar *nt_pwd,
+ struct passwd *pwd);
+BOOL password_ok(char *user, char *password, int pwlen, struct passwd *pwd);
+BOOL user_ok(char *user,int snum);
BOOL authorise_login(int snum,char *user,char *password, int pwlen,
BOOL *guest,BOOL *force,uint16 vuid);
BOOL check_hosts_equiv(char *user);
@@ -4301,30 +2570,36 @@ struct cli_state *server_cryptkey(void);
BOOL server_validate(char *user, char *domain,
char *pass, int passlen,
char *ntpass, int ntpasslen);
+BOOL domain_client_validate( char *user, char *domain,
+ char *smb_apasswd, int smb_apasslen,
+ char *smb_ntpasswd, int smb_ntpasslen,
+ BOOL *user_exists);
/*The following definitions come from smbd/pipes.c */
int reply_open_pipe_and_X(connection_struct *conn,
char *inbuf,char *outbuf,int length,int bufsize);
-int reply_pipe_write(char *inbuf,char *outbuf,int length,int bufsize);
+int reply_pipe_write(char *inbuf,char *outbuf,int length,int dum_bufsize);
int reply_pipe_write_and_X(char *inbuf,char *outbuf,int length,int bufsize);
int reply_pipe_read_and_X(char *inbuf,char *outbuf,int length,int bufsize);
int reply_pipe_close(connection_struct *conn, char *inbuf,char *outbuf);
/*The following definitions come from smbd/predict.c */
-ssize_t read_predict(files_struct *fsp, int fd,SMB_OFF_T offset,char *buf,char **ptr,size_t num);
-void do_read_prediction(connection_struct *conn);
+ssize_t read_predict(int fd,SMB_OFF_T offset,char *buf,char **ptr,size_t num);
+void do_read_prediction(void);
void invalidate_read_prediction(int fd);
/*The following definitions come from smbd/process.c */
BOOL push_oplock_pending_smb_message(char *buf, int msg_len);
BOOL receive_next_smb(char *inbuf, int bufsize, int timeout);
+void respond_to_all_remaining_local_messages(void);
void process_smb(char *inbuf, char *outbuf);
char *smb_fn_name(int type);
void construct_reply_common(char *inbuf,char *outbuf);
int chain_reply(char *inbuf,char *outbuf,int size,int bufsize);
+void check_reload(int t);
void smbd_process(void);
/*The following definitions come from smbd/reply.c */
@@ -4351,23 +2626,23 @@ int reply_ctemp(connection_struct *conn, char *inbuf,char *outbuf, int dum_size,
int reply_unlink(connection_struct *conn, char *inbuf,char *outbuf, int dum_size, int dum_buffsize);
int reply_readbraw(connection_struct *conn, char *inbuf, char *outbuf, int dum_size, int dum_buffsize);
int reply_lockread(connection_struct *conn, char *inbuf,char *outbuf, int length, int dum_buffsiz);
-int reply_read(connection_struct *conn, char *inbuf,char *outbuf, int dum_size, int dum_buffsize);
+int reply_read(connection_struct *conn, char *inbuf,char *outbuf, int size, int dum_buffsize);
int reply_read_and_X(connection_struct *conn, char *inbuf,char *outbuf,int length,int bufsize);
-int reply_writebraw(connection_struct *conn, char *inbuf,char *outbuf, int dum_size, int dum_buffsize);
-int reply_writeunlock(connection_struct *conn, char *inbuf,char *outbuf, int dum_size, int dum_buffsize);
-int reply_write(connection_struct *conn, char *inbuf,char *outbuf,int dum_size,int dum_buffsize);
+int reply_writebraw(connection_struct *conn, char *inbuf,char *outbuf, int size, int dum_buffsize);
+int reply_writeunlock(connection_struct *conn, char *inbuf,char *outbuf, int size, int dum_buffsize);
+int reply_write(connection_struct *conn, char *inbuf,char *outbuf,int size,int dum_buffsize);
int reply_write_and_X(connection_struct *conn, char *inbuf,char *outbuf,int length,int bufsize);
-int reply_lseek(connection_struct *conn, char *inbuf,char *outbuf, int dum_size, int dum_buffsize);
-int reply_flush(connection_struct *conn, char *inbuf,char *outbuf, int dum_size, int dum_buffsize);
+int reply_lseek(connection_struct *conn, char *inbuf,char *outbuf, int size, int dum_buffsize);
+int reply_flush(connection_struct *conn, char *inbuf,char *outbuf, int size, int dum_buffsize);
int reply_exit(connection_struct *conn,
char *inbuf,char *outbuf, int dum_size, int dum_buffsize);
-int reply_close(connection_struct *conn,
- char *inbuf,char *outbuf, int dum_size, int dum_buffsize);
+int reply_close(connection_struct *conn, char *inbuf,char *outbuf, int size,
+ int dum_buffsize);
int reply_writeclose(connection_struct *conn,
- char *inbuf,char *outbuf, int dum_size, int dum_buffsize);
+ char *inbuf,char *outbuf, int size, int dum_buffsize);
int reply_lock(connection_struct *conn,
char *inbuf,char *outbuf, int length, int dum_buffsize);
-int reply_unlock(connection_struct *conn, char *inbuf,char *outbuf, int dum_size, int dum_buffsize);
+int reply_unlock(connection_struct *conn, char *inbuf,char *outbuf, int size, int dum_buffsize);
int reply_tdis(connection_struct *conn,
char *inbuf,char *outbuf, int dum_size, int dum_buffsize);
int reply_echo(connection_struct *conn,
@@ -4380,6 +2655,7 @@ int reply_printqueue(connection_struct *conn,
char *inbuf,char *outbuf, int dum_size, int dum_buffsize);
int reply_printwrite(connection_struct *conn, char *inbuf,char *outbuf, int dum_size, int dum_buffsize);
int reply_mkdir(connection_struct *conn, char *inbuf,char *outbuf, int dum_size, int dum_buffsize);
+BOOL rmdir_internals(connection_struct *conn, char *directory);
int reply_rmdir(connection_struct *conn, char *inbuf,char *outbuf, int dum_size, int dum_buffsize);
int rename_internals(connection_struct *conn,
char *inbuf, char *outbuf, char *name,
@@ -4387,12 +2663,14 @@ int rename_internals(connection_struct *conn,
int reply_mv(connection_struct *conn, char *inbuf,char *outbuf, int dum_size, int dum_buffsize);
int reply_copy(connection_struct *conn, char *inbuf,char *outbuf, int dum_size, int dum_buffsize);
int reply_setdir(connection_struct *conn, char *inbuf,char *outbuf, int dum_size, int dum_buffsize);
+SMB_OFF_T get_lock_count( char *data, int data_offset, BOOL large_file_format, BOOL *err);
+SMB_OFF_T get_lock_offset( char *data, int data_offset, BOOL large_file_format, BOOL *err);
int reply_lockingX(connection_struct *conn, char *inbuf,char *outbuf,int length,int bufsize);
int reply_readbmpx(connection_struct *conn, char *inbuf,char *outbuf,int length,int bufsize);
-int reply_writebmpx(connection_struct *conn, char *inbuf,char *outbuf, int dum_size, int dum_buffsize);
+int reply_writebmpx(connection_struct *conn, char *inbuf,char *outbuf, int size, int dum_buffsize);
int reply_writebs(connection_struct *conn, char *inbuf,char *outbuf, int dum_size, int dum_buffsize);
-int reply_setattrE(connection_struct *conn, char *inbuf,char *outbuf, int dum_size, int dum_buffsize);
-int reply_getattrE(connection_struct *conn, char *inbuf,char *outbuf, int dum_size, int dum_buffsize);
+int reply_setattrE(connection_struct *conn, char *inbuf,char *outbuf, int size, int dum_buffsize);
+int reply_getattrE(connection_struct *conn, char *inbuf,char *outbuf, int size, int dum_buffsize);
/*The following definitions come from smbd/server.c */
@@ -4431,53 +2709,13 @@ int reply_trans2(connection_struct *conn,
void init_uid(void);
BOOL become_guest(void);
-BOOL become_vuser(uint16 vuid);
-BOOL unbecome_vuser(void);
BOOL become_user(connection_struct *conn, uint16 vuid);
BOOL unbecome_user(void );
+BOOL become_authenticated_pipe_user(pipes_struct *p);
+BOOL unbecome_authenticated_pipe_user(pipes_struct *p);
void become_root(BOOL save_dir) ;
void unbecome_root(BOOL restore_dir);
-/*The following definitions come from smbd/vfs-wrap.c */
-
-int vfswrap_dummy_connect(struct vfs_connection_struct *conn, char *service,
- char *user);
-void vfswrap_dummy_disconnect(void);
-SMB_BIG_UINT vfswrap_disk_free(char *path, SMB_BIG_UINT *bsize,
- SMB_BIG_UINT *dfree, SMB_BIG_UINT *dsize);
-DIR *vfswrap_opendir(char *fname);
-struct dirent *vfswrap_readdir(DIR *dirp);
-int vfswrap_mkdir(char *path, mode_t mode);
-int vfswrap_rmdir(char *path);
-int vfswrap_closedir(DIR *dirp);
-int vfswrap_open(char *fname, int flags, mode_t mode);
-int vfswrap_close(int fd);
-ssize_t vfswrap_read(int fd, char *data, size_t n);
-ssize_t vfswrap_write(int fd, char *data, size_t n);
-SMB_OFF_T vfswrap_lseek(int filedes, SMB_OFF_T offset, int whence);
-int vfswrap_rename(char *old, char *new);
-void vfswrap_sync_file(int fd);
-int vfswrap_stat(char *fname, SMB_STRUCT_STAT *sbuf);
-int vfswrap_fstat(int fd, SMB_STRUCT_STAT *sbuf);
-int vfswrap_lstat(char *path,
- SMB_STRUCT_STAT *sbuf);
-BOOL vfswrap_fcntl_lock(int fd, int op, SMB_OFF_T offset, SMB_OFF_T count,
- int type);
-int vfswrap_unlink(char *path);
-int vfswrap_chmod(char *path, mode_t mode);
-int vfswrap_utime(char *path, struct utimbuf *times);
-
-/*The following definitions come from smbd/vfs.c */
-
-int vfs_init_default(connection_struct *conn);
-BOOL vfs_init_custom(connection_struct *conn);
-BOOL vfs_file_exist(connection_struct *conn,char *fname,SMB_STRUCT_STAT *sbuf);
-ssize_t vfs_write_data(files_struct *fsp,char *buffer,size_t N);
-SMB_OFF_T vfs_transfer_file(int in_fd, files_struct *in_fsp,
- int out_fd, files_struct *out_fsp,
- SMB_OFF_T n, char *header, int headlen, int align);
-char *vfs_readdirname(connection_struct *conn, void *p);
-
/*The following definitions come from smbwrapper/realcalls.c */
int real_utime(const char *name, struct utimbuf *buf);
@@ -4555,24 +2793,22 @@ int smbw_stat_printjob(struct smbw_server *srv,char *path,
int smbw_fstat(int fd, struct stat *st);
int smbw_stat(const char *fname, struct stat *st);
-/*The following definitions come from spoolssd/spoolssd.c */
+/*The following definitions come from utils/nbio.c */
-void msrpc_service_init(void);
-BOOL reload_services(BOOL test);
-
-/*The following definitions come from srvsvcd/srvsvcd.c */
-
-void msrpc_service_init(void);
-BOOL reload_services(BOOL test);
-
-/*The following definitions come from svcctld/svcctld.c */
-
-void msrpc_service_init(void);
-BOOL reload_services(BOOL test);
+void nb_setup(struct cli_state *cli);
+void nb_unlink(char *fname);
+void nb_open(char *fname, int handle, int size);
+void nb_write(int handle, int size, int offset);
+void nb_read(int handle, int size, int offset);
+void nb_close(int handle);
+void nb_mkdir(char *fname);
+void nb_rmdir(char *fname);
+void nb_rename(char *old, char *new);
+void nb_stat(char *fname, int size);
+void nb_create(char *fname, int size);
-/*The following definitions come from utils/smbpasswd.c */
+/*The following definitions come from utils/torture.c */
-int main(int argc, char **argv);
/*The following definitions come from web/cgi.c */
@@ -4606,14 +2842,4 @@ void status_page(void);
/*The following definitions come from web/swat.c */
-
-/*The following definitions come from winregd/winregd.c */
-
-void msrpc_service_init(void);
-BOOL reload_services(BOOL test);
-
-/*The following definitions come from wkssvcd/wkssvcd.c */
-
-void msrpc_service_init(void);
-BOOL reload_services(BOOL test);
#endif /* _PROTO_H_ */
diff --git a/source3/include/rpc_dce.h b/source3/include/rpc_dce.h
index 52544ac642..9ffcf50337 100644
--- a/source3/include/rpc_dce.h
+++ b/source3/include/rpc_dce.h
@@ -26,6 +26,7 @@
#include "rpc_misc.h" /* this only pulls in STRHDR */
+
/* DCE/RPC packet types */
enum RPC_PKT_TYPE
@@ -35,15 +36,13 @@ enum RPC_PKT_TYPE
RPC_FAULT = 0x03,
RPC_BIND = 0x0B,
RPC_BINDACK = 0x0C,
- RPC_ALTCONT = 0x0E,
- RPC_ALTCONTRESP = 0x0F,
+ RPC_BINDNACK = 0x0D,
RPC_BINDRESP = 0x10 /* not the real name! this is undocumented! */
};
/* DCE/RPC flags */
#define RPC_FLG_FIRST 0x01
#define RPC_FLG_LAST 0x02
-#define RPC_FLG_NOCALL 0x20
/* NTLMSSP message types */
enum NTLM_MESSAGE_TYPE
@@ -61,9 +60,7 @@ enum NTLM_MESSAGE_TYPE
#define NTLMSSP_NEGOTIATE_SIGN 0x00000010
#define NTLMSSP_NEGOTIATE_SEAL 0x00000020
#define NTLMSSP_NEGOTIATE_LM_KEY 0x00000080
-#define NTLMSSP_NEGOTIATE_00000100 0x00000100
#define NTLMSSP_NEGOTIATE_NTLM 0x00000200
-#define NTLMSSP_NEGOTIATE_00000400 0x00000400
#define NTLMSSP_NEGOTIATE_00001000 0x00001000
#define NTLMSSP_NEGOTIATE_00002000 0x00002000
#define NTLMSSP_NEGOTIATE_ALWAYS_SIGN 0x00008000
@@ -72,18 +69,42 @@ enum NTLM_MESSAGE_TYPE
#define NTLMSSP_NEGOTIATE_128 0x20000000
#define NTLMSSP_NEGOTIATE_KEY_EXCH 0x40000000
+#define SMBD_NTLMSSP_NEG_FLAGS 0x000082b1
+
/* NTLMSSP signature version */
#define NTLMSSP_SIGN_VERSION 0x01
+/* NTLMSSP auth type and level. */
+#define NTLMSSP_AUTH_TYPE 0xa
+#define NTLMSSP_AUTH_LEVEL 0x6
+
+/* Maximum PDU fragment size. */
+#define MAX_PDU_FRAG_LEN 0x1630
+
+/*
+ * Actual structure of a DCE UUID
+ */
+
+typedef struct rpc_uuid
+{
+ uint32 time_low;
+ uint16 time_mid;
+ uint16 time_hi_and_version;
+ uint8 remaining[8];
+} RPC_UUID;
+
+#define RPC_UUID_LEN 16
/* RPC_IFACE */
typedef struct rpc_iface_info
{
- uint8 data[16]; /* 16 bytes of rpc interface identification */
+ RPC_UUID uuid; /* 16 bytes of rpc interface identification */
uint32 version; /* the interface version number */
} RPC_IFACE;
+#define RPC_IFACE_LEN (RPC_UUID_LEN + 4)
+
struct pipe_id_info
{
/* the names appear not to matter: the syntaxes _do_ matter */
@@ -102,13 +123,15 @@ typedef struct rpc_hdr_info
uint8 minor; /* 0 - RPC minor version */
uint8 pkt_type; /* RPC_PKT_TYPE - RPC response packet */
uint8 flags; /* DCE/RPC flags */
- uint32 pack_type; /* 0x1000 0000 - packed data representation */
+ uint8 pack_type[4]; /* 0x1000 0000 - little-endian packed data representation */
uint16 frag_len; /* fragment length - data size (bytes) inc header and tail. */
uint16 auth_len; /* 0 - authentication length */
uint32 call_id; /* call identifier. matches 12th uint32 of incoming RPC data. */
} RPC_HDR;
+#define RPC_HEADER_LEN 16
+
/* RPC_HDR_REQ - ms request rpc header */
typedef struct rpc_hdr_req_info
{
@@ -118,6 +141,8 @@ typedef struct rpc_hdr_req_info
} RPC_HDR_REQ;
+#define RPC_HDR_REQ_LEN 8
+
/* RPC_HDR_RESP - ms response rpc header */
typedef struct rpc_hdr_resp_info
{
@@ -128,13 +153,7 @@ typedef struct rpc_hdr_resp_info
} RPC_HDR_RESP;
-/* RPC_HDR_FAULT - ms fault rpc header */
-typedef struct rpc_hdr_fault_info
-{
- uint32 status;
- uint32 reserved; /* 0x0000 0000 */
-
-} RPC_HDR_FAULT;
+#define RPC_HDR_RESP_LEN 8
/* this seems to be the same string name depending on the name of the pipe,
* but is more likely to be linked to the interface name
@@ -160,6 +179,8 @@ typedef struct rpc_hdr_bba_info
} RPC_HDR_BBA;
+#define RPC_HDR_BBA_LEN 8
+
/* RPC_HDR_AUTHA */
typedef struct rpc_hdr_autha_info
{
@@ -175,6 +196,8 @@ typedef struct rpc_hdr_autha_info
} RPC_HDR_AUTHA;
+#define RPC_HDR_AUTHA_LEN 12
+
/* RPC_HDR_AUTH */
typedef struct rpc_hdr_auth_info
{
@@ -187,6 +210,8 @@ typedef struct rpc_hdr_auth_info
} RPC_HDR_AUTH;
+#define RPC_HDR_AUTH_LEN 8
+
/* RPC_BIND_REQ - ms req bind */
typedef struct rpc_bind_req_info
{
@@ -201,6 +226,13 @@ typedef struct rpc_bind_req_info
} RPC_HDR_RB;
+/*
+ * The following length is 8 bytes RPC_HDR_BBA_LEN, 8 bytes internals
+ * (with 3 bytes padding), + 2 x RPC_IFACE_LEN bytes for RPC_IFACE structs.
+ */
+
+#define RPC_HDR_RB_LEN (RPC_HDR_BBA_LEN + 8 + (2*RPC_IFACE_LEN))
+
/* RPC_RESULTS - can only cope with one reason, right now... */
typedef struct rpc_results_info
{
@@ -226,13 +258,13 @@ typedef struct rpc_hdr_ba_info
} RPC_HDR_BA;
-/* RPC_AUTH_NTLMSSP_VERIFIER */
-typedef struct rpc_auth_ntlmssp_verif_info
+/* RPC_AUTH_VERIFIER */
+typedef struct rpc_auth_verif_info
{
fstring signature; /* "NTLMSSP" */
uint32 msg_type; /* NTLMSSP_MESSAGE_TYPE (1,2,3) */
-} RPC_AUTH_NTLMSSP_VERIFIER;
+} RPC_AUTH_VERIFIER;
/* this is TEMPORARILY coded up as a specific structure */
/* this structure comes after the bind request */
@@ -267,8 +299,8 @@ typedef struct rpc_auth_ntlmssp_chal_info
/* RPC_AUTH_NTLMSSP_RESP */
typedef struct rpc_auth_ntlmssp_resp_info
{
- STRHDR hdr_lm_resp; /* LM response (NULL or 24 bytes) */
- STRHDR hdr_nt_resp; /* NT response (NULL, 24 or variable-length) */
+ STRHDR hdr_lm_resp; /* 24 byte response */
+ STRHDR hdr_nt_resp; /* 24 byte response */
STRHDR hdr_domain;
STRHDR hdr_usr;
STRHDR hdr_wks;
@@ -284,7 +316,6 @@ typedef struct rpc_auth_ntlmssp_resp_info
} RPC_AUTH_NTLMSSP_RESP;
-
/* attached to the end of encrypted rpc requests and responses */
/* RPC_AUTH_NTLMSSP_CHK */
typedef struct rpc_auth_ntlmssp_chk_info
@@ -296,5 +327,6 @@ typedef struct rpc_auth_ntlmssp_chk_info
} RPC_AUTH_NTLMSSP_CHK;
-#endif /* _DCE_RPC_H */
+#define RPC_AUTH_NTLMSSP_CHK_LEN 16
+#endif /* _DCE_RPC_H */
diff --git a/source3/include/rpc_lsa.h b/source3/include/rpc_lsa.h
index f4d36fef9c..c7fe77021b 100644
--- a/source3/include/rpc_lsa.h
+++ b/source3/include/rpc_lsa.h
@@ -46,10 +46,12 @@ enum SID_NAME_USE
#define LSA_LOOKUPSIDS 0x0f
#define LSA_OPENPOLICY 0x06
#define LSA_OPENPOLICY2 0x2c
-#define LSA_OPENSECRET 0x1c
-#define LSA_QUERYSECRET 0x1e
+#define LSA_OPENSECRET 0x1C
-#define LSA_MAX_GROUPS 32
+/* XXXX these are here to get a compile! */
+#define LSA_LOOKUPRIDS 0xFD
+
+#define LSA_MAX_GROUPS 96
#define LSA_MAX_SIDS 32
/* DOM_QUERY - info class 3 and 5 LSA Query response */
@@ -94,7 +96,7 @@ typedef struct obj_attr_info
typedef struct lsa_q_open_pol_info
{
uint32 ptr; /* undocumented buffer pointer */
- uint16 system_name; /* system name BUG!!! (should be \\server!) */
+ uint16 system_name; /* 0x5c - system name */
LSA_OBJ_ATTR attr ; /* object attributes */
uint32 des_access; /* desired access attributes */
@@ -132,7 +134,7 @@ typedef struct lsa_r_open_pol2_info
typedef struct lsa_query_info
{
POLICY_HND pol; /* policy handle */
- uint16 info_class; /* info class */
+ uint16 info_class; /* info class */
} LSA_Q_QUERY_INFO;
@@ -153,74 +155,15 @@ typedef struct lsa_r_query_info
} LSA_R_QUERY_INFO;
-/* LSA_Q_OPEN_SECRET - LSA Open Secret */
-typedef struct lsa_q_open_secret_info
-{
- POLICY_HND pol;
- UNIHDR hdr_secret;
- UNISTR2 uni_secret;
-
- uint32 des_access; /* desired access attributes */
-
-} LSA_Q_OPEN_SECRET;
-
-/* LSA_R_OPEN_SECRET - response to LSA Open Secret */
-typedef struct lsa_r_open_secret_info
-{
- POLICY_HND pol;
- uint32 status;
-
-} LSA_R_OPEN_SECRET;
-
-typedef struct lsa_secret_value_info
-{
- uint32 ptr_secret;
- STRHDR2 hdr_secret;
- STRING2 enc_secret; /* encrypted, see nt_encrypt_string2 */
-
-} LSA_SECRET_VALUE;
-
-typedef struct lsa_secret_info_info
-{
- uint32 ptr_value;
- LSA_SECRET_VALUE value;
-
- uint32 ptr_update;
- NTTIME last_update; /* N.B. 64-bit alignment? */
-
-} LSA_SECRET_INFO;
-
-/* LSA_Q_QUERY_SECRET - LSA Query Secret */
-typedef struct lsa_q_query_secret_info
-{
- POLICY_HND pol;
-
- LSA_SECRET_INFO info; /* [in, out] */
- LSA_SECRET_INFO oldinfo;
-
-} LSA_Q_QUERY_SECRET;
-
-/* LSA_R_QUERY_SECRET - response to LSA Query Secret */
-typedef struct lsa_r_query_secret_info
-{
- LSA_SECRET_INFO info;
- LSA_SECRET_INFO oldinfo;
-
- uint32 status;
-
-} LSA_R_QUERY_SECRET;
-
/* LSA_Q_ENUM_TRUST_DOM - LSA enumerate trusted domains */
typedef struct lsa_enum_trust_dom_info
{
POLICY_HND pol; /* policy handle */
- uint32 enum_context; /* enumeration context handle */
- uint32 preferred_len; /* preferred maximum length */
+ uint32 enum_context; /* enumeration context handle */
+ uint32 preferred_len; /* preferred maximum length */
} LSA_Q_ENUM_TRUST_DOM;
-#define MAX_TRUSTED_DOMS 10
-
/* LSA_R_ENUM_TRUST_DOM - response to LSA enumerate trusted domains */
typedef struct lsa_r_enum_trust_dom_info
{
@@ -229,12 +172,12 @@ typedef struct lsa_r_enum_trust_dom_info
uint32 ptr_enum_domains; /* buffer pointer to num domains */
/* this lot is only added if ptr_enum_domains is non-NULL */
- uint32 num_domains2; /* number of domains */
- UNIHDR2 hdr_domain_name[MAX_TRUSTED_DOMS];
- UNISTR2 uni_domain_name[MAX_TRUSTED_DOMS];
- DOM_SID2 domain_sid[MAX_TRUSTED_DOMS];
+ uint32 num_domains2; /* number of domains */
+ UNIHDR2 hdr_domain_name;
+ UNISTR2 uni_domain_name;
+ DOM_SID2 other_domain_sid;
- uint32 status; /* return code */
+ uint32 status; /* return code */
} LSA_R_ENUM_TRUST_DOM;
@@ -255,7 +198,7 @@ typedef struct lsa_r_close_info
} LSA_R_CLOSE;
-#define MAX_REF_DOMAINS 10
+#define MAX_REF_DOMAINS 32
/* DOM_TRUST_HDR */
typedef struct dom_trust_hdr
@@ -276,13 +219,13 @@ typedef struct dom_trust_info
/* DOM_R_REF */
typedef struct dom_ref_info
{
- uint32 num_ref_doms_1; /* num referenced domains */
- uint32 ptr_ref_dom; /* pointer to referenced domains */
- uint32 max_entries; /* 32 - max number of entries */
- uint32 num_ref_doms_2; /* num referenced domains */
+ uint32 num_ref_doms_1; /* num referenced domains */
+ uint32 ptr_ref_dom; /* pointer to referenced domains */
+ uint32 max_entries; /* 32 - max number of entries */
+ uint32 num_ref_doms_2; /* num referenced domains */
- DOM_TRUST_HDR hdr_ref_dom[MAX_REF_DOMAINS]; /* referenced domains */
- DOM_TRUST_INFO ref_dom [MAX_REF_DOMAINS]; /* referenced domains */
+ DOM_TRUST_HDR hdr_ref_dom[MAX_REF_DOMAINS]; /* referenced domains */
+ DOM_TRUST_INFO ref_dom [MAX_REF_DOMAINS]; /* referenced domains */
} DOM_R_REF;
@@ -347,20 +290,19 @@ typedef struct lsa_r_lookup_sids
} LSA_R_LOOKUP_SIDS;
-
/* LSA_Q_LOOKUP_NAMES - LSA Lookup NAMEs */
typedef struct lsa_q_lookup_names
{
- POLICY_HND pol; /* policy handle */
- uint32 num_entries;
- uint32 num_entries2;
- UNIHDR hdr_name[MAX_LOOKUP_SIDS]; /* name buffer pointers */
- UNISTR2 uni_name[MAX_LOOKUP_SIDS]; /* names to be looked up */
+ POLICY_HND pol; /* policy handle */
+ uint32 num_entries;
+ uint32 num_entries2;
+ UNIHDR hdr_name[MAX_LOOKUP_SIDS]; /* name buffer pointers */
+ UNISTR2 uni_name[MAX_LOOKUP_SIDS]; /* names to be looked up */
- uint32 num_trans_entries;
- uint32 ptr_trans_sids; /* undocumented domain SID buffer pointer */
- uint32 lookup_level;
- uint32 mapped_count;
+ uint32 num_trans_entries;
+ uint32 ptr_trans_sids; /* undocumented domain SID buffer pointer */
+ uint32 lookup_level;
+ uint32 mapped_count;
} LSA_Q_LOOKUP_NAMES;
@@ -372,15 +314,14 @@ typedef struct lsa_r_lookup_names
uint32 num_entries;
uint32 ptr_entries;
- uint32 num_entries2;
+ uint32 num_entries2;
DOM_RID2 *dom_rid; /* domain RIDs being looked up */
- uint32 mapped_count;
+ uint32 mapped_count;
uint32 status; /* return code */
} LSA_R_LOOKUP_NAMES;
-
#endif /* _RPC_LSA_H */
diff --git a/source3/include/rpc_misc.h b/source3/include/rpc_misc.h
index ed8cbd96bb..b837c8a67c 100644
--- a/source3/include/rpc_misc.h
+++ b/source3/include/rpc_misc.h
@@ -24,111 +24,6 @@
#ifndef _RPC_MISC_H /* _RPC_MISC_H */
#define _RPC_MISC_H
-/*
- * macros to wrap prs_xxxx routines.
- */
-#define prs_uint8(name, ps, depth, data8) \
- if (!_prs_uint8(name, ps, depth, data8)) \
- {\
- ps->offset = 0;\
- return False;\
- }
-#define prs_uint16(name, ps, depth, data16) \
- if (!_prs_uint16(name, ps, depth, data16)) \
- {\
- ps->offset = 0;\
- return False;\
- }
-#define prs_hash1(x_ps, x_offset, x_sess_key) \
- if (!_prs_hash1(x_ps, x_offset, x_sess_key)) \
- {\
- x_ps->offset = 0;\
- return False;\
- }
-#define prs_uint32(name, ps, depth, data32) \
- if (!_prs_uint32(name, ps, depth, data32)) \
- {\
- ps->offset = 0;\
- return False;\
- }
-#define prs_uint8s(charmode, name, ps, depth, data8s, len) \
- if (!_prs_uint8s(charmode, name, ps, depth, data8s, len)) \
- {\
- ps->offset = 0;\
- return False;\
- }
-#define prs_uint16s(charmode, name, ps, depth, data16s, len) \
- if (!_prs_uint16s(charmode, name, ps, depth, data16s, len)) \
- {\
- ps->offset = 0;\
- return False;\
- }
-#define prs_uint32s(charmode, name, ps, depth, data32s, len) \
- if (!_prs_uint32s(charmode, name, ps, depth, data32s, len)) \
- {\
- ps->offset = 0;\
- return False;\
- }
-#define prs_buffer2(charmode, name, ps, depth, str) \
- if (!_prs_buffer2(charmode, name, ps, depth, str)) \
- {\
- ps->offset = 0;\
- return False;\
- }
-#define prs_string2(charmode, name, ps, depth, str) \
- if (!_prs_string2(charmode, name, ps, depth, str)) \
- {\
- ps->offset = 0;\
- return False;\
- }
-#define prs_unistr2(charmode, name, ps, depth, str) \
- if (!_prs_unistr2(charmode, name, ps, depth, str)) \
- {\
- ps->offset = 0;\
- return False;\
- }
-#define prs_unistr3(charmode, name, str, ps, depth) \
- if (!_prs_unistr3(charmode, name, str, ps, depth)) \
- {\
- ps->offset = 0;\
- return False;\
- }
-#define prs_unistr(name, ps, depth, str) \
- if (!_prs_unistr(name, ps, depth, str)) \
- {\
- ps->offset = 0;\
- return False;\
- }
-#define prs_string(name, ps, depth, str, len, max_buf_size) \
- if (!_prs_string(name, ps, depth, str, len, max_buf_size)) \
- {\
- ps->offset = 0;\
- return False;\
- }
-#define prs_uint16_pre(x_name, x_ps, x_depth, x_data16, x_offset) \
- if (!_prs_uint16_pre(x_name, x_ps, x_depth, x_data16, x_offset)) \
- {\
- x_ps->offset = 0;\
- return False;\
- }
-#define prs_uint16_post(name, ps, depth, data16, ptr_uint16, data_size) \
- if (!_prs_uint16_post(name, ps, depth, data16, ptr_uint16, data_size)) \
- {\
- ps->offset = 0;\
- return False;\
- }
-#define prs_uint32_pre(x_name, x_ps, x_depth, x_data32, x_offset) \
- if (!_prs_uint32_pre(x_name, x_ps, x_depth, x_data32, x_offset)) \
- {\
- x_ps->offset = 0;\
- return False;\
- }
-#define prs_uint32_post(name, ps, depth, data32, ptr_uint32, data_size) \
- if (!_prs_uint32_post(name, ps, depth, data32, ptr_uint32, data_size)) \
- {\
- ps->offset = 0;\
- return False;\
- }
#include "rpc_dce.h"
@@ -148,10 +43,12 @@
#define BUILTIN_ALIAS_RID_USERS (0x00000221L)
#define BUILTIN_ALIAS_RID_GUESTS (0x00000222L)
#define BUILTIN_ALIAS_RID_POWER_USERS (0x00000223L)
+
#define BUILTIN_ALIAS_RID_ACCOUNT_OPS (0x00000224L)
#define BUILTIN_ALIAS_RID_SYSTEM_OPS (0x00000225L)
#define BUILTIN_ALIAS_RID_PRINT_OPS (0x00000226L)
#define BUILTIN_ALIAS_RID_BACKUP_OPS (0x00000227L)
+
#define BUILTIN_ALIAS_RID_REPLICATOR (0x00000228L)
/*
@@ -159,23 +56,13 @@
* NT RIDS.
*/
-/* Take the bottom bits. */
-#define RID_TYPE_MASK 2
-#define RID_MULTIPLIER 4
-
-/* The three common types. */
-#define RID_TYPE_USER 0
-#define RID_TYPE_GROUP 1
-#define RID_TYPE_ALIAS 2
-
-/* BIGINT - NT-style 64-bit integer */
-typedef struct bigint_info
-{
- uint32 low;
- uint32 high;
-
-} BIGINT;
+/* Take the bottom bit. */
+#define RID_TYPE_MASK 1
+#define RID_MULTIPLIER 2
+/* The two common types. */
+#define USER_RID_TYPE 0
+#define GROUP_RID_TYPE 1
/* ENUM_HND */
typedef struct enum_hnd_info
@@ -210,15 +97,6 @@ typedef struct header_info
} STRHDR;
-/* STRHDR2 - string header, 32-bit lengths */
-typedef struct header2_info
-{
- uint32 str_str_len;
- uint32 str_max_len;
- uint32 buffer;
-
-} STRHDR2;
-
/* UNIHDR - unicode string header */
typedef struct unihdr_info
{
@@ -244,8 +122,8 @@ typedef struct unihdr2_info
/* UNISTR - unicode string size and buffer */
typedef struct unistr_info
{
- uint16 buffer[MAX_UNISTRLEN]; /* unicode characters. ***MUST*** be null-terminated */
-
+ /* unicode characters. ***MUST*** be little-endian. ***MUST*** be null-terminated */
+ uint16 buffer[MAX_UNISTRLEN];
} UNISTR;
/* BUFHDR - buffer header */
@@ -256,15 +134,6 @@ typedef struct bufhdr_info
} BUFHDR;
-/* BUFHDR2 - another buffer header, with info level */
-typedef struct bufhdr2_info
-{
- uint32 info_level;
- uint32 length; /* uint8 chars */
- uint32 buffer;
-
-} BUFHDR2;
-
/* BUFFER2 - unicode string, size (in uint8 ascii chars) and buffer */
/* pathetic. some stupid team of \PIPE\winreg writers got the concept */
/* of a unicode string different from the other \PIPE\ writers */
@@ -273,7 +142,8 @@ typedef struct buffer2_info
uint32 buf_max_len;
uint32 undoc;
uint32 buf_len;
- uint8 buffer[MAX_UNISTRLEN];
+ /* unicode characters. ***MUST*** be little-endian. **NOT** necessarily null-terminated */
+ uint16 buffer[MAX_UNISTRLEN];
} BUFFER2;
@@ -286,28 +156,14 @@ typedef struct buffer3_info
} BUFFER3;
-/* BUFFER4 - simple length and buffer */
-typedef struct buffer4_info
-{
- uint32 buf_len;
- uint8 buffer[MAX_BUFFERLEN];
-
-} BUFFER4;
-
-/* BUFFER5 */
-typedef struct buffer5_info
-{
- uint32 buf_len;
- uint16 *buffer; /* data */
-} BUFFER5;
-
/* UNISTR2 - unicode string size (in uint16 unicode chars) and buffer */
typedef struct unistr2_info
{
uint32 uni_max_len;
uint32 undoc;
uint32 uni_str_len;
- uint16 buffer[MAX_UNISTRLEN]; /* unicode characters. **NOT** necessarily null-terminated */
+ /* unicode characters. ***MUST*** be little-endian. **NOT** necessarily null-terminated */
+ uint16 buffer[MAX_UNISTRLEN];
} UNISTR2;
@@ -350,6 +206,15 @@ typedef struct domrid3_info
} DOM_RID3;
+/* DOM_RID4 - rid + user attributes */
+typedef struct domrid4_info
+{
+ uint32 unknown;
+ uint16 attr;
+ uint32 rid; /* user RID */
+
+} DOM_RID4;
+
/* DOM_CLNT_SRV - client / server names */
typedef struct clnt_srv_info
{
@@ -422,4 +287,3 @@ typedef struct lsa_policy_info
} POLICY_HND;
#endif /* _RPC_MISC_H */
-
diff --git a/source3/include/rpc_netlogon.h b/source3/include/rpc_netlogon.h
index 31d8a3c1e5..06caa53f4d 100644
--- a/source3/include/rpc_netlogon.h
+++ b/source3/include/rpc_netlogon.h
@@ -30,20 +30,43 @@
#define NET_SRVPWSET 0x06
#define NET_SAMLOGON 0x02
#define NET_SAMLOGOFF 0x03
-#define NET_AUTH 0x05
#define NET_AUTH2 0x0f
#define NET_LOGON_CTRL2 0x0e
#define NET_TRUST_DOM_LIST 0x13
-#define NET_SAM_SYNC 0x10
-#define NET_SAM_DELTAS 0x07
-
/* Secure Channel types. used in NetrServerAuthenticate negotiation */
#define SEC_CHAN_WKSTA 2
#define SEC_CHAN_DOMAIN 4
-#define SEC_CHAN_BDC 6
+#if 0
+/* JRATEST.... */
+/* NET_USER_INFO_2 */
+typedef struct net_user_info_2
+{
+ uint32 ptr_user_info;
+
+ NTTIME logon_time; /* logon time */
+ NTTIME logoff_time; /* logoff time */
+ NTTIME kickoff_time; /* kickoff time */
+ NTTIME pass_last_set_time; /* password last set time */
+ NTTIME pass_can_change_time; /* password can change time */
+ NTTIME pass_must_change_time; /* password must change time */
+
+....
+ uint32 user_id; /* User ID */
+ uint32 group_id; /* Group ID */
+....
+ uint32 num_groups2; /* num groups */
+ DOM_GID gids[LSA_MAX_GROUPS]; /* group info */
+
+ UNIHDR hdr_logon_srv; /* logon server unicode string header */
+ UNISTR2 uni_logon_dom; /* logon domain unicode string */
+ DOM_SID2 dom_sid;
+} NET_USER_INFO_2;
+/* ! JRATEST.... */
+#endif
+
/* NET_USER_INFO_3 */
typedef struct net_user_info_3
{
@@ -192,7 +215,7 @@ typedef struct net_q_trust_dom_info
/* NET_R_TRUST_DOM_LIST - response to LSA Trusted Domains */
typedef struct net_r_trust_dom_info
{
- BUFFER2 uni_trust_dom_name;
+ UNISTR2 uni_trust_dom_name[MAX_TRUST_DOMS];
uint32 status; /* return code */
@@ -227,24 +250,8 @@ typedef struct net_r_req_chal_info
} NET_R_REQ_CHAL;
-/* NET_Q_AUTH */
-typedef struct net_q_auth_info
-{
- DOM_LOG_INFO clnt_id; /* client identification info */
- DOM_CHAL clnt_chal; /* client-calculated credentials */
-} NET_Q_AUTH;
-
-/* NET_R_AUTH */
-typedef struct net_r_auth_info
-{
- DOM_CHAL srv_chal; /* server-calculated credentials */
-
- uint32 status; /* return code */
-
-} NET_R_AUTH;
-
/* NET_Q_AUTH_2 */
typedef struct net_q_auth2_info
{
@@ -255,6 +262,7 @@ typedef struct net_q_auth2_info
} NET_Q_AUTH_2;
+
/* NET_R_AUTH_2 */
typedef struct net_r_auth2_info
{
@@ -265,6 +273,7 @@ typedef struct net_r_auth2_info
} NET_R_AUTH_2;
+
/* NET_Q_SRV_PWSET */
typedef struct net_q_srv_pwset_info
{
@@ -288,7 +297,7 @@ typedef struct net_network_info_2
uint32 ptr_id_info2; /* pointer to id_info_2 */
UNIHDR hdr_domain_name; /* domain name unicode header */
uint32 param_ctrl; /* param control (0x2) */
- BIGINT logon_id; /* logon ID */
+ DOM_LOGON_ID logon_id; /* logon ID */
UNIHDR hdr_user_name; /* user name unicode header */
UNIHDR hdr_wksta_name; /* workstation name unicode header */
uint8 lm_chal[8]; /* lan manager 8 byte challenge */
@@ -309,7 +318,7 @@ typedef struct id_info_1
uint32 ptr_id_info1; /* pointer to id_info_1 */
UNIHDR hdr_domain_name; /* domain name unicode header */
uint32 param_ctrl; /* param control */
- BIGINT logon_id; /* logon ID */
+ DOM_LOGON_ID logon_id; /* logon ID */
UNIHDR hdr_user_name; /* user name unicode header */
UNIHDR hdr_wksta_name; /* workstation name unicode header */
OWF_INFO lm_owf; /* LM OWF Password */
@@ -351,7 +360,7 @@ typedef struct sam_info
/* NET_Q_SAM_LOGON */
typedef struct net_q_sam_logon_info
{
- DOM_SAM_INFO sam_id;
+ DOM_SAM_INFO sam_id;
uint16 validation_level;
} NET_Q_SAM_LOGON;
@@ -390,270 +399,5 @@ typedef struct net_r_sam_logoff_info
} NET_R_SAM_LOGOFF;
-/* NET_Q_SAM_SYNC */
-typedef struct net_q_sam_sync_info
-{
- UNISTR2 uni_srv_name; /* \\PDC */
- UNISTR2 uni_cli_name; /* BDC */
- DOM_CRED cli_creds;
- DOM_CRED ret_creds;
-
- uint32 database_id;
- uint32 restart_state;
- uint32 sync_context;
-
- uint32 max_size; /* preferred maximum length */
-
-} NET_Q_SAM_SYNC;
-
-#define MAX_GROUP_MEM 256
-#define MAX_SAM_DELTAS 256
-
-/* SAM_DELTA_HDR */
-typedef struct sam_delta_hdr_info
-{
- uint16 type; /* type of structure attached, see below */
- uint16 type2;
- uint32 target_rid;
-
- uint32 type3;
- uint32 ptr_delta;
-
-} SAM_DELTA_HDR;
-
-/* SAM_DOMAIN_INFO (0x1) */
-typedef struct sam_domain_info_info
-{
- UNIHDR hdr_dom_name;
- UNIHDR hdr_oem_info;
-
- BIGINT force_logoff;
- uint16 min_pwd_len;
- uint16 pwd_history_len;
- BIGINT max_pwd_age;
- BIGINT min_pwd_age;
- BIGINT dom_mod_count;
- NTTIME creation_time;
-
- BUFHDR2 hdr_sec_desc; /* security descriptor */
- UNIHDR hdr_unknown;
- uint8 reserved[40];
-
- UNISTR2 uni_dom_name;
- UNISTR2 buf_oem_info; /* never seen */
-
- BUFFER4 buf_sec_desc;
- UNISTR2 buf_unknown;
-
-} SAM_DOMAIN_INFO;
-
-/* SAM_GROUP_INFO (0x2) */
-typedef struct sam_group_info_info
-{
- UNIHDR hdr_grp_name;
- DOM_GID gid;
- UNIHDR hdr_grp_desc;
- BUFHDR2 hdr_sec_desc; /* security descriptor */
- uint8 reserved[48];
-
- UNISTR2 uni_grp_name;
- UNISTR2 uni_grp_desc;
- BUFFER4 buf_sec_desc;
-
-} SAM_GROUP_INFO;
-
-/* SAM_PWD */
-typedef struct sam_passwd_info
-{
- /* this structure probably contains password history */
- /* this is probably a count of lm/nt pairs */
- uint32 unk_0; /* 0x0000 0002 */
-
- UNIHDR hdr_lm_pwd;
- uint8 buf_lm_pwd[16];
-
- UNIHDR hdr_nt_pwd;
- uint8 buf_nt_pwd[16];
-
- UNIHDR hdr_empty_lm;
- UNIHDR hdr_empty_nt;
-
-} SAM_PWD;
-
-/* SAM_ACCOUNT_INFO (0x5) */
-typedef struct sam_account_info_info
-{
- UNIHDR hdr_acct_name;
- UNIHDR hdr_full_name;
-
- uint32 user_rid;
- uint32 group_rid;
-
- UNIHDR hdr_home_dir;
- UNIHDR hdr_dir_drive;
- UNIHDR hdr_logon_script;
- UNIHDR hdr_acct_desc;
- UNIHDR hdr_workstations;
-
- NTTIME logon_time;
- NTTIME logoff_time;
-
- uint32 logon_divs; /* 0xA8 */
- uint32 ptr_logon_hrs;
-
- uint16 bad_pwd_count;
- uint16 logon_count;
- NTTIME pwd_last_set_time;
- NTTIME acct_expiry_time;
-
- uint32 acb_info;
- uint8 nt_pwd[16];
- uint8 lm_pwd[16];
- uint8 nt_pwd_present;
- uint8 lm_pwd_present;
- uint8 pwd_expired;
-
- UNIHDR hdr_comment;
- UNIHDR hdr_parameters;
- uint16 country;
- uint16 codepage;
-
- BUFHDR2 hdr_sec_desc; /* security descriptor */
-
- UNIHDR hdr_profile;
- UNIHDR hdr_reserved[3]; /* space for more strings */
- uint32 dw_reserved[4]; /* space for more data - first two seem to
- be an NTTIME */
-
- UNISTR2 uni_acct_name;
- UNISTR2 uni_full_name;
- UNISTR2 uni_home_dir;
- UNISTR2 uni_dir_drive;
- UNISTR2 uni_logon_script;
- UNISTR2 uni_acct_desc;
- UNISTR2 uni_workstations;
-
- uint32 unknown1; /* 0x4EC */
- uint32 unknown2; /* 0 */
-
- BUFFER4 buf_logon_hrs;
- UNISTR2 uni_comment;
- UNISTR2 uni_parameters;
- SAM_PWD pass;
- BUFFER4 buf_sec_desc;
- UNISTR2 uni_profile;
-
-} SAM_ACCOUNT_INFO;
-
-/* SAM_GROUP_MEM_INFO (0x8) */
-typedef struct sam_group_mem_info_info
-{
- uint32 ptr_rids;
- uint32 ptr_attribs;
- uint32 num_members;
- uint8 unknown[16];
-
- uint32 num_members2;
- uint32 rids[MAX_GROUP_MEM];
-
- uint32 num_members3;
- uint32 attribs[MAX_GROUP_MEM];
-
-} SAM_GROUP_MEM_INFO;
-
-/* SAM_ALIAS_INFO (0x9) */
-typedef struct sam_alias_info_info
-{
- UNIHDR hdr_als_name;
- uint32 als_rid;
- BUFHDR2 hdr_sec_desc; /* security descriptor */
- UNIHDR hdr_als_desc;
- uint8 reserved[40];
-
- UNISTR2 uni_als_name;
- BUFFER4 buf_sec_desc;
- UNISTR2 uni_als_desc;
-
-} SAM_ALIAS_INFO;
-
-/* SAM_ALIAS_MEM_INFO (0xC) */
-typedef struct sam_alias_mem_info_info
-{
- uint32 num_members;
- uint32 ptr_members;
- uint8 unknown[16];
-
- uint32 num_sids;
- uint32 ptr_sids[MAX_GROUP_MEM];
- DOM_SID2 sids[MAX_GROUP_MEM];
-
-} SAM_ALIAS_MEM_INFO;
-
-/* SAM_DELTA_CTR */
-typedef union sam_delta_ctr_info
-{
- SAM_DOMAIN_INFO domain_info ;
- SAM_GROUP_INFO group_info ;
- SAM_ACCOUNT_INFO account_info;
- SAM_GROUP_MEM_INFO grp_mem_info;
- SAM_ALIAS_INFO alias_info ;
- SAM_ALIAS_MEM_INFO als_mem_info;
-
-} SAM_DELTA_CTR;
-
-/* NET_R_SAM_SYNC */
-typedef struct net_r_sam_sync_info
-{
- DOM_CRED srv_creds;
-
- uint32 sync_context;
-
- uint32 ptr_deltas;
- uint32 num_deltas;
- uint32 ptr_deltas2;
- uint32 num_deltas2;
-
- SAM_DELTA_HDR *hdr_deltas;
- SAM_DELTA_CTR *deltas;
-
- uint32 status;
-
-} NET_R_SAM_SYNC;
-
-
-/* NET_Q_SAM_DELTAS */
-typedef struct net_q_sam_deltas_info
-{
- UNISTR2 uni_srv_name;
- UNISTR2 uni_cli_name;
- DOM_CRED cli_creds;
- DOM_CRED ret_creds;
-
- uint32 database_id;
- BIGINT dom_mod_count; /* domain mod count at last sync */
-
- uint32 max_size; /* preferred maximum length */
-
-} NET_Q_SAM_DELTAS;
-
-/* NET_R_SAM_DELTAS */
-typedef struct net_r_sam_deltas_info
-{
- DOM_CRED srv_creds;
-
- BIGINT dom_mod_count; /* new domain mod count */
-
- uint32 num_deltas;
- uint32 ptr_deltas;
- uint32 num_deltas2;
-
- SAM_DELTA_HDR *hdr_deltas;
- SAM_DELTA_CTR *deltas;
-
- uint32 status;
-
-} NET_R_SAM_DELTAS;
-
-
#endif /* _RPC_NETLOGON_H */
diff --git a/source3/include/rpc_reg.h b/source3/include/rpc_reg.h
index 7e74af8ab8..7766052588 100644
--- a/source3/include/rpc_reg.h
+++ b/source3/include/rpc_reg.h
@@ -26,7 +26,6 @@
/* winreg pipe defines */
-#define REG_OPEN_HKCR 0x00
#define REG_OPEN_HKLM 0x02
#define REG_OPEN_HKU 0x04
#define REG_FLUSH_KEY 0x0B
@@ -43,34 +42,12 @@
#define REG_OPEN_ENTRY 0x0f
#define REG_INFO 0x11
#define REG_CLOSE 0x05
-#define REG_SHUTDOWN 0x18
-#define HKEY_CLASSES_ROOT 0x80000000
-#define HKEY_CURRENT_USER 0x80000001
-#define HKEY_LOCAL_MACHINE 0x80000002
+#define HKEY_LOCAL_MACHINE 0x80000000
#define HKEY_USERS 0x80000003
-/* REG_Q_OPEN_HKCR */
-typedef struct q_reg_open_hkcr_info
-{
- uint32 ptr;
- uint16 unknown_0; /* 0x5428 - 16 bit unknown */
- uint16 unknown_1; /* random. changes */
- uint32 level; /* 0x0200 0000 */
-
-} REG_Q_OPEN_HKCR;
-
-/* REG_R_OPEN_HKCR */
-typedef struct r_reg_open_hkcr_info
-{
- POLICY_HND pol; /* policy handle */
- uint32 status; /* return status */
-
-} REG_R_OPEN_HKCR;
-
-
/* REG_Q_OPEN_HKLM */
-typedef struct q_reg_open_hklm_info
+typedef struct q_reg_open_policy_info
{
uint32 ptr;
uint16 unknown_0; /* 0xE084 - 16 bit unknown */
@@ -80,7 +57,7 @@ typedef struct q_reg_open_hklm_info
} REG_Q_OPEN_HKLM ;
/* REG_R_OPEN_HKLM */
-typedef struct r_reg_open_hklm_info
+typedef struct r_reg_open_policy_info
{
POLICY_HND pol; /* policy handle */
uint32 status; /* return status */
@@ -89,7 +66,7 @@ typedef struct r_reg_open_hklm_info
/* REG_Q_OPEN_HKU */
-typedef struct q_reg_open_hku_info
+typedef struct q_reg_open_unk4_info
{
uint32 ptr;
uint16 unknown_0; /* 0xE084 - 16 bit unknown */
@@ -99,7 +76,7 @@ typedef struct q_reg_open_hku_info
} REG_Q_OPEN_HKU;
/* REG_R_OPEN_HKU */
-typedef struct r_reg_open_hku_info
+typedef struct r_reg_open_unk4_info
{
POLICY_HND pol; /* policy handle */
uint32 status; /* return status */
@@ -159,6 +136,8 @@ typedef struct q_reg_get_key_sec_info
/* REG_R_GET_KEY_SEC */
typedef struct r_reg_get_key_sec_info
{
+ uint32 sec_info; /* xxxx_SECURITY_INFORMATION */
+
uint32 ptr; /* pointer */
BUFHDR hdr_sec; /* header for security data */
SEC_DESC_BUF *data; /* security data */
@@ -419,37 +398,39 @@ typedef struct q_reg_info_info
{
POLICY_HND pol; /* policy handle */
- UNIHDR hdr_val; /* unicode product type header */
- UNISTR2 uni_val; /* unicode product type - "ProductType" */
+ UNIHDR hdr_type; /* unicode product type header */
+ UNISTR2 uni_type; /* unicode product type - "ProductType" */
- uint32 ptr_type; /* pointer */
- uint32 type; /* type of buffer */
-
- uint32 ptr_uni_type; /* pointer to o/s type */
- BUFFER2 uni_type; /* unicode string o/s type - "LanmanNT" */
+ uint32 ptr1; /* pointer */
+ NTTIME time; /* current time? */
+ uint8 major_version1; /* 0x4 - os major version? */
+ uint8 minor_version1; /* 0x1 - os minor version? */
+ uint8 pad1[10]; /* padding - zeros */
- uint32 ptr_max_len; /* pointer to unknown_0 */
- uint32 buf_max_len; /* 0x12 */
+ uint32 ptr2; /* pointer */
+ uint8 major_version2; /* 0x4 - os major version? */
+ uint8 minor_version2; /* 0x1 - os minor version? */
+ uint8 pad2[2]; /* padding - zeros */
- uint32 ptr_len; /* pointer to unknown_1 */
- uint32 buf_len; /* 0x12 */
+ uint32 ptr3; /* pointer */
+ uint32 unknown; /* 0x0000 0000 */
} REG_Q_INFO;
/* REG_R_INFO */
typedef struct r_reg_info_info
{
- uint32 ptr_type; /* buffer pointer */
- uint32 *type; /* 0x1 - info level? */
+ uint32 ptr1; /* buffer pointer */
+ uint32 level; /* 0x1 - info level? */
- uint32 ptr_uni_type; /* pointer to o/s type */
- BUFFER2 *uni_type; /* unicode string o/s type - "LanmanNT" */
+ uint32 ptr_type; /* pointer to o/s type */
+ BUFFER2 uni_type; /* unicode string o/s type - "LanmanNT" */
- uint32 ptr_max_len; /* pointer to unknown_0 */
- uint32 buf_max_len; /* 0x12 */
+ uint32 ptr2; /* pointer to unknown_0 */
+ uint32 unknown_0; /* 0x12 */
- uint32 ptr_len; /* pointer to unknown_1 */
- uint32 buf_len; /* 0x12 */
+ uint32 ptr3; /* pointer to unknown_1 */
+ uint32 unknown_1; /* 0x12 */
uint32 status; /* return status */
@@ -480,26 +461,6 @@ typedef struct r_reg_open_entry_info
} REG_R_OPEN_ENTRY;
-/* REG_Q_SHUTDOWN */
-typedef struct q_reg_shutdown_info
-{
- uint32 ptr_0;
- uint32 ptr_1;
- uint32 ptr_2;
- UNIHDR hdr_msg; /* shutdown message */
- UNISTR2 uni_msg;
- uint32 timeout; /* seconds */
- uint16 flags;
-
-} REG_Q_SHUTDOWN;
-
-/* REG_R_SHUTDOWN */
-typedef struct r_reg_shutdown_info
-{
- uint32 status; /* return status */
-
-} REG_R_SHUTDOWN;
-
#endif /* _RPC_REG_H */
diff --git a/source3/include/rpc_samr.h b/source3/include/rpc_samr.h
index 2c9a719ff5..1444d932b4 100644
--- a/source3/include/rpc_samr.h
+++ b/source3/include/rpc_samr.h
@@ -2,9 +2,9 @@
Unix SMB/Netbios implementation.
Version 1.9.
SMB parameters and setup
- Copyright (C) Andrew Tridgell 1992-1998
- Copyright (C) Luke Kenneth Casson Leighton 1996-1998
- Copyright (C) Paul Ashton 1997-1998
+ Copyright (C) Andrew Tridgell 1992-1997
+ Copyright (C) Luke Kenneth Casson Leighton 1996-1997
+ Copyright (C) Paul Ashton 1997
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
@@ -32,16 +32,16 @@
the following information comes from a QuickView on samsrv.dll,
and gives an idea of exactly what is needed:
-x SamrAddMemberToAlias
-x SamrAddMemberToGroup
+SamrAddMemberToAlias
+SamrAddMemberToGroup
SamrAddMultipleMembersToAlias
-x SamrChangePasswordUser
+SamrChangePasswordUser
x SamrCloseHandle
x SamrConnect
-x SamrCreateAliasInDomain
-x SamrCreateGroupInDomain
-x SamrCreateUserInDomain
-? SamrDeleteAlias
+SamrCreateAliasInDomain
+SamrCreateGroupInDomain
+SamrCreateUserInDomain
+SamrDeleteAlias
SamrDeleteGroup
SamrDeleteUser
x SamrEnumerateAliasesInDomain
@@ -54,7 +54,7 @@ SamrLookupDomainInSamServer
x SamrLookupNamesInDomain
x SamrOpenAlias
x SamrOpenDomain
-x SamrOpenGroup
+SamrOpenGroup
x SamrOpenUser
x SamrQueryDisplayInformation
x SamrQueryInformationAlias
@@ -65,10 +65,10 @@ SamrRemoveMemberFromAlias
SamrRemoveMemberFromForiegnDomain
SamrRemoveMemberFromGroup
SamrRemoveMultipleMembersFromAlias
-x SamrSetInformationAlias
+SamrSetInformationAlias
SamrSetInformationDomain
-x SamrSetInformationGroup
-x SamrSetInformationUser
+SamrSetInformationGroup
+SamrSetInformationUser
SamrSetMemberAttributesOfGroup
SamrSetSecurityObject
SamrShutdownSamServer
@@ -77,62 +77,30 @@ SamrTestPrivateFunctionsUser
********************************************************************/
-#define SAMR_CONNECT_ANON 0x00
#define SAMR_CLOSE_HND 0x01
-
-#define SAMR_QUERY_SEC_OBJECT 0x03
-#define SAMR_LOOKUP_DOMAIN 0x05
#define SAMR_OPEN_DOMAIN 0x07
-#define SAMR_ENUM_DOMAINS 0x06
-
#define SAMR_QUERY_DOMAIN_INFO 0x08
-
-#define SAMR_CREATE_DOM_GROUP 0x0a
-#define SAMR_ENUM_DOM_GROUPS 0x0b
-#define SAMR_ENUM_DOM_USERS 0x0d
-#define SAMR_CREATE_DOM_ALIAS 0x0e
-#define SAMR_ENUM_DOM_ALIASES 0x0f
-#define SAMR_QUERY_USERALIASES 0x10
-
+#define SAMR_LOOKUP_IDS 0x10
#define SAMR_LOOKUP_NAMES 0x11
-#define SAMR_LOOKUP_RIDS 0x12
-
-#define SAMR_OPEN_GROUP 0x13
-#define SAMR_QUERY_GROUPINFO 0x14
-#define SAMR_SET_GROUPINFO 0x15
-#define SAMR_ADD_GROUPMEM 0x16
-#define SAMR_DELETE_DOM_GROUP 0x17
-#define SAMR_DEL_GROUPMEM 0x18
-#define SAMR_QUERY_GROUPMEM 0x19
-
-#define SAMR_OPEN_ALIAS 0x1b
-#define SAMR_QUERY_ALIASINFO 0x1c
-#define SAMR_SET_ALIASINFO 0x1d
-#define SAMR_DELETE_DOM_ALIAS 0x1e
-#define SAMR_ADD_ALIASMEM 0x1f
-#define SAMR_DEL_ALIASMEM 0x20
-#define SAMR_QUERY_ALIASMEM 0x21
-
+#define SAMR_UNKNOWN_3 0x03
+#define SAMR_QUERY_DISPINFO 0x28
#define SAMR_OPEN_USER 0x22
#define SAMR_QUERY_USERINFO 0x24
-#define SAMR_SET_USERINFO2 0x25
#define SAMR_QUERY_USERGROUPS 0x27
-#define SAMR_CREATE_USER 0x32
-#define SAMR_SET_USERINFO 0x3A
-
-#define SAMR_QUERY_DISPINFO 0x28
-
-#define SAMR_GET_USRDOM_PWINFO 0x2c
-#define SAMR_QUERY_DISPINFO3 0x30 /* Alias for SAMR_QUERY_DISPINFO
- with info level 3 */
-#define SAMR_QUERY_DISPINFO4 0x33 /* Alias for SAMR_QUERY_DISPINFO
- with info level 4 */
-#define SAMR_ADDMULTI_ALIASMEM 0x34
-
+#define SAMR_UNKNOWN_12 0x12
+#define SAMR_UNKNOWN_21 0x21
+#define SAMR_UNKNOWN_2C 0x2c
+#define SAMR_UNKNOWN_32 0x32
+#define SAMR_UNKNOWN_34 0x34
#define SAMR_CHGPASSWD_USER 0x37
-#define SAMR_GET_DOM_PWINFO 0x38
-
+#define SAMR_UNKNOWN_38 0x38
#define SAMR_CONNECT 0x39
+#define SAMR_CONNECT_ANON 0x00
+#define SAMR_OPEN_ALIAS 0x1b
+#define SAMR_QUERY_ALIASINFO 0x1c
+#define SAMR_ENUM_DOM_USERS 0x0d
+#define SAMR_ENUM_DOM_ALIASES 0x0f
+#define SAMR_ENUM_DOM_GROUPS 0x30
typedef struct logon_hours_info
@@ -142,83 +110,6 @@ typedef struct logon_hours_info
} LOGON_HRS;
-/* SAM_USER_INFO_16 */
-typedef struct sam_user_info_16
-{
- uint16 acb_info; /* account info (ACB_xxxx bit-mask) */
-
-} SAM_USER_INFO_16;
-
-/* SAM_USER_INFO_23 */
-typedef struct sam_user_info_23
-{
- /* TIMES MAY NOT IN RIGHT ORDER!!!! */
- NTTIME logon_time; /* logon time */
- NTTIME logoff_time; /* logoff time */
- NTTIME kickoff_time; /* kickoff time */
- NTTIME pass_last_set_time; /* password last set time */
- NTTIME pass_can_change_time; /* password can change time */
- NTTIME pass_must_change_time; /* password must change time */
-
- UNIHDR hdr_user_name; /* NULL - user name unicode string header */
- UNIHDR hdr_full_name; /* user's full name unicode string header */
- UNIHDR hdr_home_dir; /* home directory unicode string header */
- UNIHDR hdr_dir_drive; /* home drive unicode string header */
- UNIHDR hdr_logon_script; /* logon script unicode string header */
- UNIHDR hdr_profile_path; /* profile path unicode string header */
- UNIHDR hdr_acct_desc ; /* user description */
- UNIHDR hdr_workstations; /* comma-separated workstations user can log in from */
- UNIHDR hdr_unknown_str ; /* don't know what this is, yet. */
- UNIHDR hdr_munged_dial ; /* munged path name and dial-back tel number */
-
- uint8 lm_pwd[16]; /* lm user passwords */
- uint8 nt_pwd[16]; /* nt user passwords */
-
- uint32 user_rid; /* Primary User ID */
- uint32 group_rid; /* Primary Group ID */
-
- uint16 acb_info; /* account info (ACB_xxxx bit-mask) */
- /* uint8 pad[2] */
-
- uint32 unknown_3; /* 0x09f8 27fa */
-
- uint16 logon_divs; /* 0x0000 00a8 which is 168 which is num hrs in a week */
- /* uint8 pad[2] */
- uint32 ptr_logon_hrs; /* pointer to logon hours */
-
- uint8 padding1[8];
-
- uint32 unknown_5; /* 0x0001 0000 */
-
- uint8 pass[516];
-
- UNISTR2 uni_user_name; /* NULL - username unicode string */
- UNISTR2 uni_full_name; /* user's full name unicode string */
- UNISTR2 uni_home_dir; /* home directory unicode string */
- UNISTR2 uni_dir_drive; /* home directory drive unicode string */
- UNISTR2 uni_logon_script; /* logon script unicode string */
- UNISTR2 uni_profile_path; /* profile path unicode string */
- UNISTR2 uni_acct_desc ; /* user description unicode string */
- UNISTR2 uni_workstations; /* login from workstations unicode string */
- UNISTR2 uni_unknown_str ; /* don't know what this is, yet. */
- UNISTR2 uni_munged_dial ; /* munged path name and dial-back tel number */
-
- uint32 unknown_6; /* 0x0000 04ec */
- uint32 padding4;
-
- LOGON_HRS logon_hrs;
-
-} SAM_USER_INFO_23;
-
-/* SAM_USER_INFO_24 */
-typedef struct sam_user_info_24
-{
- uint8 pass[516];
- uint16 unk_0;
-
-} SAM_USER_INFO_24;
-
-
/* SAM_USER_INFO_21 */
typedef struct sam_user_info_21
{
@@ -337,7 +228,7 @@ typedef struct q_samr_close_hnd_info
/* SAMR_R_CLOSE_HND - probably a policy handle close */
typedef struct r_samr_close_hnd_info
{
- POLICY_HND pol; /* policy handle */
+ POLICY_HND pol; /* policy handle */
uint32 status; /* return status */
} SAMR_R_CLOSE_HND;
@@ -454,33 +345,11 @@ SAMR_Q_QUERY_DOMAIN_INFO - probably a query on domain group info.
typedef struct q_samr_query_domain_info
{
POLICY_HND domain_pol; /* policy handle */
- uint16 switch_value; /* 0x0002, 0x0001 */
+ uint16 switch_value; /* 0x0002 */
} SAMR_Q_QUERY_DOMAIN_INFO;
-typedef struct sam_unknown_info_3_info
-{
- uint32 unknown_0; /* 0x0000 0000 */
- uint32 unknown_1; /* 0x8000 0000 */
-
-} SAM_UNK_INFO_3;
-
-typedef struct sam_unknown_info_6_info
-{
- uint32 unknown_0; /* 0x0000 0000 */
-
- uint32 ptr_0; /* pointer to unknown structure */
- uint8 padding[12]; /* 12 bytes zeros */
-
-} SAM_UNK_INFO_6;
-
-typedef struct sam_unknown_info_7_info
-{
- uint16 unknown_0; /* 0x0003 */
-
-} SAM_UNK_INFO_7;
-
-typedef struct sam_unknown_info_2_inf
+typedef struct sam_unkown_info_2_info
{
uint32 unknown_0; /* 0x0000 0000 */
uint32 unknown_1; /* 0x8000 0000 */
@@ -511,24 +380,12 @@ typedef struct sam_unknown_info_2_inf
} SAM_UNK_INFO_2;
-typedef struct sam_unknown_info_1_inf
-{
- uint8 padding[12]; /* 12 bytes zeros */
- uint32 unknown_1; /* 0x8000 0000 */
- uint32 unknown_2; /* 0x0000 0000 */
-
-} SAM_UNK_INFO_1;
-
typedef struct sam_unknown_ctr_info
{
union
{
- SAM_UNK_INFO_1 inf1;
SAM_UNK_INFO_2 inf2;
- SAM_UNK_INFO_3 inf3;
- SAM_UNK_INFO_6 inf6;
- SAM_UNK_INFO_7 inf7;
} info;
@@ -548,28 +405,6 @@ typedef struct r_samr_query_domain_info
} SAMR_R_QUERY_DOMAIN_INFO;
-/* SAMR_Q_LOOKUP_DOMAIN - obtain SID for a local domain */
-typedef struct q_samr_lookup_domain_info
-{
- POLICY_HND connect_pol;
-
- UNIHDR hdr_domain;
- UNISTR2 uni_domain;
-
-} SAMR_Q_LOOKUP_DOMAIN;
-
-
-/* SAMR_R_LOOKUP_DOMAIN */
-typedef struct r_samr_lookup_domain_info
-{
- uint32 ptr_sid;
- DOM_SID2 dom_sid;
-
- uint32 status;
-
-} SAMR_R_LOOKUP_DOMAIN;
-
-
/****************************************************************************
SAMR_Q_OPEN_DOMAIN - unknown_0 values seen associated with SIDs:
@@ -581,7 +416,7 @@ SAMR_Q_OPEN_DOMAIN - unknown_0 values seen associated with SIDs:
typedef struct q_samr_open_domain_info
{
POLICY_HND connect_pol; /* policy handle */
- uint32 flags; /* 0x2000 0000; 0x0000 0211; 0x0000 0280; 0x0000 0200 - flags? */
+ uint32 rid; /* 0x2000 0000; 0x0000 0211; 0x0000 0280; 0x0000 0200 - a RID? */
DOM_SID2 dom_sid; /* domain SID */
} SAMR_Q_OPEN_DOMAIN;
@@ -595,6 +430,7 @@ typedef struct r_samr_open_domain_info
} SAMR_R_OPEN_DOMAIN;
+
#define MAX_SAM_ENTRIES 250
typedef struct samr_entry_info
@@ -604,43 +440,13 @@ typedef struct samr_entry_info
} SAM_ENTRY;
-
-/* SAMR_Q_ENUM_DOMAINS - SAM rids and names */
-typedef struct q_samr_enum_domains_info
-{
- POLICY_HND pol; /* policy handle */
-
- uint32 start_idx; /* enumeration handle */
- uint32 max_size; /* 0x0000 ffff */
-
-} SAMR_Q_ENUM_DOMAINS;
-
-/* SAMR_R_ENUM_DOMAINS - SAM rids and Domain names */
-typedef struct r_samr_enum_domains_info
-{
- uint32 next_idx; /* next starting index required for enum */
- uint32 ptr_entries1;
-
- uint32 num_entries2;
- uint32 ptr_entries2;
-
- uint32 num_entries3;
-
- SAM_ENTRY *sam;
- UNISTR2 *uni_dom_name;
-
- uint32 num_entries4;
-
- uint32 status;
-
-} SAMR_R_ENUM_DOMAINS;
-
/* SAMR_Q_ENUM_DOM_USERS - SAM rids and names */
typedef struct q_samr_enum_dom_users_info
{
POLICY_HND pol; /* policy handle */
- uint32 start_idx; /* number of values (0 indicates unlimited?) */
+ uint16 req_num_entries; /* number of values (0 indicates unlimited?) */
+ uint16 unknown_0; /* enumeration context? */
uint16 acb_mask; /* 0x0000 indicates all */
uint16 unknown_1; /* 0x0000 */
@@ -652,16 +458,17 @@ typedef struct q_samr_enum_dom_users_info
/* SAMR_R_ENUM_DOM_USERS - SAM rids and names */
typedef struct r_samr_enum_dom_users_info
{
- uint32 next_idx; /* next starting index required for enum */
- uint32 ptr_entries1;
+ uint16 total_num_entries; /* number of entries that match without the acb mask */
+ uint16 unknown_0; /* same as unknown_0 (enum context?) in request */
+ uint32 ptr_entries1; /* actual number of entries to follow, having masked some out */
uint32 num_entries2;
uint32 ptr_entries2;
uint32 num_entries3;
- SAM_ENTRY *sam;
- UNISTR2 *uni_acct_name;
+ SAM_ENTRY sam[MAX_SAM_ENTRIES];
+ UNISTR2 uni_acct_name[MAX_SAM_ENTRIES];
uint32 num_entries4;
@@ -670,15 +477,37 @@ typedef struct r_samr_enum_dom_users_info
} SAMR_R_ENUM_DOM_USERS;
+typedef struct samr_entry_info3
+{
+ uint32 grp_idx;
+
+ uint32 rid_grp;
+ uint32 attr;
+
+ UNIHDR hdr_grp_name;
+ UNIHDR hdr_grp_desc;
+
+} SAM_ENTRY3;
+
+typedef struct samr_str_entry_info3
+{
+ UNISTR2 uni_grp_name;
+ UNISTR2 uni_grp_desc;
+
+} SAM_STR3;
+
/* SAMR_Q_ENUM_DOM_GROUPS - SAM rids and names */
typedef struct q_samr_enum_dom_groups_info
{
POLICY_HND pol; /* policy handle */
- /* this is possibly an enumeration context handle... */
- uint32 start_idx; /* 0x0000 0000 */
+ /* these are possibly an enumeration context handle... */
+ uint16 switch_level; /* 0x0003 */
+ uint16 unknown_0; /* 0x0000 */
+ uint32 start_idx; /* presumably the start enumeration index */
+ uint32 unknown_1; /* 0x0000 07d0 */
- uint32 max_size; /* 0x0000 ffff */
+ uint32 max_size; /* 0x0000 7fff */
} SAMR_Q_ENUM_DOM_GROUPS;
@@ -686,50 +515,49 @@ typedef struct q_samr_enum_dom_groups_info
/* SAMR_R_ENUM_DOM_GROUPS - SAM rids and names */
typedef struct r_samr_enum_dom_groups_info
{
- uint32 next_idx;
- uint32 ptr_entries1;
-
- uint32 num_entries2;
- uint32 ptr_entries2;
+ uint32 unknown_0; /* 0x0000 0492 or 0x0000 00be */
+ uint32 unknown_1; /* 0x0000 049a or 0x0000 00be */
+ uint32 switch_level; /* 0x0000 0003 */
- uint32 num_entries3;
+ uint32 num_entries;
+ uint32 ptr_entries;
- SAM_ENTRY *sam;
- UNISTR2 *uni_grp_name;
+ uint32 num_entries2;
- uint32 num_entries4;
+ SAM_ENTRY3 sam[MAX_SAM_ENTRIES];
+ SAM_STR3 str[MAX_SAM_ENTRIES];
uint32 status;
} SAMR_R_ENUM_DOM_GROUPS;
+
/* SAMR_Q_ENUM_DOM_ALIASES - SAM rids and names */
typedef struct q_samr_enum_dom_aliases_info
{
POLICY_HND pol; /* policy handle */
/* this is possibly an enumeration context handle... */
- uint32 start_idx; /* 0x0000 0000 */
+ uint32 unknown_0; /* 0x0000 0000 */
uint32 max_size; /* 0x0000 ffff */
} SAMR_Q_ENUM_DOM_ALIASES;
-
/* SAMR_R_ENUM_DOM_ALIASES - SAM rids and names */
typedef struct r_samr_enum_dom_aliases_info
{
- uint32 next_idx;
- uint32 ptr_entries1;
+ uint32 num_entries;
+ uint32 ptr_entries;
uint32 num_entries2;
uint32 ptr_entries2;
uint32 num_entries3;
- SAM_ENTRY *sam;
- UNISTR2 *uni_grp_name;
+ SAM_ENTRY sam[MAX_SAM_ENTRIES];
+ UNISTR2 uni_grp_name[MAX_SAM_ENTRIES];
uint32 num_entries4;
@@ -738,7 +566,20 @@ typedef struct r_samr_enum_dom_aliases_info
} SAMR_R_ENUM_DOM_ALIASES;
-/* -- Level 1 Display Info - User Information -- */
+
+/* SAMR_Q_QUERY_DISPINFO - SAM rids, names and descriptions */
+typedef struct q_samr_query_disp_info
+{
+ POLICY_HND pol; /* policy handle */
+
+ uint16 switch_level; /* 0x0001 and 0x0002 seen */
+ uint16 unknown_0; /* 0x0000 and 0x2000 seen */
+ uint32 start_idx; /* presumably the start enumeration index */
+ uint32 unknown_1; /* 0x0000 07d0, 0x0000 0400 and 0x0000 0200 seen */
+
+ uint32 max_size; /* 0x0000 7fff, 0x0000 7ffe and 0x0000 3fff seen*/
+
+} SAMR_Q_QUERY_DISPINFO;
typedef struct samr_entry_info1
{
@@ -764,13 +605,15 @@ typedef struct samr_str_entry_info1
typedef struct sam_entry_info_1
{
+ uint32 num_entries;
+ uint32 ptr_entries;
+ uint32 num_entries2;
+
SAM_ENTRY1 sam[MAX_SAM_ENTRIES];
SAM_STR1 str[MAX_SAM_ENTRIES];
-} SAM_DISPINFO_1;
-
-/* -- Level 2 Display Info - Trust Account Information -- */
+} SAM_INFO_1;
typedef struct samr_entry_info2
{
@@ -794,295 +637,45 @@ typedef struct samr_str_entry_info2
typedef struct sam_entry_info_2
{
+ uint32 num_entries;
+ uint32 ptr_entries;
+ uint32 num_entries2;
+
SAM_ENTRY2 sam[MAX_SAM_ENTRIES];
SAM_STR2 str[MAX_SAM_ENTRIES];
-} SAM_DISPINFO_2;
-
-
-/* -- Level 3 Display Info - Domain Group Information -- */
-
-typedef struct samr_entry_info3
-{
- uint32 grp_idx;
-
- uint32 rid_grp;
- uint32 attr; /* SE_GROUP_xxx, usually 7 */
-
- UNIHDR hdr_grp_name;
- UNIHDR hdr_grp_desc;
-
-} SAM_ENTRY3;
-
-typedef struct samr_str_entry_info3
-{
- UNISTR2 uni_grp_name;
- UNISTR2 uni_grp_desc;
-
-} SAM_STR3;
-
-typedef struct sam_entry_info_3
-{
- SAM_ENTRY3 sam[MAX_SAM_ENTRIES];
- SAM_STR3 str[MAX_SAM_ENTRIES];
-
-} SAM_DISPINFO_3;
-
-
-/* -- Level 4 Display Info - User List (ASCII) -- */
-
-typedef struct samr_entry_info4
-{
- uint32 user_idx;
- STRHDR hdr_acct_name;
-
-} SAM_ENTRY4;
-
-typedef struct samr_str_entry_info4
-{
- STRING2 acct_name;
-
-} SAM_STR4;
-
-typedef struct sam_entry_info_4
-{
- SAM_ENTRY4 sam[MAX_SAM_ENTRIES];
- SAM_STR4 str[MAX_SAM_ENTRIES];
-
-} SAM_DISPINFO_4;
-
-
-/* -- Level 5 Display Info - Group List (ASCII) -- */
-
-typedef struct samr_entry_info5
-{
- uint32 grp_idx;
- STRHDR hdr_grp_name;
-
-} SAM_ENTRY5;
-
-typedef struct samr_str_entry_info5
-{
- STRING2 grp_name;
-
-} SAM_STR5;
+} SAM_INFO_2;
-typedef struct sam_entry_info_5
-{
- SAM_ENTRY5 sam[MAX_SAM_ENTRIES];
- SAM_STR5 str[MAX_SAM_ENTRIES];
-
-} SAM_DISPINFO_5;
-
-
-typedef struct sam_dispinfo_ctr_info
+typedef struct sam_info_ctr_info
{
union
{
- SAM_DISPINFO_1 *info1; /* users/names/descriptions */
- SAM_DISPINFO_2 *info2; /* trust accounts */
- SAM_DISPINFO_3 *info3; /* domain groups/descriptions */
- SAM_DISPINFO_4 *info4; /* user list (ASCII) - used by Win95 */
- SAM_DISPINFO_5 *info5; /* group list (ASCII) */
+ SAM_INFO_1 *info1; /* server info */
+ SAM_INFO_2 *info2; /* user info */
void *info; /* allows assignment without typecasting, */
} sam;
-} SAM_DISPINFO_CTR;
+} SAM_INFO_CTR;
-
-/* SAMR_Q_QUERY_DISPINFO - SAM rids, names and descriptions */
-typedef struct q_samr_query_disp_info
-{
- POLICY_HND domain_pol;
-
- uint16 switch_level; /* see SAM_DISPINFO_CTR above */
- /* align */
-
- uint32 start_idx; /* start enumeration index */
- uint32 max_entries; /* maximum number of entries to return */
- uint32 max_size; /* recommended data size; if exceeded server
- should return STATUS_MORE_ENTRIES */
-
-} SAMR_Q_QUERY_DISPINFO;
-
-
-/* SAMR_R_QUERY_DISPINFO */
+/* SAMR_R_QUERY_DISPINFO - SAM rids, names and descriptions */
typedef struct r_samr_query_dispinfo_info
{
- uint32 total_size; /* total data size for all matching entries
- (0 = uncalculated) */
- uint32 data_size; /* actual data size returned = size of SAM_ENTRY
- structures + total length of strings */
-
- uint16 switch_level; /* see SAM_DISPINFO_CTR above */
- /* align */
+ uint32 unknown_0; /* container length? 0x0000 0492 or 0x0000 00be */
+ uint32 unknown_1; /* container length? 0x0000 049a or 0x0000 00be */
+ uint16 switch_level; /* 0x0001 or 0x0002 */
+ /*uint8 pad[2] */
- uint32 num_entries; /* number of entries returned */
- uint32 ptr_entries;
- uint32 num_entries2;
-
- SAM_DISPINFO_CTR *ctr;
+ SAM_INFO_CTR *ctr;
uint32 status;
} SAMR_R_QUERY_DISPINFO;
-/* SAMR_Q_DELETE_DOM_GROUP - delete domain group */
-typedef struct q_samr_delete_dom_group_info
-{
- POLICY_HND group_pol; /* policy handle */
-
-} SAMR_Q_DELETE_DOM_GROUP;
-
-
-/* SAMR_R_DELETE_DOM_GROUP - delete domain group */
-typedef struct r_samr_delete_dom_group_info
-{
- POLICY_HND pol; /* policy handle */
- uint32 status; /* return status */
-
-} SAMR_R_DELETE_DOM_GROUP;
-
-
-/* SAMR_Q_CREATE_DOM_GROUP - SAM create group */
-typedef struct q_samr_create_dom_group_info
-{
- POLICY_HND pol; /* policy handle */
-
- UNIHDR hdr_acct_desc;
- UNISTR2 uni_acct_desc;
-
- uint16 unknown_1; /* 0x0002 */
- uint16 unknown_2; /* 0x0001 */
-
-} SAMR_Q_CREATE_DOM_GROUP;
-
-/* SAMR_R_CREATE_DOM_GROUP - SAM create group */
-typedef struct r_samr_create_dom_group_info
-{
- POLICY_HND pol; /* policy handle */
-
- uint32 rid;
- uint32 status;
-
-} SAMR_R_CREATE_DOM_GROUP;
-
-/* SAMR_Q_QUERY_GROUPINFO - SAM Group Info */
-typedef struct q_samr_query_group_info
-{
- POLICY_HND pol; /* policy handle */
-
- uint16 switch_level; /* 0x0001 seen */
-
-} SAMR_Q_QUERY_GROUPINFO;
-
-typedef struct samr_group_info1
-{
- UNIHDR hdr_acct_name;
-
- uint32 unknown_1; /* 0x0000 0003 - number of group members? */
- uint32 num_members; /* 0x0000 0001 - number of group members? */
-
- UNIHDR hdr_acct_desc;
-
- UNISTR2 uni_acct_name;
- UNISTR2 uni_acct_desc;
-
-} GROUP_INFO1;
-
-typedef struct samr_group_info4
-{
- UNIHDR hdr_acct_desc;
- UNISTR2 uni_acct_desc;
-
-} GROUP_INFO4;
-
-/* GROUP_INFO_CTR */
-typedef struct group_info_ctr
-{
- uint16 switch_value1;
- uint16 switch_value2;
-
- union
- {
- GROUP_INFO4 info4;
- GROUP_INFO1 info1;
-
- } group;
-
-} GROUP_INFO_CTR;
-
-/* SAMR_R_QUERY_GROUPINFO - SAM Group Info */
-typedef struct r_samr_query_groupinfo_info
-{
- uint32 ptr;
- GROUP_INFO_CTR *ctr;
-
- uint32 status;
-
-} SAMR_R_QUERY_GROUPINFO;
-
-
-/* SAMR_Q_SET_GROUPINFO - SAM Group Info */
-typedef struct q_samr_set_group_info
-{
- POLICY_HND pol; /* policy handle */
- GROUP_INFO_CTR *ctr;
-
-} SAMR_Q_SET_GROUPINFO;
-
-/* SAMR_R_SET_GROUPINFO - SAM Group Info */
-typedef struct r_samr_set_group_info
-{
- uint32 status;
-
-} SAMR_R_SET_GROUPINFO;
-
-
-/* SAMR_Q_DELETE_DOM_ALIAS - delete domain alias */
-typedef struct q_samr_delete_dom_alias_info
-{
- POLICY_HND alias_pol; /* policy handle */
-
-} SAMR_Q_DELETE_DOM_ALIAS;
-
-
-/* SAMR_R_DELETE_DOM_ALIAS - delete domain alias */
-typedef struct r_samr_delete_dom_alias_info
-{
- POLICY_HND pol; /* policy handle */
- uint32 status; /* return status */
-
-} SAMR_R_DELETE_DOM_ALIAS;
-
-
-/* SAMR_Q_CREATE_DOM_ALIAS - SAM create alias */
-typedef struct q_samr_create_dom_alias_info
-{
- POLICY_HND dom_pol; /* policy handle */
-
- UNIHDR hdr_acct_desc;
- UNISTR2 uni_acct_desc;
-
- uint16 unknown_1; /* 0x001f */
- uint16 unknown_2; /* 0x000f */
-
-} SAMR_Q_CREATE_DOM_ALIAS;
-
-/* SAMR_R_CREATE_DOM_ALIAS - SAM create alias */
-typedef struct r_samr_create_dom_alias_info
-{
- POLICY_HND alias_pol; /* policy handle */
-
- uint32 rid;
- uint32 status;
-
-} SAMR_R_CREATE_DOM_ALIAS;
/* SAMR_Q_QUERY_ALIASINFO - SAM Alias Info */
-typedef struct q_samr_query_alias_info
+typedef struct q_samr_enum_alias_info
{
POLICY_HND pol; /* policy handle */
@@ -1097,11 +690,12 @@ typedef struct samr_alias_info3
} ALIAS_INFO3;
-/* ALIAS_INFO_CTR */
-typedef struct alias_info_ctr
+/* SAMR_R_QUERY_ALIASINFO - SAM rids, names and descriptions */
+typedef struct r_samr_query_aliasinfo_info
{
- uint16 switch_value1;
- uint16 switch_value2;
+ uint32 ptr;
+ uint16 switch_value; /* 0x0003 */
+ /* uint8[2] padding */
union
{
@@ -1109,35 +703,11 @@ typedef struct alias_info_ctr
} alias;
-} ALIAS_INFO_CTR;
-
-/* SAMR_R_QUERY_ALIASINFO - SAM alias info */
-typedef struct r_samr_query_aliasinfo_info
-{
- uint32 ptr;
- ALIAS_INFO_CTR *ctr;
-
uint32 status;
} SAMR_R_QUERY_ALIASINFO;
-/* SAMR_Q_SET_ALIASINFO - SAM Alias Info */
-typedef struct q_samr_set_alias_info
-{
- POLICY_HND alias_pol; /* policy handle */
- ALIAS_INFO_CTR *ctr;
-
-} SAMR_Q_SET_ALIASINFO;
-
-/* SAMR_R_SET_ALIASINFO - SAM alias info */
-typedef struct r_samr_set_aliasinfo_info
-{
- uint32 status;
-
-} SAMR_R_SET_ALIASINFO;
-
-
/* SAMR_Q_QUERY_USERGROUPS - */
typedef struct q_samr_query_usergroup_info
{
@@ -1160,54 +730,6 @@ typedef struct r_samr_query_usergroup_info
} SAMR_R_QUERY_USERGROUPS;
-/* SAMR_Q_SET_USERINFO2 - set sam info */
-typedef struct q_samr_set_user_info2
-{
- POLICY_HND pol; /* policy handle associated with user */
- uint16 switch_value; /* 0x0010 */
- uint16 switch_value2; /* 0x0010 */
-
- union
- {
- SAM_USER_INFO_16 *id16; /* auth-level 0x10 */
- void* id; /* to make typecasting easy */
-
- } info;
-
-} SAMR_Q_SET_USERINFO2;
-
-/* SAMR_R_SET_USERINFO2 - set sam info */
-typedef struct r_samr_set_user_info2
-{
- uint32 status; /* return status */
-
-} SAMR_R_SET_USERINFO2;
-
-/* SAMR_Q_SET_USERINFO - set sam info */
-typedef struct q_samr_set_user_info
-{
- POLICY_HND pol; /* policy handle associated with user */
- uint16 switch_value; /* 0x0017 */
- uint16 switch_value2; /* 0x0017 */
-
- union
- {
- SAM_USER_INFO_23 *id23; /* auth-level 0x17 */
- SAM_USER_INFO_24 *id24; /* auth-level 0x18 */
- void* id; /* to make typecasting easy */
-
- } info;
-
-} SAMR_Q_SET_USERINFO;
-
-/* SAMR_R_SET_USERINFO - set sam info */
-typedef struct r_samr_set_user_info
-{
- uint32 status; /* return status */
-
-} SAMR_R_SET_USERINFO;
-
-
/* SAMR_Q_QUERY_USERINFO - probably a get sam info */
typedef struct q_samr_query_user_info
{
@@ -1228,8 +750,6 @@ typedef struct r_samr_query_user_info
SAM_USER_INFO_10 *id10; /* auth-level 0x10 */
SAM_USER_INFO_11 *id11; /* auth-level 0x11 */
SAM_USER_INFO_21 *id21; /* auth-level 21 */
- SAM_USER_INFO_23 *id23; /* auth-level 0x17 */
- SAM_USER_INFO_24 *id24; /* auth-level 0x18 */
void* id; /* to make typecasting easy */
} info;
@@ -1240,40 +760,39 @@ typedef struct r_samr_query_user_info
/****************************************************************************
-SAMR_Q_QUERY_USERALIASES - do a conversion from name to RID.
+SAMR_Q_LOOKUP_IDS - do a conversion from name to RID.
the policy handle allocated by an "samr open secret" call is associated
with a SID. this policy handle is what is queried here, *not* the SID
itself. the response to the lookup rids is relative to this SID.
*****************************************************************************/
-/* SAMR_Q_QUERY_USERALIASES */
-typedef struct q_samr_query_useraliases_info
+/* SAMR_Q_LOOKUP_IDS */
+typedef struct q_samr_lookup_ids_info
{
- POLICY_HND pol; /* policy handle */
+ POLICY_HND pol; /* policy handle */
uint32 num_sids1; /* number of rids being looked up */
uint32 ptr; /* buffer pointer */
uint32 num_sids2; /* number of rids being looked up */
- uint32 *ptr_sid; /* pointers to sids to be looked up */
- DOM_SID2 *sid ; /* sids to be looked up. */
+ uint32 ptr_sid[MAX_LOOKUP_SIDS]; /* pointers to sids to be looked up */
+ DOM_SID2 sid [MAX_LOOKUP_SIDS]; /* sids to be looked up. */
-} SAMR_Q_QUERY_USERALIASES;
+} SAMR_Q_LOOKUP_IDS;
-/* SAMR_R_QUERY_USERALIASES */
-typedef struct r_samr_query_useraliases_info
+/* SAMR_R_LOOKUP_IDS */
+typedef struct r_samr_lookup_ids_info
{
uint32 num_entries;
uint32 ptr; /* undocumented buffer pointer */
uint32 num_entries2;
- uint32 *rid; /* domain RIDs being looked up */
+ uint32 rid[MAX_LOOKUP_SIDS]; /* domain RIDs being looked up */
uint32 status; /* return code */
-} SAMR_R_QUERY_USERALIASES;
-
+} SAMR_R_LOOKUP_IDS;
/****************************************************************************
SAMR_Q_LOOKUP_NAMES - do a conversion from Names to RIDs+types.
@@ -1281,7 +800,7 @@ SAMR_Q_LOOKUP_NAMES - do a conversion from Names to RIDs+types.
/* SAMR_Q_LOOKUP_NAMES */
typedef struct q_samr_lookup_names_info
{
- POLICY_HND pol; /* policy handle */
+ POLICY_HND pol; /* policy handle */
uint32 num_names1; /* number of names being looked up */
uint32 flags; /* 0x0000 03e8 - unknown */
@@ -1293,7 +812,6 @@ typedef struct q_samr_lookup_names_info
} SAMR_Q_LOOKUP_NAMES;
-
/* SAMR_R_LOOKUP_NAMES */
typedef struct r_samr_lookup_names_info
{
@@ -1313,56 +831,57 @@ typedef struct r_samr_lookup_names_info
} SAMR_R_LOOKUP_NAMES;
-
/****************************************************************************
-SAMR_Q_LOOKUP_RIDS - do a conversion from RID groups to something.
+SAMR_Q_UNKNOWN_12 - do a conversion from RID groups to something.
called to resolve domain RID groups.
*****************************************************************************/
-/* SAMR_Q_LOOKUP_RIDS */
-typedef struct q_samr_lookup_rids_info
+/* SAMR_Q_UNKNOWN_12 */
+typedef struct q_samr_unknown_12_info
{
- POLICY_HND pol; /* policy handle */
+ POLICY_HND pol; /* policy handle */
- uint32 num_rids1; /* number of rids being looked up */
- uint32 flags; /* 0x0000 03e8 - unknown */
+ uint32 num_gids1; /* number of rids being looked up */
+ uint32 rid; /* 0x0000 03e8 - RID of the server doing the query? */
uint32 ptr; /* 0x0000 0000 - 32 bit unknown */
- uint32 num_rids2; /* number of rids being looked up */
+ uint32 num_gids2; /* number of rids being looked up */
- uint32 *rid; /* domain RIDs being looked up */
+ uint32 gid[MAX_LOOKUP_SIDS]; /* domain RIDs being looked up */
-} SAMR_Q_LOOKUP_RIDS;
+} SAMR_Q_UNKNOWN_12;
/****************************************************************************
-SAMR_R_LOOKUP_RIDS - do a conversion from group RID to names
+SAMR_R_UNKNOWN_12 - do a conversion from group RID to names
*****************************************************************************/
-/* SAMR_R_LOOKUP_RIDS */
-typedef struct r_samr_lookup_rids_info
+/* SAMR_R_UNKNOWN_12 */
+typedef struct r_samr_unknown_12_info
{
- uint32 num_names1; /* number of aliases being looked up */
- uint32 ptr_names; /* pointer to aliases */
- uint32 num_names2; /* number of aliases being looked up */
+ POLICY_HND pol; /* policy handle */
- UNIHDR *hdr_name; /* unicode account name header */
- UNISTR2 *uni_name; /* unicode account name string */
+ uint32 num_aliases1; /* number of aliases being looked up */
+ uint32 ptr_aliases; /* pointer to aliases */
+ uint32 num_aliases2; /* number of aliases being looked up */
- uint32 num_types1; /* number of users in aliases being looked up */
- uint32 ptr_types; /* pointer to users in aliases */
- uint32 num_types2; /* number of users in aliases being looked up */
+ UNIHDR hdr_als_name[MAX_LOOKUP_SIDS]; /* unicode account name header */
+ UNISTR2 uni_als_name[MAX_LOOKUP_SIDS]; /* unicode account name string */
+
+ uint32 num_als_usrs1; /* number of users in aliases being looked up */
+ uint32 ptr_als_usrs; /* pointer to users in aliases */
+ uint32 num_als_usrs2; /* number of users in aliases being looked up */
- uint32 *type; /* SID_ENUM type */
+ uint32 num_als_usrs[MAX_LOOKUP_SIDS]; /* number of users per group */
uint32 status;
-} SAMR_R_LOOKUP_RIDS;
+} SAMR_R_UNKNOWN_12;
/* SAMR_Q_OPEN_USER - probably an open */
typedef struct q_samr_open_user_info
{
- POLICY_HND domain_pol; /* policy handle */
+ POLICY_HND domain_pol; /* policy handle */
uint32 unknown_0; /* 32 bit unknown - 0x02011b */
uint32 user_rid; /* user RID */
@@ -1372,187 +891,64 @@ typedef struct q_samr_open_user_info
/* SAMR_R_OPEN_USER - probably an open */
typedef struct r_samr_open_user_info
{
- POLICY_HND user_pol; /* policy handle associated with unknown id */
+ POLICY_HND user_pol; /* policy handle associated with unknown id */
uint32 status; /* return status */
} SAMR_R_OPEN_USER;
-/* SAMR_Q_CREATE_USER - probably a create */
-typedef struct q_samr_create_user_info
+/* SAMR_Q_UNKNOWN_13 - probably an open alias in domain */
+typedef struct q_samr_unknown_13_info
{
- POLICY_HND domain_pol; /* policy handle */
+ POLICY_HND alias_pol; /* policy handle */
- UNIHDR hdr_name; /* unicode account name header */
- UNISTR2 uni_name; /* unicode account name */
+ uint16 unknown_1; /* 16 bit unknown - 0x0200 */
+ uint16 unknown_2; /* 16 bit unknown - 0x0000 */
- uint16 acb_info; /* account control info */
- uint32 unknown_1; /* 0xe005 00b0 */
+} SAMR_Q_UNKNOWN_13;
-} SAMR_Q_CREATE_USER;
-
-/* SAMR_R_CREATE_USER - probably a create */
-typedef struct r_samr_create_user_info
+/* SAMR_Q_UNKNOWN_21 - probably an open group in domain */
+typedef struct q_samr_unknown_21_info
{
- POLICY_HND user_pol; /* policy handle associated with user */
+ POLICY_HND group_pol; /* policy handle */
- uint32 unknown_0; /* 0x0007 03ff */
- uint32 user_rid; /* user RID */
- uint32 status; /* return status */
-
-} SAMR_R_CREATE_USER;
+ uint16 unknown_1; /* 16 bit unknown - 0x0477 */
+ uint16 unknown_2; /* 16 bit unknown - 0x0000 */
+} SAMR_Q_UNKNOWN_21;
-/* SAMR_Q_QUERY_GROUPMEM - query group members */
-typedef struct q_samr_query_groupmem_info
+/* SAMR_Q_UNKNOWN_32 - probably a "create SAM entry" */
+typedef struct q_samr_unknown_32_info
{
- POLICY_HND group_pol; /* policy handle */
-
-} SAMR_Q_QUERY_GROUPMEM;
+ POLICY_HND pol; /* policy handle */
+ UNIHDR hdr_mach_acct; /* unicode machine account name header */
+ UNISTR2 uni_mach_acct; /* unicode machine account name */
-/* SAMR_R_QUERY_GROUPMEM - query group members */
-typedef struct r_samr_query_groupmem_info
-{
- uint32 ptr;
- uint32 num_entries;
-
- uint32 ptr_rids;
- uint32 ptr_attrs;
-
- uint32 num_rids;
- uint32 *rid;
-
- uint32 num_attrs;
- uint32 *attr;
-
- uint32 status;
-
-} SAMR_R_QUERY_GROUPMEM;
-
-
-/* SAMR_Q_DEL_GROUPMEM - probably an del group member */
-typedef struct q_samr_del_group_mem_info
-{
- POLICY_HND pol; /* policy handle */
-
- uint32 rid; /* rid */
+ uint32 acct_ctrl; /* 32 bit ACB_XXXX */
+ uint16 unknown_1; /* 16 bit unknown - 0x00B0 */
+ uint16 unknown_2; /* 16 bit unknown - 0xe005 */
-} SAMR_Q_DEL_GROUPMEM;
+} SAMR_Q_UNKNOWN_32;
-/* SAMR_R_DEL_GROUPMEM - probably an del group member */
-typedef struct r_samr_del_group_mem_info
+/* SAMR_R_UNKNOWN_32 - probably a "create SAM entry" */
+typedef struct r_samr_unknown_32_info
{
- uint32 status; /* return status */
-
-} SAMR_R_DEL_GROUPMEM;
-
-
-/* SAMR_Q_ADD_GROUPMEM - probably an add group member */
-typedef struct q_samr_add_group_mem_info
-{
- POLICY_HND pol; /* policy handle */
-
- uint32 rid; /* rid */
- uint32 unknown; /* 0x0000 0005 */
-
-} SAMR_Q_ADD_GROUPMEM;
-
-
-/* SAMR_R_ADD_GROUPMEM - probably an add group member */
-typedef struct r_samr_add_group_mem_info
-{
- uint32 status; /* return status */
-
-} SAMR_R_ADD_GROUPMEM;
-
-
-/* SAMR_Q_OPEN_GROUP - probably an open */
-typedef struct q_samr_open_group_info
-{
- POLICY_HND domain_pol; /* policy handle */
- uint32 unknown; /* 0x0000 0001, 0x0000 0003, 0x0000 001f */
- uint32 rid_group; /* rid */
-
-} SAMR_Q_OPEN_GROUP;
-
-
-/* SAMR_R_OPEN_GROUP - probably an open */
-typedef struct r_samr_open_group_info
-{
- POLICY_HND pol; /* policy handle */
- uint32 status; /* return status */
-
-} SAMR_R_OPEN_GROUP;
-
-
-/* SAMR_Q_QUERY_ALIASMEM - query alias members */
-typedef struct q_samr_query_aliasmem_info
-{
- POLICY_HND alias_pol; /* policy handle */
-
-} SAMR_Q_QUERY_ALIASMEM;
-
-
-/* SAMR_R_QUERY_ALIASMEM - query alias members */
-typedef struct r_samr_query_aliasmem_info
-{
- uint32 num_sids;
- uint32 ptr;
- uint32 num_sids1;
-
- DOM_SID2 *sid;
-
- uint32 status;
-
-} SAMR_R_QUERY_ALIASMEM;
-
-
-/* SAMR_Q_ADD_ALIASMEM - add alias member */
-typedef struct q_samr_add_alias_mem_info
-{
- POLICY_HND alias_pol; /* policy handle */
-
- DOM_SID2 sid; /* member sid to be added to the alias */
-
-} SAMR_Q_ADD_ALIASMEM;
-
-
-/* SAMR_R_ADD_ALIASMEM - add alias member */
-typedef struct r_samr_add_alias_mem_info
-{
- uint32 status; /* return status */
-
-} SAMR_R_ADD_ALIASMEM;
-
-
-/* SAMR_Q_DEL_ALIASMEM - add an add alias member */
-typedef struct q_samr_del_alias_mem_info
-{
- POLICY_HND alias_pol; /* policy handle */
-
- DOM_SID2 sid; /* member sid to be added to alias */
-
-} SAMR_Q_DEL_ALIASMEM;
-
-
-/* SAMR_R_DEL_ALIASMEM - delete alias member */
-typedef struct r_samr_del_alias_mem_info
-{
- uint32 status; /* return status */
+ POLICY_HND pol; /* policy handle */
-} SAMR_R_DEL_ALIASMEM;
+ /* rid4.unknown - fail: 0030 success: 0x03ff */
+ DOM_RID4 rid4; /* rid and attributes */
+ uint32 status; /* return status - fail: 0xC000 0099: user exists */
+} SAMR_R_UNKNOWN_32;
/* SAMR_Q_OPEN_ALIAS - probably an open */
typedef struct q_samr_open_alias_info
{
- POLICY_HND dom_pol;
-
uint32 unknown_0; /* 0x0000 0008 */
uint32 rid_alias; /* rid */
@@ -1621,6 +1017,7 @@ typedef struct r_samr_unknown_38
uint16 unk_1;
uint16 unk_2;
uint16 unk_3;
+ uint32 status; /* return status */
} SAMR_R_UNKNOWN_38;
diff --git a/source3/include/rpc_secdes.h b/source3/include/rpc_secdes.h
index 8a86fc9833..f497c25db6 100644
--- a/source3/include/rpc_secdes.h
+++ b/source3/include/rpc_secdes.h
@@ -88,21 +88,16 @@ typedef struct security_ace_info
} SEC_ACE;
-
-#define MAX_SEC_ACES 16
-
/* SEC_ACL */
typedef struct security_acl_info
{
uint16 revision; /* 0x0002 */
uint16 size; /* size in bytes of the entire ACL structure */
uint32 num_aces; /* number of Access Control Entries */
-
- SEC_ACE *ace;
+ SEC_ACE *ace_list;
} SEC_ACL;
-
/* SEC_DESC */
typedef struct security_descriptor_info
{
diff --git a/source3/include/rpc_srvsvc.h b/source3/include/rpc_srvsvc.h
index 25be11d199..78949a7a7d 100644
--- a/source3/include/rpc_srvsvc.h
+++ b/source3/include/rpc_srvsvc.h
@@ -26,14 +26,14 @@
/* srvsvc pipe */
-#define SRV_NETCONNENUM 0x08
-#define SRV_NETFILEENUM 0x09
-#define SRV_NETSESSENUM 0x0c
-#define SRV_NETSHAREENUM 0x0f
-#define SRV_NETTRANSPORTENUM 0x1a
-#define SRV_NET_SRV_GET_INFO 0x15
-#define SRV_NET_SRV_SET_INFO 0x16
-#define SRV_NET_REMOTE_TOD 0x1c
+#define SRV_NETCONNENUM 0x08
+#define SRV_NETFILEENUM 0x09
+#define SRV_NETSESSENUM 0x0c
+#define SRV_NETSHAREENUM 0x0f
+#define SRV_NET_SHARE_GET_INFO 0x10
+#define SRV_NET_SRV_GET_INFO 0x15
+#define SRV_NET_SRV_SET_INFO 0x16
+#define SRV_NET_REMOTE_TOD 0x1c
/* SESS_INFO_0 (pointers to level 0 session info strings) */
typedef struct ptr_sess_info0
@@ -104,11 +104,11 @@ typedef struct srv_sess_info_ctr_info
uint32 switch_value; /* switch value */
uint32 ptr_sess_ctr; /* pointer to sess info union */
union
- {
+ {
SRV_SESS_INFO_0 info0; /* session info level 0 */
SRV_SESS_INFO_1 info1; /* session info level 1 */
- } sess;
+ } sess;
} SRV_SESS_INFO_CTR;
@@ -122,9 +122,6 @@ typedef struct q_net_sess_enum_info
uint32 ptr_qual_name; /* pointer (to qualifier name) */
UNISTR2 uni_qual_name; /* qualifier name "\\qualifier" */
- uint32 ptr_user_name; /* pointer (to user name) */
- UNISTR2 uni_user_name; /* user name */
-
uint32 sess_level; /* session level */
SRV_SESS_INFO_CTR *ctr;
@@ -210,11 +207,11 @@ typedef struct srv_conn_info_ctr_info
uint32 switch_value; /* switch value */
uint32 ptr_conn_ctr; /* pointer to conn info union */
union
- {
+ {
SRV_CONN_INFO_0 info0; /* connection info level 0 */
SRV_CONN_INFO_1 info1; /* connection info level 1 */
- } conn;
+ } conn;
} SRV_CONN_INFO_CTR;
@@ -251,89 +248,6 @@ typedef struct r_net_conn_enum_info
} SRV_R_NET_CONN_ENUM;
-/* oops - this is going to take up a *massive* amount of stack. */
-/* the UNISTR2s already have 1024 uint16 chars in them... */
-#define MAX_TPRT_ENTRIES 32
-
-/* TPRT_INFO_0 (pointers to level 0 transport info strings) */
-typedef struct ptr_tprt_info0
-{
- uint32 num_vcs; /* number of clients using transport */
- uint32 ptr_trans_name; /* pointer to transport name. */
- uint32 ptr_trans_addr; /* pointer to transport address */
- uint32 trans_addr_len; /* length of transport address */
- uint32 ptr_addr_name; /* pointer to network address name. */
-
-} TPRT_INFO_0;
-
-/* TPRT_INFO_0_STR (level 0 transport info strings) */
-typedef struct str_tprt_info0
-{
- UNISTR2 uni_trans_name; /* unicode string of transport */
- BUFFER4 buf_trans_addr; /* buffer for transport address */
- UNISTR2 uni_addr_name; /* unicode string of network address */
-
-} TPRT_INFO_0_STR;
-
-/* SRV_TPRT_INFO_0 */
-typedef struct srv_tprt_info_0_info
-{
- uint32 num_entries_read; /* EntriesRead */
- uint32 ptr_tprt_info; /* Buffer */
- uint32 num_entries_read2; /* EntriesRead */
-
- TPRT_INFO_0 *info_0; /* transport entry pointers */
- TPRT_INFO_0_STR *info_0_str; /* transport entry strings */
-
-} SRV_TPRT_INFO_0;
-
-/* SRV_TPRT_INFO_CTR */
-typedef struct srv_tprt_info_ctr_info
-{
- uint32 switch_value; /* switch value */
- uint32 ptr_tprt_ctr; /* pointer to tprt info union */
- union
- {
- SRV_TPRT_INFO_0 info0; /* transport info level 0 */
-
- } tprt;
-
-} SRV_TPRT_INFO_CTR;
-
-
-/* SRV_Q_NET_TPRT_ENUM */
-typedef struct q_net_tprt_enum_info
-{
- uint32 ptr_srv_name; /* pointer (to server name) */
- UNISTR2 uni_srv_name; /* server name "\\server" */
-
- uint32 tprt_level; /* transport level */
-
- SRV_TPRT_INFO_CTR *ctr;
-
- uint32 preferred_len; /* preferred maximum length (0xffff ffff) */
- ENUM_HND enum_hnd;
-
-} SRV_Q_NET_TPRT_ENUM;
-
-/* SRV_R_NET_TPRT_ENUM */
-typedef struct r_net_tprt_enum_info
-{
- uint32 tprt_level; /* share level */
-
- SRV_TPRT_INFO_CTR *ctr;
-
- uint32 total_entries; /* total number of entries */
- ENUM_HND enum_hnd;
-
- uint32 status; /* return status */
-
-} SRV_R_NET_TPRT_ENUM;
-
-/* oops - this is going to take up a *massive* amount of stack. */
-/* the UNISTR2s already have 1024 uint16 chars in them... */
-#define MAX_SHARE_ENTRIES 128
-
/* SH_INFO_1 (pointers to level 1 share info strings) */
typedef struct ptr_share_info1
{
@@ -354,12 +268,8 @@ typedef struct str_share_info1
/* SRV_SHARE_INFO_1 */
typedef struct share_info_1_info
{
- uint32 num_entries_read; /* EntriesRead */
- uint32 ptr_share_info; /* Buffer */
- uint32 num_entries_read2; /* EntriesRead */
-
- SH_INFO_1 info_1 [MAX_SHARE_ENTRIES]; /* share entry pointers */
- SH_INFO_1_STR info_1_str[MAX_SHARE_ENTRIES]; /* share entry strings */
+ SH_INFO_1 info_1;
+ SH_INFO_1_STR info_1_str;
} SRV_SHARE_INFO_1;
@@ -390,24 +300,26 @@ typedef struct str_share_info2
/* SRV_SHARE_INFO_2 */
typedef struct share_info_2_info
{
- uint32 num_entries_read; /* EntriesRead */
- uint32 ptr_share_info; /* Buffer */
- uint32 num_entries_read2; /* EntriesRead */
-
- SH_INFO_2 info_2 [MAX_SHARE_ENTRIES]; /* share entry pointers */
- SH_INFO_2_STR info_2_str[MAX_SHARE_ENTRIES]; /* share entry strings */
+ SH_INFO_2 info_2;
+ SH_INFO_2_STR info_2_str;
} SRV_SHARE_INFO_2;
/* SRV_SHARE_INFO_CTR */
-typedef struct srv_share_info_1_info
+typedef struct srv_share_info_ctr_info
{
- uint32 switch_value; /* switch value */
- uint32 ptr_share_ctr; /* pointer to share info union */
- union
- {
- SRV_SHARE_INFO_1 info1; /* share info level 1 */
- SRV_SHARE_INFO_2 info2; /* share info level 2 */
+ uint32 info_level;
+ uint32 switch_value;
+ uint32 ptr_share_info;
+
+ uint32 num_entries;
+ uint32 ptr_entries;
+ uint32 num_entries2;
+
+ union {
+ SRV_SHARE_INFO_1 *info1; /* share info level 1 */
+ SRV_SHARE_INFO_2 *info2; /* share info level 2 */
+ void *info;
} share;
@@ -419,9 +331,7 @@ typedef struct q_net_share_enum_info
uint32 ptr_srv_name; /* pointer (to server name?) */
UNISTR2 uni_srv_name; /* server name */
- uint32 share_level; /* share level */
-
- SRV_SHARE_INFO_CTR *ctr; /* share info container */
+ SRV_SHARE_INFO_CTR ctr; /* share info container */
uint32 preferred_len; /* preferred maximum length (0xffff ffff) */
@@ -433,8 +343,7 @@ typedef struct q_net_share_enum_info
/* SRV_R_NET_SHARE_ENUM */
typedef struct r_net_share_enum_info
{
- uint32 share_level; /* share level */
- SRV_SHARE_INFO_CTR *ctr; /* share info container */
+ SRV_SHARE_INFO_CTR ctr; /* share info container */
uint32 total_entries; /* total number of entries */
ENUM_HND enum_hnd;
@@ -443,6 +352,35 @@ typedef struct r_net_share_enum_info
} SRV_R_NET_SHARE_ENUM;
+
+/* SRV_Q_NET_SHARE_GET_INFO */
+typedef struct q_net_share_get_info_info
+{
+ uint32 ptr_srv_name;
+ UNISTR2 uni_srv_name;
+
+ UNISTR2 uni_share_name;
+ uint32 info_level;
+
+} SRV_Q_NET_SHARE_GET_INFO;
+
+/* SRV_R_NET_SHARE_GET_INFO */
+typedef struct r_net_share_get_info_info
+{
+ uint32 switch_value;
+ uint32 ptr_share_ctr;
+
+ union {
+ SRV_SHARE_INFO_1 info1;
+ SRV_SHARE_INFO_2 info2;
+
+ } share;
+
+ uint32 status;
+
+} SRV_R_NET_SHARE_GET_INFO;
+
+
/* FILE_INFO_3 (level 3 file info strings) */
typedef struct file_info3_info
{
@@ -485,10 +423,10 @@ typedef struct srv_file_info_3_info
uint32 switch_value; /* switch value */
uint32 ptr_file_ctr; /* pointer to file info union */
union
- {
+ {
SRV_FILE_INFO_3 info3; /* file info with 0 entries */
- } file;
+ } file;
} SRV_FILE_INFO_CTR;
@@ -502,8 +440,6 @@ typedef struct q_net_file_enum_info
uint32 ptr_qual_name; /* pointer (to qualifier name) */
UNISTR2 uni_qual_name; /* qualifier name "\\qualifier" */
- uint32 file_id; /* file id */
-
uint32 file_level; /* file level */
SRV_FILE_INFO_CTR *ctr;
@@ -573,11 +509,11 @@ typedef struct srv_info_ctr_info
uint32 switch_value; /* switch value */
uint32 ptr_srv_ctr; /* pointer to server info */
union
- {
+ {
SRV_INFO_102 sv102; /* server info level 102 */
SRV_INFO_101 sv101; /* server info level 101 */
- } srv;
+ } srv;
} SRV_INFO_CTR;
@@ -658,4 +594,3 @@ typedef struct r_net_remote_tod
#endif /* _RPC_SRVSVC_H */
-
diff --git a/source3/include/rpcclient.h b/source3/include/rpcclient.h
index 63b8e83a55..dc2be5d2b8 100644
--- a/source3/include/rpcclient.h
+++ b/source3/include/rpcclient.h
@@ -24,8 +24,6 @@
#ifndef _RPCCLIENT_H
#define _RPCCLIENT_H
-#define report fprintf
-
struct tar_client_info
{
int blocksize;
@@ -59,8 +57,14 @@ struct nt_client_info
NET_ID_INFO_CTR ctr;
NET_USER_INFO_3 user_info3;
+ /************** \PIPE\winreg stuff ********************/
+
+ POLICY_HND reg_pol_connect;
+
/************** \PIPE\lsarpc stuff ********************/
+ POLICY_HND lsa_info_pol;
+
/* domain member */
DOM_SID level3_sid;
DOM_SID level5_sid;
@@ -69,34 +73,52 @@ struct nt_client_info
fstring level3_dom;
fstring level5_dom;
+ /************** \PIPE\samr stuff ********************/
+
+ POLICY_HND samr_pol_connect;
+ POLICY_HND samr_pol_open_domain;
+ POLICY_HND samr_pol_open_user;
+
+ struct acct_info *sam;
+ int num_sam_entries;
};
struct client_info
{
struct in_addr dest_ip;
fstring dest_host;
+ fstring query_host;
+ uint8 name_type;
fstring myhostname;
fstring mach_acct;
+ pstring cur_dir;
+ pstring base_dir;
+ pstring file_sel;
+
+ fstring service;
+ fstring share;
+ fstring svc_type;
+
+ time_t newer_than;
+ int archive_level;
+ int dir_total;
+ int put_total_time_ms;
+ int put_total_size;
+ int get_total_time_ms;
+ int get_total_size;
+ int print_mode;
+ BOOL translation;
+ BOOL recurse_dir;
+ BOOL prompt;
+ BOOL lowercase;
+ BOOL abort_mget;
+
struct tar_client_info tar;
struct nt_client_info dom;
-
- BOOL reuse;
};
enum action_type {ACTION_HEADER, ACTION_ENUMERATE, ACTION_FOOTER};
-/****************************************************************************
- This defines the commands supported by this client
- ****************************************************************************/
-struct command_set
-{
- char *name;
- void (*fn)(struct client_info*, int, char*[]);
- char *description;
- char compl_args[2];
-
-};
-
#endif /* _RPCCLIENT_H */
diff --git a/source3/include/smb.h b/source3/include/smb.h
index 43c5dc6bb1..d3d64a2edf 100644
--- a/source3/include/smb.h
+++ b/source3/include/smb.h
@@ -21,29 +21,29 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
-
#ifndef _SMB_H
#define _SMB_H
-#include "md5.h"
-#include "hmacmd5.h"
-
#define BUFFER_SIZE (0xFFFF)
#define SAFETY_MARGIN 1024
#define NMB_PORT 137
#define DGRAM_PORT 138
#define SMB_PORT 139
-#define SMB_PORT2 445
#define False (0)
#define True (1)
-#define Auto (2)
+#define BOOLSTR(b) ((b) ? "Yes" : "No")
+#define BITSETB(ptr,bit) ((((char *)ptr)[0] & (1<<(bit)))!=0)
+#define BITSETW(ptr,bit) ((SVAL(ptr,0) & (1<<(bit)))!=0)
+
+#define IS_BITS_SET_ALL(var,bit) (((var)&(bit))==(bit))
+#define IS_BITS_SET_SOME(var,bit) (((var)&(bit))!=0)
+#define IS_BITS_CLR_ALL(var,bit) (((var)&(bit))==0)
+
+#define PTR_DIFF(p1,p2) ((ptrdiff_t)(((const char *)(p1)) - (const char *)(p2)))
-#ifndef _BOOL
typedef int BOOL;
-#define _BOOL /* So we don't typedef BOOL again in vfs.h */
-#endif
/* limiting size of ipc replies */
#define REALLOC(ptr,size) Realloc(ptr,MAX((size),4*1024))
@@ -57,9 +57,93 @@ typedef int BOOL;
/* how long to wait for secondary SMB packets (milli-seconds) */
#define SMB_SECONDARY_WAIT (60*1000)
-/* Debugging stuff */
+/* -------------------------------------------------------------------------- **
+ * Debugging code. See also debug.c
+ */
-#include <debug.h>
+/* mkproto.awk has trouble with ifdef'd function definitions (it ignores
+ * the #ifdef directive and will read both definitions, thus creating two
+ * diffferent prototype declarations), so we must do these by hand.
+ */
+/* I know the __attribute__ stuff is ugly, but it does ensure we get the
+ arguemnts to DEBUG() right. We have got them wrong too often in the
+ past */
+#ifdef HAVE_STDARG_H
+int Debug1( char *, ... )
+#ifdef __GNUC__
+ __attribute__ ((format (printf, 1, 2)))
+#endif
+;
+BOOL dbgtext( char *, ... )
+#ifdef __GNUC__
+ __attribute__ ((format (printf, 1, 2)))
+#endif
+;
+#else
+int Debug1();
+BOOL dbgtext();
+#endif
+
+/* If we have these macros, we can add additional info to the header. */
+#ifdef HAVE_FILE_MACRO
+#define FILE_MACRO (__FILE__)
+#else
+#define FILE_MACRO ("")
+#endif
+
+#ifdef HAVE_FUNCTION_MACRO
+#define FUNCTION_MACRO (__FUNCTION__)
+#else
+#define FUNCTION_MACRO ("")
+#endif
+
+/* Debugging macros.
+ * DEBUGLVL() - If level is <= the system-wide DEBUGLEVEL then generate a
+ * header using the default macros for file, line, and
+ * function name.
+ * Returns True if the debug level was <= DEBUGLEVEL.
+ * Example usage:
+ * if( DEBUGLVL( 2 ) )
+ * dbgtext( "Some text.\n" );
+ * DEGUG() - Good old DEBUG(). Each call to DEBUG() will generate a new
+ * header *unless* the previous debug output was unterminated
+ * (i.e., no '\n'). See debug.c:dbghdr() for more info.
+ * Example usage:
+ * DEBUG( 2, ("Some text.\n") );
+ * DEBUGADD() - If level <= DEBUGLEVEL, then the text is appended to the
+ * current message (i.e., no header).
+ * Usage:
+ * DEBUGADD( 2, ("Some additional text.\n") );
+ */
+#define DEBUGLVL( level ) \
+ ( (DEBUGLEVEL >= (level)) \
+ && dbghdr( level, FILE_MACRO, FUNCTION_MACRO, (__LINE__) ) )
+
+#if 0
+
+#define DEBUG( level, body ) \
+ ( ( DEBUGLEVEL >= (level) \
+ && dbghdr( level, FILE_MACRO, FUNCTION_MACRO, (__LINE__) ) ) \
+ ? (void)(dbgtext body) : (void)0 )
+
+#define DEBUGADD( level, body ) \
+ ( (DEBUGLEVEL >= (level)) ? (void)(dbgtext body) : (void)0 )
+
+#else
+
+#define DEBUG( level, body ) \
+ (void)( (DEBUGLEVEL >= (level)) \
+ && (dbghdr( level, FILE_MACRO, FUNCTION_MACRO, (__LINE__) )) \
+ && (dbgtext body) )
+
+#define DEBUGADD( level, body ) \
+ (void)( (DEBUGLEVEL >= (level)) && (dbgtext body) )
+
+#endif
+
+/* End Debugging code section.
+ * -------------------------------------------------------------------------- **
+ */
/* this defines the error codes that receive_smb can put in smb_read_error */
#define READ_TIMEOUT 1
@@ -83,6 +167,13 @@ implemented */
#define aDIR (1L<<4)
#define aARCH (1L<<5)
+/* 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)
+
/* deny modes */
#define DENY_DOS 0
#define DENY_ALL 1
@@ -238,32 +329,22 @@ implemented */
#define ERRsharebufexc 36 /* share buffer exceeded */
#define ERRdiskfull 39
-#ifndef _PSTRING
-#define PSTRING_LEN 1024
-#define FSTRING_LEN 128
-typedef char pstring[PSTRING_LEN];
-typedef char fstring[FSTRING_LEN];
-#define _PSTRING
-#endif
+typedef char pstring[1024];
+typedef char fstring[128];
/* pipe string names */
#define PIPE_LANMAN "\\PIPE\\LANMAN"
-#define PIPE_BROWSER "\\PIPE\\browser"
#define PIPE_SRVSVC "\\PIPE\\srvsvc"
#define PIPE_SAMR "\\PIPE\\samr"
#define PIPE_WINREG "\\PIPE\\winreg"
#define PIPE_WKSSVC "\\PIPE\\wkssvc"
#define PIPE_NETLOGON "\\PIPE\\NETLOGON"
-#define PIPE_SVCCTL "\\PIPE\\svcctl"
#define PIPE_NTLSA "\\PIPE\\ntlsa"
#define PIPE_NTSVCS "\\PIPE\\ntsvcs"
#define PIPE_LSASS "\\PIPE\\lsass"
#define PIPE_LSARPC "\\PIPE\\lsarpc"
-#define PIPE_EPMAPPER "\\PIPE\\epmapper"
-#define PIPE_ATSVC "\\PIPE\\atsvc"
-#define PIPE_SPOOLSS "\\PIPE\\spoolss"
-#define PIPE_EVENTLOG "\\PIPE\\EVENTLOG"
+
/* 64 bit time (100usec) since ????? - cifs6.txt, section 3.5, page 30 */
typedef struct nttime_info
@@ -285,21 +366,19 @@ typedef struct nttime_info
#define ACB_SVRTRUST 0x0100 /* 1 = Server trust account */
#define ACB_PWNOEXP 0x0200 /* 1 = User password does not expire */
#define ACB_AUTOLOCK 0x0400 /* 1 = Account auto locked */
-#define ACB_PWLOCK 0x0800 /* 1 = Password is locked and connot be changed remotely */
#define MAX_HOURS_LEN 32
struct sam_passwd
{
- NTTIME logon_time; /* logon time */
- NTTIME logoff_time; /* logoff time */
- NTTIME kickoff_time; /* kickoff time */
- NTTIME pass_last_set_time; /* password last set time */
- NTTIME pass_can_change_time; /* password can change time */
- NTTIME pass_must_change_time; /* password must change time */
-
- char *unix_name; /* unix username string */
- char *nt_name; /* nt username string */
+ time_t logon_time; /* logon time */
+ time_t logoff_time; /* logoff time */
+ time_t kickoff_time; /* kickoff time */
+ time_t pass_last_set_time; /* password last set time */
+ time_t pass_can_change_time; /* password can change time */
+ time_t pass_must_change_time; /* password must change time */
+
+ char *smb_name; /* username string */
char *full_name; /* user's full name string */
char *home_dir; /* home directory string */
char *dir_drive; /* home directory drive string */
@@ -310,8 +389,8 @@ struct sam_passwd
char *unknown_str ; /* don't know what this is, yet. */
char *munged_dial ; /* munged path name and dial-back tel number */
- uid_t unix_uid; /* this is actually the unix uid_t */
- gid_t unix_gid; /* this is actually the unix gid_t */
+ uid_t smb_userid; /* this is actually the unix uid_t */
+ gid_t smb_grpid; /* this is actually the unix gid_t */
uint32 user_rid; /* Primary User ID */
uint32 group_rid; /* Primary Group ID */
@@ -331,11 +410,8 @@ struct sam_passwd
struct smb_passwd
{
- uid_t unix_uid; /* unix userid */
- char *unix_name; /* unix username string */
-
- uint32 user_rid; /* Primary User ID */
- char *nt_name; /* unix username string */
+ uid_t smb_userid; /* this is actually the unix uid_t */
+ char *smb_name; /* username string */
unsigned char *smb_passwd; /* Null if no password */
unsigned char *smb_nt_passwd; /* Null if no password */
@@ -348,16 +424,8 @@ struct smb_passwd
struct sam_disp_info
{
uint32 user_rid; /* Primary User ID */
- char *nt_name; /* username string */
- char *full_name; /* user's full name string */
-};
-
-struct use_info
-{
- BOOL connected;
- char *srv_name;
- char *user_name;
- char *domain;
+ char *smb_name; /* username string */
+ char *full_name; /* user's full name string */
};
#define MAXSUBAUTHS 15 /* max sub authorities in a SID */
@@ -377,28 +445,6 @@ typedef struct sid_info
} DOM_SID;
-typedef struct group_name_info
-{
- char *nt_name;
- char *nt_domain;
- char *unix_name;
-
- DOM_SID sid;
- uint8 type;
- uint32 unix_id;
-
-} DOM_NAME_MAP;
-
-/* map either local aliases, domain groups or builtin aliases */
-typedef enum
-{
- DOM_MAP_LOCAL,
- DOM_MAP_DOMAIN,
- DOM_MAP_USER
-
-} DOM_MAP_TYPE;
-
-
/*** query a local group, get a list of these: shows who is in that group ***/
/* local group member info */
@@ -417,22 +463,9 @@ typedef struct local_grp_info
{
fstring name;
fstring comment;
- uint32 rid; /* alias rid */
} LOCAL_GRP;
-/*** query a domain group, get a list of these: shows who is in that group ***/
-
-/* domain group info */
-typedef struct domain_grp_member_info
-{
- fstring name;
- uint8 attr; /* attributes forced to be set to 0x7: SE_GROUP_xxx */
- uint32 rid; /* rid of domain group member */
- uint8 sid_use; /* usr=1 grp=2 dom=3 alias=4 wkng=5 del=6 inv=7 unk=8 */
-
-} DOMAIN_GRP_MEMBER;
-
/*** enumerate these to get list of domain groups ***/
/* domain group member info */
@@ -445,6 +478,16 @@ typedef struct domain_grp_info
} DOMAIN_GRP;
+/*** query a domain group, get a list of these: shows who is in that group ***/
+
+/* domain group info */
+typedef struct domain_grp_member_info
+{
+ fstring name;
+ uint8 attr; /* attributes forced to be set to 0x7: SE_GROUP_xxx */
+
+} DOMAIN_GRP_MEMBER;
+
/* DOM_CHAL - challenge info */
typedef struct chal_info
{
@@ -496,34 +539,6 @@ typedef struct file_fd_struct
BOOL delete_on_close;
} file_fd_struct;
-typedef struct files_struct
-{
- struct files_struct *next, *prev;
- int fnum;
- struct connection_struct *conn;
- file_fd_struct *fd_ptr;
- SMB_OFF_T pos;
- SMB_OFF_T size;
- mode_t mode;
- uint16 vuid;
- char *mmap_ptr;
- SMB_OFF_T mmap_size;
- write_bmpx_struct *wbmpx_ptr;
- struct timeval open_time;
- int share_mode;
- time_t pending_modtime;
- BOOL open;
- BOOL can_lock;
- BOOL can_read;
- BOOL can_write;
- BOOL print_file;
- BOOL modified;
- BOOL granted_oplock;
- BOOL sent_oplock_break;
- BOOL is_directory;
- char *fsp_name;
-} files_struct;
-
/*
* Structure used to keep directory state information around.
* Used in NT change-notify code.
@@ -546,13 +561,6 @@ typedef struct
BOOL is_wild;
} name_compare_entry;
-/* Include VFS stuff */
-
-#include "vfs.h"
-
-
-#include "vagent.h"
-
typedef struct connection_struct
{
struct connection_struct *next, *prev;
@@ -568,22 +576,19 @@ typedef struct connection_struct
char *dirpath;
char *connectpath;
char *origpath;
- struct vfs_ops vfs_ops; /* Filesystem operations */
- struct vfs_connection_struct *vfs_conn;
-
char *user; /* name of user who *opened* this connection */
-
uid_t uid; /* uid of user who *opened* this connection */
gid_t gid; /* gid of user who *opened* this connection */
+ char client_address[18]; /* String version of client IP address. */
- /* This groups info is valid for the user that *opened* the connection */
- int ngroups;
- gid_t *groups;
-
uint16 vuid; /* vuid of user who *opened* this connection, or UID_FIELD_INVALID */
/* following groups stuff added by ih */
+ /* This groups info is valid for the user that *opened* the connection */
+ int ngroups;
+ gid_t *groups;
+
time_t lastused;
BOOL used;
int num_files_open;
@@ -603,6 +608,57 @@ struct current_user
gid_t *groups;
};
+typedef struct write_cache
+{
+ SMB_OFF_T file_size;
+ SMB_OFF_T offset;
+ size_t alloc_size;
+ size_t data_size;
+ char *data;
+} write_cache;
+
+/*
+ * Reasons for cache flush.
+ */
+
+#define NUM_FLUSH_REASONS 8 /* Keep this in sync with the enum below. */
+enum flush_reason_enum { SEEK_FLUSH, READ_FLUSH, WRITE_FLUSH, READRAW_FLUSH,
+ OPLOCK_RELEASE_FLUSH, CLOSE_FLUSH, SYNC_FLUSH, SIZECHANGE_FLUSH };
+
+typedef struct files_struct
+{
+ struct files_struct *next, *prev;
+ int fnum;
+ connection_struct *conn;
+ file_fd_struct *fd_ptr;
+ SMB_OFF_T pos;
+ SMB_OFF_T size;
+ mode_t mode;
+ uint16 vuid;
+ write_bmpx_struct *wbmpx_ptr;
+ write_cache *wcp;
+ struct timeval open_time;
+ int share_mode;
+ time_t pending_modtime;
+ int oplock_type;
+ int sent_oplock_break;
+ BOOL open;
+ BOOL can_lock;
+ BOOL can_read;
+ BOOL can_write;
+ BOOL print_file;
+ BOOL modified;
+ BOOL is_directory;
+ BOOL directory_delete_on_close;
+ BOOL stat_open;
+ char *fsp_name;
+} files_struct;
+
+/* Defines for the sent_oplock_break field above. */
+#define NO_BREAK_SENT 0
+#define EXCLUSIVE_BREAK_SENT 1
+#define LEVEL_II_BREAK_SENT 2
+
/* Domain controller authentication protocol info */
struct dcinfo
{
@@ -630,7 +686,11 @@ typedef struct
int n_groups;
gid_t *groups;
- uchar user_sess_key[16];
+ int n_sids;
+ int *sids;
+
+ /* per-user authentication information on NT RPCs */
+ struct dcinfo dc;
} user_struct;
@@ -670,7 +730,7 @@ struct server_info_struct
/* used for network interfaces */
struct interface
{
- struct interface *next;
+ struct interface *next, *prev;
struct in_addr ip;
struct in_addr bcast;
struct in_addr nmask;
@@ -679,7 +739,7 @@ struct interface
/* struct returned by get_share_modes */
typedef struct
{
- int pid;
+ pid_t pid;
uint16 op_port;
uint16 op_type;
int share_mode;
@@ -721,60 +781,40 @@ struct shmem_ops {
* to support the following operations.
*/
-struct smb_passdb_ops
-{
- /*
- * Password database operations.
- */
- void *(*startsmbpwent)(BOOL);
- void (*endsmbpwent)(void *);
- SMB_BIG_UINT (*getsmbpwpos)(void *);
- BOOL (*setsmbpwpos)(void *, SMB_BIG_UINT);
-
- /*
- * smb password database query functions.
- */
- struct smb_passwd *(*getsmbpwnam)(const char *);
- struct smb_passwd *(*getsmbpwuid)(uid_t);
- struct smb_passwd *(*getsmbpwent)(void *);
-
- /*
- * smb password database modification functions.
- */
- BOOL (*add_smbpwd_entry)(struct smb_passwd *);
- BOOL (*mod_smbpwd_entry)(struct smb_passwd *, BOOL);
+struct passdb_ops {
+ /*
+ * Password database ops.
+ */
+ void *(*startsmbpwent)(BOOL);
+ void (*endsmbpwent)(void *);
+ SMB_BIG_UINT (*getsmbpwpos)(void *);
+ BOOL (*setsmbpwpos)(void *, SMB_BIG_UINT);
-#if 0
/*
- * password checking functions
+ * smb password database query functions.
*/
- struct smb_passwd *(*smb_password_chal )(const char *username, const char lm_pass[24], const char nt_pass[24], char chal[8]);
- struct smb_passwd *(*smb_password_check )(const char *username, const char lm_hash[16], const char nt_hash[16]);
- struct passwd *(*unix_password_check)(const char *username, const char *pass, int pass_len);
-#endif
-};
+ struct smb_passwd *(*getsmbpwnam)(char *);
+ struct smb_passwd *(*getsmbpwuid)(uid_t);
+ struct smb_passwd *(*getsmbpwrid)(uint32);
+ struct smb_passwd *(*getsmbpwent)(void *);
-/*
- * Each implementation of the password database code needs
- * to support the following operations.
- */
+ /*
+ * smb password database modification functions.
+ */
+ BOOL (*add_smbpwd_entry)(struct smb_passwd *);
+ BOOL (*mod_smbpwd_entry)(struct smb_passwd *, BOOL);
-struct sam_passdb_ops {
/*
- * Password database operations.
+ * Functions that manupulate a struct sam_passwd.
*/
- void *(*startsam21pwent)(BOOL);
- void (*endsam21pwent)(void *);
- SMB_BIG_UINT (*getsam21pwpos)(void *);
- BOOL (*setsam21pwpos)(void *, SMB_BIG_UINT);
+ struct sam_passwd *(*getsam21pwent)(void *);
/*
* sam password database query functions.
*/
- struct sam_passwd *(*getsam21pwntnam)(const char *);
+ struct sam_passwd *(*getsam21pwnam)(char *);
struct sam_passwd *(*getsam21pwuid)(uid_t);
struct sam_passwd *(*getsam21pwrid)(uint32);
- struct sam_passwd *(*getsam21pwent)(void *);
/*
* sam password database modification functions.
@@ -785,120 +825,18 @@ struct sam_passdb_ops {
/*
* sam query display info functions.
*/
- struct sam_disp_info *(*getsamdispntnam)(const char *);
+ struct sam_disp_info *(*getsamdispnam)(char *);
struct sam_disp_info *(*getsamdisprid)(uint32);
struct sam_disp_info *(*getsamdispent)(void *);
-};
-
-/*
- * Each implementation of the passgrp database code needs
- * to support the following operations.
- */
-
-struct passgrp_ops
-{
- /*
- * Password group database ops.
- */
- void *(*startsmbgrpent)(BOOL);
- void (*endsmbgrpent)(void *);
- SMB_BIG_UINT (*getsmbgrppos)(void *);
- BOOL (*setsmbgrppos)(void *, SMB_BIG_UINT);
-
- /*
- * smb passgrp database query functions, by user attributes.
- */
- struct smb_passwd *(*getsmbgrpntnam)(const char *, uint32**, int*, uint32**, int*);
- struct smb_passwd *(*getsmbgrpuid)(uid_t , uint32**, int*, uint32**, int*);
- struct smb_passwd *(*getsmbgrprid)(uint32, uint32**, int*, uint32**, int*);
- struct smb_passwd *(*getsmbgrpent)(void *, uint32**, int*, uint32**, int*);
-};
-
-/*
- * Each implementation of the group database code needs
- * to support the following operations.
- *
- * This allows enumeration, modification and addition of groups. there
- * is _no_ deletion of groups: you can only modify them to a status of
- * "deleted" (this by the way is a requirement of c2 rating)
- */
-
-struct groupdb_ops
-{
- /*
- * Group database ops.
- */
- void *(*startgroupent)(BOOL);
- void (*endgroupent)(void *);
- SMB_BIG_UINT (*getgrouppos)(void *);
- BOOL (*setgrouppos)(void *, SMB_BIG_UINT);
-
- /*
- * group database query functions.
- */
- DOMAIN_GRP *(*getgroupntnam)(const char *, DOMAIN_GRP_MEMBER **, int *);
- DOMAIN_GRP *(*getgroupgid)(gid_t , DOMAIN_GRP_MEMBER **, int *);
- DOMAIN_GRP *(*getgrouprid)(uint32, DOMAIN_GRP_MEMBER **, int *);
- DOMAIN_GRP *(*getgroupent)(void *, DOMAIN_GRP_MEMBER **, int *);
-
- /*
- * group database modification functions.
- */
- BOOL (*add_group_entry)(DOMAIN_GRP *);
- BOOL (*mod_group_entry)(DOMAIN_GRP *);
- BOOL (*del_group_entry)(uint32);
-
- BOOL (*add_group_member)(uint32, uint32);
- BOOL (*del_group_member)(uint32, uint32);
-
- /*
- * user group functions
- */
- BOOL (*getusergroupsntnam)(const char *, DOMAIN_GRP **, int *);
-};
-
-/*
- * Each implementation of the alias database code needs
- * to support the following operations.
- *
- * This allows enumeration, modification and addition of aliases. there
- * is _no_ deletion of aliases: you can only modify them to a status of
- * "deleted" (this by the way is a requirement of c2 rating)
- */
-
-struct aliasdb_ops
-{
- /*
- * Alias database ops.
- */
- void *(*startaliasent)(BOOL);
- void (*endaliasent)(void *);
- SMB_BIG_UINT (*getaliaspos)(void *);
- BOOL (*setaliaspos)(void *, SMB_BIG_UINT);
-
- /*
- * alias database query functions.
- */
- LOCAL_GRP *(*getaliasntnam)(const char *, LOCAL_GRP_MEMBER **, int *);
- LOCAL_GRP *(*getaliasgid)(gid_t , LOCAL_GRP_MEMBER **, int *);
- LOCAL_GRP *(*getaliasrid)(uint32, LOCAL_GRP_MEMBER **, int *);
- LOCAL_GRP *(*getaliasent)(void *, LOCAL_GRP_MEMBER **, int *);
-
- /*
- * alias database modification functions.
- */
- BOOL (*add_alias_entry)(LOCAL_GRP *);
- BOOL (*mod_alias_entry)(LOCAL_GRP *);
- BOOL (*del_alias_entry)(uint32);
-
- BOOL (*add_alias_member)(uint32, DOM_SID*);
- BOOL (*del_alias_member)(uint32, DOM_SID*);
-
- /*
- * user alias functions
- */
- BOOL (*getuseraliasntnam)(const char *, LOCAL_GRP **, int *);
+#if 0
+ /*
+ * password checking functions
+ */
+ struct smb_passwd *(*smb_password_chal )(char *username, char lm_pass[24], char nt_pass[24], char chal[8]);
+ struct smb_passwd *(*smb_password_check )(char *username, char lm_hash[16], char nt_hash[16]);
+ struct passwd *(*unix_password_check)(char *username, char *pass, int pass_len);
+#endif
};
/* this is used for smbstatus */
@@ -906,7 +844,7 @@ struct aliasdb_ops
struct connect_record
{
int magic;
- int pid;
+ pid_t pid;
int cnum;
uid_t uid;
gid_t gid;
@@ -916,30 +854,11 @@ struct connect_record
time_t start;
};
-/* This is used by smbclient to send it to a smbfs mount point */
-struct connection_options {
- int protocol;
- /* Connection-Options */
- uint32 max_xmit;
- uint16 server_vuid;
- uint16 tid;
- /* The following are LANMAN 1.0 options */
- uint16 sec_mode;
- uint16 max_mux;
- uint16 max_vcs;
- uint16 rawmode;
- uint32 sesskey;
- /* The following are NT LM 0.12 options */
- uint32 maxraw;
- uint32 capabilities;
- uint16 serverzone;
-};
-
/* the following are used by loadparm for option lists */
typedef enum
{
P_BOOL,P_BOOLREV,P_CHAR,P_INTEGER,P_OCTAL,
- P_STRING,P_USTRING,P_GSTRING,P_UGSTRING,P_ENUM,P_PTR,P_SEP
+ P_STRING,P_USTRING,P_GSTRING,P_UGSTRING,P_ENUM,P_SEP
} parm_type;
typedef enum
@@ -974,16 +893,67 @@ struct bitmap {
int n;
};
-#define FLAG_BASIC 1 /* fundamental options */
-#define FLAG_HIDE 2 /* options that should be hidden in SWAT */
-#define FLAG_PRINT 4 /* printing options */
-#define FLAG_GLOBAL 8 /* local options that should be globally settable in SWAT */
+#define FLAG_BASIC 0x01 /* fundamental options */
+#define FLAG_SHARE 0x02 /* file sharing options */
+#define FLAG_PRINT 0x04 /* printing options */
+#define FLAG_GLOBAL 0x08 /* local options that should be globally settable in SWAT */
#define FLAG_DEPRECATED 0x10 /* options that should no longer be used */
+#define FLAG_HIDE 0x20 /* options that should be hidden in SWAT */
+#define FLAG_DOS_STRING 0x40 /* convert from UNIX to DOS codepage when reading this string. */
#ifndef LOCKING_VERSION
#define LOCKING_VERSION 4
#endif /* LOCKING_VERSION */
+/* these are useful macros for checking validity of handles */
+#define OPEN_FSP(fsp) ((fsp) && (fsp)->open && !(fsp)->is_directory)
+#define OPEN_CONN(conn) ((conn) && (conn)->open)
+#define IS_IPC(conn) ((conn) && (conn)->ipc)
+#define IS_PRINT(conn) ((conn) && (conn)->printer)
+#define FNUM_OK(fsp,c) (OPEN_FSP(fsp) && (c)==(fsp)->conn)
+
+#define CHECK_FSP(fsp,conn) if (!FNUM_OK(fsp,conn)) \
+ return(ERROR(ERRDOS,ERRbadfid)); \
+ else if((fsp)->fd_ptr == NULL) \
+ return(ERROR(ERRDOS,ERRbadaccess))
+
+#define CHECK_READ(fsp) if (!(fsp)->can_read) \
+ return(ERROR(ERRDOS,ERRbadaccess))
+#define CHECK_WRITE(fsp) if (!(fsp)->can_write) \
+ return(ERROR(ERRDOS,ERRbadaccess))
+#define CHECK_ERROR(fsp) if (HAS_CACHED_ERROR(fsp)) \
+ return(CACHED_ERROR(fsp))
+
+/* translates a connection number into a service number */
+#define SNUM(conn) ((conn)?(conn)->service:-1)
+
+/* access various service details */
+#define SERVICE(snum) (lp_servicename(snum))
+#define PRINTCAP (lp_printcapname())
+#define PRINTCOMMAND(snum) (lp_printcommand(snum))
+#define PRINTERNAME(snum) (lp_printername(snum))
+#define CAN_WRITE(conn) (!conn->read_only)
+#define VALID_SNUM(snum) (lp_snum_ok(snum))
+#define GUEST_OK(snum) (VALID_SNUM(snum) && lp_guest_ok(snum))
+#define GUEST_ONLY(snum) (VALID_SNUM(snum) && lp_guest_only(snum))
+#define CAN_SETDIR(snum) (!lp_no_set_dir(snum))
+#define CAN_PRINT(conn) ((conn) && lp_print_ok((conn)->service))
+#define MAP_HIDDEN(conn) ((conn) && lp_map_hidden((conn)->service))
+#define MAP_SYSTEM(conn) ((conn) && lp_map_system((conn)->service))
+#define MAP_ARCHIVE(conn) ((conn) && lp_map_archive((conn)->service))
+#define IS_HIDDEN_PATH(conn,path) ((conn) && is_in_path((path),(conn)->hide_list))
+#define IS_VETO_PATH(conn,path) ((conn) && is_in_path((path),(conn)->veto_list))
+#define IS_VETO_OPLOCK_PATH(conn,path) ((conn) && is_in_path((path),(conn)->veto_oplock_list))
+
+/*
+ * Used by the stat cache code to check if a returned
+ * stat structure is valid.
+ */
+
+#define VALID_STAT(st) (st.st_nlink != 0)
+#define VALID_STAT_OF_DIR(st) (VALID_STAT(st) && S_ISDIR(st.st_mode))
+
+#define SMBENCRYPT() (lp_encrypted_passwords())
/* the basic packet size, assuming no words or bytes */
#define smb_size 39
@@ -1138,13 +1108,15 @@ struct bitmap {
#define TRANSACT2_REPORT_DFS_INCONSISTANCY 0x11
/* These are the NT transact sub commands. */
-#define NT_TRANSACT_CREATE 1
-#define NT_TRANSACT_IOCTL 2
-#define NT_TRANSACT_SET_SECURITY_DESC 3
-#define NT_TRANSACT_NOTIFY_CHANGE 4
-#define NT_TRANSACT_RENAME 5
-#define NT_TRANSACT_QUERY_SECURITY_DESC 6
-#define NT_TRANSACT_GET_DFS_REFERRAL 0x10
+#define NT_TRANSACT_CREATE 1
+#define NT_TRANSACT_IOCTL 2
+#define NT_TRANSACT_SET_SECURITY_DESC 3
+#define NT_TRANSACT_NOTIFY_CHANGE 4
+#define NT_TRANSACT_RENAME 5
+#define NT_TRANSACT_QUERY_SECURITY_DESC 6
+
+/* Relevant IOCTL codes */
+#define IOCTL_QUERY_JOB_INFO 0x530060
/* these are the trans2 sub fields for primary requests */
#define smb_tpscnt smb_vwv0
@@ -1246,6 +1218,8 @@ struct bitmap {
#define FILE_DELETE_CHILD 0x040
#define FILE_READ_ATTRIBUTES 0x080
#define FILE_WRITE_ATTRIBUTES 0x100
+
+#define FILE_ALL_ATTRIBUTES 0x1FF
/* Generic access masks & rights. */
#define SPECIFIC_RIGHTS_MASK 0x00FFFFL
@@ -1255,7 +1229,31 @@ struct bitmap {
#define WRITE_DAC_ACCESS (1L<<18)
#define WRITE_OWNER_ACCESS (1L<<19)
#define SYNCHRONIZE_ACCESS (1L<<20)
+
#define SYSTEM_SECURITY_ACCESS (1L<<24)
+#define GENERIC_ALL_ACCESS (1<<28)
+#define GENERIC_EXECUTE_ACCESS (1<<29)
+#define GENERIC_WRITE_ACCESS (1<<30)
+#define GENERIC_READ_ACCESS (((unsigned)1)<<31)
+
+#define FILE_ALL_STANDARD_ACCESS 0x1F0000
+
+/* Mapping of access rights to UNIX perms. */
+#if 0 /* Don't use all here... JRA. */
+#define UNIX_ACCESS_RWX (FILE_ALL_ATTRIBUTES|FILE_ALL_STANDARD_ACCESS)
+#else
+#define UNIX_ACCESS_RWX (UNIX_ACCESS_R|UNIX_ACCESS_W|UNIX_ACCESS_X)
+#endif
+
+#define UNIX_ACCESS_R (READ_CONTROL_ACCESS|SYNCHRONIZE_ACCESS|\
+ FILE_READ_ATTRIBUTES|FILE_READ_EA|FILE_READ_DATA)
+#define UNIX_ACCESS_W (READ_CONTROL_ACCESS|SYNCHRONIZE_ACCESS|\
+ FILE_WRITE_ATTRIBUTES|FILE_WRITE_EA|\
+ FILE_APPEND_DATA|FILE_WRITE_DATA)
+#define UNIX_ACCESS_X (READ_CONTROL_ACCESS|SYNCHRONIZE_ACCESS|\
+ FILE_EXECUTE|FILE_READ_ATTRIBUTES)
+
+#define UNIX_ACCESS_NONE (WRITE_OWNER_ACCESS)
/* Flags field. */
#define REQUEST_OPLOCK 2
@@ -1326,7 +1324,7 @@ struct bitmap {
#define FILE_CASE_SENSITIVE_SEARCH 0x1
#define FILE_CASE_PRESERVED_NAMES 0x2
#define FILE_UNICODE_ON_DISK 0x4
-#define FILE_PERISITANT_ACLS 0x8
+#define FILE_PERSISTENT_ACLS 0x8
/* ChangeNotify flags. */
#define FILE_NOTIFY_CHANGE_FILE_NAME 0x001
@@ -1343,6 +1341,11 @@ struct bitmap {
#define smb_base(buf) (((char *)(buf))+4)
+/* we don't allow server strings to be longer than 48 characters as
+ otherwise NT will not honour the announce packets */
+#define MAX_SERVER_STRING_LENGTH 48
+
+
#define SMB_SUCCESS 0 /* The request was successful. */
#define ERRDOS 0x01 /* Error is from the core DOS operating system set. */
#define ERRSRV 0x02 /* Error is generated by the server network file manager.*/
@@ -1368,6 +1371,17 @@ extern int dcelogin_atmost_once;
char *strdup(char *s);
#endif
+#ifndef MIN
+#define MIN(a,b) ((a)<(b)?(a):(b))
+#endif
+#ifndef MAX
+#define MAX(a,b) ((a)>(b)?(a):(b))
+#endif
+
+#ifndef ABS
+#define ABS(a) ((a)>0?(a):(-(a)))
+#endif
+
#ifndef SIGNAL_CAST
#define SIGNAL_CAST (RETSIGTYPE (*)(int))
#endif
@@ -1472,7 +1486,6 @@ char *strdup(char *s);
#define FLAGS2_LONG_PATH_COMPONENTS 0x0001
#define FLAGS2_EXTENDED_ATTRIBUTES 0x0002
-#define FLAGS2_EXT_SEC 0x0800
#define FLAGS2_DFS_PATHNAMES 0x1000
#define FLAGS2_READ_PERMIT_NO_EXECUTE 0x2000
#define FLAGS2_32_BIT_ERROR_CODES 0x4000
@@ -1480,19 +1493,18 @@ char *strdup(char *s);
/* Capabilities. see ftp.microsoft.com/developr/drg/cifs/cifs/cifs4.txt */
-#define CAP_RAW_MODE 0x00000001
-#define CAP_MPX_MODE 0x00000002
-#define CAP_UNICODE 0x00000004
-#define CAP_LARGE_FILES 0x00000008
-#define CAP_NT_SMBS 0x00000010
-#define CAP_RPC_REMOTE_APIS 0x00000020
-#define CAP_STATUS32 0x00000040
-#define CAP_LEVEL_II_OPLOCKS 0x00000080
-#define CAP_LOCK_AND_READ 0x00000100
-#define CAP_NT_FIND 0x00000200
-#define CAP_DFS 0x00001000
-#define CAP_LARGE_READX 0x00004000
-#define CAP_EXTENDED_SECURITY 0x80000000
+#define CAP_RAW_MODE 0x0001
+#define CAP_MPX_MODE 0x0002
+#define CAP_UNICODE 0x0004
+#define CAP_LARGE_FILES 0x0008
+#define CAP_NT_SMBS 0x0010
+#define CAP_RPC_REMOTE_APIS 0x0020
+#define CAP_STATUS32 0x0040
+#define CAP_LEVEL_II_OPLOCKS 0x0080
+#define CAP_LOCK_AND_READ 0x0100
+#define CAP_NT_FIND 0x0200
+#define CAP_DFS 0x1000
+#define CAP_LARGE_READX 0x4000
/* protocol types. It assumes that higher protocols include lower protocols
as subsets */
@@ -1501,21 +1513,12 @@ enum protocol_types {PROTOCOL_NONE,PROTOCOL_CORE,PROTOCOL_COREPLUS,PROTOCOL_LANM
/* security levels */
enum security_types {SEC_SHARE,SEC_USER,SEC_SERVER,SEC_DOMAIN};
-/* server roles */
-enum server_types
-{
- ROLE_DOMAIN_NONE,
- 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};
+ PRINT_QNX,PRINT_PLP,PRINT_LPRNG,PRINT_SOFTQ,PRINT_CUPS};
/* Remote architectures we know about. */
-enum remote_arch_types {RA_UNKNOWN, RA_WFWG, RA_OS2, RA_WIN95, RA_WINNT, RA_SAMBA};
+enum remote_arch_types {RA_UNKNOWN, RA_WFWG, RA_OS2, RA_WIN95, RA_WINNT, RA_WIN2K, RA_SAMBA};
/* case handling */
enum case_handling {CASE_LOWER,CASE_UPPER};
@@ -1525,6 +1528,38 @@ enum case_handling {CASE_LOWER,CASE_UPPER};
enum ssl_version_enum {SMB_SSL_V2,SMB_SSL_V3,SMB_SSL_V23,SMB_SSL_TLS1};
#endif /* WITH_SSL */
+/* Macros to get at offsets within smb_lkrng and smb_unlkrng
+ structures. We cannot define these as actual structures
+ due to possible differences in structure packing
+ on different machines/compilers. */
+
+#define SMB_LPID_OFFSET(indx) (10 * (indx))
+#define SMB_LKOFF_OFFSET(indx) ( 2 + (10 * (indx)))
+#define SMB_LKLEN_OFFSET(indx) ( 6 + (10 * (indx)))
+#define SMB_LARGE_LKOFF_OFFSET_HIGH(indx) (4 + (20 * (indx)))
+#define SMB_LARGE_LKOFF_OFFSET_LOW(indx) (8 + (20 * (indx)))
+#define SMB_LARGE_LKLEN_OFFSET_HIGH(indx) (12 + (20 * (indx)))
+#define SMB_LARGE_LKLEN_OFFSET_LOW(indx) (16 + (20 * (indx)))
+
+/* Macro to cache an error in a write_bmpx_struct */
+#define CACHE_ERROR(w,c,e) ((w)->wr_errclass = (c), (w)->wr_error = (e), \
+ w->wr_discard = True, -1)
+/* Macro to test if an error has been cached for this fnum */
+#define HAS_CACHED_ERROR(fsp) ((fsp)->open && (fsp)->wbmpx_ptr && \
+ (fsp)->wbmpx_ptr->wr_discard)
+/* Macro to turn the cached error into an error packet */
+#define CACHED_ERROR(fsp) cached_error_packet(inbuf,outbuf,fsp,__LINE__)
+
+/* these are the datagram types */
+#define DGRAM_DIRECT_UNIQUE 0x10
+
+#define ERROR(class,x) error_packet(inbuf,outbuf,class,x,__LINE__)
+
+/* this is how errors are generated */
+#define UNIXERROR(defclass,deferror) unix_error_packet(inbuf,outbuf,defclass,deferror,__LINE__)
+
+#define SMB_ROUNDUP(x,g) (((x)+((g)-1))&~((g)-1))
+
/*
* Global value meaing that the smb_uid field should be
* ingored (in share level security and protocol level == CORE)
@@ -1593,13 +1628,29 @@ extern int unix_ERR_code;
/*
* Bits we test with.
*/
+
+#define NO_OPLOCK 0
#define EXCLUSIVE_OPLOCK 1
#define BATCH_OPLOCK 2
+#define LEVEL_II_OPLOCK 4
+
+#define EXCLUSIVE_OPLOCK_TYPE(lck) ((lck) & (EXCLUSIVE_OPLOCK|BATCH_OPLOCK))
+#define BATCH_OPLOCK_TYPE(lck) ((lck) & BATCH_OPLOCK)
+#define LEVEL_II_OPLOCK_TYPE(lck) ((lck) & LEVEL_II_OPLOCK)
#define CORE_OPLOCK_GRANTED (1<<5)
#define EXTENDED_OPLOCK_GRANTED (1<<15)
/*
+ * Return values for oplock types.
+ */
+
+#define NO_OPLOCK_RETURN 0
+#define EXCLUSIVE_OPLOCK_RETURN 1
+#define BATCH_OPLOCK_RETURN 2
+#define LEVEL_II_OPLOCK_RETURN 3
+
+/*
* Loopback command offsets.
*/
@@ -1611,8 +1662,9 @@ extern int unix_ERR_code;
/*
* Oplock break command code to send over the udp socket.
+ * The same message is sent for both exlusive and level II breaks.
*
- * Form of this is :
+ * The form of this is :
*
* 0 2 6 10 14 14+devsize 14+devsize+inodesize
* +----+--------+--------+--------+-------+--------+
@@ -1622,12 +1674,14 @@ extern int unix_ERR_code;
#define OPLOCK_BREAK_CMD 0x1
#define OPLOCK_BREAK_PID_OFFSET 2
-#define OPLOCK_BREAK_SEC_OFFSET 6
-#define OPLOCK_BREAK_USEC_OFFSET 10
-#define OPLOCK_BREAK_DEV_OFFSET 14
+#define OPLOCK_BREAK_SEC_OFFSET (OPLOCK_BREAK_PID_OFFSET + sizeof(pid_t))
+#define OPLOCK_BREAK_USEC_OFFSET (OPLOCK_BREAK_SEC_OFFSET + sizeof(time_t))
+#define OPLOCK_BREAK_DEV_OFFSET (OPLOCK_BREAK_USEC_OFFSET + sizeof(long))
#define OPLOCK_BREAK_INODE_OFFSET (OPLOCK_BREAK_DEV_OFFSET + sizeof(SMB_DEV_T))
#define OPLOCK_BREAK_MSG_LEN (OPLOCK_BREAK_INODE_OFFSET + sizeof(SMB_INO_T))
+#define LEVEL_II_OPLOCK_BREAK_CMD 0x3
+
/*
* Capabilities abstracted for different systems.
*/
@@ -1655,9 +1709,26 @@ extern int unix_ERR_code;
#define CMD_REPLY 0x8000
-#include "smb_macros.h"
+/* useful macros */
+
+/* zero a structure */
+#define ZERO_STRUCT(x) memset((char *)&(x), 0, sizeof(x))
+
+/* zero a structure given a pointer to the structure - no zero check */
+#define ZERO_STRUCTPN(x) memset((char *)(x), 0, sizeof(*(x)))
+
+/* zero a structure given a pointer to the structure */
+#define ZERO_STRUCTP(x) { if ((x) != NULL) ZERO_STRUCTPN(x); }
+
+/* zero an array - note that sizeof(array) must work - ie. it must not be a
+ pointer */
+#define ZERO_ARRAY(x) memset((char *)(x), 0, sizeof(x))
+
+#define SMB_ASSERT(b) ((b)?(void)0: \
+ (DEBUG(0,("PANIC: assert failed at %s(%d)\n", \
+ __FILE__, __LINE__)), smb_panic("assert failed")))
+#define SMB_ASSERT_ARRAY(a,n) SMB_ASSERT((sizeof(a)/sizeof((a)[0])) >= (n))
-#include "nt_printing.h"
#include "ntdomain.h"
/* A netbios name structure. */
@@ -1667,8 +1738,8 @@ struct nmb_name {
unsigned int name_type;
};
-
-#include "dfs.h"
+#include "client.h"
+#include "rpcclient.h"
/*
* Size of new password account encoding string. DO NOT CHANGE.
@@ -1701,63 +1772,10 @@ struct nmb_name {
#define MAP_TO_GUEST_ON_BAD_USER 1
#define MAP_TO_GUEST_ON_BAD_PASSWORD 2
-/* associate bit field or enumeration field with a string */
-struct field_info
-{
- uint32 bits;
- char *str;
-};
-
-#define AGENT_CMD_CON 0
-#define AGENT_CMD_CON_ANON 2
-#define AGENT_CMD_CON_REUSE 1
-
-#define MAX_MAX_MUX_LIMIT 16
-
-struct nmb_state
-{
- struct in_addr ip;
- int port;
-};
-
-struct pwd_info
-{
- BOOL null_pwd;
- BOOL cleartext;
- BOOL crypted;
-
- fstring password;
-
- uchar smb_lm_pwd[16];
- uchar smb_nt_pwd[16];
-
- uchar smb_lm_owf[24];
- uchar smb_nt_owf[128];
- size_t nt_owf_len;
-
- uchar lm_cli_chal[8];
- uchar nt_cli_chal[128];
- size_t nt_cli_chal_len;
-
- uchar sess_key[16];
-};
-
-#include "rpc_creds.h"
-
-struct msrpc_state
-{
- fstring pipe_name;
- struct user_creds usr;
- int fd;
- BOOL redirect;
- BOOL initialised;
- char *inbuf;
- char *outbuf;
-};
+/*
+ * SMB UCS2 (16-bit unicode) internal type.
+ */
-#include "client.h"
-#include "rpcclient.h"
+typedef uint16 smb_ucs2_t;
#endif /* _SMB_H */
-
-/* _SMB_H */
diff --git a/source3/include/trans2.h b/source3/include/trans2.h
index 634244a193..bbe796b742 100644
--- a/source3/include/trans2.h
+++ b/source3/include/trans2.h
@@ -239,6 +239,26 @@ Byte offset Type name description
#define DIRLEN_GUESS (45+MAX(l1_achName,l2_achName))
+/*
+ * DeviceType and Characteristics returned in a
+ * SMB_QUERY_FS_DEVICE_INFO call.
+ */
+
+#define DEVICETYPE_CD_ROM 0x2
+#define DEVICETYPE_CD_ROM_FILE_SYSTEM 0x3
+#define DEVICETYPE_DISK 0x7
+#define DEVICETYPE_DISK_FILE_SYSTEM 0x8
+#define DEVICETYPE_FILE_SYSTEM 0x9
+
+/* Characteristics. */
+#define TYPE_REMOVABLE_MEDIA 0x1
+#define TYPE_READ_ONLY_DEVICE 0x2
+#define TYPE_FLOPPY 0x4
+#define TYPE_WORM 0x8
+#define TYPE_REMOTE 0x10
+#define TYPE_MOUNTED 0x20
+#define TYPE_VIRTUAL 0x40
+
#endif
diff --git a/source3/include/version.h b/source3/include/version.h
index 3714273aa0..1c37111a17 100644
--- a/source3/include/version.h
+++ b/source3/include/version.h
@@ -1 +1 @@
-#define VERSION "2.1.0-prealpha"
+#define VERSION "pre-2.0.6"