mapiproxy/servers/default/nspi/dcesrv_exchange_nsp.c File Reference

OpenChange NSPI Server implementation. More...

Functions

static NTSTATUS dcesrv_exchange_nsp_dispatch (struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, void *r, struct mapiproxy *mapiproxy)
static NTSTATUS dcesrv_exchange_nsp_init (struct dcesrv_context *dce_ctx)
static NTSTATUS dcesrv_exchange_nsp_unbind (struct server_id server_id, uint32_t context_id)
static enum MAPISTATUS dcesrv_NspiBind (struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct NspiBind *r)
static enum MAPISTATUS dcesrv_NspiCompareMIds (struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct NspiCompareMIds *r)
static enum MAPISTATUS dcesrv_NspiDeleteEntries (struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct NspiDeleteEntries *r)
static enum MAPISTATUS dcesrv_NspiDNToMId (struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct NspiDNToMId *r)
static enum MAPISTATUS dcesrv_NspiGetIDsFromNames (struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct NspiGetIDsFromNames *r)
static enum MAPISTATUS dcesrv_NspiGetMatches (struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct NspiGetMatches *r)
static enum MAPISTATUS dcesrv_NspiGetNamesFromIDs (struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct NspiGetNamesFromIDs *r)
static enum MAPISTATUS dcesrv_NspiGetPropList (struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct NspiGetPropList *r)
static enum MAPISTATUS dcesrv_NspiGetProps (struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct NspiGetProps *r)
static enum MAPISTATUS dcesrv_NspiGetSpecialTable (struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct NspiGetSpecialTable *r)
static enum MAPISTATUS dcesrv_NspiGetTemplateInfo (struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct NspiGetTemplateInfo *r)
static enum MAPISTATUS dcesrv_NspiModLinkAtt (struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct NspiModLinkAtt *r)
static enum MAPISTATUS dcesrv_NspiModProps (struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct NspiModProps *r)
static enum MAPISTATUS dcesrv_NspiQueryColumns (struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct NspiQueryColumns *r)
static enum MAPISTATUS dcesrv_NspiQueryRows (struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct NspiQueryRows *r)
static enum MAPISTATUS dcesrv_NspiResolveNames (struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct NspiResolveNames *r)
static enum MAPISTATUS dcesrv_NspiResolveNamesW (struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct NspiResolveNamesW *r)
static enum MAPISTATUS dcesrv_NspiResortRestriction (struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct NspiResortRestriction *r)
static enum MAPISTATUS dcesrv_NspiSeekEntries (struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct NspiSeekEntries *r)
static enum MAPISTATUS dcesrv_NspiUnbind (struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct NspiUnbind *r)
static enum MAPISTATUS dcesrv_NspiUpdateStat (struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct NspiUpdateStat *r)
NTSTATUS samba_init_module (void)

Variables

TDB_CONTEXT * emsabp_tdb_ctx = NULL
struct exchange_nsp_sessionnsp_session = NULL

Detailed Description

OpenChange NSPI Server implementation.


Function Documentation

static NTSTATUS dcesrv_exchange_nsp_dispatch ( struct dcesrv_call_state *  dce_call,
TALLOC_CTX *  mem_ctx,
void *  r,
struct mapiproxy mapiproxy 
) [static]

Dispatch incoming NSPI call to the correct OpenChange server function.

Parameters:
dce_callpointer to the session context
mem_ctxpointer to the memory context
rgeneric pointer on NSPI data
mapiproxypointer to the mapiproxy structure controlling mapiproxy behavior
Returns:
NT_STATUS_OK

References dcesrv_NspiBind(), dcesrv_NspiCompareMIds(), dcesrv_NspiDeleteEntries(), dcesrv_NspiDNToMId(), dcesrv_NspiGetIDsFromNames(), dcesrv_NspiGetMatches(), dcesrv_NspiGetNamesFromIDs(), dcesrv_NspiGetPropList(), dcesrv_NspiGetProps(), dcesrv_NspiGetSpecialTable(), dcesrv_NspiGetTemplateInfo(), dcesrv_NspiModLinkAtt(), dcesrv_NspiModProps(), dcesrv_NspiQueryColumns(), dcesrv_NspiQueryRows(), dcesrv_NspiResolveNames(), dcesrv_NspiResolveNamesW(), dcesrv_NspiResortRestriction(), dcesrv_NspiSeekEntries(), dcesrv_NspiUnbind(), and dcesrv_NspiUpdateStat().

