OpenChange EMSMDB Server implementation. More...
Functions | |
static bool | clientVersionIsTooLow (const uint16_t rgwClientVersion[3]) |
static enum MAPISTATUS | dcesrv_EcDoAsyncConnectEx (struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct EcDoAsyncConnectEx *r) |
static enum MAPISTATUS | dcesrv_EcDoConnect (struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct EcDoConnect *r) |
static enum MAPISTATUS | dcesrv_EcDoConnectEx (struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct EcDoConnectEx *r) |
static enum MAPISTATUS | dcesrv_EcDoDisconnect (struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct EcDoDisconnect *r) |
static enum MAPISTATUS | dcesrv_EcDoRpc (struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct EcDoRpc *r) |
static void | dcesrv_EcDoRpcExt (struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct EcDoRpcExt *r) |
static enum MAPISTATUS | dcesrv_EcDoRpcExt2 (struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct EcDoRpcExt2 *r) |
static void | dcesrv_EcDummyRpc (struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct EcDummyRpc *r) |
static void | dcesrv_EcGetMoreRpc (struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct EcGetMoreRpc *r) |
static void | dcesrv_EcRGetDCName (struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct EcRGetDCName *r) |
static void | dcesrv_EcRNetGetDCName (struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct EcRNetGetDCName *r) |
static enum MAPISTATUS | dcesrv_EcRRegisterPushNotification (struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct EcRRegisterPushNotification *r) |
static enum MAPISTATUS | dcesrv_EcRUnregisterPushNotification (struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct EcRUnregisterPushNotification *r) |
static void | dcesrv_EcUnknown0xC (struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct EcUnknown0xC *r) |
static void | dcesrv_EcUnknown0xD (struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct EcUnknown0xD *r) |
static NTSTATUS | dcesrv_exchange_emsmdb_dispatch (struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, void *r, struct mapiproxy *mapiproxy) |
static NTSTATUS | dcesrv_exchange_emsmdb_init (struct dcesrv_context *dce_ctx) |
static NTSTATUS | dcesrv_exchange_emsmdb_unbind (struct server_id server_id, uint32_t context_id) |
static struct mapi_response * | EcDoRpc_process_transaction (TALLOC_CTX *mem_ctx, struct emsmdbp_context *emsmdbp_ctx, struct mapi_request *mapi_request) |
NTSTATUS | samba_init_module (void) |
Variables | |
struct exchange_emsmdb_session * | emsmdb_session = NULL |
void * | openchange_ldb_ctx = NULL |
OpenChange EMSMDB Server implementation.
static bool clientVersionIsTooLow | ( | const uint16_t | rgwClientVersion[3] | ) | [static] |
Referenced by dcesrv_EcDoConnectEx().
static enum MAPISTATUS dcesrv_EcDoAsyncConnectEx | ( | struct dcesrv_call_state * | dce_call, |
TALLOC_CTX * | mem_ctx, | ||
struct EcDoAsyncConnectEx * | r | ||
) | [static] |
exchange_emsmdb EcGetMoreRpc (0xe) function
dce_call | pointer to the session context |
mem_ctx | pointer to the memory context |
r | pointer to the EcDoAsyncConnectExt request data |
static enum MAPISTATUS dcesrv_EcDoConnect | ( | struct dcesrv_call_state * | dce_call, |
TALLOC_CTX * | mem_ctx, | ||
struct EcDoConnect * | r | ||
) | [static] |
exchange_emsmdb EcDoConnect (0x0) function
dce_call | pointer to the session context |
mem_ctx | pointer to the memory context |
r | pointer to the EcDoConnect request data |
References exchange_emsmdb_session::session, EXCHANGE_HANDLE_EMSMDB, emsmdbp_init(), openchange_ldb_ctx, emsmdbp_verify_user(), emsmdbp_verify_userdn(), emsmdbp_context::szUserDN, emsmdbp_context::userLanguage, emsmdbp_context::szDisplayName, EMSMDB_PCMSPOLLMAX, EMSMDB_PCRETRY, EMSMDB_PCRETRYDELAY, exchange_emsmdb_session::next, mpm_session_cmp(), mpm_session::context_id, mpm_session_increment_ref_count(), exchange_emsmdb_session::pullTimeStamp, mpm_session_init(), mpm_session_set_private_data(), mpm_session_set_destructor(), and emsmdbp_destructor().
static enum MAPISTATUS dcesrv_EcDoConnectEx | ( | struct dcesrv_call_state * | dce_call, |
TALLOC_CTX * | mem_ctx, | ||
struct EcDoConnectEx * | r | ||
) | [static] |
exchange_emsmdb EcDoConnectEx (0xA) function
dce_call | pointer to the session context |
mem_ctx | pointer to the memory context |
r | pointer to the EcDoConnectEx request data |
References exchange_emsmdb_session::session, EXCHANGE_HANDLE_EMSMDB, emsmdbp_init(), openchange_ldb_ctx, emsmdbp_verify_user(), emsmdbp_verify_userdn(), emsmdbp_context::szUserDN, emsmdbp_context::userLanguage, emsmdbp_context::szDisplayName, EMSMDB_PCMSPOLLMAX, EMSMDB_PCRETRY, EMSMDB_PCRETRYDELAY, clientVersionIsTooLow(), exchange_emsmdb_session::next, mpm_session_cmp(), mpm_session::context_id, mpm_session_increment_ref_count(), exchange_emsmdb_session::pullTimeStamp, mpm_session_init(), mpm_session_set_private_data(), mpm_session_set_destructor(), and emsmdbp_destructor().
static enum MAPISTATUS dcesrv_EcDoDisconnect | ( | struct dcesrv_call_state * | dce_call, |
TALLOC_CTX * | mem_ctx, | ||
struct EcDoDisconnect * | r | ||
) | [static] |
exchange_emsmdb EcDoDisconnect (0x1) function
dce_call | pointer to the session context |
mem_ctx | pointer to the memory context |
r | pointer to the EcDoDisconnect request data |
References exchange_emsmdb_session::session, exchange_emsmdb_session::next, mpm_session_cmp(), and mpm_session_release().
static enum MAPISTATUS dcesrv_EcDoRpc | ( | struct dcesrv_call_state * | dce_call, |
TALLOC_CTX * | mem_ctx, | ||
struct EcDoRpc * | r | ||
) | [static] |
exchange_emsmdb EcDoRpc (0x2) function
dce_call | pointer to the session context |
mem_ctx | pointer to the memory context |
r | pointer to the EcDoRpc request data |
References exchange_emsmdb_session::session, exchange_emsmdb_session::next, mpm_session_cmp(), mpm_session::private_data, and EcDoRpc_process_transaction().
static void dcesrv_EcDoRpcExt | ( | struct dcesrv_call_state * | dce_call, |
TALLOC_CTX * | mem_ctx, | ||
struct EcDoRpcExt * | r | ||
) | [static] |
exchange_emsmdb EcDoRpcExt (0x9) function
dce_call | pointer to the session context |
mem_ctx | pointer to the memory context |
r | pointer to the EcDoRpcExt request data |
static enum MAPISTATUS dcesrv_EcDoRpcExt2 | ( | struct dcesrv_call_state * | dce_call, |
TALLOC_CTX * | mem_ctx, | ||
struct EcDoRpcExt2 * | r | ||
) | [static] |
exchange_emsmdb EcDoRpcExt2 (0xB) function
dce_call | pointer to the session context |
mem_ctx | pointer to the memory context |
r | pointer to the EcDoRpcExt2 request data |
References exchange_emsmdb_session::session, exchange_emsmdb_session::next, mpm_session_cmp(), mpm_session::private_data, and EcDoRpc_process_transaction().
static void dcesrv_EcDummyRpc | ( | struct dcesrv_call_state * | dce_call, |
TALLOC_CTX * | mem_ctx, | ||
struct EcDummyRpc * | r | ||
) | [static] |
exchange_emsmdb EcDummyRpc (0x6) function
dce_call | pointer to the session context |
mem_ctx | pointer to the memory context |
r | pointer to the EcDummyRpc request data |
static void dcesrv_EcGetMoreRpc | ( | struct dcesrv_call_state * | dce_call, |
TALLOC_CTX * | mem_ctx, | ||
struct EcGetMoreRpc * | r | ||
) | [static] |
exchange_emsmdb EcGetMoreRpc (0x3) function
dce_call | pointer to the session context |
mem_ctx | pointer to the memory context |
r | pointer to the EcGetMoreRpc request data |
static void dcesrv_EcRGetDCName | ( | struct dcesrv_call_state * | dce_call, |
TALLOC_CTX * | mem_ctx, | ||
struct EcRGetDCName * | r | ||
) | [static] |
exchange_emsmdb EcRGetDCName (0x7) function
dce_call | pointer to the session context |
mem_ctx | pointer to the memory context |
r | pointer to the EcRGetDCName request data |
static void dcesrv_EcRNetGetDCName | ( | struct dcesrv_call_state * | dce_call, |
TALLOC_CTX * | mem_ctx, | ||
struct EcRNetGetDCName * | r | ||
) | [static] |
exchange_emsmdb EcRNetGetDCName (0x8) function
dce_call | pointer to the session context |
mem_ctx | pointer to the memory context |
r | pointer to the EcRNetGetDCName request data |
static enum MAPISTATUS dcesrv_EcRRegisterPushNotification | ( | struct dcesrv_call_state * | dce_call, |
TALLOC_CTX * | mem_ctx, | ||
struct EcRRegisterPushNotification * | r | ||
) | [static] |
exchange_emsmdb EcRRegisterPushNotification (0x4) function
dce_call | pointer to the session context |
mem_ctx | pointer to the memory context |
r | pointer to the EcRRegisterPushNotification request data |
static enum MAPISTATUS dcesrv_EcRUnregisterPushNotification | ( | struct dcesrv_call_state * | dce_call, |
TALLOC_CTX * | mem_ctx, | ||
struct EcRUnregisterPushNotification * | r | ||
) | [static] |
exchange_emsmdb EcRUnregisterPushNotification (0x5) function
dce_call | pointer to the session context |
mem_ctx | pointer to the memory context |
r | pointer to the EcRUnregisterPushNotification request data |
static void dcesrv_EcUnknown0xC | ( | struct dcesrv_call_state * | dce_call, |
TALLOC_CTX * | mem_ctx, | ||
struct EcUnknown0xC * | r | ||
) | [static] |
exchange_emsmdb EcUnknown0xC (0xc) function
dce_call | pointer to the session context |
mem_ctx | pointer to the memory context |
r | pointer to the EcUnknown0xC request data |
static void dcesrv_EcUnknown0xD | ( | struct dcesrv_call_state * | dce_call, |
TALLOC_CTX * | mem_ctx, | ||
struct EcUnknown0xD * | r | ||
) | [static] |
exchange_emsmdb EcUnknown0xD (0xc) function
dce_call | pointer to the session context |
mem_ctx | pointer to the memory context |
r | pointer to the EcUnknown0xD request data |
static NTSTATUS dcesrv_exchange_emsmdb_dispatch | ( | struct dcesrv_call_state * | dce_call, |
TALLOC_CTX * | mem_ctx, | ||
void * | r, | ||
struct mapiproxy * | mapiproxy | ||
) | [static] |
Dispatch incoming EMSMDB call to the correct OpenChange server function
dce_call | pointer to the session context |
mem_ctx | pointer to the memory context |
r | generic pointer on EMSMDB data |
mapiproxy | pointer to the mapiproxy structure controlling mapiproxy behavior |
References dcesrv_EcDoConnect(), dcesrv_EcDoDisconnect(), dcesrv_EcDoRpc(), dcesrv_EcGetMoreRpc(), dcesrv_EcRRegisterPushNotification(), dcesrv_EcRUnregisterPushNotification(), dcesrv_EcDummyRpc(), dcesrv_EcRGetDCName(), dcesrv_EcRNetGetDCName(), dcesrv_EcDoRpcExt(), dcesrv_EcDoConnectEx(), dcesrv_EcDoRpcExt2(), dcesrv_EcUnknown0xC(), dcesrv_EcUnknown0xD(), and dcesrv_EcDoAsyncConnectEx().
Referenced by samba_init_module().
static NTSTATUS dcesrv_exchange_emsmdb_init | ( | struct dcesrv_context * | dce_ctx | ) | [static] |
Initialize the EMSMDB OpenChange server
dce_ctx | pointer to the server context |
References exchange_emsmdb_session::session, openchange_ldb_ctx, and emsmdbp_openchange_ldb_init().
Referenced by samba_init_module().
static NTSTATUS dcesrv_exchange_emsmdb_unbind | ( | struct server_id | server_id, |
uint32_t | context_id | ||
) | [static] |
Terminate the EMSMDB connection and release the associated session and context if still available. This case occurs when the client doesn't call EcDoDisconnect but quit unexpectedly.
server_id | reference to the server identifier structure |
context_id | the connection context identifier |
References exchange_emsmdb_session::session, exchange_emsmdb_session::next, mpm_session_cmp_sub(), and mpm_session_release().
Referenced by samba_init_module().
static struct mapi_response* EcDoRpc_process_transaction | ( | TALLOC_CTX * | mem_ctx, |
struct emsmdbp_context * | emsmdbp_ctx, | ||
struct mapi_request * | mapi_request | ||
) | [static, read] |
References EcDoRpc_RopRelease(), EcDoRpc_RopOpenFolder(), EcDoRpc_RopOpenMessage(), EcDoRpc_RopGetHierarchyTable(), EcDoRpc_RopGetContentsTable(), EcDoRpc_RopCreateMessage(), EcDoRpc_RopGetPropertiesSpecific(), EcDoRpc_RopSetProperties(), EcDoRpc_RopDeleteProperties(), EcDoRpc_RopSaveChangesMessage(), EcDoRpc_RopModifyRecipients(), EcDoRpc_RopReloadCachedInformation(), EcDoRpc_RopSetMessageReadFlag(), EcDoRpc_RopSetColumns(), EcDoRpc_RopSortTable(), EcDoRpc_RopRestrict(), EcDoRpc_RopQueryRows(), EcDoRpc_RopQueryPosition(), EcDoRpc_RopSeekRow(), EcDoRpc_RopCreateFolder(), EcDoRpc_RopDeleteFolder(), EcDoRpc_RopDeleteMessages(), EcDoRpc_RopGetAttachmentTable(), EcDoRpc_RopSetReceiveFolder(), EcDoRpc_RopGetReceiveFolder(), EcDoRpc_RopRegisterNotification(), EcDoRpc_RopOpenStream(), EcDoRpc_RopReadStream(), EcDoRpc_RopWriteStream(), EcDoRpc_RopSetSearchCriteria(), EcDoRpc_RopGetSearchCriteria(), EcDoRpc_RopSubmitMessage(), EcDoRpc_RopGetPermissionsTable(), EcDoRpc_RopGetRulesTable(), EcDoRpc_RopModifyRules(), EcDoRpc_RopSetSpooler(), EcDoRpc_RopGetAddressTypes(), EcDoRpc_RopFindRow(), EcDoRpc_RopGetPropertyIdsFromNames(), EcDoRpc_RopEmptyFolder(), EcDoRpc_RopGetPerUserLongTermIds(), EcDoRpc_RopGetPerUserGuid(), EcDoRpc_RopReadPerUserInformation(), EcDoRpc_RopGetTransportFolder(), EcDoRpc_RopOptionsData(), and EcDoRpc_RopLogon().
Referenced by dcesrv_EcDoRpc(), and dcesrv_EcDoRpcExt2().
NTSTATUS samba_init_module | ( | void | ) |
Entry point for the default OpenChange EMSMDB server
References mapiproxy_module::name, mapiproxy_module::status, MAPIPROXY_DEFAULT, mapiproxy_module::description, mapiproxy_module::endpoint, mapiproxy_module::init, dcesrv_exchange_emsmdb_init(), mapiproxy_module::unbind, dcesrv_exchange_emsmdb_unbind(), mapiproxy_module::dispatch, dcesrv_exchange_emsmdb_dispatch(), mapiproxy_module::push, mapiproxy_module::pull, mapiproxy_module::ndr_pull, and mapiproxy_server_register().
struct exchange_emsmdb_session* emsmdb_session = NULL |
void* openchange_ldb_ctx = NULL |
Referenced by dcesrv_EcDoConnect(), dcesrv_EcDoConnectEx(), and dcesrv_exchange_emsmdb_init().
![]() ![]() ![]() |
This content is licensed under the Creative Commons Attribution ShareAlike License v. 3.0: http://creativecommons.org/licenses/by-sa/3.0/ |