draft-ietf-ldapext-c-api-vlv-01

Contrôle Virtual List View

   Ce document décrit les fonctions pour créer des contrôles de requête de listes virtuelles. Cette extension consiste de 2 contrôles LDAP: un contrôle de requête Virtual List View qui est envoyé par un client à un serveur avec une recherche LDAP et un contrôle de réponse.

La structure LDAPVirtualList est passé à la fonction ldap_create_virtuallist_control() pour créer le contrôle:
typedef struct ldapvirtuallist {
    unsigned long ldvlist_before_count ;
    unsigned long ldvlist_after_count ;
    char *ldvlist_attrvalue ;
    unsigned long ldvlist_index ;
    unsigned long ldvlist_size ;
    void *ldvlist_extradata ;
} LDAPVirtualList ;
int ldap_create_virtuallist_control(
LDAP *ld,
LDAPVirtualList *ldvlistp,
LDAPControl **ctrlp
) ;
#define LDAP_CONTROL_VLVREQUEST "2.16.840.1.113730.3.4.9"

ld Un handle de session LDAP
ldvlistp L'adresse d'une structure LDAPVirtualList dont le contenu est utilisé pour construire le contrôle
ctrlp Un paramètre de résultat qui aura l'adresse d'une structure LDAPControl qui contient le contrôle VLV créé.

   Les membres d'une structure LDAPVirtualList sont:

ldvlist_before_count Nombre d'entrées avant l'entrée cible que le client demande
ldvlist_after_count Nombre d'entrées après l'entrée cible
ldvlist_attrvalue Si non NULL, indique que le choix byValue dans VirtualListViewRequest est utilisé et correspond à l'élément assertionValue de la valeur du contrôle VirtualListViewRequest encodé en BER lui-même. Cette valeur est comparée par le serveur avec les valeurs des attributs spécifiés par la clé de trie pour déterminer l'entrée cible.
ldvlist_index Utilisé si ldvlist_attrvalue est NULL. Permet de déterminer l'entrée cible.
ldvlist_size Utilisé si ldvlist_attrvalue est NULL. Permet de déterminer l'entrée cible.
ldvlist_extradata Réservé. n'a pas d'effet sur le contrôle

Réponse


int ldap_parse_virtuallist_control(
    LDAP *ld,
    LDAPControl **ctrls,
    unsigned long *target_posp,
    unsigned long *list_sizep,
    int *errcodep
) ;
#define LDAP_CONTROL_VLVRESPONSE "2.16.840.1.113730.3.4.10"
#define LDAP_SORT_CONTROL_MISSING 0x3C /*    60    */
#define LDAP_INDEX_RANGE_ERROR 0x3D /*    61    */

ld Un handle de session LDAP
ctrls L'adresse d'un tableaux de structures LDAPControl.
target_posp l'index de l'entrée cible dans la liste
list_sizep Taille de la liste estimée par le serveur
errcodep Code de résultat VLV, devrait avoir les valeurs suivantes:


LDAP_SUCCESS (0)
LDAP_OPERATIONS_ERROR (1)
LDAP_UNWILLING_TO_PERFORM (53)
LDAP_INSUFFICIENT_ACCESS (50)
LDAP_BUSY (51)
LDAP_TIMELIMIT_EXCEEDED (3)
LDAP_ADMINLIMIT_EXCEEDED (11)
LDAP_SORT_CONTROL_MISSING (60)
LDAP_INDEX_RANGE_ERROR (61)
LDAP_OTHER (50)