From 6a65270aede1352c05ff07410c770fc45057a0d4 Mon Sep 17 00:00:00 2001 From: Stephen <stephengroat@users.noreply.github.com> Date: Wed, 31 May 2017 16:38:32 -0700 Subject: [PATCH] Allow sockets to be provided to send and sendp speeds up send and sendp by preventing socket re-initialization for each send --- scapy/sendrecv.py | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/scapy/sendrecv.py b/scapy/sendrecv.py index da0a98e7..1d0de06e 100644 --- a/scapy/sendrecv.py +++ b/scapy/sendrecv.py @@ -269,20 +269,27 @@ def __gen_send(s, x, inter=0, loop=0, count=None, verbose=None, realtime=None, r return sent_packets @conf.commands.register -def send(x, inter=0, loop=0, count=None, verbose=None, realtime=None, return_packets=False, *args, **kargs): +def send(x, inter=0, loop=0, count=None, verbose=None, realtime=None, return_packets=False, socket=None, + *args, **kargs): """Send packets at layer 3 -send(packets, [inter=0], [loop=0], [verbose=conf.verb]) -> None""" - return __gen_send(conf.L3socket(*args, **kargs), x, inter=inter, loop=loop, count=count,verbose=verbose, +send(packets, [inter=0], [loop=0], [count=None], [verbose=conf.verb], [realtime=None], [return_packets=False], + [socket=None]) -> None""" + if socket is None: + socket = conf.L3socket(*args, **kargs) + return __gen_send(socket, x, inter=inter, loop=loop, count=count,verbose=verbose, realtime=realtime, return_packets=return_packets) @conf.commands.register def sendp(x, inter=0, loop=0, iface=None, iface_hint=None, count=None, verbose=None, realtime=None, - return_packets=False, *args, **kargs): + return_packets=False, socket=None, *args, **kargs): """Send packets at layer 2 -sendp(packets, [inter=0], [loop=0], [verbose=conf.verb]) -> None""" - if iface is None and iface_hint is not None: +sendp(packets, [inter=0], [loop=0], [iface=None], [iface_hint=None], [count=None], [verbose=conf.verb], + [realtime=None], [return_packets=False], [socket=None]) -> None""" + if iface is None and iface_hint is not None and socket is None: iface = conf.route.route(iface_hint)[0] - return __gen_send(conf.L2socket(iface=iface, *args, **kargs), x, inter=inter, loop=loop, count=count, + if socket is None: + socket = conf.L2socket(iface=iface, *args, **kargs) + return __gen_send(socket, x, inter=inter, loop=loop, count=count, verbose=verbose, realtime=realtime, return_packets=return_packets) @conf.commands.register -- GitLab