From c904911fe40e442c39d8b925c03e406b0a1ebef6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Henrik=20Tj=C3=A4der?= <henrik.tjader@gmail.com>
Date: Sat, 31 Jan 2015 15:16:56 +0100
Subject: [PATCH] Added the UDP reflector

---
 UDP-reflector.py | 43 +++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 43 insertions(+)
 create mode 100644 UDP-reflector.py

diff --git a/UDP-reflector.py b/UDP-reflector.py
new file mode 100644
index 0000000..3ba029b
--- /dev/null
+++ b/UDP-reflector.py
@@ -0,0 +1,43 @@
+import socket
+import time
+import sys
+
+#DEFINE INPUTS HERE
+REFLECTOR_HOST = '::1'      #IP ADDRESS TO LISTEN FOR INCOMMING PACKETS (v4 or v6)
+REFLECTOR_PORT = 15005     #IP PORT TO LISTEN FOR INCOMMING PACKETS
+REMOTE_PORT = 55555          #REMOTE PORT TO REFLECT PACKETS TO
+REFLECT_SWITCH = 1             #REFLECTION ENABLED:1 (TWO-WAY DELAY), REFLECTION DISABLED:0 (ONE-WAY DELAY)
+BUFFER = 4096
+
+ADDR = (REFLECTOR_HOST,  REFLECTOR_PORT)
+
+#DUMB CHECK OF IP ADDRESS VERSION
+if ':' in REFLECTOR_HOST:
+    EchoServer = socket.socket(socket.AF_INET6, socket.SOCK_DGRAM)
+else:
+    EchoServer = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
+
+#BINDING, PROCESSING AND WRITING TO CSV
+try:
+    EchoServer.bind(ADDR)
+    print 'echo server started on port', ADDR
+except Exception:
+    print '***ERROR: Port Binding Failed'
+
+while True:
+    data, addr = EchoServer.recvfrom(BUFFER)
+    addlst=addr[0],REMOTE_PORT
+
+    if REFLECT_SWITCH == 1:
+        EchoServer.sendto('%s' % (data), addlst)
+
+    splitdata = data.split(',')
+    timecount = splitdata[0].strip("('")
+    one_way_delay = (time.time() - float(timecount))
+    packet_number = str(splitdata[1].strip("' '"))
+    packet_number = packet_number.lstrip('0')
+
+    outfile = open("udp_oneway_results.csv", "a").write(str(time.ctime()+','+'received , '+ packet_number+' , '+str(one_way_delay)+'\n'))
+    print (time.ctime()+','+'received , '+ packet_number+' , '+str(one_way_delay))
+
+EchoServer.close()
-- 
GitLab