blob: edf1fb5a97bbe97407d13b860cbd7f134947a603 [file] [log] [blame]
// 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_