lcrzo_packet(3)

NAME
lcrzo_packet - bibliotheque lcrzo : creation et decodage de paquets

CONTENU
/*  Bibliotheque reseau de Laurent Constantin (lcrzo)
                 Module lcrzo_packet
  Les fonctions presentes dans ce module permettent de creer ou
  d'analyser des paquets
*/
/*-------------------------------------------------------------*/
/************************************************************
 * Note sur le calcul des champs d'entete :                 *
 * Certains champs des entetes (hdrlip.totlen, hdrludp.len, *
 * etc.) peuvent etre recalcules par les fonctions          *
 * lcrzo_packet_init_xxx.                                   *
 *                                                          *
 * La fonction lcrzo_global_set_hdr_computefields permet de *
 * dire si lcrzo doit recalculer les champs :               *
 *  - lcrzo_global_set_hdr_computefields(LCRZO_FALSE) :     *
 *    ne recalcule pas, c'est a dire emploie les valeurs    *
 *    passees par l'utilisateur                             *
 *  - lcrzo_global_set_hdr_computefields(LCRZO_TRUE) :      *
 *    recalcule (on peut affiner les champs calcules avec   *
 *    lcrzo_global_set_hdr_cf_xxx)                          *
 *                                                          *
 * Lorsque l'on recalcule, les champs ne sont recalcules    *
 * que si ils ont une valeur differente de la valeur par    *
 * defaut. Les champs concernes par ce calcul sont (suivis  *
 * de leur valeur par defaut) :                             *
 *     hdrleth.type    LCRZO_VALDEF_ETHTYPE                 *
 *     hdrlip.totlen   LCRZO_VALDEF_IPTOTLEN                *
 *     hdrlip.ihl      LCRZO_VALDEF_IPIHL                   *
 *     hdrlip.check    LCRZO_VALDEF_IPCHECK                 *
 *     hdrlip.protocol LCRZO_VALDEF_IPPROTOCOL              *
 *     hdrludp.len     LCRZO_VALDEF_UDPLEN                  *
 *     hdrludp.check   LCRZO_VALDEF_UDPCHECK                *
 *     hdrltcp.doff    LCRZO_VALDEF_TCPDOFF                 *
 *     hdrltcp.check   LCRZO_VALDEF_TCPCHECK                *
 *     hdrlicmp.check  LCRZO_VALDEF_ICMPCHECK               *
 * Les autres champs des entetes ne sont pas du tout        *
 * modifies par la bibliotheque : la valeur entree par      *
 * l'utilisateur est mise dans le packet.                   *
 ************************************************************/
/* Nom : lcrzo_packet_initm_ipoptdata
   Description :
     Initialise un paquet avec {entete IP, options IP, donnees IP}
   Parametre(s) d'entree :
     hdrlip : entete IP
     ipopt : options IP
     ipoptsize : taille des options IP
     data : donnees IP
     datasize : taille des donnees IP
   Parametre(s) d'entree-sortie :
   Parametre(s) de sortie :
     dataout : tableau de sortie
     *pdataoutsize : taille atteinte par dataout
   Valeurs de retour normales :
     LCRZO_ERR_OK : ok
*/
int lcrzo_packet_initm_ipoptdata(lcrzo_hdrlip hdrlip,
				 lcrzo_constipopt ipopt,
				 lcrzo_uint8 ipoptsize,
				 lcrzo_constdata data,
				 lcrzo_uint16 datasize,
				 lcrzo_data *pdataout,
				 lcrzo_int32 *pdataoutsize);
/* Nom : lcrzo_packet_initm_ipoptudpdata
   Description :
     Initialise un paquet avec {entete IP, options IP,
     entete UDP, donnees UDP}
   Parametre(s) d'entree :
     hdrlip : entete IP
     ipopt : options IP
     ipoptsize : taille des options IP
     hdrludp : entete UDP
     data : donnees UDP
     datasize : taille des donnees UDP
   Parametre(s) d'entree-sortie :
   Parametre(s) de sortie :
     dataout : tableau de sortie
     *pdataoutsize : taille atteinte par dataout
   Valeurs de retour normales :
     LCRZO_ERR_OK : ok
*/
int lcrzo_packet_initm_ipoptudpdata(lcrzo_hdrlip hdrlip,
				    lcrzo_constipopt ipopt,
				    lcrzo_uint8 ipoptsize,
				    lcrzo_hdrludp hdrludp,
				    lcrzo_constdata data,
				    lcrzo_uint16 datasize,
				    lcrzo_data *pdataout,
				    lcrzo_int32 *pdataoutsize);
