diff options
authorNeels Hofmeyr <nhofmeyr@sysmocom.de>2017-05-15 14:03:07 +0200
committerNeels Hofmeyr <nhofmeyr@sysmocom.de>2017-05-15 14:49:22 +0200
commit95fd67374c82f5eaf1e5be322108c77ed6398ebd (patch)
parentbcd4332b6b1163c4033f62fa2c72a349ef2e04a1 (diff)
pcap: pass complete filter string to PcapRecorder
Composing the filter in gen_filter() is more complex than we need. We pass the address and potentially further filter elements separately, and then gen_filter() has to guess how to combine these. Instead, have just a filter string to use right from the start, so that the caller has full control (and full responsibility). Remove the addr argument, which was only used for filtering. This is my conclusion of looking at the patches with change Ids I62a6ae7bd3a84baceb684c26727d2269c86ed023 (PS 1) and Icbb0f8d2058fa7ebb7f0f731645f9266cacdb120 I62... PS 2 will add the SSH filtering. The name 'filter' is a python built-in, which is why I chose the argument name 'filters' instead. It works with 'filter' as well, but let's try to avoid naming conflicts like that. Change-Id: Iff7ddf51d3bf0189ce07b488a3dcdcfce6907aba
2 files changed, 5 insertions, 12 deletions
diff --git a/src/osmo_gsm_tester/osmo_nitb.py b/src/osmo_gsm_tester/osmo_nitb.py
index 6ead67a..835bf13 100644
--- a/src/osmo_gsm_tester/osmo_nitb.py
+++ b/src/osmo_gsm_tester/osmo_nitb.py
@@ -52,8 +52,8 @@ class OsmoNitb(log.Origin):
raise RuntimeError('No lib/ in %r' % inst)
iface = util.ip_to_iface(self.addr())
- pcap_recorder.PcapRecorder(self.suite_run, self.run_dir.new_dir('pcap'),
- iface, self.addr())
+ pcap_recorder.PcapRecorder(self.suite_run, self.run_dir.new_dir('pcap'), iface,
+ 'host %s' % self.addr())
env = { 'LD_LIBRARY_PATH': util.prepend_library_path(lib) }
diff --git a/src/osmo_gsm_tester/pcap_recorder.py b/src/osmo_gsm_tester/pcap_recorder.py
index 8b1fe82..3b3c307 100644
--- a/src/osmo_gsm_tester/pcap_recorder.py
+++ b/src/osmo_gsm_tester/pcap_recorder.py
@@ -26,13 +26,13 @@ from . import log, util, config, template, process, osmo_ctrl
class PcapRecorder(log.Origin):
- def __init__(self, suite_run, run_dir, iface=None, addr=None):
+ def __init__(self, suite_run, run_dir, iface=None, filters=''):
self.suite_run = suite_run
self.run_dir = run_dir
self.iface = iface
if not self.iface:
self.iface = "any"
- self.addr = addr
+ self.filters = filters
self.set_name('pcap-recorder_%s' % self.iface)
@@ -44,17 +44,10 @@ class PcapRecorder(log.Origin):
('tcpdump', '-n',
'-i', self.iface,
'-w', dumpfile,
- self.gen_filter())
- )
+ self.filters))
- def gen_filter(self):
- filter = ""
- if self.addr:
- filter += 'host ' + self.addr
- return filter
def running(self):
return not self.process.terminated()