summaryrefslogtreecommitdiff
path: root/source4/torture/rpc/epmapper.c
diff options
context:
space:
mode:
authorJelmer Vernooij <jelmer@samba.org>2004-10-31 18:40:08 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 13:05:07 -0500
commit12649343f903c98dd658724d1765b1db62eeb928 (patch)
treed215599063101d47cbe445014ef5054ebd8733c6 /source4/torture/rpc/epmapper.c
parentad4c40b9278522e36c3d50d80658f03d9f8da805 (diff)
downloadsamba-12649343f903c98dd658724d1765b1db62eeb928.tar.gz
samba-12649343f903c98dd658724d1765b1db62eeb928.tar.bz2
samba-12649343f903c98dd658724d1765b1db62eeb928.zip
r3414: RemoteActivation torture test
(This used to be commit bcb89806fe45db50988f241db51989d90aa2289c)
Diffstat (limited to 'source4/torture/rpc/epmapper.c')
-rw-r--r--source4/torture/rpc/epmapper.c71
1 files changed, 47 insertions, 24 deletions
diff --git a/source4/torture/rpc/epmapper.c b/source4/torture/rpc/epmapper.c
index 6382800cec..b1076e64c6 100644
--- a/source4/torture/rpc/epmapper.c
+++ b/source4/torture/rpc/epmapper.c
@@ -130,8 +130,7 @@ static BOOL test_Map(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
struct GUID uuid;
const char *uuid_str;
struct policy_handle handle;
- int i, j;
- const char *test_bindings[] = { "ncacn_np:", "ncacn_ip_tcp:", "ncalrpc:", "ncadg_ip_udp:" };
+ int i;
ZERO_STRUCT(uuid);
ZERO_STRUCT(handle);
@@ -147,34 +146,58 @@ static BOOL test_Map(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
printf("epm_Map results for '%s':\n",
idl_pipe_name(uuid_str, twr->tower.floors[0].lhs.info.uuid.version));
- for (i = 0; i < ARRAY_SIZE(test_bindings); i++)
- {
- struct dcerpc_binding binding;
- status = dcerpc_parse_binding(mem_ctx, test_bindings[i], &binding);
+ twr->tower.floors[2].lhs.protocol = EPM_PROTOCOL_NCACN;
+ twr->tower.floors[2].lhs.info.lhs_data = data_blob(NULL, 0);
+ twr->tower.floors[2].rhs.ncacn.minor_version = 0;
+
+ twr->tower.floors[3].lhs.protocol = EPM_PROTOCOL_TCP;
+ twr->tower.floors[3].lhs.info.lhs_data = data_blob(NULL, 0);
+ twr->tower.floors[3].rhs.tcp.port = 0;
- if (NT_STATUS_IS_ERR(status)) {
- printf("Error parsing binding string '%s'\n", test_bindings[i]);
- return False;
+ twr->tower.floors[4].lhs.protocol = EPM_PROTOCOL_IP;
+ twr->tower.floors[4].lhs.info.lhs_data = data_blob(NULL, 0);
+ twr->tower.floors[4].rhs.ip.address = 0;
+
+ status = dcerpc_epm_Map(p, mem_ctx, &r);
+ if (NT_STATUS_IS_OK(status) && r.out.result == 0) {
+ for (i=0;i<r.out.num_towers;i++) {
+ if (r.out.towers[i].twr) {
+ display_tower(mem_ctx, &r.out.towers[i].twr->tower);
+ }
}
+ }
+
+ twr->tower.floors[3].lhs.protocol = EPM_PROTOCOL_HTTP;
+ twr->tower.floors[3].lhs.info.lhs_data = data_blob(NULL, 0);
+ twr->tower.floors[3].rhs.http.port = 0;
- binding.object = twr->tower.floors[0].lhs.info.uuid.uuid;
- binding.object_version = twr->tower.floors[0].lhs.info.uuid.version;
-
- status = dcerpc_binding_build_tower(mem_ctx, &binding, &twr->tower);
- if (NT_STATUS_IS_ERR(status)) {
- printf("Error parsing binding string '%s'\n", test_bindings[i]);
- return False;
- }
-
- status = dcerpc_epm_Map(p, mem_ctx, &r);
- if (NT_STATUS_IS_OK(status) && r.out.result == 0) {
- for (j=0;j<r.out.num_towers;j++) {
- if (r.out.towers[j].twr) {
- display_tower(mem_ctx, &r.out.towers[j].twr->tower);
- }
+ status = dcerpc_epm_Map(p, mem_ctx, &r);
+ if (NT_STATUS_IS_OK(status) && r.out.result == 0) {
+ for (i=0;i<r.out.num_towers;i++) {
+ if (r.out.towers[i].twr) {
+ display_tower(mem_ctx, &r.out.towers[i].twr->tower);
}
}
}
+
+ twr->tower.floors[3].lhs.protocol = EPM_PROTOCOL_SMB;
+ twr->tower.floors[3].lhs.info.lhs_data = data_blob(NULL, 0);
+ twr->tower.floors[3].rhs.smb.unc = "";
+
+ twr->tower.floors[4].lhs.protocol = EPM_PROTOCOL_NETBIOS;
+ twr->tower.floors[4].lhs.info.lhs_data = data_blob(NULL, 0);
+ twr->tower.floors[4].rhs.netbios.name = "";
+
+ status = dcerpc_epm_Map(p, mem_ctx, &r);
+ if (NT_STATUS_IS_OK(status) && r.out.result == 0) {
+ for (i=0;i<r.out.num_towers;i++) {
+ if (r.out.towers[i].twr) {
+ display_tower(mem_ctx, &r.out.towers[i].twr->tower);
+ }
+ }
+ }
+
+ /* FIXME: Extend to do other protocols as well (ncacn_unix_stream, ncalrpc) */
return True;
}