UDP packet relay
Add note about -timeout parsing specifics
Allow peers to send an optional payload with udprelay!channel commands
Add plaintext man page output to .gitignore



You can also use your local clone with git send-email.


udprelay is a program that accepts UDP connections and relays all incoming data to every known peer. By default, it does this transparently, resending packets to every address it's received a packet from in the last ten minutes; however, with the -protocol option, udprelay will implement a lightweight protocol which checks all incoming packets for commands to implement functionality such as channel switching and keep-alives.

For documentation on the program and protocol, check udprelay(1) and udprelay(7) respectively.

#Basic usage

To make udprelay act as a transparent packet relay, just tell it what port to run on:

udprelay 9999

udprelay will now listen for incoming packets on port 9999 and relay them to any peers it has received packets from within the last ten minutes. To adjust this timeout duration, use the -timeout flag:

udprelay -timeout 30m 9999

udprelay can also implement a command protocol as defined in udprelay(7) which adds additional functionality. Enable this with the -protocol flag:

udprelay -protocol 9999

#Building & Installation

A udprelay package for Arch Linux is available in the AUR (udprelay). If you maintain a udprelay package for your distro, feel free to submit a patch to add a link to this README!

Building udprelay from source only requires an installation of Go and its standard library. Run make udprelay to build the udprelay binary.

To make the man pages, you will need to have scdoc. Simply run make docs to generate udprelay.1 and udprelay.7.


Feel free to submit patches or ask questions at ~kt/udprelay@lists.sr.ht