// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

syntax = "proto2";

option optimize_for = LITE_RUNTIME;

import "quiche/quic/core/proto/cached_network_parameters.proto";

package quic;

// A SourceAddressToken is serialised, encrypted and sent to clients so that
// they can prove ownership of an IP address.
message SourceAddressToken {
  // ip contains either 4 (IPv4) or 16 (IPv6) bytes of IP address in network
  // byte order.
  required bytes ip = 1;
  // timestamp contains a UNIX timestamp value of the time when the token was
  // created.
  required int64 timestamp = 2;
  // The server can provide estimated network parameters to be used for
  // initial parameter selection in future connections.
  optional CachedNetworkParameters cached_network_parameters = 3;
};

// SourceAddressTokens are simply lists of SourceAddressToken messages.
message SourceAddressTokens {
  // This field has id 4 to avoid ambiguity between the serialized form of
  // SourceAddressToken vs SourceAddressTokens.
  repeated SourceAddressToken tokens = 4;
};
