snp-daemon/src/config.rs
2024-12-09 01:47:37 +02:00

51 lines
1.0 KiB
Rust

#![allow(dead_code)]
use cidr::Ipv4Cidr;
use cidr::Ipv6Cidr;
use core::net::Ipv4Addr;
use core::net::Ipv6Addr;
use std::collections::HashSet;
use std::ops::Range;
pub struct Volume {
path: String,
// maximum allowed storage in GB
max_reservation: u64,
}
pub struct IPv4Range {
pub subnet: Ipv4Cidr,
pub gateway: Ipv4Addr,
pub reserved_addrs: HashSet<Ipv4Addr>,
}
pub struct IPv6Range {
pub subnet: Ipv6Cidr,
pub gateway: Ipv6Addr,
pub reserved_addrs: HashSet<Ipv6Addr>,
}
pub struct Interface {
pub driver: InterfaceType,
pub device: String,
pub ipv4: Vec<IPv4Range>,
pub ipv6: Vec<IPv6Range>,
}
// TODO: create mechanic to autodetect interface type
pub enum InterfaceType {
MACVTAP,
IPVTAP,
Bridge,
}
pub struct Config {
pub max_cores_per_vm: usize,
pub max_vcpu_reservation: usize,
pub max_mem_reservation: usize,
pub network_interfaces: Vec<Interface>,
pub volumes: Vec<Volume>,
pub public_port_range: Range<u16>,
pub max_ports_per_vm: u16,
}