/* Nom : lcrzo_packet_initm_ipopttcpoptdata
   Description :
     Initialise un paquet avec {entete IP, options IP,
     entete TCP, options TCP, donnees TCP}
   Parametre(s) d'entree :
     hdrlip : entete IP
     ipopt : options IP
     ipoptsize : taille des options IP
     hdrltcp : entete TCP
     tcpopt : options TCP
     tcpoptsize : taille des options TCP
     data : donnees TCP
     datasize : taille des donnees TCP
   Parametre(s) d'entree-sortie :
   Parametre(s) de sortie :
     dataout : tableau de sortie
     *pdataoutsize : taille atteinte par dataout
   Valeurs de retour normales :
     LCRZO_ERR_OK : ok
*/
int lcrzo_packet_initm_ipopttcpoptdata(lcrzo_hdrlip hdrlip,
				       lcrzo_constipopt ipopt,
				       lcrzo_uint8 ipoptsize,
				       lcrzo_hdrltcp hdrltcp,
				       lcrzo_consttcpopt tcpopt,
				       lcrzo_uint8 tcpoptsize,
				       lcrzo_constdata data,
				       lcrzo_uint16 datasize,
				       lcrzo_data *pdataout,
				       lcrzo_int32 *pdataoutsize);
/* Nom : lcrzo_packet_initm_icmpdata
   Description :
     Initialise un paquet avec {entete ICMP, donnees ICMP}
   Parametre(s) d'entree :
     hdrlicmp : entete ICMP
     icmpdata : donnees ICMP
     icmpdatasize : taille des donnees ICMP
   Parametre(s) d'entree-sortie :
   Parametre(s) de sortie :
     dataout : tableau de sortie
     *pdataoutsize : taille atteinte par dataout
   Valeurs de retour normales :
     LCRZO_ERR_OK : ok
*/
int lcrzo_packet_initm_icmpdata(lcrzo_hdrlicmp hdrlicmp,
				lcrzo_constdata icmpdata,
				lcrzo_uint16 icmpdatasize,
				lcrzo_data *pdataout,
				lcrzo_int32 *pdataoutsize);
/* Nom : lcrzo_packet_initm_ipopticmpdata
   Description :
     Initialise un paquet avec {entete IP, options IP,
     entete ICMP, donnees ICMP}
   Parametre(s) d'entree :
     hdrlip : entete IP
     ipopt : options IP
     ipoptsize : taille des options IP
     hdrlicmp : entete ICMP
     data : donnees ICMP
     datasize : taille des donnees ICMP
   Parametre(s) d'entree-sortie :
   Parametre(s) de sortie :
     dataout : tableau de sortie
     *pdataoutsize : taille atteinte par dataout
   Valeurs de retour normales :
     LCRZO_ERR_OK : ok
*/
int lcrzo_packet_initm_ipopticmpdata(lcrzo_hdrlip hdrlip,
				     lcrzo_constipopt ipopt,
				     lcrzo_uint8 ipoptsize,
				     lcrzo_hdrlicmp hdrlicmp,
				     lcrzo_constdata data,
				     lcrzo_uint16 datasize,
				     lcrzo_data *pdataout,
				     lcrzo_int32 *pdataoutsize);
/* Nom : lcrzo_packet_initm_ethdata
   Description :
     Initialise un paquet avec {entete Ethernet, donnees Ethernet}
   Parametre(s) d'entree :
     hdrleth : entete Ethernet
     data : donnees Ethernet
     datasize : taille des donnees Ethernet
   Parametre(s) d'entree-sortie :
   Parametre(s) de sortie :
     dataout : tableau de sortie
     *pdataoutsize : taille atteinte par dataout
   Valeurs de retour normales :
     LCRZO_ERR_OK : ok
*/
int lcrzo_packet_initm_ethdata(lcrzo_hdrleth hdrleth,
			       lcrzo_constdata data,
			       lcrzo_uint16 datasize,
			       lcrzo_data *pdataout,
			       lcrzo_int32 *pdataoutsize);
