1use serde::{Deserialize, Serialize};
4use std::collections::HashMap;
5
6#[derive(Default, Clone)]
7pub struct Config {
8 pub plugin_dirs: Vec<String>,
9 pub plugin_conf_dir: String,
10 pub plugin_max_conf_num: i64,
11 pub prefix: String,
12}
13#[derive(Default, Clone, Serialize, Deserialize, Debug)]
14pub struct NetworkConfig {
15 pub network: NetConf,
16 pub bytes: Vec<u8>,
17}
18
19#[derive(Default, Clone, Serialize, Deserialize, Debug)]
23pub struct NetConf {
24 #[serde(default, alias = "cniVersion")]
25 pub cni_version: String,
26 #[serde(default)]
27 pub name: String,
28 #[serde(default, alias = "type")]
29 pub _type: String,
30 #[serde(default)]
31 pub capabilities: HashMap<String, bool>,
32}
33
34#[derive(Serialize, Deserialize)]
35pub struct IPAM {
36 #[serde(rename = "type")]
37 pub _type: String,
38}
39
40pub struct NetConfList {
41 pub cni_version: String,
42 pub name: String,
43 pub disable_check: bool,
44 pub plugins: Vec<NetworkConfig>,
45}
46
47#[derive(Clone, Serialize, Deserialize, Default)]
48pub struct DNS {
49 #[serde(skip_serializing_if = "Option::is_none")]
50 pub nameservers: Option<Vec<String>>,
51 #[serde(skip_serializing_if = "Option::is_none")]
52 pub domain: Option<String>,
53 #[serde(skip_serializing_if = "Option::is_none")]
54 pub search: Option<Vec<String>>,
55 #[serde(skip_serializing_if = "Option::is_none")]
56 pub options: Option<Vec<String>>,
57}
58
59#[derive(Clone, Serialize, Deserialize)]
60pub struct Route {
61 #[serde(skip_serializing_if = "Option::is_none")]
62 #[serde(rename = "dst")]
63 pub dst: Option<ipnetwork::IpNetwork>,
64 #[serde(rename = "gw")]
65 #[serde(skip_serializing_if = "Option::is_none")]
66 pub gw: Option<std::net::IpAddr>,
67}