| 1234567891011121314151617181920212223242526272829303132333435363738394041 |
- // This file documents the wire format the nebula handshake speaks. It is
- // not run through protoc; the encoder/decoder in payload.go is hand-written
- // against this shape directly to keep the parser narrow and panic-free.
- //
- // Any change to the wire format must be reflected here, and adding a new
- // field requires updating MarshalPayload / unmarshalPayloadDetails together
- // with the field-uniqueness and wire-type checks in those functions.
- syntax = "proto3";
- package nebula.handshake;
- message NebulaHandshake {
- NebulaHandshakeDetails Details = 1;
- bytes Hmac = 2;
- }
- message NebulaHandshakeDetails {
- bytes Cert = 1;
- uint32 InitiatorIndex = 2;
- uint32 ResponderIndex = 3;
- // Cookie was reserved for an anti-DoS mechanism that was never
- // implemented. No released version of nebula has ever populated it; the
- // 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;
- }
- // LaneDetails advertises a host's multiport lane capability. On a base
- // handshake LaneIndex is 0 and PortCount/BasePort describe the sender's
- // consecutively bound UDP ports. On a lane handshake the initiator sets
- // LaneIndex to its (nonzero) lane number.
- message LaneDetails {
- uint32 PortCount = 1;
- uint32 BasePort = 2;
- uint32 LaneIndex = 3;
- }
|