mapiproxy/libmapiproxy/libmapiproxy.h File Reference

#include <signal.h>
#include <dcerpc_server.h>
#include <talloc.h>
#include <tevent.h>
#include <tdb.h>
#include <dlinklist.h>
#include <fcntl.h>

Data Structures

struct  auth_serversupplied_info
struct  mapi_handles
struct  mapi_handles_context
struct  mapiproxy
struct  mapiproxy_module
struct  mapiproxy_module_list
struct  mpm_session
struct  openchangedb_message
struct  openchangedb_table

Defines

#define EMSABP_TDB_NAME   "emsabp_tdb.tdb"
 EMSABP server defines.
#define MAPI_HANDLES_NULL   "null"
#define MAPI_HANDLES_RESERVED   0xFFFFFFFF
#define MAPI_HANDLES_ROOT   "root"
#define OPENCHANGE_LDB_NAME   "openchange.ldb"

Typedefs

typedef NTSTATUS(* openchange_plugin_init_fn )(void)

Enumerations

enum  mapiproxy_status { MAPIPROXY_DEFAULT = 0x0, MAPIPROXY_CUSTOM = 0x1 }
enum  openchangedb_message_status { OPENCHANGEDB_MESSAGE_CREATE = 0x1, OPENCHANGEDB_MESSAGE_OPEN = 0x2 }

Functions

enum MAPISTATUS entryid_set_AB_EntryID (TALLOC_CTX *, const char *, struct SBinary_short *)
enum MAPISTATUS entryid_set_folder_EntryID (TALLOC_CTX *, struct GUID *, struct GUID *, uint16_t, uint64_t, struct Binary_r **)
openchange_plugin_init_fnload_openchange_plugins (TALLOC_CTX *mem_ctx, const char *path)
enum MAPISTATUS mapi_handles_add (struct mapi_handles_context *, uint32_t, struct mapi_handles **)
enum MAPISTATUS mapi_handles_delete (struct mapi_handles_context *, uint32_t)
enum MAPISTATUS mapi_handles_get_private_data (struct mapi_handles *, void **)
enum MAPISTATUS mapi_handles_get_systemfolder (struct mapi_handles *, int *)
struct mapi_handles_contextmapi_handles_init (TALLOC_CTX *)
enum MAPISTATUS mapi_handles_release (struct mapi_handles_context *)
enum MAPISTATUS mapi_handles_search (struct mapi_handles_context *, uint32_t, struct mapi_handles **)
enum MAPISTATUS mapi_handles_set_private_data (struct mapi_handles *, void *)
enum MAPISTATUS mapi_handles_set_systemfolder (struct mapi_handles *, int)
struct mapiproxy_modulemapiproxy_module_byname (const char *)
NTSTATUS mapiproxy_module_dispatch (struct dcesrv_call_state *, TALLOC_CTX *, void *, struct mapiproxy *)
NTSTATUS mapiproxy_module_init (struct dcesrv_context *)
NTSTATUS mapiproxy_module_ndr_pull (struct dcesrv_call_state *, TALLOC_CTX *, struct ndr_pull *)
NTSTATUS mapiproxy_module_pull (struct dcesrv_call_state *, TALLOC_CTX *, void *)
NTSTATUS mapiproxy_module_push (struct dcesrv_call_state *, TALLOC_CTX *, void *)
__BEGIN_DECLS NTSTATUS mapiproxy_module_register (const void *)
NTSTATUS mapiproxy_module_unbind (struct server_id, uint32_t)
struct mapiproxy_modulemapiproxy_server_byname (const char *)
struct mapiproxy_modulemapiproxy_server_bystatus (const char *, enum mapiproxy_status)
NTSTATUS mapiproxy_server_dispatch (struct dcesrv_call_state *, TALLOC_CTX *, void *, struct mapiproxy *)
TDB_CONTEXT * mapiproxy_server_emsabp_tdb_init (struct loadparm_context *)
NTSTATUS mapiproxy_server_init (struct dcesrv_context *)
bool mapiproxy_server_loaded (const char *)
void * mapiproxy_server_openchange_ldb_init (struct loadparm_context *)
NTSTATUS mapiproxy_server_register (const void *)
NTSTATUS mapiproxy_server_unbind (struct server_id, uint32_t)
bool mpm_session_cmp (struct mpm_session *, struct dcesrv_call_state *)
bool mpm_session_cmp_sub (struct mpm_session *, struct server_id, uint32_t)
bool mpm_session_increment_ref_count (struct mpm_session *)
struct mpm_sessionmpm_session_init (TALLOC_CTX *, struct dcesrv_call_state *)
struct mpm_sessionmpm_session_new (TALLOC_CTX *, struct server_id, uint32_t)
bool mpm_session_release (struct mpm_session *)
bool mpm_session_set_destructor (struct mpm_session *, bool(*destructor)(void *))
bool mpm_session_set_private_data (struct mpm_session *, void *)
enum MAPISTATUS openchangedb_create_folder (struct ldb_context *, uint64_t, uint64_t, uint64_t, const char *, int)
enum MAPISTATUS openchangedb_create_mailbox (struct ldb_context *, const char *, int, uint64_t *)
enum MAPISTATUS openchangedb_delete_folder (struct ldb_context *, uint64_t)
enum MAPISTATUS openchangedb_get_distinguishedName (TALLOC_CTX *, struct ldb_context *, uint64_t, char **)
enum MAPISTATUS openchangedb_get_fid (struct ldb_context *, const char *, uint64_t *)
enum MAPISTATUS openchangedb_get_fid_by_name (struct ldb_context *, uint64_t, const char *, uint64_t *)
enum MAPISTATUS openchangedb_get_fid_from_partial_uri (struct ldb_context *, const char *, uint64_t *)
enum MAPISTATUS openchangedb_get_folder_count (struct ldb_context *, uint64_t, uint32_t *)
enum MAPISTATUS openchangedb_get_folder_property (TALLOC_CTX *, struct ldb_context *, uint32_t, uint64_t, void **)
enum MAPISTATUS openchangedb_get_mailboxDN (TALLOC_CTX *, struct ldb_context *, uint64_t, char **)
enum MAPISTATUS openchangedb_get_MailboxGuid (struct ldb_context *, const char *, struct GUID *)
enum MAPISTATUS openchangedb_get_MailboxReplica (struct ldb_context *, const char *, uint16_t *, struct GUID *)
enum MAPISTATUS openchangedb_get_mapistoreURI (TALLOC_CTX *, struct ldb_context *, uint64_t, char **, bool)
enum MAPISTATUS openchangedb_get_MAPIStoreURIs (struct ldb_context *, const char *, TALLOC_CTX *, struct StringArrayW_r **)
enum MAPISTATUS openchangedb_get_message_count (struct ldb_context *, uint64_t, uint32_t *, bool)
enum MAPISTATUS openchangedb_get_mid_by_subject (struct ldb_context *, uint64_t, const char *, bool, uint64_t *)
enum MAPISTATUS openchangedb_get_new_changeNumber (struct ldb_context *, uint64_t *)
enum MAPISTATUS openchangedb_get_new_folderID (struct ldb_context *, uint64_t *)
enum MAPISTATUS openchangedb_get_parent_fid (struct ldb_context *, uint64_t, uint64_t *, bool)
void * openchangedb_get_property_data (TALLOC_CTX *, struct ldb_result *, uint32_t, uint32_t, const char *)
void * openchangedb_get_property_data_message (TALLOC_CTX *, struct ldb_message *, uint32_t, const char *)
enum MAPISTATUS openchangedb_get_PublicFolderID (struct ldb_context *, uint32_t, uint64_t *)
enum MAPISTATUS openchangedb_get_PublicFolderReplica (struct ldb_context *, uint16_t *, struct GUID *)
enum MAPISTATUS openchangedb_get_ReceiveFolder (TALLOC_CTX *, struct ldb_context *, const char *, const char *, uint64_t *, const char **)
void * openchangedb_get_special_property (TALLOC_CTX *, struct ldb_context *, struct ldb_result *, uint32_t, const char *)
enum MAPISTATUS openchangedb_get_SystemFolderID (struct ldb_context *, const char *, uint32_t, uint64_t *)
enum MAPISTATUS openchangedb_get_table_property (TALLOC_CTX *, struct ldb_context *, const char *, uint32_t, uint32_t, void **)
enum MAPISTATUS openchangedb_get_TransportFolder (struct ldb_context *, const char *, uint64_t *)
enum MAPISTATUS openchangedb_get_users_from_partial_uri (TALLOC_CTX *, struct ldb_context *, const char *, uint32_t *, char ***, char ***)
enum MAPISTATUS openchangedb_lookup_folder_property (struct ldb_context *, uint32_t, uint64_t)
enum MAPISTATUS openchangedb_message_create (TALLOC_CTX *, struct ldb_context *, uint64_t, uint64_t, bool, void **)
enum MAPISTATUS openchangedb_message_get_property (TALLOC_CTX *, void *, uint32_t, void **)
enum MAPISTATUS openchangedb_message_open (TALLOC_CTX *, struct ldb_context *, uint64_t, uint64_t, void **, void **)
enum MAPISTATUS openchangedb_message_save (void *, uint8_t)
enum MAPISTATUS openchangedb_message_set_properties (TALLOC_CTX *, void *, struct SRow *)
const char * openchangedb_property_get_attribute (uint32_t)
enum MAPISTATUS openchangedb_reserve_fmid_range (struct ldb_context *, uint64_t, uint64_t *)
enum MAPISTATUS openchangedb_set_folder_properties (struct ldb_context *, uint64_t, struct SRow *)
char * openchangedb_set_folder_property_data (TALLOC_CTX *, struct SPropValue *)
enum MAPISTATUS openchangedb_set_ReceiveFolder (struct ldb_context *, const char *, const char *, uint64_t)
enum MAPISTATUS openchangedb_table_get_property (TALLOC_CTX *, void *, struct ldb_context *, enum MAPITAGS, uint32_t, bool live_filtered, void **)
enum MAPISTATUS openchangedb_table_init (TALLOC_CTX *, uint8_t, uint64_t, void **)
 /details Initialize an openchangedb table
