syntax = "proto3";

package xray.proxy.wireguard;
option csharp_namespace = "Xray.Proxy.WireGuard";
option go_package = "github.com/xtls/xray-core/proxy/wireguard";
option java_package = "com.xray.proxy.wireguard";
option java_multiple_files = true;

import "common/protocol/user.proto";

message PeerConfig {
  string public_key = 1;
  string pre_shared_key = 2;
  string endpoint = 3;
  string keep_alive = 4;
  repeated string allowed_ips = 5;
}

message DeviceConfig {
  enum DomainStrategy {
    FORCE_IP = 0;
    FORCE_IP4 = 1;
    FORCE_IP6 = 2;
    FORCE_IP46 = 3;
    FORCE_IP64 = 4;
  }
  string secret_key = 1;
  repeated string endpoint = 2;
  repeated PeerConfig peers = 3;
  repeated xray.common.protocol.User users = 5;
  int32 mtu = 4;

  bytes reserved = 6;
  DomainStrategy domain_strategy = 7;
  bool is_client = 8;
  bool no_kernel_tun = 9;
}