Use ETHER_ADDR_LEN instead of 6
This commit is contained in:
parent
d867f97eda
commit
e8aa0838f4
|
@ -229,7 +229,7 @@ owl_timestamp owl_ntoh_timestamp(owl_timestamp date)
|
||||||
owl_bool owl_mac_equals(uint8_t *mac1, uint8_t *mac2)
|
owl_bool owl_mac_equals(uint8_t *mac1, uint8_t *mac2)
|
||||||
{
|
{
|
||||||
int i ;
|
int i ;
|
||||||
for(i=0 ; i < 6 ; i++)
|
for (i = 0 ; i < ETHER_ADDR_LEN ; ++i)
|
||||||
if(mac1[i] != mac2[i])
|
if(mac1[i] != mac2[i])
|
||||||
return FALSE ;
|
return FALSE ;
|
||||||
return TRUE ;
|
return TRUE ;
|
||||||
|
|
|
@ -78,8 +78,8 @@ typedef struct _owl_timestamp
|
||||||
/* Message sent by the listener to the aggregator */
|
/* Message sent by the listener to the aggregator */
|
||||||
typedef struct _owl_captured_request
|
typedef struct _owl_captured_request
|
||||||
{
|
{
|
||||||
uint8_t ap_mac_addr_bytes[6] ; // MAC of the listener
|
uint8_t ap_mac_addr_bytes[ETHER_ADDR_LEN] ; // MAC of the listener
|
||||||
uint8_t mobile_mac_addr_bytes[6] ; // MAC of the mobile involved
|
uint8_t mobile_mac_addr_bytes[ETHER_ADDR_LEN] ; // MAC of the mobile
|
||||||
uint8_t mobile_ip_addr_bytes[4] ; // IP of the mobile
|
uint8_t mobile_ip_addr_bytes[4] ; // IP of the mobile
|
||||||
owl_timestamp request_time ; // Request ID (timestamp on the mobile)
|
owl_timestamp request_time ; // Request ID (timestamp on the mobile)
|
||||||
owl_timestamp start_time ; // Timestamp of arrival on the listener
|
owl_timestamp start_time ; // Timestamp of arrival on the listener
|
||||||
|
@ -96,7 +96,7 @@ typedef struct _owl_captured_request
|
||||||
* the main data of a request */
|
* the main data of a request */
|
||||||
typedef struct _owl_request
|
typedef struct _owl_request
|
||||||
{
|
{
|
||||||
uint8_t mobile_mac_addr_bytes[6] ; // MAC of the mobile
|
uint8_t mobile_mac_addr_bytes[ETHER_ADDR_LEN] ; // MAC of the mobile
|
||||||
owl_timestamp request_time ; // Request ID (timestamp on the mobile)
|
owl_timestamp request_time ; // Request ID (timestamp on the mobile)
|
||||||
uint16_t nb_info ; // Number of (listener MAC;signal strength) couples
|
uint16_t nb_info ; // Number of (listener MAC;signal strength) couples
|
||||||
} owl_request ;
|
} owl_request ;
|
||||||
|
@ -107,7 +107,7 @@ typedef struct _owl_request
|
||||||
* signal strength */
|
* signal strength */
|
||||||
typedef struct _owl_request_info
|
typedef struct _owl_request_info
|
||||||
{
|
{
|
||||||
uint8_t ap_mac_addr_bytes[6] ; // MAC of the listener
|
uint8_t ap_mac_addr_bytes[ETHER_ADDR_LEN] ; // MAC of the listener
|
||||||
uint8_t antenna_signal_dbm ; // Signal strength measured by the listener
|
uint8_t antenna_signal_dbm ; // Signal strength measured by the listener
|
||||||
} owl_request_info ;
|
} owl_request_info ;
|
||||||
|
|
||||||
|
@ -115,7 +115,7 @@ typedef struct _owl_request_info
|
||||||
/* Hello message sent by the listener to the aggregator */
|
/* Hello message sent by the listener to the aggregator */
|
||||||
typedef struct _owl_autocalibration_hello
|
typedef struct _owl_autocalibration_hello
|
||||||
{
|
{
|
||||||
uint8_t ap_mac_addr_bytes[6] ;
|
uint8_t ap_mac_addr_bytes[ETHER_ADDR_LEN] ;
|
||||||
} owl_autocalibration_hello ;
|
} owl_autocalibration_hello ;
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -39,7 +39,7 @@
|
||||||
typedef struct _request_info_list
|
typedef struct _request_info_list
|
||||||
{
|
{
|
||||||
// MAC address of the data sender (in bytes):
|
// MAC address of the data sender (in bytes):
|
||||||
uint8_t ap_mac_addr_bytes[6] ;
|
uint8_t ap_mac_addr_bytes[ETHER_ADDR_LEN] ;
|
||||||
// Signal strength received by the AP from the mobile:
|
// Signal strength received by the AP from the mobile:
|
||||||
uint8_t antenna_signal_dbm ;
|
uint8_t antenna_signal_dbm ;
|
||||||
struct _request_info_list *next ;
|
struct _request_info_list *next ;
|
||||||
|
@ -50,7 +50,8 @@ typedef struct _request_info_list
|
||||||
typedef struct _request_list
|
typedef struct _request_list
|
||||||
{
|
{
|
||||||
/* Request identifier */
|
/* Request identifier */
|
||||||
uint8_t mobile_mac_addr_bytes[6] ; // Mobile MAC address (in bytes)
|
// Mobile MAC address (in bytes):
|
||||||
|
uint8_t mobile_mac_addr_bytes[ETHER_ADDR_LEN] ;
|
||||||
owl_timestamp request_time ; // Request time on the mobile
|
owl_timestamp request_time ; // Request time on the mobile
|
||||||
|
|
||||||
/* Calibration data */
|
/* Calibration data */
|
||||||
|
@ -71,7 +72,7 @@ typedef struct _request_list
|
||||||
/* Linked list of the known APs */
|
/* Linked list of the known APs */
|
||||||
typedef struct _ap_list
|
typedef struct _ap_list
|
||||||
{
|
{
|
||||||
uint8_t mac_addr_bytes[6] ;
|
uint8_t mac_addr_bytes[ETHER_ADDR_LEN] ;
|
||||||
char ip_addr[INET_ADDRSTRLEN] ;
|
char ip_addr[INET_ADDRSTRLEN] ;
|
||||||
|
|
||||||
owl_timestamp last_seen ;
|
owl_timestamp last_seen ;
|
||||||
|
@ -98,9 +99,10 @@ void print_request_info(request_info_list *info) ;
|
||||||
#endif // DEBUG
|
#endif // DEBUG
|
||||||
|
|
||||||
void* listen_for_aps(void *NULL_value) ;
|
void* listen_for_aps(void *NULL_value) ;
|
||||||
void update_ap(uint8_t mac_addr_bytes[6], char ip_addr[INET_ADDRSTRLEN]) ;
|
void update_ap(uint8_t mac_addr_bytes[ETHER_ADDR_LEN],
|
||||||
ap_list* find_ap(uint8_t mac_addr_bytes[6]) ;
|
char ip_addr[INET_ADDRSTRLEN]) ;
|
||||||
ap_list* add_ap_front(uint8_t mac_addr_bytes[6]) ;
|
ap_list* find_ap(uint8_t mac_addr_bytes[ETHER_ADDR_LEN]) ;
|
||||||
|
ap_list* add_ap_front(uint8_t mac_addr_bytes[ETHER_ADDR_LEN]) ;
|
||||||
void update_ap_ip_addr(ap_list *ap, char ip_addr[INET_ADDRSTRLEN]) ;
|
void update_ap_ip_addr(ap_list *ap, char ip_addr[INET_ADDRSTRLEN]) ;
|
||||||
void update_ap_seen(ap_list *ap) ;
|
void update_ap_seen(ap_list *ap) ;
|
||||||
void push_ap(ap_list *ap) ;
|
void push_ap(ap_list *ap) ;
|
||||||
|
|
|
@ -567,7 +567,8 @@ void* monitor_requests(void *NULL_value)
|
||||||
request_ptr->direction) ;
|
request_ptr->direction) ;
|
||||||
|
|
||||||
memcpy(request.mobile_mac_addr_bytes,
|
memcpy(request.mobile_mac_addr_bytes,
|
||||||
request_ptr->mobile_mac_addr_bytes, 6) ;
|
request_ptr->mobile_mac_addr_bytes,
|
||||||
|
ETHER_ADDR_LEN) ;
|
||||||
request.request_time = request_ptr->request_time ;
|
request.request_time = request_ptr->request_time ;
|
||||||
request.nb_info = 0 ;
|
request.nb_info = 0 ;
|
||||||
|
|
||||||
|
@ -592,7 +593,8 @@ void* monitor_requests(void *NULL_value)
|
||||||
{
|
{
|
||||||
// Send AP info to the localisation server
|
// Send AP info to the localisation server
|
||||||
memcpy(info.ap_mac_addr_bytes,
|
memcpy(info.ap_mac_addr_bytes,
|
||||||
request_info_ptr->ap_mac_addr_bytes, 6) ;
|
request_info_ptr->ap_mac_addr_bytes,
|
||||||
|
ETHER_ADDR_LEN) ;
|
||||||
info.antenna_signal_dbm =
|
info.antenna_signal_dbm =
|
||||||
request_info_ptr->antenna_signal_dbm - 0x100 ;
|
request_info_ptr->antenna_signal_dbm - 0x100 ;
|
||||||
sendto(sockfd, &info, sizeof(info),
|
sendto(sockfd, &info, sizeof(info),
|
||||||
|
@ -675,7 +677,8 @@ void got_request(owl_captured_request request)
|
||||||
|
|
||||||
/* Create a new request */
|
/* Create a new request */
|
||||||
tmp_info = malloc(sizeof(request_info_list)) ;
|
tmp_info = malloc(sizeof(request_info_list)) ;
|
||||||
memcpy(tmp_info->ap_mac_addr_bytes, request.ap_mac_addr_bytes, 6) ;
|
memcpy(tmp_info->ap_mac_addr_bytes, request.ap_mac_addr_bytes,
|
||||||
|
ETHER_ADDR_LEN) ;
|
||||||
tmp_info->antenna_signal_dbm = request.antenna_signal_dbm ;
|
tmp_info->antenna_signal_dbm = request.antenna_signal_dbm ;
|
||||||
tmp_info->next = NULL ;
|
tmp_info->next = NULL ;
|
||||||
|
|
||||||
|
@ -686,7 +689,7 @@ void got_request(owl_captured_request request)
|
||||||
fprintf(stderr, "Creating request list.\n") ;
|
fprintf(stderr, "Creating request list.\n") ;
|
||||||
tmp_request = malloc(sizeof(request_list)) ; // create it.
|
tmp_request = malloc(sizeof(request_list)) ; // create it.
|
||||||
memcpy(tmp_request->mobile_mac_addr_bytes,
|
memcpy(tmp_request->mobile_mac_addr_bytes,
|
||||||
request.mobile_mac_addr_bytes, 6) ;
|
request.mobile_mac_addr_bytes, ETHER_ADDR_LEN) ;
|
||||||
// Explicit packet:
|
// Explicit packet:
|
||||||
if (! owl_timestamp_is_null(request.request_time))
|
if (! owl_timestamp_is_null(request.request_time))
|
||||||
// Transmission time on the mobile:
|
// Transmission time on the mobile:
|
||||||
|
@ -743,7 +746,7 @@ void got_request(owl_captured_request request)
|
||||||
fprintf(stderr, "Create new request.\n") ;
|
fprintf(stderr, "Create new request.\n") ;
|
||||||
tmp_request = malloc(sizeof(request_list)) ; // create it
|
tmp_request = malloc(sizeof(request_list)) ; // create it
|
||||||
memcpy(tmp_request->mobile_mac_addr_bytes,
|
memcpy(tmp_request->mobile_mac_addr_bytes,
|
||||||
request.mobile_mac_addr_bytes, 6) ;
|
request.mobile_mac_addr_bytes, ETHER_ADDR_LEN) ;
|
||||||
// Explicit packet:
|
// Explicit packet:
|
||||||
if (! owl_timestamp_is_null(request.request_time))
|
if (! owl_timestamp_is_null(request.request_time))
|
||||||
// Transmission time on the mobile:
|
// Transmission time on the mobile:
|
||||||
|
@ -867,7 +870,8 @@ void* listen_for_aps(void *NULL_value)
|
||||||
* Updates the timestamp of the AP with the given MAC address if it is in
|
* Updates the timestamp of the AP with the given MAC address if it is in
|
||||||
* the AP list, or add a new AP with this MAC address to the AP list.
|
* the AP list, or add a new AP with this MAC address to the AP list.
|
||||||
*/
|
*/
|
||||||
void update_ap(uint8_t mac_addr_bytes[6], char ip_addr[INET_ADDRSTRLEN])
|
void update_ap(uint8_t mac_addr_bytes[ETHER_ADDR_LEN],
|
||||||
|
char ip_addr[INET_ADDRSTRLEN])
|
||||||
{
|
{
|
||||||
ap_list *found ;
|
ap_list *found ;
|
||||||
|
|
||||||
|
@ -886,7 +890,7 @@ void update_ap(uint8_t mac_addr_bytes[6], char ip_addr[INET_ADDRSTRLEN])
|
||||||
* Searches the AP list for an AP with the given MAC address and returns
|
* Searches the AP list for an AP with the given MAC address and returns
|
||||||
* it.
|
* it.
|
||||||
*/
|
*/
|
||||||
ap_list* find_ap(uint8_t mac_addr_bytes[6])
|
ap_list* find_ap(uint8_t mac_addr_bytes[ETHER_ADDR_LEN])
|
||||||
{
|
{
|
||||||
ap_list *found ;
|
ap_list *found ;
|
||||||
|
|
||||||
|
@ -909,7 +913,7 @@ ap_list* find_ap(uint8_t mac_addr_bytes[6])
|
||||||
/*
|
/*
|
||||||
* Adds a new AP in front of the AP list.
|
* Adds a new AP in front of the AP list.
|
||||||
*/
|
*/
|
||||||
ap_list* add_ap_front(uint8_t mac_addr_bytes[6])
|
ap_list* add_ap_front(uint8_t mac_addr_bytes[ETHER_ADDR_LEN])
|
||||||
{
|
{
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
char *mac_str = owl_mac_bytes_to_string(mac_addr_bytes) ;
|
char *mac_str = owl_mac_bytes_to_string(mac_addr_bytes) ;
|
||||||
|
@ -918,7 +922,7 @@ ap_list* add_ap_front(uint8_t mac_addr_bytes[6])
|
||||||
#endif // DEBUG
|
#endif // DEBUG
|
||||||
|
|
||||||
ap_list *ap = malloc(sizeof(ap_list)) ;
|
ap_list *ap = malloc(sizeof(ap_list)) ;
|
||||||
memcpy(ap->mac_addr_bytes, mac_addr_bytes, 6) ;
|
memcpy(ap->mac_addr_bytes, mac_addr_bytes, ETHER_ADDR_LEN) ;
|
||||||
update_ap_seen(ap) ;
|
update_ap_seen(ap) ;
|
||||||
push_ap(ap) ;
|
push_ap(ap) ;
|
||||||
return ap ;
|
return ap ;
|
||||||
|
|
|
@ -87,7 +87,7 @@ void* keep_mode_monitor(void *iface) ;
|
||||||
int capture(void) ;
|
int capture(void) ;
|
||||||
void read_packet(u_char *args, const struct pcap_pkthdr *header,
|
void read_packet(u_char *args, const struct pcap_pkthdr *header,
|
||||||
const u_char *packet) ;
|
const u_char *packet) ;
|
||||||
void get_mac_addr(char *eth, uint8_t mac_bytes[6]) ;
|
void get_mac_addr(char *eth, uint8_t mac_bytes[ETHER_ADDR_LEN]) ;
|
||||||
void get_ip_addr(char *eth, char *ip_bytes) ;
|
void get_ip_addr(char *eth, char *ip_bytes) ;
|
||||||
|
|
||||||
#ifdef USE_PTHREAD
|
#ifdef USE_PTHREAD
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
|
|
||||||
|
|
||||||
char *program_name = NULL ;
|
char *program_name = NULL ;
|
||||||
uint8_t my_mac_bytes[6] ; // AP MAC address
|
uint8_t my_mac_bytes[ETHER_ADDR_LEN] ; // AP MAC address
|
||||||
char my_ip[INET_ADDRSTRLEN] ; // AP IP address
|
char my_ip[INET_ADDRSTRLEN] ; // AP IP address
|
||||||
|
|
||||||
pcap_t *capture_handler = NULL ; // Packet capture descriptor
|
pcap_t *capture_handler = NULL ; // Packet capture descriptor
|
||||||
|
@ -729,13 +729,15 @@ void read_packet(u_char *args, const struct pcap_pkthdr *header,
|
||||||
#endif // DEBUG
|
#endif // DEBUG
|
||||||
|
|
||||||
// Source MAC address is 10 bytes after the 802.11 packet type:
|
// Source MAC address is 10 bytes after the 802.11 packet type:
|
||||||
memcpy(request.mobile_mac_addr_bytes, &packet[rtap_bytes+10], 6) ;
|
memcpy(request.mobile_mac_addr_bytes, &packet[rtap_bytes+10],
|
||||||
|
ETHER_ADDR_LEN) ;
|
||||||
|
|
||||||
// Drop the packet if it comes from the AP itself:
|
// Drop the packet if it comes from the AP itself:
|
||||||
if (owl_mac_equals(my_mac_bytes, request.mobile_mac_addr_bytes))
|
if (owl_mac_equals(my_mac_bytes, request.mobile_mac_addr_bytes))
|
||||||
return ;
|
return ;
|
||||||
|
|
||||||
memcpy(request.ap_mac_addr_bytes, my_mac_bytes, 6) ; // Copy AP MAC
|
// Copy AP MAC :
|
||||||
|
memcpy(request.ap_mac_addr_bytes, my_mac_bytes, ETHER_ADDR_LEN) ;
|
||||||
// Capture time is in the pcap header (net-endian):
|
// Capture time is in the pcap header (net-endian):
|
||||||
request.start_time = owl_timeval_to_timestamp(header->ts) ;
|
request.start_time = owl_timeval_to_timestamp(header->ts) ;
|
||||||
// Transmission time on the mobile is unknown (unless the packet is
|
// Transmission time on the mobile is unknown (unless the packet is
|
||||||
|
@ -975,12 +977,13 @@ void read_packet(u_char *args, const struct pcap_pkthdr *header,
|
||||||
/*
|
/*
|
||||||
* Get our own MAC address and copy it to 'mac_bytes'.
|
* Get our own MAC address and copy it to 'mac_bytes'.
|
||||||
*/
|
*/
|
||||||
void get_mac_addr(char *eth, uint8_t mac_bytes[6])
|
void get_mac_addr(char *eth, uint8_t mac_bytes[ETHER_ADDR_LEN])
|
||||||
{
|
{
|
||||||
struct ifreq ifr;
|
struct ifreq ifr;
|
||||||
int sockfd ;
|
int sockfd ;
|
||||||
|
|
||||||
memset(mac_bytes, 0, sizeof(uint8_t) * 6) ; // Empty mac_bytes
|
// Empty mac_bytes:
|
||||||
|
memset(mac_bytes, 0, sizeof(uint8_t) * ETHER_ADDR_LEN) ;
|
||||||
|
|
||||||
sockfd = socket(AF_INET, SOCK_DGRAM, 0) ;
|
sockfd = socket(AF_INET, SOCK_DGRAM, 0) ;
|
||||||
if(sockfd < 0)
|
if(sockfd < 0)
|
||||||
|
@ -994,7 +997,7 @@ void get_mac_addr(char *eth, uint8_t mac_bytes[6])
|
||||||
if (ioctl(sockfd, SIOCGIFHWADDR, &ifr) < 0)
|
if (ioctl(sockfd, SIOCGIFHWADDR, &ifr) < 0)
|
||||||
return ;
|
return ;
|
||||||
|
|
||||||
memcpy(mac_bytes, ifr.ifr_hwaddr.sa_data, 6) ;
|
memcpy(mac_bytes, ifr.ifr_hwaddr.sa_data, ETHER_ADDR_LEN) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1046,7 +1049,7 @@ void* autocalibrate_hello(void *NULL_value)
|
||||||
&serv, NULL) ;
|
&serv, NULL) ;
|
||||||
pthread_cleanup_push(&owl_close_fd, &send_sockfd) ;
|
pthread_cleanup_push(&owl_close_fd, &send_sockfd) ;
|
||||||
|
|
||||||
memcpy(&message.ap_mac_addr_bytes, my_mac_bytes, 6) ;
|
memcpy(&message.ap_mac_addr_bytes, my_mac_bytes, ETHER_ADDR_LEN) ;
|
||||||
|
|
||||||
while (run)
|
while (run)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue