diff options
author | Andrew Tridgell <tridge@samba.org> | 2003-11-21 13:14:17 +0000 |
---|---|---|
committer | Andrew Tridgell <tridge@samba.org> | 2003-11-21 13:14:17 +0000 |
commit | a465add90f3291f022104600c6221e8d90287e64 (patch) | |
tree | 155a7f43e7a50027be5d9144755bf134ee585810 /source4/librpc/idl/epmapper.idl | |
parent | 82d6f5587b6052a226f90a82314573fb348fb0ce (diff) | |
download | samba-a465add90f3291f022104600c6221e8d90287e64.tar.gz samba-a465add90f3291f022104600c6221e8d90287e64.tar.bz2 samba-a465add90f3291f022104600c6221e8d90287e64.zip |
* changed the way strings are handled in pidl to a much more general
interface. We now support an arbitrary set of flags to each parser,
and these can be used to control the string types. I have provided
some common IDL string types in librpc/idl/idl_types.h which needs to
be included in every IDL file.
* added IDL for the endpoint mapper. Added a test suite that enumerates
all endpoints on the server.
(This used to be commit d2665f36a75b482ff82733f72ffac938c2acf87a)
Diffstat (limited to 'source4/librpc/idl/epmapper.idl')
-rw-r--r-- | source4/librpc/idl/epmapper.idl | 134 |
1 files changed, 134 insertions, 0 deletions
diff --git a/source4/librpc/idl/epmapper.idl b/source4/librpc/idl/epmapper.idl new file mode 100644 index 0000000000..c58ceb1fc0 --- /dev/null +++ b/source4/librpc/idl/epmapper.idl @@ -0,0 +1,134 @@ +#include "idl_types.h" + +/* + endpoint mapper interface +*/ + +[ + uuid(e1af8308-5d1f-11c9-91a4-08002b14a0fa), + version(3.0), + pointer_default(unique) +] +interface epmapper +{ + + typedef struct { + GUID uuid; + uint16 version; + } epm_prot_uuid; + + typedef [nodiscriminant] union { + [case(13)] epm_prot_uuid uuid; + [default] ; + } epm_protocol_info; + + typedef struct { + uint8 protocol; + [switch_is(protocol)] epm_protocol_info info; + } epm_lhs; + + typedef struct { + uint16 unknown; + } epm_rhs; + + typedef struct { + [subcontext(2)] epm_lhs lhs; + [subcontext(2)] epm_rhs rhs; + } epm_floor; + + typedef [flag(NDR_NOALIGN)] struct { + uint16 num_floors; + epm_floor floors[num_floors]; + } epm_towers; + + typedef struct { + uint32 tower_length; + [subcontext(4)] epm_towers towers; + } twr_t; + + typedef struct { + GUID object; + twr_t *tower; + ascstr2 annotation; + } epm_entry_t; + + typedef struct { + GUID uuid; + uint16 vers_major; + uint16 vers_minor; + } rpc_if_id_t; + + /**********************/ + /* Function 0x0 */ + void epm_Insert( + [in] uint32 num_ents, + [in,size_is(num_ents)] epm_entry_t entries[], + [in] uint32 replace, + [out] uint32 *status + ); + + /**********************/ + /* Function 0x1 */ + void epm_Delete( + [in] uint32 num_ents, + [in, size_is(num_ents)] epm_entry_t entries[], + [out] uint32 *status + ); + + /**********************/ + /* Function 0x02 */ + void epm_Lookup( + [in] uint32 inquiry_type, + [in] GUID *object, + [in] rpc_if_id_t *interface_id, + [in] uint32 vers_option, + [in, out, ref] policy_handle *entry_handle, + [in] uint32 max_ents, + [out] uint32 num_ents, + [out, length_is(num_ents), size_is(max_ents)] epm_entry_t entries[], + [out] uint32 status + ); + + + /**********************/ + /* Function 0x03 */ + + typedef struct { + twr_t *twr; + } twr_p_t; + + void epm_Map( + [in] GUID *object, + [in] twr_t *map_tower, + [in, out] policy_handle *entry_handle, + [in] uint32 max_towers, + [out] uint32 *num_towers, + [out, length_is(*num_towers), size_is(max_towers)] twr_p_t towers[], + [out] uint32 *status + ); + + + /**********************/ + /* Function 0x04 */ + void epm_LookupHandleFree( + [in, out] policy_handle *entry_handle, + [out] uint32 *status + ); + + /**********************/ + /* Function 0x05 */ + void epm_InqObject( + [out] GUID *epm_object, + [out] uint32 *status + ); + + + /**********************/ + /* Function 0x05 */ + void epm_MgmtDelete( + [in] uint32 object_speced, + [in] GUID *object, + [in] twr_t *tower, + [out] uint32 *status + ); +} |