Start working on ethermess.7
This commit is contained in:
parent
7acacd1ec9
commit
5e86db7155
|
@ -0,0 +1,102 @@
|
|||
.Dd July 16, 2019
|
||||
.Dt ETHERMESS 7
|
||||
.Os
|
||||
.Sh NAME
|
||||
.Nm EtherMess
|
||||
.Nd messaging protocol for bare Ethernet
|
||||
.Sh DESCRIPTION
|
||||
.Nm
|
||||
is a protocol for direct messaging over raw Ethernet frames.
|
||||
.Pp
|
||||
The structure of an Ethernet frame containing an EtherMess packet is as
|
||||
follows:
|
||||
.TS
|
||||
allbox;
|
||||
lb lb lb lb
|
||||
l l l l
|
||||
^ l l l
|
||||
^ l l l
|
||||
l l l l
|
||||
^ l l l
|
||||
l l l l
|
||||
l l l l.
|
||||
Part Field Length (B) Contents
|
||||
Ethernet header Destination 6 Recipient's MAC
|
||||
Source 6 Sender's MAC
|
||||
EtherType 2 0xDA7A
|
||||
EtherMess header Version 1 0x00
|
||||
Packet type 1 (defined below)
|
||||
Payload 0 - 1494 (depends on packet type)
|
||||
Padding 0 - 1494 0x00
|
||||
.TE
|
||||
.Pp
|
||||
Padding may always be present, and it can be any length that fits into the
|
||||
Ethernet frame after the headers and the payload.
|
||||
Only requirement for padding is that it has to be all zero bytes.
|
||||
.Pp
|
||||
NOTE: Frame check sequence is not present in the table above, as at least
|
||||
on Linux if you read and write raw Ethernet frames using
|
||||
.Xr packet 7
|
||||
it gets stripped off and added by the lower level drivers.
|
||||
.Ss Packet type
|
||||
.Bl -tag -width Ds
|
||||
.It Speak version (0x00)
|
||||
.TS
|
||||
allbox;
|
||||
lb lb lb
|
||||
l l l.
|
||||
Field Length (B) Contents
|
||||
Version 1 EtherMess protocol version
|
||||
.TE
|
||||
.Pp
|
||||
Tells the recipient to speak the given version of the protocol.
|
||||
Should be generated whenever you receive an EtherMess packet with a version
|
||||
you don't speak.
|
||||
.It Status request (0x01)
|
||||
Requests the recipient to tell its status and nick.
|
||||
Upon receiving this packet, a status packet should be sent to the sender.
|
||||
.It Status (0x02)
|
||||
.TS
|
||||
allbox;
|
||||
lb lb lb
|
||||
l l l.
|
||||
Field Length (B) Contents
|
||||
Status 1 (defined below)
|
||||
Nick length 1 Length of the nick field in bytes
|
||||
Nick 0 - 255 Nick encoded as utf-8
|
||||
.TE
|
||||
.Pp
|
||||
Informs the recipient about the current status and the nick of the sender.
|
||||
.Pp
|
||||
Allowed values for the status field are:
|
||||
.Bl -tag -width Ds
|
||||
.It 0x00
|
||||
Available
|
||||
.It 0x01
|
||||
Unavailable
|
||||
.It 0x02
|
||||
Offline
|
||||
.El
|
||||
.Pp
|
||||
The nick field must contain valid utf-8.
|
||||
That is, it may not contain overlong encodings, codepoints over U+10FFFF,
|
||||
or surrogate pairs.
|
||||
.Pp
|
||||
Additionally, the nick may not contain any non-characters (U+xxFFFE,
|
||||
U+xxFFFF, U+FDD0 - U+FDED), C0 control characters (U+00 - U+1F), C1 control
|
||||
characters (U+80 - U+9F), or the codepoints U+2028 LINE SEPARATOR and
|
||||
U+2029 PARAGRAPH SEPARATOR.
|
||||
.Pp
|
||||
If the message has a status that is not recognized or the nick is not valid
|
||||
utf-8 or contains disallowed codepopoints, the message must be ignored.
|
||||
.It Msgid request (0x03)
|
||||
<>
|
||||
.It Msgid (0x04)
|
||||
<>
|
||||
.It Message (0x05)
|
||||
<>
|
||||
.It ACK (0x06)
|
||||
<>
|
||||
.El
|
||||
.Sh SEE ALSO
|
||||
.Xr ethermess 1
|
Loading…
Reference in New Issue