ppb_net_address_private.idl revision 5821806d5e7f356e8fa4b058a389a808ea183019
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
10label 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)]
18enum PP_NetAddressFamily_Private {
19  /**
20   * The address family is unspecified.
21   */
22  PP_NETADDRESSFAMILY_UNSPECIFIED = 0,
23  /**
24   * The Internet Protocol version 4 (IPv4) address family.
25   */
26  PP_NETADDRESSFAMILY_IPV4 = 1,
27  /**
28   * The Internet Protocol version 6 (IPv6) address family.
29   */
30  PP_NETADDRESSFAMILY_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)]
38struct 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};
130