enum MAPISTATUS openchangedb_table_set_restrictions (void *, struct mapi_SRestriction *)
enum MAPISTATUS openchangedb_table_set_sort_order (void *, struct SSortOrderSet *)

Variables

static const uint8_t GUID_NSPI []
 Represents the NSPI Protocol in Permanent Entry IDs.

Define Documentation

#define EMSABP_TDB_NAME   "emsabp_tdb.tdb"

EMSABP server defines.

Referenced by mapiproxy_server_emsabp_tdb_init().

#define MAPI_HANDLES_NULL   "null"
#define MAPI_HANDLES_RESERVED   0xFFFFFFFF
#define MAPI_HANDLES_ROOT   "root"

Referenced by mapi_handles_add().

#define OPENCHANGE_LDB_NAME   "openchange.ldb"

Typedef Documentation

typedef NTSTATUS(* openchange_plugin_init_fn)(void)

Enumeration Type Documentation

Enumerator:
MAPIPROXY_DEFAULT 
MAPIPROXY_CUSTOM 
Enumerator:
OPENCHANGEDB_MESSAGE_CREATE 
OPENCHANGEDB_MESSAGE_OPEN 

Function Documentation

enum MAPISTATUS entryid_set_AB_EntryID ( TALLOC_CTX *  mem_ctx,
const char *  legacyExchangeDN,
struct SBinary_short *  bin 
)

Build an Address Book EntryID from a legacyExchangeDN

Parameters:
mem_ctx pointer to the memory context
legacyExchangeDN the string to copy into the binary blob
bin the binary blob where the function stores results

References GUID_NSPI.

Referenced by EcDoRpc_RopCreateMessage(), and emsmdbp_object_get_properties_mailbox().

enum MAPISTATUS entryid_set_folder_EntryID ( TALLOC_CTX *  mem_ctx,
struct GUID *  MailboxGuid,
struct GUID *  ReplGuid,
uint16_t  FolderType,
uint64_t  fid,
struct Binary_r **  rbin 
)

Build a folder EntryID

Parameters:
mem_ctx pointer to the memory context
MailboxGuid pointer to the Mailbox Guid
ReplGuid pointer to the Replica Guid
FolderType the type of folder
fid the folder identifier
rbin the Binary_r structure where the function stores results
Returns:
MAPI_E_SUCCESS on success, otherwise MAPI_E_INVALID_PARAMETER
openchange_plugin_init_fn* load_openchange_plugins ( TALLOC_CTX *  mem_ctx,
const char *  path 
)
enum MAPISTATUS mapi_handles_delete ( struct mapi_handles_context handles_ctx,
uint32_t  handle 
)

Remove the MAPI handle referenced by the handle parameter from the double chained list and mark its associated TDB record as null

Parameters:
handles_ctx pointer to the MAPI handles context
handle the handle to delete
Returns:
MAPI_E_SUCCESS on success, otherwise MAPI error

References mapi_handles::handle, mapi_handles_context::handles, MAPI_HANDLES_RESERVED, mapi_handles_tdb_free(), mapi_handles_traverse_delete(), mapi_handles::next, and mapi_handles_context::tdb_ctx.

Referenced by EcDoRpc_RopCreateAttach(), EcDoRpc_RopCreateFolder(), EcDoRpc_RopGetAttachmentTable(), EcDoRpc_RopGetPermissionsTable(), EcDoRpc_RopOpenAttach(), EcDoRpc_RopOpenMessage(), EcDoRpc_RopRelease(), EcDoRpc_RopSyncImportMessageChange(), and mapi_handles_traverse_delete().

enum MAPISTATUS mapi_handles_get_private_data ( struct mapi_handles handle,
void **  private_data 
)

Get the private data associated to a MAPI handle

Parameters:
handle pointer to the MAPI handle structure
private_data pointer on pointer to the private data the function returns
Returns:
MAPI_E_SUCCESS on success, otherwise MAPI_E_NOT_FOUND

References mapi_handles::private_data.

