[svn-commits] jbigelow: testsuite/asterisk/trunk r5935 - in /asterisk/trunk/lib/python: ./ ...
SVN commits to the Digium repositories
svn-commits at lists.digium.com
Mon Nov 17 14:59:22 CST 2014
Author: jbigelow
Date: Mon Nov 17 14:59:15 2014
New Revision: 5935
URL: http://svnview.digium.com/svn/testsuite?view=rev&rev=5935
Log:
Allow setting the snaplen and buffer_size for packet capturing.
This provides the ability to set a snaplen and/or ring buffer size when
capturing packets.
Review: https://reviewboard.asterisk.org/r/4156/
Modified:
asterisk/trunk/lib/python/asterisk/pcap.py
asterisk/trunk/lib/python/asterisk/test_case.py
asterisk/trunk/lib/python/pcap_listener.py
Modified: asterisk/trunk/lib/python/asterisk/pcap.py
URL: http://svnview.digium.com/svn/testsuite/asterisk/trunk/lib/python/asterisk/pcap.py?view=diff&rev=5935&r1=5934&r2=5935
==============================================================================
--- asterisk/trunk/lib/python/asterisk/pcap.py (original)
+++ asterisk/trunk/lib/python/asterisk/pcap.py Mon Nov 17 14:59:15 2014
@@ -51,6 +51,8 @@
device = module_config.get('device')
bpf_filter = module_config.get('bpf-filter')
filename = module_config.get('filename')
+ snaplen = module_config.get('snaplen')
+ buffer_size = module_config.get('buffer-size')
if (module_config.get('register-observer')):
test_object.register_pcap_observer(self.__pcap_callback)
if (module_config.get('debug-packets')):
@@ -61,7 +63,9 @@
test_object.create_pcap_listener(
device=device,
bpf_filter=bpf_filter,
- dumpfile=filename)
+ dumpfile=filename,
+ snaplen=snaplen,
+ buffer_size=buffer_size)
def __pcap_callback(self, packet):
''' Private callback. Will log packets out as DEBUG messages if
Modified: asterisk/trunk/lib/python/asterisk/test_case.py
URL: http://svnview.digium.com/svn/testsuite/asterisk/trunk/lib/python/asterisk/test_case.py?view=diff&rev=5935&r1=5934&r2=5935
==============================================================================
--- asterisk/trunk/lib/python/asterisk/test_case.py (original)
+++ asterisk/trunk/lib/python/asterisk/test_case.py Mon Nov 17 14:59:15 2014
@@ -292,15 +292,19 @@
"""
pass
- def create_pcap_listener(self, device=None, bpf_filter=None, dumpfile=None):
+ def create_pcap_listener(self, device=None, bpf_filter=None, dumpfile=None,
+ snaplen=None, buffer_size=None):
"""Create a single instance of a pcap listener.
Keyword arguments:
- device The interface to listen on. Defaults to the first interface
- beginning with 'lo'.
- bpf_filter BPF (filter) describing what packets to match, i.e.
- "port 5060"
- dumpfile The filename at which to save a pcap capture
+ device The interface to listen on. Defaults to the first interface
+ beginning with 'lo'.
+ bpf_filter BPF (filter) describing what packets to match, i.e.
+ "port 5060"
+ dumpfile The filename at which to save a pcap capture
+ snaplen Number of bytes to capture from each packet. Defaults to
+ 65535.
+ buffer_size The ring buffer size. Defaults to 0.
"""
@@ -313,7 +317,8 @@
# tests can create their own. Tests may only want to watch a specific
# port, while a general logger will want to watch more general traffic
# which can be filtered later.
- return PcapListener(device, bpf_filter, dumpfile, self._pcap_callback)
+ return PcapListener(device, bpf_filter, dumpfile, self._pcap_callback,
+ snaplen, buffer_size)
def start_asterisk(self):
"""This method will be called when the reactor is running, but
Modified: asterisk/trunk/lib/python/pcap_listener.py
URL: http://svnview.digium.com/svn/testsuite/asterisk/trunk/lib/python/pcap_listener.py?view=diff&rev=5935&r1=5934&r2=5935
==============================================================================
--- asterisk/trunk/lib/python/pcap_listener.py (original)
+++ asterisk/trunk/lib/python/pcap_listener.py Mon Nov 17 14:59:15 2014
@@ -3,10 +3,12 @@
class PcapFile(abstract.FileDescriptor):
"""Treat a live pcap capture as a file for Twisted to call select() on"""
- def __init__(self, protocol, interface, xfilter=None, dumpfile=None):
+ def __init__(self, protocol, interface, xfilter=None, dumpfile=None,
+ snaplen=65535, buffer_size=0):
abstract.FileDescriptor.__init__(self)
- p = PcapLive(interface, autosave=dumpfile)
+ p = PcapLive(interface, autosave=dumpfile, snaplen=snaplen,
+ buffer_size=buffer_size)
p.activate()
p.blocking = False
@@ -41,18 +43,27 @@
class PcapListener(protocol.Protocol):
"""A Twisted protocol wrapper for a pcap capture"""
- def __init__(self, interface, bpf_filter=None, dumpfile=None, callback=None):
+ def __init__(self, interface, bpf_filter=None, dumpfile=None,
+ callback=None, snaplen=None, buffer_size=None):
"""Initialize a new PcapListener
interface - The name of an interface. If None, the first loopback interface
bpf_filter - A Berkeley packet filter, i.e. "udp port 5060"
dumpfile - The filename where to save the capture file
callback - A function that will receive a PcapPacket for each packet captured
+ snaplen - Number of bytes to capture from each packet. If None, then
+ 65535.
+ buffer_size - The ring buffer size. If None, then 0.
"""
if interface is None:
interface = [x.name for x in findalldevs() if x.loopback][0]
- self.pf = PcapFile(self, interface, bpf_filter, dumpfile)
+ if buffer_size is None:
+ buffer_size = 0
+ if snaplen is None:
+ snaplen = 65535
+ self.pf = PcapFile(self, interface, bpf_filter, dumpfile, snaplen,
+ buffer_size)
self.callback = callback
def makeConnection(self, transport):
More information about the svn-commits
mailing list