/* Nom : lcrzo_packet_initm_ethipoptdata
   Description :
     Initialise un paquet avec {entete Ethernet, entete IP,
     options IP, donnees IP }
   Parametre(s) d'entree :
     hdrleth : entete Ethernet
     hdrlip : entete IP
     ipopt : options IP
     ipoptsize : taille des options IP
     data : donnees IP
     datasize : taille des donnees IP
   Parametre(s) d'entree-sortie :
   Parametre(s) de sortie :
     dataout : tableau de sortie
     *pdataoutsize : taille atteinte par dataout
   Valeurs de retour normales :
     LCRZO_ERR_OK : ok
*/
int lcrzo_packet_initm_ethipoptdata(lcrzo_hdrleth hdrleth,
				    lcrzo_hdrlip hdrlip,
				    lcrzo_constipopt ipopt,
				    lcrzo_uint8 ipoptsize,
				    lcrzo_constdata data,
				    lcrzo_uint16 datasize,
				    lcrzo_data *pdataout,
				    lcrzo_int32 *pdataoutsize);
/* Nom : lcrzo_packet_initm_ethipoptudpdata
   Description :
     Initialise un paquet avec {entete Ethernet, entete IP,
     options IP, entete UDP, donnees UDP}
   Parametre(s) d'entree :
     hdrleth : entete Ethernet
     hdrlip : entete IP
     ipopt : options IP
     ipoptsize : taille des options IP
     hdrludp : entete UDP
     data : donnees UDP
     datasize : taille des donnees UDP
   Parametre(s) d'entree-sortie :
   Parametre(s) de sortie :
     dataout : tableau de sortie
     *pdataoutsize : taille atteinte par dataout
   Valeurs de retour normales :
     LCRZO_ERR_OK : ok
*/
int lcrzo_packet_initm_ethipoptudpdata(lcrzo_hdrleth hdrleth,
				       lcrzo_hdrlip hdrlip,
				       lcrzo_constipopt ipopt,
				       lcrzo_uint8 ipoptsize,
				       lcrzo_hdrludp hdrludp,
				       lcrzo_constdata data,
				       lcrzo_uint16 datasize,
				       lcrzo_data *pdataout,
				       lcrzo_int32 *pdataoutsize);
/* Nom : lcrzo_packet_initm_ethipopttcpoptdata
   Description :
     Initialise un paquet avec {entete Ethernet, entete IP,
     options IP, entete TCP, options TCP, donnees TCP}
   Parametre(s) d'entree :
     hdrleth : entete Ethernet
     hdrlip : entete IP
     ipopt : options IP
     ipoptsize : taille des options IP
     hdrltcp : entete TCP
     tcpopt : options TCP
     tcpoptsize : taille des options TCP
     data : donnees TCP
     datasize : taille des donnees TCP
   Parametre(s) d'entree-sortie :
   Parametre(s) de sortie :
     dataout : tableau de sortie
     *pdataoutsize : taille atteinte par dataout
   Valeurs de retour normales :
     LCRZO_ERR_OK : ok
*/
int lcrzo_packet_initm_ethipopttcpoptdata(lcrzo_hdrleth hdrleth,
					  lcrzo_hdrlip hdrlip,
					  lcrzo_constipopt ipopt,
					  lcrzo_uint8 ipoptsize,
					  lcrzo_hdrltcp hdrltcp,
					  lcrzo_consttcpopt tcpopt,
					  lcrzo_uint8 tcpoptsize,
					  lcrzo_constdata data,
					  lcrzo_uint16 datasize,
					  lcrzo_data *pdataout,
					  lcrzo_int32 *pdataoutsize);