Referenced by EcDoRpc_RopCommitStream(), EcDoRpc_RopCopyTo(), EcDoRpc_RopCreateAttach(), EcDoRpc_RopCreateFolder(), EcDoRpc_RopCreateMessage(), EcDoRpc_RopDeleteFolder(), EcDoRpc_RopDeleteMessages(), EcDoRpc_RopEmptyFolder(), EcDoRpc_RopFastTransferSourceCopyTo(), EcDoRpc_RopFastTransferSourceGetBuffer(), EcDoRpc_RopFindRow(), EcDoRpc_RopGetAttachmentTable(), EcDoRpc_RopGetContentsTable(), EcDoRpc_RopGetHierarchyTable(), EcDoRpc_RopGetLocalReplicaIds(), EcDoRpc_RopGetPermissionsTable(), EcDoRpc_RopGetPropertiesAll(), EcDoRpc_RopGetPropertiesList(), EcDoRpc_RopGetPropertiesSpecific(), EcDoRpc_RopGetRulesTable(), EcDoRpc_RopGetStreamSize(), EcDoRpc_RopGetTransportFolder(), EcDoRpc_RopIdFromLongTermId(), EcDoRpc_RopLongTermIdFromId(), EcDoRpc_RopModifyPermissions(), EcDoRpc_RopModifyRecipients(), EcDoRpc_RopModifyRules(), EcDoRpc_RopMoveCopyMessages(), EcDoRpc_RopOpenAttach(), EcDoRpc_RopOpenEmbeddedMessage(), EcDoRpc_RopOpenFolder(), EcDoRpc_RopOpenMessage(), EcDoRpc_RopOpenStream(), EcDoRpc_RopQueryPosition(), EcDoRpc_RopQueryRows(), EcDoRpc_RopReadStream(), EcDoRpc_RopRegisterNotification(), EcDoRpc_RopReloadCachedInformation(), EcDoRpc_RopRemoveAllRecipients(), EcDoRpc_RopResetTable(), EcDoRpc_RopRestrict(), EcDoRpc_RopSaveChangesMessage(), EcDoRpc_RopSeekRow(), EcDoRpc_RopSeekStream(), EcDoRpc_RopSetColumns(), EcDoRpc_RopSetMessageReadFlag(), EcDoRpc_RopSetProperties(), EcDoRpc_RopSetStreamSize(), EcDoRpc_RopSortTable(), EcDoRpc_RopSubmitMessage(), EcDoRpc_RopSyncConfigure(), EcDoRpc_RopSyncGetTransferState(), EcDoRpc_RopSyncImportDeletes(), EcDoRpc_RopSyncImportHierarchyChange(), EcDoRpc_RopSyncImportMessageChange(), EcDoRpc_RopSyncImportMessageMove(), EcDoRpc_RopSyncImportReadStateChanges(), EcDoRpc_RopSyncOpenCollector(), EcDoRpc_RopSyncUploadStateStreamBegin(), EcDoRpc_RopSyncUploadStateStreamContinue(), EcDoRpc_RopSyncUploadStateStreamEnd(), EcDoRpc_RopTransportSend(), EcDoRpc_RopWriteStream(), emsmdbp_fill_notification(), RopEmptyFolder_GenericFolder(), RopGetReceiveFolder(), and RopSetReceiveFolder().

enum MAPISTATUS mapi_handles_get_systemfolder ( struct mapi_handles ,
int *   
)
struct mapi_handles_context* mapi_handles_init ( TALLOC_CTX *  mem_ctx  )  [read]

Initialize MAPI handles context

Parameters:
mem_ctx pointer to the memory context
Returns:
Allocated MAPI handles context on success, otherwise NULL

References mapi_handles_context::handles, mapi_handles_context::last_handle, and mapi_handles_context::tdb_ctx.

Referenced by emsmdbp_init().

enum MAPISTATUS mapi_handles_release ( struct mapi_handles_context handles_ctx  ) 

Release MAPI handles context

Parameters:
handles_ctx pointer to the MAPI handles context
Returns:
MAPI_E_SUCCESS on success, otherwise MAPI error

References mapi_handles_context::tdb_ctx.

Referenced by emsmdbp_mapi_handles_destructor().

enum MAPISTATUS mapi_handles_search ( struct mapi_handles_context handles_ctx,
uint32_t  handle,
struct mapi_handles **  rec 
)

Search for a record in the TDB database

Parameters:
handles_ctx pointer to the MAPI handles context
handle MAPI handle to lookup
rec pointer to the MAPI handle structure the function returns
Returns:
MAPI_E_SUCCESS on success, otherwise MAPI error

References mapi_handles::handle, mapi_handles_context::handles, MAPI_HANDLES_NULL, MAPI_HANDLES_RESERVED, mapi_handles::next, and mapi_handles_context::tdb_ctx.

Referenced by EcDoRpc_RopCommitStream(), EcDoRpc_RopCopyTo(), EcDoRpc_RopCreateAttach(), EcDoRpc_RopCreateFolder(), EcDoRpc_RopCreateMessage(), EcDoRpc_RopDeleteFolder(), EcDoRpc_RopDeleteMessages(), EcDoRpc_RopEmptyFolder(), EcDoRpc_RopFastTransferSourceCopyTo(), EcDoRpc_RopFastTransferSourceGetBuffer(), EcDoRpc_RopFindRow(), EcDoRpc_RopGetAttachmentTable(), EcDoRpc_RopGetContentsTable(), EcDoRpc_RopGetHierarchyTable(), EcDoRpc_RopGetLocalReplicaIds(), EcDoRpc_RopGetPermissionsTable(), EcDoRpc_RopGetPropertiesAll(), EcDoRpc_RopGetPropertiesList(), EcDoRpc_RopGetPropertiesSpecific(), EcDoRpc_RopGetRulesTable(), EcDoRpc_RopGetStreamSize(), EcDoRpc_RopGetTransportFolder(), EcDoRpc_RopIdFromLongTermId(), EcDoRpc_RopLongTermIdFromId(), EcDoRpc_RopModifyPermissions(), EcDoRpc_RopModifyRecipients(), EcDoRpc_RopModifyRules(), EcDoRpc_RopMoveCopyMessages(), EcDoRpc_RopOpenAttach(), EcDoRpc_RopOpenEmbeddedMessage(), EcDoRpc_RopOpenFolder(), EcDoRpc_RopOpenMessage(), EcDoRpc_RopOpenStream(), EcDoRpc_RopQueryPosition(), EcDoRpc_RopQueryRows(), EcDoRpc_RopReadStream(), EcDoRpc_RopRegisterNotification(), EcDoRpc_RopReloadCachedInformation(), EcDoRpc_RopRemoveAllRecipients(), EcDoRpc_RopResetTable(), EcDoRpc_RopRestrict(), EcDoRpc_RopSaveChangesMessage(), EcDoRpc_RopSeekRow(), EcDoRpc_RopSeekStream(), EcDoRpc_RopSetColumns(), EcDoRpc_RopSetMessageReadFlag(), EcDoRpc_RopSetProperties(), EcDoRpc_RopSetStreamSize(), EcDoRpc_RopSortTable(), EcDoRpc_RopSubmitMessage(), EcDoRpc_RopSyncConfigure(), EcDoRpc_RopSyncGetTransferState(), EcDoRpc_RopSyncImportDeletes(), EcDoRpc_RopSyncImportHierarchyChange(), EcDoRpc_RopSyncImportMessageChange(), EcDoRpc_RopSyncImportMessageMove(), EcDoRpc_RopSyncImportReadStateChanges(), EcDoRpc_RopSyncOpenCollector(), EcDoRpc_RopSyncUploadStateStreamBegin(), EcDoRpc_RopSyncUploadStateStreamContinue(), EcDoRpc_RopSyncUploadStateStreamEnd(), EcDoRpc_RopTransportSend(), EcDoRpc_RopWriteStream(), emsmdbp_fill_notification(), RopGetReceiveFolder(), and RopSetReceiveFolder().

