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 {
|
struct TcCakeOptions {
|
||||||
rtt: u64,
|
rtt: u64,
|
||||||
bandwidth: String,
|
bandwidth: String,
|
||||||
diffserv: String,
|
diffserv: DiffServ,
|
||||||
flowmode: String,
|
flowmode: String,
|
||||||
ack_filter: String,
|
ack_filter: String,
|
||||||
nat: bool,
|
nat: bool,
|
||||||
@ -66,6 +66,27 @@ pub struct TcCakeTin {
|
|||||||
flow_quantum: u16,
|
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 {
|
impl TcCake {
|
||||||
pub(crate) fn from_json(map: &serde_json::Map<std::string::String, Value>) -> Result<Self> {
|
pub(crate) fn from_json(map: &serde_json::Map<std::string::String, Value>) -> Result<Self> {
|
||||||
let mut result = Self::default();
|
let mut result = Self::default();
|
||||||
@ -115,7 +136,7 @@ impl TcCakeOptions {
|
|||||||
for (key, value) in map.iter() {
|
for (key, value) in map.iter() {
|
||||||
match key.as_str() {
|
match key.as_str() {
|
||||||
"bandwidth" => result.bandwidth = value.as_str().unwrap().to_string(),
|
"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(),
|
"flowmode" => result.flowmode = value.as_str().unwrap().to_string(),
|
||||||
"nat" => result.nat = value.as_bool().unwrap(),
|
"nat" => result.nat = value.as_bool().unwrap(),
|
||||||
"wash" => result.wash = value.as_bool().unwrap(),
|
"wash" => result.wash = value.as_bool().unwrap(),
|
||||||
|
Loading…
Reference in New Issue
Block a user