Referenced by samba_init_module().

static NTSTATUS dcesrv_exchange_nsp_init ( struct dcesrv_context *  dce_ctx) [static]

Initialize the NSPI OpenChange server

Parameters:
dce_ctxpointer to the server context
Returns:
NT_STATUS_OK on success, otherwise NT_STATUS_NO_MEMORY

References emsabp_tdb_ctx, emsabp_tdb_init(), and exchange_nsp_session::session.

Referenced by samba_init_module().

static NTSTATUS dcesrv_exchange_nsp_unbind ( struct server_id  server_id,
uint32_t  context_id 
) [static]

Terminates the NSPI connection and release the associated session and context if still available. This case occurs when the client doesn't call NspiUnbind but quit unexpectedly.

Parameters:
server_idreference to the server identifier structure
context_idthe connection context identifier
Returns:
NT_STATUS_OK on success

References mpm_session_cmp_sub(), mpm_session_release(), exchange_nsp_session::next, and exchange_nsp_session::session.

Referenced by samba_init_module().

static enum MAPISTATUS dcesrv_NspiBind ( struct dcesrv_call_state *  dce_call,
TALLOC_CTX *  mem_ctx,
struct NspiBind *  r 
) [static]

exchange_nsp NspiBind (0x0) function, Initiates a NSPI session with the client.

This function checks if the user is an Exchange user and input parameters like codepage are valid. If it passes the tests, the function initializes an emsabp context and returns to the client a valid policy_handle and expected reply parameters.

Parameters:
dce_callpointer to the session context
mem_ctxpointer to the memory context
rpointer to the NspiBind call structure
Returns:
MAPI_E_SUCCESS on success, otherwise a MAPI error

References emsabp_destructor(), emsabp_init(), emsabp_tdb_ctx, emsabp_verify_codepage(), emsabp_verify_user(), EXCHANGE_HANDLE_NSP, mpm_session_cmp(), mpm_session_increment_ref_count(), mpm_session_init(), mpm_session_set_destructor(), mpm_session_set_private_data(), exchange_nsp_session::next, emsabp_context::samdb_ctx, samdb_ntds_objectGUID(), and exchange_nsp_session::session.

static enum MAPISTATUS dcesrv_NspiCompareMIds ( struct dcesrv_call_state *  dce_call,
TALLOC_CTX *  mem_ctx,
struct NspiCompareMIds *  r 
) [static]

exchange_nsp NspiCompareMIds (0xA) function

Parameters:
dce_callpointer to the session context
mem_ctxpointer to the memory context
rpointer to the NspiCompareMIds request data
Returns:
MAPI_E_SUCCESS on success
static enum MAPISTATUS dcesrv_NspiDeleteEntries ( struct dcesrv_call_state *  dce_call,
TALLOC_CTX *  mem_ctx,
struct NspiDeleteEntries *  r 
) [static]

exchange_nsp NspiDeleteEntries (0xF) function

Parameters:
dce_callpointer to the session context
mem_ctxpointer to the memory context
rpointer to the NspiDeleteEntries request data
Returns:
MAPI_E_SUCCESS on success
static enum MAPISTATUS dcesrv_NspiDNToMId ( struct dcesrv_call_state *  dce_call,
TALLOC_CTX *  mem_ctx,
struct NspiDNToMId *  r 
) [static]

exchange_nsp NspiDNToMId (0x7) function

Parameters:
dce_callpointer to the session context
mem_ctxpointer to the memory context
rpointer to the NspiDNToMId request data
Note:
Only searches within configuration.ldb are supported at the moment.
Returns:
MAPI_E_SUCCESS on success

References emsabp_search_legacyExchangeDN(), emsabp_tdb_fetch_MId(), emsabp_tdb_insert(), mpm_session_cmp(), exchange_nsp_session::next, mpm_session::private_data, exchange_nsp_session::session, emsabp_context::tdb_ctx, and emsabp_context::ttdb_ctx.

static enum MAPISTATUS dcesrv_NspiGetIDsFromNames ( struct dcesrv_call_state *  dce_call,
TALLOC_CTX *  mem_ctx,
struct NspiGetIDsFromNames *  r 
) [static]

exchange_nsp NspiGetIDsFromNames (0x12) function