enum MAPISTATUS mapi_handles_set_private_data ( struct mapi_handles handle,
void *  private_data 
)
enum MAPISTATUS mapi_handles_set_systemfolder ( struct mapi_handles ,
int   
)
struct mapiproxy_module* mapiproxy_module_byname ( const char *   )  [read]

References mp_modules, and num_mp_modules.

Referenced by mapiproxy_module_load().

NTSTATUS mapiproxy_module_dispatch ( struct dcesrv_call_state *  ,
TALLOC_CTX *  ,
void *  ,
struct mapiproxy  
)
NTSTATUS mapiproxy_module_init ( struct dcesrv_context *   ) 
NTSTATUS mapiproxy_module_ndr_pull ( struct dcesrv_call_state *  ,
TALLOC_CTX *  ,
struct ndr_pull *   
)
NTSTATUS mapiproxy_module_pull ( struct dcesrv_call_state *  ,
TALLOC_CTX *  ,
void *   
)
NTSTATUS mapiproxy_module_push ( struct dcesrv_call_state *  ,
TALLOC_CTX *  ,
void *   
)
__BEGIN_DECLS NTSTATUS mapiproxy_module_register ( const void *   ) 
NTSTATUS mapiproxy_module_unbind ( struct server_id  ,
uint32_t   
)
struct mapiproxy_module* mapiproxy_server_byname ( const char *   )  [read]
struct mapiproxy_module* mapiproxy_server_bystatus ( const char *  ,
enum  mapiproxy_status 
) [read]
NTSTATUS mapiproxy_server_dispatch ( struct dcesrv_call_state *  ,
TALLOC_CTX *  ,
void *  ,
struct mapiproxy  
)
TDB_CONTEXT* mapiproxy_server_emsabp_tdb_init ( struct loadparm_context *  lp_ctx  ) 

Initialize an EMSABP TDB context available to all instances when Samba is not run in single mode.

Parameters:
lp_ctx pointer to the loadparm context
Note:
TDB database can't be opened twice with O_RDWR flags. We ensure here we have a general context initialized, which we'll reopen within forked instances

return Allocated TDB context on success, otherwise NULL

References emsabp_tdb_ctx, and EMSABP_TDB_NAME.

Referenced by emsabp_tdb_init().

NTSTATUS mapiproxy_server_init ( struct dcesrv_context *  dce_ctx  ) 

Initialize mapiproxy servers modules

Parameters:
dce_ctx pointer to the connection context
Returns:
NT_STATUS_OK on success otherwise NT error

References load_openchange_plugins(), and mapiproxy_server_load().

Referenced by mapiproxy_op_init_server().

bool mapiproxy_server_loaded ( const char *   ) 
void* mapiproxy_server_openchange_ldb_init ( struct loadparm_context *  lp_ctx  ) 

Initialize an openchange LDB context available to all mapiproxy instances. This LDB context points on the OpenChange dispatcher database used within emsmdb default provider.

Parameters:
lp_ctx pointer to the loadparm context
Note:
The memory context is not free'd leading and causes a loss record.
Returns:
Allocated LDB context on success, otherwise NULL

References openchange_ldb_ctx, and OPENCHANGE_LDB_NAME.

Referenced by emsmdbp_openchange_ldb_init().

NTSTATUS mapiproxy_server_register ( const void *   ) 
NTSTATUS mapiproxy_server_unbind ( struct server_id  ,
uint32_t   
)
bool mpm_session_cmp ( struct mpm_session session,
struct dcesrv_call_state *  dce_call 
)

Compare the mpm session with the session context one

This function is a wrapper on mpm_session_cmp_sub

Parameters:
session pointer to the mapiproxy module session
dce_call pointer to the session context
Returns:
true on success, otherwise false
See also:
mpm_session_cmp_sub

References mpm_session_cmp_sub(), and mpm_session::server_id.

Referenced by cache_dispatch(), cache_pull_OpenAttach(), cache_pull_OpenMessage(), cache_pull_OpenStream(), cache_pull_Release(), cache_push_OpenAttach(), cache_push_OpenMessage(), cache_push_OpenStream(), and cache_push_ReadStream().

bool mpm_session_cmp_sub ( struct mpm_session session,
struct server_id  sid,
uint32_t  context_id 
)

Compare the mpm session with the session context one

Parameters:
session pointer to the mapiproxy module session
sid reference to a server_id structure to compare
context_id the connection context id to compare

References mpm_session::context_id, and mpm_session::server_id.

Referenced by cache_unbind(), and mpm_session_cmp().

bool mpm_session_increment_ref_count ( struct mpm_session session  ) 

Increment the ref_count associated to a session

Parameters:
session pointer to the session where to increment ref_count
Returns:
true on success, otherwise false

References mpm_session::ref_count.

Referenced by dcesrv_EcDoConnect(), dcesrv_EcDoConnectEx(), and dcesrv_NspiBind().

struct mpm_session* mpm_session_init ( TALLOC_CTX *  mem_ctx,
struct dcesrv_call_state *  dce_call 
) [read]

Create and return an allocated pointer to a mpm session

Parameters:
mem_ctx pointer to the memory context
dce_call pointer to the session context
Returns:
Pointer to an allocated mpm_session structure on success, otherwise NULL

References mpm_session_new().

Referenced by cache_pull_OpenAttach(), cache_pull_OpenMessage(), cache_pull_OpenStream(), dcesrv_EcDoConnect(), dcesrv_EcDoConnectEx(), and dcesrv_NspiBind().

struct mpm_session* mpm_session_new ( TALLOC_CTX *  mem_ctx,
struct server_id  serverid,
uint32_t  context_id 
) [read]

Create and return an allocated pointer to a mpm session

Parameters:
mem_ctx pointer to the memory context
serverid reference to the session context server identifier structure
context_id reference to the context identifier
Returns:
Pointer to an allocated mpm_session structure on success, otherwise NULL

References mpm_session::context_id, mpm_session::destructor, mpm_session::private_data, mpm_session::ref_count, and mpm_session::server_id.

Referenced by mpm_session_init().

bool mpm_session_release ( struct mpm_session session  ) 

Release a mapiproxy session context

Parameters:
session pointer to the mpm session context
Returns:
true on success, otherwise false

References mpm_session::destructor, mpm_session::private_data, and mpm_session::ref_count.

