Skip to content

Commit 2cb429b

Browse files
committed
fix StatNla variants
Signed-off-by: terassyi <[email protected]>
1 parent 386a809 commit 2cb429b

File tree

2 files changed

+105
-84
lines changed

2 files changed

+105
-84
lines changed

src/constants.rs

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -236,22 +236,22 @@ pub const CTA_EXPECT_NAT_TUPLE: u8 = 2;
236236
pub const CTA_SECCTX_UNSPEC: u8 = 0;
237237
pub const CTA_SECCTX_NAME: u8 = 1;
238238

239-
pub const CTA_STATS_UNSPEC: u8 = 0;
240-
pub const CTA_STATS_SEARCHED: u8 = 1; /* no longer used */
241-
pub const CTA_STATS_FOUND: u8 = 2;
242-
pub const CTA_STATS_NEW: u8 = 3; /* no longer used */
243-
pub const CTA_STATS_INVALID: u8 = 4;
244-
pub const CTA_STATS_IGNORE: u8 = 5; /* no longer used */
245-
pub const CTA_STATS_DELETE: u8 = 6; /* no longer used */
246-
pub const CTA_STATS_DELETE_LIST: u8 = 7; /* no longer used */
247-
pub const CTA_STATS_INSERT: u8 = 8;
248-
pub const CTA_STATS_INSERT_FAILED: u8 = 9;
249-
pub const CTA_STATS_DROP: u8 = 10;
250-
pub const CTA_STATS_EARLY_DROP: u8 = 10;
251-
pub const CTA_STATS_ERROR: u8 = 11;
252-
pub const CTA_STATS_SEARCH_RESTART: u8 = 12;
253-
pub const CTA_STATS_CLASH_RESOLVE: u8 = 13;
254-
pub const CTA_STATS_CHAIN_TOOLONG: u8 = 14;
239+
pub const CTA_STATS_UNSPEC: u16 = 0;
240+
pub const CTA_STATS_SEARCHED: u16 = 1; /* no longer used */
241+
pub const CTA_STATS_FOUND: u16 = 2;
242+
pub const CTA_STATS_NEW: u16 = 3; /* no longer used */
243+
pub const CTA_STATS_INVALID: u16 = 4;
244+
pub const CTA_STATS_IGNORE: u16 = 5; /* no longer used */
245+
pub const CTA_STATS_DELETE: u16 = 6; /* no longer used */
246+
pub const CTA_STATS_DELETE_LIST: u16 = 7; /* no longer used */
247+
pub const CTA_STATS_INSERT: u16 = 8;
248+
pub const CTA_STATS_INSERT_FAILED: u16 = 9;
249+
pub const CTA_STATS_DROP: u16 = 10;
250+
pub const CTA_STATS_EARLY_DROP: u16 = 11;
251+
pub const CTA_STATS_ERROR: u16 = 12;
252+
pub const CTA_STATS_SEARCH_RESTART: u16 = 13;
253+
pub const CTA_STATS_CLASH_RESOLVE: u16 = 14;
254+
pub const CTA_STATS_CHAIN_TOOLONG: u16 = 15;
255255

256256
pub const CTA_STATS_GLOBAL_UNSPEC: u8 = 0;
257257
pub const CTA_STATS_GLOBAL_ENTRIES: u8 = 1;

src/ctnetlink/nlas/stat/nla.rs

Lines changed: 89 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -7,79 +7,93 @@ use netlink_packet_utils::{
77
};
88

