Skip to content
Snippets Groups Projects
Commit f1e111ca authored by namitsingal@gmail.com's avatar namitsingal@gmail.com
Browse files

added a parameter in send and sendp so that user has an option for returning the sent packets

--HG--
branch : issue_5122
parent 5cdde16a
No related branches found
No related tags found
No related merge requests found
......@@ -207,7 +207,7 @@ def sndrcv(pks, pkt, timeout = None, inter = 0, verbose=None, chainCC=0, retry=0
return plist.SndRcvList(ans),plist.PacketList(remain,"Unanswered")
def __gen_send(s, x, inter=0, loop=0, count=None, verbose=None, realtime=None, *args, **kargs):
def __gen_send(s, x, inter=0, loop=0, count=None, verbose=None, realtime=None, return_packets=False, *args, **kargs):
if type(x) is str:
x = conf.raw_layer(load=x)
if not isinstance(x, Gen):
......@@ -219,7 +219,8 @@ def __gen_send(s, x, inter=0, loop=0, count=None, verbose=None, realtime=None, *
loop = -count
elif not loop:
loop = -1
sent_packets = []
if return_packets:
sent_packets = plist.PacketList()
try:
while loop:
dt0 = None
......@@ -233,7 +234,8 @@ def __gen_send(s, x, inter=0, loop=0, count=None, verbose=None, realtime=None, *
else:
dt0 = ct-p.time
s.send(p)
sent_packets.append(p)
if return_packets:
sent_packets.append(p)
n += 1
if verbose:
os.write(1,".")
......@@ -245,21 +247,25 @@ def __gen_send(s, x, inter=0, loop=0, count=None, verbose=None, realtime=None, *
s.close()
if verbose:
print "\nSent %i packets." % n
return sent_packets
if return_packets:
return sent_packets
@conf.commands.register
def send(x, inter=0, loop=0, count=None, verbose=None, realtime=None, *args, **kargs):
def send(x, inter=0, loop=0, count=None, verbose=None, realtime=None, return_packets=False, *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, realtime=realtime)
return __gen_send(conf.L3socket(*args, **kargs), 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, *args, **kargs):
def sendp(x, inter=0, loop=0, iface=None, iface_hint=None, count=None, verbose=None, realtime=None,
return_packets=False, *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:
iface = conf.route.route(iface_hint)[0]
return __gen_send(conf.L2socket(iface=iface, *args, **kargs), x, inter=inter, loop=loop, count=count, verbose=verbose, realtime=realtime)
return __gen_send(conf.L2socket(iface=iface, *args, **kargs), x, inter=inter, loop=loop, count=count,
verbose=verbose, realtime=realtime, return_packets=return_packets)
@conf.commands.register
def sendpfast(x, pps=None, mbps=None, realtime=None, loop=0, file_cache=False, iface=None):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment