announce server hostname in MANIFEST, display in client
Server reads its hostname via gethostname(2) and includes it as a length-prefixed UTF-8 string at the start of the MANIFEST payload. Client displays 'Server: <hostname> — <MAC>' in a label above the upstream list. Both sides updated for the new MANIFEST format: [hostname_len:1][hostname:N][entries...] Protocol version unchanged (still 1); MANIFEST payload layout change is backward-incompatible but both sides ship together.
This commit is contained in:
+13
-3
@@ -59,18 +59,27 @@ Reserved (unimplemented in v1; parse returns Err, encode unimplemented):
|
||||
|
||||
### MANIFEST payload
|
||||
|
||||
Variable-length entries, parsed sequentially until the payload is consumed.
|
||||
A hostname prefix followed by variable-length entries, parsed sequentially
|
||||
until the payload is consumed.
|
||||
|
||||
```
|
||||
0 1 2 3
|
||||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
|
||||
+---------------+---------------+-------------------------------+
|
||||
+---------------+-----------------------------------------------+
|
||||
| hostname_len | hostname (UTF-8, hostname_len bytes) ... |
|
||||
+---------------+-----------------------------------------------+
|
||||
| id | proto | port (big-endian) |
|
||||
+---------------+---------------+-------------------------------+
|
||||
| label_len | label (UTF-8, label_len bytes) ... |
|
||||
+---------------+-----------------------------------------------+
|
||||
| ... repeated ... |
|
||||
+---------------------------------------------------------------+
|
||||
```
|
||||
|
||||
- **hostname_len** (u8): length in bytes of the server's hostname. `0` is valid
|
||||
(unknown hostname).
|
||||
- **hostname** (`hostname_len` bytes, UTF-8): the server's hostname, read via
|
||||
`gethostname(2)` at startup. Maximum 255 bytes.
|
||||
- **id** (u8): upstream identifier (1-based positional index from `gatunad`
|
||||
cmdline).
|
||||
- **proto** (u8): `1 = TCP`, `2 = UDP` (reserved; not emitted in v1).
|
||||
@@ -80,7 +89,8 @@ Variable-length entries, parsed sequentially until the payload is consumed.
|
||||
- **label** (`label_len` bytes, UTF-8): human-readable name for the upstream,
|
||||
taken from the `PORT[:label]` cmdline argument. Maximum 255 bytes.
|
||||
|
||||
To parse: read the 5-byte fixed prefix, then `label_len` bytes, and repeat until
|
||||
To parse: read `hostname_len`, then `hostname_len` bytes of hostname, then read
|
||||
5-byte fixed entry prefixes + `label_len` bytes of label each, repeating until
|
||||
the payload is exhausted. The number of entries is not carried explicitly.
|
||||
|
||||
### OPEN payload
|
||||
|
||||
Reference in New Issue
Block a user