/* Nom : lcrzo_packet_initm_ethipopticmpdata
   Description :
     Initialise un paquet avec {entete Ethernet, entete IP,
     options IP, entete ICMP, donnees ICMP}
   Parametre(s) d'entree :
     hdrleth : entete Ethernet
     hdrlip : entete IP
     ipopt : options IP
     ipoptsize : taille des options IP
     hdrlicmp : entete ICMP
     data : donnees ICMP
     datasize : taille des donnees ICMP
   Parametre(s) d'entree-sortie :
   Parametre(s) de sortie :
     dataout : tableau de sortie
     *pdataoutsize : taille atteinte par dataout
   Valeurs de retour normales :
     LCRZO_ERR_OK : ok
*/
int lcrzo_packet_initm_ethipopticmpdata(lcrzo_hdrleth hdrleth,
					lcrzo_hdrlip hdrlip,
					lcrzo_constipopt ipopt,
					lcrzo_uint8 ipoptsize,
					lcrzo_hdrlicmp hdrlicmp,
					lcrzo_constdata data,
					lcrzo_uint16 datasize,
					lcrzo_data *pdataout,
					lcrzo_int32 *pdataoutsize);
/* Nom : lcrzo_packet_initm_etharp
   Description :
     Initialise un paquet avec {entete Ethernet, entete ARP}
   Parametre(s) d'entree :
     hdrleth : entete Ethernet
     hdrlarp : entete ARP
   Parametre(s) d'entree-sortie :
   Parametre(s) de sortie :
     dataout : tableau de sortie
     *pdataoutsize : taille atteinte par dataout
   Valeurs de retour normales :
     LCRZO_ERR_OK : ok
*/
int lcrzo_packet_initm_etharp(lcrzo_hdrleth hdrleth,
			      lcrzo_hdrlarp hdrlarp,
			      lcrzo_data *pdataout,
			      lcrzo_int32 *pdataoutsize);
/*-------------------------------------------------------------*/
/* Nom : lcrzo_packet_decodem_ipoptdata
   Description :
     Verifie si un packet contient {entete IP,
     options IP, donnees IP }
   Parametre(s) d'entree :
     packet : paquet a verifier
     packetsize : taille de packet
   Parametre(s) d'entree-sortie :
   Parametre(s) de sortie :
     *phdrlip : entete IP
     ipopt : options IP
     *pipoptsize : taille de ipopt
     data : donnees IP
     *pdatasize : taille atteinte par data
   Valeurs de retour normales :
     LCRZO_ERR_OK : paquet decode
     LCRZO_ERR_OKNOTDECODED : paquet non decode
*/
int lcrzo_packet_decodem_ipoptdata(lcrzo_constdata packet,
				   lcrzo_int32 packetsize,
				   lcrzo_hdrlip *phdrlip,
				   lcrzo_ipopt ipopt,
				   lcrzo_uint8 *pipoptsize,
				   lcrzo_data *pdata,
				   lcrzo_uint16 *pdatasize);
/* Nom : lcrzo_packet_decodem_udpdata
   Description :
     Verifie si un packet contient {entete UDP, donnees UDP}.
   Parametre(s) d'entree :
     packet : paquet a verifier
     packetsize : taille de packet
   Parametre(s) d'entree-sortie :
   Parametre(s) de sortie :
     *phdrludp : entete UDP
     data : donnees UDP
     *pdatasize : taille atteinte par data
   Valeurs de retour normales :
     LCRZO_ERR_OK : paquet decode
     LCRZO_ERR_OKNOTDECODED : paquet non decode
*/
int lcrzo_packet_decodem_udpdata(lcrzo_constdata packet,
				 lcrzo_int32 packetsize,
				 lcrzo_hdrludp *phdrludp,
				 lcrzo_data *pdata,
				 lcrzo_uint16 *pdatasize);
/* Nom : lcrzo_packet_decodem_tcpoptdata
   Description :
     Verifie si un packet contient {entete TCP,
     options TCP, donnees TCP}.
   Parametre(s) d'entree :
     packet : paquet a verifier
     packetsize : taille de packet
   Parametre(s) d'entree-sortie :
   Parametre(s) de sortie :
     *phdrltcp : entete TCP
     tcpopt : options TCP
     *ptcpoptsize : taille de tcpopt
     data : donnees TCP
     *pdatasize : taille atteinte par data
   Valeurs de retour normales :
     LCRZO_ERR_OK : paquet decode
     LCRZO_ERR_OKNOTDECODED : paquet non decode
*/
int lcrzo_packet_decodem_tcpoptdata(lcrzo_constdata packet,
				    lcrzo_int32 packetsize,
				    lcrzo_hdrltcp *phdrltcp,
				    lcrzo_tcpopt tcpopt,
				    lcrzo_uint8 *ptcpoptsize,
				    lcrzo_data *pdata,
				    lcrzo_uint16 *pdatasize);
