Skip to content

Commit 8f8e93f

Browse files
committed
Mpls tests
1 parent 7cb0d28 commit 8f8e93f

File tree

5 files changed

+184
-32
lines changed

5 files changed

+184
-32
lines changed

src/tc/filters/flower/encap/erspan.rs

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -387,7 +387,7 @@ mod test {
387387
Options::parse(&NlaBuffer::new_checked(&buffer).unwrap()).unwrap();
388388
assert_eq!(example, parsed);
389389
}
390-
390+
391391
#[test]
392392
fn parse_back_options_index_zero() {
393393
let example = Options::Index(Index::new(0));
@@ -397,7 +397,7 @@ mod test {
397397
Options::parse(&NlaBuffer::new_checked(&buffer).unwrap()).unwrap();
398398
assert_eq!(example, parsed);
399399
}
400-
400+
401401
#[test]
402402
fn parse_back_options_index_example() {
403403
let example = Options::Index(Index::new(0x12345678));
@@ -407,7 +407,7 @@ mod test {
407407
Options::parse(&NlaBuffer::new_checked(&buffer).unwrap()).unwrap();
408408
assert_eq!(example, parsed);
409409
}
410-
410+
411411
#[test]
412412
fn parse_back_options_direction_ingress() {
413413
let example = Options::Direction(Direction::Ingress);
@@ -417,7 +417,7 @@ mod test {
417417
Options::parse(&NlaBuffer::new_checked(&buffer).unwrap()).unwrap();
418418
assert_eq!(example, parsed);
419419
}
420-
420+
421421
#[test]
422422
fn parse_back_options_direction_egress() {
423423
let example = Options::Direction(Direction::Egress);
@@ -427,7 +427,7 @@ mod test {
427427
Options::parse(&NlaBuffer::new_checked(&buffer).unwrap()).unwrap();
428428
assert_eq!(example, parsed);
429429
}
430-
430+
431431
#[test]
432432
fn parse_back_options_hwid_zero() {
433433
let example = Options::Hwid(ErspanHwid::new(0));
@@ -437,7 +437,7 @@ mod test {
437437
Options::parse(&NlaBuffer::new_checked(&buffer).unwrap()).unwrap();
438438
assert_eq!(example, parsed);
439439
}
440-
440+
441441
#[test]
442442
fn parse_back_options_hwid_example() {
443443
let example = Options::Hwid(ErspanHwid::new(0x12));
@@ -447,5 +447,4 @@ mod test {
447447
Options::parse(&NlaBuffer::new_checked(&buffer).unwrap()).unwrap();
448448
assert_eq!(example, parsed);
449449
}
450-
451450
}

src/tc/filters/flower/encap/geneve.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -303,5 +303,4 @@ mod tests {
303303
Options::parse(&NlaBuffer::new_checked(&buffer).unwrap()).unwrap();
304304
assert_eq!(example, parsed);
305305
}
306-
307306
}

src/tc/filters/flower/encap/gtp.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ mod tests {
8787
Options::parse(&NlaBuffer::new_checked(&buffer).unwrap()).unwrap();
8888
assert_eq!(example, parsed);
8989
}
90-
90+
9191
#[test]
9292
fn parse_back_options_qfi_zero() {
9393
let example = Options::Qfi(0);
@@ -97,7 +97,7 @@ mod tests {
9797
Options::parse(&NlaBuffer::new_checked(&buffer).unwrap()).unwrap();
9898
assert_eq!(example, parsed);
9999
}
100-
100+
101101
#[test]
102102
fn parse_back_options_qfi_example() {
103103
let example = Options::Qfi(0xab);

src/tc/filters/flower/encap/mod.rs

Lines changed: 30 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1+
use crate::tc::filters::cls_flower::TCA_FLOWER_KEY_ENC_OPTS;
12
use anyhow::Context;
23
use netlink_packet_utils::nla::{DefaultNla, Nla, NlaBuffer, NlasIterator};
34
use netlink_packet_utils::{DecodeError, Emitable, Parseable};
4-
use crate::tc::filters::cls_flower::TCA_FLOWER_KEY_ENC_OPTS;
55

66
pub mod erspan;
77
pub mod geneve;
@@ -47,8 +47,10 @@ impl<'a, T: AsRef<[u8]> + ?Sized> Parseable<NlaBuffer<&'a T>> for Options {
4747
let nla = NlaBuffer::new_checked(buf.value())
4848
.context("failed to parse encap options")?;
4949
Ok(Options(OptionList::parse(&nla)?))
50-
},
51-
_ => Err(DecodeError::from("expected encapsulation options attribute")),
50+
}
51+
_ => Err(DecodeError::from(
52+
"expected encapsulation options attribute",
53+
)),
5254
}
5355
}
5456
}
@@ -169,7 +171,8 @@ mod tests {
169171
let mut buffer = vec![0; example.buffer_len()];
170172
example.emit(&mut buffer);
171173
let parsed =
172-
OptionList::parse(&NlaBuffer::new_checked(&buffer).unwrap()).unwrap();
174+
OptionList::parse(&NlaBuffer::new_checked(&buffer).unwrap())
175+
.unwrap();
173176
assert_eq!(example, parsed);
174177
}
175178

@@ -183,42 +186,46 @@ mod tests {
183186
let mut buffer = vec![0; example.buffer_len()];
184187
example.emit(&mut buffer);
185188
let parsed =
186-
OptionList::parse(&NlaBuffer::new_checked(&buffer).unwrap()).unwrap();
189+
OptionList::parse(&NlaBuffer::new_checked(&buffer).unwrap())
190+
.unwrap();
187191
assert_eq!(example, parsed);
188192
}
189-
193+
190194
#[test]
191195
fn parse_back_options_vxlan_empty() {
192196
let example = OptionList::Vxlan(vec![]);
193197
let mut buffer = vec![0; example.buffer_len()];
194198
example.emit(&mut buffer);
195199
let parsed =
196-
OptionList::parse(&NlaBuffer::new_checked(&buffer).unwrap()).unwrap();
200+
OptionList::parse(&NlaBuffer::new_checked(&buffer).unwrap())
201+
.unwrap();
197202
assert_eq!(example, parsed);
198203
}
199-
204+
200205
#[test]
201206
fn parse_back_options_vxlan_example() {
202-
let example = OptionList::Vxlan(vec![
203-
vxlan::Options::Gpb(vxlan::Gpb::new(0xabcd)),
204-
]);
207+
let example = OptionList::Vxlan(vec![vxlan::Options::Gpb(
208+
vxlan::Gpb::new(0xabcd),
209+
)]);
205210
let mut buffer = vec![0; example.buffer_len()];
206211
example.emit(&mut buffer);
207212
let parsed =
208-
OptionList::parse(&NlaBuffer::new_checked(&buffer).unwrap()).unwrap();
213+
OptionList::parse(&NlaBuffer::new_checked(&buffer).unwrap())
214+
.unwrap();
209215
assert_eq!(example, parsed);
210216
}
211-
217+
212218
#[test]
213219
fn parse_back_options_erspan_empty() {
214220
let example = OptionList::Erspan(vec![]);
215221
let mut buffer = vec![0; example.buffer_len()];
216222
example.emit(&mut buffer);
217223
let parsed =
218-
OptionList::parse(&NlaBuffer::new_checked(&buffer).unwrap()).unwrap();
224+
OptionList::parse(&NlaBuffer::new_checked(&buffer).unwrap())
225+
.unwrap();
219226
assert_eq!(example, parsed);
220227
}
221-
228+
222229
#[test]
223230
fn parse_back_options_erspan_example() {
224231
let example = OptionList::Erspan(vec![
@@ -229,20 +236,22 @@ mod tests {
229236
let mut buffer = vec![0; example.buffer_len()];
230237
example.emit(&mut buffer);
231238
let parsed =
232-
OptionList::parse(&NlaBuffer::new_checked(&buffer).unwrap()).unwrap();
239+
OptionList::parse(&NlaBuffer::new_checked(&buffer).unwrap())
240+
.unwrap();
233241
assert_eq!(example, parsed);
234242
}
235-
243+
236244
#[test]
237245
fn parse_back_options_gtp_empty() {
238246
let example = OptionList::Gtp(vec![]);
239247
let mut buffer = vec![0; example.buffer_len()];
240248
example.emit(&mut buffer);
241249
let parsed =
242-
OptionList::parse(&NlaBuffer::new_checked(&buffer).unwrap()).unwrap();
250+
OptionList::parse(&NlaBuffer::new_checked(&buffer).unwrap())
251+
.unwrap();
243252
assert_eq!(example, parsed);
244253
}
245-
254+
246255
#[test]
247256
fn parse_back_options_gtp_example() {
248257
let example = OptionList::Gtp(vec![
@@ -252,8 +261,8 @@ mod tests {
252261
let mut buffer = vec![0; example.buffer_len()];
253262
example.emit(&mut buffer);
254263
let parsed =
255-
OptionList::parse(&NlaBuffer::new_checked(&buffer).unwrap()).unwrap();
264+
OptionList::parse(&NlaBuffer::new_checked(&buffer).unwrap())
265+
.unwrap();
256266
assert_eq!(example, parsed);
257267
}
258-
259268
}

src/tc/filters/flower/mpls.rs

Lines changed: 146 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ impl<'a, T: AsRef<[u8]> + ?Sized> Parseable<NlaBuffer<&'a T>> for LseFilter {
149149
NlasIterator::new(payload)
150150
.map(|nla| LseOptions::parse(&nla?))
151151
.collect::<Result<Vec<_>, _>>()
152-
.map(|opts| LseFilter::try_from(opts))?
152+
.map(LseFilter::try_from)?
153153
}
154154
}
155155

@@ -287,3 +287,148 @@ impl From<Vec<LseFilter>> for Options {
287287
Self::Lses(value)
288288
}
289289
}
290+
291+
#[cfg(test)]
292+
mod tests {
293+
use super::*;
294+
295+
#[test]
296+
fn parse_back_lse_options_depth_zero() {
297+
let example = LseOptions::Depth(0);
298+
let mut buffer = vec![0; example.buffer_len()];
299+
example.emit(&mut buffer);
300+
let parsed =
301+
LseOptions::parse(&NlaBuffer::new_checked(&buffer).unwrap())
302+
.unwrap();
303+
assert_eq!(example, parsed);
304+
}
305+
306+
#[test]
307+
fn parse_back_lse_options_depth_example() {
308+
let example = LseOptions::Depth(0xab);
309+
let mut buffer = vec![0; example.buffer_len()];
310+
example.emit(&mut buffer);
311+
let parsed =
312+
LseOptions::parse(&NlaBuffer::new_checked(&buffer).unwrap())
313+
.unwrap();
314+
assert_eq!(example, parsed);
315+
}
316+
317+
#[test]
318+
fn parse_back_lse_options_label_zero() {
319+
let example = LseOptions::Label(mpls::Label::new(0).unwrap());
320+
let mut buffer = vec![0; example.buffer_len()];
321+
example.emit(&mut buffer);
322+
let parsed =
323+
LseOptions::parse(&NlaBuffer::new_checked(&buffer).unwrap())
324+
.unwrap();
325+
assert_eq!(example, parsed);
326+
}
327+
328+
#[test]
329+
fn parse_back_lse_options_label_example() {
330+
let example = LseOptions::Label(mpls::Label::new(0x12345).unwrap());
331+
let mut buffer = vec![0; example.buffer_len()];
332+
example.emit(&mut buffer);
333+
let parsed =
334+
LseOptions::parse(&NlaBuffer::new_checked(&buffer).unwrap())
335+
.unwrap();
336+
assert_eq!(example, parsed);
337+
}
338+
339+
#[test]
340+
fn parse_back_lse_options_tc_zero() {
341+
let example =
342+
LseOptions::TrafficClass(mpls::TrafficClass::new(0).unwrap());
343+
let mut buffer = vec![0; example.buffer_len()];
344+
example.emit(&mut buffer);
345+
let parsed =
346+
LseOptions::parse(&NlaBuffer::new_checked(&buffer).unwrap())
347+
.unwrap();
348+
assert_eq!(example, parsed);
349+
}
350+
351+
#[test]
352+
fn parse_back_lse_options_tc_example() {
353+
let example =
354+
LseOptions::TrafficClass(mpls::TrafficClass::new(0x3).unwrap());
355+
let mut buffer = vec![0; example.buffer_len()];
356+
example.emit(&mut buffer);
357+
let parsed =
358+
LseOptions::parse(&NlaBuffer::new_checked(&buffer).unwrap())
359+
.unwrap();
360+
assert_eq!(example, parsed);
361+
}
362+
363+
#[test]
364+
fn parse_back_lse_options_bos_unset() {
365+
let example = LseOptions::BottomOfStack(mpls::BottomOfStack::Unset);
366+
let mut buffer = vec![0; example.buffer_len()];
367+
example.emit(&mut buffer);
368+
let parsed =
369+
LseOptions::parse(&NlaBuffer::new_checked(&buffer).unwrap())
370+
.unwrap();
371+
assert_eq!(example, parsed);
372+
}
373+
374+
#[test]
375+
fn parse_back_lse_options_bos_set() {
376+
let example = LseOptions::BottomOfStack(mpls::BottomOfStack::Set);
377+
let mut buffer = vec![0; example.buffer_len()];
378+
example.emit(&mut buffer);
379+
let parsed =
380+
LseOptions::parse(&NlaBuffer::new_checked(&buffer).unwrap())
381+
.unwrap();
382+
assert_eq!(example, parsed);
383+
}
384+
385+
#[test]
386+
fn parse_back_lse_options_ttl_zero() {
387+
let example = LseOptions::Ttl(0);
388+
let mut buffer = vec![0; example.buffer_len()];
389+
example.emit(&mut buffer);
390+
let parsed =
391+
LseOptions::parse(&NlaBuffer::new_checked(&buffer).unwrap())
392+
.unwrap();
393+
assert_eq!(example, parsed);
394+
}
395+
396+
#[test]
397+
fn parse_back_lse_options_ttl_example() {
398+
let example = LseOptions::Ttl(0x34);
399+
let mut buffer = vec![0; example.buffer_len()];
400+
example.emit(&mut buffer);
401+
let parsed =
402+
LseOptions::parse(&NlaBuffer::new_checked(&buffer).unwrap())
403+
.unwrap();
404+
assert_eq!(example, parsed);
405+
}
406+
407+
#[test]
408+
fn parse_back_lse_filter_default() {
409+
let example = LseFilter::default();
410+
let mut buffer = vec![0; example.buffer_len()];
411+
example.emit(&mut buffer);
412+
let parsed =
413+
LseFilter::parse(&NlaBuffer::new_checked(&buffer).unwrap())
414+
.unwrap();
415+
assert_eq!(example, parsed);
416+
}
417+
418+
#[test]
419+
fn parse_back_lse_filter_example() {
420+
let example = LseFilter {
421+
depth: 1,
422+
label: Some(mpls::Label::new(0x12345).unwrap()),
423+
traffic_class: Some(mpls::TrafficClass::new(0x3).unwrap()),
424+
bottom_of_stack: Some(mpls::BottomOfStack::Set),
425+
ttl: Some(0x34),
426+
};
427+
let mut buffer = vec![0; example.buffer_len()];
428+
example.emit(&mut buffer);
429+
let parsed =
430+
LseFilter::parse(&NlaBuffer::new_checked(&buffer).unwrap())
431+
.unwrap();
432+
assert_eq!(example, parsed);
433+
}
434+
}

0 commit comments

Comments
 (0)