1
0
mirror of https://github.com/mfontanini/libtins synced 2026-01-25 19:51:34 +01:00

Merge branch 'master' of github.com:mfontanini/libtins into develop

Conflicts:
	examples/dns_stats.cpp
	include/tins/sniffer.h
	src/sniffer.cpp
This commit is contained in:
Matias Fontanini
2016-01-31 21:03:57 -08:00
4 changed files with 46 additions and 7 deletions

View File

@@ -227,6 +227,11 @@ void BaseSniffer::set_timeout(int ms) {
pcap_set_timeout(handle_, ms);
}
bool BaseSniffer::set_direction(pcap_direction_t d) {
bool result = pcap_setdirection(handle_, d) != -1;
return result;
}
// ****************************** Sniffer ******************************
Sniffer::Sniffer(const string& device, const SnifferConfiguration& configuration) {
@@ -438,6 +443,14 @@ void SnifferConfiguration::configure_sniffer_post_activation(Sniffer& sniffer) c
throw invalid_pcap_filter(pcap_geterr(sniffer.get_pcap_handle()));
}
}
// TODO: see how to actually do this on winpcap
#ifndef _WIN32
if ((flags_ & DIRECTION) != 0) {
if (!sniffer.set_direction(direction_)) {
throw pcap_error(pcap_geterr(sniffer.get_pcap_handle()));
}
}
#endif // _WIN32
}
void SnifferConfiguration::set_snap_len(unsigned snap_len) {
@@ -473,4 +486,9 @@ void SnifferConfiguration::set_immediate_mode(bool enabled) {
immediate_mode_ = enabled;
}
void SnifferConfiguration::set_direction(pcap_direction_t direction) {
direction_ = direction;
flags_ |= DIRECTION;
}
} // Tins