mirror of
https://github.com/samba-team/samba.git
synced 2025-02-25 17:57:42 +03:00
s4-smbtorture: rework smbcli_rap_netprintqenum a bit.
Guenther
This commit is contained in:
parent
1765732f82
commit
2a9e8e348a
@ -37,6 +37,15 @@
|
|||||||
} \
|
} \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
|
#define RAP_RETURN(call) do { \
|
||||||
|
NTSTATUS _status; \
|
||||||
|
_status = call; \
|
||||||
|
if (!NT_STATUS_IS_OK(_status)) { \
|
||||||
|
return _status; \
|
||||||
|
} \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
|
||||||
#define NDR_GOTO(call) do { \
|
#define NDR_GOTO(call) do { \
|
||||||
enum ndr_err_code _ndr_err; \
|
enum ndr_err_code _ndr_err; \
|
||||||
_ndr_err = call; \
|
_ndr_err = call; \
|
||||||
@ -525,6 +534,57 @@ NTSTATUS smbcli_rap_netservergetinfo(struct smbcli_tree *tree,
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static NTSTATUS rap_pull_rap_PrintQueue0(TALLOC_CTX *mem_ctx, struct ndr_pull *ndr, uint16_t convert, struct rap_PrintQueue0 *r)
|
||||||
|
{
|
||||||
|
NDR_RETURN(ndr_pull_bytes(ndr, r->PrintQName, 13));
|
||||||
|
return NT_STATUS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
static NTSTATUS rap_pull_rap_PrintQueue1(TALLOC_CTX *mem_ctx, struct ndr_pull *ndr, uint16_t convert, struct rap_PrintQueue1 *r)
|
||||||
|
{
|
||||||
|
NDR_RETURN(ndr_pull_bytes(ndr, r->PrintQName, 13));
|
||||||
|
NDR_RETURN(ndr_pull_uint8(ndr, NDR_SCALARS, &r->Pad1));
|
||||||
|
NDR_RETURN(ndr_pull_uint16(ndr, NDR_SCALARS, &r->Priority));
|
||||||
|
NDR_RETURN(ndr_pull_uint16(ndr, NDR_SCALARS, &r->StartTime));
|
||||||
|
NDR_RETURN(ndr_pull_uint16(ndr, NDR_SCALARS, &r->UntilTime));
|
||||||
|
RAP_RETURN(rap_pull_string(mem_ctx, ndr, convert, &r->SeparatorPageFilename));
|
||||||
|
RAP_RETURN(rap_pull_string(mem_ctx, ndr, convert, &r->PrintProcessorDllName));
|
||||||
|
RAP_RETURN(rap_pull_string(mem_ctx, ndr, convert, &r->PrintDestinationsName));
|
||||||
|
RAP_RETURN(rap_pull_string(mem_ctx, ndr, convert, &r->PrintParameterString));
|
||||||
|
RAP_RETURN(rap_pull_string(mem_ctx, ndr, convert, &r->CommentString));
|
||||||
|
NDR_RETURN(ndr_pull_rap_PrintQStatusCode(ndr, NDR_SCALARS, &r->PrintQStatus));
|
||||||
|
NDR_RETURN(ndr_pull_uint16(ndr, NDR_SCALARS, &r->PrintJobCount));
|
||||||
|
|
||||||
|
return NT_STATUS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
static NTSTATUS rap_pull_rap_PrintQueue3(TALLOC_CTX *mem_ctx, struct ndr_pull *ndr, uint16_t convert, struct rap_PrintQueue3 *r)
|
||||||
|
{
|
||||||
|
RAP_RETURN(rap_pull_string(mem_ctx, ndr, convert, &r->PrintQueueName));
|
||||||
|
NDR_RETURN(ndr_pull_uint16(ndr, NDR_SCALARS, &r->Priority));
|
||||||
|
NDR_RETURN(ndr_pull_uint16(ndr, NDR_SCALARS, &r->StartTime));
|
||||||
|
NDR_RETURN(ndr_pull_uint16(ndr, NDR_SCALARS, &r->UntilTime));
|
||||||
|
NDR_RETURN(ndr_pull_uint16(ndr, NDR_SCALARS, &r->Pad));
|
||||||
|
RAP_RETURN(rap_pull_string(mem_ctx, ndr, convert, &r->SeparatorPageFilename));
|
||||||
|
RAP_RETURN(rap_pull_string(mem_ctx, ndr, convert, &r->PrintProcessorDllName));
|
||||||
|
RAP_RETURN(rap_pull_string(mem_ctx, ndr, convert, &r->PrintParameterString));
|
||||||
|
RAP_RETURN(rap_pull_string(mem_ctx, ndr, convert, &r->CommentString));
|
||||||
|
NDR_RETURN(ndr_pull_rap_PrintQStatusCode(ndr, NDR_SCALARS, &r->PrintQStatus));
|
||||||
|
NDR_RETURN(ndr_pull_uint16(ndr, NDR_SCALARS, &r->PrintJobCount));
|
||||||
|
RAP_RETURN(rap_pull_string(mem_ctx, ndr, convert, &r->Printers));
|
||||||
|
RAP_RETURN(rap_pull_string(mem_ctx, ndr, convert, &r->DriverName));
|
||||||
|
RAP_RETURN(rap_pull_string(mem_ctx, ndr, convert, &r->PrintDriverData));
|
||||||
|
|
||||||
|
return NT_STATUS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
static NTSTATUS rap_pull_rap_PrintQueue5(TALLOC_CTX *mem_ctx, struct ndr_pull *ndr, uint16_t convert, struct rap_PrintQueue5 *r)
|
||||||
|
{
|
||||||
|
RAP_RETURN(rap_pull_string(mem_ctx, ndr, convert, &r->PrintQueueName));
|
||||||
|
|
||||||
|
return NT_STATUS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
NTSTATUS smbcli_rap_netprintqenum(struct smbcli_tree *tree,
|
NTSTATUS smbcli_rap_netprintqenum(struct smbcli_tree *tree,
|
||||||
struct smb_iconv_convenience *iconv_convenience,
|
struct smb_iconv_convenience *iconv_convenience,
|
||||||
TALLOC_CTX *mem_ctx,
|
TALLOC_CTX *mem_ctx,
|
||||||
@ -592,87 +652,24 @@ NTSTATUS smbcli_rap_netprintqenum(struct smbcli_tree *tree,
|
|||||||
for (i=0; i<r->out.count; i++) {
|
for (i=0; i<r->out.count; i++) {
|
||||||
switch(r->in.level) {
|
switch(r->in.level) {
|
||||||
case 0:
|
case 0:
|
||||||
NDR_GOTO(ndr_pull_bytes(call->ndr_pull_data,
|
result = rap_pull_rap_PrintQueue0(mem_ctx, call->ndr_pull_data, r->out.convert, &r->out.info[i].info0);
|
||||||
r->out.info[i].info0.PrintQName, 13));
|
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
NDR_GOTO(ndr_pull_bytes(call->ndr_pull_data,
|
result = rap_pull_rap_PrintQueue1(mem_ctx, call->ndr_pull_data, r->out.convert, &r->out.info[i].info1);
|
||||||
r->out.info[i].info1.PrintQName, 13));
|
|
||||||
NDR_GOTO(ndr_pull_uint8(call->ndr_pull_data,
|
|
||||||
NDR_SCALARS, &r->out.info[i].info1.Pad1));
|
|
||||||
NDR_GOTO(ndr_pull_uint16(call->ndr_pull_data,
|
|
||||||
NDR_SCALARS, &r->out.info[i].info1.Priority));
|
|
||||||
NDR_GOTO(ndr_pull_uint16(call->ndr_pull_data,
|
|
||||||
NDR_SCALARS, &r->out.info[i].info1.StartTime));
|
|
||||||
NDR_GOTO(ndr_pull_uint16(call->ndr_pull_data,
|
|
||||||
NDR_SCALARS, &r->out.info[i].info1.UntilTime));
|
|
||||||
RAP_GOTO(rap_pull_string(mem_ctx, call->ndr_pull_data,
|
|
||||||
r->out.convert,
|
|
||||||
&r->out.info[i].info1.SeparatorPageFilename));
|
|
||||||
RAP_GOTO(rap_pull_string(mem_ctx, call->ndr_pull_data,
|
|
||||||
r->out.convert,
|
|
||||||
&r->out.info[i].info1.PrintProcessorDllName));
|
|
||||||
RAP_GOTO(rap_pull_string(mem_ctx, call->ndr_pull_data,
|
|
||||||
r->out.convert,
|
|
||||||
&r->out.info[i].info1.PrintDestinationsName));
|
|
||||||
RAP_GOTO(rap_pull_string(mem_ctx, call->ndr_pull_data,
|
|
||||||
r->out.convert,
|
|
||||||
&r->out.info[i].info1.PrintParameterString));
|
|
||||||
RAP_GOTO(rap_pull_string(mem_ctx, call->ndr_pull_data,
|
|
||||||
r->out.convert,
|
|
||||||
&r->out.info[i].info1.CommentString));
|
|
||||||
NDR_GOTO(ndr_pull_rap_PrintQStatusCode(call->ndr_pull_data,
|
|
||||||
NDR_SCALARS, &r->out.info[i].info1.PrintQStatus));
|
|
||||||
NDR_GOTO(ndr_pull_uint16(call->ndr_pull_data,
|
|
||||||
NDR_SCALARS, &r->out.info[i].info1.PrintJobCount));
|
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
RAP_GOTO(rap_pull_string(mem_ctx, call->ndr_pull_data,
|
result = rap_pull_rap_PrintQueue3(mem_ctx, call->ndr_pull_data, r->out.convert, &r->out.info[i].info3);
|
||||||
r->out.convert,
|
|
||||||
&r->out.info[i].info3.PrintQueueName));
|
|
||||||
NDR_GOTO(ndr_pull_uint16(call->ndr_pull_data,
|
|
||||||
NDR_SCALARS, &r->out.info[i].info3.Priority));
|
|
||||||
NDR_GOTO(ndr_pull_uint16(call->ndr_pull_data,
|
|
||||||
NDR_SCALARS, &r->out.info[i].info3.StartTime));
|
|
||||||
NDR_GOTO(ndr_pull_uint16(call->ndr_pull_data,
|
|
||||||
NDR_SCALARS, &r->out.info[i].info3.UntilTime));
|
|
||||||
NDR_GOTO(ndr_pull_uint16(call->ndr_pull_data,
|
|
||||||
NDR_SCALARS, &r->out.info[i].info3.Pad));
|
|
||||||
RAP_GOTO(rap_pull_string(mem_ctx, call->ndr_pull_data,
|
|
||||||
r->out.convert,
|
|
||||||
&r->out.info[i].info3.SeparatorPageFilename));
|
|
||||||
RAP_GOTO(rap_pull_string(mem_ctx, call->ndr_pull_data,
|
|
||||||
r->out.convert,
|
|
||||||
&r->out.info[i].info3.PrintProcessorDllName));
|
|
||||||
RAP_GOTO(rap_pull_string(mem_ctx, call->ndr_pull_data,
|
|
||||||
r->out.convert,
|
|
||||||
&r->out.info[i].info3.PrintParameterString));
|
|
||||||
RAP_GOTO(rap_pull_string(mem_ctx, call->ndr_pull_data,
|
|
||||||
r->out.convert,
|
|
||||||
&r->out.info[i].info3.CommentString));
|
|
||||||
NDR_GOTO(ndr_pull_rap_PrintQStatusCode(call->ndr_pull_data,
|
|
||||||
NDR_SCALARS, &r->out.info[i].info3.PrintQStatus));
|
|
||||||
NDR_GOTO(ndr_pull_uint16(call->ndr_pull_data,
|
|
||||||
NDR_SCALARS, &r->out.info[i].info3.PrintJobCount));
|
|
||||||
RAP_GOTO(rap_pull_string(mem_ctx, call->ndr_pull_data,
|
|
||||||
r->out.convert,
|
|
||||||
&r->out.info[i].info3.Printers));
|
|
||||||
RAP_GOTO(rap_pull_string(mem_ctx, call->ndr_pull_data,
|
|
||||||
r->out.convert,
|
|
||||||
&r->out.info[i].info3.DriverName));
|
|
||||||
RAP_GOTO(rap_pull_string(mem_ctx, call->ndr_pull_data,
|
|
||||||
r->out.convert,
|
|
||||||
&r->out.info[i].info3.PrintDriverData));
|
|
||||||
break;
|
break;
|
||||||
case 5:
|
case 5:
|
||||||
RAP_GOTO(rap_pull_string(mem_ctx, call->ndr_pull_data,
|
result = rap_pull_rap_PrintQueue5(mem_ctx, call->ndr_pull_data, r->out.convert, &r->out.info[i].info5);
|
||||||
r->out.convert,
|
|
||||||
&r->out.info[i].info5.PrintQueueName));
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!NT_STATUS_IS_OK(result)) {
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
if (DEBUGLEVEL >= 10) {
|
if (DEBUGLEVEL >= 10) {
|
||||||
NDR_PRINT_OUT_DEBUG(rap_NetPrintQEnum, r);
|
NDR_PRINT_OUT_DEBUG(rap_NetPrintQEnum, r);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user