Referenced by cache_pull_Release(), cache_unbind(), dcesrv_EcDoDisconnect(), and dcesrv_NspiUnbind().

bool mpm_session_set_destructor ( struct mpm_session session,
bool(*)(void *)  destructor 
)

Set the mpm session destructor

Parameters:
session pointer to the mpm session context
destructor pointer to the destructor function
Returns:
true on success, otherwise false

References mpm_session::destructor.

Referenced by dcesrv_EcDoConnect(), dcesrv_EcDoConnectEx(), and dcesrv_NspiBind().

bool mpm_session_set_private_data ( struct mpm_session session,
void *  private_data 
)

Set the mpm session pointer on private data

Parameters:
session pointer to the mpm session context
private_data generic pointer on private data
Returns:
true on success, otherwise false

References mpm_session::private_data.

Referenced by dcesrv_EcDoConnect(), dcesrv_EcDoConnectEx(), and dcesrv_NspiBind().

enum MAPISTATUS openchangedb_create_folder ( struct ldb_context *  ldb_ctx,
uint64_t  parentFolderID,
uint64_t  fid,
uint64_t  changeNumber,
const char *  MAPIStoreURI,
int  systemIdx 
)

Create a folder in openchangedb

Parameters:
ldb_ctx pointer to the openchangedb LDB context
parentFolderID the FID of the parent folder
fid the FID of the folder to create
MAPIStoreURI the mapistore URI to associate to this folder
nt_time the creation time of the folder
changeNumber the change number
Returns:
MAPISTORE_SUCCESS on success, otherwise MAPISTORE error

References openchangedb_get_distinguishedName(), and openchangedb_get_mailboxDN().

Referenced by emsmdbp_mailbox_provision(), emsmdbp_mailbox_provision_public_freebusy(), and emsmdbp_object_folder_commit_creation().

enum MAPISTATUS openchangedb_create_mailbox ( struct ldb_context *  ldb_ctx,
const char *  username,
int  systemIdx,
uint64_t *  fidp 
)

Create a folder in openchangedb

Parameters:
ldb_ctx pointer to the openchangedb LDB context
username the owner of the mailbox
systemIdx the id of the mailbox
fidp a pointer to the fid of the mailbox
Returns:
MAPISTORE_SUCCESS on success, otherwise MAPISTORE error

References openchangedb_get_new_changeNumber(), and openchangedb_get_new_folderID().

Referenced by emsmdbp_mailbox_provision().

enum MAPISTATUS openchangedb_delete_folder ( struct ldb_context *  ,
uint64_t   
)
enum MAPISTATUS openchangedb_get_distinguishedName ( TALLOC_CTX *  parent_ctx,
struct ldb_context *  ldb_ctx,
uint64_t  fid,
char **  distinguishedName 
)

Retrieve the distinguishedName associated to a mailbox system folder.

Parameters:
parent_ctx pointer to the parent memory context
ldb_ctx pointer to the openchange LDB context
fid the Folder identifier to search for
distinguishedName pointer on pointer to the distinguishedName string the function returns
Returns:
MAPI_E_SUCCESS on success, otherwise MAPI_E_NOT_FOUND

Referenced by openchangedb_create_folder(), openchangedb_delete_folder(), openchangedb_message_create(), and openchangedb_set_ReceiveFolder().

enum MAPISTATUS openchangedb_get_fid ( struct ldb_context *  ldb_ctx,
const char *  mapistoreURL,
uint64_t *  fidp 
)

Retrieve the fid associated with a mapistore URI.

Parameters:
ldb_ctx pointer to the openchange LDB context
fid the Folder identifier to search for
mapistoreURL pointer on pointer to the mapistore URI the function returns
mailboxstore boolean value which defines whether the record has to be searched within Public folders hierarchy or not
Returns:
MAPI_E_SUCCESS on success, otherwise MAPI_E_NOT_FOUND

Referenced by emsmdbp_get_fid_from_uri(), and emsmdbp_mailbox_provision().

enum MAPISTATUS openchangedb_get_fid_by_name ( struct ldb_context *  ldb_ctx,
uint64_t  parent_fid,
const char *  foldername,
uint64_t *  fid 
)

Retrieve the folder ID associated with a given folder name

This function looks up the specified foldername (as a PidTagDisplayName) and returns the associated folder ID. Note that folder names are only unique in the context of a parent folder, so the parent folder needs to be provided.

Parameters:
ldb_ctx pointer to the openchange LDB context
parent_fid the folder ID of the parent folder
foldername the name to look up
fid the folder ID for the folder with the specified name (0 if not found)
Returns:
MAPI_E_SUCCESS on success, otherwise MAPI_E_NOT_FOUND

Referenced by emsmdbp_mailbox_provision(), emsmdbp_mailbox_provision_public_freebusy(), emsmdbp_object_create_folder(), and emsmdbp_object_get_fid_by_name().

enum MAPISTATUS openchangedb_get_fid_from_partial_uri ( struct ldb_context *  ,
const char *  ,
uint64_t *   
)
enum MAPISTATUS openchangedb_get_folder_count ( struct ldb_context *  ldb_ctx,
uint64_t  fid,
uint32_t *  RowCount 
)

Retrieve the number of sub folders for a given fid

Parameters:
ldb_ctx pointer to the openchange LDB context
fid the folder identifier to use for the search
RowCount pointer to the returned number of results
Returns:
MAPI_E_SUCCESS on success, otherwise MAPI_E_NOT_FOUND

Referenced by emsmdbp_folder_get_folder_count(), and emsmdbp_object_get_properties_systemspecialfolder().

enum MAPISTATUS openchangedb_get_folder_property ( TALLOC_CTX *  parent_ctx,
struct ldb_context *  ldb_ctx,
uint32_t  proptag,
uint64_t  fid,
void **  data 
)

Retrieve a MAPI property value from a folder record

Parameters:
parent_ctx pointer to the memory context
ldb_ctx pointer to the openchange LDB context
proptag the MAPI property tag to retrieve value for
fid the record folder identifier
data pointer on pointer to the data the function returns
Returns:
MAPI_E_SUCCESS on success, otherwise MAPI_E_NOT_FOUND

References openchangedb_get_property_data(), openchangedb_get_special_property(), and openchangedb_property_get_attribute().

Referenced by emsmdbp_mailbox_provision(), emsmdbp_object_get_properties_mailbox(), emsmdbp_object_get_properties_mapistore_root(), and emsmdbp_object_get_properties_systemspecialfolder().

enum MAPISTATUS openchangedb_get_mailboxDN ( TALLOC_CTX *  parent_ctx,
struct ldb_context *  ldb_ctx,
uint64_t  fid,
char **  mailboxDN 
)

Retrieve the mailboxDN associated to a mailbox system folder.

Parameters:
parent_ctx pointer to the parent memory context
ldb_ctx pointer to the openchange LDB context
fid the folder identifier to search for
mailboxDN pointer on pointer to the mailboxDN string the function returns
Returns:
MAPI_E_SUCCESS on success, otherwise MAPI_E_NOT_FOUND

Referenced by openchangedb_create_folder(), and openchangedb_message_create().

