EMSMDB stack functions. More...
#include <unistd.h>
#include <fcntl.h>
#include "libmapi/libmapi.h"
#include "libmapi/libmapi_private.h"
Functions | |
enum MAPISTATUS | emsmdb_async_connect (struct emsmdb_context *emsmdb_ctx) |
struct mapi_notify_ctx * | emsmdb_bind_notification (struct mapi_context *mapi_ctx, TALLOC_CTX *mem_ctx) |
struct emsmdb_context * | emsmdb_connect (TALLOC_CTX *parent_mem_ctx, struct mapi_session *session, struct dcerpc_pipe *p, struct cli_credentials *cred, int *return_value) |
struct emsmdb_context * | emsmdb_connect_ex (TALLOC_CTX *mem_ctx, struct mapi_session *session, struct dcerpc_pipe *p, struct cli_credentials *cred, int *return_value) |
enum MAPISTATUS | emsmdb_disconnect (struct emsmdb_context *emsmdb_ctx) |
int | emsmdb_disconnect_dtor (void *data) |
_PUBLIC_ struct emsmdb_info * | emsmdb_get_info (struct mapi_session *session) |
enum MAPISTATUS | emsmdb_get_SPropValue (TALLOC_CTX *mem_ctx, DATA_BLOB *content, struct SPropTagArray *tags, struct SPropValue **propvals, uint32_t *cn_propvals, uint8_t flag) |
void | emsmdb_get_SRow (TALLOC_CTX *mem_ctx, struct SRow *aRow, struct SPropTagArray *proptags, uint16_t propcount, DATA_BLOB *content, uint8_t flag, uint8_t align) |
_PUBLIC_ void | emsmdb_get_SRowSet (TALLOC_CTX *mem_ctx, struct SRowSet *rowset, struct SPropTagArray *proptags, DATA_BLOB *content) |
NTSTATUS | emsmdb_register_notification (struct mapi_session *session, struct NOTIFKEY *notifkey) |
_PUBLIC_ NTSTATUS | emsmdb_transaction (struct emsmdb_context *emsmdb_ctx, TALLOC_CTX *mem_ctx, struct mapi_request *req, struct mapi_response **repl) |
_PUBLIC_ NTSTATUS | emsmdb_transaction_ext2 (struct emsmdb_context *emsmdb_ctx, TALLOC_CTX *mem_ctx, struct mapi_request *req, struct mapi_response **repl) |
_PUBLIC_ NTSTATUS | emsmdb_transaction_null (struct emsmdb_context *emsmdb_ctx, struct mapi_response **res) |
_PUBLIC_ NTSTATUS | emsmdb_transaction_wrapper (struct mapi_session *session, TALLOC_CTX *mem_ctx, struct mapi_request *req, struct mapi_response **repl) |
void | free_emsmdb_property (struct SPropValue *lpProp, void *data) |
const void * | pull_emsmdb_property (TALLOC_CTX *mem_ctx, uint32_t *offset, enum MAPITAGS tag, DATA_BLOB *data) |
bool | server_version_at_least (struct emsmdb_context *ctx, uint16_t major_ver, uint16_t minor_ver, uint16_t major_build, uint16_t minor_build) |
EMSMDB stack functions.
enum MAPISTATUS emsmdb_async_connect | ( | struct emsmdb_context * | emsmdb_ctx) |
Get an async notification context handle
emsmdb_ctx | pointer to the EMSMDB context |
References emsmdb_context::async_handle, emsmdb_context::handle, emsmdb_context::mem_ctx, OPENCHANGE_RETVAL_IF, and emsmdb_context::rpc_connection.
Referenced by Logon().
struct mapi_notify_ctx* emsmdb_bind_notification | ( | struct mapi_context * | mapi_ctx, |
TALLOC_CTX * | mem_ctx | ||
) |
Initialize the notify context structure and bind a local UDP port to receive notifications from the server
mapi_ctx | pointer to the MAPI context |
mem_ctx | pointer to the memory context |
References mapi_notify_ctx::addr, DFLT_NOTIF_PORT, mapi_notify_ctx::fd, mapi_context::lp_ctx, notifications::next, mapi_notify_ctx::notifications, notifications::prev, mapi_session::profile, mapi_profile::server, and mapi_context::session.
Referenced by RegisterNotification().
struct emsmdb_context* emsmdb_connect | ( | TALLOC_CTX * | parent_mem_ctx, |
struct mapi_session * | session, | ||
struct dcerpc_pipe * | p, | ||
struct cli_credentials * | cred, | ||
int * | return_value | ||
) |
Establishes a new Session Context with the server on the exchange_emsmdb pipe
parent_mem_ctx | pointer to the memory context |
session | pointer to the MAPI session context |
p | pointer to the DCERPC pipe |
cred | pointer to the user credentials |
return_value | pointer on EcDoConnect MAPI return value |
References emsmdb_context::cache_requests, mapi_profile::codepage, emsmdb_context::cred, emsmdb_context::handle, emsmdb_context::info, mapi_profile::language, mapi_profile::mailbox, mapi_errstr(), emsmdb_context::max_data, emsmdb_context::mem_ctx, mapi_profile::method, emsmdb_info::pcmsPollsMax, emsmdb_info::pcmsRetryDelay, emsmdb_info::pcRetry, emsmdb_info::picxr, mapi_session::profile, emsmdb_info::rgwServerVersion, emsmdb_context::rpc_connection, emsmdb_context::setup, emsmdb_info::szDisplayName, and emsmdb_info::szDNPrefix.
Referenced by Logon().
struct emsmdb_context* emsmdb_connect_ex | ( | TALLOC_CTX * | mem_ctx, |
struct mapi_session * | session, | ||
struct dcerpc_pipe * | p, | ||
struct cli_credentials * | cred, | ||
int * | return_value | ||
) |
Establishes a new Session Context with the server on the exchange_emsmdb pipe using 0xA EcDoConnectEx opnum
mem_ctx | pointer to the memory context |
session | pointer to the MAPI session context |
p | pointer to the DCERPC pipe |
cred | pointer to the user credentials |
return_value | pointer on EcDoConnectEx MAPI return value |
References mapi_profile::codepage, emsmdb_context::cred, emsmdb_context::handle, emsmdb_context::info, mapi_profile::language, mapi_profile::mailbox, mapi_errstr(), emsmdb_context::max_data, emsmdb_context::mem_ctx, mapi_profile::method, emsmdb_info::pcmsPollsMax, emsmdb_info::pcmsRetryDelay, emsmdb_info::pcRetry, emsmdb_info::picxr, mapi_session::profile, emsmdb_info::rgwServerVersion, emsmdb_context::rpc_connection, emsmdb_context::setup, emsmdb_info::szDisplayName, and emsmdb_info::szDNPrefix.
Referenced by Logon().
enum MAPISTATUS emsmdb_disconnect | ( | struct emsmdb_context * | emsmdb_ctx) |
Destroy the EMSMDB context handle
emsmdb_ctx | pointer to the EMSMDB context |
References emsmdb_context::handle, OPENCHANGE_RETVAL_IF, and emsmdb_context::rpc_connection.
Referenced by emsmdb_disconnect_dtor().
int emsmdb_disconnect_dtor | ( | void * | data) |
Destructor for the EMSMDB context. Call the EcDoDisconnect function.
data | generic pointer to data with mapi_provider information |
References emsmdb_context::cache_requests, mapi_provider::ctx, emsmdb_disconnect(), emsmdb_context::info, emsmdb_info::szDisplayName, and emsmdb_info::szDNPrefix.
Referenced by MapiLogonProvider().
_PUBLIC_ struct emsmdb_info* emsmdb_get_info | ( | struct mapi_session * | session) |
Retrieves the EMSMDB context server information structure
session | pointer to the MAPI session context |
References mapi_provider::ctx, and mapi_session::emsmdb.
enum MAPISTATUS emsmdb_get_SPropValue | ( | TALLOC_CTX * | mem_ctx, |
DATA_BLOB * | content, | ||
struct SPropTagArray * | tags, | ||
struct SPropValue ** | propvals, | ||
uint32_t * | cn_propvals, | ||
uint8_t | flag | ||
) |
Get a SPropValue array from a DATA blob
mem_ctx | pointer to the memory context |
content | pointer to the DATA blob content |
tags | pointer to a list of property tags to lookup |
propvals | pointer on pointer to the returned SPropValues |
cn_propvals | pointer to the number of propvals |
flag | describes the type data |
References free_emsmdb_property(), PT_ERROR, pull_emsmdb_property(), and set_SPropValue().
Referenced by GetProps().
void emsmdb_get_SRow | ( | TALLOC_CTX * | mem_ctx, |
struct SRow * | aRow, | ||
struct SPropTagArray * | proptags, | ||
uint16_t | propcount, | ||
DATA_BLOB * | content, | ||
uint8_t | flag, | ||
uint8_t | align | ||
) |
Get a SRow from a DATA blob
mem_ctx | pointer on the memory context |
aRow | pointer on the returned SRow |
proptags | pointer on a list of property tags to lookup |
propcount | number of SPropValue entries in aRow |
content | pointer on the DATA blob content |
flag | the type data |
align | alignment pad |
References free_emsmdb_property(), PT_ERROR, pull_emsmdb_property(), and set_SPropValue().
Referenced by OpenEmbeddedMessage(), OpenMessage(), and ReloadCachedInformation().
_PUBLIC_ void emsmdb_get_SRowSet | ( | TALLOC_CTX * | mem_ctx, |
struct SRowSet * | rowset, | ||
struct SPropTagArray * | proptags, | ||
DATA_BLOB * | content | ||
) |
Get a SRowSet from a DATA blob
mem_ctx | pointer on the memory context |
rowset | pointer on the returned SRowSe |
proptags | pointer on a list of property tags to lookup |
content | pointer on the DATA blob content |
References free_emsmdb_property(), PT_ERROR, pull_emsmdb_property(), and set_SPropValue().
Referenced by ExpandRow(), FindRow(), and QueryRows().
NTSTATUS emsmdb_register_notification | ( | struct mapi_session * | session, |
struct NOTIFKEY * | notifkey | ||
) |
Register for notifications on the server
session | Pointer to the current MAPI session |
notifkey | The opaque client-generated context data |
References mapi_notify_ctx::addr, mapi_provider::ctx, mapi_session::emsmdb, emsmdb_context::handle, emsmdb_context::mem_ctx, mapi_session::notify_ctx, and emsmdb_context::rpc_connection.
Referenced by RegisterNotification().
_PUBLIC_ NTSTATUS emsmdb_transaction | ( | struct emsmdb_context * | emsmdb_ctx, |
TALLOC_CTX * | mem_ctx, | ||
struct mapi_request * | req, | ||
struct mapi_response ** | repl | ||
) |
Make a EMSMDB transaction.
emsmdb_ctx | pointer to the EMSMDB connection context |
mem_ctx | pointer to the memory context |
req | pointer to the MAPI request to send |
repl | pointer on pointer to the MAPI reply returned by the server |
References emsmdb_context::cache_count, emsmdb_context::cache_requests, emsmdb_context::cache_size, emsmdb_context::handle, emsmdb_context::max_data, emsmdb_context::mem_ctx, emsmdb_context::rpc_connection, and emsmdb_context::setup.
Referenced by emsmdb_transaction_wrapper().
_PUBLIC_ NTSTATUS emsmdb_transaction_ext2 | ( | struct emsmdb_context * | emsmdb_ctx, |
TALLOC_CTX * | mem_ctx, | ||
struct mapi_request * | req, | ||
struct mapi_response ** | repl | ||
) |
Make a EMSMDB EXT2 transaction.
emsmdb_ctx | pointer to the EMSMDB connection context |
mem_ctx | pointer to the memory context |
req | pointer to the MAPI request to send |
repl | pointer on pointer to the MAPI reply returned by the server |
References emsmdb_context::handle, and emsmdb_context::rpc_connection.
Referenced by emsmdb_transaction_wrapper().
_PUBLIC_ NTSTATUS emsmdb_transaction_null | ( | struct emsmdb_context * | emsmdb_ctx, |
struct mapi_response ** | res | ||
) |
Send an empty MAPI packet - useful to keep connection up or force notifications.
emsmdb_ctx | pointer to the EMSMDB connection context |
res | pointer on pointer to a MAPI response structure |
References emsmdb_context::handle, MAPI_STATUS_IS_OK, emsmdb_context::max_data, emsmdb_context::mem_ctx, and emsmdb_context::rpc_connection.
Referenced by DispatchNotifications(), and MonitorNotification().
_PUBLIC_ NTSTATUS emsmdb_transaction_wrapper | ( | struct mapi_session * | session, |
TALLOC_CTX * | mem_ctx, | ||
struct mapi_request * | req, | ||
struct mapi_response ** | repl | ||
) |
References mapi_provider::ctx, mapi_session::emsmdb, emsmdb_transaction(), emsmdb_transaction_ext2(), mapi_profile::exchange_version, and mapi_session::profile.
Referenced by Abort(), AbortSubmit(), AddressTypes(), CloneStream(), CollapseRow(), CommitStream(), CopyFolder(), CopyProps(), CopyTo(), CopyToStream(), CreateAttach(), CreateBookmark(), CreateFolder(), CreateMessage(), DeleteAttach(), DeleteFolder(), DeleteMessage(), DeletePropertiesNoReplicate(), DeleteProps(), EmptyFolder(), ExpandRow(), FindRow(), FreeBookmark(), FXCopyFolder(), FXCopyMessages(), FXCopyProperties(), FXCopyTo(), FXDestConfigure(), FXGetBuffer(), FXPutBuffer(), GetAttachmentTable(), GetCollapseState(), GetContentsTable(), GetHierarchyTable(), GetIdFromLongTermId(), GetIDsFromNames(), GetLocalReplicaIds(), GetLongTermIdFromId(), GetMessageStatus(), GetNamesFromIDs(), GetOwningServers(), GetPermissionsTable(), GetPropList(), GetProps(), GetPropsAll(), GetReceiveFolder(), GetReceiveFolderTable(), GetRulesTable(), GetSearchCriteria(), GetStatus(), GetStoreState(), GetStreamSize(), GetTransportFolder(), GetValidAttach(), HardDeleteMessage(), HardDeleteMessagesAndSubfolders(), ICSSyncConfigure(), ICSSyncGetTransferState(), ICSSyncOpenCollector(), ICSSyncUploadStateBegin(), ICSSyncUploadStateContinue(), ICSSyncUploadStateEnd(), LockRegionStream(), ModifyPermissions(), ModifyRecipients(), MoveCopyMessages(), MoveFolder(), OpenAttach(), OpenEmbeddedMessage(), OpenFolder(), OpenMessage(), OpenPublicFolder(), OpenPublicFolderByName(), OpenStream(), OpenUserMailbox(), OptionsData(), PublicFolderIsGhosted(), QueryColumns(), QueryNamedProperties(), QueryPosition(), QueryRows(), ReadRecipients(), ReadStream(), Release(), ReloadCachedInformation(), RemoveAllRecipients(), Reset(), Restrict(), SaveChangesAttachment(), SaveChangesMessage(), SeekRow(), SeekRowApprox(), SeekRowBookmark(), SeekStream(), SetCollapseState(), SetColumns(), SetLocalReplicaMidsetDeleted(), SetMessageReadFlag(), SetMessageStatus(), SetPropertiesNoReplicate(), SetProps(), SetReadFlags(), SetReceiveFolder(), SetSearchCriteria(), SetSpooler(), SetStreamSize(), SetSyncNotificationGuid(), SortTable(), SpoolerLockMessage(), SubmitMessage(), Subscribe(), SyncOpenAdvisor(), TellVersion(), TransportNewMail(), TransportSend(), UnlockRegionStream(), WriteAndCommitStream(), and WriteStream().
void free_emsmdb_property | ( | struct SPropValue * | lpProp, |
void * | data | ||
) |
Free property values retrieved with pull_emsmdb_property
lpProp | pointer to SPropValue structure |
data | generic pointer to associated lpProp data |
References PT_BOOLEAN, PT_ERROR, PT_I2, PT_I8, and PT_LONG.
Referenced by emsmdb_get_SPropValue(), emsmdb_get_SRow(), and emsmdb_get_SRowSet().
const void* pull_emsmdb_property | ( | TALLOC_CTX * | mem_ctx, |
uint32_t * | offset, | ||
enum MAPITAGS | tag, | ||
DATA_BLOB * | data | ||
) |
Retrieves a property value from a DATA blob
mem_ctx | pointer to the memory context |
offset | pointer on pointer to the current offset |
tag | the property tag which value is to be retrieved |
data | pointer to the data |
References PT_BINARY, PT_BOOLEAN, PT_CLSID, PT_DOUBLE, PT_ERROR, PT_I2, PT_I8, PT_LONG, PT_MV_BINARY, PT_MV_LONG, PT_MV_STRING8, PT_MV_UNICODE, PT_STRING8, PT_SYSTIME, and PT_UNICODE.
Referenced by emsmdb_get_SPropValue(), emsmdb_get_SRow(), and emsmdb_get_SRowSet().
bool server_version_at_least | ( | struct emsmdb_context * | ctx, |
uint16_t | major_ver, | ||
uint16_t | minor_ver, | ||
uint16_t | major_build, | ||
uint16_t | minor_build | ||
) |
References emsmdb_context::info, and emsmdb_info::rgwServerVersion.
Referenced by Logon().
![]() ![]() ![]() |
This content is licensed under the Creative Commons Attribution ShareAlike License v. 3.0: http://creativecommons.org/licenses/by-sa/3.0/ |