- Don't probe lanes on a tunnel idle in both directions, and don't count lane
probes or their acks as tunnel traffic. A lane's own keepalive was keeping
idle tunnels from ever being dropped by tunnels.drop_inactive.
- Accept a recv_error from an up lane's target. The peer answers lane traffic
from the lane socket it arrived on, and the spoof guard only accepted the
base remote, so recv_errors for lane traffic were ignored.
- Keep the probe generation across a lane reset, so an ack for a probe sent
before a roam can't promote the lane on the new path.
- Bring handshake.proto in line with payload.go: field 3 is reserved and
TxLanes is field 4.
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.