| // Copyright 2018 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef SRC_VIRTUALIZATION_BIN_GUEST_MANAGER_GUEST_VSOCK_ENDPOINT_H_ |
| #define SRC_VIRTUALIZATION_BIN_GUEST_MANAGER_GUEST_VSOCK_ENDPOINT_H_ |
| |
| #include <fuchsia/virtualization/cpp/fidl.h> |
| #include <lib/fidl/cpp/binding.h> |
| |
| // An endpoint that represents a guest. This endpoint delegates work to the |
| // guest using the |fuchsia::virtualization::GuestVsockAcceptor| interface. |
| // Specifically the guest is responsible for the allocation of outbound ports |
| // and accepting all inbound connections. |
| class GuestVsockEndpoint : public fuchsia::virtualization::GuestVsockAcceptor { |
| public: |
| GuestVsockEndpoint(uint32_t cid, fuchsia::virtualization::GuestVsockEndpointPtr guest_endpoint, |
| fuchsia::virtualization::HostVsockConnector* connector); |
| |
| private: |
| // |fuchsia::virtualization::GuestVsockAcceptor| |
| void Accept(uint32_t src_cid, uint32_t src_port, uint32_t port, zx::handle handle, |
| AcceptCallback callback) override; |
| |
| fidl::Binding<fuchsia::virtualization::HostVsockConnector> connector_binding_; |
| fuchsia::virtualization::GuestVsockAcceptorPtr acceptor_; |
| fuchsia::virtualization::GuestVsockEndpointPtr guest_endpoint_; |
| }; |
| |
| #endif // SRC_VIRTUALIZATION_BIN_GUEST_MANAGER_GUEST_VSOCK_ENDPOINT_H_ |