blob: aa7166db28b87cb83f7a087f8b5d52bdcf821339 [file] [log] [blame]
// Copyright 2023, The Android Open Source Project
//
// 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.
//! Vsock setup shared between the host and the service VM.
const PROTECTED_VM_PORT: u32 = 5679;
const NON_PROTECTED_VM_PORT: u32 = 5680;
/// VM Type.
#[derive(Clone, Copy, Debug)]
pub enum VmType {
/// Protected VM.
ProtectedVm,
/// NonProtectev VM.
NonProtectedVm,
}
impl VmType {
/// Returns the port number used for the vsock communication between
/// the host and the service VM.
pub fn port(&self) -> u32 {
match self {
Self::ProtectedVm => PROTECTED_VM_PORT,
Self::NonProtectedVm => NON_PROTECTED_VM_PORT,
}
}
/// Returns whether it is a protected VM.
pub fn is_protected(&self) -> bool {
match self {
Self::ProtectedVm => true,
Self::NonProtectedVm => false,
}
}
}