blob: 6ad265a4c79af13b02d416521f68ef91725edf59 [file] [log] [blame]
// Copyright 2016 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
syntax = "proto2";
option optimize_for = LITE_RUNTIME;
package patchpanel;
// Best practice is to use optional fields, but since the client and server
// are always in sync, these messages use required fields to save on
// validation.
// If |br_ifname| exists in the message, a creation or deletion event
// occurred for the bridge interface.
// Otherwise, the event is occurred for the physical interface
// |dev_ifname|.
message DeviceMessage {
required string dev_ifname = 1;
optional string br_ifname = 2;
optional bool teardown = 3; // value is ignored
optional string guest_ip6addr = 4;
}
message GuestMessage {
enum GuestType {
UNKNOWN_GUEST = 0;
ARC = 1; // ARC++ Container (P & higher)
ARC_VM = 2; // ARC VM
TERMINA_VM = 3; // Crostini Termina VM
PLUGIN_VM = 4; // Plugin VM
}
required GuestType type = 1;
enum GuestEvent {
UNKNOWN_EVENT = 0;
START = 1;
STOP = 2;
}
required GuestEvent event = 2;
// The PID of the ARC++ container.
optional int32 arc_pid = 3;
// The VSOCK CID of the ARCVM.
optional int32 arcvm_vsock_cid = 4;
}
message IpHelperMessage {
oneof message_type {
GuestMessage guest_message = 1;
DeviceMessage device_message = 2;
}
}