99
use crate::constants::{
10-
CTA_COUNTERS_ORIG, CTA_COUNTERS_REPLY, CTA_ID, CTA_MARK, CTA_NAT_DST,
11-
CTA_PROTOINFO, CTA_SEQ_ADJ_ORIG, CTA_SEQ_ADJ_REPLY, CTA_TUPLE_MASTER,
12-
CTA_TUPLE_ORIG, CTA_TUPLE_REPLY, CTA_USE,
10+
CTA_STATS_CHAIN_TOOLONG, CTA_STATS_CLASH_RESOLVE, CTA_STATS_DELETE,
11+
CTA_STATS_DELETE_LIST, CTA_STATS_DROP, CTA_STATS_EARLY_DROP,
12+
CTA_STATS_ERROR, CTA_STATS_FOUND, CTA_STATS_IGNORE, CTA_STATS_INSERT,
13+
CTA_STATS_INSERT_FAILED, CTA_STATS_INVALID, CTA_STATS_NEW,
14+
CTA_STATS_SEARCHED, CTA_STATS_SEARCH_RESTART,
1315
};
1416

1517
#[derive(Debug, PartialEq, Eq, Clone)]
1618
pub enum StatNla {
17-
Orig(u32),
18-
Reply(u32),
19-
ProtocolInfo(u32),
20-
Mark(u32),
21-
CountersOrig(u32),
22-
CountersReply(u32),
23-
Use(u32),
24-
Id(u32),
25-
NATDst(u32),
26-
Master(u32),
27-
SeqAdjOrig(u32),
28-
SeqAdjReply(u32),
19+
Searched(u32), // no longer used
20+
Found(u32),
21+
New(u32), // no longer used
22+
Invalid(u32),
23+
Ignore(u32), // no longer used
24+
Delete(u32), // no longer used
25+
DeleteList(u32), // no longer used
26+
Insert(u32),
27+
InsertFailed(u32),
28+
Drop(u32),
29+
EarlyDrop(u32),
30+
Error(u32),
31+
SearchRestart(u32),
32+
ClashResolve(u32),
33+
ChainTooLong(u32),
2934
Other(DefaultNla),
3035
}
3136

