diff options
author | Jeremy Allison <jra@samba.org> | 2002-04-30 13:28:41 +0000 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2002-04-30 13:28:41 +0000 |
commit | d04b55f2186fb8af998cf61c576771a5f72f4892 (patch) | |
tree | 9ff8c3a7cf34cefc0ee9a550a3bb1236a9e77595 /source/rpc_parse/parse_srv.c | |
parent | 73267ca42d9eddabb71b31b4c5068ebbe7bc9f7c (diff) | |
download | samba-d04b55f2186fb8af998cf61c576771a5f72f4892.tar.gz samba-d04b55f2186fb8af998cf61c576771a5f72f4892.tar.xz samba-d04b55f2186fb8af998cf61c576771a5f72f4892.zip |
Start of merge to 2_2_RELEASE branch for release.
Jeremy.
Diffstat (limited to 'source/rpc_parse/parse_srv.c')
-rw-r--r-- | source/rpc_parse/parse_srv.c | 187 |
1 files changed, 151 insertions, 36 deletions
diff --git a/source/rpc_parse/parse_srv.c b/source/rpc_parse/parse_srv.c index fa52b244956..3a1c13c7ea0 100644 --- a/source/rpc_parse/parse_srv.c +++ b/source/rpc_parse/parse_srv.c @@ -119,33 +119,34 @@ void init_srv_share_info2_str(SH_INFO_2_STR *sh2, Reads or writes a structure. ********************************************************************/ -static BOOL srv_io_share_info2_str(char *desc, SH_INFO_2_STR *sh2, prs_struct *ps, int depth) +static BOOL srv_io_share_info2_str(char *desc, SH_INFO_2 *sh, SH_INFO_2_STR *sh2, prs_struct *ps, int depth) { if (sh2 == NULL) return False; + if (UNMARSHALLING(ps)) + ZERO_STRUCTP(sh2); + prs_debug(ps, depth, desc, "srv_io_share_info2_str"); depth++; if(!prs_align(ps)) return False; - if(!smb_io_unistr2("", &sh2->uni_netname, True, ps, depth)) - return False; + if (sh->ptr_netname) + if(!smb_io_unistr2("", &sh2->uni_netname, True, ps, depth)) + return False; - if(!prs_align(ps)) - return False; - if(!smb_io_unistr2("", &sh2->uni_remark, True, ps, depth)) - return False; + if (sh->ptr_remark) + if(!smb_io_unistr2("", &sh2->uni_remark, True, ps, depth)) + return False; - if(!prs_align(ps)) - return False; - if(!smb_io_unistr2("", &sh2->uni_path, True, ps, depth)) - return False; + if (sh->ptr_netname) + if(!smb_io_unistr2("", &sh2->uni_path, True, ps, depth)) + return False; - if(!prs_align(ps)) - return False; - if(!smb_io_unistr2("", &sh2->uni_passwd, True, ps, depth)) - return False; + if (sh->ptr_passwd) + if(!smb_io_unistr2("", &sh2->uni_passwd, True, ps, depth)) + return False; return True; } @@ -208,6 +209,87 @@ static BOOL srv_io_share_info2(char *desc, SH_INFO_2 *sh2, prs_struct *ps, int d } /******************************************************************* + Inits a SH_INFO_2 structure +*******************************************************************/ + +void init_srv_share_info501(SH_INFO_501 *sh501, char *net_name, uint32 type, char *remark, uint32 csc_policy) +{ + DEBUG(5,("init_srv_share_info501: %s %8x %s %08x\n", net_name, type, + remark, csc_policy)); + + ZERO_STRUCTP(sh501); + + sh501->ptr_netname = (net_name != NULL) ? 1 : 0; + sh501->type = type; + sh501->ptr_remark = (remark != NULL) ? 1 : 0; + sh501->csc_policy = csc_policy; +} + +/******************************************************************* + Reads of writes a structure. +*******************************************************************/ + +static BOOL srv_io_share_info501(char *desc, SH_INFO_501 *sh501, prs_struct *ps, int depth) +{ + if (sh501 == NULL) + return False; + + prs_debug(ps, depth, desc, "srv_io_share_info501"); + depth++; + + if (!prs_align(ps)) + return False; + + if (!prs_uint32("ptr_netname", ps, depth, &sh501->ptr_netname)) + return False; + if (!prs_uint32("type ", ps, depth, &sh501->type)) + return False; + if (!prs_uint32("ptr_remark ", ps, depth, &sh501->ptr_remark)) + return False; + if (!prs_uint32("csc_policy ", ps, depth, &sh501->csc_policy)) + return False; + + return True; +} + +/******************************************************************** + Inits a SH_INFO_501_STR structure +********************************************************************/ + +void init_srv_share_info501_str(SH_INFO_501_STR *sh501, char *net_name, char *remark) +{ + DEBUG(5,("init_srv_share_info501_str\n")); + + init_unistr2(&sh501->uni_netname, net_name, strlen(net_name)+1); + init_unistr2(&sh501->uni_remark, remark, strlen(remark)+1); +} + +/******************************************************************* + Reads or writes a structure. +********************************************************************/ + +static BOOL srv_io_share_info501_str(char *desc, SH_INFO_501_STR *sh501, prs_struct *ps, int depth) +{ + if (sh501 == NULL) + return False; + + prs_debug(ps, depth, desc, "srv_io_share_info501_str"); + depth++; + + if(!prs_align(ps)) + return False; + if(!smb_io_unistr2("", &sh501->uni_netname, True, ps, depth)) + return False; + + if(!prs_align(ps)) + return False; + if(!smb_io_unistr2("", &sh501->uni_remark, True, ps, depth)) + return False; + + return True; +} + +/******************************************************************* Inits a SH_INFO_502 structure ********************************************************************/ @@ -372,7 +454,7 @@ static BOOL srv_io_share_info1005(char* desc, SRV_SHARE_INFO_1005* sh1005, if(!prs_align(ps)) return False; - if(!prs_uint32("dfs_root_flag", ps, depth, &sh1005->dfs_root_flag)) + if(!prs_uint32("misc_flags", ps, depth, &sh1005->misc_flags)) return False; return True; @@ -495,7 +577,33 @@ static BOOL srv_io_srv_share_ctr(char *desc, SRV_SHARE_INFO_CTR *ctr, prs_struct } for (i = 0; i < num_entries; i++) { - if(!srv_io_share_info2_str("", &info2[i].info_2_str, ps, depth)) + if(!srv_io_share_info2_str("", &info2[i].info_2, &info2[i].info_2_str, ps, depth)) + return False; + } + + break; + } + + case 501: + { + SRV_SHARE_INFO_501 *info501 = ctr->share.info501; + int num_entries = ctr->num_entries; + int i; + + if (UNMARSHALLING(ps)) { + if (!(info501 = (SRV_SHARE_INFO_501 *) prs_alloc_mem(ps, num_entries * + sizeof (SRV_SHARE_INFO_501)))) + return False; + ctr->share.info501 = info501; + } + + for (i = 0; i < num_entries; i++) { + if (!srv_io_share_info501("", &info501[i].info_501, ps, depth)) + return False; + } + + for (i = 0; i < num_entries; i++) { + if (!srv_io_share_info501_str("", &info501[i].info_501_str, ps, depth)) return False; } @@ -614,7 +722,7 @@ BOOL srv_io_r_net_share_enum(char *desc, SRV_R_NET_SHARE_ENUM *r_n, prs_struct * return False; if(!smb_io_enum_hnd("enum_hnd", &r_n->enum_hnd, ps, depth)) return False; - if(!prs_ntstatus("status ", ps, depth, &r_n->status)) + if(!prs_werror("status ", ps, depth, &r_n->status)) return False; return True; @@ -687,10 +795,17 @@ static BOOL srv_io_srv_share_info(char *desc, prs_struct *ps, int depth, SRV_SHA if(!srv_io_share_info2("", &r_n->share.info2.info_2, ps, depth)) return False; - if(!srv_io_share_info2_str("", &r_n->share.info2.info_2_str, ps, depth)) + if(!srv_io_share_info2_str("", &r_n->share.info2.info_2, &r_n->share.info2.info_2_str, ps, depth)) return False; break; + case 501: + if (!srv_io_share_info501("", &r_n->share.info501.info_501, ps, depth)) + return False; + if (!srv_io_share_info501_str("", &r_n->share.info501.info_501_str, ps, depth)) + return False; + break; + case 502: if(!srv_io_share_info502("", &r_n->share.info502.info_502, ps, depth)) return False; @@ -739,7 +854,7 @@ BOOL srv_io_r_net_share_get_info(char *desc, SRV_R_NET_SHARE_GET_INFO *r_n, prs_ if(!prs_align(ps)) return False; - if(!prs_ntstatus("status", ps, depth, &r_n->status)) + if(!prs_werror("status", ps, depth, &r_n->status)) return False; return True; @@ -800,7 +915,7 @@ BOOL srv_io_r_net_share_set_info(char *desc, SRV_R_NET_SHARE_SET_INFO *q_n, prs_ if(!prs_uint32("switch_value ", ps, depth, &q_n->switch_value)) return False; - if(!prs_ntstatus("status ", ps, depth, &q_n->status)) + if(!prs_werror("status ", ps, depth, &q_n->status)) return False; return True; @@ -858,7 +973,7 @@ BOOL srv_io_r_net_share_add(char *desc, SRV_R_NET_SHARE_ADD *q_n, prs_struct *ps if(!prs_uint32("switch_value ", ps, depth, &q_n->switch_value)) return False; - if(!prs_ntstatus("status ", ps, depth, &q_n->status)) + if(!prs_werror("status ", ps, depth, &q_n->status)) return False; return True; @@ -905,7 +1020,7 @@ BOOL srv_io_r_net_share_del(char *desc, SRV_R_NET_SHARE_DEL *q_n, prs_struct *ps if(!prs_align(ps)) return False; - if(!prs_ntstatus("status ", ps, depth, &q_n->status)) + if(!prs_werror("status ", ps, depth, &q_n->status)) return False; return True; @@ -1308,7 +1423,7 @@ BOOL srv_io_r_net_sess_enum(char *desc, SRV_R_NET_SESS_ENUM *r_n, prs_struct *ps return False; if(!smb_io_enum_hnd("enum_hnd", &r_n->enum_hnd, ps, depth)) return False; - if(!prs_ntstatus("status ", ps, depth, &r_n->status)) + if(!prs_werror("status ", ps, depth, &r_n->status)) return False; return True; @@ -1673,7 +1788,7 @@ BOOL srv_io_r_net_conn_enum(char *desc, SRV_R_NET_CONN_ENUM *r_n, prs_struct *p return False; if(!smb_io_enum_hnd("enum_hnd", &r_n->enum_hnd, ps, depth)) return False; - if(!prs_ntstatus("status ", ps, depth, &r_n->status)) + if(!prs_werror("status ", ps, depth, &r_n->status)) return False; return True; @@ -1951,7 +2066,7 @@ BOOL srv_io_r_net_file_enum(char *desc, SRV_R_NET_FILE_ENUM *r_n, prs_struct *ps return False; if(!smb_io_enum_hnd("enum_hnd", &r_n->enum_hnd, ps, depth)) return False; - if(!prs_ntstatus("status ", ps, depth, &r_n->status)) + if(!prs_werror("status ", ps, depth, &r_n->status)) return False; return True; @@ -2237,13 +2352,13 @@ BOOL srv_io_q_net_srv_get_info(char *desc, SRV_Q_NET_SRV_GET_INFO *q_n, prs_stru ********************************************************************/ void init_srv_r_net_srv_get_info(SRV_R_NET_SRV_GET_INFO *srv, - uint32 switch_value, SRV_INFO_CTR *ctr, NTSTATUS status) + uint32 switch_value, SRV_INFO_CTR *ctr, WERROR status) { DEBUG(5,("init_srv_r_net_srv_get_info\n")); srv->ctr = ctr; - if (NT_STATUS_IS_OK(status)) { + if (W_ERROR_IS_OK(status)) { srv->ctr->switch_value = switch_value; srv->ctr->ptr_srv_ctr = 1; } else { @@ -2259,7 +2374,7 @@ void init_srv_r_net_srv_get_info(SRV_R_NET_SRV_GET_INFO *srv, ********************************************************************/ void init_srv_r_net_srv_set_info(SRV_R_NET_SRV_SET_INFO *srv, - uint32 switch_value, NTSTATUS status) + uint32 switch_value, WERROR status) { DEBUG(5,("init_srv_r_net_srv_set_info\n")); @@ -2323,7 +2438,7 @@ BOOL srv_io_r_net_srv_get_info(char *desc, SRV_R_NET_SRV_GET_INFO *r_n, prs_stru if(!srv_io_info_ctr("ctr", r_n->ctr, ps, depth)) return False; - if(!prs_ntstatus("status ", ps, depth, &r_n->status)) + if(!prs_werror("status ", ps, depth, &r_n->status)) return False; return True; @@ -2345,7 +2460,7 @@ BOOL srv_io_r_net_srv_set_info(char *desc, SRV_R_NET_SRV_SET_INFO *r_n, if(!prs_uint32("switch_value ", ps, depth, &r_n->switch_value)) return False; - if(!prs_ntstatus("status ", ps, depth, &r_n->status)) + if(!prs_werror("status ", ps, depth, &r_n->status)) return False; return True; @@ -2464,7 +2579,7 @@ BOOL srv_io_r_net_remote_tod(char *desc, SRV_R_NET_REMOTE_TOD *r_n, prs_struct * if(!srv_io_time_of_day_info("tod", r_n->tod, ps, depth)) return False; - if(!prs_ntstatus("status ", ps, depth, &r_n->status)) + if(!prs_werror("status ", ps, depth, &r_n->status)) return False; return True; @@ -2563,7 +2678,7 @@ BOOL srv_io_r_net_disk_enum(char *desc, SRV_R_NET_DISK_ENUM *r_n, prs_struct *ps if(!smb_io_enum_hnd("enum_hnd", &r_n->enum_hnd, ps, depth)) return False; - if(!prs_ntstatus("status", ps, depth, &r_n->status)) + if(!prs_werror("status", ps, depth, &r_n->status)) return False; return True; @@ -2623,7 +2738,7 @@ BOOL srv_io_r_net_name_validate(char *desc, SRV_R_NET_NAME_VALIDATE *r_n, prs_st if(!prs_align(ps)) return False; - if(!prs_ntstatus("status", ps, depth, &r_n->status)) + if(!prs_werror("status", ps, depth, &r_n->status)) return False; return True; @@ -2710,7 +2825,7 @@ BOOL srv_io_r_net_file_query_secdesc(char *desc, SRV_R_NET_FILE_QUERY_SECDESC *r if(!prs_align(ps)) return False; - if(!prs_ntstatus("status", ps, depth, &r_n->status)) + if(!prs_werror("status", ps, depth, &r_n->status)) return False; return True; @@ -2788,7 +2903,7 @@ BOOL srv_io_r_net_file_set_secdesc(char *desc, SRV_R_NET_FILE_SET_SECDESC *r_n, if(!prs_align(ps)) return False; - if(!prs_ntstatus("status", ps, depth, &r_n->status)) + if(!prs_werror("status", ps, depth, &r_n->status)) return False; return True; |