/* ask the server what interface IDs are available on this endpoint */ bool test_inq_if_ids(struct torture_context *tctx, struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, bool (*per_id_test)(struct torture_context *, const struct ndr_interface_table *iface, TALLOC_CTX *mem_ctx, struct ndr_syntax_id *id), const void *priv) { NTSTATUS status; struct mgmt_inq_if_ids r; struct rpc_if_id_vector_t *vector; int i; vector = talloc(mem_ctx, struct rpc_if_id_vector_t); r.out.if_id_vector = &vector; status = dcerpc_mgmt_inq_if_ids(p, mem_ctx, &r); if (!NT_STATUS_IS_OK(status)) { printf("inq_if_ids failed - %s\n", nt_errstr(status)); return false; } if (!W_ERROR_IS_OK(r.out.result)) { printf("inq_if_ids gave error code %s\n", win_errstr(r.out.result)); return false; } if (!vector) { printf("inq_if_ids gave NULL if_id_vector\n"); return false; } for (i=0;i<vector->count;i++) { struct ndr_syntax_id *id = vector->if_id[i].id; if (!id) continue; printf("\tuuid %s version 0x%08x '%s'\n", GUID_string(mem_ctx, &id->uuid), id->if_version, ndr_interface_name(&id->uuid, id->if_version)); if (per_id_test) { per_id_test(tctx, priv, mem_ctx, id); } } return true; }
/* ask the server what interface IDs are available on this endpoint */ static BOOL test_inq_if_ids(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, const struct dcerpc_interface_table *iface) { NTSTATUS status; struct mgmt_inq_if_ids r; int i; status = dcerpc_mgmt_inq_if_ids(p, mem_ctx, &r); if (!NT_STATUS_IS_OK(status)) { printf("inq_if_ids failed - %s\n", nt_errstr(status)); return False; } if (!W_ERROR_IS_OK(r.out.result)) { printf("inq_if_ids gave error code %s\n", win_errstr(r.out.result)); return False; } if (!r.out.if_id_vector) { printf("inq_if_ids gave NULL if_id_vector\n"); return False; } for (i=0;i<r.out.if_id_vector->count;i++) { const char *uuid; struct dcerpc_syntax_id *id = r.out.if_id_vector->if_id[i].id; if (!id) continue; uuid = GUID_string(mem_ctx, &id->uuid), printf("\n\tuuid %s version 0x%08x '%s'\n", uuid, id->if_version, idl_pipe_name(&id->uuid, id->if_version)); test_num_calls(iface, mem_ctx, id); } return True; }