📄 mds.h
字号:
} MDS_BIND_REQ;/*----------------------------------------------------------------------*//* Read Request *//*----------------------------------------------------------------------*/typedef struct { struct { ST_CHAR name[MAX_DN_LEN + 1]; /* Object Entry's DDN */ ST_INT select; /* return info selection */ /* Set of types (if select == SELECT_SOME) */ ST_INT num_types; /* number of selected types */ MDS_TYPE *types; /* list of selected types */ } in; struct { /* Return entry information */ ST_BOOLEAN alias_deref; /* alias dereferenced */ ST_BOOLEAN from_entry; /* read from entry or a copy of entry */ ST_INT num_info; /* number of info records returned */ MDS_INFO *info; /* list of info records */ } out; } MDS_READ_REQ;/*----------------------------------------------------------------------*//* MDS Error *//*----------------------------------------------------------------------*/#define MDS_ERROR_TYPE_ABORT 1#define MDS_ERROR_TYPE_ABANDONED 2#define MDS_ERROR_TYPE_ABANDON_FAILED 3#define MDS_ERROR_TYPE_ATTRIBUTE 4#define MDS_ERROR_TYPE_NAME 5#define MDS_ERROR_TYPE_SECURITY 6#define MDS_ERROR_TYPE_SERVICE 7#define MDS_ERROR_TYPE_UPDATE 8#define MDS_ERROR_TYPE_REFERRAL 9/*-------------------------------------------------------------------**** Abort Source ****-------------------------------------------------------------------*/#define MDS_ERROR_ABSOURCE_DUA_ABS 1 /* local USER(dua) initiated */#define MDS_ERROR_ABSOURCE_DSA_ABS 2 /* remote USER(dsa) initiated */#define MDS_ERROR_ABSOURCE_LACSABS 3 /* local ACSE prov initiated */#define MDS_ERROR_ABSOURCE_RACSABS 4 /* remote ACSE prov initiated */#define MDS_ERROR_ABSOURCE_LPRSABS 5 /* local PRES prov initiated */#define MDS_ERROR_ABSOURCE_RPRSABS 6 /* remote PRES prov initiated */#define MDS_ERROR_ABSOURCE_LTRSABS 7 /* local TRSP prov initiated */#define MDS_ERROR_ABSOURCE_RTRSABS 8 /* remote TRSP prov initiated */#define MDS_ERROR_ABSOURCE_LSESABS 9 /* local SESS prov initiated */#define MDS_ERROR_ABSOURCE_RSESABS 10 /* remote SESS prov initiated */#define MDS_ERROR_ABSOURCE_NET_ABS 11 /* network initiated */#define MDS_ERROR_ABSOURCE_USE_ABS 12 /* local user error */#define MDS_ERROR_ABSOURCE_UKNWABS 13 /* unknown source initiated *//*-------------------------------------------------------------------**** Abort Reason ****-------------------------------------------------------------------*/#define MDS_ERROR_ABREASON_NOREABR 1 /* no reason given */#define MDS_ERROR_ABREASON_RESRABR 2 /* resource unavailable */#define MDS_ERROR_ABREASON_PROTABR 3 /* protocol error detected */#define MDS_ERROR_ABREASON_ASN1ABR 4 /* encoding/decoding error *//*-------------------------------------------------------------------**** Abort Status ****-------------------------------------------------------------------*/#define MDS_ERROR_AB_STATUS_TRANABO 1 /* transient */#define MDS_ERROR_AB_STATUS_PERMABO 2 /* permanent *//*-------------------------------------------------------------------**** Abandoned problem ****-------------------------------------------------------------------*/#define MDS_ERROR_ABANDON_FAILED_NOSOPE 1 /* no such operation */#define MDS_ERROR_ABANDONED_FAILED_TOOLAT 2 /* too late to abandon */#define MDS_ERROR_ABANDONED_FAILED_CNTABN 3 /* cannot abandon *//*-------------------------------------------------------------------**** Attribute problem ****-------------------------------------------------------------------*/#define MDS_ERROR_ATTRIBUTE_NOSATT 1 /* no such attribute or value */#define MDS_ERROR_ATTRIBUTE_IVASYN 2 /* invalid attribute syntaxe */#define MDS_ERROR_ATTRIBUTE_UDATYP 3 /* undefined attribute type */#define MDS_ERROR_ATTRIBUTE_INAMAT 4 /* inappropriate matching */#define MDS_ERROR_ATTRIBUTE_CSTVLT 5 /* constraint violation */#define MDS_ERROR_ATTRIBUTE_AOVAEX 6 /* attribute or value already *//*-------------------------------------------------------------------**** Name problem ****-------------------------------------------------------------------*/#define MDS_ERROR_NAME_NOSOBJ 1 /* no such object */#define MDS_ERROR_NAME_ALSPRB 2 /* alias problem */#define MDS_ERROR_NAME_IVSYNT 3 /* invalid attribute syntaxe */#define MDS_ERROR_NAME_ADFPRB 4 /* alias dereferencing problem *//*-------------------------------------------------------------------**** Security problem ****-------------------------------------------------------------------*/#define MDS_ERROR_SECURITY_INAAUT 1 /* inappropriate authentication */#define MDS_ERROR_SECURITY_INVCRE 2 /* invalid credentials */#define MDS_ERROR_SECURITY_INSACR 3 /* insufficient access rights */#define MDS_ERROR_SECURITY_INVSIG 4 /* invalid signature */#define MDS_ERROR_SECURITY_PROREQ 5 /* protection required */#define MDS_ERROR_SECURITY_NOINFO 6 /* no information *//*-------------------------------------------------------------------**** Service problem (include user special errors) ****-------------------------------------------------------------------*/#define MDS_ERROR_SERVICE_DSBUSY 1 /* busy */#define MDS_ERROR_SERVICE_UNAVAI 2 /* unavailable */#define MDS_ERROR_SERVICE_UNWPER 3 /* unwilling to perform */#define MDS_ERROR_SERVICE_CHNREQ 4 /* chaining required */#define MDS_ERROR_SERVICE_UNAPRE 5 /* unable to proceed */#define MDS_ERROR_SERVICE_INVREF 6 /* invalid reference */#define MDS_ERROR_SERVICE_TIMEXC 7 /* time limit exceeded */#define MDS_ERROR_SERVICE_ADMEXC 8 /* administration limit exceeded*/#define MDS_ERROR_SERVICE_LOOPDT 9 /* loop detected */#define MDS_ERROR_SERVICE_UAVCEX 10 /* unavailable critical extensio*/#define MDS_ERROR_SERVICE_OUTSCP 11 /* out of scope */#define MDS_ERROR_SERVICE_DITERR 12 /* dit error *//*--- Service problem : supplementary codes ( for internal use ) ----*/#define MDS_ERROR_SERVICE_DUPINV 13 /* duplicated invoke id: marben */ /* x.500 defined */#define MDS_ERROR_SERVICE_SELERR 14 /* wrong service element syntax */#define MDS_ERROR_SERVICE_DCDERR 15 /* decoding error */#define MDS_ERROR_SERVICE_FILACS 16 /* file access error *//*-------------------------------------------------------------------*//* Update problem *//*-------------------------------------------------------------------*/#define MDS_ERROR_UPDATE_NAMVLT 1 /* naming violation */#define MDS_ERROR_UPDATE_OBCVLT 2 /* object class violation */#define MDS_ERROR_UPDATE_NALNLF 3 /* not allowed on non-leaf */#define MDS_ERROR_UPDATE_NALRDN 4 /* not allowed on rdn */#define MDS_ERROR_UPDATE_EALEXT 5 /* entry already exists */#define MDS_ERROR_UPDATE_AFMDSA 6 /* affects multiple dsa */#define MDS_ERROR_UPDATE_OCMPRO 7 /* object class modification prh*/typedef struct { ST_INT type; ST_INT code; /* ignored for ABORT, ABANDONED, ATTRIBUTE, REFERRAL */ union { struct { ST_INT source; ST_INT reason; ST_INT status; } abort; struct { ST_CHAR matched[MAX_DN_LEN + 1]; } name;#if 0 struct { } attribute; struct { } referral;#endif } u; } MDS_ERROR;/*----------------------------------------------------------------------*//* MDS Request *//*----------------------------------------------------------------------*/typedef struct mds_req { DBL_LNK lnk; ST_LONG prov_info; /* This field is reserved for MDS provider */ ST_INT opcode; /* Request code */ ST_LONG handle; /* DSA Bind handle (returned on bind) */ union { MDS_BIND_REQ bind; MDS_READ_REQ read; } op; struct { ST_INT status; /* request status */ ST_INT retcode; /* completion code */ ST_INT mds_error; /* error returned by MDS provider (if applicable) */ MDS_ERROR *error; /* set if retcode == ERROR_RESULT */ } out; ST_VOID (*callback) (struct mds_req *req); ST_LONG user_info; /* This field is reserved for MDS user */ } MDS_REQ;/************************************************************************//* API function declarations *//************************************************************************/ST_RET mds_initialize (ST_VOID);ST_RET mds_end (ST_VOID);ST_BOOLEAN mds_serve (ST_VOID);ST_RET mds_set_naming_ctx (ST_CHAR *ctx);ST_RET mds_set_def_userid (MDS_USERID *userid);ST_RET mds_request (MDS_REQ *req);MDS_REQ *mds_alloc_req (ST_VOID);ST_VOID mds_free_req (MDS_REQ *req);#ifdef X500_SUPPORTextern ST_BOOLEAN mds_x500_support; /* X.500 support required flag, default is SD_FALSE */extern ST_CHAR mds_paddr_attr[]; /* Presentation Address Attribute Name */extern ST_CHAR mds_aptitle_attr[]; /* AP Title Attribute Name */extern ST_CHAR mds_aequal_attr[]; /* AP Title Attribute Name */#endif#ifdef LDAP_SUPPORT#define NEEDPROTOS#if defined (_WIN32)#define WINSOCK#endif#include "lber.h"#include "ldap.h"#include "srchpref.h"extern ST_BOOLEAN ldap_support; /* LDAP support required flag, default is SD_FALSE */extern ST_INT ldap_poll_rate; /* How often to poll LDAP for results */extern ST_CHAR ldap_paddr_attr[]; /* Presentation Address Attribute Name */extern ST_CHAR ldap_aptitle_attr[]; /* AP Title Attribute Name */extern ST_CHAR ldap_aequal_attr[]; /* AP Title Attribute Name */ST_RET ldap_set_def_userid (MDS_USERID *userid);#endif/************************************************************************//* Useful DN manipulation functions and macros *//************************************************************************/#define mds_is_dn(name) (strchr (name, '=') ? SD_TRUE : SD_FALSE)ST_RET mds_dn_to_x500 (ST_CHAR *dn, ST_CHAR *x500_dn);ST_RET mds_dn_to_ldap (ST_CHAR *dn, ST_CHAR *ldap_dn);ST_CHAR **mds_explode_x500_dn (ST_CHAR *dn);ST_CHAR **mds_explode_ldap_dn (ST_CHAR *dn);ST_RET mds_rdn_ldap2x500 (ST_CHAR *ldap_rdn, ST_CHAR *x500_rdn);ST_RET mds_rdn_x5002ldap (ST_CHAR *x500_rdn, ST_CHAR *ldap_rdn);ST_VOID mds_free_rdn_list (ST_CHAR **rdn_list);ST_RET mds_paddr_to_x500 (ST_CHAR *paddr, MDS_PRES_ADDR *pres_addr);ST_RET mds_aptitle_to_objid (ST_CHAR *aptitle, MMS_OBJ_ID *objid);#ifdef __cplusplus}#endif #endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -