1#[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)]
14pub struct Interface {
15 #[serde(rename = "id", skip_serializing_if = "Option::is_none")]
16 pub id: Option<i32>,
17 #[serde(rename = "url", skip_serializing_if = "Option::is_none")]
18 pub url: Option<String>,
19 #[serde(rename = "display_url", skip_serializing_if = "Option::is_none")]
20 pub display_url: Option<String>,
21 #[serde(rename = "display", skip_serializing_if = "Option::is_none")]
22 pub display: Option<String>,
23 #[serde(rename = "device")]
24 pub device: Box<crate::models::BriefDevice>,
25 #[serde(rename = "vdcs", skip_serializing_if = "Option::is_none")]
26 pub vdcs: Option<Vec<crate::models::VirtualDeviceContext>>,
27 #[serde(
28 rename = "module",
29 default,
30 with = "::serde_with::rust::double_option",
31 skip_serializing_if = "Option::is_none"
32 )]
33 pub module: Option<Option<Box<crate::models::BriefModule>>>,
34 #[serde(rename = "name")]
35 pub name: String,
36 #[serde(rename = "label", skip_serializing_if = "Option::is_none")]
38 pub label: Option<String>,
39 #[serde(rename = "type")]
40 pub r#type: Box<crate::models::InterfaceType>,
41 #[serde(rename = "enabled", skip_serializing_if = "Option::is_none")]
42 pub enabled: Option<bool>,
43 #[serde(
44 rename = "parent",
45 default,
46 with = "::serde_with::rust::double_option",
47 skip_serializing_if = "Option::is_none"
48 )]
49 pub parent: Option<Option<Box<crate::models::NestedInterface>>>,
50 #[serde(
51 rename = "bridge",
52 default,
53 with = "::serde_with::rust::double_option",
54 skip_serializing_if = "Option::is_none"
55 )]
56 pub bridge: Option<Option<Box<crate::models::NestedInterface>>>,
57 #[serde(rename = "bridge_interfaces", skip_serializing_if = "Option::is_none")]
58 pub bridge_interfaces: Option<Vec<crate::models::NestedInterface>>,
59 #[serde(
60 rename = "lag",
61 default,
62 with = "::serde_with::rust::double_option",
63 skip_serializing_if = "Option::is_none"
64 )]
65 pub lag: Option<Option<Box<crate::models::NestedInterface>>>,
66 #[serde(
67 rename = "mtu",
68 default,
69 with = "::serde_with::rust::double_option",
70 skip_serializing_if = "Option::is_none"
71 )]
72 pub mtu: Option<Option<i32>>,
73 #[serde(
74 rename = "mac_address",
75 default,
76 with = "::serde_with::rust::double_option",
77 skip_serializing_if = "Option::is_none"
78 )]
79 pub mac_address: Option<Option<String>>,
80 #[serde(
81 rename = "primary_mac_address",
82 default,
83 with = "::serde_with::rust::double_option",
84 skip_serializing_if = "Option::is_none"
85 )]
86 pub primary_mac_address: Option<Option<Box<crate::models::BriefMacAddress>>>,
87 #[serde(
88 rename = "mac_addresses",
89 default,
90 with = "::serde_with::rust::double_option",
91 skip_serializing_if = "Option::is_none"
92 )]
93 pub mac_addresses: Option<Option<Vec<crate::models::BriefMacAddress>>>,
94 #[serde(
95 rename = "speed",
96 default,
97 with = "::serde_with::rust::double_option",
98 skip_serializing_if = "Option::is_none"
99 )]
100 pub speed: Option<Option<i64>>,
101 #[serde(
102 rename = "duplex",
103 default,
104 with = "::serde_with::rust::double_option",
105 skip_serializing_if = "Option::is_none"
106 )]
107 pub duplex: Option<Option<Box<crate::models::InterfaceDuplex>>>,
108 #[serde(
109 rename = "wwn",
110 default,
111 with = "::serde_with::rust::double_option",
112 skip_serializing_if = "Option::is_none"
113 )]
114 pub wwn: Option<Option<String>>,
115 #[serde(rename = "mgmt_only", skip_serializing_if = "Option::is_none")]
117 pub mgmt_only: Option<bool>,
118 #[serde(rename = "description", skip_serializing_if = "Option::is_none")]
119 pub description: Option<String>,
120 #[serde(rename = "mode", skip_serializing_if = "Option::is_none")]
121 pub mode: Option<Box<crate::models::InterfaceMode>>,
122 #[serde(rename = "rf_role", skip_serializing_if = "Option::is_none")]
123 pub rf_role: Option<Box<crate::models::InterfaceRfRole>>,
124 #[serde(rename = "rf_channel", skip_serializing_if = "Option::is_none")]
125 pub rf_channel: Option<Box<crate::models::InterfaceRfChannel>>,
126 #[serde(rename = "poe_mode", skip_serializing_if = "Option::is_none")]
127 pub poe_mode: Option<Box<crate::models::InterfacePoeMode>>,
128 #[serde(rename = "poe_type", skip_serializing_if = "Option::is_none")]
129 pub poe_type: Option<Box<crate::models::InterfacePoeType>>,
130 #[serde(
132 rename = "rf_channel_frequency",
133 default,
134 with = "::serde_with::rust::double_option",
135 skip_serializing_if = "Option::is_none"
136 )]
137 pub rf_channel_frequency: Option<Option<f64>>,
138 #[serde(
140 rename = "rf_channel_width",
141 default,
142 with = "::serde_with::rust::double_option",
143 skip_serializing_if = "Option::is_none"
144 )]
145 pub rf_channel_width: Option<Option<f64>>,
146 #[serde(
147 rename = "tx_power",
148 default,
149 with = "::serde_with::rust::double_option",
150 skip_serializing_if = "Option::is_none"
151 )]
152 pub tx_power: Option<Option<i32>>,
153 #[serde(
154 rename = "untagged_vlan",
155 default,
156 with = "::serde_with::rust::double_option",
157 skip_serializing_if = "Option::is_none"
158 )]
159 pub untagged_vlan: Option<Option<Box<crate::models::BriefVlan>>>,
160 #[serde(rename = "tagged_vlans", skip_serializing_if = "Option::is_none")]
161 pub tagged_vlans: Option<Vec<crate::models::Vlan>>,
162 #[serde(
163 rename = "qinq_svlan",
164 default,
165 with = "::serde_with::rust::double_option",
166 skip_serializing_if = "Option::is_none"
167 )]
168 pub qinq_svlan: Option<Option<Box<crate::models::BriefVlan>>>,
169 #[serde(
170 rename = "vlan_translation_policy",
171 default,
172 with = "::serde_with::rust::double_option",
173 skip_serializing_if = "Option::is_none"
174 )]
175 pub vlan_translation_policy: Option<Option<Box<crate::models::BriefVlanTranslationPolicy>>>,
176 #[serde(rename = "mark_connected", skip_serializing_if = "Option::is_none")]
178 pub mark_connected: Option<bool>,
179 #[serde(
180 rename = "cable",
181 default,
182 with = "::serde_with::rust::double_option",
183 skip_serializing_if = "Option::is_none"
184 )]
185 pub cable: Option<Option<Box<crate::models::BriefCable>>>,
186 #[serde(
188 rename = "cable_end",
189 default,
190 with = "::serde_with::rust::double_option",
191 skip_serializing_if = "Option::is_none"
192 )]
193 pub cable_end: Option<Option<CableEnd>>,
194 #[serde(
195 rename = "wireless_link",
196 default,
197 with = "::serde_with::rust::double_option",
198 skip_serializing_if = "Option::is_none"
199 )]
200 pub wireless_link: Option<Option<Box<crate::models::NestedWirelessLink>>>,
201 #[serde(rename = "link_peers", skip_serializing_if = "Option::is_none")]
202 pub link_peers: Option<Vec<serde_json::Value>>,
203 #[serde(
205 rename = "link_peers_type",
206 default,
207 with = "::serde_with::rust::double_option",
208 skip_serializing_if = "Option::is_none"
209 )]
210 pub link_peers_type: Option<Option<String>>,
211 #[serde(rename = "wireless_lans", skip_serializing_if = "Option::is_none")]
212 pub wireless_lans: Option<Vec<crate::models::WirelessLan>>,
213 #[serde(
214 rename = "vrf",
215 default,
216 with = "::serde_with::rust::double_option",
217 skip_serializing_if = "Option::is_none"
218 )]
219 pub vrf: Option<Option<Box<crate::models::BriefVrf>>>,
220 #[serde(
221 rename = "l2vpn_termination",
222 default,
223 with = "::serde_with::rust::double_option",
224 skip_serializing_if = "Option::is_none"
225 )]
226 pub l2vpn_termination: Option<Option<Box<crate::models::BriefL2VpnTermination>>>,
227 #[serde(
228 rename = "connected_endpoints",
229 default,
230 with = "::serde_with::rust::double_option",
231 skip_serializing_if = "Option::is_none"
232 )]
233 pub connected_endpoints: Option<Option<Vec<serde_json::Value>>>,
234 #[serde(
235 rename = "connected_endpoints_type",
236 default,
237 with = "::serde_with::rust::double_option",
238 skip_serializing_if = "Option::is_none"
239 )]
240 pub connected_endpoints_type: Option<Option<String>>,
241 #[serde(
242 rename = "connected_endpoints_reachable",
243 skip_serializing_if = "Option::is_none"
244 )]
245 pub connected_endpoints_reachable: Option<bool>,
246 #[serde(
247 rename = "owner",
248 default,
249 with = "::serde_with::rust::double_option",
250 skip_serializing_if = "Option::is_none"
251 )]
252 pub owner: Option<Option<Box<crate::models::BriefOwner>>>,
253 #[serde(rename = "tags", skip_serializing_if = "Option::is_none")]
254 pub tags: Option<Vec<crate::models::NestedTag>>,
255 #[serde(rename = "custom_fields", skip_serializing_if = "Option::is_none")]
256 pub custom_fields: Option<::std::collections::HashMap<String, serde_json::Value>>,
257 #[serde(
258 rename = "created",
259 default,
260 with = "::serde_with::rust::double_option",
261 skip_serializing_if = "Option::is_none"
262 )]
263 pub created: Option<Option<String>>,
264 #[serde(
265 rename = "last_updated",
266 default,
267 with = "::serde_with::rust::double_option",
268 skip_serializing_if = "Option::is_none"
269 )]
270 pub last_updated: Option<Option<String>>,
271 #[serde(rename = "count_ipaddresses", skip_serializing_if = "Option::is_none")]
272 pub count_ipaddresses: Option<i32>,
273 #[serde(rename = "count_fhrp_groups", skip_serializing_if = "Option::is_none")]
274 pub count_fhrp_groups: Option<i32>,
275 #[serde(rename = "_occupied", skip_serializing_if = "Option::is_none")]
276 pub _occupied: Option<bool>,
277}
278
279impl Interface {
280 pub fn new(
282 device: crate::models::BriefDevice,
283 name: String,
284 r#type: crate::models::InterfaceType,
285 ) -> Interface {
286 Interface {
287 id: None,
288 url: None,
289 display_url: None,
290 display: None,
291 device: Box::new(device),
292 vdcs: None,
293 module: None,
294 name,
295 label: None,
296 r#type: Box::new(r#type),
297 enabled: None,
298 parent: None,
299 bridge: None,
300 bridge_interfaces: None,
301 lag: None,
302 mtu: None,
303 mac_address: None,
304 primary_mac_address: None,
305 mac_addresses: None,
306 speed: None,
307 duplex: None,
308 wwn: None,
309 mgmt_only: None,
310 description: None,
311 mode: None,
312 rf_role: None,
313 rf_channel: None,
314 poe_mode: None,
315 poe_type: None,
316 rf_channel_frequency: None,
317 rf_channel_width: None,
318 tx_power: None,
319 untagged_vlan: None,
320 tagged_vlans: None,
321 qinq_svlan: None,
322 vlan_translation_policy: None,
323 mark_connected: None,
324 cable: None,
325 cable_end: None,
326 wireless_link: None,
327 link_peers: None,
328 link_peers_type: None,
329 wireless_lans: None,
330 vrf: None,
331 l2vpn_termination: None,
332 connected_endpoints: None,
333 connected_endpoints_type: None,
334 connected_endpoints_reachable: None,
335 owner: None,
336 tags: None,
337 custom_fields: None,
338 created: None,
339 last_updated: None,
340 count_ipaddresses: None,
341 count_fhrp_groups: None,
342 _occupied: None,
343 }
344 }
345}
346
347#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
349pub enum CableEnd {
350 #[serde(rename = "A")]
351 A,
352 #[serde(rename = "B")]
353 B,
354 #[serde(rename = "null")]
355 Null,
356}
357
358impl Default for CableEnd {
359 fn default() -> CableEnd {
360 Self::A
361 }
362}