Parameters:
dce_callpointer to the session context
mem_ctxpointer to the memory context
rpointer to the NspiGetIDsFromNames request data
Returns:
MAPI_E_SUCCESS on success
static enum MAPISTATUS dcesrv_NspiGetMatches ( struct dcesrv_call_state *  dce_call,
TALLOC_CTX *  mem_ctx,
struct NspiGetMatches *  r 
) [static]

exchange_nsp NspiGetMatches (0x5) function

Parameters:
dce_callpointer to the session context
mem_ctxpointer to the memory context
rpointer to the NspiGetMatches request data
Returns:
MAPI_E_SUCCESS on success

References emsabp_fetch_attrs(), emsabp_search(), mpm_session_cmp(), exchange_nsp_session::next, mpm_session::private_data, and exchange_nsp_session::session.

static enum MAPISTATUS dcesrv_NspiGetNamesFromIDs ( struct dcesrv_call_state *  dce_call,
TALLOC_CTX *  mem_ctx,
struct NspiGetNamesFromIDs *  r 
) [static]

exchange_nsp NspiGetNamesFromIDs (0x11) function

Parameters:
dce_callpointer to the session context
mem_ctxpointer to the memory context
rpointer to the NspiGetNamesFromIDs request data
Returns:
MAPI_E_SUCCESS on success
static enum MAPISTATUS dcesrv_NspiGetPropList ( struct dcesrv_call_state *  dce_call,
TALLOC_CTX *  mem_ctx,
struct NspiGetPropList *  r 
) [static]

exchange_nsp NspiGetPropList (0x8) function

Parameters:
dce_callpointer to the session context
mem_ctxpointer to the memory context
rpointer to the NspiGetPropList request data
Returns:
MAPI_E_SUCCESS on success
static enum MAPISTATUS dcesrv_NspiGetProps ( struct dcesrv_call_state *  dce_call,
TALLOC_CTX *  mem_ctx,
struct NspiGetProps *  r 
) [static]

exchange_nsp NspiGetProps (0x9) function

Parameters:
dce_callpointer to the session context
mem_ctxpointer to the memory context
rpointer to the NspiGetProps request data
Returns:
MAPI_E_SUCCESS on success

References emsabp_fetch_attrs(), emsabp_tdb_lookup_MId(), mpm_session_cmp(), exchange_nsp_session::next, mpm_session::private_data, exchange_nsp_session::session, and emsabp_context::tdb_ctx.

static enum MAPISTATUS dcesrv_NspiGetSpecialTable ( struct dcesrv_call_state *  dce_call,
TALLOC_CTX *  mem_ctx,
struct NspiGetSpecialTable *  r 
) [static]

exchange_nsp NspiGetSpecialTable (0xC) function

Parameters:
dce_callpointer to the session context
mem_ctxpointer to the memory context
rpointer to the NspiGetSpecialTable request data
Note:
MS-NSPI specifies lpVersion "holds the value of the version number of the hierarchy table that the client has." We will ignore this for the moment.
Returns:
MAPI_E_SUCCESS on success

References emsabp_get_CreationTemplatesTable(), emsabp_get_HierarchyTable(), mpm_session_cmp(), exchange_nsp_session::next, mpm_session::private_data, and exchange_nsp_session::session.

static enum MAPISTATUS dcesrv_NspiGetTemplateInfo ( struct dcesrv_call_state *  dce_call,
TALLOC_CTX *  mem_ctx,
struct NspiGetTemplateInfo *  r 
) [static]

exchange_nsp NspiGetTemplateInfo (0xD) function

Parameters:
dce_callpointer to the session context
mem_ctxpointer to the memory context
rpointer to the NspiGetTemplateInfo request data
Returns:
MAPI_E_SUCCESS on success
static enum MAPISTATUS dcesrv_NspiModLinkAtt ( struct dcesrv_call_state *  dce_call,
TALLOC_CTX *  mem_ctx,
struct NspiModLinkAtt *  r 
) [static]

exchange_nsp NspiModLinkAtt (0xE) function

Parameters:
dce_callpointer to the session context
mem_ctxpointer to the memory context
rpointer to the NspiModLinkAtt request data
Returns:
MAPI_E_SUCCESS on success
static enum MAPISTATUS dcesrv_NspiModProps ( struct dcesrv_call_state *  dce_call,
TALLOC_CTX *  mem_ctx,
struct NspiModProps *  r 
) [static]

exchange_nsp NspiModProps (0xB) function

