@@ -7,79 +7,93 @@ use netlink_packet_utils::{
7
7
} ;
8
8
9
9
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 ,
13
15
} ;
14
16
15
17
#[ derive( Debug , PartialEq , Eq , Clone ) ]
16
18
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 ) ,
29
34
Other ( DefaultNla ) ,
30
35
}
31
36
32
37
impl Nla for StatNla {
33
38
fn value_len ( & self ) -> usize {
34
39
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 ,
47
55
StatNla :: Other ( nla) => nla. value_len ( ) ,
48
56
}
49
57
}
50
58
51
59
fn kind ( & self ) -> u16 {
52
60
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 ,
65
76
StatNla :: Other ( nla) => nla. kind ( ) ,
66
77
}
67
78
}
68
79
69
80
fn emit_value ( & self , buffer : & mut [ u8 ] ) {
70
81
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) ,
83
97
StatNla :: Other ( attr) => attr. emit_value ( buffer) ,
84
98
}
85
99
}
@@ -94,27 +108,34 @@ impl<'buffer, T: AsRef<[u8]> + ?Sized> Parseable<NlaBuffer<&'buffer T>>
94
108
let kind = buf. kind ( ) ;
95
109
let payload = buf. value ( ) ;
96
110
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) )
101
113
}
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) )
105
121
}
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) )
108
125
}
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) )
115
129
}
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) )
118
139
}
119
140
_ => StatNla :: Other ( DefaultNla :: parse ( buf) ?) ,
120
141
} ;
0 commit comments