enum MAPISTATUS openchangedb_get_MailboxGuid ( struct ldb_context *  ldb_ctx,
const char *  recipient,
struct GUID *  MailboxGUID 
)

Retrieve the mailbox GUID for given recipient from openchange dispatcher database

Parameters:
ldb_ctx pointer to the OpenChange LDB context
recipient the mailbox username
MailboxGUID pointer to the mailbox GUID the function returns
Returns:
MAPI_E_SUCCESS on success, otherwise MAPI error

Referenced by emsmdbp_mailbox_provision(), and RopLogon_Mailbox().

enum MAPISTATUS openchangedb_get_MailboxReplica ( struct ldb_context *  ldb_ctx,
const char *  recipient,
uint16_t *  ReplID,
struct GUID *  ReplGUID 
)

Retrieve the mailbox replica identifier and GUID for given recipient from openchange dispatcher database

Parameters:
ldb_ctx pointer to the OpenChange LDB context
recipient the mailbox username
ReplID pointer to the replica identifier the function returns
ReplGUID pointer to the replica GUID the function returns
Returns:
MAPI_E_SUCCESS on success, otherwise MAPI error

Referenced by EcDoRpc_RopSyncImportDeletes(), EcDoRpc_RopSyncImportHierarchyChange(), EcDoRpc_RopSyncImportMessageChange(), emsmdbp_guid_to_replid(), emsmdbp_mailbox_provision(), emsmdbp_object_synccontext_init(), emsmdbp_replid_to_guid(), emsmdbp_verify_user(), oxcfxics_ndr_push_transfer_state(), oxcfxics_prepare_synccontext_with_folderChange(), oxcfxics_prepare_synccontext_with_messageChange(), and RopLogon_Mailbox().

enum MAPISTATUS openchangedb_get_mapistoreURI ( TALLOC_CTX *  parent_ctx,
struct ldb_context *  ldb_ctx,
uint64_t  fid,
char **  mapistoreURL,
bool  mailboxstore 
)

Retrieve the mapistore URI associated to a mailbox system folder.

Parameters:
parent_ctx pointer to the memory context
ldb_ctx pointer to the openchange LDB context
fid the Folder identifier to search for
mapistoreURL pointer on pointer to the mapistore URI the function returns
owner pointer on pointer to the owner of the parent mailbox
mailboxstore boolean value which defines whether the record has to be searched within Public folders hierarchy or not
Returns:
MAPI_E_SUCCESS on success, otherwise MAPI_E_NOT_FOUND

Referenced by emsmdbp_folder_delete(), emsmdbp_get_uri_from_fid(), and emsmdbp_object_open_folder().

enum MAPISTATUS openchangedb_get_MAPIStoreURIs ( struct ldb_context *  ldb_ctx,
const char *  username,
TALLOC_CTX *  mem_ctx,
struct StringArrayW_r **  urisP 
)

Retrieve a list of mapistore URI in use for a certain user

Parameters:
ldb_ctx pointer to the openchange LDB context
fid the Folder identifier to search for
mapistoreURL pointer on pointer to the mapistore URI the function returns
mailboxstore boolean value which defines whether the record has to be searched within Public folders hierarchy or not
Returns:
MAPI_E_SUCCESS on success, otherwise MAPI_E_NOT_FOUND

Referenced by emsmdbp_mailbox_provision().

enum MAPISTATUS openchangedb_get_message_count ( struct ldb_context *  ldb_ctx,
uint64_t  fid,
uint32_t *  RowCount,
bool  fai 
)

Retrieve the number of messages within the specified folder

Parameters:
ldb_ctx pointer to the openchange LDB context
fid the folder identifier to use for the search
RowCount pointer to the returned number of results
Returns:
MAPI_E_SUCCESS on success, otherwise MAPI_E_NOT_FOUND

Referenced by emsmdbp_folder_open_table().

enum MAPISTATUS openchangedb_get_mid_by_subject ( struct ldb_context *  ldb_ctx,
uint64_t  parent_fid,
const char *  subject,
bool  mailboxstore,
uint64_t *  mid 
)

Retrieve the message ID associated with a given subject (normalized)

Parameters:
ldb_ctx pointer to the openchange LDB context
parent_fid the folder ID of the parent folder
subject the normalized subject to look up
mid the message ID for the message (0 if not found)
Returns:
MAPI_E_SUCCESS on success, otherwise MAPI_E_NOT_FOUND

Referenced by emsmdbp_mailbox_provision_public_freebusy().

enum MAPISTATUS openchangedb_get_new_changeNumber ( struct ldb_context *  ldb_ctx,
uint64_t *  cn 
)

Allocates a new change number and returns it

Parameters:
ldb_ctx pointer to the openchange LDB context
cn pointer to the cn value the function returns
Returns:
MAPI_E_SUCCESS on success, otherwise MAPI error

Referenced by EcDoRpc_RopCreateFolder(), EcDoRpc_RopSyncImportHierarchyChange(), emsmdbp_mailbox_provision(), emsmdbp_mailbox_provision_public_freebusy(), openchangedb_create_mailbox(), and openchangedb_set_folder_properties().

enum MAPISTATUS openchangedb_get_new_folderID ( struct ldb_context *  ldb_ctx,
uint64_t *  fid 
)

Allocates a new FolderID and returns it

Parameters:
ldb_ctx pointer to the openchange LDB context
fid pointer to the fid value the function returns
Returns:
MAPI_E_SUCCESS on success, otherwise MAPI error

Referenced by EcDoRpc_RopCreateFolder(), EcDoRpc_RopCreateMessage(), EcDoRpc_RopMoveCopyMessages(), EcDoRpc_RopOpenEmbeddedMessage(), emsmdbp_mailbox_provision(), emsmdbp_mailbox_provision_public_freebusy(), openchangedb_create_mailbox(), and oxomsg_mapistore_handle_message_relocation().

enum MAPISTATUS openchangedb_get_parent_fid ( struct ldb_context *  ldb_ctx,
uint64_t  fid,
uint64_t *  parent_fidp,
bool  mailboxstore 
)

Retrieve the parent fid associated to a mailbox system folder.

Parameters:
ldb_ctx pointer to the openchange LDB context
fid the Folder identifier to search for
parent_fidp pointer to the parent_fid the function returns
mailboxstore boolean value which defines whether the record has to be searched within Public folders hierarchy or not
Returns:
MAPI_E_SUCCESS on success, otherwise MAPI_E_NOT_FOUND

Referenced by emsmdbp_get_parent_fid(), and emsmdbp_object_open_folder().

void* openchangedb_get_property_data ( TALLOC_CTX *  mem_ctx,
struct ldb_result *  res,
uint32_t  pos,
uint32_t  proptag,
const char *  PidTagAttr 
)

Retrieve a MAPI property from a OpenChange LDB result set

Parameters:
mem_ctx pointer to the memory context
res pointer to the LDB results
pos the LDB result index
proptag the MAPI property tag to lookup
PidTagAttr the mapped MAPI property name
Returns:
valid data pointer on success, otherwise NULL

References openchangedb_get_property_data_message().

