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 mpm_session::context_id, EMSMDB_PCMSPOLLMAX, EMSMDB_PCRETRY, EMSMDB_PCRETRYDELAY, emsmdbp_destructor(), emsmdbp_init(), emsmdbp_verify_user(), emsmdbp_verify_userdn(), EXCHANGE_HANDLE_EMSMDB, mpm_session_cmp(), mpm_session_increment_ref_count(), mpm_session_init(), mpm_session_set_destructor(), mpm_session_set_private_data(), exchange_emsmdb_session::next, openchange_ldb_ctx, exchange_emsmdb_session::pullTimeStamp, exchange_emsmdb_session::session, emsmdbp_context::szDisplayName, emsmdbp_context::szUserDN, and emsmdbp_context::userLanguage.
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 clientVersionIsTooLow(), mpm_session::context_id, EMSMDB_PCMSPOLLMAX, EMSMDB_PCRETRY, EMSMDB_PCRETRYDELAY, emsmdbp_destructor(), emsmdbp_init(), emsmdbp_verify_user(), emsmdbp_verify_userdn(), EXCHANGE_HANDLE_EMSMDB, mpm_session_cmp(), mpm_session_increment_ref_count(), mpm_session_init(), mpm_session_set_destructor(), mpm_session_set_private_data(), exchange_emsmdb_session::next, openchange_ldb_ctx, exchange_emsmdb_session::pullTimeStamp, exchange_emsmdb_session::session, emsmdbp_context::szDisplayName, emsmdbp_context::szUserDN, and emsmdbp_context::userLanguage.
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 mpm_session_cmp(), mpm_session_release(), exchange_emsmdb_session::next, and exchange_emsmdb_session::session.
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 EcDoRpc_process_transaction(), mpm_session_cmp(), exchange_emsmdb_session::next, mpm_session::private_data, and exchange_emsmdb_session::session.
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 EcDoRpc_process_transaction(), mpm_session_cmp(), exchange_emsmdb_session::next, mpm_session::private_data, and exchange_emsmdb_session::session.
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_EcDoAsyncConnectEx(), dcesrv_EcDoConnect(), dcesrv_EcDoConnectEx(), dcesrv_EcDoDisconnect(), dcesrv_EcDoRpc(), dcesrv_EcDoRpcExt(), dcesrv_EcDoRpcExt2(), dcesrv_EcDummyRpc(), dcesrv_EcGetMoreRpc(), dcesrv_EcRGetDCName(), dcesrv_EcRNetGetDCName(), dcesrv_EcRRegisterPushNotification(), dcesrv_EcRUnregisterPushNotification(), dcesrv_EcUnknown0xC(), and dcesrv_EcUnknown0xD().
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 emsmdbp_openchange_ldb_init(), openchange_ldb_ctx, and exchange_emsmdb_session::session.
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 mpm_session_cmp_sub(), mpm_session_release(), exchange_emsmdb_session::next, and exchange_emsmdb_session::session.
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_RopCreateFolder(), EcDoRpc_RopCreateMessage(), EcDoRpc_RopDeleteFolder(), EcDoRpc_RopDeleteMessages(), EcDoRpc_RopDeleteProperties(), EcDoRpc_RopEmptyFolder(), EcDoRpc_RopFindRow(), EcDoRpc_RopGetAddressTypes(), EcDoRpc_RopGetAttachmentTable(), EcDoRpc_RopGetContentsTable(), EcDoRpc_RopGetHierarchyTable(), EcDoRpc_RopGetPermissionsTable(), EcDoRpc_RopGetPerUserGuid(), EcDoRpc_RopGetPerUserLongTermIds(), EcDoRpc_RopGetPropertiesSpecific(), EcDoRpc_RopGetPropertyIdsFromNames(), EcDoRpc_RopGetReceiveFolder(), EcDoRpc_RopGetRulesTable(), EcDoRpc_RopGetSearchCriteria(), EcDoRpc_RopGetTransportFolder(), EcDoRpc_RopLogon(), EcDoRpc_RopModifyRecipients(), EcDoRpc_RopModifyRules(), EcDoRpc_RopOpenFolder(), EcDoRpc_RopOpenMessage(), EcDoRpc_RopOpenStream(), EcDoRpc_RopOptionsData(), EcDoRpc_RopQueryPosition(), EcDoRpc_RopQueryRows(), EcDoRpc_RopReadPerUserInformation(), EcDoRpc_RopReadStream(), EcDoRpc_RopRegisterNotification(), EcDoRpc_RopRelease(), EcDoRpc_RopReloadCachedInformation(), EcDoRpc_RopRestrict(), EcDoRpc_RopSaveChangesMessage(), EcDoRpc_RopSeekRow(), EcDoRpc_RopSetColumns(), EcDoRpc_RopSetMessageReadFlag(), EcDoRpc_RopSetProperties(), EcDoRpc_RopSetReceiveFolder(), EcDoRpc_RopSetSearchCriteria(), EcDoRpc_RopSetSpooler(), EcDoRpc_RopSortTable(), EcDoRpc_RopSubmitMessage(), and EcDoRpc_RopWriteStream().
Referenced by dcesrv_EcDoRpc(), and dcesrv_EcDoRpcExt2().
NTSTATUS samba_init_module | ( | void | ) |
Entry point for the default OpenChange EMSMDB server
References dcesrv_exchange_emsmdb_dispatch(), dcesrv_exchange_emsmdb_init(), dcesrv_exchange_emsmdb_unbind(), mapiproxy_module::description, mapiproxy_module::dispatch, mapiproxy_module::endpoint, mapiproxy_module::init, MAPIPROXY_DEFAULT, mapiproxy_server_register(), mapiproxy_module::name, mapiproxy_module::ndr_pull, mapiproxy_module::pull, mapiproxy_module::push, mapiproxy_module::status, and mapiproxy_module::unbind.
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/ |