diff options
author | Stefan Metzmacher <metze@samba.org> | 2004-11-23 08:57:42 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 13:06:06 -0500 |
commit | 2f39a9fe621a0c80688fe06712bd5b0495ca7e65 (patch) | |
tree | 8eca24dab0d2e3ff781bc90f77349e3338b514b8 /source4/librpc/idl | |
parent | 587745e32da3c45773c129c8b9740c89aa8bbd9f (diff) | |
download | samba-2f39a9fe621a0c80688fe06712bd5b0495ca7e65.tar.gz samba-2f39a9fe621a0c80688fe06712bd5b0495ca7e65.tar.bz2 samba-2f39a9fe621a0c80688fe06712bd5b0495ca7e65.zip |
r3920: - it seem that we need to send a magic bind_guid in DsBind()
to make DsWriteAccountSpn() work
- add idl and torture test for DsWriteAccountSpn()
metze
(This used to be commit 625826ad9050c68407ae5e8abfee13699986303c)
Diffstat (limited to 'source4/librpc/idl')
-rw-r--r-- | source4/librpc/idl/drsuapi.idl | 40 |
1 files changed, 37 insertions, 3 deletions
diff --git a/source4/librpc/idl/drsuapi.idl b/source4/librpc/idl/drsuapi.idl index 17e84fffab..481c1a1de1 100644 --- a/source4/librpc/idl/drsuapi.idl +++ b/source4/librpc/idl/drsuapi.idl @@ -17,8 +17,11 @@ interface drsuapi [size_is(length)] uint8 data[]; } drsuapi_DsBindInfo; + /* this is a magic guid you need to pass to DsBind to make drsuapi_DsWriteAccountSpn() work */ + const string DRSUAPI_DS_BIND_GUID = "e24d201a-4fd6-11d1-a3da-0000f875ae0d"; + WERROR drsuapi_DsBind( - [in] GUID *server_guid, + [in] GUID *bind_guid, [in,out] drsuapi_DsBindInfo *bind_info, [out,ref] policy_handle *bind_handle ); @@ -145,8 +148,39 @@ interface drsuapi ); /*****************/ - /* Function 0x0d */ - WERROR DRSUAPI_WRITE_SPN(); + /* Function 0x0d */ + typedef enum { + DRSUAPI_DS_SPN_OPERATION_ADD = 0, + DRSUAPI_DS_SPN_OPERATION_REPLACE= 1, + DRSUAPI_DS_SPN_OPERATION_DELETE = 2 + } drsuapi_DsSpnOperation; + + typedef struct { + int32 operation; + int32 unknown1; + unistr *object_dn; + [range(0,10000)] uint32 count; + [size_is(count)] drsuapi_DsNameString *spn_names; + } drsuapi_DsWriteAccountSpnRequest1; + + typedef union { + [case(1)] drsuapi_DsWriteAccountSpnRequest1 req1; + } drsuapi_DsWriteAccountSpnRequest; + + typedef struct { + WERROR status; + } drsuapi_DsWriteAccountSpnResult1; + + typedef union { + [case(1)] drsuapi_DsWriteAccountSpnResult1 res1; + } drsuapi_DsWriteAccountSpnResult; + + WERROR drsuapi_DsWriteAccountSpn( + [in,ref] policy_handle *bind_handle, + [in, out] uint32 level, + [in,switch_is(level)] drsuapi_DsWriteAccountSpnRequest req, + [out,switch_is(level)] drsuapi_DsWriteAccountSpnResult res + ); /*****************/ /* Function 0x0e */ |