| Index: extensions/common/api/vpn_provider.idl
|
| diff --git a/extensions/common/api/vpn_provider.idl b/extensions/common/api/vpn_provider.idl
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..74d8a7cd7bba473b471dec523e7059fad086265b
|
| --- /dev/null
|
| +++ b/extensions/common/api/vpn_provider.idl
|
| @@ -0,0 +1,96 @@
|
| +// Copyright 2014 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +// Use the <code>chrome.vpnProvider</code> API to implement a VPN
|
| +// client.
|
| +namespace vpnProvider {
|
| + // A parameters class for the vpn interface
|
| + dictionary Parameters {
|
| + // IP address for the VPN interface in CIDR notation.
|
| + // IPv4 is currently the only supported mode.
|
| + DOMString address;
|
| + // Broadcast address for the VPN interface. (default: Deduced
|
| + // from IP address and mask).
|
| + DOMString? broadcastAddress;
|
| + // MTU for the VPN interface. (default: 1500)
|
| + DOMString? mtu;
|
| + // Bypass network traffic to the below IPs (in CIDR notation)
|
| + // from the tunnel. Typically used to bypass traffic to/from
|
| + // VPN server.
|
| + DOMString[] bypassTunnelForIp;
|
| + // A list of search domains (default: system setting).
|
| + DOMString[]? domainSearch;
|
| + // A list of DNS servers in CIDR notation (default: system
|
| + // setting).
|
| + DOMString[]? dnsServers;
|
| + };
|
| +
|
| + // The enum is used by the platform to notify the client of
|
| + // connection and network related status.
|
| + // TODO(kaliamoorthi) : Document the messages
|
| + enum PlatformMessage {
|
| + connected,
|
| + disconnected,
|
| + underlyingNetworkDisconnected,
|
| + error
|
| + };
|
| +
|
| + // The enum is used by the VPN client to inform the platform
|
| + // of its current state. This helps provide meaningful messages
|
| + // to the user. The states listed below are currently known to
|
| + // the platform (Shill daemon).
|
| + // TODO(kaliamoorthi) : Document all states
|
| + // TODO(kaliamoorthi) : Make failure more informative by expanding the failure
|
| + // conditions.
|
| + enum VpnConnectionState {
|
| + connected,
|
| + portal,
|
| + online,
|
| + failure
|
| + };
|
| +
|
| + // The callback is used by <code>setParameters, sendPacket</code>
|
| + // to signal completion. The callback is called with
|
| + // <code>chrome.runtime.lastError</code> set to error code if
|
| + // there is an error.
|
| + [inline_doc] callback CallCompleteCallback = void ();
|
| +
|
| + // The callback is used by createConfig to signal completion.
|
| + callback ConfigCreatedCallback = void (long handle);
|
| +
|
| + interface Functions {
|
| + // Creates a new VPN configuration.
|
| + static void createConfig(DOMString name,
|
| + ConfigCreatedCallback callback);
|
| +
|
| + // Destroys a VPN configuration created by the extension.
|
| + static void destroyConfig(long handle,
|
| + optional CallCompleteCallback callback);
|
| +
|
| + // Sets the parameters for a VPN configuration. This should be
|
| + // called after connected is received from the platform.
|
| + static void setParameters(long handle, Parameters parameters,
|
| + CallCompleteCallback callback);
|
| +
|
| + // Injects an IP packet into the network stack of Chrome OS.
|
| + static void sendPacket(long handle, ArrayBuffer data,
|
| + optional CallCompleteCallback callback);
|
| +
|
| + // Notifies the VPN connection state to Chrome OS.
|
| + static void notifyConnectionStateChanged(
|
| + long handle, VpnConnectionState state,
|
| + optional CallCompleteCallback callback);
|
| + };
|
| +
|
| + interface Events {
|
| + // Called when a message is received from the platform for a
|
| + // VPN configuration owned by the extension.
|
| + static void onPlatformMessage(long handle,
|
| + PlatformMessage message);
|
| +
|
| + // Called when an IP packet is received from the platform for a
|
| + // VPN configuration owned by the extension.
|
| + static void onPacketReceived(long handle, ArrayBuffer data);
|
| + };
|
| +};
|
|
|