lcrzo_record(3)

NAME
lcrzo_record - bibliotheque lcrzo : enregistrement dans un fichier

CONTENU
/*    Bibliotheque reseau de Laurent Constantin (lcrzo)
                 Module lcrzo_record
  Les fonctions presentes dans ce module permettent de lire et
  d'ecrire des donnees dans des fichiers.
*/
/*-------------------------------------------------------------*/
/* definition d'un lcrzo_record. Vous ne devriez pas utiliser
   directement ses champs. */
typedef struct
{ LCRZOFILE *pf;
  lcrzo_int16 opentype;
  lcrzo_int32 justbeforeposition;
  lcrzo_uint32 row;
  lcrzo_uint32 column;
} lcrzo_record;
/*-------------------------------------------------------------*/
/* un record peut ouvert en lecture/ecriture/append */
#define LCRZO_RECORD_OPEN_READ   1
#define LCRZO_RECORD_OPEN_WRITE  2
#define LCRZO_RECORD_OPEN_APPEND 3
/*-------------------------------------------------------------*/
/* Nom : lcrzo_record_open
   Description :
     Ouvre un lcrzo_record
   Parametre(s) d'entree :
     filepath : chemin d'acces au fichier a associer a ce record
                Par exemple "/home/utilisateur/rec1.dat".
     openingtype : type d'ouverture (LCRZO_RECORD_OPEN_READ,
                    WRITE, APPEND)
   Parametre(s) d'entree-sortie :
   Parametre(s) de sortie :
     *precord : lcrzo_record ouvert
   Valeurs de retour normales :
     LCRZO_ERR_OK : ok
*/
int lcrzo_record_open(lcrzo_record *precord,
		      lcrzo_conststring filepath,
		      lcrzo_int16 openingtype);
/* Nom : lcrzo_record_close
   Description :
     Ferme un lcrzo_record
   Parametre(s) d'entree :
   Parametre(s) d'entree-sortie :
     *precord : lcrzo_record a fermer
   Parametre(s) de sortie :
   Valeurs de retour normales :
     LCRZO_ERR_OK : ok
*/
int lcrzo_record_close(lcrzo_record *precord);
/*-------------------------------------------------------------*/
/************************************************************
 * Note sur les records :                                   *
 * Un record est un fichier dans lequel on va sauvegarder   *
 * et lire des donnees.                                     *
 *                                                          *
 * Actuellement, on ne peut relire des donnees que si elles *
 * ont ete sauvees dans un format hexadecimal ou mixte      *
 * (donc, choisissez attentivement le lcrzo_printtype ou le *
 * lcrzo_printprofile pour la sauvegarde).                  *
 ************************************************************/
/* Nom : lcrzo_printtype_init_stdin_record
   Description :
     Demande a l'utilisateur de choisir un lcrzo_printtype.
     Les choix proposes ne contiennent que des types pouvant
     etre relus dans un record.
   Parametre(s) d'entree :
     message : message a afficher avant de demander a entrer
     defaultprinttype : lcrzo_printtype par defaut a utiliser
                        si l'utilisateur n'entre rien
   Parametre(s) d'entree-sortie :
   Parametre(s) de sortie :
     *pprinttype : lcrzo_printype choisi
   Valeurs de retour normales :
     LCRZO_ERR_OK : ok
*/
int lcrzo_printtype_init_stdin_record(lcrzo_conststring message,
				 lcrzo_printtype defaultprinttype,
				 lcrzo_printtype *pprinttype);
/* Nom : lcrzo_printprofile_init_stdin_record
   Description :
     Demande a l'utilisateur de choisir un lcrzo_printprofile
     Les choix proposes ne contiennent que des profils pouvant
     etre relus dans un record.
   Parametre(s) d'entree :
     message : message a afficher avant de demander a entrer
     defaultprintprofile : lcrzo_printprofile par defaut a utiliser
                        si l'utilisateur n'entre rien
   Parametre(s) d'entree-sortie :
   Parametre(s) de sortie :
     *pprintprofile : lcrzo_printype choisi
   Valeurs de retour normales :
     LCRZO_ERR_OK : ok
*/
int lcrzo_printprofile_init_stdin_record(lcrzo_conststring message,
				    lcrzo_printprofile defaultprintprofile,
				    lcrzo_printprofile *pprintprofile);
