diff --git a/Gopkg.lock b/Gopkg.lock index fd7ea6b329..4262b87e00 100644 --- a/Gopkg.lock +++ b/Gopkg.lock @@ -2,7 +2,7 @@ [[projects]] - digest = "1:79896046d0807ae89b74ae106b6cb0b346c201c02fc57b7c56017edad7493a61" + digest = "1:5d72bbcc9c8667b11c3dc3cbe681c5a6f71e5096744c0bf7726ab5c6425d5dc4" name = "github.com/BurntSushi/toml" packages = ["."] pruneopts = "NUT" @@ -10,7 +10,7 @@ version = "v0.3.1" [[projects]] - digest = "1:26b14a6dc72ace253599e969997d5ecf2143c63833c015179786bc756c76eaa4" + digest = "1:2be791e7b333ff7c06f8fb3dc18a7d70580e9399dbdffd352621d067ff260b6e" name = "github.com/Microsoft/go-winio" packages = ["."] pruneopts = "NUT" @@ -18,7 +18,7 @@ version = "v0.4.12" [[projects]] - digest = "1:e4eec8e05fe8611837a9b34a787cf9c714a2fd9228a0a1f41dd2ccccbaa21b7e" + digest = "1:a8e16b4caf3575365c9aa3380d9418f31dd0b810596faebfe3a15c37fabeee4a" name = "github.com/Microsoft/hcsshim" packages = [ ".", @@ -65,16 +65,6 @@ revision = "ccb8e960c48f04d6935e72476ae4a51028f9e22f" version = "v9" -[[projects]] - digest = "1:f1bb062def4356e0ffacbf80952a122489df3d26887249a6d351f5b3c98d4c16" - name = "github.com/clearcontainers/proxy" - packages = [ - "api", - "client", - ] - pruneopts = "NUT" - revision = "1d2a6a3ea132a86abd0731408b7dc34f2fc17d55" - [[projects]] branch = "master" digest = "1:8ecb89af7dfe3ac401bdb0c9390b134ef96a97e85f732d2b0604fb7b3977839f" @@ -99,7 +89,7 @@ revision = "0650fd9eeb50bab4fc99dceb9f2e14cf58f36e7f" [[projects]] - digest = "1:c572858cf95490994cee8faa84a57a8942f735e1a8b6a5a7876d13192754c05e" + digest = "1:b1ddab63ebf3a38cdc2a80fa1f00c45e8dc98e27387968ccc0e5275a43f6cb5e" name = "github.com/containerd/containerd" packages = [ "api/events", @@ -120,7 +110,7 @@ revision = "f05672357f56f26751a521175c5a96fc21fa8603" [[projects]] - digest = "1:4f06807f78ebb5fd6d5fcd539885c0a0be60732eda47189a7feb486ff60a519d" + digest = "1:e7c346f795db5a431ca8bd284faed7aa5b4d544ba6538b20a39b968473f47774" name = "github.com/containerd/cri-containerd" packages = [ "pkg/annotations", @@ -216,7 +206,7 @@ version = "v0.3.3" [[projects]] - digest = "1:2cbc5d9ad66b4eb1e82862757985de8c24d8ca299500e669998694329d05bfc9" + digest = "1:351337e3b022de09e72306f1f9711314cc4bd407c15e8d328e218c655fd55731" name = "github.com/firecracker-microvm/firecracker-go-sdk" packages = [ "client", @@ -228,7 +218,7 @@ [[projects]] branch = "master" - digest = "1:e30aea4f7e276dc80a7041b9e436b45a4c6636e5ba554de835b07beb0f97cc74" + digest = "1:ce0cdcf4a121add67d3c6f7cc08e6233275d0f417852f025b790d35da88fab10" name = "github.com/globalsign/mgo" packages = [ "bson", @@ -245,7 +235,7 @@ revision = "20b96f641a5ea98f2f8619ff4f3e061cff4833bd" [[projects]] - digest = "1:5b7a60e28d9315ba79fb73e6294e5823997673ee64797d28ba2dc7bf71dc6ba6" + digest = "1:e101aa2e25fac7e82ba4d2f66807eedd4bcf11abc5afcb4a4629a88f9a652b84" name = "github.com/go-openapi/analysis" packages = [ ".", @@ -288,7 +278,7 @@ version = "v0.18.0" [[projects]] - digest = "1:36b4e8fb9b6f5896fe776b279a6e3a4115ab7d0258d0e0d2ac9c6c58e12531c7" + digest = "1:757a8958779fedcfddafb3ac93f707876db7b4fbc71b76fbc25450b3f057025e" name = "github.com/go-openapi/runtime" packages = [ ".", @@ -345,7 +335,7 @@ version = "v5.0.1" [[projects]] - digest = "1:34e8cbba4f0ad2eeda81c98d3f53af4c5862518ec0ebae38730fc36f8a7705f0" + digest = "1:0dfc35f448d29c2ff6a29fb3a6643f44175dc2a07925b1add2dea74e1dd6bf8d" name = "github.com/gogo/protobuf" packages = [ "gogoproto", @@ -358,7 +348,7 @@ revision = "342cbe0a04158f6dcb03ca0079991a51a4248c02" [[projects]] - digest = "1:a8b59d8995b50db3b206d9160817e00aace183e456cb60abf5157de16d12e3c9" + digest = "1:2d0636a8c490d2272dd725db26f74a537111b99b9dbdda0d8b98febe63702aa4" name = "github.com/golang/protobuf" packages = [ "proto", @@ -405,16 +395,9 @@ pruneopts = "NUT" revision = "48dd1c031530fce9bf16b0f6a7305979cedd8fc9" -[[projects]] - digest = "1:04054595e5c5a35d1553a7f3464d18577caf597445d643992998643df56d4afd" - name = "github.com/kubernetes-incubator/cri-o" - packages = ["pkg/annotations"] - pruneopts = "NUT" - revision = "3394b3b2d6af0e41d185bb695c6378be5dd4d61d" - [[projects]] branch = "master" - digest = "1:ebd709f6c64e850ee37ffd662604b647934ba1b7da39c7ba26381d634a4b6d4d" + digest = "1:84a5a2b67486d5d67060ac393aa255d05d24ed5ee41daecd5635ec22657b6492" name = "github.com/mailru/easyjson" packages = [ "buffer", @@ -447,7 +430,7 @@ version = "v1.0.0-rc1" [[projects]] - digest = "1:d4dcb47c4324ed0af861eda17778f56229d44422819770972183bee0217f9cff" + digest = "1:26537bc93f1e164bbc305117029de9933656ff81c4549609939212aca20a4710" name = "github.com/opencontainers/runc" packages = [ "libcontainer/configs", @@ -467,7 +450,7 @@ revision = "5806c35637336642129d03657419829569abc5aa" [[projects]] - digest = "1:7fea98b6541d058ba0ae5496d57d420d396a3f121a0aec64b4ec2171b0a93846" + digest = "1:7da29c22bcc5c2ffb308324377dc00b5084650348c2799e573ed226d8cc9faf0" name = "github.com/opentracing/opentracing-go" packages = [ ".", @@ -518,7 +501,7 @@ version = "v0.9.0" [[projects]] - digest = "1:e2930b698575a7f45df1eaa5473c76109b04a87d6a464e674a68f9c1dff244a1" + digest = "1:432ba4d123dc14d6e3b71ca22051bd1a5aa20a8e466e47edabd9af46405c5cfb" name = "github.com/sirupsen/logrus" packages = [ ".", @@ -535,7 +518,7 @@ revision = "890a5c3458b43e6104ff5da8dfa139d013d77544" [[projects]] - digest = "1:d43a3612c85e592ffcefdbc426d3fc0bdbc71435c930664bef8c36034181d681" + digest = "1:87dee780f88f86f300bbd90116e933347cf4a3c65c1960072d412597a8896d50" name = "github.com/uber/jaeger-client-go" packages = [ ".", @@ -576,7 +559,7 @@ revision = "ac249472b7de27a9e8990819566d9be95ab5b816" [[projects]] - digest = "1:e53b4392978149151080be2de940b1cfbb542c3b2bc3281e091678a3626397f8" + digest = "1:51b28ecbdddc7e0260899b64d8cf13343bb8f66b4b00585b46c775509755095a" name = "github.com/vishvananda/netlink" packages = [ ".", @@ -601,7 +584,7 @@ revision = "8dd112bcdc25174059e45e07517d9fc663123347" [[projects]] - digest = "1:5985d67e107c875e2584b5a65f1590adee7677a4e44eb7e62cd54c7709abba4a" + digest = "1:b20c63a56900e442d5f435613fefc9392cbe8849467510fcc3869dbdad9441bb" name = "golang.org/x/net" packages = [ "context", @@ -616,7 +599,7 @@ revision = "a8b9294777976932365dabb6640cf1468d95c70f" [[projects]] - digest = "1:bfb083c1c1ae3c793c66773f32fa2f5934241d8c6327636f4761f269d018a171" + digest = "1:2fd19a8bed3f4ba8e3b26620f114efec5f39c7b02635a89a915b1cbaefeab5ff" name = "golang.org/x/sys" packages = [ "unix", @@ -626,7 +609,7 @@ revision = "1d2aa6dbdea45adaaebb9905d0666e4537563829" [[projects]] - digest = "1:4e48d0d8df75f1bd0a0afe837599fc9ad96b59eecdd1900fc0dcceccaa5fdffc" + digest = "1:e33513a825fcd765e97b5de639a2f7547542d1a8245df0cef18e1fd390b778a9" name = "golang.org/x/text" packages = [ "collate", @@ -658,7 +641,7 @@ revision = "5fe7a883aa19554f42890211544aa549836af7b7" [[projects]] - digest = "1:c09d7ef1564ca6aee8193b8b9d2d831cb69d29581f53b1b1e6331142d07fddbd" + digest = "1:3d43152515ea791363eb0d1d21378fbf70e7df4a3954fd315898532cf5e64a8c" name = "google.golang.org/grpc" packages = [ ".", @@ -701,8 +684,6 @@ analyzer-version = 1 input-imports = [ "github.com/BurntSushi/toml", - "github.com/clearcontainers/proxy/api", - "github.com/clearcontainers/proxy/client", "github.com/containerd/cgroups", "github.com/containerd/containerd/api/events", "github.com/containerd/containerd/api/types", @@ -735,7 +716,6 @@ "github.com/kata-containers/agent/pkg/types", "github.com/kata-containers/agent/protocols/client", "github.com/kata-containers/agent/protocols/grpc", - "github.com/kubernetes-incubator/cri-o/pkg/annotations", "github.com/mitchellh/mapstructure", "github.com/opencontainers/runc/libcontainer/configs", "github.com/opencontainers/runc/libcontainer/specconv", diff --git a/Gopkg.toml b/Gopkg.toml index 803d5092c3..ddcc66a9f2 100644 --- a/Gopkg.toml +++ b/Gopkg.toml @@ -1,7 +1,3 @@ -[[constraint]] - name = "github.com/clearcontainers/proxy" - revision = "1d2a6a3ea132a86abd0731408b7dc34f2fc17d55" - [[constraint]] name = "github.com/containernetworking/plugins" revision = "7f98c94613021d8b57acfa1a2f0c8d0f6fd7ae5a" diff --git a/vendor/github.com/clearcontainers/proxy/COPYING b/vendor/github.com/clearcontainers/proxy/COPYING deleted file mode 100644 index d645695673..0000000000 --- a/vendor/github.com/clearcontainers/proxy/COPYING +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/vendor/github.com/clearcontainers/proxy/api/doc.go b/vendor/github.com/clearcontainers/proxy/api/doc.go deleted file mode 100644 index 280157edf0..0000000000 --- a/vendor/github.com/clearcontainers/proxy/api/doc.go +++ /dev/null @@ -1,84 +0,0 @@ -// Copyright (c) 2017 Intel Corporation -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Package api defines the API cc-proxy exposes to clients (processes -// connecting to the proxy AF_UNIX socket). -// -// This package contains the low level definitions of the protocol, frame -// structure and the various payloads that can be sent and received. -// -// The proxy protocol is composed of commands, responses and notifications. -// They all share the same frame structure: a header followed by an optional -// payload. -// -// • Commands are always initiated by a client, never by the proxy itself. -// -// • Responses are sent by the proxy to acknowledge commands. -// -// • Notifications are sent by either the proxy or clients and do not generate -// responses. -// -// Frame Structure -// -// The frame format is illustrated below: -// -// 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 -// 0 1 2 3 4 5 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 -// ┌───────────────────────────┬───────────────┬───────────────┐ -// │ Version │ Header Length │ Reserved │ -// ├───────────────────────────┼─────┬─┬───────┼───────────────┤ -// │ Reserved │ Res.│E│ Type │ Opcode │ -// ├───────────────────────────┴─────┴─┴───────┴───────────────┤ -// │ Payload Length │ -// ├───────────────────────────────────────────────────────────┤ -// │ │ -// │ Payload │ -// │ │ -// │ (variable length, optional and opcode-specific) │ -// │ │ -// └───────────────────────────────────────────────────────────┘ -// -// All header fields are encoded in network order (big endian). -// -// • Version (16 bits) is the proxy protocol version. See api.Version for -// details about what information it encodes. -// -// • Header Length (8 bits) is the length of the header in number of 32-bit -// words. Header Length is greater or equal to 3 (12 bytes). -// -// • Type (4 bits) is the frame type: command (0x0), response (0x1), -// stream (0x2) or notification (0x3). -// -// • Opcode (8 bits) specifies the kind of command, response, stream or -// notification this frame represents. In conjunction with Type, this field -// will dictate the payload content. -// -// • E, Error. This flag is set when a response returns an error. Currently -// Error can ony be set in response frames. -// -// • Payload Length (32 bits) is in bytes. -// -// • Payload is optional data that can be sent with the various frames. -// Commands, responses and notifications usually encode their payloads in JSON -// while stream frames have raw data payloads. -// -// • Reserved fields are reserved for future use and must be zeroed. -// -// Frame Size and Header Length -// -// The full size of a frame is (Header Length + Payload Length). The Payload -// starts at offset Header Length from the start of the frame. -// -// It is guaranteed that future header sizes will be at least 12 bytes. -package api diff --git a/vendor/github.com/clearcontainers/proxy/api/frame.go b/vendor/github.com/clearcontainers/proxy/api/frame.go deleted file mode 100644 index 242c7c2541..0000000000 --- a/vendor/github.com/clearcontainers/proxy/api/frame.go +++ /dev/null @@ -1,235 +0,0 @@ -// Copyright (c) 2017 Intel Corporation -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package api - -import ( - "encoding/json" -) - -// Version encodes the proxy protocol version. -// -// List of changes: -// -// • version 2: initial version released with Clear Containers 3.0 -// -// ⚠⚠⚠ backward incompatible with version 1 ⚠⚠⚠ -// -// List of changes: -// -// • Changed the frame header to include additional fields: version, -// header length, type and opcode. -// • Added a log messages for clients to insert log entries to the -// consolidated proxy log. -// -// • version 1: initial version released with Clear Containers 2.1 -const Version = 2 - -// FrameType is the type of frame and is part of the frame header. -type FrameType int - -const ( - // TypeCommand is a command from a client to the proxy. - TypeCommand FrameType = iota - // TypeResponse is a command response back from the proxy to a client. - TypeResponse - // TypeStream is a stream of data from a client to the proxy. Streams - // are to be forwarded onto the VM agent. - TypeStream - // TypeNotification is a notification sent by either the proxy or - // clients. Notifications are one way only and do not prompt a - // response. - TypeNotification - // TypeMax is the number of types. - TypeMax -) - -const unknown = "unknown" - -// String implements Stringer for FrameType. -func (t FrameType) String() string { - switch t { - case TypeCommand: - return "command" - case TypeResponse: - return "response" - case TypeStream: - return "stream" - case TypeNotification: - return "notification" - default: - return unknown - } -} - -// Command is the kind of command being sent. In the frame header, Opcode must -// have one of these values when Type is api.TypeCommand. -type Command int - -const ( - // CmdRegisterVM registers a new VM/POD. - CmdRegisterVM Command = iota - // CmdUnregisterVM unregisters a VM/POD. - CmdUnregisterVM - // CmdAttachVM attaches to a registered VM. - CmdAttachVM - // CmdHyper sends a hyperstart command through the proxy. - CmdHyper - // CmdConnectShim identifies the client as a shim. - CmdConnectShim - // CmdDisconnectShim unregisters a shim. DisconnectShim is a bit - // special and doesn't send a Response back but closes the connection. - CmdDisconnectShim - // CmdSignal sends a signal to the process inside the VM. A client - // needs to be connected as a shim before it can issue that command. - CmdSignal - // CmdMax is the number of commands. - CmdMax -) - -// String implements Stringer for Command. -func (t Command) String() string { - switch t { - case CmdRegisterVM: - return "RegisterVM" - case CmdUnregisterVM: - return "UnregisterVM" - case CmdAttachVM: - return "AttachVM" - case CmdHyper: - return "Hyper" - case CmdConnectShim: - return "ConnectShim" - case CmdDisconnectShim: - return "DisconnectShim" - case CmdSignal: - return "Signal" - default: - return unknown - } -} - -// Stream is the kind of stream being sent. In the frame header, Opcode must -// have one of the these values when Type is api.TypeStream. -type Stream int - -const ( - // StreamStdin is a stream conveying stdin data. - StreamStdin Stream = iota - // StreamStdout is a stream conveying stdout data. - StreamStdout - // StreamStderr is a stream conveying stderr data. - StreamStderr - // StreamLog is a stream conveying structured logs messages. Each Log frame - // contains a JSON object which fields are the structured log. By convention - // it would be nice to have a few common fields in log entries to ease - // post-processing. See the LogEntry payload for details. - StreamLog - // StreamMax is the number of stream types. - StreamMax -) - -// String implements Stringer for Stream. -func (s Stream) String() string { - switch s { - case StreamStdin: - return "stdin" - case StreamStdout: - return "stdout" - case StreamStderr: - return "stderr" - case StreamLog: - return "log" - default: - return unknown - } -} - -// Notification is the kind of notification being sent. In the frame header, -// Opcode must have one of the these values when Type is api.TypeNotification. -type Notification int - -const ( - // NotificationProcessExited is sent to signal a process in the VM has exited. - NotificationProcessExited = iota - // NotificationMax is the number of notification types. - NotificationMax -) - -// String implements Stringer for Notification. -func (n Notification) String() string { - switch n { - case NotificationProcessExited: - return "ProcessExited" - default: - return unknown - } -} - -// FrameHeader is the header of a Frame. -type FrameHeader struct { - Version int - // HeaderLength in the size of the header in bytes (the on-wire - // HeaderLength is in number of 32-bits words tough). - HeaderLength int - Type FrameType - Opcode int - PayloadLength int - InError bool -} - -// Frame is the basic communication unit with the proxy. -type Frame struct { - Header FrameHeader - Payload []byte -} - -// NewFrame creates a new Frame with type t, operand op and given payload. -func NewFrame(t FrameType, op int, payload []byte) *Frame { - return &Frame{ - Header: FrameHeader{ - Version: Version, - HeaderLength: minHeaderLength, - Type: t, - Opcode: op, - PayloadLength: len(payload), - }, - Payload: payload, - } -} - -// NewFrameJSON creates a new Frame with type t, operand op and given payload. -// The payload structure is marshalled into JSON. -func NewFrameJSON(t FrameType, op int, payload interface{}) (*Frame, error) { - var data []byte - - if payload != nil { - var err error - - if data, err = json.Marshal(payload); err != nil { - return nil, err - } - } - - return &Frame{ - Header: FrameHeader{ - Version: Version, - HeaderLength: minHeaderLength, - Type: t, - Opcode: op, - PayloadLength: len(data), - }, - Payload: data, - }, nil -} diff --git a/vendor/github.com/clearcontainers/proxy/api/payload.go b/vendor/github.com/clearcontainers/proxy/api/payload.go deleted file mode 100644 index c7d13b6ca0..0000000000 --- a/vendor/github.com/clearcontainers/proxy/api/payload.go +++ /dev/null @@ -1,183 +0,0 @@ -// Copyright (c) 2016,2017 Intel Corporation -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package api - -import ( - "encoding/json" -) - -// The RegisterVM payload is issued first after connecting to the proxy socket. -// It is used to let the proxy know about a new container on the system along -// with the paths go hyperstart's command and I/O channels (AF_UNIX sockets). -// -// Console can be used to indicate the path of a socket linked to the VM -// console. The proxy can output this data when asked for verbose output. -// -// { -// "containerId": "756535dc6e9ab9b560f84c8...", -// "ctlSerial": "/tmp/sh.hyper.channel.0.sock", -// "ioSerial": "/tmp/sh.hyper.channel.1.sock", -// "numIOStreams: 1 -// } -type RegisterVM struct { - ContainerID string `json:"containerId"` - CtlSerial string `json:"ctlSerial"` - IoSerial string `json:"ioSerial"` - Console string `json:"console,omitempty"` - // NumIOStreams asks for a number of I/O tokens. An I/O token - // represents the communication between a container process inside - // the VM and a shim process outside the VM. This communication - // includes I/O streams (stdin, out, err) but also signals, exit - // status, ... - // The response frame will contain NumIOStreams I/O tokens. - NumIOStreams int `json:"numIOStreams,omitempty"` -} - -// IOResponse is the response data in RegisterVMResponse and AttachVMResponse -// when the client is asking for I/O tokens from the proxy (NumIOStreams > 0). -type IOResponse struct { - // URL is the URL a shim process should connect to in order to initiate - // the I/O communication with the process inside the VM - URL string - // IOTokens is a array of I/O tokens of length NumIOStreams. See - // RegisterVM for some details on I/O tokens. - Tokens []string `json:"tokens"` -} - -// RegisterVMResponse is the result from a successful RegisterVM. -// -// { -// "io": { -// "url": "unix:///run/clearcontainers/proxy.sock", -// "tokens": [ -// "bwgxfmQj9uG3YCsFHrvontwDw41CJJ76Y7qVt4Bi9wc=" -// ] -// } -// } -type RegisterVMResponse struct { - // IO contains the proxy answer when asking for I/O tokens. - IO IOResponse `json:"io,omitempty"` -} - -// The AttachVM payload can be used to associate clients to an already known -// VM. AttachVM cannot be issued if a RegisterVM for this container hasn't been -// issued beforehand. -// -// { -// "containerId": "756535dc6e9ab9b560f84c8...". -// "numIOStreams: 1 -// } -type AttachVM struct { - ContainerID string `json:"containerId"` - // NumIOStreams asks for a number of I/O tokens. See RegisterVM for - // some details on I/O tokens. - NumIOStreams int `json:"numIOStreams,omitempty"` -} - -// AttachVMResponse is the result from a successful AttachVM. -// -// { -// "io": { -// "url": "unix:///run/clearcontainers/proxy.sock", -// "tokens": [ -// "bwgxfmQj9uG3YCsFHrvontwDw41CJJ76Y7qVt4Bi9wc=" -// ] -// } -// } -type AttachVMResponse struct { - // IO contains the proxy answer when asking for I/O tokens. - IO IOResponse `json:"io,omitempty"` -} - -// The UnregisterVM payload does the opposite of what RegisterVM does, -// indicating to the proxy it should release resources created by RegisterVM -// for the container identified by containerId. -// -// { -// "containerId": "756535dc6e9ab9b560f84c8..." -// } -type UnregisterVM struct { - ContainerID string `json:"containerId"` -} - -// The Hyper payload will forward an hyperstart command to hyperstart. -// -// Note: the newcontainer and execmd hyperstart commands start one or more -// processes. When sending those commands, tokens acquired through either -// RegisterVM or AttachVM need to be sent along in the tokens array. The number -// of tokens sent has to match the number of processes to be started. -// -// { -// "hyperName": "newcontainer", -// "tokens": [ -// "bwgxfmQj9uG3YCsFHrvontwDw41CJJ76Y7qVt4Bi9wc=" -// ], -// "data": { -// "id": "756535dc6e9ab9b560f84c8...", -// "rootfs": "/foo/bar", -// ... -// } -// } -// } -type Hyper struct { - HyperName string `json:"hyperName"` - Tokens []string `json:"tokens"` - Data json.RawMessage `json:"data,omitempty"` -} - -// ConnectShim identifies a shim against the proxy. A shim process is a process -// running on host shadowing a container process running inside the VM. A shim -// will forward stdin and signals to the process inside the VM and will receive -// stdout, stderr and the exit status. -type ConnectShim struct { - // Token is id corresponding to the process the shim wants to handle - // the I/O streams, signals, exit status for. Tokens are allocated with - // a call to RegisterVM or AttachVM. - Token string `json:"token"` -} - -// DisconnectShim unregister a shim from the proxy. -type DisconnectShim struct { -} - -// Signal is used to send signals to the container process inside the VM. This -// payload is only valid after a successful ConnectShim. -type Signal struct { - SignalNumber int `json:"signalNumber"` - // Columns is only valid for SIGWINCH and is the new number of columns of - // the terminal. - Columns int `json:"columns,omitempty"` - // Rows is only valid for SIGWINCH and is the new number of rows of the - // terminal. - Rows int `json:"rows,omitempty"` -} - -// ErrorResponse is the payload send in Responses where the Error flag is set. -type ErrorResponse struct { - Message string `json:"msg"` -} - -// LogEntry is the payload for the StreamLog data. -type LogEntry struct { - // Source is the source of the log entry. One of "shim" or "runtime". - Source string `json:"source"` - // ContainerID is the ID of the container the log entry is for (optional). - ContainerID string `json:"containerId,omitempty"` - // Level is the verbosity level of the log entry. One of "debug", "info", "warn" - // or "error". - Level string `json:"level"` - // Message is the log message - Message string `json:"msg"` -} diff --git a/vendor/github.com/clearcontainers/proxy/api/protocol.go b/vendor/github.com/clearcontainers/proxy/api/protocol.go deleted file mode 100644 index 00ce51a8c9..0000000000 --- a/vendor/github.com/clearcontainers/proxy/api/protocol.go +++ /dev/null @@ -1,213 +0,0 @@ -// Copyright (c) 2016 Intel Corporation -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package api - -import ( - "encoding/binary" - "encoding/json" - "errors" - "fmt" - "io" -) - -// minHeaderLength is the length of the header in the version 2 of protocol. -// It is guaranteed later versions will have a header at least that big. -const minHeaderLength = 12 // in bytes - -// A Request is a JSON message sent from a client to the proxy. This message -// embed a payload identified by "id". A payload can have data associated with -// it. It's useful to think of Request as an RPC call with "id" as function -// name and "data" as arguments. -// -// The list of possible payloads are documented in this package. -// -// Each Request has a corresponding Response message sent back from the proxy. -type Request struct { - ID string `json:"id"` - Data json.RawMessage `json:"data,omitempty"` -} - -// A Response is a JSON message sent back from the proxy to a client after a -// Request has been issued. The Response holds the result of the Request, -// including its success state and optional data. It's useful to think of -// Response as the result of an RPC call with ("success", "error") describing -// if the call has been successful and "data" holding the optional results. -type Response struct { - Success bool `json:"success"` - Error string `json:"error,omitempty"` - Data map[string]interface{} `json:"data,omitempty"` -} - -// Offsets (in bytes) of frame headers fields. -const ( - versionOffset = 0 - headerLengthOffset = 2 - typeOffset = 6 - flagsOffset = 6 - opcodeOffset = 7 - payloadLengthOffset = 8 -) - -// Size (in bytes) of frame header fields (when larger than 1 byte). -const ( - versionSize = 2 - payloadLengthSize = 4 -) - -// Masks needed to extract fields -const ( - typeMask = 0x0f - flagsMask = 0xf0 -) - -func maxOpcodeForFrameType(t FrameType) int { - switch t { - default: - fallthrough - case TypeCommand: - return int(CmdMax) - case TypeResponse: - return int(CmdMax) - case TypeStream: - return int(StreamMax) - case TypeNotification: - return int(NotificationMax) - } -} - -// ReadFrame reads a full frame (header and payload) from r. -func ReadFrame(r io.Reader) (*Frame, error) { - // Read the header. - buf := make([]byte, minHeaderLength) - n, err := r.Read(buf) - if err != nil { - return nil, err - } - if n != minHeaderLength { - return nil, errors.New("frame: couldn't read the full header") - } - - // Decode it. - frame := &Frame{} - header := &frame.Header - header.Version = int(binary.BigEndian.Uint16(buf[versionOffset : versionOffset+versionSize])) - if header.Version < 2 || header.Version > Version { - return nil, fmt.Errorf("frame: bad version %d", header.Version) - } - header.HeaderLength = int(buf[headerLengthOffset]) * 4 - header.Type = FrameType(buf[typeOffset] & typeMask) - flags := buf[flagsOffset] & flagsMask - if flags&flagInError != 0 { - header.InError = true - } - if header.Type >= TypeMax { - return nil, fmt.Errorf("frame: bad type %s", header.Type) - } - header.Opcode = int(buf[opcodeOffset]) - if header.Opcode >= maxOpcodeForFrameType(header.Type) { - return nil, fmt.Errorf("frame: bad opcode (%d) for type %s", header.Opcode, - header.Type) - } - header.PayloadLength = int(binary.BigEndian.Uint32(buf[payloadLengthOffset : payloadLengthOffset+payloadLengthSize])) - - // Read the payload. - received := 0 - need := header.HeaderLength - minHeaderLength + header.PayloadLength - payload := make([]byte, need) - for received < need { - n, err := r.Read(payload[received:need]) - if err != nil { - return nil, err - } - - received += n - } - - // Skip the bytes part of a bigger header than expected to just keep - // the payload. - frame.Payload = payload[header.HeaderLength-minHeaderLength : need] - - return frame, nil -} - -const ( - flagInError = 1 << (4 + iota) -) - -// WriteFrame writes a frame into w. -// -// Note that frame.Header.PayloadLength dictates the amount of data of -// frame.Payload to write, so frame.Header.Payload must be less or equal to -// len(frame.Payload). -func WriteFrame(w io.Writer, frame *Frame) error { - header := &frame.Header - - if len(frame.Payload) < header.PayloadLength { - return fmt.Errorf("frame: bad payload length %d", - header.PayloadLength) - } - - // Prepare the header. - len := minHeaderLength + header.PayloadLength - buf := make([]byte, len) - binary.BigEndian.PutUint16(buf[versionOffset:versionOffset+versionSize], uint16(header.Version)) - buf[headerLengthOffset] = byte(header.HeaderLength / 4) - flags := byte(0) - if frame.Header.InError { - flags |= flagInError - } - buf[typeOffset] = flags | byte(header.Type)&typeMask - buf[opcodeOffset] = byte(header.Opcode) - binary.BigEndian.PutUint32(buf[payloadLengthOffset:payloadLengthOffset+payloadLengthSize], - uint32(header.PayloadLength)) - - // Write payload if needed - if header.PayloadLength > 0 { - copy(buf[minHeaderLength:], frame.Payload[0:header.PayloadLength]) - } - - n, err := w.Write(buf) - if err != nil { - return err - } - - if n != len { - return errors.New("frame: couldn't write frame") - } - - return nil -} - -// WriteCommand is a convenience wrapper around WriteFrame to send commands. -func WriteCommand(w io.Writer, op Command, payload []byte) error { - return WriteFrame(w, NewFrame(TypeCommand, int(op), payload)) -} - -// WriteResponse is a convenience wrapper around WriteFrame to send responses. -func WriteResponse(w io.Writer, op Command, inError bool, payload []byte) error { - frame := NewFrame(TypeResponse, int(op), payload) - frame.Header.InError = inError - return WriteFrame(w, frame) -} - -// WriteStream is a convenience wrapper around WriteFrame to send stream packets. -func WriteStream(w io.Writer, op Stream, payload []byte) error { - return WriteFrame(w, NewFrame(TypeStream, int(op), payload)) -} - -// WriteNotification is a convenience wrapper around WriteFrame to send notifications. -func WriteNotification(w io.Writer, op Notification, payload []byte) error { - return WriteFrame(w, NewFrame(TypeNotification, int(op), payload)) -} diff --git a/vendor/github.com/clearcontainers/proxy/client/client.go b/vendor/github.com/clearcontainers/proxy/client/client.go deleted file mode 100644 index 13db189eea..0000000000 --- a/vendor/github.com/clearcontainers/proxy/client/client.go +++ /dev/null @@ -1,410 +0,0 @@ -// Copyright (c) 2016 Intel Corporation -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package client - -import ( - "encoding/json" - "errors" - "fmt" - "net" - "syscall" - - "github.com/clearcontainers/proxy/api" -) - -// The Client struct can be used to issue proxy API calls with a convenient -// high level API. -type Client struct { - conn net.Conn -} - -// NewClient creates a new client object to communicate with the proxy using -// the connection conn. The user should call Close() once finished with the -// client object to close conn. -func NewClient(conn net.Conn) *Client { - return &Client{ - conn: conn, - } -} - -// Close a client, closing the underlying AF_UNIX socket. -func (client *Client) Close() { - client.conn.Close() -} - -func (client *Client) sendCommandFull(cmd api.Command, payload interface{}, - waitForResponse bool) (*api.Frame, error) { - var data []byte - var frame *api.Frame - var err error - - if payload != nil { - if data, err = json.Marshal(payload); err != nil { - return nil, err - } - } - - if err := api.WriteCommand(client.conn, cmd, data); err != nil { - return nil, err - } - - if !waitForResponse { - return nil, nil - } - - if frame, err = api.ReadFrame(client.conn); err != nil { - return nil, err - } - - if cmd == api.CmdSignal { - payloadSignal, ok := payload.(*api.Signal) - if !ok { - return nil, err - } - - if payloadSignal.SignalNumber == int(syscall.SIGKILL) || - payloadSignal.SignalNumber == int(syscall.SIGTERM) { - if frame.Header.Type != api.TypeNotification { - return nil, fmt.Errorf("unexpected frame type %v", frame.Header.Type) - } - - if frame, err = api.ReadFrame(client.conn); err != nil { - return nil, err - } - } - } - - if frame.Header.Type != api.TypeResponse { - return nil, fmt.Errorf("unexpected frame type %v", frame.Header.Type) - } - - if frame.Header.Opcode != int(cmd) { - return nil, fmt.Errorf("unexpected opcode %v", frame.Header.Opcode) - } - - return frame, nil -} - -func (client *Client) sendCommand(cmd api.Command, payload interface{}) (*api.Frame, error) { - return client.sendCommandFull(cmd, payload, true) -} - -func (client *Client) sendCommandNoResponse(cmd api.Command, payload interface{}) error { - _, err := client.sendCommandFull(cmd, payload, false) - return err -} - -func errorFromResponse(resp *api.Frame) error { - // We should always have an error with the response, but better safe - // than sorry. - if !resp.Header.InError { - return nil - } - - decoded := api.ErrorResponse{} - if err := json.Unmarshal(resp.Payload, &decoded); err != nil { - return err - } - - if decoded.Message == "" { - return errors.New("unknown error") - } - - return errors.New(decoded.Message) -} - -func unmarshalResponse(resp *api.Frame, decoded interface{}) error { - if len(resp.Payload) == 0 { - return nil - } - - if err := json.Unmarshal(resp.Payload, decoded); err != nil { - return err - } - - return nil -} - -// RegisterVMOptions holds extra arguments one can pass to the RegisterVM -// function. -// -// See the api.RegisterVM payload for more details. -type RegisterVMOptions struct { - Console string - NumIOStreams int -} - -// RegisterVMReturn contains the return values from RegisterVM. -// -// See the api.RegisterVM and api.RegisterVMResponse payloads. -type RegisterVMReturn api.RegisterVMResponse - -// RegisterVM wraps the api.RegisterVM payload. -// -// See payload description for more details. -func (client *Client) RegisterVM(containerID, ctlSerial, ioSerial string, - options *RegisterVMOptions) (*RegisterVMReturn, error) { - payload := api.RegisterVM{ - ContainerID: containerID, - CtlSerial: ctlSerial, - IoSerial: ioSerial, - } - - if options != nil { - payload.Console = options.Console - payload.NumIOStreams = options.NumIOStreams - } - - resp, err := client.sendCommand(api.CmdRegisterVM, &payload) - if err != nil { - return nil, err - } - - if err := errorFromResponse(resp); err != nil { - return nil, err - } - - decoded := RegisterVMReturn{} - err = unmarshalResponse(resp, &decoded) - return &decoded, err -} - -// AttachVMOptions holds extra arguments one can pass to the AttachVM function. -// -// See the api.AttachVM payload for more details. -type AttachVMOptions struct { - NumIOStreams int -} - -// AttachVMReturn contains the return values from AttachVM. -// -// See the api.AttachVM and api.AttachVMResponse payloads. -type AttachVMReturn api.AttachVMResponse - -// AttachVM wraps the api.AttachVM payload. -// -// See the api.AttachVM payload description for more details. -func (client *Client) AttachVM(containerID string, options *AttachVMOptions) (*AttachVMReturn, error) { - payload := api.AttachVM{ - ContainerID: containerID, - } - - if options != nil { - payload.NumIOStreams = options.NumIOStreams - } - - resp, err := client.sendCommand(api.CmdAttachVM, &payload) - if err != nil { - return nil, err - } - - if err := errorFromResponse(resp); err != nil { - return nil, err - } - - decoded := AttachVMReturn{} - err = unmarshalResponse(resp, &decoded) - return &decoded, err -} - -// Hyper wraps the Hyper payload (see payload description for more details) -func (client *Client) Hyper(hyperName string, hyperMessage interface{}) ([]byte, error) { - return client.HyperWithTokens(hyperName, nil, hyperMessage) -} - -// HyperWithTokens is a Hyper variant where the users can specify a list of I/O tokens. -// -// See the api.Hyper payload description for more details. -func (client *Client) HyperWithTokens(hyperName string, tokens []string, hyperMessage interface{}) ([]byte, error) { - var data []byte - - if hyperMessage != nil { - var err error - - data, err = json.Marshal(hyperMessage) - if err != nil { - return nil, err - } - } - - hyper := api.Hyper{ - HyperName: hyperName, - Data: data, - } - - if tokens != nil { - hyper.Tokens = tokens - } - - resp, err := client.sendCommand(api.CmdHyper, &hyper) - if err != nil { - return nil, err - } - - if err = errorFromResponse(resp); err != nil { - return nil, err - } - - return resp.Payload, errorFromResponse(resp) -} - -// UnregisterVM wraps the api.UnregisterVM payload. -// -// See the api.UnregisterVM payload description for more details. -func (client *Client) UnregisterVM(containerID string) error { - payload := api.UnregisterVM{ - ContainerID: containerID, - } - - resp, err := client.sendCommand(api.CmdUnregisterVM, &payload) - if err != nil { - return err - } - - return errorFromResponse(resp) -} - -// ConnectShim wraps the api.CmdConnectShim command and associated -// api.ConnectShim payload. -func (client *Client) ConnectShim(token string) error { - payload := api.ConnectShim{ - Token: token, - } - - resp, err := client.sendCommand(api.CmdConnectShim, &payload) - if err != nil { - return err - } - - return errorFromResponse(resp) -} - -// DisconnectShim wraps the api.CmdDisconnectShim command and associated -// api.DisconnectShim payload. -func (client *Client) DisconnectShim() error { - return client.sendCommandNoResponse(api.CmdDisconnectShim, nil) -} - -func (client *Client) signal(signal syscall.Signal, columns, rows int) error { - payload := api.Signal{ - SignalNumber: int(signal), - Columns: columns, - Rows: rows, - } - - resp, err := client.sendCommand(api.CmdSignal, &payload) - if err != nil { - return err - } - - return errorFromResponse(resp) -} - -// Kill wraps the api.CmdSignal command and can be used by a shim to send a -// signal to the associated process. -func (client *Client) Kill(signal syscall.Signal) error { - return client.signal(signal, 0, 0) -} - -// SendTerminalSize wraps the api.CmdSignal command and can be used by a shim -// to send a new signal to the associated process. -func (client *Client) SendTerminalSize(columns, rows int) error { - return client.signal(syscall.SIGWINCH, columns, rows) -} - -func (client *Client) sendStream(op api.Stream, data []byte) error { - return api.WriteStream(client.conn, op, data) -} - -// SendStdin sends stdin data. This can only be used from shim clients. -func (client *Client) SendStdin(data []byte) error { - return client.sendStream(api.StreamStdin, data) -} - -// LogLevel is the severity of log entries. -type LogLevel uint8 - -const ( - // LogLevelDebug is for log messages only useful debugging. - LogLevelDebug LogLevel = iota - // LogLevelInfo is for reporting landmark events. - LogLevelInfo - // LogLevelWarn is for reporting warnings. - LogLevelWarn - // LogLevelError is for reporting errors. - LogLevelError - - logLevelMax -) - -var levelToString = []string{"debug", "info", "warn", "error"} - -// String implements stringer for LogLevel. -func (l LogLevel) String() string { - if l < logLevelMax { - return levelToString[l] - } - - return "unknown" -} - -// LogSource is the source of log entries -type LogSource uint8 - -const ( - // LogSourceRuntime represents a runtime. - LogSourceRuntime LogSource = iota - // LogSourceShim represents a shim. - LogSourceShim - - logSourceMax -) - -var sourceToString = []string{"runtime", "shim"} - -// String implements stringer for LogSource -func (s LogSource) String() string { - if s < logSourceMax { - return sourceToString[s] - } - - return "unknown" -} - -// Log sends log entries. -func (client *Client) Log(level LogLevel, source LogSource, containerID string, args ...interface{}) { - payload := api.LogEntry{ - Level: level.String(), - Source: source.String(), - ContainerID: containerID, - Message: fmt.Sprint(args...), - } - - data, _ := json.Marshal(&payload) - _ = client.sendStream(api.StreamLog, data) -} - -// Logf sends log entries. -func (client *Client) Logf(level LogLevel, source LogSource, containerID string, format string, args ...interface{}) { - payload := api.LogEntry{ - Level: level.String(), - Source: source.String(), - ContainerID: containerID, - Message: fmt.Sprintf(format, args...), - } - - data, _ := json.Marshal(&payload) - _ = client.sendStream(api.StreamLog, data) -} diff --git a/vendor/github.com/kata-containers/agent/protocols/grpc/agent.pb.go b/vendor/github.com/kata-containers/agent/protocols/grpc/agent.pb.go index c617fa60b1..ee57ad0759 100644 --- a/vendor/github.com/kata-containers/agent/protocols/grpc/agent.pb.go +++ b/vendor/github.com/kata-containers/agent/protocols/grpc/agent.pb.go @@ -45,8 +45,6 @@ Interfaces Routes UpdateInterfaceRequest - AddInterfaceRequest - RemoveInterfaceRequest UpdateRoutesRequest ListInterfacesRequest ListRoutesRequest @@ -61,6 +59,8 @@ Device StringUser CopyFileRequest + StartTracingRequest + StopTracingRequest CheckRequest HealthCheckResponse VersionCheckResponse @@ -1176,38 +1176,6 @@ func (m *UpdateInterfaceRequest) GetInterface() *types.Interface { return nil } -type AddInterfaceRequest struct { - Interface *types.Interface `protobuf:"bytes,1,opt,name=interface" json:"interface,omitempty"` -} - -func (m *AddInterfaceRequest) Reset() { *m = AddInterfaceRequest{} } -func (m *AddInterfaceRequest) String() string { return proto.CompactTextString(m) } -func (*AddInterfaceRequest) ProtoMessage() {} -func (*AddInterfaceRequest) Descriptor() ([]byte, []int) { return fileDescriptorAgent, []int{35} } - -func (m *AddInterfaceRequest) GetInterface() *types.Interface { - if m != nil { - return m.Interface - } - return nil -} - -type RemoveInterfaceRequest struct { - Interface *types.Interface `protobuf:"bytes,1,opt,name=interface" json:"interface,omitempty"` -} - -func (m *RemoveInterfaceRequest) Reset() { *m = RemoveInterfaceRequest{} } -func (m *RemoveInterfaceRequest) String() string { return proto.CompactTextString(m) } -func (*RemoveInterfaceRequest) ProtoMessage() {} -func (*RemoveInterfaceRequest) Descriptor() ([]byte, []int) { return fileDescriptorAgent, []int{36} } - -func (m *RemoveInterfaceRequest) GetInterface() *types.Interface { - if m != nil { - return m.Interface - } - return nil -} - type UpdateRoutesRequest struct { Routes *Routes `protobuf:"bytes,1,opt,name=routes" json:"routes,omitempty"` } @@ -1215,7 +1183,7 @@ type UpdateRoutesRequest struct { func (m *UpdateRoutesRequest) Reset() { *m = UpdateRoutesRequest{} } func (m *UpdateRoutesRequest) String() string { return proto.CompactTextString(m) } func (*UpdateRoutesRequest) ProtoMessage() {} -func (*UpdateRoutesRequest) Descriptor() ([]byte, []int) { return fileDescriptorAgent, []int{37} } +func (*UpdateRoutesRequest) Descriptor() ([]byte, []int) { return fileDescriptorAgent, []int{35} } func (m *UpdateRoutesRequest) GetRoutes() *Routes { if m != nil { @@ -1230,7 +1198,7 @@ type ListInterfacesRequest struct { func (m *ListInterfacesRequest) Reset() { *m = ListInterfacesRequest{} } func (m *ListInterfacesRequest) String() string { return proto.CompactTextString(m) } func (*ListInterfacesRequest) ProtoMessage() {} -func (*ListInterfacesRequest) Descriptor() ([]byte, []int) { return fileDescriptorAgent, []int{38} } +func (*ListInterfacesRequest) Descriptor() ([]byte, []int) { return fileDescriptorAgent, []int{36} } type ListRoutesRequest struct { } @@ -1238,7 +1206,7 @@ type ListRoutesRequest struct { func (m *ListRoutesRequest) Reset() { *m = ListRoutesRequest{} } func (m *ListRoutesRequest) String() string { return proto.CompactTextString(m) } func (*ListRoutesRequest) ProtoMessage() {} -func (*ListRoutesRequest) Descriptor() ([]byte, []int) { return fileDescriptorAgent, []int{39} } +func (*ListRoutesRequest) Descriptor() ([]byte, []int) { return fileDescriptorAgent, []int{37} } type OnlineCPUMemRequest struct { // Wait specifies if the caller waits for the agent to online all resources. @@ -1254,7 +1222,7 @@ type OnlineCPUMemRequest struct { func (m *OnlineCPUMemRequest) Reset() { *m = OnlineCPUMemRequest{} } func (m *OnlineCPUMemRequest) String() string { return proto.CompactTextString(m) } func (*OnlineCPUMemRequest) ProtoMessage() {} -func (*OnlineCPUMemRequest) Descriptor() ([]byte, []int) { return fileDescriptorAgent, []int{40} } +func (*OnlineCPUMemRequest) Descriptor() ([]byte, []int) { return fileDescriptorAgent, []int{38} } func (m *OnlineCPUMemRequest) GetWait() bool { if m != nil { @@ -1285,7 +1253,7 @@ type ReseedRandomDevRequest struct { func (m *ReseedRandomDevRequest) Reset() { *m = ReseedRandomDevRequest{} } func (m *ReseedRandomDevRequest) String() string { return proto.CompactTextString(m) } func (*ReseedRandomDevRequest) ProtoMessage() {} -func (*ReseedRandomDevRequest) Descriptor() ([]byte, []int) { return fileDescriptorAgent, []int{41} } +func (*ReseedRandomDevRequest) Descriptor() ([]byte, []int) { return fileDescriptorAgent, []int{39} } func (m *ReseedRandomDevRequest) GetData() []byte { if m != nil { @@ -1312,7 +1280,7 @@ type AgentDetails struct { func (m *AgentDetails) Reset() { *m = AgentDetails{} } func (m *AgentDetails) String() string { return proto.CompactTextString(m) } func (*AgentDetails) ProtoMessage() {} -func (*AgentDetails) Descriptor() ([]byte, []int) { return fileDescriptorAgent, []int{42} } +func (*AgentDetails) Descriptor() ([]byte, []int) { return fileDescriptorAgent, []int{40} } func (m *AgentDetails) GetVersion() string { if m != nil { @@ -1363,7 +1331,7 @@ type GuestDetailsRequest struct { func (m *GuestDetailsRequest) Reset() { *m = GuestDetailsRequest{} } func (m *GuestDetailsRequest) String() string { return proto.CompactTextString(m) } func (*GuestDetailsRequest) ProtoMessage() {} -func (*GuestDetailsRequest) Descriptor() ([]byte, []int) { return fileDescriptorAgent, []int{43} } +func (*GuestDetailsRequest) Descriptor() ([]byte, []int) { return fileDescriptorAgent, []int{41} } func (m *GuestDetailsRequest) GetMemBlockSize() bool { if m != nil { @@ -1389,7 +1357,7 @@ type GuestDetailsResponse struct { func (m *GuestDetailsResponse) Reset() { *m = GuestDetailsResponse{} } func (m *GuestDetailsResponse) String() string { return proto.CompactTextString(m) } func (*GuestDetailsResponse) ProtoMessage() {} -func (*GuestDetailsResponse) Descriptor() ([]byte, []int) { return fileDescriptorAgent, []int{44} } +func (*GuestDetailsResponse) Descriptor() ([]byte, []int) { return fileDescriptorAgent, []int{42} } func (m *GuestDetailsResponse) GetMemBlockSizeBytes() uint64 { if m != nil { @@ -1421,7 +1389,7 @@ type MemHotplugByProbeRequest struct { func (m *MemHotplugByProbeRequest) Reset() { *m = MemHotplugByProbeRequest{} } func (m *MemHotplugByProbeRequest) String() string { return proto.CompactTextString(m) } func (*MemHotplugByProbeRequest) ProtoMessage() {} -func (*MemHotplugByProbeRequest) Descriptor() ([]byte, []int) { return fileDescriptorAgent, []int{45} } +func (*MemHotplugByProbeRequest) Descriptor() ([]byte, []int) { return fileDescriptorAgent, []int{43} } func (m *MemHotplugByProbeRequest) GetMemHotplugProbeAddr() []uint64 { if m != nil { @@ -1440,7 +1408,7 @@ type SetGuestDateTimeRequest struct { func (m *SetGuestDateTimeRequest) Reset() { *m = SetGuestDateTimeRequest{} } func (m *SetGuestDateTimeRequest) String() string { return proto.CompactTextString(m) } func (*SetGuestDateTimeRequest) ProtoMessage() {} -func (*SetGuestDateTimeRequest) Descriptor() ([]byte, []int) { return fileDescriptorAgent, []int{46} } +func (*SetGuestDateTimeRequest) Descriptor() ([]byte, []int) { return fileDescriptorAgent, []int{44} } func (m *SetGuestDateTimeRequest) GetSec() int64 { if m != nil { @@ -1489,7 +1457,7 @@ type Storage struct { func (m *Storage) Reset() { *m = Storage{} } func (m *Storage) String() string { return proto.CompactTextString(m) } func (*Storage) ProtoMessage() {} -func (*Storage) Descriptor() ([]byte, []int) { return fileDescriptorAgent, []int{47} } +func (*Storage) Descriptor() ([]byte, []int) { return fileDescriptorAgent, []int{45} } func (m *Storage) GetDriver() string { if m != nil { @@ -1572,7 +1540,7 @@ type Device struct { func (m *Device) Reset() { *m = Device{} } func (m *Device) String() string { return proto.CompactTextString(m) } func (*Device) ProtoMessage() {} -func (*Device) Descriptor() ([]byte, []int) { return fileDescriptorAgent, []int{48} } +func (*Device) Descriptor() ([]byte, []int) { return fileDescriptorAgent, []int{46} } func (m *Device) GetId() string { if m != nil { @@ -1618,7 +1586,7 @@ type StringUser struct { func (m *StringUser) Reset() { *m = StringUser{} } func (m *StringUser) String() string { return proto.CompactTextString(m) } func (*StringUser) ProtoMessage() {} -func (*StringUser) Descriptor() ([]byte, []int) { return fileDescriptorAgent, []int{49} } +func (*StringUser) Descriptor() ([]byte, []int) { return fileDescriptorAgent, []int{47} } func (m *StringUser) GetUid() string { if m != nil { @@ -1666,7 +1634,7 @@ type CopyFileRequest struct { func (m *CopyFileRequest) Reset() { *m = CopyFileRequest{} } func (m *CopyFileRequest) String() string { return proto.CompactTextString(m) } func (*CopyFileRequest) ProtoMessage() {} -func (*CopyFileRequest) Descriptor() ([]byte, []int) { return fileDescriptorAgent, []int{50} } +func (*CopyFileRequest) Descriptor() ([]byte, []int) { return fileDescriptorAgent, []int{48} } func (m *CopyFileRequest) GetPath() string { if m != nil { @@ -1724,6 +1692,22 @@ func (m *CopyFileRequest) GetData() []byte { return nil } +type StartTracingRequest struct { +} + +func (m *StartTracingRequest) Reset() { *m = StartTracingRequest{} } +func (m *StartTracingRequest) String() string { return proto.CompactTextString(m) } +func (*StartTracingRequest) ProtoMessage() {} +func (*StartTracingRequest) Descriptor() ([]byte, []int) { return fileDescriptorAgent, []int{49} } + +type StopTracingRequest struct { +} + +func (m *StopTracingRequest) Reset() { *m = StopTracingRequest{} } +func (m *StopTracingRequest) String() string { return proto.CompactTextString(m) } +func (*StopTracingRequest) ProtoMessage() {} +func (*StopTracingRequest) Descriptor() ([]byte, []int) { return fileDescriptorAgent, []int{50} } + func init() { proto.RegisterType((*CreateContainerRequest)(nil), "grpc.CreateContainerRequest") proto.RegisterType((*StartContainerRequest)(nil), "grpc.StartContainerRequest") @@ -1760,8 +1744,6 @@ func init() { proto.RegisterType((*Interfaces)(nil), "grpc.Interfaces") proto.RegisterType((*Routes)(nil), "grpc.Routes") proto.RegisterType((*UpdateInterfaceRequest)(nil), "grpc.UpdateInterfaceRequest") - proto.RegisterType((*AddInterfaceRequest)(nil), "grpc.AddInterfaceRequest") - proto.RegisterType((*RemoveInterfaceRequest)(nil), "grpc.RemoveInterfaceRequest") proto.RegisterType((*UpdateRoutesRequest)(nil), "grpc.UpdateRoutesRequest") proto.RegisterType((*ListInterfacesRequest)(nil), "grpc.ListInterfacesRequest") proto.RegisterType((*ListRoutesRequest)(nil), "grpc.ListRoutesRequest") @@ -1776,6 +1758,8 @@ func init() { proto.RegisterType((*Device)(nil), "grpc.Device") proto.RegisterType((*StringUser)(nil), "grpc.StringUser") proto.RegisterType((*CopyFileRequest)(nil), "grpc.CopyFileRequest") + proto.RegisterType((*StartTracingRequest)(nil), "grpc.StartTracingRequest") + proto.RegisterType((*StopTracingRequest)(nil), "grpc.StopTracingRequest") } // Reference imports to suppress errors if they are not otherwise used. @@ -1814,12 +1798,13 @@ type AgentServiceClient interface { CloseStdin(ctx context.Context, in *CloseStdinRequest, opts ...grpc1.CallOption) (*google_protobuf2.Empty, error) TtyWinResize(ctx context.Context, in *TtyWinResizeRequest, opts ...grpc1.CallOption) (*google_protobuf2.Empty, error) // networking - AddInterface(ctx context.Context, in *AddInterfaceRequest, opts ...grpc1.CallOption) (*types.Interface, error) UpdateInterface(ctx context.Context, in *UpdateInterfaceRequest, opts ...grpc1.CallOption) (*types.Interface, error) - RemoveInterface(ctx context.Context, in *RemoveInterfaceRequest, opts ...grpc1.CallOption) (*types.Interface, error) UpdateRoutes(ctx context.Context, in *UpdateRoutesRequest, opts ...grpc1.CallOption) (*Routes, error) ListInterfaces(ctx context.Context, in *ListInterfacesRequest, opts ...grpc1.CallOption) (*Interfaces, error) ListRoutes(ctx context.Context, in *ListRoutesRequest, opts ...grpc1.CallOption) (*Routes, error) + // tracing + StartTracing(ctx context.Context, in *StartTracingRequest, opts ...grpc1.CallOption) (*google_protobuf2.Empty, error) + StopTracing(ctx context.Context, in *StopTracingRequest, opts ...grpc1.CallOption) (*google_protobuf2.Empty, error) // misc (TODO: some rpcs can be replaced by hyperstart-exec) CreateSandbox(ctx context.Context, in *CreateSandboxRequest, opts ...grpc1.CallOption) (*google_protobuf2.Empty, error) DestroySandbox(ctx context.Context, in *DestroySandboxRequest, opts ...grpc1.CallOption) (*google_protobuf2.Empty, error) @@ -1983,15 +1968,6 @@ func (c *agentServiceClient) TtyWinResize(ctx context.Context, in *TtyWinResizeR return out, nil } -func (c *agentServiceClient) AddInterface(ctx context.Context, in *AddInterfaceRequest, opts ...grpc1.CallOption) (*types.Interface, error) { - out := new(types.Interface) - err := grpc1.Invoke(ctx, "/grpc.AgentService/AddInterface", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - func (c *agentServiceClient) UpdateInterface(ctx context.Context, in *UpdateInterfaceRequest, opts ...grpc1.CallOption) (*types.Interface, error) { out := new(types.Interface) err := grpc1.Invoke(ctx, "/grpc.AgentService/UpdateInterface", in, out, c.cc, opts...) @@ -2001,15 +1977,6 @@ func (c *agentServiceClient) UpdateInterface(ctx context.Context, in *UpdateInte return out, nil } -func (c *agentServiceClient) RemoveInterface(ctx context.Context, in *RemoveInterfaceRequest, opts ...grpc1.CallOption) (*types.Interface, error) { - out := new(types.Interface) - err := grpc1.Invoke(ctx, "/grpc.AgentService/RemoveInterface", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - func (c *agentServiceClient) UpdateRoutes(ctx context.Context, in *UpdateRoutesRequest, opts ...grpc1.CallOption) (*Routes, error) { out := new(Routes) err := grpc1.Invoke(ctx, "/grpc.AgentService/UpdateRoutes", in, out, c.cc, opts...) @@ -2037,6 +2004,24 @@ func (c *agentServiceClient) ListRoutes(ctx context.Context, in *ListRoutesReque return out, nil } +func (c *agentServiceClient) StartTracing(ctx context.Context, in *StartTracingRequest, opts ...grpc1.CallOption) (*google_protobuf2.Empty, error) { + out := new(google_protobuf2.Empty) + err := grpc1.Invoke(ctx, "/grpc.AgentService/StartTracing", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *agentServiceClient) StopTracing(ctx context.Context, in *StopTracingRequest, opts ...grpc1.CallOption) (*google_protobuf2.Empty, error) { + out := new(google_protobuf2.Empty) + err := grpc1.Invoke(ctx, "/grpc.AgentService/StopTracing", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *agentServiceClient) CreateSandbox(ctx context.Context, in *CreateSandboxRequest, opts ...grpc1.CallOption) (*google_protobuf2.Empty, error) { out := new(google_protobuf2.Empty) err := grpc1.Invoke(ctx, "/grpc.AgentService/CreateSandbox", in, out, c.cc, opts...) @@ -2137,12 +2122,13 @@ type AgentServiceServer interface { CloseStdin(context.Context, *CloseStdinRequest) (*google_protobuf2.Empty, error) TtyWinResize(context.Context, *TtyWinResizeRequest) (*google_protobuf2.Empty, error) // networking - AddInterface(context.Context, *AddInterfaceRequest) (*types.Interface, error) UpdateInterface(context.Context, *UpdateInterfaceRequest) (*types.Interface, error) - RemoveInterface(context.Context, *RemoveInterfaceRequest) (*types.Interface, error) UpdateRoutes(context.Context, *UpdateRoutesRequest) (*Routes, error) ListInterfaces(context.Context, *ListInterfacesRequest) (*Interfaces, error) ListRoutes(context.Context, *ListRoutesRequest) (*Routes, error) + // tracing + StartTracing(context.Context, *StartTracingRequest) (*google_protobuf2.Empty, error) + StopTracing(context.Context, *StopTracingRequest) (*google_protobuf2.Empty, error) // misc (TODO: some rpcs can be replaced by hyperstart-exec) CreateSandbox(context.Context, *CreateSandboxRequest) (*google_protobuf2.Empty, error) DestroySandbox(context.Context, *DestroySandboxRequest) (*google_protobuf2.Empty, error) @@ -2446,24 +2432,6 @@ func _AgentService_TtyWinResize_Handler(srv interface{}, ctx context.Context, de return interceptor(ctx, in, info, handler) } -func _AgentService_AddInterface_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc1.UnaryServerInterceptor) (interface{}, error) { - in := new(AddInterfaceRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AgentServiceServer).AddInterface(ctx, in) - } - info := &grpc1.UnaryServerInfo{ - Server: srv, - FullMethod: "/grpc.AgentService/AddInterface", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AgentServiceServer).AddInterface(ctx, req.(*AddInterfaceRequest)) - } - return interceptor(ctx, in, info, handler) -} - func _AgentService_UpdateInterface_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc1.UnaryServerInterceptor) (interface{}, error) { in := new(UpdateInterfaceRequest) if err := dec(in); err != nil { @@ -2482,24 +2450,6 @@ func _AgentService_UpdateInterface_Handler(srv interface{}, ctx context.Context, return interceptor(ctx, in, info, handler) } -func _AgentService_RemoveInterface_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc1.UnaryServerInterceptor) (interface{}, error) { - in := new(RemoveInterfaceRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AgentServiceServer).RemoveInterface(ctx, in) - } - info := &grpc1.UnaryServerInfo{ - Server: srv, - FullMethod: "/grpc.AgentService/RemoveInterface", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AgentServiceServer).RemoveInterface(ctx, req.(*RemoveInterfaceRequest)) - } - return interceptor(ctx, in, info, handler) -} - func _AgentService_UpdateRoutes_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc1.UnaryServerInterceptor) (interface{}, error) { in := new(UpdateRoutesRequest) if err := dec(in); err != nil { @@ -2554,6 +2504,42 @@ func _AgentService_ListRoutes_Handler(srv interface{}, ctx context.Context, dec return interceptor(ctx, in, info, handler) } +func _AgentService_StartTracing_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc1.UnaryServerInterceptor) (interface{}, error) { + in := new(StartTracingRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AgentServiceServer).StartTracing(ctx, in) + } + info := &grpc1.UnaryServerInfo{ + Server: srv, + FullMethod: "/grpc.AgentService/StartTracing", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AgentServiceServer).StartTracing(ctx, req.(*StartTracingRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _AgentService_StopTracing_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc1.UnaryServerInterceptor) (interface{}, error) { + in := new(StopTracingRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AgentServiceServer).StopTracing(ctx, in) + } + info := &grpc1.UnaryServerInfo{ + Server: srv, + FullMethod: "/grpc.AgentService/StopTracing", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AgentServiceServer).StopTracing(ctx, req.(*StopTracingRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _AgentService_CreateSandbox_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc1.UnaryServerInterceptor) (interface{}, error) { in := new(CreateSandboxRequest) if err := dec(in); err != nil { @@ -2766,18 +2752,10 @@ var _AgentService_serviceDesc = grpc1.ServiceDesc{ MethodName: "TtyWinResize", Handler: _AgentService_TtyWinResize_Handler, }, - { - MethodName: "AddInterface", - Handler: _AgentService_AddInterface_Handler, - }, { MethodName: "UpdateInterface", Handler: _AgentService_UpdateInterface_Handler, }, - { - MethodName: "RemoveInterface", - Handler: _AgentService_RemoveInterface_Handler, - }, { MethodName: "UpdateRoutes", Handler: _AgentService_UpdateRoutes_Handler, @@ -2790,6 +2768,14 @@ var _AgentService_serviceDesc = grpc1.ServiceDesc{ MethodName: "ListRoutes", Handler: _AgentService_ListRoutes_Handler, }, + { + MethodName: "StartTracing", + Handler: _AgentService_StartTracing_Handler, + }, + { + MethodName: "StopTracing", + Handler: _AgentService_StopTracing_Handler, + }, { MethodName: "CreateSandbox", Handler: _AgentService_CreateSandbox_Handler, @@ -4210,62 +4196,6 @@ func (m *UpdateInterfaceRequest) MarshalTo(dAtA []byte) (int, error) { return i, nil } -func (m *AddInterfaceRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalTo(dAtA) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *AddInterfaceRequest) MarshalTo(dAtA []byte) (int, error) { - var i int - _ = i - var l int - _ = l - if m.Interface != nil { - dAtA[i] = 0xa - i++ - i = encodeVarintAgent(dAtA, i, uint64(m.Interface.Size())) - n20, err := m.Interface.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err - } - i += n20 - } - return i, nil -} - -func (m *RemoveInterfaceRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalTo(dAtA) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *RemoveInterfaceRequest) MarshalTo(dAtA []byte) (int, error) { - var i int - _ = i - var l int - _ = l - if m.Interface != nil { - dAtA[i] = 0xa - i++ - i = encodeVarintAgent(dAtA, i, uint64(m.Interface.Size())) - n21, err := m.Interface.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err - } - i += n21 - } - return i, nil -} - func (m *UpdateRoutesRequest) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -4285,11 +4215,11 @@ func (m *UpdateRoutesRequest) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintAgent(dAtA, i, uint64(m.Routes.Size())) - n22, err := m.Routes.MarshalTo(dAtA[i:]) + n20, err := m.Routes.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n22 + i += n20 } return i, nil } @@ -4533,11 +4463,11 @@ func (m *GuestDetailsResponse) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintAgent(dAtA, i, uint64(m.AgentDetails.Size())) - n23, err := m.AgentDetails.MarshalTo(dAtA[i:]) + n21, err := m.AgentDetails.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n23 + i += n21 } if m.SupportMemHotplugProbe { dAtA[i] = 0x18 @@ -4568,21 +4498,21 @@ func (m *MemHotplugByProbeRequest) MarshalTo(dAtA []byte) (int, error) { var l int _ = l if len(m.MemHotplugProbeAddr) > 0 { - dAtA25 := make([]byte, len(m.MemHotplugProbeAddr)*10) - var j24 int + dAtA23 := make([]byte, len(m.MemHotplugProbeAddr)*10) + var j22 int for _, num := range m.MemHotplugProbeAddr { for num >= 1<<7 { - dAtA25[j24] = uint8(uint64(num)&0x7f | 0x80) + dAtA23[j22] = uint8(uint64(num)&0x7f | 0x80) num >>= 7 - j24++ + j22++ } - dAtA25[j24] = uint8(num) - j24++ + dAtA23[j22] = uint8(num) + j22++ } dAtA[i] = 0xa i++ - i = encodeVarintAgent(dAtA, i, uint64(j24)) - i += copy(dAtA[i:], dAtA25[:j24]) + i = encodeVarintAgent(dAtA, i, uint64(j22)) + i += copy(dAtA[i:], dAtA23[:j22]) } return i, nil } @@ -4849,6 +4779,42 @@ func (m *CopyFileRequest) MarshalTo(dAtA []byte) (int, error) { return i, nil } +func (m *StartTracingRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *StartTracingRequest) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + return i, nil +} + +func (m *StopTracingRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *StopTracingRequest) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + return i, nil +} + func encodeVarintAgent(dAtA []byte, offset int, v uint64) int { for v >= 1<<7 { dAtA[offset] = uint8(v&0x7f | 0x80) @@ -5461,26 +5427,6 @@ func (m *UpdateInterfaceRequest) Size() (n int) { return n } -func (m *AddInterfaceRequest) Size() (n int) { - var l int - _ = l - if m.Interface != nil { - l = m.Interface.Size() - n += 1 + l + sovAgent(uint64(l)) - } - return n -} - -func (m *RemoveInterfaceRequest) Size() (n int) { - var l int - _ = l - if m.Interface != nil { - l = m.Interface.Size() - n += 1 + l + sovAgent(uint64(l)) - } - return n -} - func (m *UpdateRoutesRequest) Size() (n int) { var l int _ = l @@ -5723,6 +5669,18 @@ func (m *CopyFileRequest) Size() (n int) { return n } +func (m *StartTracingRequest) Size() (n int) { + var l int + _ = l + return n +} + +func (m *StopTracingRequest) Size() (n int) { + var l int + _ = l + return n +} + func sovAgent(x uint64) (n int) { for { n++ @@ -10226,172 +10184,6 @@ func (m *UpdateInterfaceRequest) Unmarshal(dAtA []byte) error { } return nil } -func (m *AddInterfaceRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowAgent - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: AddInterfaceRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: AddInterfaceRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Interface", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowAgent - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthAgent - } - postIndex := iNdEx + msglen - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Interface == nil { - m.Interface = &types.Interface{} - } - if err := m.Interface.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipAgent(dAtA[iNdEx:]) - if err != nil { - return err - } - if skippy < 0 { - return ErrInvalidLengthAgent - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *RemoveInterfaceRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowAgent - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: RemoveInterfaceRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: RemoveInterfaceRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Interface", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowAgent - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthAgent - } - postIndex := iNdEx + msglen - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Interface == nil { - m.Interface = &types.Interface{} - } - if err := m.Interface.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipAgent(dAtA[iNdEx:]) - if err != nil { - return err - } - if skippy < 0 { - return ErrInvalidLengthAgent - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} func (m *UpdateRoutesRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -12134,6 +11926,106 @@ func (m *CopyFileRequest) Unmarshal(dAtA []byte) error { } return nil } +func (m *StartTracingRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAgent + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: StartTracingRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: StartTracingRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipAgent(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthAgent + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *StopTracingRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAgent + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: StopTracingRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: StopTracingRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipAgent(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthAgent + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func skipAgent(dAtA []byte) (n int, err error) { l := len(dAtA) iNdEx := 0 @@ -12242,173 +12134,173 @@ var ( func init() { proto.RegisterFile("agent.proto", fileDescriptorAgent) } var fileDescriptorAgent = []byte{ - // 2675 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x19, 0xdb, 0x6e, 0x1b, 0xc7, - 0x15, 0xbc, 0x88, 0x22, 0x0f, 0x49, 0x51, 0x1c, 0xc9, 0x32, 0x4d, 0x27, 0xae, 0xb3, 0x49, 0x1d, - 0xa5, 0x69, 0xa8, 0xc4, 0x09, 0x9a, 0x8b, 0x91, 0x1a, 0x96, 0xac, 0x5a, 0x6a, 0xe2, 0x5a, 0x5d, - 0x45, 0x48, 0x81, 0xa2, 0x58, 0xac, 0x76, 0x47, 0xe4, 0x44, 0xdc, 0x9d, 0xcd, 0xce, 0xac, 0x6c, - 0xa6, 0x40, 0x1f, 0xfb, 0xda, 0x2f, 0xe8, 0x0f, 0x14, 0x7d, 0xeb, 0x63, 0x5f, 0xfb, 0x10, 0xf4, - 0xa9, 0xef, 0x05, 0x8a, 0x22, 0x9f, 0xd0, 0x2f, 0x28, 0xe6, 0xb6, 0x17, 0x72, 0xa9, 0xa4, 0x8a, - 0x80, 0xbe, 0x10, 0x73, 0x2e, 0x73, 0x6e, 0x33, 0x73, 0xf6, 0x9c, 0x43, 0x68, 0xbb, 0x63, 0x1c, - 0xf2, 0x51, 0x14, 0x53, 0x4e, 0x51, 0x7d, 0x1c, 0x47, 0xde, 0xb0, 0x45, 0x3d, 0xa2, 0x10, 0xc3, - 0x9f, 0x8c, 0x09, 0x9f, 0x24, 0xa7, 0x23, 0x8f, 0x06, 0x3b, 0xe7, 0x2e, 0x77, 0xdf, 0xf2, 0x68, - 0xc8, 0x5d, 0x12, 0xe2, 0x98, 0xed, 0xc8, 0x8d, 0x3b, 0xd1, 0xf9, 0x78, 0x87, 0xcf, 0x22, 0xcc, - 0xd4, 0xaf, 0xde, 0x77, 0x7b, 0x4c, 0xe9, 0x78, 0x8a, 0x77, 0x24, 0x74, 0x9a, 0x9c, 0xed, 0xe0, - 0x20, 0xe2, 0x33, 0x45, 0xb4, 0xfe, 0x58, 0x85, 0xad, 0xbd, 0x18, 0xbb, 0x1c, 0xef, 0x19, 0x69, - 0x36, 0xfe, 0x32, 0xc1, 0x8c, 0xa3, 0x57, 0xa0, 0x93, 0x6a, 0x70, 0x88, 0x3f, 0xa8, 0xdc, 0xad, - 0x6c, 0xb7, 0xec, 0x76, 0x8a, 0x3b, 0xf4, 0xd1, 0x4d, 0x58, 0xc5, 0x2f, 0xb0, 0x27, 0xa8, 0x55, - 0x49, 0x6d, 0x08, 0xf0, 0xd0, 0x47, 0xef, 0x40, 0x9b, 0xf1, 0x98, 0x84, 0x63, 0x27, 0x61, 0x38, - 0x1e, 0xd4, 0xee, 0x56, 0xb6, 0xdb, 0xf7, 0xd7, 0x47, 0xc2, 0xa5, 0xd1, 0xb1, 0x24, 0x9c, 0x30, - 0x1c, 0xdb, 0xc0, 0xd2, 0x35, 0xba, 0x07, 0xab, 0x3e, 0xbe, 0x20, 0x1e, 0x66, 0x83, 0xfa, 0xdd, - 0xda, 0x76, 0xfb, 0x7e, 0x47, 0xb1, 0x3f, 0x96, 0x48, 0xdb, 0x10, 0xd1, 0x1b, 0xd0, 0x64, 0x9c, - 0xc6, 0xee, 0x18, 0xb3, 0xc1, 0x8a, 0x64, 0xec, 0x1a, 0xb9, 0x12, 0x6b, 0xa7, 0x64, 0xf4, 0x12, - 0xd4, 0x9e, 0xed, 0x1d, 0x0e, 0x1a, 0x52, 0x3b, 0x68, 0xae, 0x08, 0x7b, 0xb6, 0x40, 0xa3, 0x57, - 0xa1, 0xcb, 0xdc, 0xd0, 0x3f, 0xa5, 0x2f, 0x9c, 0x88, 0xf8, 0x21, 0x1b, 0xac, 0xde, 0xad, 0x6c, - 0x37, 0xed, 0x8e, 0x46, 0x1e, 0x09, 0x9c, 0xf5, 0x11, 0xdc, 0x38, 0xe6, 0x6e, 0xcc, 0xaf, 0x10, - 0x1d, 0xeb, 0x04, 0xb6, 0x6c, 0x1c, 0xd0, 0x8b, 0x2b, 0x85, 0x76, 0x00, 0xab, 0x9c, 0x04, 0x98, - 0x26, 0x5c, 0x86, 0xb6, 0x6b, 0x1b, 0xd0, 0xfa, 0x73, 0x05, 0xd0, 0xfe, 0x0b, 0xec, 0x1d, 0xc5, - 0xd4, 0xc3, 0x8c, 0xfd, 0x9f, 0x8e, 0xeb, 0x75, 0x58, 0x8d, 0x94, 0x01, 0x83, 0xba, 0x64, 0xd7, - 0xa7, 0x60, 0xac, 0x32, 0x54, 0xeb, 0x0b, 0xd8, 0x3c, 0x26, 0xe3, 0xd0, 0x9d, 0x5e, 0xa3, 0xbd, - 0x5b, 0xd0, 0x60, 0x52, 0xa6, 0x34, 0xb5, 0x6b, 0x6b, 0xc8, 0x3a, 0x02, 0xf4, 0xb9, 0x4b, 0xf8, - 0xf5, 0x69, 0xb2, 0xde, 0x82, 0x8d, 0x82, 0x44, 0x16, 0xd1, 0x90, 0x61, 0x69, 0x00, 0x77, 0x79, - 0xc2, 0xa4, 0xb0, 0x15, 0x5b, 0x43, 0x16, 0x86, 0xcd, 0x4f, 0x09, 0x33, 0xec, 0xf8, 0x7f, 0x31, - 0x61, 0x0b, 0x1a, 0x67, 0x34, 0x0e, 0x5c, 0x6e, 0x2c, 0x50, 0x10, 0x42, 0x50, 0x77, 0xe3, 0x31, - 0x1b, 0xd4, 0xee, 0xd6, 0xb6, 0x5b, 0xb6, 0x5c, 0x8b, 0x5b, 0x39, 0xa7, 0x46, 0xdb, 0xf5, 0x0a, - 0x74, 0x74, 0xdc, 0x9d, 0x29, 0x61, 0x5c, 0xea, 0xe9, 0xd8, 0x6d, 0x8d, 0x13, 0x7b, 0x2c, 0x0a, - 0x5b, 0x27, 0x91, 0x7f, 0xc5, 0x07, 0x7f, 0x1f, 0x5a, 0x31, 0x66, 0x34, 0x89, 0xc5, 0x33, 0xad, - 0xca, 0x73, 0xdf, 0x54, 0xe7, 0xfe, 0x29, 0x09, 0x93, 0x17, 0xb6, 0xa1, 0xd9, 0x19, 0x9b, 0x7e, - 0x42, 0x9c, 0x5d, 0xe5, 0x09, 0x7d, 0x04, 0x37, 0x8e, 0xdc, 0x84, 0x5d, 0xc5, 0x56, 0xeb, 0x81, - 0x78, 0x7e, 0x2c, 0x09, 0xae, 0xb4, 0xf9, 0x4f, 0x15, 0x68, 0xee, 0x45, 0xc9, 0x09, 0x73, 0xc7, - 0x18, 0xfd, 0x00, 0xda, 0x9c, 0x72, 0x77, 0xea, 0x24, 0x02, 0x94, 0xec, 0x75, 0x1b, 0x24, 0x4a, - 0x31, 0x88, 0xb0, 0xe3, 0xd8, 0x8b, 0x12, 0xcd, 0x51, 0xbd, 0x5b, 0xdb, 0xae, 0xdb, 0x6d, 0x85, - 0x53, 0x2c, 0x23, 0xd8, 0x90, 0x34, 0x87, 0x84, 0xce, 0x39, 0x8e, 0x43, 0x3c, 0x0d, 0xa8, 0x8f, - 0xe5, 0xfd, 0xad, 0xdb, 0x7d, 0x49, 0x3a, 0x0c, 0x3f, 0x49, 0x09, 0xe8, 0x47, 0xd0, 0x4f, 0xf9, - 0xc5, 0xa3, 0x94, 0xdc, 0x75, 0xc9, 0xdd, 0xd3, 0xdc, 0x27, 0x1a, 0x6d, 0xfd, 0x0e, 0xd6, 0x3e, - 0x9b, 0xc4, 0x94, 0xf3, 0x29, 0x09, 0xc7, 0x8f, 0x5d, 0xee, 0x8a, 0xec, 0x11, 0xe1, 0x98, 0x50, - 0x9f, 0x69, 0x6b, 0x0d, 0x88, 0xde, 0x84, 0x3e, 0x57, 0xbc, 0xd8, 0x77, 0x0c, 0x4f, 0x55, 0xf2, - 0xac, 0xa7, 0x84, 0x23, 0xcd, 0xfc, 0x43, 0x58, 0xcb, 0x98, 0x45, 0xfe, 0xd1, 0xf6, 0x76, 0x53, - 0xec, 0x67, 0x24, 0xc0, 0xd6, 0x85, 0x8c, 0x95, 0x3c, 0x64, 0xf4, 0x26, 0xb4, 0xb2, 0x38, 0x54, - 0xe4, 0x0d, 0x59, 0x53, 0x37, 0xc4, 0x84, 0xd3, 0x6e, 0xa6, 0x41, 0xf9, 0x18, 0x7a, 0x3c, 0x35, - 0xdc, 0xf1, 0x5d, 0xee, 0x16, 0x2f, 0x55, 0xd1, 0x2b, 0x7b, 0x8d, 0x17, 0x60, 0xeb, 0x01, 0xb4, - 0x8e, 0x88, 0xcf, 0x94, 0xe2, 0x01, 0xac, 0x7a, 0x49, 0x1c, 0xe3, 0x90, 0x1b, 0x97, 0x35, 0x88, - 0x36, 0x61, 0x65, 0x4a, 0x02, 0xc2, 0xb5, 0x9b, 0x0a, 0xb0, 0x28, 0xc0, 0x53, 0x1c, 0xd0, 0x78, - 0x26, 0x03, 0xb6, 0x09, 0x2b, 0xf9, 0xc3, 0x55, 0x00, 0xba, 0x0d, 0xad, 0xc0, 0x7d, 0x91, 0x1e, - 0xaa, 0xa0, 0x34, 0x03, 0xf7, 0x85, 0x32, 0x7e, 0x00, 0xab, 0x67, 0x2e, 0x99, 0x7a, 0x21, 0xd7, - 0x51, 0x31, 0x60, 0xa6, 0xb0, 0x9e, 0x57, 0xf8, 0xb7, 0x2a, 0xb4, 0x95, 0x46, 0x65, 0xf0, 0x26, - 0xac, 0x78, 0xae, 0x37, 0x49, 0x55, 0x4a, 0x00, 0xdd, 0x33, 0x86, 0x54, 0xf3, 0x49, 0x38, 0xb3, - 0xd4, 0x98, 0xb6, 0x03, 0xc0, 0x9e, 0xbb, 0x91, 0xb6, 0xad, 0xb6, 0x84, 0xb9, 0x25, 0x78, 0x94, - 0xb9, 0xef, 0x42, 0x47, 0xdd, 0x3b, 0xbd, 0xa5, 0xbe, 0x64, 0x4b, 0x5b, 0x71, 0xa9, 0x4d, 0xaf, - 0x42, 0x37, 0x61, 0xd8, 0x99, 0x10, 0x1c, 0xbb, 0xb1, 0x37, 0x99, 0x0d, 0x56, 0xd4, 0x37, 0x32, - 0x61, 0xf8, 0xc0, 0xe0, 0xd0, 0x7d, 0x58, 0x11, 0xe9, 0x8f, 0x0d, 0x1a, 0xf2, 0x73, 0xfc, 0x52, - 0x5e, 0xa4, 0x74, 0x75, 0x24, 0x7f, 0xf7, 0x43, 0x1e, 0xcf, 0x6c, 0xc5, 0x3a, 0xfc, 0x00, 0x20, - 0x43, 0xa2, 0x75, 0xa8, 0x9d, 0xe3, 0x99, 0x7e, 0x87, 0x62, 0x29, 0x82, 0x73, 0xe1, 0x4e, 0x13, - 0x13, 0x75, 0x05, 0x7c, 0x54, 0xfd, 0xa0, 0x62, 0x79, 0xd0, 0xdb, 0x9d, 0x9e, 0x13, 0x9a, 0xdb, - 0xbe, 0x09, 0x2b, 0x81, 0xfb, 0x05, 0x8d, 0x4d, 0x24, 0x25, 0x20, 0xb1, 0x24, 0xa4, 0xb1, 0x11, - 0x21, 0x01, 0xb4, 0x06, 0x55, 0x1a, 0xc9, 0x78, 0xb5, 0xec, 0x2a, 0x8d, 0x32, 0x45, 0xf5, 0x9c, - 0x22, 0xeb, 0x5f, 0x75, 0x80, 0x4c, 0x0b, 0xb2, 0x61, 0x48, 0xa8, 0xc3, 0x70, 0x2c, 0x4a, 0x10, - 0xe7, 0x74, 0xc6, 0x31, 0x73, 0x62, 0xec, 0x25, 0x31, 0x23, 0x17, 0xe2, 0xfc, 0x84, 0xdb, 0x37, - 0x94, 0xdb, 0x73, 0xb6, 0xd9, 0x37, 0x09, 0x3d, 0x56, 0xfb, 0x76, 0xc5, 0x36, 0xdb, 0xec, 0x42, - 0x87, 0x70, 0x23, 0x93, 0xe9, 0xe7, 0xc4, 0x55, 0x2f, 0x13, 0xb7, 0x91, 0x8a, 0xf3, 0x33, 0x51, - 0xfb, 0xb0, 0x41, 0xa8, 0xf3, 0x65, 0x82, 0x93, 0x82, 0xa0, 0xda, 0x65, 0x82, 0xfa, 0x84, 0xfe, - 0x52, 0x6e, 0xc8, 0xc4, 0x1c, 0xc1, 0xad, 0x9c, 0x97, 0xe2, 0xb9, 0xe7, 0x84, 0xd5, 0x2f, 0x13, - 0xb6, 0x95, 0x5a, 0x25, 0xf2, 0x41, 0x26, 0xf1, 0xe7, 0xb0, 0x45, 0xa8, 0xf3, 0xdc, 0x25, 0x7c, - 0x5e, 0xdc, 0xca, 0xb7, 0x38, 0x29, 0x3e, 0xba, 0x45, 0x59, 0xca, 0xc9, 0x00, 0xc7, 0xe3, 0x82, - 0x93, 0x8d, 0x6f, 0x71, 0xf2, 0xa9, 0xdc, 0x90, 0x89, 0x79, 0x04, 0x7d, 0x42, 0xe7, 0xad, 0x59, - 0xbd, 0x4c, 0x48, 0x8f, 0xd0, 0xa2, 0x25, 0xbb, 0xd0, 0x67, 0xd8, 0xe3, 0x34, 0xce, 0x5f, 0x82, - 0xe6, 0x65, 0x22, 0xd6, 0x35, 0x7f, 0x2a, 0xc3, 0xfa, 0x35, 0x74, 0x0e, 0x92, 0x31, 0xe6, 0xd3, - 0xd3, 0x34, 0x19, 0x5c, 0x5b, 0xfe, 0xb1, 0xfe, 0x53, 0x85, 0xf6, 0xde, 0x38, 0xa6, 0x49, 0x54, - 0xc8, 0xc9, 0xea, 0x91, 0xce, 0xe7, 0x64, 0xc9, 0x22, 0x73, 0xb2, 0x62, 0x7e, 0x0f, 0x3a, 0x81, - 0x7c, 0xba, 0x9a, 0x5f, 0xe5, 0xa1, 0xfe, 0xc2, 0xa3, 0xb6, 0xdb, 0x41, 0x2e, 0x99, 0x8d, 0x00, - 0x22, 0xe2, 0x33, 0xbd, 0x47, 0xa5, 0xa3, 0x9e, 0xae, 0x08, 0x4d, 0x8a, 0xb6, 0x5b, 0x51, 0x9a, - 0xad, 0xdf, 0x81, 0xf6, 0xa9, 0x08, 0x92, 0xde, 0x50, 0x48, 0x46, 0x59, 0xf4, 0x6c, 0x38, 0xcd, - 0x1e, 0xe1, 0x01, 0x74, 0x27, 0x2a, 0x64, 0x7a, 0x93, 0xba, 0x43, 0xaf, 0x6a, 0x4f, 0x32, 0x7f, - 0x47, 0xf9, 0xc8, 0xaa, 0x03, 0xe8, 0x4c, 0x72, 0xa8, 0xe1, 0x31, 0xf4, 0x17, 0x58, 0x4a, 0x72, - 0xd0, 0x76, 0x3e, 0x07, 0xb5, 0xef, 0x23, 0xa5, 0x28, 0xbf, 0x33, 0x9f, 0x97, 0x7e, 0x01, 0x5b, - 0xf3, 0x65, 0x8e, 0x2e, 0xca, 0xde, 0x83, 0x8e, 0x27, 0xad, 0x2b, 0x9c, 0x40, 0x7f, 0xc1, 0x6e, - 0xbb, 0xed, 0x65, 0x80, 0xe5, 0x03, 0xfa, 0x3c, 0x26, 0x1c, 0x1f, 0xf3, 0x18, 0xbb, 0xc1, 0x75, - 0x54, 0xcd, 0x08, 0xea, 0xf2, 0x13, 0x5b, 0x93, 0x45, 0xa1, 0x5c, 0x5b, 0xaf, 0xc3, 0x46, 0x41, - 0x8b, 0x36, 0x79, 0x1d, 0x6a, 0x53, 0x1c, 0x4a, 0xe9, 0x5d, 0x5b, 0x2c, 0x2d, 0x17, 0xfa, 0x36, - 0x76, 0xfd, 0xeb, 0xb3, 0x46, 0xab, 0xa8, 0x65, 0x2a, 0xb6, 0x01, 0xe5, 0x55, 0x68, 0x53, 0x8c, - 0xd5, 0x95, 0x9c, 0xd5, 0xcf, 0xa0, 0xbf, 0x37, 0xa5, 0x0c, 0x1f, 0x73, 0x9f, 0x84, 0xd7, 0x51, - 0xe6, 0xff, 0x16, 0x36, 0x3e, 0xe3, 0xb3, 0xcf, 0x85, 0x30, 0x46, 0xbe, 0xc2, 0xd7, 0xe4, 0x5f, - 0x4c, 0x9f, 0x1b, 0xff, 0x62, 0xfa, 0x5c, 0x54, 0xf8, 0x1e, 0x9d, 0x26, 0x41, 0x28, 0xaf, 0x7b, - 0xd7, 0xd6, 0x90, 0xf5, 0xcf, 0x0a, 0x6c, 0xaa, 0x1e, 0xfc, 0x58, 0xb5, 0x9e, 0x46, 0xfd, 0x10, - 0x9a, 0x13, 0xca, 0x78, 0xe8, 0x06, 0x58, 0xab, 0x4e, 0x61, 0x21, 0x5e, 0xf4, 0xac, 0x55, 0xd9, - 0x15, 0x88, 0x65, 0xa1, 0x31, 0xae, 0x5d, 0xde, 0x18, 0x2f, 0xb4, 0xbe, 0xf5, 0xc5, 0xd6, 0x17, - 0xbd, 0x0c, 0x60, 0x98, 0x88, 0x2f, 0x3f, 0xfc, 0x2d, 0xbb, 0xa5, 0x31, 0x87, 0x3e, 0xba, 0x07, - 0xbd, 0xb1, 0xb0, 0xd2, 0x99, 0x50, 0x7a, 0xee, 0x44, 0x2e, 0x9f, 0xc8, 0x46, 0xbb, 0x65, 0x77, - 0x25, 0xfa, 0x80, 0xd2, 0xf3, 0x23, 0x97, 0x4f, 0xac, 0x9b, 0x70, 0xe3, 0x31, 0x66, 0x3c, 0xa6, - 0xb3, 0xa2, 0x77, 0xd6, 0x4f, 0x01, 0x0e, 0x43, 0x8e, 0xe3, 0x33, 0x57, 0xb4, 0xf5, 0x6f, 0xe7, - 0x21, 0xfd, 0x49, 0x5d, 0x1f, 0xa9, 0x39, 0x46, 0x4a, 0xb0, 0x73, 0x3c, 0xd6, 0x08, 0x1a, 0x36, - 0x4d, 0x38, 0x66, 0xe8, 0x35, 0xb3, 0xd2, 0xfb, 0x3a, 0x7a, 0x9f, 0x44, 0xda, 0x9a, 0x66, 0x1d, - 0x98, 0xc6, 0x27, 0x13, 0xa7, 0xe3, 0x3c, 0x82, 0x16, 0x31, 0x38, 0xfd, 0x3a, 0x17, 0x55, 0x67, - 0x2c, 0xd6, 0x3e, 0x6c, 0x3c, 0xf2, 0xfd, 0xef, 0x2d, 0xe6, 0xc0, 0xcc, 0x07, 0xbe, 0xb7, 0xa4, - 0x07, 0xb0, 0xa1, 0x5c, 0x53, 0xae, 0x1a, 0x31, 0xaf, 0x41, 0x23, 0x36, 0x71, 0xa9, 0x64, 0x13, - 0x15, 0xcd, 0xa4, 0x69, 0xe2, 0x80, 0x44, 0x63, 0x98, 0x45, 0xd6, 0x1c, 0xd0, 0x06, 0xf4, 0x05, - 0xa1, 0x20, 0xd3, 0xfa, 0x0d, 0x6c, 0x3c, 0x0b, 0xa7, 0x24, 0xc4, 0x7b, 0x47, 0x27, 0x4f, 0x71, - 0x9a, 0x09, 0x10, 0xd4, 0xc5, 0x67, 0x5e, 0x2a, 0x6a, 0xda, 0x72, 0x2d, 0x9e, 0x46, 0x78, 0xea, - 0x78, 0x51, 0xc2, 0xf4, 0x08, 0xa3, 0x11, 0x9e, 0xee, 0x45, 0x09, 0x43, 0xb7, 0x40, 0x7c, 0x6e, - 0x1c, 0x1a, 0x4e, 0x67, 0xf2, 0x7d, 0x34, 0xed, 0x55, 0x2f, 0x4a, 0x9e, 0x85, 0xd3, 0x99, 0xf5, - 0x63, 0xd9, 0xb4, 0x61, 0xec, 0xdb, 0x6e, 0xe8, 0xd3, 0xe0, 0x31, 0xbe, 0xc8, 0x69, 0x48, 0x1b, - 0x04, 0x93, 0x07, 0xbe, 0xae, 0x40, 0xe7, 0xd1, 0x18, 0x87, 0xfc, 0x31, 0xe6, 0x2e, 0x99, 0xca, - 0x26, 0xe0, 0x02, 0xc7, 0x8c, 0xd0, 0x50, 0x3f, 0x18, 0x03, 0x8a, 0x1e, 0x8e, 0x84, 0x84, 0x3b, - 0xbe, 0x8b, 0x03, 0x1a, 0x4a, 0x29, 0x4d, 0x1b, 0x04, 0xea, 0xb1, 0xc4, 0xa0, 0xd7, 0xa1, 0xa7, - 0x46, 0x4c, 0xce, 0xc4, 0x0d, 0xfd, 0x29, 0x8e, 0x4d, 0xcb, 0xbd, 0xa6, 0xd0, 0x07, 0x1a, 0x8b, - 0xde, 0x80, 0x75, 0xfd, 0x90, 0x32, 0xce, 0xba, 0xe4, 0xec, 0x69, 0x7c, 0x81, 0x35, 0x89, 0x22, - 0x1a, 0x73, 0xe6, 0x30, 0xec, 0x79, 0x34, 0x88, 0x74, 0x05, 0xdd, 0x33, 0xf8, 0x63, 0x85, 0xb6, - 0xc6, 0xb0, 0xf1, 0x44, 0xf8, 0xa9, 0x3d, 0xc9, 0x8e, 0x70, 0x2d, 0xc0, 0x81, 0x73, 0x3a, 0xa5, - 0xde, 0xb9, 0x23, 0x52, 0x93, 0x8e, 0xb0, 0xf8, 0x46, 0xef, 0x0a, 0xe4, 0x31, 0xf9, 0x4a, 0x36, - 0x8b, 0x82, 0x6b, 0x42, 0x79, 0x34, 0x4d, 0xc6, 0x4e, 0x14, 0xd3, 0x53, 0xac, 0x5d, 0xec, 0x05, - 0x38, 0x38, 0x50, 0xf8, 0x23, 0x81, 0xb6, 0xfe, 0x5a, 0x81, 0xcd, 0xa2, 0x26, 0x9d, 0x68, 0x77, - 0x60, 0xb3, 0xa8, 0x4a, 0x15, 0xba, 0xba, 0x22, 0xe9, 0xe7, 0x15, 0xca, 0x52, 0x16, 0xbd, 0x0f, - 0x5d, 0x39, 0x77, 0x74, 0x7c, 0x25, 0xa9, 0xf8, 0x9d, 0xcc, 0x9f, 0x8b, 0xdd, 0x71, 0xf3, 0xa7, - 0xf4, 0x21, 0xdc, 0xd2, 0xee, 0x3b, 0x8b, 0x66, 0xab, 0x0b, 0xb1, 0xa5, 0x19, 0x9e, 0xce, 0x59, - 0xff, 0x29, 0x0c, 0x32, 0xd4, 0xee, 0x4c, 0x22, 0x4d, 0xac, 0xde, 0x86, 0x8d, 0x39, 0x67, 0x1f, - 0xf9, 0x7e, 0x2c, 0x73, 0x42, 0xdd, 0x2e, 0x23, 0x59, 0x0f, 0xe1, 0xe6, 0x31, 0xe6, 0x2a, 0x1a, - 0x2e, 0xd7, 0xc5, 0xab, 0x12, 0xb6, 0x0e, 0xb5, 0x63, 0xec, 0x49, 0xe7, 0x6b, 0xb6, 0x58, 0x8a, - 0x0b, 0x78, 0xc2, 0xb0, 0x27, 0xbd, 0xac, 0xd9, 0x72, 0x6d, 0xfd, 0xa5, 0x02, 0xab, 0x3a, 0xbd, - 0x8a, 0xf4, 0xee, 0xc7, 0xe4, 0x02, 0xc7, 0xfa, 0xea, 0x69, 0x48, 0x34, 0xd1, 0x6a, 0xe5, 0xd0, - 0x88, 0x13, 0x9a, 0x26, 0xed, 0xae, 0xc2, 0x3e, 0x53, 0x48, 0x39, 0x52, 0x92, 0x13, 0x13, 0xdd, - 0x9c, 0x68, 0x48, 0xce, 0x85, 0x98, 0x78, 0xfb, 0x32, 0x49, 0xb7, 0x6c, 0x0d, 0x89, 0xab, 0x6e, - 0xe4, 0xad, 0x48, 0x79, 0x06, 0x14, 0x57, 0x3d, 0xa0, 0x49, 0xc8, 0x9d, 0x88, 0x92, 0x90, 0xeb, - 0xac, 0x0c, 0x12, 0x75, 0x24, 0x30, 0xd6, 0xef, 0x2b, 0xd0, 0x50, 0x63, 0x55, 0xd1, 0x0e, 0xa5, - 0xdf, 0xb5, 0x2a, 0x91, 0x35, 0x82, 0xd4, 0xa5, 0xbe, 0x65, 0x72, 0x2d, 0xde, 0xf1, 0x45, 0xa0, - 0x32, 0xbc, 0x36, 0xed, 0x22, 0x10, 0xa9, 0x5d, 0x78, 0x96, 0x7d, 0x1e, 0x25, 0x5d, 0x99, 0xd8, - 0x4d, 0xb1, 0x92, 0x6d, 0xa9, 0xa5, 0xd6, 0xaf, 0x44, 0x17, 0x98, 0x8e, 0x14, 0xd7, 0xa1, 0x96, - 0xa4, 0xc6, 0x88, 0xa5, 0xc0, 0x8c, 0xd3, 0x0f, 0xab, 0x58, 0xa2, 0x7b, 0xb0, 0xe6, 0xfa, 0x3e, - 0x11, 0xdb, 0xdd, 0xe9, 0x13, 0xe2, 0xa7, 0x8f, 0xb4, 0x88, 0xb5, 0xfe, 0x5e, 0x81, 0xde, 0x1e, - 0x8d, 0x66, 0x3f, 0x23, 0x53, 0x9c, 0xcb, 0x20, 0xd2, 0x48, 0xa5, 0x40, 0xae, 0x45, 0x85, 0x7d, - 0x46, 0xa6, 0x58, 0x3d, 0x2d, 0x75, 0xb2, 0x4d, 0x81, 0x90, 0xcf, 0xca, 0x10, 0xd3, 0x49, 0x4d, - 0x57, 0x11, 0x9f, 0x52, 0x1f, 0x8b, 0x24, 0xe6, 0x93, 0xd8, 0x49, 0xe7, 0x32, 0x5d, 0x7b, 0xd5, - 0x27, 0xb1, 0x24, 0x69, 0x47, 0x56, 0xe4, 0x68, 0x30, 0xef, 0x48, 0x43, 0x61, 0x84, 0x23, 0x5b, - 0xd0, 0xa0, 0x67, 0x67, 0x0c, 0x73, 0x39, 0x76, 0xae, 0xd9, 0x1a, 0x4a, 0xd3, 0x5c, 0x33, 0x4b, - 0x73, 0xf7, 0xff, 0xb0, 0xae, 0xd3, 0x9c, 0x6e, 0xb2, 0xd0, 0x13, 0xe8, 0xcd, 0x0d, 0xed, 0x91, - 0xee, 0xba, 0xcb, 0x67, 0xf9, 0xc3, 0xad, 0x91, 0xfa, 0x13, 0x60, 0x64, 0xfe, 0x04, 0x18, 0xed, - 0x07, 0x11, 0x9f, 0xa1, 0x7d, 0x58, 0x2b, 0x8e, 0xb7, 0xd1, 0x6d, 0x53, 0x33, 0x94, 0x0c, 0xbd, - 0x97, 0x8a, 0x79, 0x02, 0xbd, 0xb9, 0x49, 0xb7, 0xb1, 0xa7, 0x7c, 0x00, 0xbe, 0x54, 0xd0, 0x43, - 0x68, 0xe7, 0x46, 0xdb, 0x68, 0xa0, 0x84, 0x2c, 0x4e, 0xbb, 0x97, 0x0a, 0xd8, 0x83, 0x6e, 0x61, - 0xda, 0x8c, 0x86, 0xda, 0x9f, 0x92, 0x11, 0xf4, 0x52, 0x21, 0xbb, 0xd0, 0xce, 0x0d, 0x7d, 0x8d, - 0x15, 0x8b, 0x93, 0xe5, 0xe1, 0xad, 0x12, 0x8a, 0xce, 0xa6, 0x07, 0xd0, 0x2d, 0x8c, 0x68, 0x8d, - 0x21, 0x65, 0xe3, 0xe1, 0xe1, 0xed, 0x52, 0x9a, 0x96, 0xf4, 0x04, 0x7a, 0x73, 0x03, 0x5b, 0x13, - 0xdc, 0xf2, 0x39, 0xee, 0x52, 0xb7, 0x3e, 0x91, 0x87, 0x9d, 0xeb, 0x50, 0x72, 0x87, 0xbd, 0x38, - 0x9e, 0x1d, 0xbe, 0x54, 0x4e, 0xd4, 0x56, 0xed, 0xc3, 0x5a, 0x71, 0x32, 0x6b, 0x84, 0x95, 0xce, - 0x6b, 0x2f, 0xbf, 0x39, 0x85, 0x21, 0x6d, 0x76, 0x73, 0xca, 0x66, 0xb7, 0x4b, 0x05, 0x3d, 0x02, - 0xd0, 0x8d, 0x8c, 0x4f, 0xc2, 0xf4, 0xc8, 0x16, 0x1a, 0xa8, 0xf4, 0xc8, 0x4a, 0x9a, 0x9e, 0x87, - 0x00, 0xaa, 0xff, 0xf0, 0x69, 0xc2, 0xd1, 0x4d, 0x63, 0xc6, 0x5c, 0xd3, 0x33, 0x1c, 0x2c, 0x12, - 0x16, 0x04, 0xe0, 0x38, 0xbe, 0x8a, 0x80, 0x8f, 0x01, 0xb2, 0xbe, 0xc6, 0x08, 0x58, 0xe8, 0x74, - 0x2e, 0x89, 0x41, 0x27, 0xdf, 0xc5, 0x20, 0xed, 0x6b, 0x49, 0x67, 0xb3, 0x54, 0xc4, 0x03, 0xe8, - 0xe4, 0x4b, 0x5b, 0x23, 0xa2, 0xa4, 0xdc, 0x1d, 0x2e, 0x54, 0xa4, 0xe8, 0x91, 0xb9, 0xa9, 0x19, - 0xaa, 0x70, 0x53, 0xbf, 0x9b, 0x88, 0xb9, 0x9a, 0xb8, 0x98, 0x49, 0xbe, 0x83, 0x88, 0xf7, 0xa1, - 0x93, 0x2f, 0x86, 0x8d, 0x0b, 0x25, 0x05, 0xf2, 0xb0, 0x50, 0x10, 0xa3, 0x87, 0xb0, 0x56, 0x2c, - 0x84, 0x51, 0xee, 0x5d, 0x2e, 0x94, 0xc7, 0x43, 0x3d, 0xad, 0xc8, 0xb1, 0xbf, 0x0b, 0x90, 0x15, - 0xcc, 0xe6, 0xf8, 0x16, 0x4a, 0xe8, 0x39, 0xad, 0x7b, 0xd0, 0x2d, 0x34, 0x7f, 0x26, 0x51, 0x94, - 0x75, 0x84, 0x97, 0xe5, 0xf1, 0x62, 0x93, 0x65, 0x4c, 0x2f, 0x6d, 0xbd, 0x2e, 0xbb, 0x40, 0xf9, - 0xe2, 0xde, 0x84, 0xae, 0xa4, 0xe0, 0xff, 0x96, 0x07, 0x9d, 0x2f, 0xe0, 0x73, 0x0f, 0xba, 0xa4, - 0xae, 0x5f, 0x2a, 0xe8, 0x00, 0x7a, 0x4f, 0x4c, 0x6d, 0xa6, 0xeb, 0x46, 0x6d, 0x4e, 0x49, 0x9d, - 0x3c, 0x1c, 0x96, 0x91, 0xf4, 0xab, 0xfa, 0x04, 0xfa, 0x0b, 0x35, 0x23, 0xba, 0x93, 0x0e, 0xb4, - 0x4a, 0x8b, 0xc9, 0xa5, 0x66, 0x1d, 0xc2, 0xfa, 0x7c, 0xc9, 0x88, 0x5e, 0xd6, 0x99, 0xb2, 0xbc, - 0x94, 0x5c, 0x2a, 0xea, 0x43, 0x68, 0x9a, 0x12, 0x05, 0xe9, 0xc1, 0xe1, 0x5c, 0xc9, 0xb2, 0x6c, - 0xeb, 0x6e, 0xe7, 0xeb, 0x6f, 0xee, 0x54, 0xfe, 0xf1, 0xcd, 0x9d, 0xca, 0xbf, 0xbf, 0xb9, 0x53, - 0x39, 0x6d, 0x48, 0xea, 0xbb, 0xff, 0x0d, 0x00, 0x00, 0xff, 0xff, 0xbe, 0xbd, 0x6e, 0x1d, 0x40, - 0x20, 0x00, 0x00, + // 2679 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x18, 0xdb, 0x6e, 0x1b, 0xc7, + 0x15, 0xbc, 0x48, 0x22, 0x0f, 0x49, 0x51, 0x1c, 0xc9, 0x32, 0x4d, 0x27, 0xae, 0xb3, 0x49, 0x1d, + 0xa5, 0x69, 0xa8, 0xc4, 0x09, 0x9a, 0x1b, 0x52, 0xc3, 0x92, 0x5d, 0x4b, 0x4d, 0x5c, 0xab, 0x4b, + 0x0b, 0x29, 0x50, 0x14, 0x8b, 0xd5, 0xee, 0x88, 0x9c, 0x88, 0xbb, 0xb3, 0x99, 0x9d, 0x95, 0xcd, + 0x14, 0xe8, 0x63, 0x7f, 0xa0, 0xcf, 0xfd, 0x81, 0xa2, 0x6f, 0x7d, 0xec, 0x6b, 0x1f, 0x82, 0x3e, + 0xf5, 0xbd, 0x40, 0x51, 0xe4, 0x13, 0xfa, 0x05, 0xc5, 0xdc, 0xf6, 0x42, 0x2e, 0x19, 0x54, 0x10, + 0xd0, 0x97, 0xc5, 0x9e, 0xcb, 0x9c, 0xdb, 0xcc, 0x9c, 0x39, 0xe7, 0x40, 0xcb, 0x1d, 0xe3, 0x90, + 0x0f, 0x23, 0x46, 0x39, 0x45, 0xf5, 0x31, 0x8b, 0xbc, 0x41, 0x93, 0x7a, 0x44, 0x21, 0x06, 0x3f, + 0x19, 0x13, 0x3e, 0x49, 0xce, 0x86, 0x1e, 0x0d, 0xf6, 0x2f, 0x5c, 0xee, 0xbe, 0xe3, 0xd1, 0x90, + 0xbb, 0x24, 0xc4, 0x2c, 0xde, 0x97, 0x0b, 0xf7, 0xa3, 0x8b, 0xf1, 0x3e, 0x9f, 0x45, 0x38, 0x56, + 0x5f, 0xbd, 0xee, 0xf6, 0x98, 0xd2, 0xf1, 0x14, 0xef, 0x4b, 0xe8, 0x2c, 0x39, 0xdf, 0xc7, 0x41, + 0xc4, 0x67, 0x8a, 0x68, 0xfd, 0xb1, 0x0a, 0xbb, 0x87, 0x0c, 0xbb, 0x1c, 0x1f, 0x1a, 0x69, 0x36, + 0xfe, 0x3a, 0xc1, 0x31, 0x47, 0xaf, 0x41, 0x3b, 0xd5, 0xe0, 0x10, 0xbf, 0x5f, 0xb9, 0x5b, 0xd9, + 0x6b, 0xda, 0xad, 0x14, 0x77, 0xec, 0xa3, 0x9b, 0xb0, 0x81, 0x5f, 0x62, 0x4f, 0x50, 0xab, 0x92, + 0xba, 0x2e, 0xc0, 0x63, 0x1f, 0xbd, 0x07, 0xad, 0x98, 0x33, 0x12, 0x8e, 0x9d, 0x24, 0xc6, 0xac, + 0x5f, 0xbb, 0x5b, 0xd9, 0x6b, 0xdd, 0xdf, 0x1a, 0x0a, 0x97, 0x86, 0x23, 0x49, 0x38, 0x8d, 0x31, + 0xb3, 0x21, 0x4e, 0xff, 0xd1, 0x3d, 0xd8, 0xf0, 0xf1, 0x25, 0xf1, 0x70, 0xdc, 0xaf, 0xdf, 0xad, + 0xed, 0xb5, 0xee, 0xb7, 0x15, 0xfb, 0x23, 0x89, 0xb4, 0x0d, 0x11, 0xbd, 0x05, 0x8d, 0x98, 0x53, + 0xe6, 0x8e, 0x71, 0xdc, 0x5f, 0x93, 0x8c, 0x1d, 0x23, 0x57, 0x62, 0xed, 0x94, 0x8c, 0x5e, 0x81, + 0xda, 0xb3, 0xc3, 0xe3, 0xfe, 0xba, 0xd4, 0x0e, 0x9a, 0x2b, 0xc2, 0x9e, 0x2d, 0xd0, 0xe8, 0x75, + 0xe8, 0xc4, 0x6e, 0xe8, 0x9f, 0xd1, 0x97, 0x4e, 0x44, 0xfc, 0x30, 0xee, 0x6f, 0xdc, 0xad, 0xec, + 0x35, 0xec, 0xb6, 0x46, 0x9e, 0x08, 0x9c, 0xf5, 0x09, 0xdc, 0x18, 0x71, 0x97, 0xf1, 0x2b, 0x44, + 0xc7, 0x3a, 0x85, 0x5d, 0x1b, 0x07, 0xf4, 0xf2, 0x4a, 0xa1, 0xed, 0xc3, 0x06, 0x27, 0x01, 0xa6, + 0x09, 0x97, 0xa1, 0xed, 0xd8, 0x06, 0xb4, 0xfe, 0x5c, 0x01, 0xf4, 0xf8, 0x25, 0xf6, 0x4e, 0x18, + 0xf5, 0x70, 0x1c, 0xff, 0x9f, 0xb6, 0xeb, 0x4d, 0xd8, 0x88, 0x94, 0x01, 0xfd, 0xba, 0x64, 0xd7, + 0xbb, 0x60, 0xac, 0x32, 0x54, 0xeb, 0x2b, 0xd8, 0x19, 0x91, 0x71, 0xe8, 0x4e, 0xaf, 0xd1, 0xde, + 0x5d, 0x58, 0x8f, 0xa5, 0x4c, 0x69, 0x6a, 0xc7, 0xd6, 0x90, 0x75, 0x02, 0xe8, 0x4b, 0x97, 0xf0, + 0xeb, 0xd3, 0x64, 0xbd, 0x03, 0xdb, 0x05, 0x89, 0x71, 0x44, 0xc3, 0x18, 0x4b, 0x03, 0xb8, 0xcb, + 0x93, 0x58, 0x0a, 0x5b, 0xb3, 0x35, 0x64, 0x61, 0xd8, 0xf9, 0x82, 0xc4, 0x86, 0x1d, 0xff, 0x2f, + 0x26, 0xec, 0xc2, 0xfa, 0x39, 0x65, 0x81, 0xcb, 0x8d, 0x05, 0x0a, 0x42, 0x08, 0xea, 0x2e, 0x1b, + 0xc7, 0xfd, 0xda, 0xdd, 0xda, 0x5e, 0xd3, 0x96, 0xff, 0xe2, 0x54, 0xce, 0xa9, 0xd1, 0x76, 0xbd, + 0x06, 0x6d, 0x1d, 0x77, 0x67, 0x4a, 0x62, 0x2e, 0xf5, 0xb4, 0xed, 0x96, 0xc6, 0x89, 0x35, 0x16, + 0x85, 0xdd, 0xd3, 0xc8, 0xbf, 0xe2, 0x85, 0xbf, 0x0f, 0x4d, 0x86, 0x63, 0x9a, 0x30, 0x71, 0x4d, + 0xab, 0x72, 0xdf, 0x77, 0xd4, 0xbe, 0x7f, 0x41, 0xc2, 0xe4, 0xa5, 0x6d, 0x68, 0x76, 0xc6, 0xa6, + 0xaf, 0x10, 0x8f, 0xaf, 0x72, 0x85, 0x3e, 0x81, 0x1b, 0x27, 0x6e, 0x12, 0x5f, 0xc5, 0x56, 0xeb, + 0x53, 0x71, 0xfd, 0xe2, 0x24, 0xb8, 0xd2, 0xe2, 0x3f, 0x55, 0xa0, 0x71, 0x18, 0x25, 0xa7, 0xb1, + 0x3b, 0xc6, 0xe8, 0x07, 0xd0, 0xe2, 0x94, 0xbb, 0x53, 0x27, 0x11, 0xa0, 0x64, 0xaf, 0xdb, 0x20, + 0x51, 0x8a, 0x41, 0x84, 0x1d, 0x33, 0x2f, 0x4a, 0x34, 0x47, 0xf5, 0x6e, 0x6d, 0xaf, 0x6e, 0xb7, + 0x14, 0x4e, 0xb1, 0x0c, 0x61, 0x5b, 0xd2, 0x1c, 0x12, 0x3a, 0x17, 0x98, 0x85, 0x78, 0x1a, 0x50, + 0x1f, 0xcb, 0xf3, 0x5b, 0xb7, 0x7b, 0x92, 0x74, 0x1c, 0x7e, 0x9e, 0x12, 0xd0, 0x8f, 0xa0, 0x97, + 0xf2, 0x8b, 0x4b, 0x29, 0xb9, 0xeb, 0x92, 0xbb, 0xab, 0xb9, 0x4f, 0x35, 0xda, 0xfa, 0x1d, 0x6c, + 0x3e, 0x9f, 0x30, 0xca, 0xf9, 0x94, 0x84, 0xe3, 0x47, 0x2e, 0x77, 0x45, 0xf6, 0x88, 0x30, 0x23, + 0xd4, 0x8f, 0xb5, 0xb5, 0x06, 0x44, 0x6f, 0x43, 0x8f, 0x2b, 0x5e, 0xec, 0x3b, 0x86, 0xa7, 0x2a, + 0x79, 0xb6, 0x52, 0xc2, 0x89, 0x66, 0xfe, 0x21, 0x6c, 0x66, 0xcc, 0x22, 0xff, 0x68, 0x7b, 0x3b, + 0x29, 0xf6, 0x39, 0x09, 0xb0, 0x75, 0x29, 0x63, 0x25, 0x37, 0x19, 0xbd, 0x0d, 0xcd, 0x2c, 0x0e, + 0x15, 0x79, 0x42, 0x36, 0xd5, 0x09, 0x31, 0xe1, 0xb4, 0x1b, 0x69, 0x50, 0x3e, 0x83, 0x2e, 0x4f, + 0x0d, 0x77, 0x7c, 0x97, 0xbb, 0xc5, 0x43, 0x55, 0xf4, 0xca, 0xde, 0xe4, 0x05, 0xd8, 0xfa, 0x14, + 0x9a, 0x27, 0xc4, 0x8f, 0x95, 0xe2, 0x3e, 0x6c, 0x78, 0x09, 0x63, 0x38, 0xe4, 0xc6, 0x65, 0x0d, + 0xa2, 0x1d, 0x58, 0x9b, 0x92, 0x80, 0x70, 0xed, 0xa6, 0x02, 0x2c, 0x0a, 0xf0, 0x14, 0x07, 0x94, + 0xcd, 0x64, 0xc0, 0x76, 0x60, 0x2d, 0xbf, 0xb9, 0x0a, 0x40, 0xb7, 0xa1, 0x19, 0xb8, 0x2f, 0xd3, + 0x4d, 0x15, 0x94, 0x46, 0xe0, 0xbe, 0x54, 0xc6, 0xf7, 0x61, 0xe3, 0xdc, 0x25, 0x53, 0x2f, 0xe4, + 0x3a, 0x2a, 0x06, 0xcc, 0x14, 0xd6, 0xf3, 0x0a, 0xff, 0x56, 0x85, 0x96, 0xd2, 0xa8, 0x0c, 0xde, + 0x81, 0x35, 0xcf, 0xf5, 0x26, 0xa9, 0x4a, 0x09, 0xa0, 0x7b, 0xc6, 0x90, 0x6a, 0x3e, 0x09, 0x67, + 0x96, 0x1a, 0xd3, 0xf6, 0x01, 0xe2, 0x17, 0x6e, 0xa4, 0x6d, 0xab, 0x2d, 0x61, 0x6e, 0x0a, 0x1e, + 0x65, 0xee, 0xfb, 0xd0, 0x56, 0xe7, 0x4e, 0x2f, 0xa9, 0x2f, 0x59, 0xd2, 0x52, 0x5c, 0x6a, 0xd1, + 0xeb, 0xd0, 0x49, 0x62, 0xec, 0x4c, 0x08, 0x66, 0x2e, 0xf3, 0x26, 0xb3, 0xfe, 0x9a, 0x7a, 0x23, + 0x93, 0x18, 0x1f, 0x19, 0x1c, 0xba, 0x0f, 0x6b, 0x22, 0xfd, 0xc5, 0xfd, 0x75, 0xf9, 0x1c, 0xbf, + 0x92, 0x17, 0x29, 0x5d, 0x1d, 0xca, 0xef, 0xe3, 0x90, 0xb3, 0x99, 0xad, 0x58, 0x07, 0x1f, 0x01, + 0x64, 0x48, 0xb4, 0x05, 0xb5, 0x0b, 0x3c, 0xd3, 0xf7, 0x50, 0xfc, 0x8a, 0xe0, 0x5c, 0xba, 0xd3, + 0xc4, 0x44, 0x5d, 0x01, 0x9f, 0x54, 0x3f, 0xaa, 0x58, 0x1e, 0x74, 0x0f, 0xa6, 0x17, 0x84, 0xe6, + 0x96, 0xef, 0xc0, 0x5a, 0xe0, 0x7e, 0x45, 0x99, 0x89, 0xa4, 0x04, 0x24, 0x96, 0x84, 0x94, 0x19, + 0x11, 0x12, 0x40, 0x9b, 0x50, 0xa5, 0x91, 0x8c, 0x57, 0xd3, 0xae, 0xd2, 0x28, 0x53, 0x54, 0xcf, + 0x29, 0xb2, 0xfe, 0x55, 0x07, 0xc8, 0xb4, 0x20, 0x1b, 0x06, 0x84, 0x3a, 0x31, 0x66, 0xa2, 0x04, + 0x71, 0xce, 0x66, 0x1c, 0xc7, 0x0e, 0xc3, 0x5e, 0xc2, 0x62, 0x72, 0x29, 0xf6, 0x4f, 0xb8, 0x7d, + 0x43, 0xb9, 0x3d, 0x67, 0x9b, 0x7d, 0x93, 0xd0, 0x91, 0x5a, 0x77, 0x20, 0x96, 0xd9, 0x66, 0x15, + 0x3a, 0x86, 0x1b, 0x99, 0x4c, 0x3f, 0x27, 0xae, 0xba, 0x4a, 0xdc, 0x76, 0x2a, 0xce, 0xcf, 0x44, + 0x3d, 0x86, 0x6d, 0x42, 0x9d, 0xaf, 0x13, 0x9c, 0x14, 0x04, 0xd5, 0x56, 0x09, 0xea, 0x11, 0xfa, + 0x4b, 0xb9, 0x20, 0x13, 0x73, 0x02, 0xb7, 0x72, 0x5e, 0x8a, 0xeb, 0x9e, 0x13, 0x56, 0x5f, 0x25, + 0x6c, 0x37, 0xb5, 0x4a, 0xe4, 0x83, 0x4c, 0xe2, 0xcf, 0x61, 0x97, 0x50, 0xe7, 0x85, 0x4b, 0xf8, + 0xbc, 0xb8, 0xb5, 0xef, 0x71, 0x52, 0x3c, 0xba, 0x45, 0x59, 0xca, 0xc9, 0x00, 0xb3, 0x71, 0xc1, + 0xc9, 0xf5, 0xef, 0x71, 0xf2, 0xa9, 0x5c, 0x90, 0x89, 0x79, 0x08, 0x3d, 0x42, 0xe7, 0xad, 0xd9, + 0x58, 0x25, 0xa4, 0x4b, 0x68, 0xd1, 0x92, 0x03, 0xe8, 0xc5, 0xd8, 0xe3, 0x94, 0xe5, 0x0f, 0x41, + 0x63, 0x95, 0x88, 0x2d, 0xcd, 0x9f, 0xca, 0xb0, 0x7e, 0x0d, 0xed, 0xa3, 0x64, 0x8c, 0xf9, 0xf4, + 0x2c, 0x4d, 0x06, 0xd7, 0x96, 0x7f, 0xac, 0xff, 0x54, 0xa1, 0x75, 0x38, 0x66, 0x34, 0x89, 0x0a, + 0x39, 0x59, 0x5d, 0xd2, 0xf9, 0x9c, 0x2c, 0x59, 0x64, 0x4e, 0x56, 0xcc, 0x1f, 0x40, 0x3b, 0x90, + 0x57, 0x57, 0xf3, 0xab, 0x3c, 0xd4, 0x5b, 0xb8, 0xd4, 0x76, 0x2b, 0xc8, 0x25, 0xb3, 0x21, 0x40, + 0x44, 0xfc, 0x58, 0xaf, 0x51, 0xe9, 0xa8, 0xab, 0x2b, 0x42, 0x93, 0xa2, 0xed, 0x66, 0x94, 0x66, + 0xeb, 0xf7, 0xa0, 0x75, 0x26, 0x82, 0xa4, 0x17, 0x14, 0x92, 0x51, 0x16, 0x3d, 0x1b, 0xce, 0xb2, + 0x4b, 0x78, 0x04, 0x9d, 0x89, 0x0a, 0x99, 0x5e, 0xa4, 0xce, 0xd0, 0xeb, 0xda, 0x93, 0xcc, 0xdf, + 0x61, 0x3e, 0xb2, 0x6a, 0x03, 0xda, 0x93, 0x1c, 0x6a, 0x30, 0x82, 0xde, 0x02, 0x4b, 0x49, 0x0e, + 0xda, 0xcb, 0xe7, 0xa0, 0xd6, 0x7d, 0xa4, 0x14, 0xe5, 0x57, 0xe6, 0xf3, 0xd2, 0x2f, 0x60, 0x77, + 0xbe, 0xcc, 0xd1, 0x45, 0xd9, 0x07, 0xd0, 0xf6, 0xa4, 0x75, 0x85, 0x1d, 0xe8, 0x2d, 0xd8, 0x6d, + 0xb7, 0xbc, 0x0c, 0xb0, 0x7c, 0x40, 0x5f, 0x32, 0xc2, 0xf1, 0x88, 0x33, 0xec, 0x06, 0xd7, 0x51, + 0x35, 0x23, 0xa8, 0xcb, 0x27, 0xb6, 0x26, 0x8b, 0x42, 0xf9, 0x6f, 0xbd, 0x09, 0xdb, 0x05, 0x2d, + 0xda, 0xe4, 0x2d, 0xa8, 0x4d, 0x71, 0x28, 0xa5, 0x77, 0x6c, 0xf1, 0x6b, 0xb9, 0xd0, 0xb3, 0xb1, + 0xeb, 0x5f, 0x9f, 0x35, 0x5a, 0x45, 0x2d, 0x53, 0xb1, 0x07, 0x28, 0xaf, 0x42, 0x9b, 0x62, 0xac, + 0xae, 0xe4, 0xac, 0x7e, 0x06, 0xbd, 0xc3, 0x29, 0x8d, 0xf1, 0x88, 0xfb, 0x24, 0xbc, 0x8e, 0x32, + 0xff, 0xb7, 0xb0, 0xfd, 0x9c, 0xcf, 0xbe, 0x14, 0xc2, 0x62, 0xf2, 0x0d, 0xbe, 0x26, 0xff, 0x18, + 0x7d, 0x61, 0xfc, 0x63, 0xf4, 0x85, 0xa8, 0xf0, 0x3d, 0x3a, 0x4d, 0x82, 0x50, 0x1e, 0xf7, 0x8e, + 0xad, 0x21, 0xeb, 0x9f, 0x15, 0xd8, 0x51, 0x3d, 0xf8, 0x48, 0xb5, 0x9e, 0x46, 0xfd, 0x00, 0x1a, + 0x13, 0x1a, 0xf3, 0xd0, 0x0d, 0xb0, 0x56, 0x9d, 0xc2, 0x42, 0xbc, 0xe8, 0x59, 0xab, 0xb2, 0x2b, + 0x10, 0xbf, 0x85, 0xc6, 0xb8, 0xb6, 0xba, 0x31, 0x5e, 0x68, 0x7d, 0xeb, 0x8b, 0xad, 0x2f, 0x7a, + 0x15, 0xc0, 0x30, 0x11, 0x5f, 0x3e, 0xfc, 0x4d, 0xbb, 0xa9, 0x31, 0xc7, 0x3e, 0xba, 0x07, 0xdd, + 0xb1, 0xb0, 0xd2, 0x99, 0x50, 0x7a, 0xe1, 0x44, 0x2e, 0x9f, 0xc8, 0x46, 0xbb, 0x69, 0x77, 0x24, + 0xfa, 0x88, 0xd2, 0x8b, 0x13, 0x97, 0x4f, 0xac, 0x9b, 0x70, 0xe3, 0x11, 0x8e, 0x39, 0xa3, 0xb3, + 0xa2, 0x77, 0xd6, 0x4f, 0x01, 0x8e, 0x43, 0x8e, 0xd9, 0xb9, 0x2b, 0xda, 0xfa, 0x77, 0xf3, 0x90, + 0x7e, 0x52, 0xb7, 0x86, 0x6a, 0x8e, 0x91, 0x12, 0xec, 0x1c, 0x8f, 0x35, 0x84, 0x75, 0x9b, 0x26, + 0x1c, 0xc7, 0xe8, 0x0d, 0xf3, 0xa7, 0xd7, 0xb5, 0xf5, 0x3a, 0x89, 0xb4, 0x35, 0xcd, 0x3a, 0x32, + 0x8d, 0x4f, 0x26, 0x4e, 0xc7, 0x79, 0x08, 0x4d, 0x62, 0x70, 0xfa, 0x76, 0x2e, 0xaa, 0xce, 0x58, + 0xac, 0x4f, 0x61, 0x5b, 0x49, 0x52, 0x92, 0x8d, 0x98, 0x37, 0x60, 0x9d, 0x19, 0x33, 0x2a, 0xd9, + 0x00, 0x43, 0x33, 0x69, 0x9a, 0x88, 0x87, 0xe8, 0xc3, 0x32, 0x47, 0x4c, 0x3c, 0xb6, 0xa1, 0x27, + 0x08, 0x05, 0x99, 0xd6, 0x6f, 0x60, 0xfb, 0x59, 0x38, 0x25, 0x21, 0x3e, 0x3c, 0x39, 0x7d, 0x8a, + 0xd3, 0x8b, 0x87, 0xa0, 0x2e, 0x5e, 0x55, 0xa9, 0xa8, 0x61, 0xcb, 0x7f, 0x71, 0x12, 0xc3, 0x33, + 0xc7, 0x8b, 0x92, 0x58, 0x4f, 0x0c, 0xd6, 0xc3, 0xb3, 0xc3, 0x28, 0x89, 0xd1, 0x2d, 0x10, 0xd9, + 0xdd, 0xa1, 0xe1, 0x74, 0x26, 0x8f, 0x63, 0xc3, 0xde, 0xf0, 0xa2, 0xe4, 0x59, 0x38, 0x9d, 0x59, + 0x3f, 0x96, 0x3d, 0x12, 0xc6, 0xbe, 0xed, 0x86, 0x3e, 0x0d, 0x1e, 0xe1, 0xcb, 0x9c, 0x86, 0xb4, + 0x1e, 0x37, 0xd7, 0xee, 0xdb, 0x0a, 0xb4, 0x1f, 0x8e, 0x71, 0xc8, 0x1f, 0x61, 0xee, 0x92, 0xa9, + 0xac, 0xb9, 0x2f, 0x31, 0x8b, 0x09, 0x0d, 0xf5, 0xf9, 0x34, 0xa0, 0x68, 0x99, 0x48, 0x48, 0xb8, + 0xe3, 0xbb, 0x38, 0xa0, 0xa1, 0x94, 0xd2, 0xb0, 0x41, 0xa0, 0x1e, 0x49, 0x0c, 0x7a, 0x13, 0xba, + 0x6a, 0xa2, 0xe3, 0x4c, 0xdc, 0xd0, 0x9f, 0x62, 0x66, 0x3a, 0xdc, 0x4d, 0x85, 0x3e, 0xd2, 0x58, + 0xf4, 0x16, 0x6c, 0xe9, 0x73, 0x9b, 0x71, 0xd6, 0x25, 0x67, 0x57, 0xe3, 0x0b, 0xac, 0x49, 0x14, + 0x51, 0xc6, 0x63, 0x27, 0xc6, 0x9e, 0x47, 0x83, 0x48, 0x17, 0xac, 0x5d, 0x83, 0x1f, 0x29, 0xb4, + 0x35, 0x86, 0xed, 0x27, 0xc2, 0x4f, 0xed, 0x49, 0xb6, 0x85, 0x9b, 0x01, 0x0e, 0x9c, 0xb3, 0x29, + 0xf5, 0x2e, 0x1c, 0x91, 0x09, 0x74, 0x84, 0xc5, 0x93, 0x78, 0x20, 0x90, 0x23, 0xf2, 0x8d, 0xec, + 0xcd, 0x04, 0xd7, 0x84, 0xf2, 0x68, 0x9a, 0x8c, 0x9d, 0x88, 0xd1, 0x33, 0xac, 0x5d, 0xec, 0x06, + 0x38, 0x38, 0x52, 0xf8, 0x13, 0x81, 0xb6, 0xfe, 0x5a, 0x81, 0x9d, 0xa2, 0x26, 0x9d, 0xd7, 0xf6, + 0x61, 0xa7, 0xa8, 0x4a, 0xd5, 0x95, 0xba, 0x00, 0xe8, 0xe5, 0x15, 0xca, 0xca, 0x11, 0x7d, 0x08, + 0x1d, 0x39, 0xe6, 0x73, 0x7c, 0x25, 0xa9, 0xf8, 0x2c, 0xe5, 0xf7, 0xc5, 0x6e, 0xbb, 0xf9, 0x5d, + 0xfa, 0x18, 0x6e, 0x69, 0xf7, 0x9d, 0x45, 0xb3, 0xd5, 0x81, 0xd8, 0xd5, 0x0c, 0x4f, 0xe7, 0xac, + 0xff, 0x02, 0xfa, 0x19, 0xea, 0x60, 0x26, 0x91, 0x26, 0x56, 0xef, 0xc2, 0xf6, 0x9c, 0xb3, 0x0f, + 0x7d, 0x9f, 0xc9, 0x2b, 0x58, 0xb7, 0xcb, 0x48, 0xd6, 0x03, 0xb8, 0x39, 0xc2, 0x5c, 0x45, 0xc3, + 0xe5, 0xba, 0x56, 0x54, 0xc2, 0xb6, 0xa0, 0x36, 0xc2, 0x9e, 0x74, 0xbe, 0x66, 0x8b, 0x5f, 0x71, + 0x00, 0x4f, 0x63, 0xec, 0x49, 0x2f, 0x6b, 0xb6, 0xfc, 0xb7, 0xfe, 0x52, 0x81, 0x0d, 0x9d, 0xcd, + 0x44, 0x36, 0xf5, 0x19, 0xb9, 0xc4, 0x4c, 0x1f, 0x3d, 0x0d, 0x89, 0x9e, 0x55, 0xfd, 0x39, 0x34, + 0xe2, 0x84, 0xa6, 0x39, 0xb2, 0xa3, 0xb0, 0xcf, 0x14, 0x52, 0x4e, 0x70, 0xe4, 0x80, 0x42, 0xf7, + 0x02, 0x1a, 0x92, 0x63, 0x98, 0x58, 0xdc, 0x7d, 0x99, 0x13, 0x9b, 0xb6, 0x86, 0xc4, 0x51, 0x37, + 0xf2, 0xd6, 0xa4, 0x3c, 0x03, 0x8a, 0xa3, 0x1e, 0xd0, 0x24, 0xe4, 0x4e, 0x44, 0x49, 0xc8, 0x75, + 0x12, 0x04, 0x89, 0x3a, 0x11, 0x18, 0xeb, 0xf7, 0x15, 0x58, 0x57, 0x53, 0x4c, 0xd1, 0x7d, 0xa4, + 0xcf, 0x48, 0x95, 0xc8, 0x27, 0x59, 0xea, 0x52, 0x4f, 0x87, 0xfc, 0x17, 0xf7, 0xf8, 0x32, 0x50, + 0x09, 0x55, 0x9b, 0x76, 0x19, 0x88, 0x4c, 0x2a, 0x3c, 0xcb, 0x5e, 0x23, 0x49, 0x57, 0x26, 0x76, + 0x52, 0xac, 0x64, 0x5b, 0x6a, 0xa9, 0xf5, 0x2b, 0xd1, 0x74, 0xa5, 0x13, 0xbc, 0x2d, 0xa8, 0x25, + 0xa9, 0x31, 0xe2, 0x57, 0x60, 0xc6, 0xe9, 0x3b, 0x26, 0x7e, 0xd1, 0x3d, 0xd8, 0x74, 0x7d, 0x9f, + 0x88, 0xe5, 0xee, 0xf4, 0x09, 0xf1, 0xd3, 0x4b, 0x5a, 0xc4, 0x5a, 0x7f, 0xaf, 0x40, 0xf7, 0x90, + 0x46, 0xb3, 0x9f, 0x91, 0x29, 0xce, 0x65, 0x10, 0x69, 0xa4, 0x52, 0x20, 0xff, 0x45, 0x41, 0x7b, + 0x4e, 0xa6, 0x58, 0x5d, 0x2d, 0xb5, 0xb3, 0x0d, 0x81, 0x90, 0xd7, 0xca, 0x10, 0xd3, 0xc1, 0x48, + 0x47, 0x11, 0x9f, 0x52, 0x1f, 0x8b, 0x24, 0xe6, 0x13, 0xe6, 0xa4, 0x63, 0x90, 0x8e, 0xbd, 0xe1, + 0x13, 0x26, 0x49, 0xda, 0x91, 0x35, 0x39, 0x89, 0xcb, 0x3b, 0xb2, 0xae, 0x30, 0xc2, 0x91, 0x5d, + 0x58, 0xa7, 0xe7, 0xe7, 0x31, 0xe6, 0x72, 0xca, 0x5b, 0xb3, 0x35, 0x94, 0xa6, 0xb9, 0x46, 0x2e, + 0xcd, 0xdd, 0x80, 0x6d, 0x39, 0xf3, 0x7d, 0xce, 0x5c, 0x8f, 0x84, 0x63, 0x93, 0x8a, 0x77, 0x00, + 0x8d, 0x38, 0x8d, 0x8a, 0xd8, 0xfb, 0x7f, 0xd8, 0xd2, 0x39, 0x51, 0x37, 0x40, 0xe8, 0x09, 0x74, + 0xe7, 0x06, 0xea, 0x48, 0x77, 0xc4, 0xe5, 0x73, 0xf6, 0xc1, 0xee, 0x50, 0x0d, 0xe8, 0x87, 0x66, + 0x40, 0x3f, 0x7c, 0x1c, 0x44, 0x7c, 0x86, 0x1e, 0xc3, 0x66, 0x71, 0xf4, 0x8c, 0x6e, 0x9b, 0xf7, + 0xbc, 0x64, 0x20, 0xbd, 0x54, 0xcc, 0x13, 0xe8, 0xce, 0x4d, 0xa1, 0x8d, 0x3d, 0xe5, 0xc3, 0xe9, + 0xa5, 0x82, 0x1e, 0x40, 0x2b, 0x37, 0x76, 0x46, 0x7d, 0x25, 0x64, 0x71, 0x12, 0xbd, 0x54, 0xc0, + 0x21, 0x74, 0x0a, 0x93, 0x60, 0x34, 0xd0, 0xfe, 0x94, 0x8c, 0x87, 0x97, 0x0a, 0x39, 0x80, 0x56, + 0x6e, 0x20, 0x6b, 0xac, 0x58, 0x9c, 0xfa, 0x0e, 0x6e, 0x95, 0x50, 0x74, 0xea, 0x3d, 0x82, 0x4e, + 0x61, 0x7c, 0x6a, 0x0c, 0x29, 0x1b, 0xdd, 0x0e, 0x6e, 0x97, 0xd2, 0xb4, 0xa4, 0x27, 0xd0, 0x9d, + 0x1b, 0xa6, 0x9a, 0xe0, 0x96, 0xcf, 0x58, 0x97, 0xba, 0xf5, 0xb9, 0xdc, 0xec, 0x5c, 0xf7, 0x90, + 0xdb, 0xec, 0xc5, 0xd1, 0xe9, 0xe0, 0x95, 0x72, 0xa2, 0xb6, 0xea, 0x31, 0x6c, 0x16, 0xa7, 0xa6, + 0x46, 0x58, 0xe9, 0x2c, 0x75, 0xf5, 0xc9, 0x29, 0x0c, 0x50, 0xb3, 0x93, 0x53, 0x36, 0x57, 0x5d, + 0x2a, 0xe8, 0x21, 0x80, 0x6e, 0x32, 0x7c, 0x12, 0xa6, 0x5b, 0xb6, 0xd0, 0xdc, 0xa4, 0x5b, 0x56, + 0xd2, 0x90, 0x3c, 0x00, 0x50, 0xbd, 0x81, 0x4f, 0x13, 0x8e, 0x6e, 0x1a, 0x33, 0xe6, 0x1a, 0x92, + 0x41, 0x7f, 0x91, 0xb0, 0x20, 0x00, 0x33, 0x76, 0x15, 0x01, 0x9f, 0x01, 0x64, 0x3d, 0x87, 0x11, + 0xb0, 0xd0, 0x85, 0xac, 0x88, 0x41, 0x3b, 0xdf, 0x61, 0x20, 0xed, 0x6b, 0x49, 0xd7, 0xb1, 0x42, + 0x44, 0x77, 0xae, 0x80, 0x2d, 0x1e, 0xb6, 0xf9, 0xba, 0x76, 0xb0, 0x50, 0xc4, 0xa2, 0x0f, 0xa1, + 0x9d, 0xaf, 0x5c, 0x8d, 0x15, 0x25, 0xd5, 0xec, 0xa0, 0x50, 0xbd, 0xa2, 0x07, 0xb0, 0x59, 0xac, + 0x5a, 0x51, 0xee, 0x5e, 0x2c, 0xd4, 0xb2, 0x03, 0xdd, 0xc9, 0xe7, 0xd8, 0xdf, 0x07, 0xc8, 0xaa, + 0x5b, 0x13, 0xbe, 0x85, 0x7a, 0x77, 0x4e, 0xeb, 0x43, 0x68, 0xe7, 0x33, 0xb1, 0x31, 0xb7, 0x24, + 0x3b, 0xaf, 0xca, 0x5a, 0xb9, 0xac, 0x6d, 0x0e, 0xdf, 0x62, 0x22, 0x5f, 0x95, 0xb5, 0x0a, 0xcd, + 0x99, 0x49, 0x16, 0x65, 0x1d, 0xdb, 0xaa, 0x5c, 0x5e, 0x6c, 0x82, 0x4c, 0xf8, 0x4a, 0x5b, 0xa3, + 0x55, 0x87, 0x28, 0xdf, 0x0d, 0x98, 0x78, 0x94, 0x74, 0x08, 0xdf, 0x73, 0xa9, 0xf3, 0x15, 0x7f, + 0xee, 0x52, 0x97, 0x34, 0x02, 0x4b, 0x05, 0x1d, 0x41, 0xf7, 0x89, 0x29, 0xe6, 0x74, 0xa1, 0xa9, + 0xcd, 0x29, 0x29, 0xac, 0x07, 0x83, 0x32, 0x92, 0xbe, 0x59, 0x9f, 0x43, 0x6f, 0xa1, 0xc8, 0x44, + 0x77, 0xd2, 0x81, 0x53, 0x69, 0xf5, 0xb9, 0xd4, 0xac, 0x63, 0xd8, 0x9a, 0xaf, 0x31, 0xd1, 0xab, + 0x7a, 0xd3, 0xcb, 0x6b, 0xcf, 0xa5, 0xa2, 0x3e, 0x86, 0x86, 0xa9, 0x69, 0x90, 0x1e, 0xec, 0xcd, + 0xd5, 0x38, 0xcb, 0x96, 0x1e, 0xb4, 0xbf, 0xfd, 0xee, 0x4e, 0xe5, 0x1f, 0xdf, 0xdd, 0xa9, 0xfc, + 0xfb, 0xbb, 0x3b, 0x95, 0xb3, 0x75, 0x49, 0x7d, 0xff, 0xbf, 0x01, 0x00, 0x00, 0xff, 0xff, 0x33, + 0x1c, 0xc1, 0x27, 0xe0, 0x1f, 0x00, 0x00, } diff --git a/vendor/github.com/mdlayher/vsock/conn_linux.go b/vendor/github.com/mdlayher/vsock/conn_linux.go index 7de075c325..be81f4af0d 100644 --- a/vendor/github.com/mdlayher/vsock/conn_linux.go +++ b/vendor/github.com/mdlayher/vsock/conn_linux.go @@ -3,7 +3,6 @@ package vsock import ( - "errors" "net" "os" "time" @@ -11,31 +10,40 @@ import ( "golang.org/x/sys/unix" ) -var ( - // errDeadlinesNotImplemented is returned by the SetDeadline family of methods - // for conn, because access is not yet available to the runtime network poller - // for non-standard sockets types. - // See: https://github.com/golang/go/issues/10565. - errDeadlinesNotImplemented = errors.New("vsock: deadlines not implemented") -) - var _ net.Conn = &conn{} // A conn is the net.Conn implementation for VM sockets. type conn struct { - *os.File + file *os.File localAddr *Addr remoteAddr *Addr } -// LocalAddr and RemoteAddr implement the net.Conn interface for conn. -func (c *conn) LocalAddr() net.Addr { return c.localAddr } -func (c *conn) RemoteAddr() net.Addr { return c.remoteAddr } +// Implement net.Conn for type conn. +func (c *conn) LocalAddr() net.Addr { return c.localAddr } +func (c *conn) RemoteAddr() net.Addr { return c.remoteAddr } +func (c *conn) SetDeadline(t time.Time) error { return c.file.SetDeadline(t) } +func (c *conn) SetReadDeadline(t time.Time) error { return c.file.SetReadDeadline(t) } +func (c *conn) SetWriteDeadline(t time.Time) error { return c.file.SetWriteDeadline(t) } +func (c *conn) Read(b []byte) (n int, err error) { return c.file.Read(b) } +func (c *conn) Write(b []byte) (n int, err error) { return c.file.Write(b) } +func (c *conn) Close() error { return c.file.Close() } -// SetDeadline functions implement the net.Conn interface for conn. -func (c *conn) SetDeadline(_ time.Time) error { return errDeadlinesNotImplemented } -func (c *conn) SetReadDeadline(_ time.Time) error { return errDeadlinesNotImplemented } -func (c *conn) SetWriteDeadline(_ time.Time) error { return errDeadlinesNotImplemented } +// newConn creates a conn using an fd with the specified file name, local, and +// remote addresses. +func newConn(cfd fd, file string, local, remote *Addr) (*conn, error) { + // Enable integration with runtime network poller for timeout support + // in Go 1.11+. + if err := cfd.SetNonblock(true); err != nil { + return nil, err + } + + return &conn{ + file: cfd.NewFile(file), + localAddr: local, + remoteAddr: remote, + }, nil +} // dialStream is the entry point for DialStream on Linux. func dialStream(cid, port uint32) (net.Conn, error) { @@ -89,9 +97,6 @@ func dialStreamLinux(cfd fd, cid, port uint32) (net.Conn, error) { Port: port, } - return &conn{ - File: cfd.NewFile(remoteAddr.fileName()), - localAddr: localAddr, - remoteAddr: remoteAddr, - }, nil + // File name is the name of the local socket. + return newConn(cfd, localAddr.fileName(), localAddr, remoteAddr) } diff --git a/vendor/github.com/mdlayher/vsock/fd_linux.go b/vendor/github.com/mdlayher/vsock/fd_linux.go index c4713c85da..9cfd0c27dc 100644 --- a/vendor/github.com/mdlayher/vsock/fd_linux.go +++ b/vendor/github.com/mdlayher/vsock/fd_linux.go @@ -11,11 +11,12 @@ import ( type fd interface { Accept4(flags int) (fd, unix.Sockaddr, error) Bind(sa unix.Sockaddr) error - Connect(sa unix.Sockaddr) error Close() error + Connect(sa unix.Sockaddr) error Getsockname() (unix.Sockaddr, error) Listen(n int) error NewFile(name string) *os.File + SetNonblock(nonblocking bool) error } var _ fd = &sysFD{} @@ -38,6 +39,7 @@ func (fd *sysFD) Accept4(flags int) (fd, unix.Sockaddr, error) { func (fd *sysFD) Bind(sa unix.Sockaddr) error { return unix.Bind(fd.fd, sa) } func (fd *sysFD) Close() error { return unix.Close(fd.fd) } func (fd *sysFD) Connect(sa unix.Sockaddr) error { return unix.Connect(fd.fd, sa) } +func (fd *sysFD) Getsockname() (unix.Sockaddr, error) { return unix.Getsockname(fd.fd) } func (fd *sysFD) Listen(n int) error { return unix.Listen(fd.fd, n) } func (fd *sysFD) NewFile(name string) *os.File { return os.NewFile(uintptr(fd.fd), name) } -func (fd *sysFD) Getsockname() (unix.Sockaddr, error) { return unix.Getsockname(fd.fd) } +func (fd *sysFD) SetNonblock(nonblocking bool) error { return unix.SetNonblock(fd.fd, nonblocking) } diff --git a/vendor/github.com/mdlayher/vsock/listener_linux.go b/vendor/github.com/mdlayher/vsock/listener_linux.go index ecf5d8a67c..f74a263f6e 100644 --- a/vendor/github.com/mdlayher/vsock/listener_linux.go +++ b/vendor/github.com/mdlayher/vsock/listener_linux.go @@ -35,11 +35,7 @@ func (l *listener) Accept() (net.Conn, error) { Port: savm.Port, } - return &conn{ - File: cfd.NewFile(l.addr.fileName()), - localAddr: l.addr, - remoteAddr: remoteAddr, - }, nil + return newConn(cfd, l.addr.fileName(), l.addr, remoteAddr) } // listenStream is the entry point for ListenStream on Linux. @@ -87,6 +83,10 @@ func listenStreamLinux(lfd fd, cid, port uint32) (net.Listener, error) { Port: port, } + if err := lfd.SetNonblock(true); err != nil { + return nil, err + } + if err := lfd.Bind(sa); err != nil { return nil, err } diff --git a/virtcontainers/kata_agent_test.go b/virtcontainers/kata_agent_test.go index b1e27f1d9e..9ce6d1907c 100644 --- a/virtcontainers/kata_agent_test.go +++ b/virtcontainers/kata_agent_test.go @@ -191,14 +191,6 @@ func (p *gRPCProxy) DestroySandbox(ctx context.Context, req *pb.DestroySandboxRe return emptyResp, nil } -func (p *gRPCProxy) AddInterface(ctx context.Context, req *pb.AddInterfaceRequest) (*aTypes.Interface, error) { - return nil, nil -} - -func (p *gRPCProxy) RemoveInterface(ctx context.Context, req *pb.RemoveInterfaceRequest) (*aTypes.Interface, error) { - return nil, nil -} - func (p *gRPCProxy) UpdateInterface(ctx context.Context, req *pb.UpdateInterfaceRequest) (*aTypes.Interface, error) { return &aTypes.Interface{}, nil }