The branch, master has been updated
       via  f80d56a s4-torture: No need to disable rpc.spoolss.win test when 
compiled with MIT kerberos.
       via  8b7788c selftest: mark the spoolss add print processor tests as 
knownfail for now.
       via  00ee6a6 s4-torture: add simple tests for 
spoolss_{Add|Delete}PrintProcessor.
       via  fdf9474 doserr: add mapping for 
WERR_PRINT_PROCESSOR_ALREADY_INSTALLED.
       via  9744bf5 spoolss: fill in IDL for spoolss_DeletePrintProcessor.
       via  e8797a3 s4-torture: also deal with "Microsoft XPS Document Writer 
v4" as default driver.
       via  cc153fe s4-torture: add ndr test for spoolss_RpcSetJobNamedProperty.
       via  c568a2e s4-torture: add ndr test for spoolss_GetCorePrinterDrivers.
       via  c51866e s4-torture: add simple test for spoolss_RpcSendRecvBidiData.
       via  aa1e5f2 s4-torture: add test for spoolss_RpcEnumJobNamedProperties.
       via  3d567f6 spoolss: add spoolss_MonitorContainer IDL.
       via  1aafc84 spoolss: make RPC_PrintNamedProperty public
       via  cc38511 spoolss: fill in IDL for JobNamedProperty calls.
       via  ec29957 spoolss: make more container objects public for 
iremotewinspool.
       via  5a5ed68 spoolss: add idl for spoolss_RpcSendRecvBidiData.
       via  b072bb7 s4-torture: add missing NTSTATUS checks in test_AddJob().
       via  69d9e3e spoolss: add [ms_union] to spoolss.idl where appropriate.
       via  229108e spoolss: fix string types in spoolss_JTEXP.
       via  393ad20 spoolss: Fix two size elements in the devmode private 
spoolss_JTEXP struct.
      from  d7708fd talloc: Fix a typo

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit f80d56a1a0d62c5a1cdbe78ec3214b9f53e28946
Author: Günther Deschner <g...@samba.org>
Date:   Fri May 17 11:23:22 2013 +0200

    s4-torture: No need to disable rpc.spoolss.win test when compiled with MIT 
kerberos.
    
    Guenther
    
    Signed-off-by: Günther Deschner <g...@samba.org>
    
    Reviewed-by: David Disseldorp <dd...@samba.org>
    
    Autobuild-User(master): David Disseldorp <dd...@samba.org>
    Autobuild-Date(master): Mon May 20 20:35:33 CEST 2013 on sn-devel-104

commit 8b7788c5d8ecbac3b8a41cdbb4fec7f0e73a9b76
Author: Günther Deschner <g...@samba.org>
Date:   Fri Feb 1 14:53:12 2013 +0100

    selftest: mark the spoolss add print processor tests as knownfail for now.
    
    Guenther
    
    Signed-off-by: Günther Deschner <g...@samba.org>
    
    Reviewed-by: David Disseldorp <dd...@samba.org>

commit 00ee6a648b6290d6d3ddcb35fe5aa4c797222684
Author: Günther Deschner <g...@samba.org>
Date:   Fri Feb 1 14:07:50 2013 +0100

    s4-torture: add simple tests for spoolss_{Add|Delete}PrintProcessor.
    
    Guenther
    
    Signed-off-by: Günther Deschner <g...@samba.org>
    
    Reviewed-by: David Disseldorp <dd...@samba.org>

commit fdf94747599e1461873fb2a5466f1e55d904333f
Author: Günther Deschner <g...@samba.org>
Date:   Fri Feb 1 14:07:07 2013 +0100

    doserr: add mapping for WERR_PRINT_PROCESSOR_ALREADY_INSTALLED.
    
    Guenther
    
    Signed-off-by: Günther Deschner <g...@samba.org>
    
    Reviewed-by: David Disseldorp <dd...@samba.org>

commit 9744bf519b1fcdab59ba7d55b2b664a6b44b30bd
Author: Günther Deschner <g...@samba.org>
Date:   Fri Feb 1 02:34:11 2013 +0100

    spoolss: fill in IDL for spoolss_DeletePrintProcessor.
    
    Guenther
    
    Signed-off-by: Günther Deschner <g...@samba.org>
    
    Reviewed-by: David Disseldorp <dd...@samba.org>

commit e8797a3ecc03cbbdbc51c3952ac72fd663d5849c
Author: Günther Deschner <g...@samba.org>
Date:   Thu Jan 31 22:06:20 2013 +0100

    s4-torture: also deal with "Microsoft XPS Document Writer v4" as default 
