Home | History | Annotate | Download | only in common
      1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 // IPC messages for the P2P Transport API.
      6 // Multiply-included message file, hence no include guard.
      7 
      8 #include "base/time/time.h"
      9 #include "content/common/content_export.h"
     10 #include "content/common/p2p_socket_type.h"
     11 #include "ipc/ipc_message_macros.h"
     12 #include "net/base/net_util.h"
     13 #include "third_party/webrtc/base/asyncpacketsocket.h"
     14 
     15 #undef IPC_MESSAGE_EXPORT
     16 #define IPC_MESSAGE_EXPORT CONTENT_EXPORT
     17 #define IPC_MESSAGE_START P2PMsgStart
     18 
     19 IPC_ENUM_TRAITS_MAX_VALUE(content::P2PSocketType,
     20                           content::P2P_SOCKET_TYPE_LAST)
     21 IPC_ENUM_TRAITS_MAX_VALUE(content::P2PSocketOption,
     22                           content::P2P_SOCKET_OPT_MAX - 1)
     23 IPC_ENUM_TRAITS_MIN_MAX_VALUE(rtc::DiffServCodePoint,
     24                               rtc::DSCP_NO_CHANGE,
     25                               rtc::DSCP_CS7)
     26 
     27 IPC_STRUCT_TRAITS_BEGIN(net::NetworkInterface)
     28   IPC_STRUCT_TRAITS_MEMBER(name)
     29   IPC_STRUCT_TRAITS_MEMBER(type)
     30   IPC_STRUCT_TRAITS_MEMBER(address)
     31   IPC_STRUCT_TRAITS_MEMBER(network_prefix)
     32   IPC_STRUCT_TRAITS_MEMBER(ip_address_attributes)
     33 IPC_STRUCT_TRAITS_END()
     34 
     35 IPC_STRUCT_TRAITS_BEGIN(rtc::PacketTimeUpdateParams)
     36   IPC_STRUCT_TRAITS_MEMBER(rtp_sendtime_extension_id)
     37   IPC_STRUCT_TRAITS_MEMBER(srtp_auth_key)
     38   IPC_STRUCT_TRAITS_MEMBER(srtp_auth_tag_len)
     39   IPC_STRUCT_TRAITS_MEMBER(srtp_packet_index)
     40 IPC_STRUCT_TRAITS_END()
     41 
     42 IPC_STRUCT_TRAITS_BEGIN(rtc::PacketOptions)
     43   IPC_STRUCT_TRAITS_MEMBER(dscp)
     44   IPC_STRUCT_TRAITS_MEMBER(packet_time_params)
     45 IPC_STRUCT_TRAITS_END()
     46 
     47 IPC_STRUCT_TRAITS_BEGIN(content::P2PHostAndIPEndPoint)
     48   IPC_STRUCT_TRAITS_MEMBER(hostname)
     49   IPC_STRUCT_TRAITS_MEMBER(ip_address)
     50 IPC_STRUCT_TRAITS_END()
     51 
     52 // P2P Socket messages sent from the browser to the renderer.
     53 
     54 IPC_MESSAGE_CONTROL1(P2PMsg_NetworkListChanged,
     55                      net::NetworkInterfaceList /* networks */)
     56 
     57 IPC_MESSAGE_CONTROL2(P2PMsg_GetHostAddressResult,
     58                      int32 /* request_id */,
     59                      net::IPAddressList /* address list*/)
     60 
     61 IPC_MESSAGE_CONTROL3(P2PMsg_OnSocketCreated,
     62                      int /* socket_id */,
     63                      net::IPEndPoint /* local_address */,
     64                      net::IPEndPoint /* remote_address */)
     65 
     66 IPC_MESSAGE_CONTROL1(P2PMsg_OnSendComplete,
     67                      int /* socket_id */)
     68 
     69 IPC_MESSAGE_CONTROL1(P2PMsg_OnError,
     70                      int /* socket_id */)
     71 
     72 IPC_MESSAGE_CONTROL2(P2PMsg_OnIncomingTcpConnection,
     73                      int /* socket_id */,
     74                      net::IPEndPoint /* socket_address */)
     75 
     76 IPC_MESSAGE_CONTROL4(P2PMsg_OnDataReceived,
     77                      int /* socket_id */,
     78                      net::IPEndPoint /* socket_address */,
     79                      std::vector<char> /* data */,
     80                      base::TimeTicks /* timestamp */ )
     81 
     82 // P2P Socket messages sent from the renderer to the browser.
     83 
     84 // Start/stop sending P2PMsg_NetworkListChanged messages when network
     85 // configuration changes.
     86 IPC_MESSAGE_CONTROL0(P2PHostMsg_StartNetworkNotifications)
     87 IPC_MESSAGE_CONTROL0(P2PHostMsg_StopNetworkNotifications)
     88 
     89 IPC_MESSAGE_CONTROL2(P2PHostMsg_GetHostAddress,
     90                     std::string /* host_name */,
     91                     int32 /* request_id */)
     92 
     93 IPC_MESSAGE_CONTROL4(P2PHostMsg_CreateSocket,
     94                      content::P2PSocketType /* type */,
     95                      int /* socket_id */,
     96                      net::IPEndPoint /* local_address */,
     97                      content::P2PHostAndIPEndPoint /* remote_address */)
     98 
     99 IPC_MESSAGE_CONTROL3(P2PHostMsg_AcceptIncomingTcpConnection,
    100                     int /* listen_socket_id */,
    101                     net::IPEndPoint /* remote_address */,
    102                     int /* connected_socket_id */)
    103 
    104 // TODO(sergeyu): Use shared memory to pass the data.
    105 IPC_MESSAGE_CONTROL5(P2PHostMsg_Send,
    106                      int /* socket_id */,
    107                      net::IPEndPoint /* socket_address */,
    108                      std::vector<char> /* data */,
    109                      rtc::PacketOptions /* packet options */,
    110                      uint64 /* packet_id */)
    111 
    112 IPC_MESSAGE_CONTROL1(P2PHostMsg_DestroySocket,
    113                      int /* socket_id */)
    114 
    115 IPC_MESSAGE_CONTROL3(P2PHostMsg_SetOption,
    116                      int /* socket_id */,
    117                      content::P2PSocketOption /* socket option type */,
    118                      int /* value */)
    119