import "steamdatagram_auth_messages.proto"; option cc_generic_services = false; enum ESteamDatagramMsgID { k_ESteamDatagramMsg_Invalid = 0; k_ESteamDatagramMsg_RouterPingRequest = 1; k_ESteamDatagramMsg_RouterPingReply = 2; k_ESteamDatagramMsg_GameserverPingRequest = 3; k_ESteamDatagramMsg_GameserverPingReply = 4; k_ESteamDatagramMsg_GameserverSessionRequest = 5; k_ESteamDatagramMsg_GameserverSessionEstablished = 6; k_ESteamDatagramMsg_NoSession = 7; k_ESteamDatagramMsg_Diagnostic = 8; k_ESteamDatagramMsg_DataClientToRouter = 9; k_ESteamDatagramMsg_DataRouterToServer = 10; k_ESteamDatagramMsg_DataServerToRouter = 11; k_ESteamDatagramMsg_DataRouterToClient = 12; k_ESteamDatagramMsg_Stats = 13; k_ESteamDatagramMsg_ClientPingSampleRequest = 14; k_ESteamDatagramMsg_ClientPingSampleReply = 15; k_ESteamDatagramMsg_ClientToRouterSwitchedPrimary = 16; k_ESteamDatagramMsg_RelayHealth = 17; k_ESteamDatagramMsg_ConnectRequest = 18; k_ESteamDatagramMsg_ConnectOK = 19; k_ESteamDatagramMsg_ConnectionClosed = 20; k_ESteamDatagramMsg_NoConnection = 21; k_ESteamDatagramMsg_RelayToRelayPingRequest = 22; k_ESteamDatagramMsg_RelayToRelayPingReply = 23; k_ESteamDatagramMsg_P2PSessionRequest = 24; k_ESteamDatagramMsg_P2PSessionEstablished = 25; } enum ESteamNetworkingUDPMsgID { k_ESteamNetworkingUDPMsg_ChallengeRequest = 32; k_ESteamNetworkingUDPMsg_ChallengeReply = 33; k_ESteamNetworkingUDPMsg_ConnectRequest = 34; k_ESteamNetworkingUDPMsg_ConnectOK = 35; k_ESteamNetworkingUDPMsg_ConnectionClosed = 36; k_ESteamNetworkingUDPMsg_NoConnection = 37; k_ESteamNetworkingUDPMsg_Stats = 38; } message CMsgSteamDatagramRouterPingReply { message RouteException { optional fixed32 data_center_id = 1; optional uint32 flags = 2; optional uint32 penalty = 3; } optional fixed32 client_timestamp = 1; repeated fixed32 latency_datacenter_ids = 2 [packed = true]; repeated uint32 latency_ping_ms = 3 [packed = true]; optional fixed32 your_public_ip = 4; optional fixed32 server_time = 5; optional fixed64 challenge = 6; optional uint32 seconds_until_shutdown = 7; optional fixed32 client_cookie = 8; optional uint32 scoring_penalty_relay_cluster = 9; repeated .CMsgSteamDatagramRouterPingReply.RouteException route_exceptions = 10; } message CMsgSteamDatagramGameserverPing { optional uint32 legacy_client_session = 1; optional fixed64 client_steam_id = 2; optional fixed32 client_timestamp = 3; optional fixed32 router_timestamp = 4; optional uint32 router_gameserver_latency = 5; optional uint32 seq_number_router = 6; optional uint32 seq_number_e2e = 7; optional uint32 relay_session_id = 8; optional fixed32 connection_id = 9; } message CMsgSteamDatagramRelayToRelayPing { optional fixed32 request_timestamp = 1; optional fixed32 request_date = 2; optional fixed32 my_pop_id = 3; optional fixed32 your_pop_id = 4; optional fixed32 checksum = 5; } message CMsgSteamDatagramSessionCryptInfo { enum EKeyType { INVALID = 0; CURVE25519 = 1; } optional .CMsgSteamDatagramSessionCryptInfo.EKeyType key_type = 1 [default = INVALID]; optional bytes key_data = 2; optional fixed64 nonce = 3; optional bool is_snp = 4; } message CMsgSteamDatagramSessionCryptInfoSigned { optional bytes info = 1; optional bytes signature = 2; } message CMsgSteamDatagramGameserverSessionRequest { optional bytes ticket = 1; optional fixed32 challenge_time = 3; optional fixed64 challenge = 4; optional fixed32 client_connection_id = 5; optional fixed32 server_connection_id = 8; optional uint32 network_config_version = 6; optional uint32 protocol_version = 7; } message CMsgSteamDatagramGameserverSessionEstablished { optional fixed32 connection_id = 1; optional fixed64 gameserver_steam_id = 3; optional uint32 seconds_until_shutdown = 4; optional uint32 legacy_relay_session_id = 5; optional uint32 seq_num_r2c = 6; } message CMsgSteamDatagramNoSessionRelayToClient { optional uint32 legacy_relay_session_id = 1; optional fixed32 connection_id = 7; optional fixed32 your_public_ip = 2; optional fixed32 server_time = 3; optional fixed64 challenge = 4; optional uint32 seconds_until_shutdown = 5; } message CMsgSteamDatagramNoSessionRelayToServer { optional uint32 relay_session_id = 1; optional fixed32 client_connection_id = 7; optional fixed32 server_connection_id = 8; optional fixed64 kludge_pad = 99; } message CMsgSteamDatagramDiagnostic { optional uint32 severity = 1; optional string text = 2; } message CMsgSteamDatagramDataCenterState { message Server { optional string address = 1; optional uint32 ping_ms = 2; } message DataCenter { optional string code = 1; repeated .CMsgSteamDatagramDataCenterState.Server server_sample = 2; repeated .CMsgSteamDatagramDataCenterState.Server relay_sample = 3; } repeated .CMsgSteamDatagramDataCenterState.DataCenter data_centers = 1; } message CMsgSteamDatagramLinkInstantaneousStats { optional uint32 out_packets_per_sec_x10 = 1; optional uint32 out_bytes_per_sec = 2; optional uint32 in_packets_per_sec_x10 = 3; optional uint32 in_bytes_per_sec = 4; optional uint32 ping_ms = 5; optional uint32 packets_dropped_pct = 6; optional uint32 packets_weird_sequence_pct = 7; optional uint32 peak_jitter_usec = 8; } message CMsgSteamDatagramLinkLifetimeStats { optional uint64 packets_sent = 3; optional uint64 kb_sent = 4; optional uint64 packets_recv = 5; optional uint64 kb_recv = 6; optional uint64 packets_recv_sequenced = 7; optional uint64 packets_recv_dropped = 8; optional uint64 packets_recv_out_of_order = 9; optional uint64 packets_recv_duplicate = 10; optional uint64 packets_recv_lurch = 11; optional uint32 quality_histogram_100 = 21; optional uint32 quality_histogram_99 = 22; optional uint32 quality_histogram_97 = 23; optional uint32 quality_histogram_95 = 24; optional uint32 quality_histogram_90 = 25; optional uint32 quality_histogram_75 = 26; optional uint32 quality_histogram_50 = 27; optional uint32 quality_histogram_1 = 28; optional uint32 quality_histogram_dead = 29; optional uint32 quality_ntile_2nd = 30; optional uint32 quality_ntile_5th = 31; optional uint32 quality_ntile_25th = 32; optional uint32 quality_ntile_50th = 33; optional uint32 ping_histogram_25 = 41; optional uint32 ping_histogram_50 = 42; optional uint32 ping_histogram_75 = 43; optional uint32 ping_histogram_100 = 44; optional uint32 ping_histogram_125 = 45; optional uint32 ping_histogram_150 = 46; optional uint32 ping_histogram_200 = 47; optional uint32 ping_histogram_300 = 48; optional uint32 ping_histogram_max = 49; optional uint32 ping_ntile_5th = 50; optional uint32 ping_ntile_50th = 51; optional uint32 ping_ntile_75th = 52; optional uint32 ping_ntile_95th = 53; optional uint32 ping_ntile_98th = 54; optional uint32 jitter_histogram_negligible = 61; optional uint32 jitter_histogram_1 = 62; optional uint32 jitter_histogram_2 = 63; optional uint32 jitter_histogram_5 = 64; optional uint32 jitter_histogram_10 = 65; optional uint32 jitter_histogram_20 = 66; optional uint32 txspeed_max = 67; optional uint32 txspeed_histogram_16 = 68; optional uint32 txspeed_histogram_32 = 69; optional uint32 txspeed_histogram_64 = 70; optional uint32 txspeed_histogram_128 = 71; optional uint32 txspeed_histogram_256 = 72; optional uint32 txspeed_histogram_512 = 73; optional uint32 txspeed_histogram_1024 = 74; optional uint32 txspeed_histogram_max = 75; optional uint32 txspeed_ntile_5th = 76; optional uint32 txspeed_ntile_50th = 77; optional uint32 txspeed_ntile_75th = 78; optional uint32 txspeed_ntile_95th = 79; optional uint32 txspeed_ntile_98th = 80; optional uint32 rxspeed_max = 81; optional uint32 rxspeed_histogram_16 = 82; optional uint32 rxspeed_histogram_32 = 83; optional uint32 rxspeed_histogram_64 = 84; optional uint32 rxspeed_histogram_128 = 85; optional uint32 rxspeed_histogram_256 = 86; optional uint32 rxspeed_histogram_512 = 87; optional uint32 rxspeed_histogram_1024 = 88; optional uint32 rxspeed_histogram_max = 89; optional uint32 rxspeed_ntile_5th = 90; optional uint32 rxspeed_ntile_50th = 91; optional uint32 rxspeed_ntile_75th = 92; optional uint32 rxspeed_ntile_95th = 93; optional uint32 rxspeed_ntile_98th = 94; } message CMsgSteamDatagramConnectionQuality { optional .CMsgSteamDatagramLinkInstantaneousStats instantaneous = 1; optional .CMsgSteamDatagramLinkLifetimeStats lifetime = 2; } message CMsgSteamDatagramConnectionStatsClientToRouter { enum Flags { ACK_REQUEST_RELAY = 1; ACK_REQUEST_E2E = 2; ACK_REQUEST_IMMEDIATE = 4; } optional .CMsgSteamDatagramConnectionQuality c2r = 1; optional .CMsgSteamDatagramConnectionQuality c2s = 2; optional fixed32 legacy_client_timestamp = 3; repeated fixed32 ack_relay = 4; repeated fixed32 ack_e2e = 5; optional uint32 flags = 6; optional fixed32 client_connection_id = 8; optional uint32 seq_num_c2r = 9; optional uint32 seq_num_c2s = 10; } message CMsgSteamDatagramConnectionStatsRouterToClient { enum Flags { ACK_REQUEST_RELAY = 1; ACK_REQUEST_E2E = 2; ACK_REQUEST_IMMEDIATE = 4; } optional .CMsgSteamDatagramConnectionQuality r2c = 1; optional .CMsgSteamDatagramConnectionQuality s2c = 2; optional fixed32 legacy_client_timestamp_from_router = 3; optional fixed32 legacy_client_timestamp_from_server = 4; optional uint32 router_gameserver_latency = 5; optional uint32 seconds_until_shutdown = 6; optional fixed32 migrate_request_ip = 10; optional uint32 migrate_request_port = 11; optional uint32 scoring_penalty_relay_cluster = 12; repeated fixed32 ack_relay = 13; repeated fixed32 ack_e2e = 14; optional uint32 flags = 15; optional fixed32 client_connection_id = 7; optional uint32 seq_num_r2c = 8; optional uint32 seq_num_s2c = 9; } message CMsgSteamDatagramConnectionStatsRouterToServer { enum Flags { ACK_REQUEST_RELAY = 1; ACK_REQUEST_E2E = 2; ACK_REQUEST_IMMEDIATE = 4; } optional .CMsgSteamDatagramConnectionQuality r2s = 1; optional .CMsgSteamDatagramConnectionQuality c2s = 2; optional fixed32 legacy_client_timestamp = 3; optional fixed32 legacy_router_timestamp = 4; repeated fixed32 ack_relay = 10; repeated fixed32 ack_e2e = 11; optional uint32 flags = 12; optional uint32 seq_num_r2s = 5; optional uint32 seq_num_c2s = 6; optional fixed64 client_steam_id = 7; optional uint32 relay_session_id = 8; optional fixed32 client_connection_id = 9; optional fixed32 server_connection_id = 13; } message CMsgSteamDatagramConnectionStatsServerToRouter { enum Flags { ACK_REQUEST_RELAY = 1; ACK_REQUEST_E2E = 2; ACK_REQUEST_IMMEDIATE = 4; } optional .CMsgSteamDatagramConnectionQuality s2r = 1; optional .CMsgSteamDatagramConnectionQuality s2c = 2; repeated fixed32 ack_relay = 8; repeated fixed32 ack_e2e = 9; optional uint32 flags = 10; optional uint32 seq_num_s2r = 3; optional uint32 seq_num_s2c = 4; optional fixed64 client_steam_id = 5; optional uint32 relay_session_id = 6; optional fixed32 client_connection_id = 7; optional fixed32 server_connection_id = 11; } message CMsgSteamDatagramClientPingSampleRequest { optional fixed32 connection_id = 1; } message CMsgSteamDatagramClientPingSampleReply { message RoutingCluster { optional fixed32 id = 1; optional uint32 front_ping_ms = 2; optional uint32 e2e_ping_ms = 3; } message DataCenter { optional fixed32 data_center_id = 1; optional fixed32 via_relay_id = 2; optional uint32 e2e_ping_ms = 3; } optional fixed32 connection_id = 1; repeated .CMsgSteamDatagramClientPingSampleReply.RoutingCluster routing_clusters = 2; repeated .CMsgSteamDatagramClientPingSampleReply.DataCenter data_centers = 3; } message CMsgSteamDatagramClientSwitchedPrimary { message RouterQuality { optional uint32 score = 1; optional uint32 front_ping = 2; optional uint32 back_ping = 3; optional uint32 seconds_until_down = 4; } optional fixed32 connection_id = 1; optional fixed32 from_ip = 2; optional uint32 from_port = 3; optional fixed32 from_router_cluster = 4; optional uint32 from_active_time = 5; optional uint32 from_active_packets_recv = 6; optional string from_dropped_reason = 7; optional uint32 gap_ms = 8; optional .CMsgSteamDatagramClientSwitchedPrimary.RouterQuality from_quality_now = 9; optional .CMsgSteamDatagramClientSwitchedPrimary.RouterQuality to_quality_now = 10; optional .CMsgSteamDatagramClientSwitchedPrimary.RouterQuality from_quality_then = 11; optional .CMsgSteamDatagramClientSwitchedPrimary.RouterQuality to_quality_then = 12; } message CMsgSteamDatagramRouterHealth { message DataCenter { optional fixed32 datacenter_id = 1; optional uint32 state = 2; } optional float cpu_load = 1; optional uint32 active_sessions = 2; optional uint32 data_pkts_sec = 3; optional uint32 other_pkts_sec = 4; optional uint32 seconds_until_shutdown = 5; optional float cpu_cost_per_user = 8; optional float cpu_cost_per_packet = 9; repeated .CMsgSteamDatagramRouterHealth.DataCenter data_centers = 6; optional fixed64 magic = 7; } message CMsgSteamDatagramConnectRequest { optional fixed32 connection_id = 1; optional fixed64 client_steam_id = 3; optional fixed64 my_timestamp = 4; optional uint32 ping_est_ms = 5; optional uint32 virtual_port = 9; optional uint32 gameserver_relay_session_id = 2; optional .CMsgSteamDatagramSessionCryptInfoSigned crypt = 6; optional .CMsgSteamDatagramCertificateSigned cert = 7; optional uint32 protocol_version = 8; } message CMsgSteamDatagramConnectOK { optional fixed32 client_connection_id = 1; optional fixed32 server_connection_id = 7; optional fixed64 your_timestamp = 3; optional uint32 delay_time_usec = 4; optional uint32 gameserver_relay_session_id = 2; optional .CMsgSteamDatagramSessionCryptInfoSigned crypt = 5; optional .CMsgSteamDatagramCertificateSigned cert = 6; optional uint32 protocol_version = 8; } message CMsgSteamDatagramConnectionClosed { enum ERelayMode { None = 0; EndToEnd = 1; ClosedByPeer = 2; } optional fixed32 legacy_client_connection_id = 1; optional fixed32 to_connection_id = 7; optional fixed32 from_connection_id = 8; optional fixed64 peer_steam_id = 3; optional uint32 gameserver_relay_session_id = 2; optional .CMsgSteamDatagramConnectionClosed.ERelayMode relay_mode = 4 [default = None]; optional string debug = 5; optional uint32 reason_code = 6; } message CMsgSteamDatagramNoConnection { optional fixed32 legacy_client_connection_id = 1; optional fixed32 to_connection_id = 5; optional fixed32 from_connection_id = 6; optional uint32 gameserver_relay_session_id = 2; optional fixed64 peer_steam_id = 3; optional bool end_to_end = 4; optional fixed32 dummy_pad = 1023; } message CMsgSteamDatagramP2PSessionRequestBody { optional fixed32 challenge_time = 1; optional fixed64 challenge = 2; optional fixed32 my_connection_id = 3; optional fixed64 peer_steam_id = 4; optional fixed32 peer_connection_id = 5; optional uint32 protocol_version = 8; optional uint32 network_config_version = 9; optional fixed32 public_ip = 10; } message CMsgSteamDatagramP2PSessionRequest { optional .CMsgSteamDatagramCertificateSigned cert = 1; optional bytes body = 2; optional bytes signature = 3; } message CMsgSteamDatagramP2PSessionEstablished { optional fixed32 connection_id = 1; optional uint32 seconds_until_shutdown = 3; optional fixed64 relay_routing_id = 4; optional uint32 seq_num_r2c = 5; } message CMsgSteamDatagramP2PRoutes { message RelayCluster { optional fixed32 pop_id = 1; optional uint32 ping_ms = 2; optional uint32 score_penalty = 3; optional fixed64 session_relay_routing_id = 4; } message Route { optional fixed32 my_pop_id = 1; optional fixed32 your_pop_id = 2; optional uint32 score = 3; } repeated .CMsgSteamDatagramP2PRoutes.RelayCluster relay_clusters = 1; repeated .CMsgSteamDatagramP2PRoutes.Route routes = 2; optional uint32 revision = 3; } message CMsgSteamDatagramP2PRendezvous { optional fixed32 to_connection_id = 1; optional .CMsgSteamDatagramP2PRoutes routes = 2; optional uint32 ack_peer_routes_revision = 3; optional .CMsgSteamDatagramConnectRequest connect_request = 4; optional .CMsgSteamDatagramConnectOK connect_ok = 5; optional .CMsgSteamDatagramConnectionClosed connection_closed = 6; } message CMsgSteamDatagramConnectionStatsP2PClientToRouter { enum Flags { ACK_REQUEST_RELAY = 1; ACK_REQUEST_E2E = 2; ACK_REQUEST_IMMEDIATE = 4; } optional .CMsgSteamDatagramConnectionQuality c2r = 1; optional .CMsgSteamDatagramConnectionQuality c2s = 2; repeated fixed32 ack_relay = 3; repeated fixed32 ack_e2e = 4; optional uint32 flags = 5; optional fixed64 forward_target_relay_routing_id = 6; optional uint32 forward_target_revision = 7; optional .CMsgSteamDatagramP2PRoutes routes = 8; optional uint32 ack_peer_routes_revision = 9; optional fixed32 connection_id = 10; optional uint32 seq_num_c2r = 11; optional uint32 seq_num_c2s = 12; } message CMsgSteamDatagramConnectionStatsP2PRouterToClient { enum Flags { ACK_REQUEST_RELAY = 1; ACK_REQUEST_E2E = 2; ACK_REQUEST_IMMEDIATE = 4; } optional .CMsgSteamDatagramConnectionQuality r2c = 1; optional .CMsgSteamDatagramConnectionQuality p2c = 2; optional uint32 seconds_until_shutdown = 3; optional fixed32 migrate_request_ip = 4; optional uint32 migrate_request_port = 5; optional uint32 scoring_penalty_relay_cluster = 6; repeated fixed32 ack_relay = 7; repeated fixed32 ack_e2e = 8; optional uint32 flags = 9; optional uint32 ack_forward_target_revision = 10; optional .CMsgSteamDatagramP2PRoutes routes = 11; optional uint32 ack_peer_routes_revision = 12; optional fixed32 connection_id = 13; optional uint32 seq_num_r2c = 14; optional uint32 seq_num_p2c = 15; } message CMsgSteamSockets_UDP_ChallengeRequest { optional fixed32 connection_id = 1; optional fixed64 my_timestamp = 3; optional uint32 protocol_version = 4; } message CMsgSteamSockets_UDP_ChallengeReply { optional fixed32 connection_id = 1; optional fixed64 challenge = 2; optional fixed64 your_timestamp = 3; optional uint32 protocol_version = 4; } message CMsgSteamSockets_UDP_ConnectRequest { optional fixed32 client_connection_id = 1; optional fixed64 challenge = 2; optional fixed64 client_steam_id = 3; optional fixed64 my_timestamp = 5; optional uint32 ping_est_ms = 6; optional .CMsgSteamDatagramSessionCryptInfoSigned crypt = 7; optional .CMsgSteamDatagramCertificateSigned cert = 4; optional uint32 protocol_version = 8; } message CMsgSteamSockets_UDP_ConnectOK { optional fixed32 client_connection_id = 1; optional fixed32 server_connection_id = 5; optional fixed64 server_steam_id = 2; optional fixed64 your_timestamp = 3; optional uint32 delay_time_usec = 4; optional .CMsgSteamDatagramSessionCryptInfoSigned crypt = 7; optional .CMsgSteamDatagramCertificateSigned cert = 8; optional uint32 protocol_version = 9; } message CMsgSteamSockets_UDP_ConnectionClosed { optional fixed32 legacy_client_connection_id = 1; optional fixed32 to_connection_id = 4; optional fixed32 from_connection_id = 5; optional string debug = 2; optional uint32 reason_code = 3; } message CMsgSteamSockets_UDP_NoConnection { optional fixed32 legacy_client_connection_id = 1; optional fixed32 from_connection_id = 2; optional fixed32 to_connection_id = 3; } message CMsgSteamSockets_UDP_Stats { enum Flags { ACK_REQUEST_E2E = 2; ACK_REQUEST_IMMEDIATE = 4; } optional .CMsgSteamDatagramConnectionQuality stats = 1; repeated fixed32 ack_e2e = 2; optional uint32 flags = 3; optional fixed32 legacy_client_connection_id = 8; optional fixed32 to_connection_id = 9; optional fixed32 from_connection_id = 10; optional uint32 seq_num = 4; }