netlink_packet_route/tc/
error.rs

1// SPDX-License-Identifier: MIT
2
3use netlink_packet_utils::nla::NlaError;
4use netlink_packet_utils::DecodeError;
5use thiserror::Error;
6
7#[derive(Debug, Error)]
8pub enum TcError {
9    #[error("Invalid {kind}")]
10    InvalidValue {
11        kind: &'static str,
12        #[source]
13        error: DecodeError,
14    },
15
16    #[error("failed to parse {kind} TCA_OPTIONS attributes")]
17    ParseTcaOptionAttributes {
18        kind: &'static str,
19        #[source]
20        error: DecodeError,
21    },
22
23    #[error("failed to parse {kind}")]
24    ParseFilterMatchallOption {
25        kind: &'static str,
26        #[source]
27        error: DecodeError,
28    },
29
30    #[error("failed to parse {kind}")]
31    ParseAction {
32        kind: &'static str,
33        #[source]
34        error: DecodeError,
35    },
36
37    #[error("failed to parse TCA_ACT_OPTIONS for kind {kind}")]
38    ParseActOptions {
39        kind: String,
40        #[source]
41        error: DecodeError,
42    },
43
44    #[error("failed to parse mirror action")]
45    ParseMirrorAction(#[source] DecodeError),
46
47    #[error("Unknown matchall option: {kind}")]
48    UnknownFilterMatchAllOption {
49        kind: String,
50        #[source]
51        error: DecodeError,
52    },
53
54    #[error("Unknown NLA type: {kind}")]
55    UnknownNla {
56        kind: u16,
57        #[source]
58        error: DecodeError,
59    },
60
61    #[error("Unknown TC_OPTIONS: {kind}")]
62    UnknownOption {
63        kind: String,
64        #[source]
65        error: DecodeError,
66    },
67
68    #[error(transparent)]
69    ParseNla(#[from] NlaError),
70
71    #[error("failed to parse TCA_STATS2 for kind {kind}")]
72    ParseTcaStats2 {
73        kind: String,
74        #[source]
75        error: DecodeError,
76    },
77
78    #[error("Invalid u32 key")]
79    InvalidU32Key(#[source] DecodeError),
80
81    #[error("Invalid TcFqCodelXstats length: {0}")]
82    InvalidXstatsLength(usize),
83}