Referenced by openchangedb_get_folder_property(), openchangedb_get_table_property(), and openchangedb_table_get_property().

void* openchangedb_get_property_data_message ( TALLOC_CTX *  mem_ctx,
struct ldb_message *  msg,
uint32_t  proptag,
const char *  PidTagAttr 
)

Retrieve a MAPI property from an OpenChange LDB message

Parameters:
mem_ctx pointer to the memory context
msg pointer to the LDB message
proptag the MAPI property tag to lookup
PidTagAttr the mapped MAPI property name
Returns:
valid data pointer on success, otherwise NULL

References decode_mv_binary(), decode_mv_long(), and ldb_binary_decode().

Referenced by openchangedb_get_property_data(), and openchangedb_message_get_property().

enum MAPISTATUS openchangedb_get_PublicFolderID ( struct ldb_context *  ldb_ctx,
uint32_t  SystemIdx,
uint64_t *  FolderId 
)

Retrieve the public folder FolderID (fid) for a given folder type

Parameters:
ldb_ctx pointer to the OpenChange LDB context
SystemIdx the system folder index
FolderId pointer to the folder identifier the function returns
Returns:
MAPI_E_SUCCESS on success, otherwise MAPI error

Referenced by emsmdbp_mailbox_provision_public_freebusy(), emsmdbp_object_mailbox_init(), and RopLogon_PublicFolder().

enum MAPISTATUS openchangedb_get_PublicFolderReplica ( struct ldb_context *  ldb_ctx,
uint16_t *  ReplID,
struct GUID *  ReplGUID 
)

Retrieve the public folder replica identifier and GUID from the openchange dispatcher database

Parameters:
ldb_ctx pointer to the OpenChange LDB context
ReplID pointer to the replica identifier the function returns
ReplGUID pointer to the replica GUID the function returns
Returns:
MAPI_E_SUCCESS on success, otherwise MAPI error

Referenced by RopLogon_PublicFolder().

enum MAPISTATUS openchangedb_get_ReceiveFolder ( TALLOC_CTX *  parent_ctx,
struct ldb_context *  ldb_ctx,
const char *  recipient,
const char *  MessageClass,
uint64_t *  fid,
const char **  ExplicitMessageClass 
)

Retrieve the Explicit message class and Folder identifier associated to the MessageClass search pattern.

Parameters:
parent_ctx pointer to the memory context
ldb_ctx pointer to the openchange LDB context
recipient pointer to the mailbox's username
MessageClass substring to search for
fid pointer to the folder identifier the function returns
ExplicitMessageClass pointer on pointer to the complete message class the function returns
Returns:
MAPI_E_SUCCESS on success, otherwise MAPI_E_NOT_FOUND

Referenced by RopGetReceiveFolder().

void* openchangedb_get_special_property ( TALLOC_CTX *  mem_ctx,
struct ldb_context *  ldb_ctx,
struct ldb_result *  res,
uint32_t  proptag,
const char *  PidTagAttr 
)

Retrieve a special MAPI property from an openchangedb record

Parameters:
mem_ctx pointer to the memory context
ldb_ctx pointer to the OpenChange LDB context
res pointer to the LDB result
proptag the MAPI property tag to lookup
PidTagAttr the mapped MAPI property name
Returns:
pointer to valid data on success, otherwise NULL

Referenced by openchangedb_get_folder_property(), openchangedb_get_table_property(), and openchangedb_table_get_property().

enum MAPISTATUS openchangedb_get_SystemFolderID ( struct ldb_context *  ldb_ctx,
const char *  recipient,
uint32_t  SystemIdx,
uint64_t *  FolderId 
)

Retrieve the mailbox FolderID for given recipient from openchange dispatcher database

Parameters:
ldb_ctx pointer to the OpenChange LDB context
recipient the mailbox username
SystemIdx the system folder index
FolderId pointer to the folder identifier the function returns
Returns:
MAPI_E_SUCCESS on success, otherwise MAPI error

Referenced by emsmdbp_mailbox_provision(), emsmdbp_object_mailbox_init(), emsmdbp_object_message_fill_freebusy_properties(), and RopLogon_Mailbox().

enum MAPISTATUS openchangedb_get_table_property ( TALLOC_CTX *  parent_ctx,
struct ldb_context *  ldb_ctx,
const char *  ldb_filter,
uint32_t  proptag,
uint32_t  pos,
void **  data 
)

Retrieve a MAPI property from a table (ldb search results)

Parameters:
parent_ctx pointer to the memory context
ldb_ctx pointer to the openchange LDB context
ldb_filter the ldb search string
proptag the MAPI property tag to retrieve value for
pos the record position in search results
data pointer on pointer to the data the function returns
Returns:
MAPI_E_SUCCESS on success, otherwise MAPI_E_NOT_FOUND

References openchangedb_get_property_data(), openchangedb_get_special_property(), and openchangedb_property_get_attribute().

enum MAPISTATUS openchangedb_get_TransportFolder ( struct ldb_context *  ldb_ctx,
const char *  recipient,
uint64_t *  FolderId 
)

Retrieve the Transport Folder FolderID for given recipient from openchange dispatcher database

Parameters:
ldb_ctx pointer to the OpenChange LDB context
recipient the mailbox username
FolderId pointer to the folder identifier the function returns
Returns:
MAPI_E_SUCCESS on success, otherwise MAPI error

Referenced by EcDoRpc_RopGetTransportFolder().

enum MAPISTATUS openchangedb_get_users_from_partial_uri ( TALLOC_CTX *  ,
struct ldb_context *  ,
const char *  ,
uint32_t *  ,
char ***  ,
char ***   
)
enum MAPISTATUS openchangedb_lookup_folder_property ( struct ldb_context *  ldb_ctx,
uint32_t  proptag,
uint64_t  fid 
)

Check if a property exists within an openchange dispatcher database record

Parameters:
ldb_ctx pointer to the openchange LDB context
proptag the MAPI property tag to lookup
fid the record folder identifier
Returns:
MAPI_E_SUCCESS on success, otherwise MAPI_E_NOT_FOUND

References openchangedb_property_get_attribute().

enum MAPISTATUS openchangedb_message_create ( TALLOC_CTX *  mem_ctx,
struct ldb_context *  ldb_ctx,
uint64_t  messageID,
uint64_t  folderID,
bool  fai,
void **  message_object 
)

Initialize and create a message object

Parameters:
mem_ctx pointer to the memory context to use for allocation
ldb_ctx pointer to the ldb context
messageID the identifier of the message to create
folderID the identifier of the folder where the message is created
message_object pointer on pointer to the message object to return
Returns:
MAPI_E_SUCCESS on success, otherwise MAPI error

References openchangedb_message::folderID, openchangedb_message::ldb_ctx, openchangedb_message::messageID, openchangedb_message::msg, openchangedb_get_distinguishedName(), openchangedb_get_mailboxDN(), OPENCHANGEDB_MESSAGE_CREATE, openchangedb_message::res, and openchangedb_message::status.

Referenced by EcDoRpc_RopCreateMessage(), and emsmdbp_mailbox_provision_public_freebusy().