driver.
    
    Guenther
    
    Signed-off-by: Günther Deschner <g...@samba.org>
    
    Reviewed-by: David Disseldorp <dd...@samba.org>

commit cc153fe86f780d4aefe40999064b294b612e92d6
Author: Günther Deschner <g...@samba.org>
Date:   Thu Jan 31 14:56:17 2013 +0100

    s4-torture: add ndr test for spoolss_RpcSetJobNamedProperty.
    
    Guenther
    
    Signed-off-by: Günther Deschner <g...@samba.org>
    
    Reviewed-by: David Disseldorp <dd...@samba.org>

commit c568a2e5c58d01fdd27156e84b361e49c4666fb1
Author: Günther Deschner <g...@samba.org>
Date:   Tue Jan 22 10:17:27 2013 +0100

    s4-torture: add ndr test for spoolss_GetCorePrinterDrivers.
    
    Guenther
    
    Signed-off-by: Günther Deschner <g...@samba.org>
    
    Reviewed-by: David Disseldorp <dd...@samba.org>

commit c51866eadf6159a6fa76af28be3b9a724ed28b46
Author: Günther Deschner <g...@samba.org>
Date:   Thu Jan 31 20:44:54 2013 +0100

    s4-torture: add simple test for spoolss_RpcSendRecvBidiData.
    
    Guenther
    
    Signed-off-by: Günther Deschner <g...@samba.org>
    
    Reviewed-by: David Disseldorp <dd...@samba.org>

commit aa1e5f29af2a4560eecaac08ed62c2e63d3c8504
Author: Günther Deschner <g...@samba.org>
Date:   Mon Jan 21 22:09:22 2013 +0100

    s4-torture: add test for spoolss_RpcEnumJobNamedProperties.
    
    Guenther
    
    Signed-off-by: Günther Deschner <g...@samba.org>
    
    Reviewed-by: David Disseldorp <dd...@samba.org>

commit 3d567f6a962a59cb69b702e7ed2c968246c26566
Author: Günther Deschner <g...@samba.org>
Date:   Sun Feb 24 14:06:59 2013 +0100

    spoolss: add spoolss_MonitorContainer IDL.
    
    Guenther
    
    Signed-off-by: Günther Deschner <g...@samba.org>
    
    Reviewed-by: David Disseldorp <dd...@samba.org>

commit 1aafc844a721746b4feddbd2d547463a43821a2f
Author: Günther Deschner <g...@samba.org>
Date:   Thu Jan 24 23:31:19 2013 +0100

    spoolss: make RPC_PrintNamedProperty public
    
    Signed-off-by: Günther Deschner <g...@samba.org>
    
    Reviewed-by: David Disseldorp <dd...@samba.org>

commit cc38511903dbf34eeb358759f00341f60688acdb
Author: Günther Deschner <g...@samba.org>
Date:   Mon Jan 21 21:37:12 2013 +0100

    spoolss: fill in IDL for JobNamedProperty calls.
    
    Guenther
    
    Signed-off-by: Günther Deschner <g...@samba.org>
    
    Reviewed-by: David Disseldorp <dd...@samba.org>

commit ec29957e884d345009edac18ad362ba91de39f9c
Author: Günther Deschner <g...@samba.org>
Date:   Sat Jan 19 00:20:42 2013 +0100

    spoolss: make more container objects public for iremotewinspool.
    
    Guenther
    
    Signed-off-by: Günther Deschner <g...@samba.org>
    
    Reviewed-by: David Disseldorp <dd...@samba.org>

commit 5a5ed68d0a92b36ddad9160deaf58314c13b2b49
Author: Günther Deschner <g...@samba.org>
Date:   Sat Jan 19 00:47:42 2013 +0100

    spoolss: add idl for spoolss_RpcSendRecvBidiData.
    
    Guenther
    
    Signed-off-by: Günther Deschner <g...@samba.org>
    
    Reviewed-by: David Disseldorp <dd...@samba.org>

commit b072bb76dbdd96ee676c2bfbbffe58a187ef25ac
Author: Günther Deschner <g...@samba.org>
Date:   Tue Feb 5 16:10:34 2013 +0100

    s4-torture: add missing NTSTATUS checks in test_AddJob().
    
    Guenther
    
    Signed-off-by: Günther Deschner <g...@samba.org>
    
    Reviewed-by: David Disseldorp <dd...@samba.org>

commit 69d9e3ef870fdd643bdc6fb4c893fa26d06fb2cf
Author: Günther Deschner <g...@samba.org>
Date:   Wed Jan 30 20:05:51 2013 +0100

    spoolss: add [ms_union] to spoolss.idl where appropriate.
    
    Normally we would activate [ms_union] for the entire interface but given the
    fact we use this IDL file also for custom-marshalled structures we would
    generate union arm alignment also for the custom-marshalled unions where 