/*-------------------------------------------------------------*/
/* Nom : lcrzo_record_write_data
   Description :
     Sauvegarde des donnees dans un record.
   Parametre(s) d'entree :
     data : donnees a sauver
     datasize : taille de data
     printtype : lcrzo_printtype a employer
   Parametre(s) d'entree-sortie :
     *precord : lcrzo_record a employer
   Parametre(s) de sortie :
   Valeurs de retour normales :
     LCRZO_ERR_OK : ok
*/
int lcrzo_record_write_data(lcrzo_record *precord,
			    lcrzo_constdata data,
			    lcrzo_int32 datasize,
			    lcrzo_printtype printtype);
/*-------------------------------------------------------------*/
/* Nom : lcrzo_record_write_eth
   Description :
     Sauvegarde un paquet Ethernet dans un record.
   Parametre(s) d'entree :
     data : donnees a ecrire
     datasize : taille de data
     printprofile : lcrzo_printprofile a employer
   Parametre(s) d'entree-sortie :
     *precord : lcrzo_record a employer
   Parametre(s) de sortie :
   Valeurs de retour normales :
     LCRZO_ERR_OK : ok
*/
int lcrzo_record_write_eth(lcrzo_record *precord,
			   lcrzo_constdata data,
			   lcrzo_int32 datasize,
			   lcrzo_printprofile printprofile);
/* Nom : lcrzo_record_write_ip
   Description :
     Sauvegarde un paquet IP dans un record.
   Parametre(s) d'entree :
     data : donnees a ecrire
     datasize : taille de data
     printprofile : lcrzo_printprofile a employer
   Parametre(s) d'entree-sortie :
     *precord : lcrzo_record a employer
   Parametre(s) de sortie :
   Valeurs de retour normales :
     LCRZO_ERR_OK : ok
*/
int lcrzo_record_write_ip(lcrzo_record *precord,
			  lcrzo_constdata data,
			  lcrzo_int32 datasize,
			  lcrzo_printprofile printprofile);
/* Nom : lcrzo_record_write_udp
   Description :
     Sauvegarde un paquet UDP dans un record.
   Parametre(s) d'entree :
     data : donnees a ecrire
     datasize : taille de data
     printprofile : lcrzo_printprofile a employer
   Parametre(s) d'entree-sortie :
     *precord : lcrzo_record a employer
   Parametre(s) de sortie :
   Valeurs de retour normales :
     LCRZO_ERR_OK : ok
*/
int lcrzo_record_write_udp(lcrzo_record *precord,
			   lcrzo_constdata data,
			   lcrzo_int32 datasize,
			   lcrzo_printprofile printprofile);
/* Nom : lcrzo_record_write_tcp
   Description :
     Sauvegarde un paquet TCP dans un record.
   Parametre(s) d'entree :
     data : donnees a ecrire
     datasize : taille de data
     printprofile : lcrzo_printprofile a employer
   Parametre(s) d'entree-sortie :
     *precord : lcrzo_record a employer
   Parametre(s) de sortie :
   Valeurs de retour normales :
     LCRZO_ERR_OK : ok
*/
int lcrzo_record_write_tcp(lcrzo_record *precord,
			   lcrzo_constdata data,
			   lcrzo_int32 datasize,
			   lcrzo_printprofile printprofile);
/* Nom : lcrzo_record_write_icmp
   Description :
     Sauvegarde un paquet ICMP dans un record.
   Parametre(s) d'entree :
     data : donnees a ecrire
     datasize : taille de data
     printprofile : lcrzo_printprofile a employer
   Parametre(s) d'entree-sortie :
     *precord : lcrzo_record a employer
   Parametre(s) de sortie :
   Valeurs de retour normales :
     LCRZO_ERR_OK : ok
*/
int lcrzo_record_write_icmp(lcrzo_record *precord,
			    lcrzo_constdata data,
			    lcrzo_int32 datasize,
			    lcrzo_printprofile printprofile);
