SYSV IPC implementation of fast share modes.
[kai/samba.git] / source3 / include / proto.h
index 636b99e6466a42cb1d91d5698e243d917e55ef25..13368c873d9073d4b3a5b3e5e57e674165272f8b 100644 (file)
@@ -36,12 +36,15 @@ BOOL chgpasswd(char *name,char *oldpass,char *newpass);
 
 /*The following definitions come from  client.c  */
 
+void cli_smb_close(char *inbuf, char *outbuf, int clnt_fd, int c_num, int f_num);
 void do_dir(char *inbuf,char *outbuf,char *Mask,int attribute,void (*fn)(),BOOL recurse_dir);
 void cmd_help(void);
 
 /*The following definitions come from  clientgen.c  */
 
 BOOL cli_NetWkstaUserLogon(struct cli_state *cli,char *user, char *workstation);
+BOOL cli_NetServerEnum(struct cli_state *cli, char *workgroup, uint32 stype,
+                      void (*fn)(char *, uint32, char *));
 BOOL cli_session_setup(struct cli_state *cli, 
                       char *user, 
                       char *pass, int passlen,
@@ -60,10 +63,10 @@ void cli_shutdown(struct cli_state *cli);
 /*The following definitions come from  clientutil.c  */
 
 void cli_setup_pkt(char *outbuf);
-BOOL cli_call_api(char *pipe_name, int prcnt,int drcnt,
+BOOL cli_call_api(char *pipe_name, int prcnt,int drcnt, int srcnt,
                     int mprcnt,int mdrcnt,
                     int *rprcnt,int *rdrcnt,
-                    char *param,char *data,
+                    char *param,char *data, uint16 *setup,
                     char **rparam,char **rdata);
 BOOL cli_receive_trans_response(char *inbuf,int trans,
                                    int *data_len,int *param_len,
@@ -99,6 +102,11 @@ void cred_create(uint32 session_key[2], DOM_CHAL *stor_cred, UTIME timestamp,
                 DOM_CHAL *cred);
 int cred_assert(DOM_CHAL *cred, uint32 session_key[2], DOM_CHAL *stored_cred,
                UTIME timestamp);
+BOOL clnt_deal_with_creds(uint32 sess_key[2],
+               DOM_CRED *sto_clnt_cred, DOM_CRED *rcv_srv_cred);
+BOOL deal_with_creds(uint32 sess_key[2],
+               DOM_CRED *sto_clnt_cred, 
+               DOM_CRED *rcv_clnt_cred, DOM_CRED *rtn_srv_cred);
 
 /*The following definitions come from  dir.c  */
 
@@ -343,7 +351,7 @@ int lp_minor_announce_version(void);
 BOOL is_locked(int fnum,int cnum,uint32 count,uint32 offset);
 BOOL do_lock(int fnum,int cnum,uint32 count,uint32 offset,int *eclass,uint32 *ecode);
 BOOL do_unlock(int fnum,int cnum,uint32 count,uint32 offset,int *eclass,uint32 *ecode);
-BOOL locking_init(void);
+BOOL locking_init(int read_only);
 BOOL locking_end(void);
 BOOL lock_share_entry(int cnum, uint32 dev, uint32 inode, int *ptok);
 BOOL unlock_share_entry(int cnum, uint32 dev, uint32 inode, int token);
@@ -357,23 +365,38 @@ void share_status(FILE *f);
 
 /*The following definitions come from  locking_shm.c  */
 
-struct share_ops *locking_shm_init(void);
+struct share_ops *locking_shm_init(int ronly);
 
 /*The following definitions come from  locking_slow.c  */
 
-struct share_ops *locking_slow_init(void);
+struct share_ops *locking_slow_init(int ronly);
 
 /*The following definitions come from  lsaparse.c  */
 
+void make_q_open_pol(LSA_Q_OPEN_POL *r_q, char *server_name,
+                       uint32 attributes, uint32 sec_qos,
+                       uint16 desired_access);
+char* lsa_io_q_open_pol(BOOL io, LSA_Q_OPEN_POL *r_q, char *q, char *base, int align, int depth);
 char* lsa_io_r_open_pol(BOOL io, LSA_R_OPEN_POL *r_p, char *q, char *base, int align, int depth);
+void make_q_query(LSA_Q_QUERY_INFO *q_q, LSA_POL_HND *hnd, uint16 info_class);
 char* lsa_io_q_query(BOOL io, LSA_Q_QUERY_INFO *q_q, char *q, char *base, int align, int depth);
+void make_q_close(LSA_Q_CLOSE *q_c, LSA_POL_HND *hnd);
+char* lsa_io_q_close(BOOL io, LSA_Q_CLOSE *q_c, char *q, char *base, int align, int depth);
+void make_r_close(LSA_R_CLOSE *q_r, LSA_POL_HND *hnd);
+char* lsa_io_r_close(BOOL io, LSA_R_CLOSE *r_c, char *q, char *base, int align, int depth);
 char* lsa_io_r_query(BOOL io, LSA_R_QUERY_INFO *r_q, char *q, char *base, int align, int depth);
 char* lsa_io_q_lookup_sids(BOOL io, LSA_Q_LOOKUP_SIDS *q_s, char *q, char *base, int align, int depth);
 char* lsa_io_r_lookup_sids(BOOL io, LSA_R_LOOKUP_SIDS *r_s, char *q, char *base, int align, int depth);
 char* lsa_io_q_lookup_rids(BOOL io, LSA_Q_LOOKUP_RIDS *q_r, char *q, char *base, int align, int depth);
 char* lsa_io_r_lookup_rids(BOOL io, LSA_R_LOOKUP_RIDS *r_r, char *q, char *base, int align, int depth);
+void make_q_req_chal(LSA_Q_REQ_CHAL *q_c,
+                               char *logon_srv, char *logon_clnt,
+                               DOM_CHAL *clnt_chal);
 char* lsa_io_q_req_chal(BOOL io, LSA_Q_REQ_CHAL *q_c, char *q, char *base, int align, int depth);
 char* lsa_io_r_req_chal(BOOL io, LSA_R_REQ_CHAL *r_c, char *q, char *base, int align, int depth);
+void make_q_auth_2(LSA_Q_AUTH_2 *q_a,
+               char *logon_srv, char *acct_name, uint16 sec_chan, char *comp_name,
+               DOM_CHAL *clnt_chal, uint32 clnt_flgs);
 char* lsa_io_q_auth_2(BOOL io, LSA_Q_AUTH_2 *q_a, char *q, char *base, int align, int depth);
 char* lsa_io_r_auth_2(BOOL io, LSA_R_AUTH_2 *r_a, char *q, char *base, int align, int depth);
 char* lsa_io_q_srv_pwset(BOOL io, LSA_Q_SRV_PWSET *q_s, char *q, char *base, int align, int depth);
@@ -437,20 +460,15 @@ void set_samba_nb_type(void);
 BOOL name_equal(struct nmb_name *n1,struct nmb_name *n2);
 BOOL ms_browser_name(char *name, int type);
 void remove_name(struct subnet_record *d, struct name_record *n);
-struct name_record *find_name(struct name_record *n,
-                       struct nmb_name *name, int search);
-struct name_record *find_name_search(struct subnet_record **d,
-                                    struct nmb_name *name,
-                                    int search, struct in_addr ip);
+struct name_record *find_name_on_subnet(struct subnet_record *d,
+                       struct nmb_name *name, BOOL self_only);
 void dump_names(void);
 void load_netbios_names(void);
 void remove_netbios_name(struct subnet_record *d,
-                       char *name,int type, enum name_source source,
-                        struct in_addr ip);
+                       char *name,int type, enum name_source source);
 struct name_record *add_netbios_entry(struct subnet_record *d,
-               char *name, int type, int nb_flags, 
-               int ttl, enum name_source source, struct in_addr ip,
-               BOOL new_only,BOOL wins);
+               char *name, int type, int nb_flags, int ttl, 
+                enum name_source source, struct in_addr ip, BOOL new_only);
 void expire_names(time_t t);
 
 /*The following definitions come from  namedbresp.c  */
@@ -483,9 +501,8 @@ void expire_servers(time_t t);
 
 /*The following definitions come from  namedbsubnet.c  */
 
-struct subnet_record *find_subnet(struct in_addr bcast_ip);
-struct subnet_record *find_req_subnet(struct in_addr ip, BOOL bcast);
-struct subnet_record *find_subnet_all(struct in_addr bcast_ip);
+struct subnet_record *find_subnet(struct in_addr ip);
+struct subnet_record *find_subnet_all(struct in_addr ip);
 void add_workgroup_to_subnet( struct subnet_record *d, char *group);
 void add_my_subnets(char *group);
 void write_browse_list(time_t t);
@@ -629,9 +646,13 @@ int main(int argc,char *argv[]);
 
 /*The following definitions come from  nmbsync.c  */
 
-char *getsmbpass(char *pass);
 void sync_browse_lists(struct subnet_record *d, struct work_record *work,
-               char *name, int nm_type, struct in_addr ip, BOOL local);
+                      char *name, int nm_type, struct in_addr ip, BOOL local);
+
+/*The following definitions come from  ntclient.c  */
+
+BOOL do_nt_login(char *desthost, char *myhostname,
+                               int Client, int cnum);
 
 /*The following definitions come from  params.c  */
 
