#!/usr/bin/python

from sys import argv, exit
from socket import *

bufsize = 65*1024

if len(argv) != 6:
	print "syntax: udp_relay port host1 port1 host2 port2"
	exit(1)

port, host1, port1, host2, port2 = argv[1:]
port = int(port) ; port1 = int(port1) ; port2 = int(port2)

addr1 = (host1, port1) ; addr2 = (host2, port2)

sock = socket(AF_INET, SOCK_DGRAM)
sock.bind(("", port))

while 1:
	buf, from_addr = sock.recvfrom(bufsize)
	from_host, from_port = from_addr
	if from_host == host1:
		to_addr = addr2
	else:
		to_addr = addr1
	sock.sendto(buf, 0, to_addr)
	print "relayed packet from:", from_addr, "to:", to_addr
