Removing dependency on PCAP_NETMASK_UNKNOWN to compile with libpcap <

1.1.1.
This commit is contained in:
Robin Sommer 2015-02-20 13:49:33 -08:00
parent abcb8e7c95
commit d29679484d
5 changed files with 28 additions and 13 deletions

View file

@ -1,4 +1,9 @@
2.3-427 | 2015-02-20 13:49:33 -0800
* Removing dependency on PCAP_NETMASK_UNKNOWN to compile with
libpcap < 1.1.1. (Robin Sommer)
2.3-426 | 2015-02-20 12:45:51 -0800 2.3-426 | 2015-02-20 12:45:51 -0800
* Add 'while' statement to Bro language. Really. (Jon Siwek) * Add 'while' statement to Bro language. Really. (Jon Siwek)

View file

@ -1 +1 @@
2.3-426 2.3-427

View file

@ -13,6 +13,15 @@
using namespace iosource; using namespace iosource;
PktSrc::Properties::Properties()
{
selectable_fd = -1;
link_type = -1;
hdr_size = -1;
netmask = NETMASK_UNKNOWN;
is_live = false;
}
PktSrc::PktSrc() PktSrc::PktSrc()
{ {
have_packet = false; have_packet = false;
@ -50,7 +59,7 @@ int PktSrc::LinkType() const
uint32 PktSrc::Netmask() const uint32 PktSrc::Netmask() const
{ {
return IsOpen() ? props.netmask : PCAP_NETMASK_UNKNOWN; return IsOpen() ? props.netmask : NETMASK_UNKNOWN;
} }
bool PktSrc::IsError() const bool PktSrc::IsError() const

View file

@ -16,6 +16,8 @@ namespace iosource {
*/ */
class PktSrc : public IOSource { class PktSrc : public IOSource {
public: public:
static const int NETMASK_UNKNOWN = 0xffffffff;
/** /**
* Struct for returning statistics on a packet source. * Struct for returning statistics on a packet source.
*/ */
@ -67,7 +69,7 @@ public:
/** /**
* Returns the netmask associated with the source, or \c * Returns the netmask associated with the source, or \c
* PCAP_NETMASK_UNKNOWN if unknown. * NETMASK_UNKNOWN if unknown.
*/ */
uint32 Netmask() const; uint32 Netmask() const;
@ -253,8 +255,8 @@ protected:
int hdr_size; int hdr_size;
/** /**
* The netmask associated with the source, or \c * Returns the netmask associated with the source, or \c
* PCAP_NETMASK_UNKNOWN if unknown. * NETMASK_UNKNOWN if unknown.
*/ */
uint32 netmask; uint32 netmask;
@ -264,14 +266,7 @@ protected:
*/ */
bool is_live; bool is_live;
Properties() Properties();
{
selectable_fd = -1;
link_type = -1;
hdr_size = -1;
netmask = PCAP_NETMASK_UNKNOWN;
is_live = false;
}
}; };
/** /**

View file

@ -77,6 +77,12 @@ void PcapSource::OpenLive()
props.netmask = 0xffffff00; props.netmask = 0xffffff00;
} }
#ifdef PCAP_NETMASK_UNKNOWN
// Defined in libpcap >= 1.1.1
if ( props.netmask == PCAP_NETMASK_UNKNOWN )
props.netmask = PktSrc::NETMASK_UNKNOWN;
#endif
// We use the smallest time-out possible to return almost immediately if // We use the smallest time-out possible to return almost immediately if
// no packets are available. (We can't use set_nonblocking() as it's // no packets are available. (We can't use set_nonblocking() as it's
// broken on FreeBSD: even when select() indicates that we can read // broken on FreeBSD: even when select() indicates that we can read