mirror of
https://github.com/mfontanini/libtins
synced 2026-01-23 02:35:57 +01:00
Use one flags field for all flags on SnifferConfiguration.
This commit is contained in:
@@ -560,19 +560,23 @@ namespace Tins {
|
|||||||
friend class Sniffer;
|
friend class Sniffer;
|
||||||
friend class FileSniffer;
|
friend class FileSniffer;
|
||||||
|
|
||||||
|
enum Flags {
|
||||||
|
BUFFER_SIZE = 1,
|
||||||
|
PROMISCUOUS = 2,
|
||||||
|
RFMON = 4,
|
||||||
|
PACKET_FILTER = 8
|
||||||
|
};
|
||||||
|
|
||||||
void configure_sniffer_pre_activation(Sniffer& sniffer) const;
|
void configure_sniffer_pre_activation(Sniffer& sniffer) const;
|
||||||
void configure_sniffer_pre_activation(FileSniffer& sniffer) const;
|
void configure_sniffer_pre_activation(FileSniffer& sniffer) const;
|
||||||
|
|
||||||
void configure_sniffer_post_activation(Sniffer& sniffer) const;
|
void configure_sniffer_post_activation(Sniffer& sniffer) const;
|
||||||
|
|
||||||
|
uint32_t _flags;
|
||||||
unsigned _snap_len;
|
unsigned _snap_len;
|
||||||
bool _has_buffer_size;
|
|
||||||
unsigned _buffer_size;
|
unsigned _buffer_size;
|
||||||
bool _has_promisc;
|
|
||||||
bool _promisc;
|
bool _promisc;
|
||||||
bool _has_rfmon;
|
|
||||||
bool _rfmon;
|
bool _rfmon;
|
||||||
bool _has_filter;
|
|
||||||
std::string _filter;
|
std::string _filter;
|
||||||
unsigned _timeout;
|
unsigned _timeout;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -390,11 +390,11 @@ const unsigned SnifferConfiguration::DEFAULT_SNAP_LEN = 65535;
|
|||||||
const unsigned SnifferConfiguration::DEFAULT_TIMEOUT = 1000;
|
const unsigned SnifferConfiguration::DEFAULT_TIMEOUT = 1000;
|
||||||
|
|
||||||
SnifferConfiguration::SnifferConfiguration() :
|
SnifferConfiguration::SnifferConfiguration() :
|
||||||
|
_flags(0),
|
||||||
_snap_len(DEFAULT_SNAP_LEN),
|
_snap_len(DEFAULT_SNAP_LEN),
|
||||||
_has_buffer_size(false), _buffer_size(0),
|
_buffer_size(0),
|
||||||
_has_promisc(false), _promisc(false),
|
_promisc(false),
|
||||||
_has_rfmon(false), _rfmon(false),
|
_rfmon(false),
|
||||||
_has_filter(false),
|
|
||||||
_timeout(DEFAULT_TIMEOUT)
|
_timeout(DEFAULT_TIMEOUT)
|
||||||
{
|
{
|
||||||
|
|
||||||
@@ -404,20 +404,20 @@ void SnifferConfiguration::configure_sniffer_pre_activation(Sniffer& sniffer) co
|
|||||||
{
|
{
|
||||||
sniffer.set_snap_len(_snap_len);
|
sniffer.set_snap_len(_snap_len);
|
||||||
sniffer.set_timeout(_timeout);
|
sniffer.set_timeout(_timeout);
|
||||||
if (_has_buffer_size) {
|
if ((_flags & BUFFER_SIZE) != 0) {
|
||||||
sniffer.set_buffer_size(_buffer_size);
|
sniffer.set_buffer_size(_buffer_size);
|
||||||
}
|
}
|
||||||
if (_has_promisc) {
|
if ((_flags & PROMISCUOUS) != 0) {
|
||||||
sniffer.set_promisc_mode(_promisc);
|
sniffer.set_promisc_mode(_promisc);
|
||||||
}
|
}
|
||||||
if (_has_rfmon) {
|
if ((_flags & RFMON) != 0) {
|
||||||
sniffer.set_rfmon(_rfmon);
|
sniffer.set_rfmon(_rfmon);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void SnifferConfiguration::configure_sniffer_pre_activation(FileSniffer& sniffer) const
|
void SnifferConfiguration::configure_sniffer_pre_activation(FileSniffer& sniffer) const
|
||||||
{
|
{
|
||||||
if (_has_filter) {
|
if ((_flags & PACKET_FILTER) != 0) {
|
||||||
if (!sniffer.set_filter(_filter)) {
|
if (!sniffer.set_filter(_filter)) {
|
||||||
throw std::runtime_error("Could not set the filter!");
|
throw std::runtime_error("Could not set the filter!");
|
||||||
}
|
}
|
||||||
@@ -426,7 +426,7 @@ void SnifferConfiguration::configure_sniffer_pre_activation(FileSniffer& sniffer
|
|||||||
|
|
||||||
void SnifferConfiguration::configure_sniffer_post_activation(Sniffer& sniffer) const
|
void SnifferConfiguration::configure_sniffer_post_activation(Sniffer& sniffer) const
|
||||||
{
|
{
|
||||||
if (_has_filter) {
|
if ((_flags & PACKET_FILTER) != 0) {
|
||||||
if (!sniffer.set_filter(_filter)) {
|
if (!sniffer.set_filter(_filter)) {
|
||||||
throw std::runtime_error("Could not set the filter! ");
|
throw std::runtime_error("Could not set the filter! ");
|
||||||
}
|
}
|
||||||
@@ -440,25 +440,25 @@ void SnifferConfiguration::set_snap_len(unsigned snap_len)
|
|||||||
|
|
||||||
void SnifferConfiguration::set_buffer_size(unsigned buffer_size)
|
void SnifferConfiguration::set_buffer_size(unsigned buffer_size)
|
||||||
{
|
{
|
||||||
_has_buffer_size = true;
|
_flags |= BUFFER_SIZE;
|
||||||
_buffer_size = buffer_size;
|
_buffer_size = buffer_size;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SnifferConfiguration::set_promisc_mode(bool enabled)
|
void SnifferConfiguration::set_promisc_mode(bool enabled)
|
||||||
{
|
{
|
||||||
_has_promisc = true;
|
_flags |= PROMISCUOUS;
|
||||||
_promisc = enabled;
|
_promisc = enabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SnifferConfiguration::set_filter(const std::string& filter)
|
void SnifferConfiguration::set_filter(const std::string& filter)
|
||||||
{
|
{
|
||||||
_has_filter = true;
|
_flags |= PACKET_FILTER;
|
||||||
_filter = filter;
|
_filter = filter;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SnifferConfiguration::set_rfmon(bool enabled)
|
void SnifferConfiguration::set_rfmon(bool enabled)
|
||||||
{
|
{
|
||||||
_has_rfmon = true;
|
_flags |= RFMON;
|
||||||
_rfmon = enabled;
|
_rfmon = enabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user