cool! created higher-order function table for agent redirection.
[kai/samba-autobuild/.git] / source3 / include / proto.h
index 43780df9f82333e7805ab3cf274396373a872db5..5e423e37266aa6f2b3a7d0982be9c720c49c2fad 100644 (file)
@@ -138,6 +138,12 @@ BOOL allow_access(char *deny_list,char *allow_list,
                  char *cname,char *caddr);
 BOOL check_access(int sock, char *allow_list, char *deny_list);
 
+/*The following definitions come from  lib/agent.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/bitmap.c  */
 
 struct bitmap *bitmap_allocate(int n);
@@ -256,7 +262,7 @@ void initialize_multibyte_vectors( int client_codepage);
 
 /*The following definitions come from  lib/md4.c  */
 
-void mdfour(unsigned char *out, unsigned char *in, int n);
+void mdfour(unsigned char *out, const unsigned char *in, int n);
 
 /*The following definitions come from  lib/md5.c  */
 
@@ -295,13 +301,16 @@ 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);
-BOOL get_domain_sids(DOM_SID *sid3, DOM_SID *sid5, char *servers);
 void generate_wellknown_sids(void);
-BOOL generate_sam_sid(char *domain_name);
+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);
@@ -325,8 +334,8 @@ int smbrun(char *cmd,char *outfile,BOOL shared);
 
 /*The following definitions come from  lib/system.c  */
 
-int sys_select(int maxfd, fd_set *fds,struct timeval *tval);
-int sys_select(int maxfd, fd_set *fds,struct timeval *tval);
+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_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);
@@ -482,15 +491,22 @@ 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);
 
 /*The following definitions come from  lib/util_array.c  */
 
 void free_void_array(uint32 num_entries, void **entries,
                void(free_item)(void*));
-void* add_item_to_array(uint32 *len, void ***array, const void *item,
+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_array(uint32 num_entries, struct use_info **entries);
+struct use_info* add_use_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);
@@ -525,6 +541,24 @@ 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,
@@ -560,6 +594,9 @@ 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);
 
 /*The following definitions come from  lib/util_sock.c  */
 
@@ -582,6 +619,7 @@ 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);
 
 /*The following definitions come from  lib/util_status.c  */
 
@@ -622,6 +660,7 @@ 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 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);
@@ -644,6 +683,8 @@ void unistr2_free(UNISTR2 *name);
 
 /*The following definitions come from  libsmb/clientgen.c  */
 
+void copy_user_creds(struct user_credentials *to,
+                               const struct user_credentials *from);
 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);
@@ -676,7 +717,7 @@ BOOL cli_session_setup_x(struct cli_state *cli,
                                char *ntpass, int ntpasslen,
                                char *user_domain);
 BOOL cli_session_setup(struct cli_state *cli, 
-                               char *user, 
+                               char *myhostname, char *user,
                                char *pass, int passlen,
                                char *ntpass, int ntpasslen,
                                char *user_domain);
@@ -688,8 +729,9 @@ 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, char *fname);
-int cli_open(struct cli_state *cli, char *fname, int flags, int share_mode);
+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);
 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);
@@ -722,6 +764,7 @@ 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 user_credentials *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);
@@ -730,10 +773,17 @@ 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, 
-                               char *dest_host, struct in_addr *dest_ip,
+                               const 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 user_credentials *usr);
+BOOL cli_connect_servers_auth(struct cli_state *cli,
+                               char *p,
+                               const struct user_credentials *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, 
@@ -744,6 +794,7 @@ 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  */
 
@@ -775,7 +826,10 @@ 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);
 
 /*The following definitions come from  libsmb/nmblib.c  */
@@ -791,6 +845,8 @@ 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  */
 
@@ -806,23 +862,26 @@ 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(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_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 *nt_owf, size_t *nt_owf_len,
+                               uchar *sess_key);
 
 /*The following definitions come from  libsmb/smbdes.c  */
 
-void smbhash(unsigned char *out, const uchar *in, unsigned char *key, int forw);
+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);
@@ -835,17 +894,26 @@ void sam_pwd_hash(uint32 rid, const uchar *in, uchar *out, int forw);
 
 /*The following definitions come from  libsmb/smbencrypt.c  */
 
-void SMBencrypt(uchar *passwd, uchar *c8, uchar *p24);
-void SMBNTencrypt(uchar *passwd, uchar *c8, uchar *p24);
-void E_md4hash(uchar *passwd, uchar *p16);
+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 passwd[16], uchar *c8, uchar p24[24]);
+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);
@@ -853,15 +921,15 @@ void ntv2_owf_gen(const uchar owf[16],
                                const char *user_n,
                                const char *domain_n,
                                uchar kr_buf[16]);
-void NTLMSSPOWFencrypt(uchar passwd[8], uchar *ntlmchalresp, uchar p24[24]);
-BOOL make_oem_passwd_hash(char data[516], const char *passwd, uchar old_pw_hash[16], BOOL unicode);
-BOOL nt_decrypt_string2(STRING2 *out, const STRING2 *in, char nt_hash[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_passwd,
-                       int new_passwd_size, BOOL nt_pass_set);
+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);
 
@@ -1667,6 +1735,7 @@ 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  */
 
@@ -1730,108 +1799,153 @@ BOOL profile_setup(BOOL rdonly);
 
 /*The following definitions come from  rpc_client/cli_atsvc.c  */
 
