|
1 | 1 | # Packet Structure |
2 | 2 |
|
3 | | -| Field | Size (bytes) | Description | |
4 | | -|--------------|------------------------|-------------| |
5 | | -| `header` | 1 | Contains routing type, payload type, and payload version. | |
6 | | -| `payload_len` | 2 | Length of the payload in bytes. | |
7 | | -| `path_len` | 2 | Length of the path field in bytes. | |
8 | | -| `path` | `MAX_PATH_SIZE` | Stores the routing path if applicable. | |
9 | | -| `payload` | `MAX_PACKET_PAYLOAD` | The actual data being transmitted. | |
| 3 | +| Field | Size (bytes) | Description | |
| 4 | +|----------|----------------------------------|-----------------------------------------------------------| |
| 5 | +| header | 1 | Contains routing type, payload type, and payload version. | |
| 6 | +| path_len | 1 | Length of the path field in bytes. | |
| 7 | +| path | up to 64 (`MAX_PATH_SIZE`) | Stores the routing path if applicable. | |
| 8 | +| payload | up to 184 (`MAX_PACKET_PAYLOAD`) | The actual data being transmitted. | |
| 9 | + |
| 10 | +Note: see the [payloads doc](./payloads.md) for more information about the content of payload. |
10 | 11 |
|
11 | 12 | ## Header Breakdown |
12 | 13 |
|
13 | | -| Bits | Mask | Field | Description | |
14 | | -|-------|---------------|----------------|-------------| |
15 | | -| 0-1 | `0x03` | Route Type | Specifies the routing type (Flood, Direct, Reserved). | |
16 | | -| 2-5 | `0x0F` | Payload Type | Specifies the type of payload (Request, Response, Text, ACK, etc.). | |
17 | | -| 6-7 | `0x03` | Payload Version | Versioning of the payload format. | |
| 14 | +| Bits | Mask | Field | Description | |
| 15 | +|-------|--------|-----------------|-----------------------------------------------| |
| 16 | +| 0-1 | `0x03` | Route Type | Flood, Direct, Reserved - see below. | |
| 17 | +| 2-5 | `0x0F` | Payload Type | Request, Response, ACK, etc. - see below. | |
| 18 | +| 6-7 | `0x03` | Payload Version | Versioning of the payload format - see below. | |
18 | 19 |
|
19 | 20 | ## Route Type Values |
20 | 21 |
|
21 | | -| Value | Name | Description | |
22 | | -|--------|-------------------------|-------------| |
23 | | -| `0x00` | `ROUTE_TYPE_RESERVED1` | Reserved for future use. | |
| 22 | +| Value | Name | Description | |
| 23 | +|--------|------------------------|--------------------------------------| |
| 24 | +| `0x00` | `ROUTE_TYPE_RESERVED1` | Reserved for future use. | |
24 | 25 | | `0x01` | `ROUTE_TYPE_FLOOD` | Flood routing mode (builds up path). | |
25 | | -| `0x02` | `ROUTE_TYPE_DIRECT` | Direct route (path is supplied). | |
26 | | -| `0x03` | `ROUTE_TYPE_RESERVED2` | Reserved for future use. | |
| 26 | +| `0x02` | `ROUTE_TYPE_DIRECT` | Direct route (path is supplied). | |
| 27 | +| `0x03` | `ROUTE_TYPE_RESERVED2` | Reserved for future use. | |
27 | 28 |
|
28 | 29 | ## Payload Type Values |
29 | 30 |
|
30 | | -| Value | Name | Description | |
31 | | -|--------|-------------------------|-------------| |
32 | | -| `0x00` | `PAYLOAD_TYPE_REQ` | Request (destination/source hashes + MAC). | |
33 | | -| `0x01` | `PAYLOAD_TYPE_RESPONSE` | Response to REQ or ANON_REQ. | |
34 | | -| `0x02` | `PAYLOAD_TYPE_TXT_MSG` | Plain text message. | |
35 | | -| `0x03` | `PAYLOAD_TYPE_ACK` | Acknowledgment. | |
36 | | -| `0x04` | `PAYLOAD_TYPE_ADVERT` | Node advertisement. | |
37 | | -| `0x05` | `PAYLOAD_TYPE_GRP_TXT` | Group text message (unverified). | |
38 | | -| `0x06` | `PAYLOAD_TYPE_GRP_DATA` | Group datagram (unverified). | |
39 | | -| `0x07` | `PAYLOAD_TYPE_ANON_REQ` | Anonymous request. | |
40 | | -| `0x08` | `PAYLOAD_TYPE_PATH` | Returned path. | |
| 31 | +| Value | Name | Description | |
| 32 | +|--------|---------------------------|-----------------------------------------------| |
| 33 | +| `0x00` | `PAYLOAD_TYPE_REQ` | Request (destination/source hashes + MAC). | |
| 34 | +| `0x01` | `PAYLOAD_TYPE_RESPONSE` | Response to REQ or ANON_REQ. | |
| 35 | +| `0x02` | `PAYLOAD_TYPE_TXT_MSG` | Plain text message. | |
| 36 | +| `0x03` | `PAYLOAD_TYPE_ACK` | Acknowledgment. | |
| 37 | +| `0x04` | `PAYLOAD_TYPE_ADVERT` | Node advertisement. | |
| 38 | +| `0x05` | `PAYLOAD_TYPE_GRP_TXT` | Group text message (unverified). | |
| 39 | +| `0x06` | `PAYLOAD_TYPE_GRP_DATA` | Group datagram (unverified). | |
| 40 | +| `0x07` | `PAYLOAD_TYPE_ANON_REQ` | Anonymous request. | |
| 41 | +| `0x08` | `PAYLOAD_TYPE_PATH` | Returned path. | |
41 | 42 | | `0x0F` | `PAYLOAD_TYPE_RAW_CUSTOM` | Custom packet (raw bytes, custom encryption). | |
42 | 43 |
|
43 | 44 | ## Payload Version Values |
44 | 45 |
|
45 | | -| Value | Name | Description | |
46 | | -|--------|---------------|-------------| |
47 | | -| `0x00` | `PAYLOAD_VER_1` | 1-byte src/dest hashes, 2-byte MAC. | |
48 | | -| `0x01` | `PAYLOAD_VER_2` | Future version (e.g., 2-byte hashes, 4-byte MAC). | |
49 | | -| `0x02` | `PAYLOAD_VER_3` | Future version. | |
50 | | -| `0x03` | `PAYLOAD_VER_4` | Future version. | |
| 46 | +| Value | Version | Description | |
| 47 | +|--------|---------|---------------------------------------------------| |
| 48 | +| `0x00` | 1 | 1-byte src/dest hashes, 2-byte MAC. | |
| 49 | +| `0x01` | 2 | Future version (e.g., 2-byte hashes, 4-byte MAC). | |
| 50 | +| `0x02` | 3 | Future version. | |
| 51 | +| `0x03` | 4 | Future version. | |
0 commit comments