they
    are inappropriate. Thus, only enable [ms_union] only for unions that are 
part of
    the MS-RPRN IDL.
    
    Guenther
    
    Signed-off-by: Günther Deschner <g...@samba.org>
    
    Reviewed-by: David Disseldorp <dd...@samba.org>

commit 229108e26645e121fa5ec06911f573dce8198c07
Author: Günther Deschner <g...@samba.org>
Date:   Wed Jan 30 15:55:18 2013 +0100

    spoolss: fix string types in spoolss_JTEXP.
    
    Guenther
    
    Signed-off-by: Günther Deschner <g...@samba.org>
    
    Reviewed-by: David Disseldorp <dd...@samba.org>

commit 393ad20577c7fa66928ecb34bc8b323feb881ea5
Author: Günther Deschner <g...@samba.org>
Date:   Tue Jan 29 21:57:58 2013 +0100

    spoolss: Fix two size elements in the devmode private spoolss_JTEXP struct.
    
    Guenther
    
    Signed-off-by: Günther Deschner <g...@samba.org>
    
    Reviewed-by: David Disseldorp <dd...@samba.org>

-----------------------------------------------------------------------

Summary of changes:
 libcli/util/doserr.c                        |    1 +
 librpc/idl/spoolss.idl                      |  211 +++++++++++--
 selftest/knownfail                          |    1 +
 source3/rpc_server/spoolss/srv_spoolss_nt.c |    6 +-
 source4/rpc_server/spoolss/dcesrv_spoolss.c |    6 +-
 source4/torture/ndr/spoolss.c               |   73 +++++
 source4/torture/rpc/rpc.c                   |    2 +-
 source4/torture/rpc/spoolss.c               |  453 ++++++++++++++++++++++++++-
 source4/torture/rpc/spoolss_win.c           |    3 -
 source4/torture/wscript_build               |    4 +-
 10 files changed, 714 insertions(+), 46 deletions(-)


Changeset truncated at 500 lines:

diff --git a/libcli/util/doserr.c b/libcli/util/doserr.c
index a0c152d..f16db42 100644
--- a/libcli/util/doserr.c
+++ b/libcli/util/doserr.c
@@ -309,6 +309,7 @@ static const struct werror_code_struct dos_errs[] =
        { "WERR_PASSWORD_RESTRICTION", WERR_PASSWORD_RESTRICTION },
        { "WERR_WRONG_PASSWORD", WERR_WRONG_PASSWORD },
        { "WERR_CLASS_NOT_REGISTERED", WERR_CLASS_NOT_REGISTERED },
+       { "WERR_PRINT_PROCESSOR_ALREADY_INSTALLED", 
WERR_PRINT_PROCESSOR_ALREADY_INSTALLED },
        
/*****************************************************************************
         Auto-generated Win32 error from:
         http://msdn.microsoft.com/en-us/library/cc231199%28PROT.10%29.aspx
diff --git a/librpc/idl/spoolss.idl b/librpc/idl/spoolss.idl
index a43449b..e7fecfe 100644
--- a/librpc/idl/spoolss.idl
+++ b/librpc/idl/spoolss.idl
@@ -28,7 +28,7 @@ cpp_quote("#define spoolss_security_descriptor 
security_descriptor")
                uint16 millisecond;
        } spoolss_Time;
 
-       typedef struct {
+       typedef [public] struct {
                [value(ndr_size_spoolss_Time(time, ndr->flags))] uint32 size;
                [unique] spoolss_Time *time;
        } spoolss_TimeCtr;
@@ -427,10 +427,10 @@ cpp_quote("#define spoolss_security_descriptor 
security_descriptor")
                uint32 dwSize;
                [value(SPOOLSS_DM_SIGNATURE_JTEXP)] spoolss_DM_Signature 
dwSignature;
                [value(0)] uint32 dwVersion;
-               [value(16)] uint32 wJTHdrSize;
-               uint32 wCoreMFOSize;
-               [string,charset(UTF16)] uint16 *ModelName;
-               nstring_array FeatureOptionPairs;
+               [value(16)] uint16 wJTHdrSize;
+               uint16 wCoreMFOSize; /* must be sizeof the two following 
elements, must be dwSize - 16*/
+               nstring ModelName;
+               [flag(STR_UTF8|STR_NULLTERM|NDR_REMAINING)] string_array 
FeatureOptionPairs;
        } spoolss_JTEXP;
 
        /* Device Mode Extra Data: OEM_DMEXTRA */
