owlps/infrastructure-centred/owlps-listener/owlps-listener.h

94 lines
3.5 KiB
C
Raw Normal View History

/*
* 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 <pcap.h>
#ifdef USE_CONFIG_FILE
#include <confuse.h>
#endif // USE_CONFIG_FILE
#ifdef USE_PTHREAD
#include <pthread.h>
#endif // USE_PTHREAD
// Pour la fonction get_mac_addr() :
#include <netinet/if_ether.h>
#include <netinet/tcp.h>
#include <netinet/ip.h>
/* 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