/* Nom : lcrzo_record_write_arp
   Description :
     Sauvegarde un paquet ARP dans un record.
   Parametre(s) d'entree :
     data : donnees a ecrire
     datasize : taille de data
     printprofile : lcrzo_printprofile a employer
   Parametre(s) d'entree-sortie :
     *precord : lcrzo_record a employer
   Parametre(s) de sortie :
   Valeurs de retour normales :
     LCRZO_ERR_OK : ok
*/
int lcrzo_record_write_arp(lcrzo_record *precord,
			   lcrzo_constdata data,
			   lcrzo_int32 datasize,
			   lcrzo_printprofile printprofile);
/*-------------------------------------------------------------*/
/* Nom : lcrzo_record_count
   Description :
     Compte le nombre d'elements dans un record
   Parametre(s) d'entree :
   Parametre(s) d'entree-sortie :
     *precord : lcrzo_record a employer
   Parametre(s) de sortie :
     *pcount : nombre d'elements
   Valeurs de retour normales :
     LCRZO_ERR_OK : ok
*/
int lcrzo_record_count(lcrzo_record *precord,
		       lcrzo_int32 *pcount);
/**********************************************
 * Note sur les positions :                   *
 * Attention : 0 n'est pas une valeur valide  *
 * Voici des valeurs de position possibles :  *
 *  +1 : premier element                      *
 *  +2 : deuxieme element                     *
 *  ...                                       *
 * De plus, on peut partir de la fin :        *
 *  -1 : dernier element                      *
 *  -2 : avant dernier element                *
 *  ...                                       *
 **********************************************/
/* Nom : lcrzo_record_valuem_pos
   Description :
     Obtient un element d'un record
   Parametre(s) d'entree :
     pos : position de l'element cherche (cf. le cadre
           ci-dessus pour connaitre les valeurs valides)
   Parametre(s) d'entree-sortie :
     *precord : lcrzo_record a employer
   Parametre(s) de sortie :
     *pdataout : pointeur qui sera alloue (la memoire
                 devra etre liberee par l'utilisateur
                 avec 'free(*pdataout)').
                 Cette memoire allouee recevra l'element
		 numero 'pos'
     *pdataoutsize : taille atteinte par *pdataout
   Valeurs de retour normales :
     LCRZO_ERR_OK : ok
*/
int lcrzo_record_valuem_pos(lcrzo_record *precord,
			    lcrzo_int32 pos,
			    lcrzo_data *pdataout,
			    lcrzo_int32 *pdataoutsize);
/* Nom : lcrzo_record_valuem_pos
   Description :
     Obtient le premier element d'un record
   Parametre(s) d'entree :
   Parametre(s) d'entree-sortie :
     *precord : lcrzo_record a employer
   Parametre(s) de sortie :
     *pdataout : pointeur qui sera alloue (la memoire
                 devra etre liberee par l'utilisateur
                 avec 'free(*pdataout)').
                 Cette memoire allouee recevra le premier element
     *pdataoutsize : taille atteinte par *pdataout
   Valeurs de retour normales :
     LCRZO_ERR_OK : ok
*/
int lcrzo_record_valuem_first(lcrzo_record *precord,
			      lcrzo_data *pdataout,
			      lcrzo_int32 *pdataoutsize);
/* Nom : lcrzo_record_valuem_pos
   Description :
     Obtient le dernier element d'un record
   Parametre(s) d'entree :
   Parametre(s) d'entree-sortie :
     *precord : lcrzo_record a employer
   Parametre(s) de sortie :
     *pdataout : pointeur qui sera alloue (la memoire
                 devra etre liberee par l'utilisateur
                 avec 'free(*pdataout)').
                 Cette memoire allouee recevra le dernier element
     *pdataoutsize : taille atteinte par *pdataout
   Valeurs de retour normales :
     LCRZO_ERR_OK : ok
*/
int lcrzo_record_valuem_last(lcrzo_record *precord,
			     lcrzo_data *pdataout,
			     lcrzo_int32 *pdataoutsize);
