1
0
mirror of https://github.com/samba-team/samba.git synced 2025-02-26 21:57:41 +03:00

r4520: added a enum test function to the echo pipe

(This used to be commit f9e0aa1ab1faac039893db241819907c9c4bb510)
This commit is contained in:
Andrew Tridgell 2005-01-04 23:27:12 +00:00 committed by Gerald (Jerry) Carter
parent 8448dd6ea0
commit 7588a01cb6
3 changed files with 71 additions and 0 deletions

View File

@ -92,4 +92,30 @@ interface rpcecho
uint32 echo_TestSleep(
[in] uint32 seconds
);
typedef enum {
ECHO_ENUM1 = 1,
ECHO_ENUM2 = 2
} echo_Enum1;
typedef [v1_enum] enum {
ECHO_ENUM1_32 = 1,
ECHO_ENUM2_32 = 2
} echo_Enum1_32;
typedef struct {
echo_Enum1 e1;
echo_Enum1_32 e2;
} echo_Enum2;
typedef union {
[case(ECHO_ENUM1)] echo_Enum1 e1;
[case(ECHO_ENUM2)] echo_Enum2 e2;
} echo_Enum3;
void echo_TestEnum(
[in,out,ref] echo_Enum1 *foo1,
[in,out,ref] echo_Enum2 *foo2,
[in,out,ref,switch_is(*foo1)] echo_Enum3 *foo3
);
}

View File

@ -107,6 +107,12 @@ static NTSTATUS echo_TestCall2(struct dcesrv_call_state *dce_call, TALLOC_CTX *m
return NT_STATUS_OK;
}
static NTSTATUS echo_TestEnum(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct echo_TestEnum *r)
{
r->out.foo2->e1 = ECHO_ENUM2;
return NT_STATUS_OK;
}
static long echo_TestSleep(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct echo_TestSleep *r)
{
sleep(r->in.seconds);

View File

@ -262,6 +262,41 @@ static BOOL test_sleep(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx)
}
#endif
/*
test enum handling
*/
static BOOL test_enum(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx)
{
NTSTATUS status;
struct echo_TestEnum r;
BOOL ret = True;
enum echo_Enum1 v = ECHO_ENUM1;
struct echo_Enum2 e2;
union echo_Enum3 e3;
r.in.foo1 = &v;
r.in.foo2 = &e2;
r.in.foo3 = &e3;
r.out.foo1 = &v;
r.out.foo2 = &e2;
r.out.foo3 = &e3;
e2.e1 = 76;
e2.e2 = ECHO_ENUM1_32;
e3.e1 = ECHO_ENUM2;
printf("\nTesting TestEnum\n");
status = dcerpc_echo_TestEnum(p, mem_ctx, &r);
if (!NT_STATUS_IS_OK(status)) {
printf("TestEnum failed - %s\n", nt_errstr(status));
ret = False;
}
return ret;
}
BOOL torture_rpc_echo(void)
{
NTSTATUS status;
@ -303,6 +338,10 @@ BOOL torture_rpc_echo(void)
ret = False;
}
if (!test_enum(p, mem_ctx)) {
ret = False;
}
/*
if (!test_sleep(p, mem_ctx)) {
ret = False;