|
@@ -34,7 +34,7 @@ If the remote process cannot decode, or otherwise detects a syntactic problem wi
|
|
|
If the remote process can decode the request, but cannot complete the operation, it must send a response in the form
|
|
|
|
|
|
{
|
|
|
- "Err": string
|
|
|
+ "Err": string
|
|
|
}
|
|
|
|
|
|
The string value supplied may appear in logs, so should not include confidential information.
|
|
@@ -44,7 +44,7 @@ The string value supplied may appear in logs, so should not include confidential
|
|
|
When loaded, a remote driver process receives an HTTP POST on the URL `/Plugin.Activate` with no payload. It must respond with a manifest of the form
|
|
|
|
|
|
{
|
|
|
- "Implements": ["NetworkDriver"]
|
|
|
+ "Implements": ["NetworkDriver"]
|
|
|
}
|
|
|
|
|
|
Other entries in the list value are allowed; `"NetworkDriver"` indicates that the plugin should be registered with LibNetwork as a driver.
|
|
@@ -64,10 +64,10 @@ Value of "Scope" should be either "local" or "global" which indicates the capabi
|
|
|
When the proxy is asked to create a network, the remote process shall receive a POST to the URL `/NetworkDriver.CreateNetwork` of the form
|
|
|
|
|
|
{
|
|
|
- "NetworkID": string,
|
|
|
- "Options": {
|
|
|
- ...
|
|
|
- }
|
|
|
+ "NetworkID": string,
|
|
|
+ "Options": {
|
|
|
+ ...
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
The `NetworkID` value is generated by LibNetwork. The `Options` value is the arbitrary map given to the proxy by LibNetwork.
|
|
@@ -81,7 +81,7 @@ The response indicating success is empty:
|
|
|
When a network owned by the remote driver is deleted, the remote process shall receive a POST to the URL `/NetworkDriver.DeleteNetwork` of the form
|
|
|
|
|
|
{
|
|
|
- "NetworkID": string
|
|
|
+ "NetworkID": string
|
|
|
}
|
|
|
|
|
|
The success response is empty:
|
|
@@ -93,16 +93,16 @@ The success response is empty:
|
|
|
When the proxy is asked to create an endpoint, the remote process shall receive a POST to the URL `/NetworkDriver.CreateEndpoint` of the form
|
|
|
|
|
|
{
|
|
|
- "NetworkID": string,
|
|
|
- "EndpointID": string,
|
|
|
- "Options": {
|
|
|
- ...
|
|
|
- },
|
|
|
- "Interface": {
|
|
|
- "Address": string,
|
|
|
- "AddressIPv6": string,
|
|
|
- "MacAddress": string
|
|
|
- }
|
|
|
+ "NetworkID": string,
|
|
|
+ "EndpointID": string,
|
|
|
+ "Options": {
|
|
|
+ ...
|
|
|
+ },
|
|
|
+ "Interface": {
|
|
|
+ "Address": string,
|
|
|
+ "AddressIPv6": string,
|
|
|
+ "MacAddress": string
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
The `NetworkID` is the generated identifier for the network to which the endpoint belongs; the `EndpointID` is a generated identifier for the endpoint.
|
|
@@ -114,11 +114,11 @@ The `Interface` value is of the form given. The fields in the `Interface` may be
|
|
|
A success response is of the form
|
|
|
|
|
|
{
|
|
|
- "Interface": {
|
|
|
- "Address": string,
|
|
|
- "AddressIPv6": string,
|
|
|
- "MacAddress": string
|
|
|
- }
|
|
|
+ "Interface": {
|
|
|
+ "Address": string,
|
|
|
+ "AddressIPv6": string,
|
|
|
+ "MacAddress": string
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
with values in the `Interface` as above. As far as the value of `Interface` is concerned, `MacAddress` and either or both of `Address` and `AddressIPv6` must be given.
|
|
@@ -130,14 +130,14 @@ If the remote process was supplied a non-empty value in `Interface`, it must res
|
|
|
The proxy may be asked for "operational info" on an endpoint. When this happens, the remote process shall receive a POST to `/NetworkDriver.EndpointOperInfo` of the form
|
|
|
|
|
|
{
|
|
|
- "NetworkID": string,
|
|
|
- "EndpointID": string
|
|
|
+ "NetworkID": string,
|
|
|
+ "EndpointID": string
|
|
|
}
|
|
|
|
|
|
where `NetworkID` and `EndpointID` have meanings as above. It must send a response of the form
|
|
|
|
|
|
{
|
|
|
- "Value": { ... }
|
|
|
+ "Value": { ... }
|
|
|
}
|
|
|
|
|
|
where the value of the `Value` field is an arbitrary (possibly empty) map.
|
|
@@ -147,8 +147,8 @@ where the value of the `Value` field is an arbitrary (possibly empty) map.
|
|
|
When an endpoint is deleted, the remote process shall receive a POST to the URL `/NetworkDriver.DeleteEndpoint` with a body of the form
|
|
|
|
|
|
{
|
|
|
- "NetworkID": string,
|
|
|
- "EndpointID": string
|
|
|
+ "NetworkID": string,
|
|
|
+ "EndpointID": string
|
|
|
}
|
|
|
|
|
|
where `NetworkID` and `EndpointID` have meanings as above. A success response is empty:
|
|
@@ -160,10 +160,10 @@ where `NetworkID` and `EndpointID` have meanings as above. A success response is
|
|
|
When a sandbox is given an endpoint, the remote process shall receive a POST to the URL `NetworkDriver.Join` of the form
|
|
|
|
|
|
{
|
|
|
- "NetworkID": string,
|
|
|
- "EndpointID": string,
|
|
|
- "SandboxKey": string,
|
|
|
- "Options": { ... }
|
|
|
+ "NetworkID": string,
|
|
|
+ "EndpointID": string,
|
|
|
+ "SandboxKey": string,
|
|
|
+ "Options": { ... }
|
|
|
}
|
|
|
|
|
|
The `NetworkID` and `EndpointID` have meanings as above. The `SandboxKey` identifies the sandbox. `Options` is an arbitrary map as supplied to the proxy.
|
|
@@ -171,17 +171,17 @@ The `NetworkID` and `EndpointID` have meanings as above. The `SandboxKey` identi
|
|
|
The response must have the form
|
|
|
|
|
|
{
|
|
|
- "InterfaceName": {
|
|
|
- SrcName: string,
|
|
|
- DstPrefix: string
|
|
|
- },
|
|
|
- "Gateway": string,
|
|
|
- "GatewayIPv6": string,
|
|
|
- "StaticRoutes": [{
|
|
|
- "Destination": string,
|
|
|
- "RouteType": int,
|
|
|
- "NextHop": string,
|
|
|
- }, ...]
|
|
|
+ "InterfaceName": {
|
|
|
+ SrcName: string,
|
|
|
+ DstPrefix: string
|
|
|
+ },
|
|
|
+ "Gateway": string,
|
|
|
+ "GatewayIPv6": string,
|
|
|
+ "StaticRoutes": [{
|
|
|
+ "Destination": string,
|
|
|
+ "RouteType": int,
|
|
|
+ "NextHop": string,
|
|
|
+ }, ...]
|
|
|
}
|
|
|
|
|
|
`Gateway` is optional and if supplied is an IP address as a string; e.g., `"192.168.0.1"`. `GatewayIPv6` is optional and if supplied is an IPv6 address as a string; e.g., `"fe80::7809:baff:fec6:7744"`.
|
|
@@ -197,8 +197,8 @@ Routes are either given a `RouteType` of `0` and a value for `NextHop`; or, a `R
|
|
|
If the proxy is asked to remove an endpoint from a sandbox, the remote process shall receive a POST to the URL `/NetworkDriver.Leave` of the form
|
|
|
|
|
|
{
|
|
|
- "NetworkID": string,
|
|
|
- "EndpointID": string
|
|
|
+ "NetworkID": string,
|
|
|
+ "EndpointID": string
|
|
|
}
|
|
|
|
|
|
where `NetworkID` and `EndpointID` have meanings as above. The success response is empty:
|