mirror of
https://github.com/LibreQoE/LibreQoS.git
synced 2025-02-25 18:55:32 -06:00
Convert diffserv from a string to a nice enum.
Co-authored-by: Dave Taht <davet@taht.net>
This commit is contained in:
parent
87aaddd82b
commit
7ea5ab3cd8
@ -30,7 +30,7 @@ pub struct TcCake {
|
||||
struct TcCakeOptions {
|
||||
rtt: u64,
|
||||
bandwidth: String,
|
||||
diffserv: String,
|
||||
diffserv: DiffServ,
|
||||
flowmode: String,
|
||||
ack_filter: String,
|
||||
nat: bool,
|
||||
@ -66,6 +66,27 @@ pub struct TcCakeTin {
|
||||
flow_quantum: u16,
|
||||
}
|
||||
|
||||
#[derive(Serialize, Deserialize, Clone, Debug)]
|
||||
enum DiffServ { BestEffort, DiffServ3, DiffServ4, DiffServ8, Unknown }
|
||||
|
||||
impl Default for DiffServ {
|
||||
fn default() -> Self {
|
||||
Self::Unknown
|
||||
}
|
||||
}
|
||||
|
||||
impl DiffServ {
|
||||
fn from_str(s: &str) -> Self {
|
||||
match s.to_lowercase().as_str() {
|
||||
"besteffort" => Self::BestEffort,
|
||||
"diffserv3" => Self::DiffServ3,
|
||||
"diffserv4" => Self::DiffServ4,
|
||||
"diffserv8" => Self::DiffServ8,
|
||||
_ => Self::Unknown,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl TcCake {
|
||||
pub(crate) fn from_json(map: &serde_json::Map<std::string::String, Value>) -> Result<Self> {
|
||||
let mut result = Self::default();
|
||||
@ -115,7 +136,7 @@ impl TcCakeOptions {
|
||||
for (key, value) in map.iter() {
|
||||
match key.as_str() {
|
||||
"bandwidth" => result.bandwidth = value.as_str().unwrap().to_string(),
|
||||
"diffserv" => result.diffserv = value.as_str().unwrap().to_string(),
|
||||
"diffserv" => result.diffserv = DiffServ::from_str(value.as_str().unwrap()),
|
||||
"flowmode" => result.flowmode = value.as_str().unwrap().to_string(),
|
||||
"nat" => result.nat = value.as_bool().unwrap(),
|
||||
"wash" => result.wash = value.as_bool().unwrap(),
|
||||
|
Loading…
Reference in New Issue
Block a user