1998-03-11 21:11:04 +00:00
/*
Unix SMB / Netbios implementation .
Version 1.9 .
SMB parameters and setup
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
the Free Software Foundation ; either version 2 of the License , or
( at your option ) any later version .
This program is distributed in the hope that it will be useful ,
but WITHOUT ANY WARRANTY ; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
GNU General Public License for more details .
You should have received a copy of the GNU General Public License
along with this program ; if not , write to the Free Software
Foundation , Inc . , 675 Mass Ave , Cambridge , MA 0213 9 , USA .
*/
# ifndef _NT_DOMAIN_H /* _NT_DOMAIN_H */
# define _NT_DOMAIN_H
/* dce/rpc support */
1998-08-09 13:25:34 +00:00
# include "rpc_dce.h"
1998-03-11 21:11:04 +00:00
/* miscellaneous structures / defines */
1998-08-09 13:25:34 +00:00
# include "rpc_misc.h"
1998-03-11 21:11:04 +00:00
1998-11-10 19:05:00 +00:00
/* security descriptor structures */
1998-11-10 20:51:25 +00:00
# include "rpc_secdes.h"
1998-11-10 19:05:00 +00:00
1998-03-11 21:11:04 +00:00
/* different dce/rpc pipes */
1998-08-09 13:25:34 +00:00
# include "rpc_lsa.h"
# include "rpc_netlogon.h"
# include "rpc_reg.h"
# include "rpc_samr.h"
# include "rpc_srvsvc.h"
1998-12-08 00:25:04 +00:00
# include "rpc_svcctl.h"
1998-08-09 13:25:34 +00:00
# include "rpc_wkssvc.h"
1999-04-23 14:47:45 +00:00
# include "rpc_atsvc.h"
1999-04-27 10:43:32 +00:00
# include "rpc_spoolss.h"
1999-05-03 22:00:33 +00:00
# include "rpc_eventlog.h"
1998-03-11 21:11:04 +00:00
/*
* A bunch of stuff that was put into smb . h
* in the NTDOM branch - it didn ' t belong there .
*/
typedef struct
{
1998-04-21 02:36:37 +00:00
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 */
1999-10-15 20:00:30 +00:00
BOOL error ; /* error occurred */
1998-03-11 21:11:04 +00:00
} prs_struct ;
1998-08-17 03:06:20 +00:00
typedef struct pipes_struct
1998-03-11 21:11:04 +00:00
{
1998-08-17 03:06:20 +00:00
struct pipes_struct * next , * prev ;
int pnum ;
1998-08-14 17:38:29 +00:00
connection_struct * conn ;
1998-09-29 20:24:17 +00:00
uint16 vuid ;
1998-04-21 02:36:37 +00:00
BOOL open ; /* open connection */
uint16 device_state ;
1998-10-15 05:47:29 +00:00
uint16 priority ;
1998-04-21 02:36:37 +00:00
fstring name ;
fstring pipe_srv_name ;
prs_struct rhdr ; /* output header */
prs_struct rdata ; /* output data */
1998-10-20 18:27:49 +00:00
prs_struct rdata_i ; /* output data (intermediate, for fragments) */
1998-04-21 02:36:37 +00:00
prs_struct rauth ; /* output authentication verifier */
1998-10-07 21:42:24 +00:00
prs_struct rverf ; /* output verifier */
1998-10-06 22:03:04 +00:00
prs_struct rntlm ; /* output ntlmssp */
1998-04-21 02:36:37 +00:00
RPC_HDR hdr ;
RPC_HDR_BA hdr_ba ;
RPC_HDR_RB hdr_rb ;
RPC_HDR_REQ hdr_req ;
RPC_HDR_RESP hdr_resp ;
1998-10-07 21:42:24 +00:00
RPC_HDR_AUTH auth_info ;
RPC_HDR_AUTHA autha_info ;
1998-04-21 02:36:37 +00:00
1999-07-26 21:47:23 +00:00
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 ;
1998-04-21 02:36:37 +00:00
1998-10-07 21:42:24 +00:00
BOOL ntlmssp_auth ;
1998-10-16 23:40:59 +00:00
BOOL ntlmssp_validated ;
1998-10-09 19:05:19 +00:00
unsigned char ntlmssp_hash [ 258 ] ;
1998-10-19 17:32:10 +00:00
uint32 ntlmssp_seq_num ;
1998-10-16 20:07:02 +00:00
fstring user_name ;
fstring domain ;
fstring wks ;
1998-10-07 21:42:24 +00:00
1998-04-21 02:36:37 +00:00
uint32 file_offset ;
1999-02-03 00:48:27 +00:00
uint32 prev_pdu_file_offset ;
1998-04-21 02:36:37 +00:00
uint32 hdr_offsets ;
1998-03-11 21:11:04 +00:00
1998-09-25 21:01:52 +00:00
} pipes_struct ;
1998-03-11 21:11:04 +00:00
struct api_struct
{
char * name ;
uint8 opnum ;
1999-05-03 22:00:33 +00:00
void ( * fn ) ( pipes_struct * , prs_struct * , prs_struct * ) ;
1998-03-11 21:11:04 +00:00
} ;
struct mem_desc
{
1998-04-21 02:36:37 +00:00
/* array memory offsets */
uint32 start ;
uint32 end ;
1998-03-11 21:11:04 +00:00
} ;
struct mem_buf
{
1998-04-21 02:36:37 +00:00
BOOL dynamic ; /* True iff data has been dynamically allocated
( and therefore can be freed ) */
char * data ;
uint32 data_size ;
uint32 data_used ;
1998-03-11 21:11:04 +00:00
1998-04-21 02:36:37 +00:00
uint32 margin ; /* safety margin when reallocing. */
/* this can be abused quite nicely */
uint8 align ; /* alignment of data structures (smb, dce/rpc, udp etc) */
1998-03-11 21:11:04 +00:00
1998-04-21 02:36:37 +00:00
struct mem_desc offset ;
1998-03-11 21:11:04 +00:00
1998-04-21 02:36:37 +00:00
struct mem_buf * next ;
1998-03-11 21:11:04 +00:00
} ;
1998-09-25 23:40:49 +00:00
struct acct_info
{
fstring acct_name ; /* account name */
1998-12-04 16:30:00 +00:00
fstring acct_desc ; /* account description */
uint32 rid ; /* domain-relative RID */
1998-09-25 23:40:49 +00:00
} ;
1999-10-29 18:57:22 +00:00
/*
* higher order functions for use with msrpc client code
*/
1999-11-01 21:09:24 +00:00
# define ALIAS_FN(fn) void (*fn)(char*, DOM_SID*, uint32, char*)
# define ALIAS_INFO_FN(fn) void (*fn)(char*, DOM_SID*, uint32, ALIAS_INFO_CTR *)
# define ALIAS_MEM_FN(fn) void(*fn)(char*, DOM_SID*, uint32, char*, uint32, DOM_SID**, char**, uint8*)
1999-10-29 18:57:22 +00:00
# define GROUP_FN(fn) void (*fn)(char*, DOM_SID*, uint32, char*)
# define GROUP_INFO_FN(fn) void (*fn)(char*, DOM_SID*, uint32, GROUP_INFO_CTR *)
# define GROUP_MEM_FN(fn) void(*fn)(char*, DOM_SID*, uint32, char*, uint32, uint32*, char**, uint32*)
1999-10-29 20:24:18 +00:00
# define USER_FN(fn) void (*fn)(char*, DOM_SID*, uint32, char*)
1999-10-29 19:31:32 +00:00
# define USER_INFO_FN(fn) void (*fn)(char*, DOM_SID*, uint32, SAM_USER_INFO_21 *)
1999-10-29 20:24:18 +00:00
# define USER_MEM_FN(fn) void (*fn)(char*, DOM_SID*, uint32, char*, uint32, uint32*, char**, uint32*)
# 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, BUFFER2 *)
1999-10-29 19:31:32 +00:00
1999-10-31 04:11:17 +00:00
# define SVC_QUERY_FN(fn) void (*fn)(QUERY_SERVICE_CONFIG *)
# define SVC_INFO_FN(fn) void (*fn)(ENUM_SRVC_STATUS *)
1999-11-04 00:09:15 +00:00
# define TPRT_INFO_FN(fn) void (*fn)(SRV_TPRT_INFO_CTR *)
1999-11-06 21:08:35 +00:00
# define PRINT_INFO_FN(fn) void (*fn)(const char*, uint32, uint32, void **)
1998-03-11 21:11:04 +00:00
# endif /* _NT_DOMAIN_H */