Protocol and reference implementation for direct messaging over raw Ethernet
Go to file
Juhani Krekelä 27a8418f21 Don't create Speak version packets for broadcasts.
This allows new versions of the protocol to send broadcast advertizements
without the older versions telling the sender to speak their version.

Version 1.0 of the reference implementation will still do that, but the
issue is not great enough to warrant pulling and replacing it.
2019-07-28 20:58:57 +03:00
.gitignore Start working on the frontend 2019-07-10 22:10:14 +03:00
CC0 First commit 2019-07-03 22:20:25 +03:00
Makefile Take better advantage of install(1) 2019-07-19 00:02:21 +03:00
README.md Make licensing clear 2019-07-20 22:32:45 +03:00
arp-request.c Remove unnecessary errno = 0; 2019-07-10 13:38:40 +03:00
ethermess-backend.c Don't create Speak version packets for broadcasts. 2019-07-28 20:58:57 +03:00
ethermess.1 Let's not give our example users multicast MACs 2019-07-16 19:13:25 +03:00
ethermess.7 Don't create Speak version packets for broadcasts. 2019-07-28 20:58:57 +03:00
ethermess.py Don't modify peers[foo].lastseen unless peers[foo] exists 2019-07-19 00:17:45 +03:00
ethertype-dump.c Remove unnecessary errno = 0; 2019-07-10 13:38:40 +03:00
frontend-backend-protocol.md Document the other case where msgid might become invalid 2019-07-15 11:02:39 +03:00
test.sh Only do setcap in test.sh if necessary 2019-07-16 12:34:34 +03:00

README.md

EtherMess

EtherMess is a protocol for direct messaging over bare Ethernet as well as a reference implementation for it in C and Python.

Building and installing

Build with make and install with make install. If you are installing somewhere other than the default of /usr/local, please set PREFIX to that location during both build and installation steps.

make install will tell you how to set the correct capability on ethermess-backend to allow running it as a normal user.

Protocol documentation

Description of the EtherMess protocol is provided as a man page ethermess.7. The description is contractual, and may not change in incompatible ways unless the version number in the EtherMess packets is updated.

Additionally a description of the protocol spoken between ethermess-backend and ethermess is provided to help understand the code and develop alternative frontends. The description is non-contractual and the protocol may change with future versions of ethermess.

Licensing

Everything in the repository is under Creative Commons Zero 1.0 Universal license.