/* * This file is part of the rtap localisation project. */ #ifndef _AP_H #define _AP_H // Compilation-time options (comment-out to unactivate) #define USE_CONFIG_FILE // Use libconfuse to read a config file #define USE_PTHREAD // POSIX threads available? //#define PLATFORM_ATHEROS // Will we compile to an Atheros platform? #include "../../libowlps/owlps.h" #include #ifdef USE_CONFIG_FILE #include #endif // USE_CONFIG_FILE #ifdef USE_PTHREAD #include #endif // USE_PTHREAD // Pour la fonction get_mac_addr() : #include #include #include /* Codes d'erreurs */ #define ERR_CREATING_SOCKET 1 // Erreur lors de la création de la socket d'envoi #define ERR_OPENING_IFACE 2 // Erreur lors de l'ouverture de l'interface de capture #define ERR_BAD_USAGE 3 // Mauvais appel au programme #define ERR_PARSING_CONFIG_FILE 4 // Erreur lors de la lecture du fichier de configuration /* Arguments & configuration du programme */ #define OPTIONS "d:f:kl:p:r:w:" // Chaîne pour getopt #define DEFAULT_CONFIG_FILE "/usr/local/etc/owlps/owlps-listener.conf" /* En-têtes des fonctions */ #ifdef USE_PTHREAD void* keep_mode_monitor(char *iface) ; #endif // USE_PTHREAD int capture(char *capture_iface, char *aggregation_ip, unsigned int aggregation_port, 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) ; /* Macros permettant de jongler entre la gestion des options via la * structure offerte par libconfuse, et une structure maison si cette * dernière est désactivée. */ /* Macros utilisant libconfuse : */ #ifdef USE_CONFIG_FILE #define SET_AGGREGATION_IP(IP) (cfg_setstr(cfg, "aggregation_ip", (IP))) #define GET_AGGREGATION_IP() (cfg_getstr(cfg, "aggregation_ip")) #ifdef USE_PTHREAD #define SET_KEEP_MONITOR() (cfg_setbool(cfg, "keep_monitor", cfg_true)) #define GET_KEEP_MONITOR() (cfg_getbool(cfg, "keep_monitor")) #endif // USE_PTHREAD #define SET_AGGREGATION_PORT(PORT) (cfg_setint(cfg, "aggregation_port", (PORT))) #define GET_AGGREGATION_PORT() (cfg_getint(cfg, "aggregation_port")) #define SET_LISTENING_PORT(PORT) (cfg_setint(cfg, "listening_port", (PORT))) #define GET_LISTENING_PORT() (cfg_getint(cfg, "listening_port")) #define SET_RTAP_IFACE(IFACE) (cfg_setstr(cfg, "rtap_iface", (IFACE))) #define GET_RTAP_IFACE() (cfg_getstr(cfg, "rtap_iface")) #define SET_WIFI_IFACE(IFACE) (cfg_setstr(cfg, "wifi_iface", (IFACE))) #define GET_WIFI_IFACE() (cfg_getstr(cfg, "wifi_iface")) /* Macros utilisant la structure maison : */ #else // USE_CONFIG_FILE #define SET_AGGREGATION_IP(IP) (strncpy(options.aggregation_ip, (IP), 16)) #define GET_AGGREGATION_IP() (options.aggregation_ip) #ifdef USE_PTHREAD #define SET_KEEP_MONITOR() (options.keep_monitor = TRUE) #define GET_KEEP_MONITOR() (options.keep_monitor) #endif // USE_PTHREAD #define SET_AGGREGATION_PORT(PORT) (options.aggregation_port = (PORT)) #define GET_AGGREGATION_PORT() (options.aggregation_port) #define SET_LISTENING_PORT(PORT) (options.listening_port = (PORT)) #define GET_LISTENING_PORT() (options.listening_port) #define SET_RTAP_IFACE(IFACE) (strncpy(options.rtap_iface, (IFACE), IFNAMSIZ+1)) #define GET_RTAP_IFACE() (options.rtap_iface) #define SET_WIFI_IFACE(IFACE) (strncpy(options.wifi_iface, (IFACE), IFNAMSIZ+1)) #define GET_WIFI_IFACE() (options.wifi_iface) #endif // USE_CONFIG_FILE #endif // _AP_H