@@ -885,7 +885,7 @@ cpp_quote("#define spoolss_security_descriptor 
security_descriptor")
 
        /******************/
        /* Function: 0x01 */
-       typedef struct {
+       typedef [public] struct {
                [value(_ndr_size_spoolss_DeviceMode(devmode, ndr->flags))] 
uint32 _ndr_size;
                [subcontext(4),subcontext_size(_ndr_size)] spoolss_DeviceMode 
*devmode;
        } spoolss_DevmodeContainer;
@@ -1053,7 +1053,7 @@ cpp_quote("#define spoolss_security_descriptor 
security_descriptor")
                uint32 size_high;
        } spoolss_SetJobInfo4;
 
-       typedef [public] union {
+       typedef [ms_union,public] union {
                [case(1)] spoolss_SetJobInfo1 *info1;
                [case(2)] spoolss_SetJobInfo2 *info2;
                [case(3)] spoolss_JobInfo3    *info3;
@@ -1061,7 +1061,7 @@ cpp_quote("#define spoolss_security_descriptor 
security_descriptor")
                [default];
        } spoolss_SetJobInfo;
 
-       typedef struct {
+       typedef [public] struct {
                uint32 level;
                [switch_is(level)] spoolss_SetJobInfo info;
        } spoolss_JobInfoContainer;
@@ -1251,7 +1251,7 @@ cpp_quote("#define spoolss_security_descriptor 
security_descriptor")
                uint32 *devmode_ptr;
        } spoolss_SetPrinterInfo9;
 
-       typedef [switch_type(uint32)] union {
+       typedef [ms_union,switch_type(uint32)] union {
                [case(0)] spoolss_SetPrinterInfo0 *info0;
                [case(1)] spoolss_SetPrinterInfo1 *info1;
                [case(2)] spoolss_SetPrinterInfo2 *info2;
@@ -1265,7 +1265,7 @@ cpp_quote("#define spoolss_security_descriptor 
security_descriptor")
                [default];
        } spoolss_SetPrinterInfo;
 
-       typedef struct {
+       typedef [public] struct {
                uint32 level;
                [switch_is(level)] spoolss_SetPrinterInfo info;
        } spoolss_SetPrinterInfoCtr;
@@ -1428,7 +1428,7 @@ cpp_quote("#define spoolss_security_descriptor 
security_descriptor")
                hyper min_inbox_driver_ver_version;
        } spoolss_AddDriverInfo8;
 
-       typedef [switch_type(uint32)] union {
+       typedef [ms_union,switch_type(uint32)] union {
                [case(1)] spoolss_AddDriverInfo1 *info1;
                [case(2)] spoolss_AddDriverInfo2 *info2;
                [case(3)] spoolss_AddDriverInfo3 *info3;
@@ -1437,7 +1437,7 @@ cpp_quote("#define spoolss_security_descriptor 
security_descriptor")
                [case(8)] spoolss_AddDriverInfo8 *info8;
        } spoolss_AddDriverInfo;
 
-       typedef struct {
+       typedef [public] struct {
                uint32 level;
                [switch_is(level)] spoolss_AddDriverInfo info;
        } spoolss_AddDriverInfoCtr;
@@ -1746,14 +1746,14 @@ cpp_quote("#define spoolss_security_descriptor 
security_descriptor")
                [string,charset(UTF16)] uint16 *datatype;
        } spoolss_DocumentInfo1;
 
-       typedef [switch_type(uint32)] union {
+       typedef [ms_union,switch_type(uint32)] union {
                [case(1)] spoolss_DocumentInfo1 *info1;
                [case(2)]; /* TODO */
                [case(3)]; /* TODO */
                [default];
        } spoolss_DocumentInfo;
 
-       typedef struct {
+       typedef [public] struct {
                uint32 level;
                [switch_is(level)] spoolss_DocumentInfo info;
        } spoolss_DocumentInfoCtr;
@@ -2047,12 +2047,12 @@ cpp_quote("#define spoolss_security_descriptor 
security_descriptor")
                uint32 lang_id;
        } spoolss_AddFormInfo2;
 
-       typedef [switch_type(uint32)] union {
+       typedef [ms_union,switch_type(uint32)] union {
                [case(1)] spoolss_AddFormInfo1 *info1;
                [case(2)] spoolss_AddFormInfo2 *info2;
        } spoolss_AddFormInfo;
 
-       typedef struct {
+       typedef [public] struct {
                uint32 level;
                [switch_is(level)] spoolss_AddFormInfo info;
        } spoolss_AddFormInfoCtr;
@@ -2279,14 +2279,14 @@ cpp_quote("#define spoolss_security_descriptor 
security_descriptor")
                DATA_BLOB monitor_data; /* relative ?? */
        } spoolss_SetPortInfoFF;
 
-       typedef [switch_type(uint32)] union {
+       typedef [ms_union,switch_type(uint32)] union {
                [case(1)] spoolss_SetPortInfo1 *info1;
                [case(2)] spoolss_SetPortInfo2 *info2;
                [case(3)] spoolss_SetPortInfo3 *info3;
                [case(0xff)] spoolss_SetPortInfoFF *infoFF;
        } spoolss_SetPortInfo;
 
-       typedef struct {
+       typedef [public] struct {
                uint32 level;
                [switch_is(level)] spoolss_SetPrinterInfo info;
        } spoolss_SetPortInfoContainer;
@@ -2365,6 +2365,27 @@ cpp_quote("#define spoolss_security_descriptor 
security_descriptor")
 
        /******************/
        /* Function: 0x2e */
+
+       typedef struct {
+               [string,charset(URF16)] uint16 *monitor_name;
+       } spoolss_AddMonitorInfo1;
+
+       typedef struct {
+               [string,charset(URF16)] uint16 *monitor_name;
+               [string,charset(URF16)] uint16 *environment;
+               [string,charset(URF16)] uint16 *dll_name;
+       } spoolss_AddMonitorInfo2;
+
+       typedef [ms_union,switch_type(uint32)] union {
+               [case(1)] spoolss_AddMonitorInfo1 *info1;
+               [case(2)] spoolss_AddMonitorInfo2 *info2;
+       } spoolss_AddMonitorInfo;
+
+       typedef [public] struct {
+               uint32 level;
+               [switch_is(level)] spoolss_MonitorInfo info;
+       } spoolss_MonitorContainer;
+
        [todo] WERROR spoolss_AddMonitor(
        );
 
@@ -2375,7 +2396,10 @@ cpp_quote("#define spoolss_security_descriptor 
security_descriptor")
 
        /******************/
        /* Function: 0x30 */
-       [todo] WERROR spoolss_DeletePrintProcessor(
+       WERROR spoolss_DeletePrintProcessor(
+               [in,unique] [string,charset(UTF16)] uint16 *server,
+               [in,unique] [string,charset(UTF16)] uint16 *architecture,
+               [in] [string,charset(UTF16)] uint16 print_processor_name[]
        );
 
        /******************/
@@ -2549,7 +2573,7 @@ cpp_quote("#define spoolss_security_descriptor 
security_descriptor")
        /******************/
        /* Function: 0x3d */
 
-       typedef struct {
+       typedef [public] struct {
                uint32 monitor_data_size;
                [size_is(monitor_data_size),unique] uint8 *monitor_data;
        } spoolss_PortVarContainer;
@@ -2660,7 +2684,7 @@ cpp_quote("#define spoolss_security_descriptor 
security_descriptor")
                PRINTER_NOTIFY_OPTIONS_REFRESH  = 0x00000001
        } spoolssNotifyOptionFlags;
 
-       typedef struct {
+       typedef [public] struct {
                [value(2)] uint32 version;
                spoolssNotifyOptionFlags flags;
                uint32 count;
@@ -2692,7 +2716,7 @@ cpp_quote("#define spoolss_security_descriptor 
security_descriptor")
                NOTIFY_TABLE_SECURITYDESCRIPTOR = 0x0005
        } spoolss_NotifyTable;
 
-       typedef [switch_type(uint32)] union {
+       typedef [ms_union, switch_type(uint32)] union {
                [case(1)] uint32 integer[2];
                [case(2)] spoolss_NotifyString string;
                [case(3)] spoolss_DevmodeContainer devmode;
@@ -2708,14 +2732,14 @@ cpp_quote("#define spoolss_security_descriptor 
security_descriptor")
                [switch_is(variable_type)] spoolss_NotifyData data;
        } spoolss_Notify;
 
-       typedef struct {
+       typedef [public] struct {
                [value(2)] uint32 version;
                uint32 flags;
                uint32 count;
                [size_is(count)] spoolss_Notify notifies[];
        } spoolss_NotifyInfo;
 
-       typedef [switch_type(uint32)] union {
+       typedef [ms_union,switch_type(uint32)] union {
                [case(0)] spoolss_NotifyInfo *info0;
        } spoolss_ReplyPrinterInfo;
 
@@ -2775,13 +2799,13 @@ cpp_quote("#define spoolss_security_descriptor 
security_descriptor")
                udlong reserved;
        } spoolss_UserLevel3;
 
-       typedef [switch_type(uint32)] union {
+       typedef [ms_union,switch_type(uint32)] union {
                [case(1)]  spoolss_UserLevel1 *level1;
                [case(2)]  spoolss_UserLevel2 *level2;
                [case(3)]  spoolss_UserLevel3 *level3;
        } spoolss_UserLevel;
 
-       typedef struct {
+       typedef [public] struct {
                uint32 level;
                [switch_is(level)] spoolss_UserLevel user_info;
        } spoolss_UserLevelCtr;
@@ -3158,7 +3182,76 @@ cpp_quote("#define spoolss_security_descriptor 
security_descriptor")
 
        /******************/
        /* Function: 0x61 */
-       [todo] WERROR spoolss_61(
+
+       const string BIDI_ACTION_ENUM_SCHEMA = "EnumSchema";
+       const string BIDI_ACTION_GET = "Get";
+       const string BIDI_ACTION_SET = "Set";
+       const string BIDI_ACTION_GET_ALL = "GetAll";
+
+       typedef enum {
+               BIDI_NULL       = 0x00000000,
+               BIDI_INT        = 0x00000001,
+               BIDI_FLOAT      = 0x00000002,
+               BIDI_BOOL       = 0x00000003,
+               BIDI_STRING     = 0x00000004,
+               BIDI_TEXT       = 0x00000005,
+               BIDI_ENUM       = 0x00000006,
+               BIDI_BLOB       = 0x00000007
+       } BIDI_TYPE;
+
+       typedef struct {
+               uint32 cbBuf;
+               [size_is(cbBuf), unique] uint8 *pszString;
+       } RPC_BINARY_CONTAINER;
+
+       typedef [ms_union,switch_type(uint32)] union {
+               [case(BIDI_NULL)]       uint32 bData;
+               [case(BIDI_BOOL)]       uint32 bData;
+               [case(BIDI_INT)]        uint32 iData;
+               [case(BIDI_STRING)]     [unique] [string,charset(UTF16)] uint16 
*sData;
+               [case(BIDI_TEXT)]       [unique] [string,charset(UTF16)] uint16 
*sData;
+               [case(BIDI_ENUM)]       [unique] [string,charset(UTF16)] uint16 
*sData;
+               /*[case(BIDI_FLOAT)]    float fData;*/
+               [case(BIDI_BLOB)]       RPC_BINARY_CONTAINER biData;
+       } RPC_BIDI_DATA_u;
+
+       typedef struct {
+               uint32 dwBidiType;
+               [switch_is(dwBidiType)] RPC_BIDI_DATA_u u;
+       } RPC_BIDI_DATA;
+
+       typedef struct {
+               uint32 dwReqNumber;
+               [unique] [string,charset(UTF16)] uint16 *pSchema;
+               RPC_BIDI_DATA data;
+       } RPC_BIDI_REQUEST_DATA;
+
+       typedef [public] struct {
+               [value(1)] uint32 Version;
+               uint32 Flags;
+               uint32 Count;
+               [size_is(Count), unique] RPC_BIDI_REQUEST_DATA *aData[];
+       } RPC_BIDI_REQUEST_CONTAINER;
+
+       typedef struct {
+               uint32 dwResult;
+               uint32 dwReqNumber;
+               [unique] [string,charset(UTF16)] uint16 *pSchema;
+               RPC_BIDI_DATA data;
+       } RPC_BIDI_RESPONSE_DATA;
+
+       typedef [public] struct {
+               [value(1)] uint32 Version;
+               uint32 Flags;
+               uint32 Count;
+               [size_is(Count), unique] RPC_BIDI_RESPONSE_DATA *aData[];
+       } RPC_BIDI_RESPONSE_CONTAINER;
+
+       WERROR spoolss_RpcSendRecvBidiData(
+               [in] policy_handle hPrinter,
+               [in,unique] [string,charset(UTF16)] uint16 *pAction,
+               [in] RPC_BIDI_REQUEST_CONTAINER *pReqData,
+               [out] RPC_BIDI_RESPONSE_CONTAINER **ppRespData
        );
 
        /******************/
@@ -3183,14 +3276,14 @@ cpp_quote("#define spoolss_security_descriptor 
security_descriptor")
 
        /******************/
        /* Function: 0x66 */
-       typedef struct {
+       typedef [public] struct {
                GUID core_driver_guid;
                NTTIME driver_date;
                hyper driver_version;
                [charset(UTF8)] uint8 formname[520];
        } spoolss_CorePrinterDriver;
 
-       WERROR spoolss_GetCorePrinterDrivers(
+       [public] WERROR spoolss_GetCorePrinterDrivers(
                [in,unique] [string,charset(UTF16)] uint16 *servername,
                [in,ref] [string,charset(UTF16)] uint16 *architecture,
                [in] uint32 core_driver_size,
@@ -3243,21 +3336,73 @@ cpp_quote("#define spoolss_security_descriptor 
security_descriptor")
 
        /******************/
        /* Function: 0x6e */
-       [todo] WERROR spoolss_RpcGetJobNamedPropertyValue(
+
+       const string SPLFILE_CONTENT_TYPE_PROP_NAME             = "Spool File 
Contents";
+       const string SPLFILE_CONTENT_TYPE_XPS_MS                = "TYPE_XPS_MS";
+       const string SPLFILE_CONTENT_TYPE_XPS_OPEN              = 
"TYPE_XPS_OPEN";
+       const string SPLFILE_CONTENT_TYPE_PDL_POSTSCRIPT        = 
"TYPE_PDL_POSTSCRIPT";
+       const string SPLFILE_CONTENT_TYPE_PDL_UNKNOWN           = 
"TYPE_PDL_UNKNOWN";
+
+       typedef enum {
+               kRpcPropertyTypeString  = 1,
+               kRpcPropertyTypeInt32   = 2,
+               kRpcPropertyTypeInt64   = 3,
+               kRpcPropertyTypeByte    = 4,
+               kRpcPropertyTypeBuffer  = 5
+       } RPC_EPrintPropertyType;
+
+       typedef struct {
+               uint32 cbBuf;
+               [size_is(cbBuf)] uint8 *pBuf;
+       } propertyBlob;
+
+       typedef [ms_union,switch_type(RPC_EPrintPropertyType)] union {
+               [case(kRpcPropertyTypeString)] [string,charset(UTF16)] uint16 
*propertyString;
+               [case(kRpcPropertyTypeInt32)] uint32 propertyInt32;
+               [case(kRpcPropertyTypeInt64)] hyper propertyInt64;
+               [case(kRpcPropertyTypeByte)] uint8 propertyByte;
+               [case(kRpcPropertyTypeBuffer)] propertyBlob propertyBlob;
+       } RPC_PrintPropertyValueUnion;
+
+       typedef [public] struct {
+               RPC_EPrintPropertyType ePropertyType;
+               [switch_is(ePropertyType)] RPC_PrintPropertyValueUnion value;
+       } RPC_PrintPropertyValue;
+
+       typedef [public] struct {
+               [string,charset(UTF16)] uint16 *propertyName;
+               RPC_PrintPropertyValue propertyValue;
+       } RPC_PrintNamedProperty;
+
+       WERROR spoolss_RpcGetJobNamedPropertyValue(
+               [in,ref] policy_handle *hPrinter,
+               [in] uint32 JobId,
+               [in] [string,charset(UTF16)] uint16 *pszName,
+               [out,ref] RPC_PrintPropertyValue *pValue
        );
 
        /******************/
        /* Function: 0x6f */
-       [todo] WERROR spoolss_RpcSetJobNamedProperty(
+       [public] WERROR spoolss_RpcSetJobNamedProperty(
+               [in,ref] policy_handle *hPrinter,
+               [in] uint32 JobId,
+               [in,ref] RPC_PrintNamedProperty *pProperty
        );
 
        /******************/
        /* Function: 0x70 */
-       [todo] WERROR spoolss_RpcDeleteJobNamedProperty(
+       WERROR spoolss_RpcDeleteJobNamedProperty(
+               [in,ref] policy_handle *hPrinter,
+               [in] uint32 JobId,
+               [in] [string,charset(UTF16)] uint16 *pszName
        );
 
        /******************/
        /* Function: 0x71 */
-       [todo] WERROR spoolss_RpcEnumJobNamedProperties(
+       WERROR spoolss_RpcEnumJobNamedProperties(
+               [in,ref] policy_handle *hPrinter,
+               [in] uint32 JobId,
+               [out,ref] uint32 *pcProperties,
+               [out,ref,size_is(,*pcProperties)] RPC_PrintNamedProperty 
**ppProperties
        );
 }
diff --git a/selftest/knownfail b/selftest/knownfail
index a7f347e..a06bab6 100644
--- a/selftest/knownfail
+++ b/selftest/knownfail
@@ -215,6 +215,7 @@
 ^samba3.raw.session.*reauth2 # maybe fix this?
 ^samba3.rpc.spoolss.printer.addprinter.driver_info_winreg # knownfail or 
flapping?
 ^samba3.rpc.spoolss.printer.addprinterex.driver_info_winreg # knownfail or 
flapping?
+^samba3.rpc.spoolss.printserver.*.add_processor\(.*\)$
 #
 # The following tests fail against plugin_s4_dc (aka s3fs) currently.
 # These need to be examined and either fixed or correctly categorised.
diff --git a/source3/rpc_server/spoolss/srv_spoolss_nt.c 
b/source3/rpc_server/spoolss/srv_spoolss_nt.c
index 891f429..7482443 100644
--- a/source3/rpc_server/spoolss/srv_spoolss_nt.c
+++ b/source3/rpc_server/spoolss/srv_spoolss_nt.c
@@ -10852,11 +10852,11 @@ WERROR _spoolss_60(struct pipes_struct *p,
 }
 
 /****************************************************************
- _spoolss_61
+ _spoolss_RpcSendRecvBidiData
 ****************************************************************/
 
-WERROR _spoolss_61(struct pipes_struct *p,
-                  struct spoolss_61 *r)
+WERROR _spoolss_RpcSendRecvBidiData(struct pipes_struct *p,
+                                   struct spoolss_RpcSendRecvBidiData *r)
 {
        p->fault_state = DCERPC_FAULT_OP_RNG_ERROR;
        return WERR_NOT_SUPPORTED;
diff --git a/source4/rpc_server/spoolss/dcesrv_spoolss.c 
b/source4/rpc_server/spoolss/dcesrv_spoolss.c
index e3df4e0..cb892a6 100644
--- a/source4/rpc_server/spoolss/dcesrv_spoolss.c
+++ b/source4/rpc_server/spoolss/dcesrv_spoolss.c
@@ -1592,10 +1592,10 @@ static WERROR dcesrv_spoolss_60(struct 
dcesrv_call_state *dce_call, TALLOC_CTX *
 
 
 /*
-  spoolss_61
+  spoolss_RpcSendRecvBidiData
 */
-static WERROR dcesrv_spoolss_61(struct dcesrv_call_state *dce_call, TALLOC_CTX 
*mem_ctx,
-                      struct spoolss_61 *r)
+static WERROR dcesrv_spoolss_RpcSendRecvBidiData(struct dcesrv_call_state 
*dce_call, TALLOC_CTX *mem_ctx,
+                      struct spoolss_RpcSendRecvBidiData *r)
 {
        DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
 }
diff --git a/source4/torture/ndr/spoolss.c b/source4/torture/ndr/spoolss.c
index 52a5b03..5818fdf 100644
--- a/source4/torture/ndr/spoolss.c
+++ b/source4/torture/ndr/spoolss.c
@@ -1699,6 +1699,75 @@ static const uint8_t setprinter_64_req_data[] = {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
 };
 
+static const uint8_t getcoreprinterdrivers_64_req_data[] = {
+       0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00,
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+       0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x5c, 0x00,
+       0x31, 0x00, 0x39, 0x00, 0x32, 0x00, 0x2e, 0x00, 0x31, 0x00, 0x36, 0x00,
+       0x38, 0x00, 0x2e, 0x00, 0x33, 0x00, 0x2e, 0x00, 0x34, 0x00, 0x38, 0x00,
+       0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00,
+       0x00, 0x00, 0x00, 0x00, 0x57, 0x00, 0x69, 0x00, 0x6e, 0x00, 0x64, 0x00,
+       0x6f, 0x00, 0x77, 0x00, 0x73, 0x00, 0x20, 0x00, 0x78, 0x00, 0x36, 0x00,
+       0x34, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+       0x9d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x44, 0x00,
+       0x32, 0x00, 0x30, 0x00, 0x45, 0x00, 0x41, 0x00, 0x33, 0x00, 0x37, 0x00,
+       0x32, 0x00, 0x2d, 0x00, 0x44, 0x00, 0x44, 0x00, 0x33, 0x00, 0x35, 0x00,
+       0x2d, 0x00, 0x34, 0x00, 0x39, 0x00, 0x35, 0x00, 0x30, 0x00, 0x2d, 0x00,
+       0x39, 0x00, 0x45, 0x00, 0x44, 0x00, 0x38, 0x00, 0x2d, 0x00, 0x41, 0x00,
+       0x36, 0x00, 0x33, 0x00, 0x33, 0x00, 0x35, 0x00, 0x41, 0x00, 0x46, 0x00,
+       0x45, 0x00, 0x37, 0x00, 0x39, 0x00, 0x46, 0x00, 0x30, 0x00, 0x7d, 0x00,


-- 
Samba Shared Repository

Reply via email to