/* Nom : lcrzo_record_loop_range
   Description :
     Appelle une fonction pour les elements
     situes dans un intervalle donne.
   Parametre(s) d'entree :
     startpos : position de debut de la boucle (cf. le cadre
                ci-dessus pour connaitre les valeurs valides)
     endpos : position de fin de la boucle (cf. le cadre
              ci-dessus pour connaitre les valeurs valides)
     pfunc : adresse memoire de la fonction appelee pour chaque
             element de l'intervalle [startpos->endpos]. Lors de
             chaque appel, le premier/deuxieme parametre ('data',
	     'datasize') est affecte avec l'element courant, et
	     le troisieme parametre ('pinfos') est affecte
	     avec la valeur de pinfos ci-dessous.
     pinfos : parametre optionnel (peut mettre NULL) qui sera
              passe en deuxieme parametre de pfunc. Il peut
              servir a envoyer des informations a pfunc.
   Parametre(s) d'entree-sortie :
     *precord : lcrzo_record a employer
   Parametre(s) de sortie :
   Valeurs de retour normales :
     LCRZO_ERR_OK : ok
*/
int lcrzo_record_loop_range(lcrzo_record *precord,
			    lcrzo_int32 startpos,
			    lcrzo_int32 endpos,
			    int (*pfunc)(void *data,
					 lcrzo_int32 datasize,
					 void *pinfos),
			    void *pinfos);
/* Nom : lcrzo_record_loop_all
   Description :
     Appelle une fonction pour tous les elements.
   Parametre(s) d'entree :
     pfunc : adresse memoire de la fonction appelee pour chaque
             element. Lors de
             chaque appel, le premier/deuxieme parametre ('data',
	     'datasize') est affecte avec l'element courant, et
	     le troisieme parametre ('pinfos') est affecte
	     avec la valeur de pinfos ci-dessous.
     pinfos : parametre optionnel (peut mettre NULL) qui sera
              passe en deuxieme parametre de pfunc. Il peut
              servir a envoyer des informations a pfunc.
   Parametre(s) d'entree-sortie :
     *precord : lcrzo_record a employer
   Parametre(s) de sortie :
   Valeurs de retour normales :
     LCRZO_ERR_OK : ok
*/
int lcrzo_record_loop_all(lcrzo_record *precord,
			  int (*pfunc)(void *data,
				       lcrzo_int32 datasize,
				       void *pinfos),
			  void *pinfos);
/*-------------------------------------------------------------*/
/* Nom : lcrzo_record_recfile_init_pcapfile
   Description :
     Convertit un fichier pcap (genere par exemple par tcpdump)
     en un fichier lcrzo_record.
   Parametre(s) d'entree :
     pcapfile : fichier pcap d'entree
     recfile : fichier record genere
   Parametre(s) d'entree-sortie :
   Parametre(s) de sortie :
   Valeurs de retour normales :
     LCRZO_ERR_OK : ok
*/
int lcrzo_record_recfile_init_pcapfile(lcrzo_conststring pcapfile,
				       lcrzo_conststring recfile);
/* Nom : lcrzo_record_pcapfile_init_recfile
   Description :
     Convertit un fichier lcrzo_record en un fichier pcap.
   Parametre(s) d'entree :
     recfile : fichier record d'entree
     pcapfile : fichier pcap genere
   Parametre(s) d'entree-sortie :
   Parametre(s) de sortie :
   Valeurs de retour normales :
     LCRZO_ERR_OK : ok
*/
int lcrzo_record_pcapfile_init_recfile(lcrzo_conststring recfile,
				       lcrzo_conststring pcapfile);

VOIR AUSSI
lcrzo(3), lcrzo_types(3), lcrzo_data(3), lcrzo_string(3), lcrzo_time(3), lcrzo_file(3), lcrzo_address(3), lcrzo_device(3), lcrzo_list(3), lcrzo_process(3), lcrzo_ipc(3), lcrzo_header(3), lcrzo_ipopt(3), lcrzo_tcpopt(3), lcrzo_packet(3), lcrzo_icmp(3), lcrzo_print(3), lcrzo_record(3), lcrzo_conf(3), lcrzo_spoof(3), lcrzo_sniff(3), lcrzo_sock(3), lcrzo_wait(3), lcrzo_global(3), lcrzo_error(3) lcrzo_misc(3),