-BOOL at_add_job(struct cli_state *cli, uint16 fnum, 
-               char *server_name, AT_JOB_INFO *info, char *command,
+BOOL at_add_job(
+               char *srv_name, AT_JOB_INFO *info, char *command,
                uint32 *jobid);
-BOOL at_del_job(struct cli_state *cli, uint16 fnum, 
-               char *server_name, uint32 min_jobid, uint32 max_jobid);
-BOOL at_enum_jobs(struct cli_state *cli, uint16 fnum, 
-                 char *server_name, uint32 *num_jobs,
-                 AT_ENUM_INFO *jobs, fstring *commands);
-BOOL at_query_job(struct cli_state *cli, uint16 fnum, char *server_name,
+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 do_event_open(struct cli_state *cli, uint16 fnum, char *log, POLICY_HND *hnd);
-BOOL do_event_close(struct cli_state *cli, uint16 fnum, POLICY_HND *hnd);
-BOOL do_event_numofeventlogrec(struct cli_state *cli, uint16 fnum, POLICY_HND *hnd, uint32 *number);
-BOOL do_event_readeventlog(struct cli_state *cli, uint16 fnum, POLICY_HND *hnd, 
+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(struct cli_state *cli, uint16 fnum,
+uint32 cli_nt_setup_creds( const char* srv_name, const char* myhostname,
                                const char* trust_acct,
-                               const char* srv_name,
                                unsigned char trust_pwd[16],
                                uint16 sec_chan);
-BOOL cli_nt_srv_pwset(struct cli_state *cli, uint16 fnum,
-                     unsigned char *new_hashof_trust_pwd, uint16 sec_chan);
-BOOL cli_nt_login_interactive(struct cli_state *cli, uint16 fnum, char *domain, char *username, 
-                              uint32 luid_low, char *password,
-                              NET_ID_INFO_CTR *ctr, NET_USER_INFO_3 *user_info3);
-BOOL cli_nt_login_network(struct cli_state *cli, uint16 fnum, char *domain, 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(struct cli_state *cli, uint16 fnum, NET_ID_INFO_CTR *ctr);
+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);
 
 /*The following definitions come from  rpc_client/cli_lsarpc.c  */
 
-BOOL lsa_open_policy(struct cli_state *cli, uint16 fnum,
-                       const char *server_name, POLICY_HND *hnd,
+BOOL get_domain_sids(const char *myname,
+                               DOM_SID *sid3, DOM_SID *sid5, char *domain);
+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 sec_qos);
-BOOL lsa_open_policy2(struct cli_state *cli, uint16 fnum,
-                       const char *server_name, POLICY_HND *hnd,
+BOOL lsa_open_policy2( const char *server_name, POLICY_HND *hnd,
                        BOOL sec_qos);
-BOOL lsa_open_secret(struct cli_state *cli, uint16 fnum,
-                    POLICY_HND *hnd_pol, char *secret_name, uint32 des_access,
-                    POLICY_HND *hnd_secret);
-BOOL lsa_query_secret(struct cli_state *cli, uint16 fnum,
-                     POLICY_HND *pol, STRING2 *enc_secret,
+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(struct cli_state *cli, uint16 fnum,
-                       POLICY_HND *hnd,
+BOOL lsa_lookup_names( POLICY_HND *hnd,
                        int num_names,
                        char **names,
                        DOM_SID **sids,
                        uint8 **types,
                        int *num_sids);
-BOOL lsa_lookup_sids(struct cli_state *cli, uint16 fnum,
-                       POLICY_HND *hnd,
+BOOL lsa_lookup_sids(POLICY_HND *hnd,
                        int num_sids,
                        DOM_SID **sids,
                        char ***names,
                        uint8 **types,
                        int *num_names);
-BOOL lsa_query_info_pol(struct cli_state *cli, uint16 fnum,
-                       POLICY_HND *hnd, uint16 info_class,
+BOOL lsa_query_info_pol(POLICY_HND *hnd, uint16 info_class,
                        fstring domain_name, DOM_SID *domain_sid);
-BOOL lsa_enum_trust_dom(struct cli_state *cli, uint16 fnum,
-                       POLICY_HND *hnd, uint32 *enum_ctx,
+BOOL lsa_enum_trust_dom(POLICY_HND *hnd, uint32 *enum_ctx,
                        uint32 *num_doms, char ***names,
                        DOM_SID ***sids);
-BOOL lsa_close(struct cli_state *cli, uint16 fnum, POLICY_HND *hnd);
+BOOL lsa_close(POLICY_HND *hnd);
 
 /*The following definitions come from  rpc_client/cli_netlogon.c  */
 
-BOOL cli_net_logon_ctrl2(struct cli_state *cli, uint16 nt_pipe_fnum, uint32 status_level);
-uint32 cli_net_auth2(struct cli_state *cli, uint16 nt_pipe_fnum,
+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 *srv_name, uint16 sec_chan, 
+                               const char *acct_name, 
+                               uint16 sec_chan, 
                                uint32 neg_flags, DOM_CHAL *srv_chal);
-uint32 cli_net_req_chal(struct cli_state *cli, uint16 nt_pipe_fnum, 
-                               const char *srv_name,
+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(struct cli_state *cli, uint16 nt_pipe_fnum,
-                      uint8 hashed_mach_pwd[16], uint16 sec_chan_type);
-BOOL cli_net_sam_logon(struct cli_state *cli, uint16 nt_pipe_fnum, NET_ID_INFO_CTR *ctr, 
-                       NET_USER_INFO_3 *user_info3);
-BOOL cli_net_sam_logoff(struct cli_state *cli, uint16 nt_pipe_fnum, NET_ID_INFO_CTR *ctr);
-BOOL cli_net_sam_sync(struct cli_state *cli, uint16 nt_pipe_fnum,
-                               const char* srv_name,
+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);
-BOOL do_sam_sync(struct cli_state *cli, uchar trust_passwd[16],
-                               const char* acct_name,
-                               const char* srv_name,
-                               SAM_DELTA_HDR hdr_deltas[MAX_SAM_DELTAS],
-                               SAM_DELTA_CTR deltas    [MAX_SAM_DELTAS],
-                               uint32 *num_deltas);
 
 /*The following definitions come from  rpc_client/cli_netlogon_sync.c  */
 
@@ -1849,321 +1963,423 @@ BOOL create_rpc_bind_resp(struct pwd_info *pwd,
 BOOL rpc_api_pipe_req(struct cli_state *cli, uint16 fnum, 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, char *pipe_name, uint16* fnum);
+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);
 
 /*The following definitions come from  rpc_client/cli_reg.c  */
 
-BOOL do_reg_connect(struct cli_state *cli, uint16 fnum,
+BOOL reg_connect( const char* srv_name,
                                const char *full_keyname,
                                char *key_name,
                                POLICY_HND *reg_hnd);
-BOOL do_reg_open_hkcr(struct cli_state *cli, uint16 fnum, uint16 unknown_0, uint32 level,
+BOOL reg_open_hkcr( struct cli_connection *con,
+                               uint16 unknown_0, uint32 level,
                                POLICY_HND *hnd);
-BOOL do_reg_open_hklm(struct cli_state *cli, uint16 fnum, uint16 unknown_0, uint32 level,
+BOOL reg_open_hklm( struct cli_connection *con,
+                               uint16 unknown_0, uint32 level,
                                POLICY_HND *hnd);
-BOOL do_reg_open_hku(struct cli_state *cli, uint16 fnum, uint16 unknown_0, uint32 level,
+BOOL reg_open_hku( struct cli_connection *con, 
+                               uint16 unknown_0, uint32 level,
                                POLICY_HND *hnd);
-BOOL do_reg_flush_key(struct cli_state *cli, uint16 fnum, POLICY_HND *hnd);
-BOOL do_reg_query_key(struct cli_state *cli, uint16 fnum, POLICY_HND *hnd,
+BOOL reg_flush_key( POLICY_HND *hnd);
+BOOL reg_query_key( POLICY_HND *hnd,
                                char *key_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 do_reg_unknown_1a(struct cli_state *cli, uint16 fnum, POLICY_HND *hnd, uint32 *unk);
-BOOL do_reg_query_info(struct cli_state *cli, uint16 fnum, POLICY_HND *hnd,
+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 do_reg_set_key_sec(struct cli_state *cli, uint16 fnum, POLICY_HND *hnd,
+BOOL reg_set_key_sec( POLICY_HND *hnd,
+                               uint32 sec_info,
                                uint32 sec_buf_size, SEC_DESC *sec_buf);
-BOOL do_reg_get_key_sec(struct cli_state *cli, uint16 fnum, POLICY_HND *hnd,
+BOOL reg_get_key_sec( POLICY_HND *hnd,
+                               uint32 sec_info,
                                uint32 *sec_buf_size, SEC_DESC_BUF *sec_buf);
-BOOL do_reg_delete_val(struct cli_state *cli, uint16 fnum, POLICY_HND *hnd, char *val_name);
-BOOL do_reg_delete_key(struct cli_state *cli, uint16 fnum, POLICY_HND *hnd, char *key_name);
-BOOL do_reg_create_key(struct cli_state *cli, uint16 fnum, POLICY_HND *hnd,
+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,
                                char *key_name, char *key_class,
                                SEC_ACCESS *sam_access,
                                POLICY_HND *key);
-BOOL do_reg_enum_key(struct cli_state *cli, uint16 fnum, POLICY_HND *hnd,
+BOOL reg_enum_key( POLICY_HND *hnd,
                                int key_index, char *key_name,
                                uint32 *unk_1, uint32 *unk_2,
                                time_t *mod_time);
-BOOL do_reg_create_val(struct cli_state *cli, uint16 fnum, POLICY_HND *hnd,
+BOOL reg_create_val( POLICY_HND *hnd,
                                char *val_name, uint32 type, BUFFER3 *data);
-BOOL do_reg_enum_val(struct cli_state *cli, uint16 fnum, POLICY_HND *hnd,
+BOOL reg_enum_val( POLICY_HND *hnd,
                                int val_index, int max_valnamelen, int max_valbufsize,
                                fstring val_name,
                                uint32 *val_type, BUFFER2 *value);
-BOOL do_reg_open_entry(struct cli_state *cli, uint16 fnum, POLICY_HND *hnd,
+BOOL reg_open_entry( POLICY_HND *hnd,
                                char *key_name, uint32 unk_0,
                                POLICY_HND *key_hnd);
-BOOL do_reg_close(struct cli_state *cli, uint16 fnum, POLICY_HND *hnd);
-BOOL do_reg_shutdown(struct cli_state *cli, uint16 fnum, 
-                               char *msg, uint32 timeout, uint16 flags);
+BOOL reg_close( POLICY_HND *hnd);
+BOOL reg_shutdown(const char *srv_name,
+                       const char *msg, uint32 timeout, uint16 flags);
 
 /*The following definitions come from  rpc_client/cli_samr.c  */
 
-BOOL create_samr_domain_user(struct cli_state *cli, uint16 fnum, 
-                               POLICY_HND *pol_open_domain,
-                               const char *acct_name, uint16 acb_info,
-                               uint32 *rid);
-BOOL create_samr_domain_alias(struct cli_state *cli, uint16 fnum, 
-                               POLICY_HND *pol_open_domain,
-                               const char *acct_name, const char *acct_desc,
-                               uint32 *rid);
-BOOL create_samr_domain_group(struct cli_state *cli, uint16 fnum, 
-                               POLICY_HND *pol_open_domain,
-                               const char *acct_name, const char *acct_desc,
-                               uint32 *rid);
-BOOL get_samr_query_usergroups(struct cli_state *cli, uint16 fnum, 
-                               const POLICY_HND *pol_open_domain,
-                               uint32 user_rid,
-                               uint32 *num_groups, DOM_GID **gid);
-BOOL delete_samr_dom_group(struct cli_state *cli, uint16 fnum, 
-                               POLICY_HND *pol_open_domain,
-                               uint32 group_rid);
-BOOL get_samr_query_groupmem(struct cli_state *cli, uint16 fnum, 
-                               const POLICY_HND *pol_open_domain,
-                               uint32 group_rid, uint32 *num_mem,
-                               uint32 **rid, uint32 **attr);
-BOOL delete_samr_dom_alias(struct cli_state *cli, uint16 fnum, 
-                               POLICY_HND *pol_open_domain,
-                               uint32 alias_rid);
-BOOL get_samr_query_aliasmem(struct cli_state *cli, uint16 fnum, 
-                               const POLICY_HND *pol_open_domain,
-                               uint32 alias_rid, uint32 *num_mem, DOM_SID2 *sid);
-BOOL set_samr_set_userinfo2(struct cli_state *cli, uint16 fnum, 
-                               POLICY_HND *pol_open_domain,
-                               uint32 info_level,
-                               uint32 user_rid, void *usr);
-BOOL set_samr_set_userinfo(struct cli_state *cli, uint16 fnum, 
-                               POLICY_HND *pol_open_domain,
-                               uint32 info_level,
-                               uint32 user_rid, void *usr);
-BOOL get_samr_query_userinfo(struct cli_state *cli, uint16 fnum, 
-                               POLICY_HND *pol_open_domain,
-                               uint32 info_level,
-                               uint32 user_rid, void *usr);
-BOOL get_samr_query_groupinfo(struct cli_state *cli, uint16 fnum, 
-                               const POLICY_HND *pol_open_domain,
-                               uint32 info_level,
-                               uint32 group_rid, GROUP_INFO_CTR *ctr);
-BOOL get_samr_query_aliasinfo(struct cli_state *cli, uint16 fnum, 
-                               const POLICY_HND *pol_open_domain,
-                               uint32 info_level,
-                               uint32 alias_rid, ALIAS_INFO_CTR *ctr);
-BOOL samr_chgpasswd_user(struct cli_state *cli, uint16 fnum,
+BOOL samr_chgpasswd_user( struct cli_connection *con, 
                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_state *cli, uint16 fnum, char *srv_name);
-BOOL samr_query_dom_info(struct cli_state *cli, uint16 fnum, 
-                               POLICY_HND *domain_pol, uint16 switch_value,
+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(struct cli_state *cli, uint16 fnum, 
-                               POLICY_HND *pol,
+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(struct cli_state *cli, uint16 fnum, 
-                               POLICY_HND *pol,
+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(struct cli_state *cli, uint16 fnum, 
-                               POLICY_HND *pol,
+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(struct cli_state *cli, uint16 fnum, 
-                               POLICY_HND *pol, uint32 *start_idx, 
+uint32 samr_enum_dom_users(  POLICY_HND *pol, uint32 *start_idx, 
                                uint16 acb_mask, uint16 unk_1, uint32 size,
                                struct acct_info **sam,
                                uint32 *num_sam_users);
-BOOL samr_connect(struct cli_state *cli, uint16 fnum, 
-                               const char *srv_name, uint32 unknown_0,
+BOOL samr_connect(  const char *srv_name, uint32 unknown_0,
                                POLICY_HND *connect_pol);
-BOOL samr_open_user(struct cli_state *cli, uint16 fnum, 
-                               const POLICY_HND *pol,
+BOOL samr_open_user(  const POLICY_HND *pol,
                                uint32 unk_0, uint32 rid, 
                                POLICY_HND *user_pol);
-BOOL samr_open_alias(struct cli_state *cli, uint16 fnum, 
-                               const POLICY_HND *domain_pol,
+BOOL samr_open_alias(  const POLICY_HND *domain_pol,
                                uint32 flags, uint32 rid,
                                POLICY_HND *alias_pol);
-BOOL samr_del_aliasmem(struct cli_state *cli, uint16 fnum, 
-                               POLICY_HND *alias_pol, DOM_SID *sid);
-BOOL samr_add_aliasmem(struct cli_state *cli, uint16 fnum, 
-                               POLICY_HND *alias_pol, DOM_SID *sid);
-BOOL samr_delete_dom_alias(struct cli_state *cli, uint16 fnum, 
-                               POLICY_HND *alias_pol);
-BOOL samr_create_dom_user(struct cli_state *cli, uint16 fnum, 
-                               POLICY_HND *domain_pol, const char *acct_name,
+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(struct cli_state *cli, uint16 fnum, 
-                               POLICY_HND *domain_pol, const char *acct_name,
+BOOL samr_create_dom_alias(  POLICY_HND *domain_pol, const char *acct_name,
                                POLICY_HND *alias_pol, uint32 *rid);
-BOOL samr_query_aliasinfo(struct cli_state *cli, uint16 fnum, 
-                               POLICY_HND *alias_pol, uint16 switch_value,
+BOOL samr_query_aliasinfo(  POLICY_HND *alias_pol, uint16 switch_value,
                                ALIAS_INFO_CTR *ctr);
-BOOL samr_set_aliasinfo(struct cli_state *cli, uint16 fnum, 
-                               POLICY_HND *alias_pol, ALIAS_INFO_CTR *ctr);
-BOOL samr_open_group(struct cli_state *cli, uint16 fnum, 
-                               const POLICY_HND *domain_pol,
+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(struct cli_state *cli, uint16 fnum, 
-                               POLICY_HND *group_pol, uint32 rid);
-BOOL samr_add_groupmem(struct cli_state *cli, uint16 fnum, 
-                               POLICY_HND *group_pol, uint32 rid);
-BOOL samr_delete_dom_group(struct cli_state *cli, uint16 fnum, POLICY_HND *group_pol);
-BOOL samr_create_dom_group(struct cli_state *cli, uint16 fnum, 
-                               POLICY_HND *domain_pol, const char *acct_name,
+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(struct cli_state *cli, uint16 fnum, 
-                               POLICY_HND *group_pol, GROUP_INFO_CTR *ctr);
-BOOL samr_open_domain(struct cli_state *cli, uint16 fnum, 
-                               const POLICY_HND *connect_pol,
+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,
                                POLICY_HND *domain_pol);
-BOOL samr_query_lookup_domain(struct cli_state *cli, uint16 fnum, 
-                             POLICY_HND *pol, const char *dom_name,
+BOOL samr_query_lookup_domain(  POLICY_HND *pol, const char *dom_name,
                              DOM_SID *dom_sid);
-BOOL samr_query_lookup_names(struct cli_state *cli, uint16 fnum, 
-                               POLICY_HND *pol, uint32 flags,
+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(struct cli_state *cli, uint16 fnum, 
-                               const POLICY_HND *pol, uint32 flags,
+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(struct cli_state *cli, uint16 fnum, 
-                               const POLICY_HND *alias_pol, 
+BOOL samr_query_aliasmem(  const POLICY_HND *alias_pol, 
                                uint32 *num_mem, DOM_SID2 *sid);
-BOOL samr_query_useraliases(struct cli_state *cli, uint16 fnum, 
-                               const POLICY_HND *pol,
+BOOL samr_query_useraliases(  const POLICY_HND *pol,
                                uint32 *ptr_sid, DOM_SID2 *sid,
                                uint32 *num_aliases, uint32 **rid);
-BOOL samr_query_groupmem(struct cli_state *cli, uint16 fnum, 
-                               POLICY_HND *group_pol, 
+BOOL samr_query_groupmem(  POLICY_HND *group_pol, 
                                uint32 *num_mem, uint32 **rid, uint32 **attr);
-BOOL samr_query_usergroups(struct cli_state *cli, uint16 fnum, 
-                               POLICY_HND *pol, uint32 *num_groups,
+BOOL samr_query_usergroups(  POLICY_HND *pol, uint32 *num_groups,
                                DOM_GID **gid);
-BOOL samr_query_groupinfo(struct cli_state *cli, uint16 fnum, 
-                               POLICY_HND *pol,
+BOOL samr_query_groupinfo(  POLICY_HND *pol,
                                uint16 switch_value, GROUP_INFO_CTR* ctr);
-BOOL samr_set_userinfo2(struct cli_state *cli, uint16 fnum, 
-                               POLICY_HND *pol, uint16 switch_value,
+BOOL samr_set_userinfo2(  POLICY_HND *pol, uint16 switch_value,
                                void* usr);
-BOOL samr_set_userinfo(struct cli_state *cli, uint16 fnum, 
-                               POLICY_HND *pol, uint16 switch_value, void* usr);
-BOOL samr_query_userinfo(struct cli_state *cli, uint16 fnum, 
-                               POLICY_HND *pol, uint16 switch_value, void* usr);
-BOOL samr_close(struct cli_state *cli, uint16 fnum, POLICY_HND *hnd);
-BOOL samr_query_dispinfo(struct cli_state *cli, uint16 fnum, 
-                               POLICY_HND *pol_open_domain, uint16 level,
+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(struct cli_state *cli, uint16 fnum,
-                       uint32 flags, const char *servername,
+BOOL spoolss_enum_printers(uint32 flags, const char *srv_name,
                        uint32 level,
                        uint32 *count,
                        void ***printers);
-uint32 spoolss_enum_jobs(struct cli_state *cli, uint16 fnum,
-                       const PRINTER_HND *hnd,
+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(struct cli_state *cli, uint16 fnum,
-                       const char *printername,
+BOOL spoolss_open_printer_ex( const char *printername,
                        uint32 cbbuf, uint32 devmod, uint32 des_access,
-                       const char *station,
-                       const char *username,
-                       PRINTER_HND *hnd);
-BOOL spoolss_closeprinter(struct cli_state *cli, uint16 fnum, PRINTER_HND *hnd);
+                       const char *station, const char *username,
+                       POLICY_HND *hnd);
+BOOL spoolss_closeprinter(POLICY_HND *hnd);
 
 /*The following definitions come from  rpc_client/cli_srvsvc.c  */
 
-BOOL do_srv_net_srv_tprt_enum(struct cli_state *cli, uint16 fnum,
-                       const char *server_name, 
+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 do_srv_net_srv_conn_enum(struct cli_state *cli, uint16 fnum,
-                       char *server_name, char *qual_name,
+BOOL srv_net_srv_conn_enum( char *srv_name, char *qual_name,
                        uint32 switch_value, SRV_CONN_INFO_CTR *ctr,
                        uint32 preferred_len,
                        ENUM_HND *hnd);
-BOOL do_srv_net_srv_sess_enum(struct cli_state *cli, uint16 fnum,
-                       char *server_name, char *qual_name, char *user_name,
+BOOL srv_net_srv_sess_enum( char *srv_name, char *qual_name, char *user_name,
                        uint32 switch_value, SRV_SESS_INFO_CTR *ctr,
                        uint32 preferred_len,
                        ENUM_HND *hnd);
-BOOL do_srv_net_srv_share_enum(struct cli_state *cli, uint16 fnum,
-                       char *server_name, 
+BOOL srv_net_srv_share_enum( char *srv_name, 
                        uint32 switch_value, SRV_SHARE_INFO_CTR *ctr,
                        uint32 preferred_len,
                        ENUM_HND *hnd);
-BOOL do_srv_net_srv_file_enum(struct cli_state *cli, uint16 fnum,
-                       char *server_name, char *qual_name, uint32 file_id,
+BOOL srv_net_srv_file_enum( char *srv_name, char *qual_name, uint32 file_id,
                        uint32 switch_value, SRV_FILE_INFO_CTR *ctr,
                        uint32 preferred_len,
                        ENUM_HND *hnd);
-BOOL do_srv_net_srv_get_info(struct cli_state *cli, uint16 fnum,
-                       char *server_name, uint32 switch_value, SRV_INFO_CTR *ctr);
-BOOL do_srv_net_remote_tod(struct cli_state *cli, uint16 fnum,
-                          char *server_name, TIME_OF_DAY_INFO *tod);
+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(struct cli_state *cli, uint16 fnum, 
-                               char *srv_name, char *db_name,
+BOOL svc_open_sc_man( const char *srv_name, char *db_name,
                                uint32 des_access,
                                POLICY_HND *hnd);
-BOOL svc_open_service(struct cli_state *cli, uint16 fnum, 
-                               POLICY_HND *scm_hnd,
+BOOL svc_open_service( POLICY_HND *scm_hnd,
                                const char *srv_name,
                                uint32 des_access,
                                POLICY_HND *hnd);
-BOOL svc_enum_svcs(struct cli_state *cli, uint16 fnum, 
-                               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(struct cli_state *cli, uint16 fnum,
-                               POLICY_HND *hnd,
+BOOL svc_stop_service( POLICY_HND *hnd,
                                uint32 unknown);
-BOOL svc_start_service(struct cli_state *cli, uint16 fnum,
-                               POLICY_HND *hnd,
+BOOL svc_start_service( POLICY_HND *hnd,
                                uint32 argc,
                                char **argv);
-BOOL svc_query_svc_cfg(struct cli_state *cli, uint16 fnum,
-                               POLICY_HND *hnd,
+BOOL svc_query_svc_cfg( POLICY_HND *hnd,
                                QUERY_SERVICE_CONFIG *cfg,
                                uint32 *buf_size);
-BOOL svc_close(struct cli_state *cli, uint16 fnum, POLICY_HND *hnd);
+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 user_credentials *usr_creds,
+                               BOOL redir);
+BOOL cli_net_use_del(const char* srv_name,
+                               const struct user_credentials *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);
 
 /*The following definitions come from  rpc_client/cli_wkssvc.c  */
 
-BOOL do_wks_query_info(struct cli_state *cli, uint16 fnum, 
-                       char *server_name, uint32 switch_value,
+BOOL wks_query_info( char *srv_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_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,
@@ -2182,9 +2398,20 @@ 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_eventlog.c  */
 
-BOOL make_eventlog_q_open(EVENTLOG_Q_OPEN *q_u, char *journal, char *unk);
+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);
@@ -2219,8 +2446,8 @@ BOOL lsa_io_q_open_pol2(char *desc,  LSA_Q_OPEN_POL2 *r_q, prs_struct *ps, int d
 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, POLICY_HND *pol_hnd,
-                       char *secret_name, uint32 desired_access);
+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);
@@ -2295,7 +2522,8 @@ 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, char *buf, int len);
+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);
@@ -2310,12 +2538,12 @@ 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,
-                               char *logon_srv, char *comp_name,
+                               const char *logon_srv, const 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,
-               char *logon_srv, char *acct_name,
-               uint16 sec_chan, char *comp_name,
+               const char *logon_srv, const char *acct_name,
+               uint16 sec_chan, const 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]);
@@ -2328,6 +2556,11 @@ 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,
                                uint32 flags, uint32 pdc_status, uint32 logon_attempts,
@@ -2354,25 +2587,29 @@ BOOL make_q_auth_2(NET_Q_AUTH_2 *q_a,
                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, char *logon_srv, char *acct_name, 
-                uint16 sec_chan, char *comp_name, DOM_CRED *cred, char nt_cypher[16]);
+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, char *domain_name,
+BOOL make_id_info1(NET_ID_INFO_1 *id, const char *domain_name,
                                uint32 param_ctrl, uint32 log_id_low, uint32 log_id_high,
-                               char *user_name, char *wksta_name,
+                               const char *user_name, const 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, char *domain_name,
-                               uint32 param_ctrl, uint32 log_id_low, uint32 log_id_high,
-                               char *user_name, char *wksta_name,
+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,
                                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,
-                               char *logon_srv, char *comp_name, DOM_CRED *clnt_cred,
+                               const char *logon_srv, const char *comp_name,
+                               DOM_CRED *clnt_cred,
                                DOM_CRED *rtn_cred, uint16 logon_level,
-                               NET_ID_INFO_CTR *ctr, uint16 validation_level);
+                               NET_ID_INFO_CTR *ctr);
 BOOL make_net_user_info3(NET_USER_INFO_3 *usr,
 
        NTTIME *logon_time,
@@ -2495,10 +2732,12 @@ BOOL make_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);
 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);
 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);
@@ -2529,7 +2768,7 @@ BOOL make_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,
-                               char *msg, uint32 timeout, uint16 flags);
+                               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);
 
@@ -2849,7 +3088,7 @@ BOOL make_sam_user_info11(SAM_USER_INFO_11 *usr,
                                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]);
+       char newpass[516], uint16 passlen);
 BOOL make_sam_user_info23W(SAM_USER_INFO_23 *usr,
 
        NTTIME *logon_time, /* all zeros */
@@ -3010,12 +3249,12 @@ BOOL make_spoolss_q_open_printer_ex(SPOOL_Q_OPEN_PRINTER_EX *q_u,
                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,
-                               PRINTER_HND *handle,
+                               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, PRINTER_HND *hnd);
+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);
@@ -3058,7 +3297,7 @@ 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,
-                               PRINTER_HND *hnd,
+                               POLICY_HND *hnd,
                                uint32 level,
                                uint32 buf_size);
 BOOL spoolss_io_q_getprinter(char *desc, SPOOL_Q_GETPRINTER *q_u,
@@ -3071,7 +3310,7 @@ BOOL spoolss_io_r_addjob(char *desc, SPOOL_R_ADDJOB *r_u, prs_struct *ps, int de
 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 PRINTER_HND *hnd,
+BOOL make_spoolss_q_enumjobs(SPOOL_Q_ENUMJOBS *q_u, const POLICY_HND *hnd,
                                uint32 firstjob,
                                uint32 numofjobs,
                                uint32 level,
@@ -3229,7 +3468,7 @@ BOOL srv_io_r_net_remote_tod(char *desc, SRV_R_NET_REMOTE_TOD *r_n, prs_struct *
 /*The following definitions come from  rpc_parse/parse_svc.c  */
 
 BOOL make_svc_q_open_sc_man(SVC_Q_OPEN_SC_MAN *q_u,
-                               char *server, char *database,
+                               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,
@@ -3284,6 +3523,19 @@ BOOL svc_io_r_query_disp_name(char *desc, SVC_R_QUERY_DISP_NAME *r_u, prs_struct
 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  */
 
@@ -3298,6 +3550,10 @@ BOOL make_wks_r_query_info(WKS_R_QUERY_INFO *r_u,
                                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(pipes_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);
@@ -3323,19 +3579,6 @@ uint32 lookup_name(char *name, DOM_SID *sid, uint8 *type);
 
 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(pipes_struct *p, prs_struct *data);
@@ -3392,191 +3635,221 @@ BOOL api_wkssvc_rpc(pipes_struct *p, prs_struct *data);
 
 /*The following definitions come from  rpcclient/cmd_atsvc.c  */
 
-void cmd_at(struct client_info *info);
+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);
+void cmd_eventlog(struct client_info *info, int argc, char *argv[]);
 
 /*The following definitions come from  rpcclient/cmd_lsarpc.c  */
 
-void cmd_lsa_enum_trust_dom(struct client_info *info);
-void cmd_lsa_query_info(struct client_info *info);
-void cmd_lsa_lookup_names(struct client_info *info);
-void cmd_lsa_lookup_sids(struct client_info *info);
-void cmd_lsa_query_secret(struct client_info *info);
+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[]);
 
 /*The following definitions come from  rpcclient/cmd_netlogon.c  */
 
-void cmd_netlogon_login_test(struct client_info *info);
-void cmd_netlogon_domain_test(struct client_info *info);
-void cmd_sam_sync(struct client_info *info);
+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[]);
 
 /*The following definitions come from  rpcclient/cmd_reg.c  */
 
-BOOL msrpc_reg_enum_key(struct cli_state *cli, const char* full_keyname,
+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);
-void cmd_reg_query_info(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);
-void cmd_reg_shutdown(struct client_info *info);
+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[]);
 
 /*The following definitions come from  rpcclient/cmd_samr.c  */
 
-uint32 sam_query_usergroups(struct cli_state *cli, uint16 fnum,
-                               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));
-int msrpc_sam_enum_users(struct cli_state *cli,
-                       const char* domain,
-                       const DOM_SID *sid1,
-                       const char* srv_name,
-                       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(struct client_info *info, const DOM_SID *sid1,
-                               uint32 switch_value, SAM_UNK_CTR *ctr);
-BOOL sam_query_aliasmem(struct cli_state *cli, uint16 fnum,
-                               const POLICY_HND *pol_dom,
-                               uint32 alias_rid,
-                               uint32 *num_names,
-                               DOM_SID ***sids,
-                               char ***name,
-                               uint8 **type);
-BOOL sam_query_groupmem(struct cli_state *cli, uint16 fnum,
-                               const POLICY_HND *pol_dom,
-                               uint32 group_rid,
-                               uint32 *num_names,
-                               uint32 **rid_mem,
-                               char ***name,
-                               uint32 **type);
-uint32 msrpc_sam_enum_domains(struct cli_state *cli,
-                               const char* srv_name,
-                               struct acct_info **sam,
-                               uint32 *num_sam_entries,
-                               DOMAIN_FN(dom_fn));
-uint32 msrpc_sam_enum_groups(struct cli_state *cli,
-                               const char* domain,
-                               const DOM_SID *sid1,
-                               const char* srv_name,
-                               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(struct cli_state *cli,
-                               const char* domain,
-                               const DOM_SID *sid1,
-                               const char* srv_name,
-                               struct acct_info **sam,
-                               uint32 *num_sam_entries,
-                               ALIAS_FN(als_fn),
-                               ALIAS_INFO_FN(als_inf_fn),
-                               ALIAS_MEM_FN(als_mem_fn));
-void cmd_sam_ntchange_pwd(struct client_info *info);
-void cmd_sam_test(struct client_info *info);
-void cmd_sam_lookup_domain(struct client_info *info);
-void cmd_sam_del_aliasmem(struct client_info *info);
-void cmd_sam_delete_dom_alias(struct client_info *info);
-void cmd_sam_add_aliasmem(struct client_info *info);
-void cmd_sam_create_dom_user(struct client_info *info);
-void cmd_sam_create_dom_alias(struct client_info *info);
-void cmd_sam_del_groupmem(struct client_info *info);
-void cmd_sam_delete_dom_group(struct client_info *info);
-void cmd_sam_add_groupmem(struct client_info *info);
-void cmd_sam_create_dom_group(struct client_info *info);
-void cmd_sam_enum_users(struct client_info *info);
-void cmd_sam_query_groupmem(struct client_info *info);
-void cmd_sam_query_group(struct client_info *info);
-void cmd_sam_query_user(struct client_info *info);
-void cmd_sam_set_userinfo2(struct client_info *info);
-void cmd_sam_set_userinfo(struct client_info *info);
-void cmd_sam_query_dispinfo(struct client_info *info);
-void cmd_sam_query_dominfo(struct client_info *info);
-void cmd_sam_query_aliasmem(struct client_info *info);
-void cmd_sam_query_alias(struct client_info *info);
-void cmd_sam_enum_aliases(struct client_info *info);
-void cmd_sam_enum_groups(struct client_info *info);
-void cmd_sam_enum_domains(struct client_info *info);
+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(struct cli_state *cli,
-                               const char* srv_name,
+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);
-void cmd_spoolss_open_printer_ex(struct client_info *info);
-BOOL msrpc_spoolss_enum_jobs(struct cli_state *cli,
-                               const char* srv_name,
-                               const char* user_name,
-                               const char* printer_name,
+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);
+void cmd_spoolss_enum_jobs(struct client_info *info, int argc, char *argv[]);
 
 /*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);
-BOOL msrpc_srv_enum_tprt(struct cli_state *cli,
-                               const char* dest_srv,
+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);
-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);
-void cmd_time(struct client_info *info);
+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(struct cli_state *cli, uint16 fnum,
-                               POLICY_HND *pol_scm,
+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);
-BOOL msrpc_svc_enum(struct client_info *info,
+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);
-void cmd_svc_stop(struct client_info *info);
-void cmd_svc_start(struct client_info *info);
+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[]);
 
 /*The following definitions come from  rpcclient/cmd_wkssvc.c  */
 
-void cmd_wks_query_info(struct client_info *info);
+void cmd_wks_query_info(struct client_info *info, int argc, char *argv[]);
+
+/*The following definitions come from  rpcclient/display_at.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.c  */
+/*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);
@@ -3636,50 +3909,20 @@ void display_share(FILE *out_hnd, enum action_type action,
 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 passwd);
+                               char *const path, char *const password);
 void display_name(FILE *out_hnd, enum action_type action, 
                                char *const sname);
-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);
-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);
-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_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);
-void display_at_enum_info(FILE *out_hnd, enum action_type action, 
-                    uint32 num_jobs, const AT_ENUM_INFO *const jobs, const fstring *const commands);
-void display_at_job_info(FILE *out_hnd, enum action_type action, 
-                    AT_JOB_INFO *const job, fstring command);
-void display_eventlog_eventrecord(FILE *out_hnd, enum action_type action, EVENTLOGRECORD *const ev);
+
+/*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);
@@ -3687,36 +3930,10 @@ 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_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_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/rpcclient.c  */
 
-void rpcclient_init(void);
+void readline_init(void);
 
 /*The following definitions come from  smbd/blocking.c  */
 
@@ -3939,8 +4156,9 @@ void add_session_user(char *user);
 BOOL smb_password_ok(struct smb_passwd *smb_pass, uchar chal[8],
                                const char *user, const char *domain,
                                uchar *lm_pass, size_t lm_pwd_len,
-                               uchar *nt_pass, size_t nt_pwd_len);
-BOOL pass_check_smb(char *user, char *domain, uchar *chal,
+                               uchar *nt_pass, size_t nt_pwd_len,
+                               uchar 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]);
@@ -3956,8 +4174,10 @@ 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);
+                               char *acct_name, uint16 acct_type,
+                               char *smb_apasswd, int smb_apasslen, 
+                               char *smb_ntpasswd, int smb_ntpasslen,
+                               uchar user_sess_key[16]);
 
 /*The following definitions come from  smbd/pipes.c  */