[Listener] Endianess (beginning)

Last (uncommited) changes in the SVN repo (1/2):
- Endianess in owlps-listener : use of le32toh().
         /!\ *Not* sure it works ! /!\
This commit is contained in:
Matteo Cypriani 2009-11-09 10:42:23 +01:00
parent 1fb6e39d27
commit f8ff9f6794
2 changed files with 12 additions and 5 deletions

View File

@ -24,6 +24,8 @@
#include <pthread.h>
#endif // USE_PTHREAD
#include <endian.h>
// Pour la fonction get_mac_addr() :
#include <netinet/if_ether.h>
#include <netinet/udp.h>

View File

@ -28,6 +28,7 @@ struct { // structure qui servira à stocker les options getopt
MODE_ACTIVE,
"127.0.0.1",
AGGREGATE_DEFAULT_PORT,
LOC_REQUEST_DEFAULT_PORT,
#ifdef USE_PTHREAD
FALSE,
#endif // USE_PTHREAD
@ -442,11 +443,15 @@ void read_packet(u_char *args, const struct pcap_pkthdr *header, const u_char *p
/* Traitement de l'en-tête Radiotap */
// TODO : traiter le boutisme avec ntohs
memcpy(&rtap_presentflags, &data[RTAP_P_PRESENTFLAGS], RTAP_L_PRESENTFLAGS); // Récupère les flags de l'en-tête rtap
#ifdef PLATFORM_ATHEROS
rtap_presentflags = ((rtap_presentflags & 0xff000000) >> 24) + ((rtap_presentflags & 0xff0000) >> 8) + ((rtap_presentflags & 0xff00) << 8) + ((rtap_presentflags & 0xff) << 24) ;
#endif // PLATFORM_ATHEROS
memcpy(&rtap_presentflags, &data[RTAP_P_PRESENTFLAGS], RTAP_L_PRESENTFLAGS) ; // Récupère les flags de l'en-tête rtap
// Note : on récupère les flags en big-endian (net-endianess), mais on
// travaille dessus comme si c'était du little-endian. Cela nous permet
// de déclarer un tableau de seulement 15 bits (au lieu de 32) car ce
// sont ces bits (de poids faible) qui nous intéressent. C'est un peu de
// la triche :-)
// Du coup, sur les architectures big-endian, il faut retourner les bits
// en faisant comme si on avait récupéré les flags en little-endian :
rtap_presentflags = le32toh(rtap_presentflags) ;
for (i = 0 ; i < 15 ; i++) // Initialisation de la structure des champs présents
check[i] = FALSE ;