From fdfb8b0dea375d3c2ff066fbb4fb20b1ad04031f Mon Sep 17 00:00:00 2001 From: Matias Fontanini Date: Mon, 22 Apr 2013 23:48:53 -0300 Subject: [PATCH] Fixed compilation issues triggered in GNU/kFreeBSD. --- include/packet_sender.h | 2 +- include/utils.h | 6 +++--- src/dot11.cpp | 4 ++-- src/dot3.cpp | 6 +++--- src/ethernetII.cpp | 6 +++--- src/ip.cpp | 2 +- src/network_interface.cpp | 6 +++--- src/packet_sender.cpp | 22 ++++++++++++---------- src/radiotap.cpp | 4 ++-- src/utils.cpp | 2 +- 10 files changed, 31 insertions(+), 29 deletions(-) diff --git a/include/packet_sender.h b/include/packet_sender.h index 441c907..dd86854 100644 --- a/include/packet_sender.h +++ b/include/packet_sender.h @@ -278,7 +278,7 @@ namespace Tins { std::vector _sockets; #ifndef WIN32 - #ifdef BSD + #if defined(BSD) || defined(__FreeBSD_kernel__) typedef std::map BSDEtherSockets; BSDEtherSockets _ether_socket; #else diff --git a/include/utils.h b/include/utils.h index 7872110..18c80dc 100644 --- a/include/utils.h +++ b/include/utils.h @@ -39,7 +39,7 @@ #undef interface #endif #include "macros.h" -#ifdef BSD +#if defined(BSD) || defined(__FreeBSD_kernel__) #include #include #include @@ -280,7 +280,7 @@ namespace Tins { dereference_until_pdu(T &value) { return dereference_until_pdu(*value); } - #ifdef BSD + #if defined(BSD) || defined(__FreeBSD_kernel__) inline std::vector query_route_table() { int mib[6]; std::vector buf; @@ -322,7 +322,7 @@ namespace Tins { #endif } } -#ifdef BSD +#if defined(BSD) || defined(__FreeBSD_kernel__) template void Tins::Utils::route_entries(ForwardIterator output) { std::vector buffer = query_route_table(); diff --git a/src/dot11.cpp b/src/dot11.cpp index 543f88d..35eb84e 100644 --- a/src/dot11.cpp +++ b/src/dot11.cpp @@ -36,7 +36,7 @@ #include "exceptions.h" #ifndef WIN32 - #if defined(BSD) || defined(__APPLE__) + #if defined(__FreeBSD_kernel__) || defined(BSD) || defined(__APPLE__) #include #include #else @@ -185,7 +185,7 @@ void Dot11::send(PacketSender &sender, const NetworkInterface &iface) { if(!iface) throw invalid_interface(); - #ifndef BSD + #if !defined(BSD) && !defined(__FreeBSD_kernel__) sockaddr_ll addr; memset(&addr, 0, sizeof(struct sockaddr_ll)); diff --git a/src/dot3.cpp b/src/dot3.cpp index 7b99862..6b1e724 100644 --- a/src/dot3.cpp +++ b/src/dot3.cpp @@ -35,7 +35,7 @@ #include #include "macros.h" #ifndef WIN32 - #ifdef BSD + #if defined(BSD) || defined(__FreeBSD_kernel__) #include #else #include @@ -94,7 +94,7 @@ void Dot3::send(PacketSender &sender, const NetworkInterface &iface) { if(!iface) throw invalid_interface(); - #ifndef BSD + #if !defined(BSD) && !defined(__FreeBSD_kernel__) struct sockaddr_ll addr; memset(&addr, 0, sizeof(struct sockaddr_ll)); @@ -147,7 +147,7 @@ void Dot3::write_serialization(uint8_t *buffer, uint32_t total_sz, const PDU *pa PDU *Dot3::recv_response(PacketSender &sender, const NetworkInterface &iface) { if(!iface) throw invalid_interface(); - #ifndef BSD + #if !defined(BSD) && !defined(__FreeBSD_kernel__) struct sockaddr_ll addr; memset(&addr, 0, sizeof(struct sockaddr_ll)); diff --git a/src/ethernetII.cpp b/src/ethernetII.cpp index 2ee98a8..0ca36f6 100644 --- a/src/ethernetII.cpp +++ b/src/ethernetII.cpp @@ -35,7 +35,7 @@ #include #include "macros.h" #ifndef WIN32 - #ifdef BSD + #if defined(BSD) || defined(__FreeBSD_kernel__) #include #else #include @@ -106,7 +106,7 @@ void EthernetII::send(PacketSender &sender, const NetworkInterface &iface) { if(!iface) throw invalid_interface(); - #ifndef BSD + #if !defined(BSD) && !defined(__FreeBSD_kernel__) struct sockaddr_ll addr; memset(&addr, 0, sizeof(struct sockaddr_ll)); @@ -156,7 +156,7 @@ void EthernetII::write_serialization(uint8_t *buffer, uint32_t total_sz, const P #ifndef WIN32 PDU *EthernetII::recv_response(PacketSender &sender, const NetworkInterface &iface) { - #ifndef BSD + #if !defined(BSD) && !defined(__FreeBSD_kernel__) struct sockaddr_ll addr; memset(&addr, 0, sizeof(struct sockaddr_ll)); diff --git a/src/ip.cpp b/src/ip.cpp index 914a439..62798e7 100644 --- a/src/ip.cpp +++ b/src/ip.cpp @@ -409,7 +409,7 @@ void IP::write_serialization(uint8_t *buffer, uint32_t total_sz, const PDU* pare //flag(new_flag); } - #ifdef __FreeBSD__ + #if __FreeBSD__ || defined(__FreeBSD_kernel__) if(!parent) total_sz = Endian::host_to_be(total_sz); #endif diff --git a/src/network_interface.cpp b/src/network_interface.cpp index bffa7fd..76e6fda 100644 --- a/src/network_interface.cpp +++ b/src/network_interface.cpp @@ -33,7 +33,7 @@ #include "macros.h" #ifndef WIN32 #include - #ifdef BSD + #if defined(BSD) || defined(__FreeBSD_kernel__) #include #include #include @@ -64,7 +64,7 @@ struct InterfaceInfoCollector { bool operator() (const struct ifaddrs *addr) { using Tins::Endian::host_to_be; using Tins::IPv4Address; - #ifdef BSD + #if defined(BSD) || defined(__FreeBSD_kernel__) const struct sockaddr_dl* addr_ptr = ((struct sockaddr_dl*)addr->ifa_addr); if(addr->ifa_addr->sa_family == AF_LINK && addr_ptr->sdl_index == iface_id) @@ -138,7 +138,7 @@ NetworkInterface::NetworkInterface(IPv4Address ip) : iface_id(0) { typedef std::vector entries_type; if(ip == "127.0.0.1") - #ifdef BSD + #if defined(BSD) || defined(__FreeBSD_kernel__) iface_id = resolve_index("lo0"); #else iface_id = resolve_index("lo"); diff --git a/src/packet_sender.cpp b/src/packet_sender.cpp index 6f77e52..dd2c419 100644 --- a/src/packet_sender.cpp +++ b/src/packet_sender.cpp @@ -34,7 +34,7 @@ #include #include #include - #ifdef BSD + #if defined(BSD) || defined(__FreeBSD_kernel__) #include #include #include @@ -85,7 +85,7 @@ const uint32_t PacketSender::DEFAULT_TIMEOUT = 2; PacketSender::PacketSender(const NetworkInterface &iface, uint32_t recv_timeout, uint32_t usec) : _sockets(SOCKETS_END, INVALID_RAW_SOCKET), -#if !defined(BSD) && !defined(WIN32) +#if !defined(BSD) && !defined(WIN32) && !defined(__FreeBSD_kernel__) _ether_socket(INVALID_RAW_SOCKET), #endif _timeout(recv_timeout), _timeout_usec(usec), default_iface(iface) @@ -106,7 +106,7 @@ PacketSender::~PacketSender() { ::closesocket(_sockets[i]); #endif } - #ifdef BSD + #if defined(BSD) || defined(__FreeBSD_kernel__) for(BSDEtherSockets::iterator it = _ether_socket.begin(); it != _ether_socket.end(); ++it) ::close(it->second); #elif !defined(WIN32) @@ -125,7 +125,7 @@ const NetworkInterface& PacketSender::default_interface() { #ifndef WIN32 bool PacketSender::ether_socket_initialized(const NetworkInterface& iface) const { - #ifdef BSD + #if defined(BSD) || defined(__FreeBSD_kernel__) return _ether_socket.count(iface.id()); #else return _ether_socket != INVALID_RAW_SOCKET; @@ -135,7 +135,7 @@ bool PacketSender::ether_socket_initialized(const NetworkInterface& iface) const int PacketSender::get_ether_socket(const NetworkInterface& iface) { if(!ether_socket_initialized(iface)) open_l2_socket(iface); - #ifdef BSD + #if defined(BSD) || defined(__FreeBSD_kernel__) return _ether_socket[iface.id()]; #else return _ether_socket; @@ -143,7 +143,7 @@ int PacketSender::get_ether_socket(const NetworkInterface& iface) { } void PacketSender::open_l2_socket(const NetworkInterface& iface) { - #ifdef BSD + #if defined(BSD) || defined(__FreeBSD_kernel__) int sock = -1; // At some point, there should be an available device for (int i = 0; sock == -1;i++) { @@ -197,7 +197,7 @@ void PacketSender::open_l3_socket(SocketType type) { void PacketSender::close_socket(SocketType type, const NetworkInterface &iface) { if(type == ETHER_SOCKET) { - #ifdef BSD + #if defined(BSD) || defined(__FreeBSD_kernel__) BSDEtherSockets::iterator it = _ether_socket.find(iface.id()); if(it == _ether_socket.end()) throw InvalidSocketTypeError(); @@ -265,11 +265,12 @@ PDU *PacketSender::send_recv(PDU &pdu, const NetworkInterface &iface) { #ifndef WIN32 void PacketSender::send_l2(PDU &pdu, struct sockaddr* link_addr, - uint32_t len_addr, const NetworkInterface &iface) { + uint32_t len_addr, const NetworkInterface &iface) +{ int sock = get_ether_socket(iface); PDU::serialization_type buffer = pdu.serialize(); if(!buffer.empty()) { - #ifdef BSD + #if defined(BSD) || defined(__FreeBSD_kernel__) if(::write(sock, &buffer[0], buffer.size()) == -1) #else if(::sendto(sock, &buffer[0], buffer.size(), 0, link_addr, len_addr) == -1) @@ -279,7 +280,8 @@ void PacketSender::send_l2(PDU &pdu, struct sockaddr* link_addr, } PDU *PacketSender::recv_l2(PDU &pdu, struct sockaddr *link_addr, - uint32_t len_addr, const NetworkInterface &iface) { + uint32_t len_addr, const NetworkInterface &iface) +{ int sock = get_ether_socket(iface); return recv_match_loop(sock, pdu, link_addr, len_addr); } diff --git a/src/radiotap.cpp b/src/radiotap.cpp index ad03809..8233646 100644 --- a/src/radiotap.cpp +++ b/src/radiotap.cpp @@ -34,7 +34,7 @@ #include #include "macros.h" #ifndef WIN32 - #ifdef BSD + #if defined(BSD) || defined(__FreeBSD_kernel__) #include #else #include @@ -242,7 +242,7 @@ void RadioTap::send(PacketSender &sender, const NetworkInterface &iface) { if(!iface) throw invalid_interface(); - #ifndef BSD + #if !defined(BSD) && !defined(__FreeBSD_kernel__) struct sockaddr_ll addr; memset(&addr, 0, sizeof(struct sockaddr_ll)); diff --git a/src/utils.cpp b/src/utils.cpp index 70f69f6..ce6fd60 100644 --- a/src/utils.cpp +++ b/src/utils.cpp @@ -34,7 +34,7 @@ #include #include "utils.h" #ifndef WIN32 - #ifdef BSD + #if defined(BSD) || defined(__FreeBSD_kernel__) #include #include #include