handshake: move lane fields to 9 and 10

Fields 6 and 7 are reserved for work in progress, so the multiport lane
adverts move up to 9 and 10. Both are still single-byte tags, so the
encoded payload size does not change.

Also emit the lane fields after CertVersion so MarshalPayload stays in
ascending field-number order, matching what protoc-gen-go would produce
and keeping the hand-built expectations in payload_test.go
straightforward.

Field numbers are the only thing that identifies a lane advert, so a node
on this build and one on the previous numbering will each skip the other's
adverts as unknown fields and fall back to a single vanilla tunnel.
This commit is contained in:
Wade Simmons
2026-09-02 14:48:11 -04:00
parent 11528c6e02
commit a4c813fd26
2 changed files with 19 additions and 15 deletions
+6 -4
View File
@@ -23,11 +23,13 @@ message NebulaHandshakeDetails {
// hand-written parser silently skips it on read.
uint64 Cookie = 4 [deprecated = true];
uint64 Time = 5;
// Multiport lane negotiation. Absent on hosts without multiport enabled;
// vanilla nebula treats 6 and 7 as unknown fields and skips them.
LaneDetails InitiatorLanes = 6;
LaneDetails ResponderLanes = 7;
uint32 CertVersion = 8;
// reserved for WIP multiport
reserved 6, 7;
// Multiport lane negotiation. Absent on hosts without multiport enabled;
// vanilla nebula treats 9 and 10 as unknown fields and skips them.
LaneDetails InitiatorLanes = 9;
LaneDetails ResponderLanes = 10;
}
// LaneDetails advertises a host's multiport lane capability. On a base