15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// IPC messages for the P2P Transport API. 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Multiply-included message file, hence no include guard. 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "base/time/time.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/common/content_export.h" 10a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "content/common/p2p_socket_type.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ipc/ipc_message_macros.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "net/base/net_util.h" 13a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "third_party/libjingle/source/talk/base/asyncpacketsocket.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#undef IPC_MESSAGE_EXPORT 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define IPC_MESSAGE_EXPORT CONTENT_EXPORT 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define IPC_MESSAGE_START P2PMsgStart 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)IPC_ENUM_TRAITS_MAX_VALUE(content::P2PSocketType, 205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) content::P2P_SOCKET_TYPE_LAST) 215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)IPC_ENUM_TRAITS_MAX_VALUE(content::P2PSocketOption, 225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) content::P2P_SOCKET_OPT_MAX - 1) 23a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)IPC_ENUM_TRAITS_MIN_MAX_VALUE(talk_base::DiffServCodePoint, 24a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) talk_base::DSCP_NO_CHANGE, 25a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) talk_base::DSCP_CS7) 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_STRUCT_TRAITS_BEGIN(net::NetworkInterface) 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IPC_STRUCT_TRAITS_MEMBER(name) 29010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) IPC_STRUCT_TRAITS_MEMBER(type) 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IPC_STRUCT_TRAITS_MEMBER(address) 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_STRUCT_TRAITS_END() 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 33a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)IPC_STRUCT_TRAITS_BEGIN(talk_base::PacketTimeUpdateParams) 34a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) IPC_STRUCT_TRAITS_MEMBER(rtp_sendtime_extension_id) 35a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) IPC_STRUCT_TRAITS_MEMBER(srtp_auth_key) 36a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) IPC_STRUCT_TRAITS_MEMBER(srtp_auth_tag_len) 37a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) IPC_STRUCT_TRAITS_MEMBER(srtp_packet_index) 38a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)IPC_STRUCT_TRAITS_END() 39a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 40a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)IPC_STRUCT_TRAITS_BEGIN(talk_base::PacketOptions) 41a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) IPC_STRUCT_TRAITS_MEMBER(dscp) 42a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) IPC_STRUCT_TRAITS_MEMBER(packet_time_params) 43a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)IPC_STRUCT_TRAITS_END() 44a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 45a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)IPC_STRUCT_TRAITS_BEGIN(content::P2PHostAndIPEndPoint) 46a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) IPC_STRUCT_TRAITS_MEMBER(hostname) 47a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) IPC_STRUCT_TRAITS_MEMBER(ip_address) 48a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)IPC_STRUCT_TRAITS_END() 49a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// P2P Socket messages sent from the browser to the renderer. 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_MESSAGE_CONTROL1(P2PMsg_NetworkListChanged, 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) net::NetworkInterfaceList /* networks */) 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_MESSAGE_CONTROL2(P2PMsg_GetHostAddressResult, 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int32 /* request_id */, 575d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) net::IPAddressList /* address list*/) 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_MESSAGE_CONTROL2(P2PMsg_OnSocketCreated, 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int /* socket_id */, 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) net::IPEndPoint /* socket_address */) 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 63c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)IPC_MESSAGE_CONTROL1(P2PMsg_OnSendComplete, 64c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int /* socket_id */) 65c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_MESSAGE_CONTROL1(P2PMsg_OnError, 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int /* socket_id */) 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_MESSAGE_CONTROL2(P2PMsg_OnIncomingTcpConnection, 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int /* socket_id */, 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) net::IPEndPoint /* socket_address */) 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 735d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)IPC_MESSAGE_CONTROL4(P2PMsg_OnDataReceived, 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int /* socket_id */, 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) net::IPEndPoint /* socket_address */, 765d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) std::vector<char> /* data */, 775d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::TimeTicks /* timestamp */ ) 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// P2P Socket messages sent from the renderer to the browser. 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Start/stop sending P2PMsg_NetworkListChanged messages when network 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// configuration changes. 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_MESSAGE_CONTROL0(P2PHostMsg_StartNetworkNotifications) 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_MESSAGE_CONTROL0(P2PHostMsg_StopNetworkNotifications) 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_MESSAGE_CONTROL2(P2PHostMsg_GetHostAddress, 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string /* host_name */, 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int32 /* request_id */) 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_MESSAGE_CONTROL4(P2PHostMsg_CreateSocket, 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::P2PSocketType /* type */, 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int /* socket_id */, 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) net::IPEndPoint /* local_address */, 94a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) content::P2PHostAndIPEndPoint /* remote_address */) 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_MESSAGE_CONTROL3(P2PHostMsg_AcceptIncomingTcpConnection, 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int /* listen_socket_id */, 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) net::IPEndPoint /* remote_address */, 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int /* connected_socket_id */) 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// TODO(sergeyu): Use shared memory to pass the data. 1028bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)IPC_MESSAGE_CONTROL5(P2PHostMsg_Send, 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int /* socket_id */, 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) net::IPEndPoint /* socket_address */, 1058bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) std::vector<char> /* data */, 106a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) talk_base::PacketOptions /* packet options */, 1078bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) uint64 /* packet_id */) 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IPC_MESSAGE_CONTROL1(P2PHostMsg_DestroySocket, 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int /* socket_id */) 1115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)IPC_MESSAGE_CONTROL3(P2PHostMsg_SetOption, 1135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) int /* socket_id */, 1145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) content::P2PSocketOption /* socket option type */, 1155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) int /* value */) 116