\documentclass{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{textcomp}
\usepackage{geometry}
\geometry{top=15mm, bottom=15mm, left=1cm, right=1cm}
\usepackage[french]{babel}
\usepackage{pslatex}
\usepackage[colorlinks=true,urlcolor=black]{hyperref}
\usepackage{graphicx}
\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\footrulewidth}{0.4pt}
\fancyfoot[L]{Uubu.fr}
\fancyfoot[R]{sam. nov. 2 17:51:10 CET 2013}
\lfoot{\Large \textit{Uubu.fr}}
\hypersetup{pdfinfo={
Title={draft-ietf-ldapext-c-api-vlv-01},
Author={Sylvain Girod},
Creator={Bash script from uubu.fr's format version 1},
Producer={Bash script and PDFLaTeX},
Subject={Contrôle Virtual List View},
CreationDate={D:20131102175110},
ModDate={D:20131102175110},
Keywords={LDAP;Lightweight Directory Access Protocol}
}}
\begin{document}
 
\begin{center}
{\Huge draft-ietf-ldapext-c-api-vlv-01 }
\end{center}
\vspace{1cm}
 
\begin{flushleft}
 
{\large Contrôle Virtual List View}
 
\vspace{10mm}
 
\hspace{1mm}  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.
\vspace{5mm} \\
 
 
\hspace{1mm} La structure \textbf{LDAPVirtualList} est passé à la fonction \textbf{ldap\_create\_virtuallist\_control()} pour créer le contrôle:
 
{\ttfamily
typedef struct ldapvirtuallist \{\\ \hspace{2mm}unsigned long ldvlist\_before\_count ;\\ \hspace{2mm}unsigned long ldvlist\_after\_count ;\\ \hspace{2mm}char *ldvlist\_attrvalue ;\\ \hspace{2mm}unsigned long ldvlist\_index ;\\ \hspace{2mm}unsigned long ldvlist\_size ;\\ \hspace{2mm}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"\\
}
\vspace{8mm}
 
\begin{description} \normalsize
\item[\hspace{1mm} ld]{Un handle de session LDAP}
\item[\hspace{1mm} ldvlistp]{L'adresse d'une structure LDAPVirtualList dont le contenu est utilisé pour construire le contrôle}
\item[\hspace{1mm} ctrlp]{Un paramètre de résultat qui aura l'adresse d'une structure LDAPControl qui contient le contrôle VLV créé.}
\end{description}
 
\hspace{1mm}  Les membres d'une structure \textbf{LDAPVirtualList} sont:
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{1mm} ldvlist\_before\_count]{Nombre d'entrées avant l'entrée cible que le client demande}
\item[\hspace{1mm} ldvlist\_after\_count]{Nombre d'entrées après l'entrée cible}
\item[\hspace{1mm} 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.}
\item[\hspace{1mm} ldvlist\_index]{Utilisé si ldvlist\_attrvalue est NULL. Permet de déterminer l'entrée cible.}
\item[\hspace{1mm} ldvlist\_size]{Utilisé si ldvlist\_attrvalue est NULL. Permet de déterminer l'entrée cible.}
\item[\hspace{1mm} ldvlist\_extradata]{Réservé. n'a pas d'effet sur le contrôle}
\end{description}
 
\vspace{1cm}{\huge Réponse }
 
\
 
{\ttfamily
int ldap\_parse\_virtuallist\_control(\\ \hspace{2mm}LDAP *ld,\\ \hspace{2mm}LDAPControl **ctrls,\\ \hspace{2mm}unsigned long *target\_posp,\\ \hspace{2mm}unsigned long *list\_sizep,\\ \hspace{2mm}int *errcodep\\ ) ;\\ \#define LDAP\_CONTROL\_VLVRESPONSE "2.16.840.1.113730.3.4.10"\\ \#define LDAP\_SORT\_CONTROL\_MISSING 0x3C /*\hspace{2mm}60\hspace{2mm}*/\\ \#define LDAP\_INDEX\_RANGE\_ERROR 0x3D /*\hspace{2mm}61\hspace{2mm}*/\\
}
\vspace{8mm}
 
\begin{description} \normalsize
\item[\hspace{1mm} ld]{Un handle de session LDAP}
\item[\hspace{1mm} ctrls]{L'adresse d'un tableaux de structures LDAPControl.}
\item[\hspace{1mm} target\_posp]{l'index de l'entrée cible dans la liste}
\item[\hspace{1mm} list\_sizep]{Taille de la liste estimée par le serveur}
\item[\hspace{1mm} errcodep]{Code de résultat VLV, devrait avoir les valeurs suivantes:}
\end{description}
 
{\ttfamily
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)\\
}
\vspace{8mm}
\end{flushleft}
\end{document}
