Modifs apd et locclient

M    loc-bts/code/ap/apd.c : L'adresse du serveur d'agrégation n'est
     plus en dur dans le code, elle doit être spécifiée sur la ligne de
     commande lors de l'appel au programme.
M    loc-bts/code/ap/ap.h : Modifications mineures dans le même sens.
M    loc-bts/code/client/locclient.c

git-svn-id: https://pif.pu-pm.univ-fcomte.fr/svn/loc@10 785a6c6c-259e-4ff1-8b91-dc31627914f0
This commit is contained in:
Matteo Cypriani 2008-02-19 10:59:22 +00:00
parent 5640fe2479
commit 55350b38cd
3 changed files with 17 additions and 11 deletions

View File

@ -21,8 +21,13 @@
#define ERR_BAD_USAGE 3 // Mauvais appel au programme
/* Arguments du programme */
#define ARGC 4
enum {ARGV_AGGREG_IP=1, ARGV_RTAP_IFACE, ARGV_WIFI_IFACE} ;
/* En-têtes des fonctions */
int capture(char *capture_iface, BOOL print_values) ;
int capture(char *capture_iface, char *aggregated_ip, BOOL print_values) ;
void read_packet(u_char *args, const struct pcap_pkthdr *header, const u_char *packet, int sockfd, struct sockaddr_in *server, BOOL print_values) ;
void get_mac_addr(char *eth, unsigned char mac_bytes[6]) ;
void print_usage(char *prog) ;

View File

@ -12,10 +12,10 @@ unsigned char mac[6] ; // Adresse MAC de l'AP
int main(int argc, char *argv[])
{
struct sigaction action ; // Structure de mise en place des gestionnaires de signaux
int ret ;
char *mac_string ;
char *mac_string ; // MAC de l'AP sous forme de chaîne
int ret ; // Code de retour du programme
if (argc != 3)
if (argc != ARGC)
{
print_usage(argv[0]) ;
return ERR_BAD_USAGE ;
@ -30,12 +30,12 @@ int main(int argc, char *argv[])
action.sa_handler = sigterm_handler ;
sigaction(SIGTERM, &action, NULL) ;
get_mac_addr(argv[2], mac) ;
get_mac_addr(argv[ARGV_WIFI_IFACE], mac) ;
mac_string = mac_bytes_to_string(mac) ;
printf("Ma mac est : %s\n", mac_string) ;
free(mac_string) ;
ret = capture(argv[1], TRUE) ;
ret = capture(argv[ARGV_RTAP_IFACE], argv[ARGV_AGGREG_IP], TRUE) ;
printf("%s : fin.\n", argv[0]) ;
return ret ;
@ -46,9 +46,9 @@ int main(int argc, char *argv[])
/* Capture des paquets en utilisant l'interface "capture_iface" pendant "capture_time" mili-secondes.
Les informations concernant les mobiles effectuant des requêtes sont conservées dans la liste "known_mobiles".
Les données capturées sont envoyées au serveur d'aggrégation à travers la socket UDP "socket".
Les données capturées sont envoyées au serveur d'aggrégation dont l'IP est "aggregated_ip" à travers la socket UDP "socket".
*/
int capture(char *capture_iface, BOOL print_values)
int capture(char *capture_iface, char *aggregated_ip, BOOL print_values)
{
pcap_t *handle ; // Descripteur de capture de paquets
char errbuf[PCAP_ERRBUF_SIZE] ;// Message d'erreur
@ -72,7 +72,7 @@ int capture(char *capture_iface, BOOL print_values)
}
/* Ouverture de la socket UDP vers le serveur d'aggrégation */
sockfd = create_udp_sending_socket("127.0.0.1", AGGREGATE_DEFAULT_PORT, &server, &client);
sockfd = create_udp_sending_socket(aggregated_ip, AGGREGATE_DEFAULT_PORT, &server, &client);
if (sockfd < 0)
{
perror("Erreur ! Impossible de créer la socket vers le serveur d'aggrégation \n");
@ -304,7 +304,8 @@ void get_mac_addr(char *eth, unsigned char mac_bytes[6])
void print_usage(char *prog)
{
printf("Usage :\n\
\t%s rtap_iface wifi_iface\n\
\t%s ip_agrégation rtap_iface wifi_iface\n\
- ip_agrégation est l'adresse IP du serveur d'agrégation.\n\
- rtap_iface est l'interface de capture radiotap.\n\
- wifi_iface est l'interface physique correspondant à rtap_iface.\n\
", prog) ;

View File

@ -27,7 +27,7 @@ void print_usage(char *prog)
printf("Usage :\n\
\t- Demande de localisation : %s [iface] ip_serveur\n\
\t- Requête de calibration : %s [iface] ip_serveur direction x y z\n\
iface est une chaîne désignant le nom de interface réseau à partir de laquelle envoyer la demande (par exemple \"eth2\"). Si elle n'est pas spécifiée, le choix de l'interface source est automatique.\n\
iface est une chaîne désignant le nom de interface réseau à partir de laquelle envoyer la demande (par exemple \"eth2\"). Si elle n'est pas spécifiée, le choix de l'interface source est automatique. Vous devez être root pour utiliser cette option.\n\
", prog, prog) ;
}