- add sources.
[platform/framework/web/crosswalk.git] / src / ppapi / api / private / ppb_net_address_private.idl
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
6 /**
7  * This file defines the <code>PPB_NetAddress_Private</code> interface.
8  */
9
10 label Chrome {
11     M13 = 0.0,
12     M17 = 0.1,
13     M19_0 = 1.0,
14     M19_1 = 1.1
15 };
16
17 [assert_size(4)]
18 enum PP_NetAddressFamily_Private {
19   /**
20    * The address family is unspecified.
21    */
22   PP_NETADDRESSFAMILY_PRIVATE_UNSPECIFIED = 0,
23   /**
24    * The Internet Protocol version 4 (IPv4) address family.
25    */
26   PP_NETADDRESSFAMILY_PRIVATE_IPV4 = 1,
27   /**
28    * The Internet Protocol version 6 (IPv6) address family.
29    */
30   PP_NETADDRESSFAMILY_PRIVATE_IPV6 = 2
31 };
32
33 /**
34  * This is an opaque type holding a network address. Plugins must
35  * never access members of this struct directly.
36  */
37 [assert_size(132)]
38 struct PP_NetAddress_Private {
39   uint32_t size;
40   char[128] data;
41 };
42
43 /**
44  * The <code>PPB_NetAddress_Private</code> interface provides operations on
45  * network addresses.
46  */
47 [version=0.1] interface PPB_NetAddress_Private {
48   /**
49    * Returns PP_TRUE if the two addresses are equal (host and port).
50    */
51   PP_Bool AreEqual([in] PP_NetAddress_Private addr1,
52                    [in] PP_NetAddress_Private addr2);
53
54   /**
55    * Returns PP_TRUE if the two addresses refer to the same host.
56    */
57   PP_Bool AreHostsEqual([in] PP_NetAddress_Private addr1,
58                         [in] PP_NetAddress_Private addr2);
59
60   /**
61    * Returns a human-readable description of the network address, optionally
62    * including the port (e.g., "192.168.0.1", "192.168.0.1:99", or "[::1]:80"),
63    * or an undefined var on failure.
64    */
65   PP_Var Describe([in] PP_Module module,
66                   [in] PP_NetAddress_Private addr,
67                   [in] PP_Bool include_port);
68
69   /**
70    * Replaces the port in the given source address. Returns PP_TRUE on success.
71    */
72   PP_Bool ReplacePort([in] PP_NetAddress_Private src_addr,
73                       [in] uint16_t port,
74                       [out] PP_NetAddress_Private addr_out);
75
76   /**
77    * Gets the "any" address (for IPv4 or IPv6); for use with UDP Bind.
78    */
79   void GetAnyAddress([in] PP_Bool is_ipv6,
80                      [out] PP_NetAddress_Private addr);
81
82   /**
83    * Gets the address family.
84    */
85   [version=1.0]
86   PP_NetAddressFamily_Private GetFamily([in] PP_NetAddress_Private addr);
87
88   /**
89    * Gets the port. The port is returned in host byte order.
90    */
91   [version=1.0]
92   uint16_t GetPort([in] PP_NetAddress_Private addr);
93
94   /**
95    * Gets the address. The output, address, must be large enough for the
96    * current socket family. The output will be the binary representation of an
97    * address for the current socket family. For IPv4 and IPv6 the address is in
98    * network byte order. PP_TRUE is returned if the address was successfully
99    * retrieved.
100    */
101   [version=1.0]
102   PP_Bool GetAddress([in] PP_NetAddress_Private addr,
103                      [out] mem_t address,
104                      [in] uint16_t address_size);
105
106   /**
107    * Returns ScopeID for IPv6 addresses or 0 for IPv4.
108    */
109   [version=1.1]
110   uint32_t GetScopeID([in] PP_NetAddress_Private addr);
111
112   /**
113    * Creates NetAddress with the specified IPv4 address and port
114    * number.
115    */
116   [version=1.1]
117   void CreateFromIPv4Address([in] uint8_t[4] ip,
118                              [in] uint16_t port,
119                              [out] PP_NetAddress_Private addr_out);
120   /**
121    * Creates NetAddress with the specified IPv6 address, scope_id and
122    * port number.
123    */
124   [version=1.1]
125   void CreateFromIPv6Address([in] uint8_t[16] ip,
126                              [in] uint32_t scope_id,
127                              [in] uint16_t port,
128                              [out] PP_NetAddress_Private addr_out);
129 };