1998-03-12 00:11:04 +03: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 17:25:34 +04:00
# include "rpc_dce.h"
1998-03-12 00:11:04 +03:00
/* miscellaneous structures / defines */
1998-08-09 17:25:34 +04:00
# include "rpc_misc.h"
1998-03-12 00:11:04 +03:00
/* different dce/rpc pipes */
1998-08-09 17:25:34 +04:00
# include "rpc_lsa.h"
# include "rpc_netlogon.h"
# include "rpc_reg.h"
# include "rpc_samr.h"
# include "rpc_srvsvc.h"
# include "rpc_wkssvc.h"
1998-03-12 00:11:04 +03: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 06:36:37 +04: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 */
1998-03-12 00:11:04 +03:00
} prs_struct ;
1998-08-17 07:06:20 +04:00
typedef struct pipes_struct
1998-03-12 00:11:04 +03:00
{
1998-08-17 07:06:20 +04:00
struct pipes_struct * next , * prev ;
int pnum ;
1998-08-14 21:38:29 +04:00
connection_struct * conn ;
1998-09-30 00:24:17 +04:00
uint16 vuid ;
1998-04-21 06:36:37 +04:00
BOOL open ; /* open connection */
uint16 device_state ;
1998-10-15 09:47:29 +04:00
uint16 priority ;
1998-04-21 06:36:37 +04:00
fstring name ;
fstring pipe_srv_name ;
prs_struct rhdr ; /* output header */
prs_struct rdata ; /* output data */
1998-10-20 22:27:49 +04:00
prs_struct rdata_i ; /* output data (intermediate, for fragments) */
1998-04-21 06:36:37 +04:00
prs_struct rauth ; /* output authentication verifier */
1998-10-08 01:42:24 +04:00
prs_struct rverf ; /* output verifier */
1998-10-07 02:03:04 +04:00
prs_struct rntlm ; /* output ntlmssp */
1998-04-21 06:36:37 +04: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-08 01:42:24 +04:00
RPC_HDR_AUTH auth_info ;
RPC_HDR_AUTHA autha_info ;
1998-04-21 06:36:37 +04:00
1998-10-07 02:03:04 +04:00
RPC_AUTH_VERIFIER auth_verifier ;
RPC_AUTH_NTLMSSP_NEG ntlmssp_neg ;
RPC_AUTH_NTLMSSP_CHAL ntlmssp_chal ;
1998-04-21 06:36:37 +04:00
RPC_AUTH_NTLMSSP_RESP ntlmssp_resp ;
1998-10-19 21:32:10 +04:00
RPC_AUTH_NTLMSSP_CHK ntlmssp_chk ;
1998-04-21 06:36:37 +04:00
1998-10-08 01:42:24 +04:00
BOOL ntlmssp_auth ;
1998-10-17 03:40:59 +04:00
BOOL ntlmssp_validated ;
1998-10-09 23:05:19 +04:00
unsigned char ntlmssp_hash [ 258 ] ;
1998-10-19 21:32:10 +04:00
uint32 ntlmssp_seq_num ;
1998-10-17 00:07:02 +04:00
fstring user_name ;
fstring domain ;
fstring wks ;
1998-10-08 01:42:24 +04:00
1998-04-21 06:36:37 +04:00
uint32 file_offset ;
uint32 hdr_offsets ;
uint32 frag_len_left ;
uint32 next_frag_start ;
1998-03-12 00:11:04 +03:00
1998-09-26 01:01:52 +04:00
} pipes_struct ;
1998-03-12 00:11:04 +03:00
struct api_struct
{
char * name ;
uint8 opnum ;
1998-09-30 00:24:17 +04:00
void ( * fn ) ( uint16 vuid , prs_struct * , prs_struct * ) ;
1998-03-12 00:11:04 +03:00
} ;
struct mem_desc
{
1998-04-21 06:36:37 +04:00
/* array memory offsets */
uint32 start ;
uint32 end ;
1998-03-12 00:11:04 +03:00
} ;
struct mem_buf
{
1998-04-21 06:36:37 +04: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-12 00:11:04 +03:00
1998-04-21 06:36:37 +04: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-12 00:11:04 +03:00
1998-04-21 06:36:37 +04:00
struct mem_desc offset ;
1998-03-12 00:11:04 +03:00
1998-04-21 06:36:37 +04:00
struct mem_buf * next ;
1998-03-12 00:11:04 +03:00
} ;
typedef struct
{
1998-04-21 06:36:37 +04:00
uint32 rid ;
char * name ;
1998-03-12 00:11:04 +03:00
} rid_name ;
1998-09-26 03:40:49 +04:00
struct acct_info
{
fstring acct_name ; /* account name */
uint32 smb_userid ; /* domain-relative RID */
} ;
1998-03-12 00:11:04 +03:00
# endif /* _NT_DOMAIN_H */