static BOOL net_io_netinfo_2(char *desc, NETLOGON_INFO_2 *info, prs_struct *ps, int depth) { if (info == NULL) return False; prs_debug(ps, depth, desc, "net_io_netinfo_2"); depth++; if(!prs_align(ps)) return False; if(!prs_uint32("flags ", ps, depth, &info->flags)) return False; if(!prs_uint32("pdc_status ", ps, depth, &info->pdc_status)) return False; if(!prs_uint32("ptr_trusted_dc_name", ps, depth, &info->ptr_trusted_dc_name)) return False; if(!prs_uint32("tc_status ", ps, depth, &info->tc_status)) return False; if (info->ptr_trusted_dc_name != 0) { if(!smb_io_unistr2("unistr2", &info->uni_trusted_dc_name, info->ptr_trusted_dc_name, ps, depth)) return False; } if(!prs_align(ps)) return False; return True; }
BOOL svcctl_io_r_enum_dependent_services(const char *desc, SVCCTL_R_ENUM_DEPENDENT_SERVICES *r_u, prs_struct *ps, int depth) { if (r_u == NULL) return False; prs_debug(ps, depth, desc, "svcctl_io_r_enum_dependent_services"); depth++; if(!prs_align(ps)) return False; if (!prs_rpcbuffer("", ps, depth, &r_u->buffer)) return False; if(!prs_align(ps)) return False; if(!prs_uint32("needed", ps, depth, &r_u->needed)) return False; if(!prs_uint32("returned", ps, depth, &r_u->returned)) return False; if(!prs_werror("status", ps, depth, &r_u->status)) return False; return True; }
BOOL dfs_io_q_dfs_get_info(const char *desc, DFS_Q_DFS_GET_INFO* q_i, prs_struct* ps, int depth) { if(q_i == NULL) return False; prs_debug(ps, depth, desc, "dfs_io_q_dfs_get_info"); depth++; if(!smb_io_unistr2("",&q_i->uni_path, 1, ps, depth)) return False; if(!prs_align(ps)) return False; if(!prs_uint32("ptr_server", ps, depth, &q_i->ptr_server)) return False; if(q_i->ptr_server) if (!smb_io_unistr2("",&q_i->uni_server, q_i->ptr_server, ps, depth)) return False; if(!prs_align(ps)) return False; if(!prs_uint32("ptr_share", ps, depth, &q_i->ptr_share)) return False; if(q_i->ptr_share) if(!smb_io_unistr2("", &q_i->uni_share, q_i->ptr_share, ps, depth)) return False; if(!prs_align(ps)) return False; if(!prs_uint32("level", ps, depth, &q_i->level)) return False; return True; }
BOOL net_io_q_logon_ctrl2(char *desc, NET_Q_LOGON_CTRL2 *q_l, prs_struct *ps, int depth) { if (q_l == NULL) return False; prs_debug(ps, depth, desc, "net_io_q_logon_ctrl2"); depth++; if(!prs_align(ps)) return False; if(!prs_uint32("ptr ", ps, depth, &q_l->ptr)) return False; if(!smb_io_unistr2 ("", &q_l->uni_server_name, q_l->ptr, ps, depth)) return False; if(!prs_align(ps)) return False; if(!prs_uint32("function_code", ps, depth, &q_l->function_code)) return False; if(!prs_uint32("query_level ", ps, depth, &q_l->query_level)) return False; if(!prs_uint32("switch_value ", ps, depth, &q_l->switch_value)) return False; return True; }
BOOL svcctl_io_r_enum_services_status(const char *desc, SVCCTL_R_ENUM_SERVICES_STATUS *r_u, prs_struct *ps, int depth) { if (r_u == NULL) return False; prs_debug(ps, depth, desc, "svcctl_io_r_enum_services_status"); depth++; if(!prs_align(ps)) return False; if (!prs_rpcbuffer("", ps, depth, &r_u->buffer)) return False; if(!prs_align(ps)) return False; if(!prs_uint32("needed", ps, depth, &r_u->needed)) return False; if(!prs_uint32("returned", ps, depth, &r_u->returned)) return False; if(!prs_pointer("resume", ps, depth, (void**)&r_u->resume, sizeof(uint32), (PRS_POINTER_CAST)prs_uint32)) return False; if(!prs_werror("status", ps, depth, &r_u->status)) return False; return True; }
BOOL svcctl_io_r_get_display_name(const char *desc, SVCCTL_R_GET_DISPLAY_NAME *r_u, prs_struct *ps, int depth) { if (r_u == NULL) return False; prs_debug(ps, depth, desc, "svcctl_io_r_get_display_name"); depth++; if(!prs_align(ps)) return False; if(!smb_io_unistr2("displayname", &r_u->displayname, 1, ps, depth)) return False; if(!prs_align(ps)) return False; if(!prs_uint32("display_name_len", ps, depth, &r_u->display_name_len)) return False; if(!prs_werror("status", ps, depth, &r_u->status)) return False; return True; }
BOOL svcctl_io_q_open_service(const char *desc, SVCCTL_Q_OPEN_SERVICE *q_u, prs_struct *ps, int depth) { if (q_u == NULL) return False; prs_debug(ps, depth, desc, "svcctl_io_q_open_service"); depth++; if(!prs_align(ps)) return False; if(!smb_io_pol_hnd("scm_pol", &q_u->handle, ps, depth)) return False; if(!smb_io_unistr2("servicename", &q_u->servicename, 1, ps, depth)) return False; if(!prs_align(ps)) return False; if(!prs_uint32("access", ps, depth, &q_u->access)) return False; return True; }
BOOL svcctl_io_q_open_scmanager(const char *desc, SVCCTL_Q_OPEN_SCMANAGER *q_u, prs_struct *ps, int depth) { if (q_u == NULL) return False; prs_debug(ps, depth, desc, "svcctl_io_q_open_scmanager"); depth++; if(!prs_align(ps)) return False; if(!prs_pointer("servername", ps, depth, (void**)&q_u->servername, sizeof(UNISTR2), (PRS_POINTER_CAST)prs_io_unistr2)) return False; if(!prs_align(ps)) return False; if(!prs_pointer("database", ps, depth, (void**)&q_u->database, sizeof(UNISTR2), (PRS_POINTER_CAST)prs_io_unistr2)) return False; if(!prs_align(ps)) return False; if(!prs_uint32("access", ps, depth, &q_u->access)) return False; return True; }
BOOL svcctl_io_q_get_display_name(const char *desc, SVCCTL_Q_GET_DISPLAY_NAME *q_u, prs_struct *ps, int depth) { if (q_u == NULL) return False; prs_debug(ps, depth, desc, "svcctl_io_q_get_display_name"); depth++; if(!prs_align(ps)) return False; if(!smb_io_pol_hnd("scm_pol", &q_u->handle, ps, depth)) return False; if(!smb_io_unistr2("servicename", &q_u->servicename, 1, ps, depth)) return False; if(!prs_align(ps)) return False; if(!prs_uint32("display_name_len", ps, depth, &q_u->display_name_len)) return False; return True; }
BOOL svcctl_io_q_set_service_sec(const char *desc, SVCCTL_Q_SET_SERVICE_SEC *q_u, prs_struct *ps, int depth) { if (q_u == NULL) return False; prs_debug(ps, depth, desc, "svcctl_io_q_set_service_sec"); depth++; if(!prs_align(ps)) return False; if(!smb_io_pol_hnd("handle", &q_u->handle, ps, depth)) return False; if(!prs_uint32("security_flags", ps, depth, &q_u->security_flags)) return False; if (!prs_rpcbuffer("buffer", ps, depth, &q_u->buffer)) return False; if(!prs_align(ps)) return False; if(!prs_uint32("buffer_size", ps, depth, &q_u->buffer_size)) return False; return True; }
BOOL eventlog_io_q_open_eventlog(const char *desc, EVENTLOG_Q_OPEN_EVENTLOG *q_u, prs_struct *ps, int depth) { if(q_u == NULL) return False; prs_debug(ps, depth, desc, "eventlog_io_q_open_eventlog"); depth++; if(!prs_align(ps)) return False; if ( !prs_pointer("", ps, depth, (void*)&q_u->unknown0, sizeof(EVENTLOG_OPEN_UNKNOWN0), (PRS_POINTER_CAST)prs_ev_open_unknown0)) return False; if ( !prs_unistr4("logname", ps, depth, &q_u->logname) ) return False; if ( !prs_align(ps) ) return False; if ( !prs_unistr4("servername", ps, depth, &q_u->servername) ) return False; if ( !prs_align(ps) ) return False; if ( !prs_uint32("unknown1", ps, depth, &q_u->unknown1) ) return False; if ( !prs_uint32("unknown2", ps, depth, &q_u->unknown2) ) return False; return True; }
BOOL smb_io_clnt_srv(const char *desc, DOM_CLNT_SRV *logcln, prs_struct *ps, int depth) { if (logcln == NULL) return False; prs_debug(ps, depth, desc, "smb_io_clnt_srv"); depth++; if(!prs_align(ps)) return False; if(!prs_uint32("undoc_buffer ", ps, depth, &logcln->undoc_buffer)) return False; if (logcln->undoc_buffer != 0) { if(!smb_io_unistr2("unistr2", &logcln->uni_logon_srv, logcln->undoc_buffer, ps, depth)) return False; } if(!prs_align(ps)) return False; if(!prs_uint32("undoc_buffer2", ps, depth, &logcln->undoc_buffer2)) return False; if (logcln->undoc_buffer2 != 0) { if(!smb_io_unistr2("unistr2", &logcln->uni_comp_name, logcln->undoc_buffer2, ps, depth)) return False; } return True; }
BOOL dfs_io_q_dfs_remove(const char *desc, DFS_Q_DFS_REMOVE *q_d, prs_struct *ps, int depth) { if(q_d == NULL) return False; prs_debug(ps, depth, desc, "dfs_io_q_dfs_remove"); depth++; if(!prs_align(ps)) return False; if(!smb_io_unistr2("DfsEntryPath",&q_d->DfsEntryPath, 1, ps, depth)) return False; if(!prs_align(ps)) return False; if(!prs_uint32("ptr_ServerName", ps, depth, &q_d->ptr_ServerName)) return False; if(q_d->ptr_ServerName) if (!smb_io_unistr2("ServerName",&q_d->ServerName, q_d->ptr_ServerName, ps, depth)) return False; if(!prs_align(ps)) return False; if(!prs_uint32("ptr_ShareName", ps, depth, &q_d->ptr_ShareName)) return False; if(q_d->ptr_ShareName) if (!smb_io_unistr2("ShareName",&q_d->ShareName, q_d->ptr_ShareName, ps, depth)) return False; if(!prs_align(ps)) return False; return True; }
BOOL net_io_r_sam_logon(char *desc, NET_R_SAM_LOGON *r_l, prs_struct *ps, int depth) { if (r_l == NULL) return False; prs_debug(ps, depth, desc, "net_io_r_sam_logon"); depth++; if(!prs_uint32("buffer_creds", ps, depth, &r_l->buffer_creds)) /* undocumented buffer pointer */ return False; if(!smb_io_cred("", &r_l->srv_creds, ps, depth)) /* server credentials. server time stamp appears to be ignored. */ return False; if(!prs_uint16("switch_value", ps, depth, &r_l->switch_value)) return False; if(!prs_align(ps)) return False; if (r_l->switch_value != 0) { if(!net_io_user_info3("", r_l->user, ps, depth)) return False; } if(!prs_uint32("auth_resp ", ps, depth, &r_l->auth_resp)) /* 1 - Authoritative response; 0 - Non-Auth? */ return False; if(!prs_uint32("status ", ps, depth, &r_l->status)) return False; if(!prs_align(ps)) return False; return True; }
static BOOL ds_io_dom_trusts_ctr( const char *desc, prs_struct *ps, int depth, DS_DOMAIN_TRUSTS_CTR *ctr) { int i; prs_debug(ps, depth, desc, "ds_io_dom_trusts_ctr"); depth++; if ( !prs_uint32( "ptr", ps, depth, &ctr->ptr ) ) return False; if ( !prs_uint32( "max_count", ps, depth, &ctr->max_count ) ) return False; /* are we done? */ if ( ctr->max_count == 0 ) return True; /* allocate the domain trusts array are parse it */ ctr->trusts = (DS_DOMAIN_TRUSTS*)talloc(ps->mem_ctx, sizeof(DS_DOMAIN_TRUSTS)*ctr->max_count); if ( !ctr->trusts ) return False; /* this stinks; the static portion o fthe structure is read here and then we need another loop to read the UNISTR2's and SID's */ for ( i=0; i<ctr->max_count;i++ ) { if ( !ds_io_domain_trusts("domain_trusts", ps, depth, &ctr->trusts[i] ) ) return False; } for ( i=0; i<ctr->max_count; i++ ) { if ( !smb_io_unistr2("netbios_domain", &ctr->trusts[i].netbios_domain, ctr->trusts[i].netbios_ptr, ps, depth) ) return False; if(!prs_align(ps)) return False; if ( !smb_io_unistr2("dns_domain", &ctr->trusts[i].dns_domain, ctr->trusts[i].dns_ptr, ps, depth) ) return False; if(!prs_align(ps)) return False; if ( ctr->trusts[i].sid_ptr ) { if ( !smb_io_dom_sid2("sid", &ctr->trusts[i].sid, ps, depth ) ) return False; } } return True; }
BOOL sec_io_desc_buf(const char *desc, SEC_DESC_BUF **ppsdb, prs_struct *ps, int depth) { uint32 off_len; uint32 off_max_len; uint32 old_offset; uint32 size; SEC_DESC_BUF *psdb; if (ppsdb == NULL) return False; psdb = *ppsdb; if (UNMARSHALLING(ps) && psdb == NULL) { if((psdb = (SEC_DESC_BUF *)prs_alloc_mem(ps,sizeof(SEC_DESC_BUF))) == NULL) return False; *ppsdb = psdb; } prs_debug(ps, depth, desc, "sec_io_desc_buf"); depth++; if(!prs_align(ps)) return False; if(!prs_uint32_pre("max_len", ps, depth, &psdb->max_len, &off_max_len)) return False; if(!prs_uint32 ("ptr ", ps, depth, &psdb->ptr)) return False; if(!prs_uint32_pre("len ", ps, depth, &psdb->len, &off_len)) return False; old_offset = prs_offset(ps); /* reading, length is non-zero; writing, descriptor is non-NULL */ if ((UNMARSHALLING(ps) && psdb->len != 0) || (MARSHALLING(ps) && psdb->sec != NULL)) { if(!sec_io_desc("sec ", &psdb->sec, ps, depth)) return False; } if(!prs_align(ps)) return False; size = prs_offset(ps) - old_offset; if(!prs_uint32_post("max_len", ps, depth, &psdb->max_len, off_max_len, size == 0 ? psdb->max_len : size)) return False; if(!prs_uint32_post("len ", ps, depth, &psdb->len, off_len, size)) return False; return True; }
BOOL prs_align_needed(prs_struct *ps, uint32 needed) { if (needed==0) return True; else return prs_align(ps); }
BOOL smb_io_string2(const char *desc, STRING2 *str2, uint32 buffer, prs_struct *ps, int depth) { if (str2 == NULL) return False; if (buffer) { prs_debug(ps, depth, desc, "smb_io_string2"); depth++; if(!prs_align(ps)) return False; if(!prs_uint32("str_max_len", ps, depth, &str2->str_max_len)) return False; if(!prs_uint32("offset ", ps, depth, &str2->offset)) return False; if(!prs_uint32("str_str_len", ps, depth, &str2->str_str_len)) return False; /* buffer advanced by indicated length of string NOT by searching for null-termination */ if(!prs_string2(True, "buffer ", ps, depth, str2)) return False; } else { prs_debug(ps, depth, desc, "smb_io_string2 - NULL"); depth++; memset((char *)str2, '\0', sizeof(*str2)); } return True; }
bool smb_io_rpc_context(const char *desc, RPC_CONTEXT *rpc_ctx, prs_struct *ps, int depth) { int i; if (rpc_ctx == NULL) return False; if(!prs_align(ps)) return False; if(!prs_uint16("context_id ", ps, depth, &rpc_ctx->context_id )) return False; if(!prs_uint8 ("num_transfer_syntaxes", ps, depth, &rpc_ctx->num_transfer_syntaxes)) return False; /* num_transfer_syntaxes must not be zero. */ if (rpc_ctx->num_transfer_syntaxes == 0) return False; if(!smb_io_rpc_iface("", &rpc_ctx->abstract, ps, depth)) return False; if (UNMARSHALLING(ps)) { if (!(rpc_ctx->transfer = PRS_ALLOC_MEM(ps, RPC_IFACE, rpc_ctx->num_transfer_syntaxes))) { return False; } } for (i = 0; i < rpc_ctx->num_transfer_syntaxes; i++ ) { if (!smb_io_rpc_iface("", &rpc_ctx->transfer[i], ps, depth)) return False; } return True; }
BOOL smb_io_pol_hnd(const char *desc, POLICY_HND *pol, prs_struct *ps, int depth) { if (pol == NULL) return False; prs_debug(ps, depth, desc, "smb_io_pol_hnd"); depth++; if(!prs_align(ps)) return False; if(UNMARSHALLING(ps)) ZERO_STRUCTP(pol); if (!prs_uint32("data1", ps, depth, &pol->data1)) return False; if (!prs_uint32("data2", ps, depth, &pol->data2)) return False; if (!prs_uint16("data3", ps, depth, &pol->data3)) return False; if (!prs_uint16("data4", ps, depth, &pol->data4)) return False; if(!prs_uint8s (False, "data5", ps, depth, pol->data5, sizeof(pol->data5))) return False; return True; }
BOOL smb_io_unistr3(const char *desc, UNISTR3 *name, prs_struct *ps, int depth) { if (name == NULL) return False; prs_debug(ps, depth, desc, "smb_io_unistr3"); depth++; if(!prs_align(ps)) return False; if(!prs_uint32("uni_str_len", ps, depth, &name->uni_str_len)) return False; /* we're done if there is no string */ if ( name->uni_str_len == 0 ) return True; /* don't know if len is specified by uni_str_len member... */ /* assume unicode string is unicode-null-terminated, instead */ if(!prs_unistr3(True, "unistr", name, ps, depth)) return False; return True; }
BOOL eventlog_io_q_read_eventlog(const char *desc, EVENTLOG_Q_READ_EVENTLOG *q_u, prs_struct *ps, int depth) { if(q_u == NULL) return False; prs_debug(ps, depth, desc, "eventlog_io_q_read_eventlog"); depth++; if(!(prs_align(ps))) return False; if(!(smb_io_pol_hnd("log handle", &(q_u->handle), ps, depth))) return False; if(!(prs_uint32("read flags", ps, depth, &(q_u->flags)))) return False; if(!(prs_uint32("read offset", ps, depth, &(q_u->offset)))) return False; if(!(prs_uint32("read buf size", ps, depth, &(q_u->max_read_size)))) return False; return True; }
BOOL smb_io_log_info(const char *desc, DOM_LOG_INFO *loginfo, prs_struct *ps, int depth) { if (loginfo == NULL) return False; prs_debug(ps, depth, desc, "smb_io_log_info"); depth++; if(!prs_align(ps)) return False; if(!prs_uint32("undoc_buffer", ps, depth, &loginfo->undoc_buffer)) return False; if(!smb_io_unistr2("unistr2", &loginfo->uni_logon_srv, True, ps, depth)) return False; if(!smb_io_unistr2("unistr2", &loginfo->uni_acct_name, True, ps, depth)) return False; if(!prs_uint16("sec_chan", ps, depth, &loginfo->sec_chan)) return False; if(!smb_io_unistr2("unistr2", &loginfo->uni_comp_name, True, ps, depth)) return False; return True; }
static BOOL net_io_netinfo_3(char *desc, NETLOGON_INFO_3 *info, prs_struct *ps, int depth) { if (info == NULL) return False; prs_debug(ps, depth, desc, "net_io_netinfo_3"); depth++; if(!prs_align(ps)) return False; if(!prs_uint32("flags ", ps, depth, &info->flags)) return False; if(!prs_uint32("logon_attempts", ps, depth, &info->logon_attempts)) return False; if(!prs_uint32("reserved_1 ", ps, depth, &info->reserved_1)) return False; if(!prs_uint32("reserved_2 ", ps, depth, &info->reserved_2)) return False; if(!prs_uint32("reserved_3 ", ps, depth, &info->reserved_3)) return False; if(!prs_uint32("reserved_4 ", ps, depth, &info->reserved_4)) return False; if(!prs_uint32("reserved_5 ", ps, depth, &info->reserved_5)) return False; return True; }
static BOOL smb_io_sam_info(char *desc, DOM_SAM_INFO *sam, prs_struct *ps, int depth) { if (sam == NULL) return False; prs_debug(ps, depth, desc, "smb_io_sam_info"); depth++; if(!prs_align(ps)) return False; if(!smb_io_clnt_info2("", &sam->client, ps, depth)) return False; if(!prs_uint32("ptr_rtn_cred ", ps, depth, &sam->ptr_rtn_cred)) return False; if(!smb_io_cred("", &sam->rtn_cred, ps, depth)) return False; if(!prs_uint16("logon_level ", ps, depth, &sam->logon_level)) return False; if (sam->logon_level != 0 && sam->ctr != NULL) { if(!net_io_id_info_ctr("logon_info", sam->ctr, ps, depth)) return False; } return True; }
BOOL net_io_q_auth_2(char *desc, NET_Q_AUTH_2 *q_a, prs_struct *ps, int depth) { int old_align; if (q_a == NULL) return False; prs_debug(ps, depth, desc, "net_io_q_auth_2"); depth++; if(!prs_align(ps)) return False; if(!smb_io_log_info ("", &q_a->clnt_id, ps, depth)) /* client identification info */ return False; /* client challenge is _not_ aligned */ old_align = ps->align; ps->align = 0; if(!smb_io_chal("", &q_a->clnt_chal, ps, depth)) { /* client-calculated credentials */ ps->align = old_align; return False; } ps->align = old_align; if(!net_io_neg_flags("", &q_a->clnt_flgs, ps, depth)) return False; return True; }
BOOL net_io_q_req_chal(char *desc, NET_Q_REQ_CHAL *q_c, prs_struct *ps, int depth) { int old_align; if (q_c == NULL) return False; prs_debug(ps, depth, desc, "net_io_q_req_chal"); depth++; if(!prs_align(ps)) return False; if(!prs_uint32("undoc_buffer", ps, depth, &q_c->undoc_buffer)) return False; if(!smb_io_unistr2("", &q_c->uni_logon_srv, True, ps, depth)) /* logon server unicode string */ return False; if(!smb_io_unistr2("", &q_c->uni_logon_clnt, True, ps, depth)) /* logon client unicode string */ return False; old_align = ps->align; ps->align = 0; /* client challenge is _not_ aligned after the unicode strings */ if(!smb_io_chal("", &q_c->clnt_chal, ps, depth)) { /* client challenge */ ps->align = old_align; return False; } ps->align = old_align; return True; }
BOOL svcctl_io_q_enum_services_status(const char *desc, SVCCTL_Q_ENUM_SERVICES_STATUS *q_u, prs_struct *ps, int depth) { if (q_u == NULL) return False; prs_debug(ps, depth, desc, "svcctl_io_q_enum_services_status"); depth++; if(!prs_align(ps)) return False; if(!smb_io_pol_hnd("scm_pol", &q_u->handle, ps, depth)) return False; if(!prs_uint32("type", ps, depth, &q_u->type)) return False; if(!prs_uint32("state", ps, depth, &q_u->state)) return False; if(!prs_uint32("buffer_size", ps, depth, &q_u->buffer_size)) return False; if(!prs_pointer("resume", ps, depth, (void**)&q_u->resume, sizeof(uint32), (PRS_POINTER_CAST)prs_uint32)) return False; return True; }
BOOL dfs_io_q_dfs_enum(const char *desc, DFS_Q_DFS_ENUM *q_d, prs_struct *ps, int depth) { if(q_d == NULL) return False; prs_debug(ps, depth, desc, "dfs_io_q_dfs_enum"); depth++; if(!prs_align(ps)) return False; if(!prs_uint32("level", ps, depth, &q_d->level)) return False; if(!prs_uint32("maxpreflen", ps, depth, &q_d->maxpreflen)) return False; if(!prs_uint32("ptr_buffer", ps, depth, &q_d->ptr_buffer)) return False; if(!prs_uint32("level2", ps, depth, &q_d->level2)) return False; if(!prs_uint32("level3", ps, depth, &q_d->level2)) return False; if(!prs_uint32("ptr_num_entries", ps, depth, &q_d->ptr_num_entries)) return False; if(!prs_uint32("num_entries", ps, depth, &q_d->num_entries)) return False; if(!prs_uint32("num_entries2", ps, depth, &q_d->num_entries2)) return False; if(!smb_io_enum_hnd("resume_hnd",&q_d->reshnd, ps, depth)) return False; return True; }
static BOOL ds_io_dominfobasic( const char *desc, prs_struct *ps, int depth, DSROLE_PRIMARY_DOMAIN_INFO_BASIC **basic) { DSROLE_PRIMARY_DOMAIN_INFO_BASIC *p = *basic; if ( UNMARSHALLING(ps) ) p = *basic = (DSROLE_PRIMARY_DOMAIN_INFO_BASIC *)prs_alloc_mem(ps, sizeof(DSROLE_PRIMARY_DOMAIN_INFO_BASIC)); if ( !p ) return False; if ( !prs_uint16("machine_role", ps, depth, &p->machine_role) ) return False; if ( !prs_uint16("unknown", ps, depth, &p->unknown) ) return False; if ( !prs_uint32("flags", ps, depth, &p->flags) ) return False; if ( !prs_uint32("netbios_ptr", ps, depth, &p->netbios_ptr) ) return False; if ( !prs_uint32("dnsname_ptr", ps, depth, &p->dnsname_ptr) ) return False; if ( !prs_uint32("forestname_ptr", ps, depth, &p->forestname_ptr) ) return False; if ( !prs_uint8s(False, "domain_guid", ps, depth, p->domain_guid.info, GUID_SIZE) ) return False; if ( !smb_io_unistr2( "netbios_domain", &p->netbios_domain, p->netbios_ptr, ps, depth) ) return False; if ( !prs_align(ps) ) return False; if ( !smb_io_unistr2( "dns_domain", &p->dns_domain, p->dnsname_ptr, ps, depth) ) return False; if ( !prs_align(ps) ) return False; if ( !smb_io_unistr2( "forest_domain", &p->forest_domain, p->forestname_ptr, ps, depth) ) return False; if ( !prs_align(ps) ) return False; return True; }