/* Nom : lcrzo_packet_decodem_icmpdata
   Description :
     Verifie si un packet contient {entete ICMP, donnees ICMP}.
   Parametre(s) d'entree :
     packet : paquet a verifier
     packetsize : taille de packet
   Parametre(s) d'entree-sortie :
   Parametre(s) de sortie :
     *phdrlicmp : entete ICMP
     data : donnees ICMP
     *pdatasize : taille atteinte par data
   Valeurs de retour normales :
     LCRZO_ERR_OK : paquet decode
     LCRZO_ERR_OKNOTDECODED : paquet non decode
*/
int lcrzo_packet_decodem_icmpdata(lcrzo_constdata packet,
				  lcrzo_int32 packetsize,
				  lcrzo_hdrlicmp *phdrlicmp,
				  lcrzo_data *pdata,
				  lcrzo_uint16 *pdatasize);
/* Nom : lcrzo_packet_decodem_ethdata
   Description :
     Verifie si un packet contient {entete Ethernet, donnees Ethernet}.
   Parametre(s) d'entree :
     packet : paquet a verifier
     packetsize : taille de packet
   Parametre(s) d'entree-sortie :
   Parametre(s) de sortie :
     *phdrleth : entete Ethernet
     data : donnees Ethernet
     *pdatasize : taille atteinte par data
   Valeurs de retour normales :
     LCRZO_ERR_OK : paquet decode
     LCRZO_ERR_OKNOTDECODED : paquet non decode
*/
int lcrzo_packet_decodem_ethdata(lcrzo_constdata packet,
				 lcrzo_int32 packetsize,
				 lcrzo_hdrleth *phdrleth,
				 lcrzo_data *pdata,
				 lcrzo_uint16 *pdatasize);
/* Nom : lcrzo_packet_decode_arp
   Description :
     Verifie si un packet contient {entete arp/rarp}.
   Parametre(s) d'entree :
     packet : paquet a verifier
     packetsize : taille de packet
   Parametre(s) d'entree-sortie :
   Parametre(s) de sortie :
     *phdrlarp : entete arp/rarp
   Valeurs de retour normales :
     LCRZO_ERR_OK : paquet decode
     LCRZO_ERR_OKNOTDECODED : paquet non decode
*/
int lcrzo_packet_decode_arp(lcrzo_constdata packet,
			    lcrzo_int32 packetsize,
			    lcrzo_hdrlarp *phdrlarp);

/* Nom : lcrzo_packet_decodem_ipoptudpdata
   Description :
     Verifie si un packet contient {entete IP,
     options IP, entete UDP, donnees UDP}.
   Parametre(s) d'entree :
     packet : paquet a verifier
     packetsize : taille de packet
   Parametre(s) d'entree-sortie :
   Parametre(s) de sortie :
     *phdrlip : entete IP
     ipopt : options IP
     *pipoptsize : taille de ipopt
     *phdrludp : entete UDP
     data : donnees UDP
     *pdatasize : taille atteinte par data
   Valeurs de retour normales :
     LCRZO_ERR_OK : paquet decode
     LCRZO_ERR_OKNOTDECODED : paquet non decode
*/
int lcrzo_packet_decodem_ipoptudpdata(lcrzo_constdata packet,
				      lcrzo_int32 packetsize,
				      lcrzo_hdrlip *phdrlip,
				      lcrzo_ipopt ipopt,
				      lcrzo_uint8 *pipoptsize,
				      lcrzo_hdrludp *phdrludp,
				      lcrzo_data *pdata,
				      lcrzo_uint16 *pdatasize);