3237
impl Nla for StatNla {
3338
fn value_len(&self) -> usize {
3439
match self {
35-
StatNla::Orig(_) => 4,
36-
StatNla::Reply(_) => 4,
37-
StatNla::ProtocolInfo(_) => 4,
38-
StatNla::Mark(_) => 4,
39-
StatNla::CountersOrig(_) => 4,
40-
StatNla::CountersReply(_) => 4,
41-
StatNla::Use(_) => 4,
42-
StatNla::Id(_) => 4,
43-
StatNla::NATDst(_) => 4,
44-
StatNla::Master(_) => 4,
45-
StatNla::SeqAdjOrig(_) => 4,
46-
StatNla::SeqAdjReply(_) => 4,
40+
StatNla::Searched(_) => 4,
41+
StatNla::Found(_) => 4,
42+
StatNla::New(_) => 4,
43+
StatNla::Invalid(_) => 4,
44+
StatNla::Ignore(_) => 4,
45+
StatNla::Delete(_) => 4,
46+
StatNla::DeleteList(_) => 4,
47+
StatNla::Insert(_) => 4,
48+
StatNla::InsertFailed(_) => 4,
49+
StatNla::Drop(_) => 4,
50+
StatNla::EarlyDrop(_) => 4,
51+
StatNla::Error(_) => 4,
52+
StatNla::SearchRestart(_) => 4,
53+
StatNla::ClashResolve(_) => 4,
54+
StatNla::ChainTooLong(_) => 4,
4755
StatNla::Other(nla) => nla.value_len(),
4856
}
4957
}
5058

5159
fn kind(&self) -> u16 {
5260
match self {
53-
StatNla::Orig(_) => CTA_TUPLE_ORIG,
54-
StatNla::Reply(_) => CTA_TUPLE_REPLY,
55-
StatNla::ProtocolInfo(_) => CTA_PROTOINFO,
56-
StatNla::Mark(_) => CTA_MARK,
57-
StatNla::CountersOrig(_) => CTA_COUNTERS_ORIG,
58-
StatNla::CountersReply(_) => CTA_COUNTERS_REPLY,
59-
StatNla::Use(_) => CTA_USE,
60-
StatNla::Id(_) => CTA_ID,
61-
StatNla::NATDst(_) => CTA_NAT_DST,
62-
StatNla::Master(_) => CTA_TUPLE_MASTER,
63-
StatNla::SeqAdjOrig(_) => CTA_SEQ_ADJ_ORIG,
64-
StatNla::SeqAdjReply(_) => CTA_SEQ_ADJ_REPLY,
61+
StatNla::Searched(_) => CTA_STATS_SEARCHED,
62+
StatNla::Found(_) => CTA_STATS_FOUND,
63+
StatNla::New(_) => CTA_STATS_NEW,
64+
StatNla::Invalid(_) => CTA_STATS_INVALID,
65+
StatNla::Ignore(_) => CTA_STATS_IGNORE,
66+
StatNla::Delete(_) => CTA_STATS_DELETE,
67+
StatNla::DeleteList(_) => CTA_STATS_DELETE_LIST,
68+
StatNla::Insert(_) => CTA_STATS_INSERT,
69+
StatNla::InsertFailed(_) => CTA_STATS_INSERT_FAILED,
70+
StatNla::Drop(_) => CTA_STATS_DROP,
71+
StatNla::EarlyDrop(_) => CTA_STATS_EARLY_DROP,
72+
StatNla::Error(_) => CTA_STATS_ERROR,
73+
StatNla::SearchRestart(_) => CTA_STATS_SEARCH_RESTART,
74+
StatNla::ClashResolve(_) => CTA_STATS_CLASH_RESOLVE,
75+
StatNla::ChainTooLong(_) => CTA_STATS_CHAIN_TOOLONG,
6576
StatNla::Other(nla) => nla.kind(),
6677
}
6778
}
6879

6980
fn emit_value(&self, buffer: &mut [u8]) {
7081
match self {
71-
StatNla::Orig(val) => BigEndian::write_u32(buffer, *val),
72-
StatNla::Reply(val) => BigEndian::write_u32(buffer, *val),
73-
StatNla::ProtocolInfo(val) => BigEndian::write_u32(buffer, *val),
74-
StatNla::Mark(val) => BigEndian::write_u32(buffer, *val),
75-
StatNla::CountersOrig(val) => BigEndian::write_u32(buffer, *val),
76-
StatNla::CountersReply(val) => BigEndian::write_u32(buffer, *val),
77-
StatNla::Use(val) => BigEndian::write_u32(buffer, *val),
78-
StatNla::Id(val) => BigEndian::write_u32(buffer, *val),
79-
StatNla::NATDst(val) => BigEndian::write_u32(buffer, *val),
80-
StatNla::Master(val) => BigEndian::write_u32(buffer, *val),
81-
StatNla::SeqAdjOrig(val) => BigEndian::write_u32(buffer, *val),
82-
StatNla::SeqAdjReply(val) => BigEndian::write_u32(buffer, *val),
82+
StatNla::Searched(val) => BigEndian::write_u32(buffer, *val),
83+
StatNla::Found(val) => BigEndian::write_u32(buffer, *val),
84+
StatNla::New(val) => BigEndian::write_u32(buffer, *val),
85+
StatNla::Invalid(val) => BigEndian::write_u32(buffer, *val),
86+
StatNla::Ignore(val) => BigEndian::write_u32(buffer, *val),
87+
StatNla::Delete(val) => BigEndian::write_u32(buffer, *val),
88+
StatNla::DeleteList(val) => BigEndian::write_u32(buffer, *val),
89+
StatNla::Insert(val) => BigEndian::write_u32(buffer, *val),
90+
StatNla::InsertFailed(val) => BigEndian::write_u32(buffer, *val),
91+
StatNla::Drop(val) => BigEndian::write_u32(buffer, *val),
92+
StatNla::EarlyDrop(val) => BigEndian::write_u32(buffer, *val),
93+
StatNla::Error(val) => BigEndian::write_u32(buffer, *val),
94+
StatNla::SearchRestart(val) => BigEndian::write_u32(buffer, *val),
95+
StatNla::ClashResolve(val) => BigEndian::write_u32(buffer, *val),
96+
StatNla::ChainTooLong(val) => BigEndian::write_u32(buffer, *val),
8397
StatNla::Other(attr) => attr.emit_value(buffer),
8498
}
8599
}
@@ -94,27 +108,34 @@ impl<'buffer, T: AsRef<[u8]> + ?Sized> Parseable<NlaBuffer<&'buffer T>>
94108
let kind = buf.kind();
95109
let payload = buf.value();
96110
let nla = match kind {
97-
CTA_TUPLE_ORIG => StatNla::Orig(BigEndian::read_u32(payload)),
98-
CTA_TUPLE_REPLY => StatNla::Reply(BigEndian::read_u32(payload)),
99-
CTA_PROTOINFO => {
100-
StatNla::ProtocolInfo(BigEndian::read_u32(payload))
111+
CTA_STATS_SEARCHED => {
112+
StatNla::Searched(BigEndian::read_u32(payload))
101113
}
102-
CTA_MARK => StatNla::Mark(BigEndian::read_u32(payload)),
103-
CTA_COUNTERS_ORIG => {
104-
StatNla::CountersOrig(BigEndian::read_u32(payload))
114+
CTA_STATS_FOUND => StatNla::Found(BigEndian::read_u32(payload)),
115+
CTA_STATS_NEW => StatNla::New(BigEndian::read_u32(payload)),
116+
CTA_STATS_INVALID => StatNla::Invalid(BigEndian::read_u32(payload)),
117+
CTA_STATS_IGNORE => StatNla::Ignore(BigEndian::read_u32(payload)),
118+
CTA_STATS_DELETE => StatNla::Delete(BigEndian::read_u32(payload)),
119+
CTA_STATS_DELETE_LIST => {
120+
StatNla::DeleteList(BigEndian::read_u32(payload))
105121
}
106-
CTA_COUNTERS_REPLY => {
107-
StatNla::CountersReply(BigEndian::read_u32(payload))
122+
CTA_STATS_INSERT => StatNla::Insert(BigEndian::read_u32(payload)),
123+
CTA_STATS_INSERT_FAILED => {
124+
StatNla::InsertFailed(BigEndian::read_u32(payload))
108125
}
109-
CTA_USE => StatNla::Use(BigEndian::read_u32(payload)),
110-
CTA_ID => StatNla::Id(BigEndian::read_u32(payload)),
111-
CTA_NAT_DST => StatNla::NATDst(BigEndian::read_u32(payload)),
112-
CTA_TUPLE_MASTER => StatNla::Master(BigEndian::read_u32(payload)),
113-
CTA_SEQ_ADJ_ORIG => {
114-
StatNla::SeqAdjOrig(BigEndian::read_u32(payload))
126+
CTA_STATS_DROP => StatNla::Drop(BigEndian::read_u32(payload)),
127+
CTA_STATS_EARLY_DROP => {
128+
StatNla::EarlyDrop(BigEndian::read_u32(payload))
115129
}
116-
CTA_SEQ_ADJ_REPLY => {
117-
StatNla::SeqAdjReply(BigEndian::read_u32(payload))
130+
CTA_STATS_ERROR => StatNla::Error(BigEndian::read_u32(payload)),
131+
CTA_STATS_SEARCH_RESTART => {
132+
StatNla::SearchRestart(BigEndian::read_u32(payload))
133+
}
134+
CTA_STATS_CLASH_RESOLVE => {
135+
StatNla::ClashResolve(BigEndian::read_u32(payload))
136+
}
137+
CTA_STATS_CHAIN_TOOLONG => {
138+
StatNla::ChainTooLong(BigEndian::read_u32(payload))
118139
}
119140
_ => StatNla::Other(DefaultNla::parse(buf)?),
120141
};

0 commit comments

Comments
 (0)