Home | History | Annotate | Download | only in private
      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 };
    130