enum MAPISTATUS openchangedb_message_get_property ( TALLOC_CTX *  mem_ctx,
void *  message_object,
uint32_t  proptag,
void **  data 
)

Retrieve a property on a LDB message

Parameters:
mem_ctx pointer to the memory context
message_object the openchangedb message to retrieve data from
proptag the MAPI property tag to lookup
data pointer on pointer to the data to return
Returns:
MAPI_E_SUCCESS on success, otherwise MAPI error

References openchangedb_message::msg, openchangedb_get_property_data_message(), OPENCHANGEDB_MESSAGE_CREATE, OPENCHANGEDB_MESSAGE_OPEN, openchangedb_property_get_attribute(), openchangedb_message::res, and openchangedb_message::status.

Referenced by emsmdbp_object_get_properties_message().

enum MAPISTATUS openchangedb_message_open ( TALLOC_CTX *  mem_ctx,
struct ldb_context *  ldb_ctx,
uint64_t  messageID,
uint64_t  folderID,
void **  message_object,
void **  msgp 
)

Initialize and open a message object

Parameters:
mem_ctx pointer to the memory context to use for allocation
ldb_ctx pointer to the ldb context
messageID the identifier of the message to open
folderID the identifier of the folder where the message is stored
message_object pointer on pointer to the message object to return
msgp pointer on pointer to the mapistore message to return
Returns:
MAPI_E_SUCCESS on success, otherwise MAPISTORE error

References openchangedb_message::folderID, openchangedb_message::ldb_ctx, openchangedb_message::messageID, openchangedb_message::msg, OPENCHANGEDB_MESSAGE_OPEN, openchangedb_message::res, and openchangedb_message::status.

Referenced by emsmdbp_object_message_open().

enum MAPISTATUS openchangedb_message_save ( void *  _msg,
uint8_t  SaveFlags 
)

Save (commit) message in openchangedb database

Parameters:
msg the message object
SaveFlags flags associated to the save operation
Returns:
MAPI_E_SUCCESS on success, otherwise MAPI error

References openchangedb_message::ldb_ctx, openchangedb_message::msg, OPENCHANGEDB_MESSAGE_CREATE, OPENCHANGEDB_MESSAGE_OPEN, openchangedb_message::res, and openchangedb_message::status.

Referenced by EcDoRpc_RopSaveChangesMessage(), and emsmdbp_mailbox_provision_public_freebusy().

enum MAPISTATUS openchangedb_message_set_properties ( TALLOC_CTX *  mem_ctx,
void *  message_object,
struct SRow *  row 
)

Set a list of properties on a message

Parameters:
mem_ctx pointer to the memory context
message_object pointer to the openchangedb message object
row pointer to the SRow structure holding the array of properties to set on the message
Returns:
MAPI_E_SUCCESS on success, otherwise MAPI errors.

References openchangedb_message::msg, OPENCHANGEDB_MESSAGE_CREATE, OPENCHANGEDB_MESSAGE_OPEN, openchangedb_property_get_attribute(), openchangedb_set_folder_property_data(), openchangedb_message::res, and openchangedb_message::status.

Referenced by emsmdbp_mailbox_provision_public_freebusy(), and emsmdbp_object_set_properties().

enum MAPISTATUS openchangedb_reserve_fmid_range ( struct ldb_context *  ldb_ctx,
uint64_t  range_len,
uint64_t *  first_fmidp 
)

Reserve a range of FMID

Parameters:
ldb_ctx pointer to the openchange LDB context
fid pointer to the fid value the function returns
Returns:
MAPI_E_SUCCESS on success, otherwise MAPI error

Referenced by EcDoRpc_RopGetLocalReplicaIds().

enum MAPISTATUS openchangedb_set_folder_properties ( struct ldb_context *  ,
uint64_t  ,
struct SRow *   
)
char* openchangedb_set_folder_property_data ( TALLOC_CTX *  mem_ctx,
struct SPropValue *  value 
)

Build a MAPI property suitable for a OpenChange LDB message

Parameters:
mem_ctx pointer to the memory context
value the MAPI property
Returns:
valid string pointer on success, otherwise NULL

References openchangedb_set_folder_property_data().

Referenced by openchangedb_message_set_properties(), openchangedb_set_folder_properties(), and openchangedb_set_folder_property_data().

enum MAPISTATUS openchangedb_set_ReceiveFolder ( struct ldb_context *  ldb_ctx,
const char *  recipient,
const char *  MessageClass,
uint64_t  fid 
)

Set the receive folder for a specific message class.

Parameters:
parent_ctx pointer to the memory context
ldb_ctx pointer to the openchange LDB context
recipient pointer to the mailbox's username
MessageClass message class (e.g. IPM.whatever) to set
fid folder identifier for the recipient folder for the message class
Returns:
MAPI_E_SUCCESS on success, otherwise MAPI_E_NOT_FOUND

References openchangedb_get_distinguishedName().

Referenced by emsmdbp_mailbox_provision(), and RopSetReceiveFolder().

enum MAPISTATUS openchangedb_table_get_property ( TALLOC_CTX *  ,
void *  ,
struct ldb_context *  ,
enum  MAPITAGS,
uint32_t  ,
bool  live_filtered,
void **   
)
enum MAPISTATUS openchangedb_table_init ( TALLOC_CTX *  mem_ctx,
uint8_t  table_type,
uint64_t  folderID,
void **  table_object 
)

/details Initialize an openchangedb table

Parameters:
mem_ctx pointer to the memory context to use for allocation
table_type the type of table this object represents
folderID the identifier of the folder this table represents
table_object pointer on pointer to the table object to return
Returns:
MAPI_E_SUCCESS on success, otherwise MAPISTORE error

References openchangedb_table::folderID, openchangedb_table::lpSortCriteria, openchangedb_table::res, openchangedb_table::restrictions, and openchangedb_table::table_type.

Referenced by emsmdbp_folder_open_table().

enum MAPISTATUS openchangedb_table_set_restrictions ( void *  ,
struct mapi_SRestriction *   
)
enum MAPISTATUS openchangedb_table_set_sort_order ( void *  table_object,
struct SSortOrderSet *  lpSortCriteria 
)

Set sort order to specified openchangedb table object

Parameters:
table_object pointer to the table object
lpSortCriteria pointer to the sort order to save
Returns:
MAPI_E_SUCCESS on success, otherwise MAPI error

References openchangedb_table::lpSortCriteria, and openchangedb_table::res.

Referenced by EcDoRpc_RopSortTable().


Variable Documentation

const uint8_t GUID_NSPI[] [static]
Initial value:
 {
0xDC, 0xA7, 0x40, 0xC8, 0xC0, 0x42, 0x10, 0x1A, 0xB4, 0xB9,
0x08, 0x00, 0x2B, 0x2F, 0xE1, 0x82
}

Represents the NSPI Protocol in Permanent Entry IDs.

Referenced by emsabp_set_PermanentEntryID(), and entryid_set_AB_EntryID().


Creative Commons License
Creative Commons Attribution icon Creative Commons Share Alike icon
This content is licensed under the Creative Commons
Attribution ShareAlike License v. 3.0:
http://creativecommons.org/licenses/by-sa/3.0/