Parameters:
dce_callpointer to the session context
mem_ctxpointer to the memory context
rpointer to the NspiModProps request data
Returns:
MAPI_E_SUCCESS on success
static enum MAPISTATUS dcesrv_NspiQueryColumns ( struct dcesrv_call_state *  dce_call,
TALLOC_CTX *  mem_ctx,
struct NspiQueryColumns *  r 
) [static]

exchange_nsp NspiQueryColumns (0x10) function

Parameters:
dce_callpointer to the session context
mem_ctxpointer to the memory context
rpointer to the NspiQueryColumns request data
Returns:
MAPI_E_SUCCESS on success
static enum MAPISTATUS dcesrv_NspiQueryRows ( struct dcesrv_call_state *  dce_call,
TALLOC_CTX *  mem_ctx,
struct NspiQueryRows *  r 
) [static]

exchange_nsp NspiQueryRows (0x3) function

Parameters:
dce_callpointer to the session context
mem_ctxpointer to the memory context
rpointer to the NspiQueryRows request data
Returns:
MAPI_E_SUCCESS on success

References emsabp_ab_container_enum(), emsabp_fetch_attrs(), emsabp_fetch_attrs_from_msg(), emsabp_tdb_lookup_MId(), mpm_session_cmp(), exchange_nsp_session::next, mpm_session::private_data, exchange_nsp_session::session, and emsabp_context::tdb_ctx.

static enum MAPISTATUS dcesrv_NspiResolveNames ( struct dcesrv_call_state *  dce_call,
TALLOC_CTX *  mem_ctx,
struct NspiResolveNames *  r 
) [static]

exchange_nsp NspiResolveNames (0x13) function

Parameters:
dce_callpointer to the session context
mem_ctxpointer to the memory context
rpointer to the NspiResolveNames request data
Returns:
MAPI_E_SUCCESS on success
static enum MAPISTATUS dcesrv_NspiResolveNamesW ( struct dcesrv_call_state *  dce_call,
TALLOC_CTX *  mem_ctx,
struct NspiResolveNamesW *  r 
) [static]

exchange_nsp NspiResolveNamesW (0x14) function

Parameters:
dce_callpointer to the session context
mem_ctxpointer to the memory context
rpointer to the NspiResolveNamesW request data
Returns:
MAPI_E_SUCCESS on success

References emsabp_ab_container_by_id(), emsabp_fetch_attrs_from_msg(), mpm_session_cmp(), exchange_nsp_session::next, mpm_session::private_data, emsabp_context::samdb_ctx, and exchange_nsp_session::session.

static enum MAPISTATUS dcesrv_NspiResortRestriction ( struct dcesrv_call_state *  dce_call,
TALLOC_CTX *  mem_ctx,
struct NspiResortRestriction *  r 
) [static]

exchange_nsp NspiResortRestriction (0x6) function

Parameters:
dce_callpointer to the session context
mem_ctxpointer to the memory context
rpointer to the NspiResortRestriction request data
Returns:
MAPI_E_SUCCESS on success
static enum MAPISTATUS dcesrv_NspiSeekEntries ( struct dcesrv_call_state *  dce_call,
TALLOC_CTX *  mem_ctx,
struct NspiSeekEntries *  r 
) [static]

exchange_nsp NspiSeekEntries (0x4) function

Parameters:
dce_callpointer to the session context
mem_ctxpointer to the memory context
rpointer to the NspiSeekEntries request data
Returns:
MAPI_E_SUCCESS on success
static enum MAPISTATUS dcesrv_NspiUnbind ( struct dcesrv_call_state *  dce_call,
TALLOC_CTX *  mem_ctx,
struct NspiUnbind *  r 
) [static]

exchange_nsp NspiUnbind (0x1) function, Terminates a NSPI session with the client

Parameters:
dce_callpointer to the session context
mem_ctxpointer to the memory context
rpointer to the NspiUnbind call structure

References mpm_session_cmp(), mpm_session_release(), exchange_nsp_session::next, and exchange_nsp_session::session.

static enum MAPISTATUS dcesrv_NspiUpdateStat ( struct dcesrv_call_state *  dce_call,
TALLOC_CTX *  mem_ctx,
struct NspiUpdateStat *  r 
) [static]

exchange_nsp NspiUpdateStat (0x2) function

Parameters:
dce_callpointer to the session context
mem_ctxpointer to the memory context
rpointer to the NspiUpdateStat request data
Returns:
MAPI_E_SUCCESS on success

Variable Documentation

TDB_CONTEXT* emsabp_tdb_ctx = NULL

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/