/* Nom : lcrzo_packet_decodem_ipopttcpoptdata
   Description :
     Verifie si un packet contient {entete IP,
     options IP, entete TCP, options TCP, donnees TCP}.
   Parametre(s) d'entree :
     packet : paquet a verifier
     packetsize : taille de packet
   Parametre(s) d'entree-sortie :
   Parametre(s) de sortie :
     *phdrlip : entete IP
     ipopt : options IP
     *pipoptsize : taille de ipopt
     *phdrltcp : entete TCP
     tcpopt : options TCP
     *ptcpoptsize : taille de tcpopt
     data : donnees TCP
     *pdatasize : taille atteinte par data
   Valeurs de retour normales :
     LCRZO_ERR_OK : paquet decode
     LCRZO_ERR_OKNOTDECODED : paquet non decode
*/
int lcrzo_packet_decodem_ipopttcpoptdata(lcrzo_constdata packet,
					 lcrzo_int32 packetsize,
					 lcrzo_hdrlip *phdrlip,
					 lcrzo_ipopt ipopt,
					 lcrzo_uint8 *pipoptsize,
					 lcrzo_hdrltcp *phdrltcp,
					 lcrzo_tcpopt tcpopt,
					 lcrzo_uint8 *ptcpoptsize,
					 lcrzo_data *pdata,
					 lcrzo_uint16 *pdatasize);
/* Nom : lcrzo_packet_decodem_ipopticmpdata
   Description :
     Verifie si un packet contient {entete IP,
     options IP, entete ICMP, donnees ICMP}.
   Parametre(s) d'entree :
     packet : paquet a verifier
     packetsize : taille de packet
   Parametre(s) d'entree-sortie :
   Parametre(s) de sortie :
     *phdrlip : entete IP
     ipopt : options IP
     *pipoptsize : taille de ipopt
     *phdrlicmp : entete ICMP
     data : donnees ICMP
     *pdatasize : taille atteinte par data
   Valeurs de retour normales :
     LCRZO_ERR_OK : paquet decode
     LCRZO_ERR_OKNOTDECODED : paquet non decode
*/
int lcrzo_packet_decodem_ipopticmpdata(lcrzo_constdata packet,
				       lcrzo_int32 packetsize,
				       lcrzo_hdrlip *phdrlip,
				       lcrzo_ipopt ipopt,
				       lcrzo_uint8 *pipoptsize,
				       lcrzo_hdrlicmp *phdrlicmp,
				       lcrzo_data *pdata,
				       lcrzo_uint16 *pdatasize);
/* Nom : lcrzo_packet_decodem_ethipoptdata
   Description :
     Verifie si un packet contient {entete Ethernet, entete IP,
     options IP, donnees IP}.
   Parametre(s) d'entree :
     packet : paquet a verifier
     packetsize : taille de packet
   Parametre(s) d'entree-sortie :
   Parametre(s) de sortie :
     *phdrleth : entete Ethernet
     *phdrlip : entete IP
     ipopt : options IP
     *pipoptsize : taille de ipopt
     data : donnees IP
     *pdatasize : taille atteinte par data
   Valeurs de retour normales :
     LCRZO_ERR_OK : paquet decode
     LCRZO_ERR_OKNOTDECODED : paquet non decode
*/
int lcrzo_packet_decodem_ethipoptdata(lcrzo_constdata packet,
				      lcrzo_int32 packetsize,
				      lcrzo_hdrleth *phdrleth,
				      lcrzo_hdrlip *phdrlip,
				      lcrzo_ipopt ipopt,
				      lcrzo_uint8 *pipoptsize,
				      lcrzo_data *pdata,
				      lcrzo_uint16 *pdatasize);
/* Nom : lcrzo_packet_decodem_ethipoptudpdata
   Description :
     Verifie si un packet contient {entete Ethernet, entete IP,
     options IP, entete UDP, donnees UDP}.
   Parametre(s) d'entree :
     packet : paquet a verifier
     packetsize : taille de packet
   Parametre(s) d'entree-sortie :
   Parametre(s) de sortie :
     *phdrleth : entete Ethernet
     *phdrlip : entete IP
     ipopt : options IP
     *pipoptsize : taille de ipopt
     *phdrludp : entete UDP
     data : donnees UDP
     *pdatasize : taille atteinte par data
   Valeurs de retour normales :
     LCRZO_ERR_OK : paquet decode
     LCRZO_ERR_OKNOTDECODED : paquet non decode
*/
int lcrzo_packet_decodem_ethipoptudpdata(lcrzo_constdata packet,
					 lcrzo_int32 packetsize,
					 lcrzo_hdrleth *phdrleth,
					 lcrzo_hdrlip *phdrlip,
					 lcrzo_ipopt ipopt,
					 lcrzo_uint8 *pipoptsize,
					 lcrzo_hdrludp *phdrludp,
					 lcrzo_data *pdata,
					 lcrzo_uint16 *pdatasize);
