switch (r) {
case WINBIND_LOOKUP_LEVEL_SID2NAME: val = "WINBIND_LOOKUP_LEVEL_SID2NAME"; break;
case WINBIND_LOOKUP_LEVEL_NAME2SID: val = "WINBIND_LOOKUP_LEVEL_NAME2SID"; break;
+ case WINBIND_LOOKUP_LEVEL_RIDS2NAMES: val = "WINBIND_LOOKUP_LEVEL_RIDS2NAMES"; break;
}
ndr_print_enum(ndr, name, "ENUM", val, r);
}
+static enum ndr_err_code ndr_push_STRUCT_winbind_lookup_req_rids(struct ndr_push *ndr, int ndr_flags, const struct winbind_lookup_req_rids *r)
+{
+ uint32_t cntr_rids_0;
+ if (ndr_flags & NDR_SCALARS) {
+ NDR_CHECK(ndr_push_align(ndr, 4));
+ NDR_CHECK(ndr_push_unique_ptr(ndr, r->domain_sid));
+ NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_rids));
+ for (cntr_rids_0 = 0; cntr_rids_0 < r->num_rids; cntr_rids_0++) {
+ NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->rids[cntr_rids_0]));
+ }
+ }
+ if (ndr_flags & NDR_BUFFERS) {
+ if (r->domain_sid) {
+ NDR_CHECK(ndr_push_dom_sid(ndr, NDR_SCALARS|NDR_BUFFERS, r->domain_sid));
+ }
+ }
+ return NDR_ERR_SUCCESS;
+}
+
+static enum ndr_err_code ndr_pull_STRUCT_winbind_lookup_req_rids(struct ndr_pull *ndr, int ndr_flags, struct winbind_lookup_req_rids *r)
+{
+ uint32_t _ptr_domain_sid;
+ TALLOC_CTX *_mem_save_domain_sid_0;
+ uint32_t cntr_rids_0;
+ TALLOC_CTX *_mem_save_rids_0;
+ if (ndr_flags & NDR_SCALARS) {
+ NDR_CHECK(ndr_pull_align(ndr, 4));
+ NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domain_sid));
+ if (_ptr_domain_sid) {
+ NDR_PULL_ALLOC(ndr, r->domain_sid);
+ } else {
+ r->domain_sid = NULL;
+ }
+ NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->num_rids));
+ NDR_PULL_ALLOC_N(ndr, r->rids, r->num_rids);
+ _mem_save_rids_0 = NDR_PULL_GET_MEM_CTX(ndr);
+ NDR_PULL_SET_MEM_CTX(ndr, r->rids, 0);
+ for (cntr_rids_0 = 0; cntr_rids_0 < r->num_rids; cntr_rids_0++) {
+ NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->rids[cntr_rids_0]));
+ }
+ NDR_PULL_SET_MEM_CTX(ndr, _mem_save_rids_0, 0);
+ }
+ if (ndr_flags & NDR_BUFFERS) {
+ if (r->domain_sid) {
+ _mem_save_domain_sid_0 = NDR_PULL_GET_MEM_CTX(ndr);
+ NDR_PULL_SET_MEM_CTX(ndr, r->domain_sid, 0);
+ NDR_CHECK(ndr_pull_dom_sid(ndr, NDR_SCALARS|NDR_BUFFERS, r->domain_sid));
+ NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domain_sid_0, 0);
+ }
+ }
+ return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ void ndr_print_STRUCT_winbind_lookup_req_rids(struct ndr_print *ndr, const char *name, const struct winbind_lookup_req_rids *r)
+{
+ uint32_t cntr_rids_0;
+ ndr_print_struct(ndr, name, "winbind_lookup_req_rids");
+ ndr->depth++;
+ ndr_print_ptr(ndr, "domain_sid", r->domain_sid);
+ ndr->depth++;
+ if (r->domain_sid) {
+ ndr_print_dom_sid(ndr, "domain_sid", r->domain_sid);
+ }
+ ndr->depth--;
+ ndr_print_uint32(ndr, "num_rids", r->num_rids);
+ ndr->print(ndr, "%s: ARRAY(%d)", "rids", r->num_rids);
+ ndr->depth++;
+ for (cntr_rids_0=0;cntr_rids_0<r->num_rids;cntr_rids_0++) {
+ char *idx_0=NULL;
+ asprintf(&idx_0, "[%d]", cntr_rids_0);
+ if (idx_0) {
+ ndr_print_uint32(ndr, "rids", r->rids[cntr_rids_0]);
+ free(idx_0);
+ }
+ }
+ ndr->depth--;
+ ndr->depth--;
+}
+
static enum ndr_err_code ndr_push_winbind_lookup_req(struct ndr_push *ndr, int ndr_flags, const union winbind_lookup_req *r)
{
if (ndr_flags & NDR_SCALARS) {
NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->name, ndr_charset_length(r->name, CH_UTF8), sizeof(uint8_t), CH_UTF8));
break;
+ case WINBIND_LOOKUP_LEVEL_RIDS2NAMES:
+ NDR_CHECK(ndr_push_STRUCT_winbind_lookup_req_rids(ndr, NDR_SCALARS, &r->rids));
+ break;
+
default:
break;
case WINBIND_LOOKUP_LEVEL_NAME2SID:
break;
+ case WINBIND_LOOKUP_LEVEL_RIDS2NAMES:
+ NDR_CHECK(ndr_push_STRUCT_winbind_lookup_req_rids(ndr, NDR_BUFFERS, &r->rids));
+ break;
+
default:
break;
NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->name, ndr_get_array_length(ndr, &r->name), sizeof(uint8_t), CH_UTF8));
break; }
+ case WINBIND_LOOKUP_LEVEL_RIDS2NAMES: {
+ NDR_CHECK(ndr_pull_STRUCT_winbind_lookup_req_rids(ndr, NDR_SCALARS, &r->rids));
+ break; }
+
default: {
break; }
case WINBIND_LOOKUP_LEVEL_NAME2SID:
break;
+ case WINBIND_LOOKUP_LEVEL_RIDS2NAMES:
+ NDR_CHECK(ndr_pull_STRUCT_winbind_lookup_req_rids(ndr, NDR_BUFFERS, &r->rids));
+ break;
+
default:
break;
ndr_print_string(ndr, "name", r->name);
break;
+ case WINBIND_LOOKUP_LEVEL_RIDS2NAMES:
+ ndr_print_STRUCT_winbind_lookup_req_rids(ndr, "rids", &r->rids);
+ break;
+
default:
break;
ndr->depth--;
}
+static enum ndr_err_code ndr_push_STRUCT_winbind_lookup_name_info_array(struct ndr_push *ndr, int ndr_flags, const struct winbind_lookup_name_info_array *r)
+{
+ uint32_t cntr_names_0;
+ if (ndr_flags & NDR_SCALARS) {
+ NDR_CHECK(ndr_push_align(ndr, 4));
+ NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_names));
+ for (cntr_names_0 = 0; cntr_names_0 < r->num_names; cntr_names_0++) {
+ NDR_CHECK(ndr_push_STRUCT_winbind_lookup_name_info(ndr, NDR_SCALARS, &r->names[cntr_names_0]));
+ }
+ }
+ if (ndr_flags & NDR_BUFFERS) {
+ }
+ return NDR_ERR_SUCCESS;
+}
+
+static enum ndr_err_code ndr_pull_STRUCT_winbind_lookup_name_info_array(struct ndr_pull *ndr, int ndr_flags, struct winbind_lookup_name_info_array *r)
+{
+ uint32_t cntr_names_0;
+ TALLOC_CTX *_mem_save_names_0;
+ if (ndr_flags & NDR_SCALARS) {
+ NDR_CHECK(ndr_pull_align(ndr, 4));
+ NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->num_names));
+ NDR_PULL_ALLOC_N(ndr, r->names, r->num_names);
+ _mem_save_names_0 = NDR_PULL_GET_MEM_CTX(ndr);
+ NDR_PULL_SET_MEM_CTX(ndr, r->names, 0);
+ for (cntr_names_0 = 0; cntr_names_0 < r->num_names; cntr_names_0++) {
+ NDR_CHECK(ndr_pull_STRUCT_winbind_lookup_name_info(ndr, NDR_SCALARS, &r->names[cntr_names_0]));
+ }
+ NDR_PULL_SET_MEM_CTX(ndr, _mem_save_names_0, 0);
+ }
+ if (ndr_flags & NDR_BUFFERS) {
+ }
+ return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ void ndr_print_STRUCT_winbind_lookup_name_info_array(struct ndr_print *ndr, const char *name, const struct winbind_lookup_name_info_array *r)
+{
+ uint32_t cntr_names_0;
+ ndr_print_struct(ndr, name, "winbind_lookup_name_info_array");
+ ndr->depth++;
+ ndr_print_uint32(ndr, "num_names", r->num_names);
+ ndr->print(ndr, "%s: ARRAY(%d)", "names", r->num_names);
+ ndr->depth++;
+ for (cntr_names_0=0;cntr_names_0<r->num_names;cntr_names_0++) {
+ char *idx_0=NULL;
+ asprintf(&idx_0, "[%d]", cntr_names_0);
+ if (idx_0) {
+ ndr_print_STRUCT_winbind_lookup_name_info(ndr, "names", &r->names[cntr_names_0]);
+ free(idx_0);
+ }
+ }
+ ndr->depth--;
+ ndr->depth--;
+}
+
static enum ndr_err_code ndr_push_winbind_lookup_rep(struct ndr_push *ndr, int ndr_flags, const union winbind_lookup_rep *r)
{
if (ndr_flags & NDR_SCALARS) {
NDR_CHECK(ndr_push_STRUCT_winbind_lookup_sid_info(ndr, NDR_SCALARS, &r->sid_info));
break;
+ case WINBIND_LOOKUP_LEVEL_RIDS2NAMES:
+ NDR_CHECK(ndr_push_STRUCT_winbind_lookup_name_info_array(ndr, NDR_SCALARS, &r->name_array));
+ break;
+
default:
break;
NDR_CHECK(ndr_push_STRUCT_winbind_lookup_sid_info(ndr, NDR_BUFFERS, &r->sid_info));
break;
+ case WINBIND_LOOKUP_LEVEL_RIDS2NAMES:
+ break;
+
default:
break;
NDR_CHECK(ndr_pull_STRUCT_winbind_lookup_sid_info(ndr, NDR_SCALARS, &r->sid_info));
break; }
+ case WINBIND_LOOKUP_LEVEL_RIDS2NAMES: {
+ NDR_CHECK(ndr_pull_STRUCT_winbind_lookup_name_info_array(ndr, NDR_SCALARS, &r->name_array));
+ break; }
+
default: {
break; }
NDR_CHECK(ndr_pull_STRUCT_winbind_lookup_sid_info(ndr, NDR_BUFFERS, &r->sid_info));
break;
+ case WINBIND_LOOKUP_LEVEL_RIDS2NAMES:
+ break;
+
default:
break;
ndr_print_STRUCT_winbind_lookup_sid_info(ndr, "sid_info", &r->sid_info);
break;
+ case WINBIND_LOOKUP_LEVEL_RIDS2NAMES:
+ ndr_print_STRUCT_winbind_lookup_name_info_array(ndr, "name_array", &r->name_array);
+ break;
+
default:
break;
/* bitmap winbind_header_version */
#define WINBIND_HEADER_VERSION ( 0x0001 )
-;
-
/* bitmap winbind_header_flags */
#define WINBIND_HEADER_FLAGS_RESPONSE ( 0x00000001 )
#define WINBIND_HEADER_FLAGS_ERROR ( 0x00000002 )
-;
-
struct winbind_header {
uint32_t length;
const char *magic;/* [value("WBPT"),charset(DOS)] */
#ifndef USE_UINT_ENUMS
{
WINBIND_LOOKUP_LEVEL_SID2NAME=1,
- WINBIND_LOOKUP_LEVEL_NAME2SID=2
+ WINBIND_LOOKUP_LEVEL_NAME2SID=2,
+ WINBIND_LOOKUP_LEVEL_RIDS2NAMES=3
}
#else
{ __donnot_use_enum_winbind_lookup_level=0x7FFFFFFF}
#define WINBIND_LOOKUP_LEVEL_SID2NAME ( 1 )
#define WINBIND_LOOKUP_LEVEL_NAME2SID ( 2 )
+#define WINBIND_LOOKUP_LEVEL_RIDS2NAMES ( 3 )
#endif
;
+struct winbind_lookup_req_rids {
+ struct dom_sid *domain_sid;/* [unique] */
+ uint32_t num_rids;
+ uint32_t *rids;
+};
+
union winbind_lookup_req {
struct dom_sid *sid;/* [unique,case(WINBIND_LOOKUP_LEVEL_SID2NAME)] */
const char *name;/* [charset(UTF8),case(WINBIND_LOOKUP_LEVEL_NAME2SID)] */
+ struct winbind_lookup_req_rids rids;/* [case(WINBIND_LOOKUP_LEVEL_RIDS2NAMES)] */
}/* [switch_type(winbind_lookup_level)] */;
struct winbind_lookup_name_info {
enum lsa_SidType type;
};
+struct winbind_lookup_name_info_array {
+ uint32_t num_names;
+ struct winbind_lookup_name_info *names;
+};
+
+struct winbind_lookup_name_info;
+
union winbind_lookup_rep {
struct winbind_lookup_name_info name_info;/* [case(WINBIND_LOOKUP_LEVEL_SID2NAME)] */
struct winbind_lookup_sid_info sid_info;/* [case(WINBIND_LOOKUP_LEVEL_NAME2SID)] */
+ struct winbind_lookup_name_info_array name_array;/* [case(WINBIND_LOOKUP_LEVEL_RIDS2NAMES)] */
}/* [switch_type(winbind_lookup_level)] */;
enum winbind_get_idmap_level