# 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)