@@ -670,6 +691,7 @@ void pcap_printer_fn(void (*fn)());
 
 /*The following definitions come from  pipenetlog.c  */
 
+BOOL get_md4pw(char *md4pw, char *mach_acct);
 BOOL api_netlogrpcTNP(int cnum,int uid, char *param,char *data,
                     int mdrcnt,int mprcnt,
                     char **rdata,char **rparam,
@@ -708,17 +730,10 @@ void initrpcreply(char *inbuf, char *q);
 void endrpcreply(char *inbuf, char *q, int datalen, int rtnval, int *rlen);
 BOOL name_to_rid(char *user_name, uint32 *u_rid, uint32 *g_rid);
 char *dom_sid_to_string(DOM_SID *sid);
-void make_dom_sid(DOM_SID *sid, char *domsid);
 int make_dom_sids(char *sids_str, DOM_SID *sids, int max_sids);
 int make_dom_gids(char *gids_str, DOM_GID *gids);
-void create_rpc_reply(RPC_HDR *hdr, uint32 call_id, int data_len);
-int make_rpc_reply(char *inbuf, char *q, int data_len);
-void make_uni_hdr(UNIHDR *hdr, int max_len, int len, uint16 terminate);
-void make_uni_hdr2(UNIHDR2 *hdr, int max_len, int len, uint16 terminate);
-void make_unistr(UNISTR *str, char *buf);
-void make_unistr2(UNISTR2 *str, char *buf, int len);
-void make_dom_rid2(DOM_RID2 *rid2, uint32 rid);
-void make_dom_sid2(DOM_SID2 *sid2, char *sid_str);
+int create_rpc_request(uint32 call_id, uint8 op_num, char *q, int data_len);
+int create_rpc_reply(uint32 call_id, char *q, int data_len);
 
 /*The following definitions come from  predict.c  */
 
@@ -863,18 +878,11 @@ int construct_reply(char *inbuf,char *outbuf,int size,int bufsize);
 
 /*The following definitions come from  shmem.c  */
 
-BOOL smb_shm_open(char *file_name, int size);
-BOOL smb_shm_close( void );
-int smb_shm_alloc(int size);
-BOOL smb_shm_free(int offset);
-int smb_shm_get_userdef_off(void);
-void *smb_shm_offset2addr(int offset);
-int smb_shm_addr2offset(void *addr);
-BOOL smb_shm_lock_hash_entry( unsigned int entry);
-BOOL smb_shm_unlock_hash_entry( unsigned int entry );
-BOOL smb_shm_get_usage(int *bytes_free,
-                  int *bytes_used,
-                  int *bytes_overhead);
+struct shmem_ops *smb_shm_open(char *file_name, int size, int ronly);
+
+/*The following definitions come from  shmem_sysv.c  */
+
+struct shmem_ops *sysv_shm_open(int size, int ronly);
 
 /*The following definitions come from  smbdes.c  */
 
@@ -888,30 +896,58 @@ void cred_hash2(unsigned char *out,unsigned char *in,unsigned char *key);
 void SMBencrypt(uchar *passwd, uchar *c8, uchar *p24);
 void E_md4hash(uchar *passwd, uchar *p16);
 void SMBNTencrypt(uchar *passwd, uchar *c8, uchar *p24);
+void nt_lm_owf_gen(char *pwd, char *nt_p16, char *p16);
 
 /*The following definitions come from  smbparse.c  */
 
 char* smb_io_utime(BOOL io, UTIME *t, char *q, char *base, int align, int depth);
 char* smb_io_time(BOOL io, NTTIME *nttime, char *q, char *base, int align, int depth);
+void make_dom_sid(DOM_SID *sid, char *domsid);
 char* smb_io_dom_sid(BOOL io, DOM_SID *sid, char *q, char *base, int align, int depth);
+void make_uni_hdr(UNIHDR *hdr, int max_len, int len, uint16 terminate);
 char* smb_io_unihdr(BOOL io, UNIHDR *hdr, char *q, char *base, int align, int depth);
+void make_uni_hdr2(UNIHDR2 *hdr, int max_len, int len, uint16 terminate);
 char* smb_io_unihdr2(BOOL io, UNIHDR2 *hdr2, char *q, char *base, int align, int depth);
+void make_unistr(UNISTR *str, char *buf);
 char* smb_io_unistr(BOOL io, UNISTR *uni, char *q, char *base, int align, int depth);
+void make_unistr2(UNISTR2 *str, char *buf, int len);
 char* smb_io_unistr2(BOOL io, UNISTR2 *uni2, char *q, char *base, int align, int depth);
+void make_dom_sid2(DOM_SID2 *sid2, char *sid_str);
 char* smb_io_dom_sid2(BOOL io, DOM_SID2 *sid2, char *q, char *base, int align, int depth);
+void make_dom_rid2(DOM_RID2 *rid2, uint32 rid);
 char* smb_io_dom_rid2(BOOL io, DOM_RID2 *rid2, char *q, char *base, int align, int depth);
+void make_clnt_srv(DOM_CLNT_SRV *log, char *logon_srv, char *comp_name);
 char* smb_io_clnt_srv(BOOL io, DOM_CLNT_SRV *log, char *q, char *base, int align, int depth);
+void make_log_info(DOM_LOG_INFO *log, char *logon_srv, char *acct_name,
+               uint16 sec_chan, char *comp_name);
 char* smb_io_log_info(BOOL io, DOM_LOG_INFO *log, char *q, char *base, int align, int depth);
 char* smb_io_chal(BOOL io, DOM_CHAL *chal, char *q, char *base, int align, int depth);
 char* smb_io_cred(BOOL io, DOM_CRED *cred, char *q, char *base, int align, int depth);
+void make_clnt_info2(DOM_CLNT_INFO2 *clnt,
+                               char *logon_srv, char *comp_name,
+                               DOM_CRED *clnt_cred);
 char* smb_io_clnt_info2(BOOL io, DOM_CLNT_INFO2 *clnt, char *q, char *base, int align, int depth);
 char* smb_io_clnt_info(BOOL io, DOM_CLNT_INFO *clnt, char *q, char *base, int align, int depth);
+void make_logon_id(DOM_LOGON_ID *log, uint32 log_id_low, uint32 log_id_high);
 char* smb_io_logon_id(BOOL io, DOM_LOGON_ID *log, char *q, char *base, int align, int depth);
+void make_arc4_owf(ARC4_OWF *hash, char data[16]);
 char* smb_io_arc4_owf(BOOL io, ARC4_OWF *hash, char *q, char *base, int align, int depth);
+void make_id_info1(DOM_ID_INFO_1 *id, char *domain_name,
+                               uint32 param_ctrl, uint32 log_id_low, uint32 log_id_high,
+                               char *user_name, char *wksta_name,
+                               char arc4_lm_owf[16], char arc4_nt_owf[16]);
 char* smb_io_id_info1(BOOL io, DOM_ID_INFO_1 *id, char *q, char *base, int align, int depth);
+void make_sam_info(DOM_SAM_INFO *sam,
+                               char *logon_srv, char *comp_name, DOM_CRED *clnt_cred,
+                               DOM_CRED *rtn_cred, uint16 logon_level, uint16 switch_value,
+                               DOM_ID_INFO_1 *id1);
 char* smb_io_sam_info(BOOL io, DOM_SAM_INFO *sam, char *q, char *base, int align, int depth);
 char* smb_io_gid(BOOL io, DOM_GID *gid, char *q, char *base, int align, int depth);
+void make_rpc_header(RPC_HDR *hdr, enum RPC_PKT_TYPE pkt_type,
+                               uint32 call_id, int data_len, uint8 opnum);
 char* smb_io_rpc_hdr(BOOL io, RPC_HDR *rpc, char *q, char *base, int align, int depth);
+void make_obj_attr(LSA_OBJ_ATTR *attr, uint32 attributes, uint32 sec_qos);
+char* smb_io_obj_attr(BOOL io, LSA_OBJ_ATTR *attr, char *q, char *base, int align, int depth);
 char* smb_io_pol_hnd(BOOL io, LSA_POL_HND *pol, char *q, char *base, int align, int depth);
 char* smb_io_dom_query_3(BOOL io, DOM_QUERY_3 *d_q, char *q, char *base, int align, int depth);
 char* smb_io_dom_query_5(BOOL io, DOM_QUERY_3 *d_q, char *q, char *base, int align, int depth);
@@ -1010,7 +1046,7 @@ char *ufc_crypt(char *key,char *salt);
 
 void init_uid(void);
 BOOL become_guest(void);
-BOOL become_user(int cnum, uint16 vuid);
+BOOL become_user(connection_struct *conn, int cnum, uint16 vuid);
 BOOL unbecome_user(void );
 int smbrun(char *cmd,char *outfile,BOOL shared);
 void become_root(BOOL save_dir) ;