/* Nom : lcrzo_packet_decodem_ethipopttcpoptdata
   Description :
     Verifie si un packet contient {entete Ethernet, entete IP,
     options IP, entete TCP, options TCP, donnees TCP}.
   Parametre(s) d'entree :
     packet : paquet a verifier
     packetsize : taille de packet
     datamaxsize : taille maximale qui peut etre stockee
                   dans data
   Parametre(s) d'entree-sortie :
   Parametre(s) de sortie :
     *phdrleth : entete Ethernet
     *phdrlip : entete IP
     ipopt : options IP
     *pipoptsize : taille de ipopt
     *phdrltcp : entete TCP
     tcpopt : options TCP
     *ptcpoptsize : taille de tcpopt
     data : donnees TCP
     *pdatasize : taille atteinte par data
   Valeurs de retour normales :
     LCRZO_ERR_OK : paquet decode
     LCRZO_ERR_OKNOTDECODED : paquet non decode
*/
int lcrzo_packet_decodem_ethipopttcpoptdata(lcrzo_constdata packet,
					    lcrzo_int32 packetsize,
					    lcrzo_hdrleth *phdrleth,
					    lcrzo_hdrlip *phdrlip,
					    lcrzo_ipopt ipopt,
					    lcrzo_uint8 *pipoptsize,
					    lcrzo_hdrltcp *phdrltcp,
					    lcrzo_tcpopt tcpopt,
					    lcrzo_uint8 *ptcpoptsize,
					    lcrzo_data *pdata,
					    lcrzo_uint16 *pdatasize);

/* Nom : lcrzo_packet_decodem_ethipopticmpdata
   Description :
     Verifie si un packet contient {entete Ethernet, entete IP,
     options IP, entete ICMP, donnees ICMP}.
   Parametre(s) d'entree :
     packet : paquet a verifier
     packetsize : taille de packet
   Parametre(s) d'entree-sortie :
   Parametre(s) de sortie :
     *phdrleth : entete Ethernet
     *phdrlip : entete IP
     ipopt : options IP
     *pipoptsize : taille de ipopt
     *phdrlicmp : entete ICMP
     data : donnees ICMP
     *pdatasize : taille atteinte par data
   Valeurs de retour normales :
     LCRZO_ERR_OK : paquet decode
     LCRZO_ERR_OKNOTDECODED : paquet non decode
*/
int lcrzo_packet_decodem_ethipopticmpdata(lcrzo_constdata packet,
					  lcrzo_int32 packetsize,
					  lcrzo_hdrleth *phdrleth,
					  lcrzo_hdrlip *phdrlip,
					  lcrzo_ipopt ipopt,
					  lcrzo_uint8 *pipoptsize,
					  lcrzo_hdrlicmp *phdrlicmp,
					  lcrzo_data *pdata,
					  lcrzo_uint16 *pdatasize);
/* Nom : lcrzo_packet_decode_etharp
   Description :
     Verifie si un packet contient {entete Ethernet, ARP header}.
   Parametre(s) d'entree :
     packet : paquet a verifier
     packetsize : taille de packet
   Parametre(s) d'entree-sortie :
   Parametre(s) de sortie :
     *phdrleth : entete Ethernet
     *phdrlarp : entete arp/rarp
   Valeurs de retour normales :
     LCRZO_ERR_OK : paquet decode
     LCRZO_ERR_OKNOTDECODED : paquet non decode
*/
int lcrzo_packet_decode_etharp(lcrzo_constdata packet,
			       lcrzo_int32 packetsize,
			       lcrzo_hdrleth *phdrleth,
			       lcrzo_hdrlarp *phdrlarp);

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