diff --git a/holo-bgp/src/events.rs b/holo-bgp/src/events.rs
index e42514cd..64dcace6 100644
--- a/holo-bgp/src/events.rs
+++ b/holo-bgp/src/events.rs
@@ -166,7 +166,7 @@ fn process_nbr_update(
rib,
reach.prefixes.clone(),
attrs,
- &instance.shared,
+ instance.shared,
&instance.state.policy_apply_tasks,
);
} else {
@@ -192,7 +192,7 @@ fn process_nbr_update(
rib,
prefixes,
attrs,
- &instance.shared,
+ instance.shared,
&instance.state.policy_apply_tasks,
);
}
@@ -208,7 +208,7 @@ fn process_nbr_update(
rib,
prefixes,
attrs,
- &instance.shared,
+ instance.shared,
&instance.state.policy_apply_tasks,
);
}
@@ -248,7 +248,7 @@ fn process_nbr_update(
}
// Schedule the BGP Decision Process.
- instance.state.schedule_decision_process(&instance.tx);
+ instance.state.schedule_decision_process(instance.tx);
Ok(())
}
@@ -467,7 +467,7 @@ where
}
// Schedule the BGP Decision Process.
- instance.state.schedule_decision_process(&instance.tx);
+ instance.state.schedule_decision_process(instance.tx);
Ok(())
}
@@ -634,7 +634,7 @@ where
nbr,
table,
&reach,
- &instance.shared,
+ instance.shared,
&instance.state.policy_apply_tasks,
);
}
@@ -652,7 +652,7 @@ fn withdraw_routes(
{
// Update Adj-RIB-Out.
for prefix in routes {
- let dest = table.prefixes.get_mut(&prefix).unwrap();
+ let dest = table.prefixes.get_mut(prefix).unwrap();
dest.adj_out_pre.remove(&nbr.remote_addr);
if dest.adj_out_post.remove(&nbr.remote_addr).is_some() {
let update_queue = A::update_queue(&mut nbr.update_queues);
@@ -682,12 +682,11 @@ pub(crate) fn advertise_routes(
// peer, the receiving BGP speaker SHALL NOT re-distribute the
// routing information contained in that UPDATE message to other
// internal peers".
- if route.route_type == RouteType::Internal {
- if let RouteOrigin::Neighbor { remote_addr, .. } = &route.origin
- && *remote_addr == nbr.remote_addr
- {
- return false;
- }
+ if route.route_type == RouteType::Internal
+ && let RouteOrigin::Neighbor { remote_addr, .. } = &route.origin
+ && *remote_addr == nbr.remote_addr
+ {
+ return false;
}
true
@@ -695,7 +694,7 @@ pub(crate) fn advertise_routes(
// Update pre-policy Adj-RIB-Out routes.
for (prefix, route) in routes.clone() {
- let dest = table.prefixes.get_mut(&prefix).unwrap();
+ let dest = table.prefixes.get_mut(prefix).unwrap();
dest.adj_out_pre.insert(nbr.remote_addr, route.clone());
}
diff --git a/holo-bgp/src/neighbor.rs b/holo-bgp/src/neighbor.rs
index 5acfbe24..0157a743 100644
--- a/holo-bgp/src/neighbor.rs
+++ b/holo-bgp/src/neighbor.rs
@@ -242,7 +242,7 @@ impl Neighbor {
fsm::State::Connect => match event {
fsm::Event::Start => None,
fsm::Event::Stop(_) => {
- self.session_close(rib, &instance.tx, None);
+ self.session_close(rib, instance.tx, None);
Some(fsm::State::Idle)
}
fsm::Event::Connected(stream, conn_info) => {
@@ -262,12 +262,12 @@ impl Neighbor {
Some(fsm::State::OpenSent)
}
fsm::Event::ConnFail => {
- self.session_close(rib, &instance.tx, None);
+ self.session_close(rib, instance.tx, None);
Some(fsm::State::Idle)
}
fsm::Event::RcvdError(error) => {
let msg = NotificationMsg::from(error);
- self.session_close(rib, &instance.tx, Some(msg));
+ self.session_close(rib, instance.tx, Some(msg));
Some(fsm::State::Idle)
}
fsm::Event::Timer(fsm::Timer::ConnectRetry) => {
@@ -279,7 +279,7 @@ impl Neighbor {
}
_ => {
// FSM error.
- self.session_close(rib, &instance.tx, None);
+ self.session_close(rib, instance.tx, None);
Some(fsm::State::Idle)
}
},
@@ -287,7 +287,7 @@ impl Neighbor {
fsm::State::Active => match event {
fsm::Event::Start => None,
fsm::Event::Stop(_) => {
- self.session_close(rib, &instance.tx, None);
+ self.session_close(rib, instance.tx, None);
Some(fsm::State::Idle)
}
fsm::Event::Connected(stream, conn_info) => {
@@ -307,12 +307,12 @@ impl Neighbor {
Some(fsm::State::OpenSent)
}
fsm::Event::ConnFail => {
- self.session_close(rib, &instance.tx, None);
+ self.session_close(rib, instance.tx, None);
Some(fsm::State::Idle)
}
fsm::Event::RcvdError(error) => {
let msg = NotificationMsg::from(error);
- self.session_close(rib, &instance.tx, Some(msg));
+ self.session_close(rib, instance.tx, Some(msg));
Some(fsm::State::Idle)
}
fsm::Event::Timer(fsm::Timer::ConnectRetry) => {
@@ -324,7 +324,7 @@ impl Neighbor {
}
_ => {
// FSM error.
- self.session_close(rib, &instance.tx, None);
+ self.session_close(rib, instance.tx, None);
Some(fsm::State::Idle)
}
},
@@ -332,11 +332,11 @@ impl Neighbor {
fsm::State::OpenSent => match event {
fsm::Event::Start => None,
fsm::Event::Stop(msg) => {
- self.session_close(rib, &instance.tx, msg);
+ self.session_close(rib, instance.tx, msg);
Some(fsm::State::Idle)
}
fsm::Event::ConnFail => {
- self.session_close(rib, &instance.tx, None);
+ self.session_close(rib, instance.tx, None);
self.connect_retry_start(
&instance.tx.protocol_input.nbr_timer,
);
@@ -344,7 +344,7 @@ impl Neighbor {
}
fsm::Event::RcvdError(error) => {
let msg = NotificationMsg::from(error);
- self.session_close(rib, &instance.tx, Some(msg));
+ self.session_close(rib, instance.tx, Some(msg));
Some(fsm::State::Idle)
}
fsm::Event::RcvdOpen(msg) => {
@@ -355,7 +355,7 @@ impl Neighbor {
let error_code = ErrorCode::HoldTimerExpired;
let error_subcode = 0;
let msg = NotificationMsg::new(error_code, error_subcode);
- self.session_close(rib, &instance.tx, Some(msg));
+ self.session_close(rib, instance.tx, Some(msg));
Some(fsm::State::Idle)
}
_ => {
@@ -364,7 +364,7 @@ impl Neighbor {
let error_subcode =
FsmErrorSubcode::UnexpectedMessageInOpenSent;
let msg = NotificationMsg::new(error_code, error_subcode);
- self.session_close(rib, &instance.tx, Some(msg));
+ self.session_close(rib, instance.tx, Some(msg));
Some(fsm::State::Idle)
}
},
@@ -372,16 +372,16 @@ impl Neighbor {
fsm::State::OpenConfirm => match event {
fsm::Event::Start => None,
fsm::Event::Stop(msg) => {
- self.session_close(rib, &instance.tx, msg);
+ self.session_close(rib, instance.tx, msg);
Some(fsm::State::Idle)
}
fsm::Event::ConnFail => {
- self.session_close(rib, &instance.tx, None);
+ self.session_close(rib, instance.tx, None);
Some(fsm::State::Idle)
}
fsm::Event::RcvdError(error) => {
let msg = NotificationMsg::from(error);
- self.session_close(rib, &instance.tx, Some(msg));
+ self.session_close(rib, instance.tx, Some(msg));
Some(fsm::State::Idle)
}
fsm::Event::RcvdOpen(_msg) => {
@@ -389,7 +389,7 @@ impl Neighbor {
Some(fsm::State::Idle)
}
fsm::Event::RcvdNotif(_) => {
- self.session_close(rib, &instance.tx, None);
+ self.session_close(rib, instance.tx, None);
Some(fsm::State::Idle)
}
fsm::Event::RcvdKalive => {
@@ -400,7 +400,7 @@ impl Neighbor {
let error_code = ErrorCode::HoldTimerExpired;
let error_subcode = 0;
let msg = NotificationMsg::new(error_code, error_subcode);
- self.session_close(rib, &instance.tx, Some(msg));
+ self.session_close(rib, instance.tx, Some(msg));
Some(fsm::State::Idle)
}
_ => {
@@ -409,7 +409,7 @@ impl Neighbor {
let error_subcode =
FsmErrorSubcode::UnexpectedMessageInOpenConfirm;
let msg = NotificationMsg::new(error_code, error_subcode);
- self.session_close(rib, &instance.tx, Some(msg));
+ self.session_close(rib, instance.tx, Some(msg));
Some(fsm::State::Idle)
}
},
@@ -417,20 +417,20 @@ impl Neighbor {
fsm::State::Established => match event {
fsm::Event::Start => None,
fsm::Event::Stop(msg) => {
- self.session_close(rib, &instance.tx, msg);
+ self.session_close(rib, instance.tx, msg);
Some(fsm::State::Idle)
}
fsm::Event::ConnFail => {
- self.session_close(rib, &instance.tx, None);
+ self.session_close(rib, instance.tx, None);
Some(fsm::State::Idle)
}
fsm::Event::RcvdError(error) => {
let msg = NotificationMsg::from(error);
- self.session_close(rib, &instance.tx, Some(msg));
+ self.session_close(rib, instance.tx, Some(msg));
Some(fsm::State::Idle)
}
fsm::Event::RcvdNotif(_) => {
- self.session_close(rib, &instance.tx, None);
+ self.session_close(rib, instance.tx, None);
Some(fsm::State::Idle)
}
fsm::Event::RcvdKalive | fsm::Event::RcvdUpdate => {
@@ -441,7 +441,7 @@ impl Neighbor {
let error_code = ErrorCode::HoldTimerExpired;
let error_subcode = 0;
let msg = NotificationMsg::new(error_code, error_subcode);
- self.session_close(rib, &instance.tx, Some(msg));
+ self.session_close(rib, instance.tx, Some(msg));
Some(fsm::State::Idle)
}
_ => {
@@ -450,7 +450,7 @@ impl Neighbor {
let error_subcode =
FsmErrorSubcode::UnexpectedMessageInEstablished;
let msg = NotificationMsg::new(error_code, error_subcode);
- self.session_close(rib, &instance.tx, Some(msg));
+ self.session_close(rib, instance.tx, Some(msg));
Some(fsm::State::Idle)
}
},
@@ -620,10 +620,10 @@ impl Neighbor {
// as they are sent all at once.
pub(crate) fn message_list_send(&mut self, msg_list: Vec) {
for msg in &msg_list {
- Debug::NbrMsgTx(&self.remote_addr, &msg).log();
+ Debug::NbrMsgTx(&self.remote_addr, msg).log();
// Update statistics.
- self.statistics.msgs_sent.update(&msg);
+ self.statistics.msgs_sent.update(msg);
// Keep track of the last sent notification.
if let Message::Notification(msg) = &msg {
@@ -709,7 +709,7 @@ impl Neighbor {
}
_ => None,
};
- self.session_close(&mut instance.state.rib, &instance.tx, msg);
+ self.session_close(&mut instance.state.rib, instance.tx, msg);
// Transition to the Idle state.
return fsm::State::Idle;
@@ -892,7 +892,7 @@ impl Neighbor {
self,
table,
&routes,
- &instance.shared,
+ instance.shared,
&instance.state.policy_apply_tasks,
);
}
diff --git a/holo-bgp/src/packet/attribute.rs b/holo-bgp/src/packet/attribute.rs
index f52b0324..f53ea767 100644
--- a/holo-bgp/src/packet/attribute.rs
+++ b/holo-bgp/src/packet/attribute.rs
@@ -668,7 +668,7 @@ impl AsPath {
.iter()
.map(|segment| match segment.seg_type {
AsPathSegmentType::Set => 1,
- AsPathSegmentType::Sequence => segment.members.iter().count(),
+ AsPathSegmentType::Sequence => segment.members.len(),
// RFC 5065 - Section 5.3:
// "When comparing routes using AS_PATH length, CONFED_SEQUENCE
// and CONFED_SETs SHOULD NOT be counted".
diff --git a/holo-bgp/src/policy.rs b/holo-bgp/src/policy.rs
index c04a2fa5..0ce7c87a 100644
--- a/holo-bgp/src/policy.rs
+++ b/holo-bgp/src/policy.rs
@@ -44,7 +44,7 @@ pub(crate) fn neighbor_apply(
nbr_addr: IpAddr,
afi_safi: AfiSafi,
routes: Vec<(IpNetwork, RoutePolicyInfo)>,
- policies: &Vec>,
+ policies: &[Arc],
match_sets: &MatchSets,
default_policy: DefaultPolicyType,
policy_resultp: &UnboundedSender,
@@ -59,7 +59,7 @@ pub(crate) fn neighbor_apply(
prefix,
rpinfo,
policies,
- &match_sets,
+ match_sets,
default_policy,
);
@@ -85,7 +85,7 @@ fn process_policies(
afi_safi: AfiSafi,
prefix: IpNetwork,
mut rpinfo: RoutePolicyInfo,
- policies: &Vec>,
+ policies: &[Arc],
match_sets: &MatchSets,
default_policy: DefaultPolicyType,
) -> PolicyResult {
@@ -187,7 +187,7 @@ fn process_stmt_condition(
BgpPolicyCondition::MatchCommSet { value, match_type } => {
if let Some(comm) = &attrs.comm {
let set = match_sets.bgp.comms.get(value).unwrap();
- match_type.compare(&set, &comm.0)
+ match_type.compare(set, &comm.0)
} else {
false
}
@@ -196,7 +196,7 @@ fn process_stmt_condition(
BgpPolicyCondition::MatchExtCommSet { value, match_type } => {
if let Some(ext_comm) = &attrs.ext_comm {
let set = match_sets.bgp.ext_comms.get(value).unwrap();
- match_type.compare(&set, &ext_comm.0)
+ match_type.compare(set, &ext_comm.0)
} else {
false
}
@@ -205,7 +205,7 @@ fn process_stmt_condition(
BgpPolicyCondition::MatchExtv6CommSet { value, match_type } => {
if let Some(extv6_comm) = &attrs.extv6_comm {
let set = match_sets.bgp.extv6_comms.get(value).unwrap();
- match_type.compare(&set, &extv6_comm.0)
+ match_type.compare(set, &extv6_comm.0)
} else {
false
}
@@ -214,7 +214,7 @@ fn process_stmt_condition(
BgpPolicyCondition::MatchLargeCommSet { value, match_type } => {
if let Some(large_comm) = &attrs.large_comm {
let set = match_sets.bgp.large_comms.get(value).unwrap();
- match_type.compare(&set, &large_comm.0)
+ match_type.compare(set, &large_comm.0)
} else {
false
}
@@ -223,7 +223,7 @@ fn process_stmt_condition(
BgpPolicyCondition::MatchAsPathSet { value, match_type } => {
let set = match_sets.bgp.as_paths.get(value).unwrap();
let asns = attrs.base.as_path.iter().collect();
- match_type.compare(&set, &asns)
+ match_type.compare(set, &asns)
}
// "match-next-hop-set"
BgpPolicyCondition::MatchNexthopSet { value, match_type } => {
@@ -232,7 +232,7 @@ fn process_stmt_condition(
None => BgpNexthop::NexthopSelf,
};
let set = match_sets.bgp.nexthops.get(value).unwrap();
- match_type.compare(&set, &nexthop)
+ match_type.compare(set, &nexthop)
}
},
// Ignore unsupported conditions.
diff --git a/holo-bgp/src/rib.rs b/holo-bgp/src/rib.rs
index 9b978a16..0f43800b 100644
--- a/holo-bgp/src/rib.rs
+++ b/holo-bgp/src/rib.rs
@@ -321,7 +321,7 @@ impl Route {
) = (&self.origin, &other.origin)
{
let reason = RouteRejectReason::HigherRouterId;
- match a.cmp(&b) {
+ match a.cmp(b) {
Ordering::Less => {
return RouteCompare::Preferred(reason);
}
@@ -341,7 +341,7 @@ impl Route {
) = (&self.origin, &other.origin)
{
let reason = RouteRejectReason::HigherPeerAddress;
- match a.cmp(&b) {
+ match a.cmp(b) {
Ordering::Less => {
return RouteCompare::Preferred(reason);
}
diff --git a/holo-daemon/src/northbound/client/grpc.rs b/holo-daemon/src/northbound/client/grpc.rs
index ca44e3a8..8d499034 100644
--- a/holo-daemon/src/northbound/client/grpc.rs
+++ b/holo-daemon/src/northbound/client/grpc.rs
@@ -4,7 +4,6 @@
// SPDX-License-Identifier: MIT
//
-use std::convert::TryFrom;
use std::pin::Pin;
use std::time::SystemTime;
diff --git a/holo-utils/src/bgp.rs b/holo-utils/src/bgp.rs
index 29aff93a..02b29cca 100644
--- a/holo-utils/src/bgp.rs
+++ b/holo-utils/src/bgp.rs
@@ -66,6 +66,7 @@ pub struct LargeComm(pub [u8; 12]);
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
#[derive(FromPrimitive, ToPrimitive)]
#[derive(Deserialize, Serialize)]
+#[repr(u32)]
pub enum WellKnownCommunities {
NoExport = 0xFFFFFF01,
NoAdvertise = 0xFFFFFF02,
diff --git a/holo-utils/src/ip.rs b/holo-utils/src/ip.rs
index cb70c0d6..70d8f29b 100644
--- a/holo-utils/src/ip.rs
+++ b/holo-utils/src/ip.rs
@@ -5,7 +5,6 @@
//
use std::borrow::Cow;
-use std::convert::TryInto;
use std::net::{
IpAddr, Ipv4Addr, Ipv6Addr, SocketAddr, SocketAddrV4, SocketAddrV6,
};