// Copyright 2020 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.

library fuchsia.developer.remotecontrol;

using fuchsia.device;
using fuchsia.net;
using fuchsia.hwinfo;

table IdentifyHostResponse {
    1: vector<fuchsia.net.Subnet>:MAX addresses;
    2: string:fuchsia.device.DEVICE_NAME_MAX nodename;
    // UTC timestamp of the target's time of boot, in nanoseconds.
    3: uint64 boot_timestamp_nanos;
    4: string:fuchsia.hwinfo.MAX_VALUE_SIZE serial_number;
};

enum IdentifyHostError : uint32 {
    // Indicates that the attempt to list device network interfaces failed.
    LIST_INTERFACES_FAILED = 1;
    // Indicates that attempting to get the nodename of the target failed.
    GET_DEVICE_NAME_FAILED = 2;
};
