Skip to content

Commit e6bcf3e

Browse files
Erich Heinecathay4t
Erich Heine
authored andcommitted
Remove asserts that block re-assignment. Re: #16
The asserts removed in this commit all follow the pattern: assert_eq!(some_struct.member, DEFAULT_VAL); These asserts seem to only exist for preventing re-assignment of struct values if they have already been assigned. This doesn't match what the builder pattern usually does in rust. Rather than implementing an error for this case, and giving these methods the signature: fn setter(self, val) -> Resutl<Self, Error::ReAssignment> I removed the asserts to retain the standard builder pattern signature: fn setter(self, val) -> Self Signed-off-by: Erich Heine <[email protected]>
1 parent 697fe74 commit e6bcf3e

File tree

3 files changed

+3
-19
lines changed

3 files changed

+3
-19
lines changed

src/traffic_control/add_filter.rs

+1-10
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ use netlink_packet_route::{
88
constants::{
99
TCA_ACT_TAB, TCA_EGRESS_REDIR, TC_ACT_STOLEN, TC_H_CLSACT,
1010
TC_H_MAJ_MASK, TC_H_MIN_EGRESS, TC_H_MIN_INGRESS, TC_H_MIN_MASK,
11-
TC_H_ROOT, TC_H_UNSPEC, TC_U32_TERMINAL,
11+
TC_H_ROOT, TC_U32_TERMINAL,
1212
},
1313
},
1414
RtnlMessage, TcMessage, TCM_IFINDEX_MAGIC_BLOCK, TC_H_MAKE,
@@ -53,15 +53,13 @@ impl TrafficFilterNewRequest {
5353
/// Set interface index.
5454
/// Equivalent to `dev STRING`, dev and block are mutually exlusive.
5555
pub fn index(mut self, index: i32) -> Self {
56-
assert_eq!(self.message.header.index, 0);
5756
self.message.header.index = index;
5857
self
5958
}
6059

6160
/// Set block index.
6261
/// Equivalent to `block BLOCK_INDEX`.
6362
pub fn block(mut self, block_index: u32) -> Self {
64-
assert_eq!(self.message.header.index, 0);
6563
self.message.header.index = TCM_IFINDEX_MAGIC_BLOCK as i32;
6664
self.message.header.parent = block_index;
6765
self
@@ -71,36 +69,31 @@ impl TrafficFilterNewRequest {
7169
/// Equivalent to `[ root | ingress | egress | parent CLASSID ]`
7270
/// command args. They are mutually exlusive.
7371
pub fn parent(mut self, parent: u32) -> Self {
74-
assert_eq!(self.message.header.parent, TC_H_UNSPEC);
7572
self.message.header.parent = parent;
7673
self
7774
}
7875

7976
/// Set parent to root.
8077
pub fn root(mut self) -> Self {
81-
assert_eq!(self.message.header.parent, TC_H_UNSPEC);
8278
self.message.header.parent = TC_H_ROOT;
8379
self
8480
}
8581

8682
/// Set parent to ingress.
8783
pub fn ingress(mut self) -> Self {
88-
assert_eq!(self.message.header.parent, TC_H_UNSPEC);
8984
self.message.header.parent = TC_H_MAKE!(TC_H_CLSACT, TC_H_MIN_INGRESS);
9085
self
9186
}
9287

9388
/// Set parent to egress.
9489
pub fn egress(mut self) -> Self {
95-
assert_eq!(self.message.header.parent, TC_H_UNSPEC);
9690
self.message.header.parent = TC_H_MAKE!(TC_H_CLSACT, TC_H_MIN_EGRESS);
9791
self
9892
}
9993

10094
/// Set priority.
10195
/// Equivalent to `priority PRIO` or `pref PRIO`.
10296
pub fn priority(mut self, priority: u16) -> Self {
103-
assert_eq!(self.message.header.info & TC_H_MAJ_MASK, 0);
10497
self.message.header.info =
10598
TC_H_MAKE!((priority as u32) << 16, self.message.header.info);
10699
self
@@ -110,7 +103,6 @@ impl TrafficFilterNewRequest {
110103
/// Equivalent to `protocol PROT`.
111104
/// Default: ETH_P_ALL 0x0003, see llproto_names at iproute2/lib/ll_proto.c.
112105
pub fn protocol(mut self, protocol: u16) -> Self {
113-
assert_eq!(self.message.header.info & TC_H_MIN_MASK, 0);
114106
self.message.header.info =
115107
TC_H_MAKE!(self.message.header.info, protocol as u32);
116108
self
@@ -139,7 +131,6 @@ impl TrafficFilterNewRequest {
139131
/// 0 action mirred egress redirect dev dest` You need to set the
140132
/// `parent` and `protocol` before call redirect.
141133
pub fn redirect(self, dst_index: u32) -> Self {
142-
assert_eq!(self.message.nlas.len(), 0);
143134
let mut sel_na = tc::u32::Sel::default();
144135
sel_na.flags = TC_U32_TERMINAL;
145136
sel_na.nkeys = 1;

src/traffic_control/add_qdisc.rs

+1-6
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,7 @@
33
use futures::stream::StreamExt;
44
use netlink_packet_core::{NetlinkMessage, NLM_F_ACK, NLM_F_REQUEST};
55
use netlink_packet_route::{
6-
tc::constants::{
7-
TC_H_INGRESS, TC_H_MAJ_MASK, TC_H_MIN_MASK, TC_H_ROOT, TC_H_UNSPEC,
8-
},
6+
tc::constants::{TC_H_INGRESS, TC_H_MAJ_MASK, TC_H_MIN_MASK, TC_H_ROOT},
97
tc::nlas::Nla,
108
RtnlMessage, TcMessage, TC_H_MAKE,
119
};
@@ -54,21 +52,18 @@ impl QDiscNewRequest {
5452

5553
/// Set parent to root.
5654
pub fn root(mut self) -> Self {
57-
assert_eq!(self.message.header.parent, TC_H_UNSPEC);
5855
self.message.header.parent = TC_H_ROOT;
5956
self
6057
}
6158

6259
/// Set parent
6360
pub fn parent(mut self, parent: u32) -> Self {
64-
assert_eq!(self.message.header.parent, TC_H_UNSPEC);
6561
self.message.header.parent = parent;
6662
self
6763
}
6864

6965
/// New a ingress qdisc
7066
pub fn ingress(mut self) -> Self {
71-
assert_eq!(self.message.header.parent, TC_H_UNSPEC);
7267
self.message.header.parent = TC_H_INGRESS;
7368
self.message.header.handle = 0xffff0000;
7469
self.message.nlas.push(Nla::Kind("ingress".to_string()));

src/traffic_control/get.rs

+1-3
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ use futures::{
77
};
88
use netlink_packet_core::{NetlinkMessage, NLM_F_DUMP, NLM_F_REQUEST};
99
use netlink_packet_route::{
10-
tc::constants::{TC_H_INGRESS, TC_H_ROOT, TC_H_UNSPEC},
10+
tc::constants::{TC_H_INGRESS, TC_H_ROOT},
1111
RtnlMessage, TcMessage,
1212
};
1313

@@ -54,7 +54,6 @@ impl QDiscGetRequest {
5454

5555
/// Get ingress qdisc
5656
pub fn ingress(mut self) -> Self {
57-
assert_eq!(self.message.header.parent, TC_H_UNSPEC);
5857
self.message.header.parent = TC_H_INGRESS;
5958
self
6059
}
@@ -129,7 +128,6 @@ impl TrafficFilterGetRequest {
129128

130129
/// Set parent to root.
131130
pub fn root(mut self) -> Self {
132-
assert_eq!(self.message.header.parent, TC_H_UNSPEC);
133131
self.message.header.parent = TC_H_ROOT;
134132
self
135133
}

0 commit comments

Comments
 (0)