emsabp_tdb.c File Reference

EMSABP TDB database API. More...

#include "mapiproxy/dcesrv_mapiproxy.h"
#include "dcesrv_exchange_nsp.h"
#include <util/debug.h>

Functions

_PUBLIC_ enum MAPISTATUS emsabp_tdb_close (TDB_CONTEXT *tdb_ctx)
 
_PUBLIC_ enum MAPISTATUS emsabp_tdb_fetch (TDB_CONTEXT *tdb_ctx, const char *keyname, TDB_DATA *result)
 
_PUBLIC_ enum MAPISTATUS emsabp_tdb_fetch_dn_from_MId (TALLOC_CTX *mem_ctx, TDB_CONTEXT *tdb_ctx, uint32_t MId, char **dn)
 
_PUBLIC_ enum MAPISTATUS emsabp_tdb_fetch_MId (TDB_CONTEXT *tdb_ctx, const char *keyname, uint32_t *MId)
 
_PUBLIC_ TDB_CONTEXT * emsabp_tdb_init (TALLOC_CTX *mem_ctx, struct loadparm_context *lp_ctx)
 
_PUBLIC_ TDB_CONTEXT * emsabp_tdb_init_tmp (TALLOC_CTX *mem_ctx)
 
_PUBLIC_ enum MAPISTATUS emsabp_tdb_insert (TDB_CONTEXT *tdb_ctx, const char *keyname)
 
_PUBLIC_ bool emsabp_tdb_lookup_MId (TDB_CONTEXT *tdb_ctx, uint32_t MId)
 
static int emsabp_tdb_traverse_MId (TDB_CONTEXT *tdb_ctx, TDB_DATA key, TDB_DATA dbuf, void *state)
 
static int emsabp_tdb_traverse_MId_DN (TDB_CONTEXT *tdb_ctx, TDB_DATA key, TDB_DATA dbuf, void *state)
 

Detailed Description

EMSABP TDB database API.

Function Documentation

_PUBLIC_ enum MAPISTATUS emsabp_tdb_close ( TDB_CONTEXT *  tdb_ctx)

Close EMSABP TDB database

Returns
MAPI_E_SUCCESS on success, otherwise MAPI_E_INVALID_PARAMETER
_PUBLIC_ enum MAPISTATUS emsabp_tdb_fetch ( TDB_CONTEXT *  tdb_ctx,
const char *  keyname,
TDB_DATA *  result 
)

Fetch an element within a TDB database given its key

Parameters
tdb_ctxpointer to the EMSABP TDB context
keynamepointer to the TDB key to fetch
resultpointer on TDB results
Returns
MAPI_E_SUCCESS on success, otherwise MAPI_E_NOT_FOUND

Referenced by emsabp_tdb_init(), and emsabp_tdb_insert().

_PUBLIC_ enum MAPISTATUS emsabp_tdb_fetch_dn_from_MId ( TALLOC_CTX *  mem_ctx,
TDB_CONTEXT *  tdb_ctx,
uint32_t  MId,
char **  dn 
)

Traverse the EMSABP TDB and fetch the DN associated with the MId

Parameters
mem_ctxpointer to the memory context
tdb_ctxpointer to the EMSABP TDB context
MIdMID to search
dnpointer on pointer to the dn to return
Returns
MAPI_E_SUCCESS on success, otherwise false

References emsabp_MId::dn, emsabp_tdb_traverse_MId_DN(), and emsabp_MId::MId.

Referenced by emsabp_ab_container_by_id(), and emsabp_fetch_attrs().

_PUBLIC_ enum MAPISTATUS emsabp_tdb_fetch_MId ( TDB_CONTEXT *  tdb_ctx,
const char *  keyname,
uint32_t *  MId 
)

Retrieve the Minimal EntryID associated to a given DN

Parameters
tdb_ctxpointer to the EMSABP TDB context
keynamepointer to the TDB key to search for
MIdpointer on the integer the function returns
Returns
MAPI_E_SUCCESS on success, otherwise MAPI error

Referenced by dcesrv_NspiDNToMId(), emsabp_fetch_attrs_from_msg(), emsabp_search(), and emsabp_table_fetch_attrs().

_PUBLIC_ TDB_CONTEXT* emsabp_tdb_init ( TALLOC_CTX *  mem_ctx,
struct loadparm_context *  lp_ctx 
)

Open EMSABP TDB database

Parameters
mem_ctxpointer to the memory context
lp_ctxpointer to the loadparm context
Returns
MAPI_E_SUCCESS on success, otherwise MAPI error

References EMSABP_TDB_DATA_REC, emsabp_tdb_fetch(), EMSABP_TDB_MID_START, and mapiproxy_server_emsabp_tdb_init().

Referenced by dcesrv_exchange_nsp_init().

_PUBLIC_ TDB_CONTEXT* emsabp_tdb_init_tmp ( TALLOC_CTX *  mem_ctx)

Initialize a temporary (on-memory) TDB database. This database is used to store temporary MId used within a session lifetime.

Parameters
mem_ctxpointer to the memory context
Returns
Allocated TDB context on success, otherwise NULL

References EMSABP_TDB_DATA_REC, and EMSABP_TDB_TMP_MID_START.

Referenced by emsabp_init().

_PUBLIC_ enum MAPISTATUS emsabp_tdb_insert ( TDB_CONTEXT *  tdb_ctx,
const char *  keyname 
)

Insert an element into TDB database

Parameters
tdb_ctxpointer to the EMSABP TDB context
keynamepointer to the TDB key name string
Returns
MAPI_E_SUCCESS on success, otherwise MAPI error

References EMSABP_TDB_DATA_REC, and emsabp_tdb_fetch().

Referenced by dcesrv_NspiDNToMId(), emsabp_fetch_attrs_from_msg(), emsabp_search(), and emsabp_table_fetch_attrs().

_PUBLIC_ bool emsabp_tdb_lookup_MId ( TDB_CONTEXT *  tdb_ctx,
uint32_t  MId 
)

Traverse the EMSABP TDB database and look for the input MId

Parameters
tdb_ctxpointer to the EMSABP TDB context
MIdMID to lookup
Returns
true on success, otherwise false

References emsabp_tdb_traverse_MId().

Referenced by dcesrv_NspiGetProps(), dcesrv_NspiQueryRows(), dcesrv_NspiSeekEntries(), dcesrv_NspiUpdateStat(), and emsabp_search().

static int emsabp_tdb_traverse_MId ( TDB_CONTEXT *  tdb_ctx,
TDB_DATA  key,
TDB_DATA  dbuf,
void *  state 
)
static

Referenced by emsabp_tdb_lookup_MId().

static int emsabp_tdb_traverse_MId_DN ( TDB_CONTEXT *  tdb_ctx,
TDB_DATA  key,
TDB_DATA  dbuf,
void *  state 
)
static

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/