projects
/
dnsseed-rust
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
7f3e64f
)
Update to upstream bgp-rs
author
Matt Corallo
<git@bluematt.me>
Sun, 31 May 2020 17:30:07 +0000
(13:30 -0400)
committer
Matt Corallo
<git@bluematt.me>
Sun, 31 May 2020 19:36:54 +0000
(15:36 -0400)
Cargo.toml
patch
|
blob
|
history
src/bgp_client.rs
patch
|
blob
|
history
diff --git
a/Cargo.toml
b/Cargo.toml
index 075f29658d4717560aa9b826a398bac860f19bb7..a628f3febb5e5c3b669ea7cce082b05f8519e0ab 100644
(file)
--- a/
Cargo.toml
+++ b/
Cargo.toml
@@
-7,7
+7,7
@@
edition = "2018"
[dependencies]
bitcoin = "0.19"
bitcoin_hashes = "0.7"
[dependencies]
bitcoin = "0.19"
bitcoin_hashes = "0.7"
-bgp-rs = { git = "https://github.com/TheBlueMatt/bgp-rs", rev = "9
8f91c4e9e386bfdac0f8e2e9886fb15b15c861
f" }
+bgp-rs = { git = "https://github.com/TheBlueMatt/bgp-rs", rev = "9
6bd15e67789b91f679f835fc62ff3beb16685b
f" }
tokio = "0.1"
bytes = "0.4"
futures = "0.1"
tokio = "0.1"
bytes = "0.4"
futures = "0.1"
diff --git
a/src/bgp_client.rs
b/src/bgp_client.rs
index ba3a16418087196a5dd3c335ad6ea3dfc1d391de..dc5c6736a923fdfdbc2487d0fc51e2718034a40e 100644
(file)
--- a/
src/bgp_client.rs
+++ b/
src/bgp_client.rs
@@
-142,6
+142,10
@@
impl RoutingTable {
}
},
NLRIEncoding::IP_MPLS(_) => (),
}
},
NLRIEncoding::IP_MPLS(_) => (),
+ NLRIEncoding::IP_MPLS_WITH_PATH_ID(_) => (),
+ NLRIEncoding::IP_VPN_MPLS(_) => (),
+ NLRIEncoding::L2VPN(_) => (),
+ NLRIEncoding::FLOWSPEC(_) => (),
};
}
};
}
@@
-169,6
+173,10
@@
impl RoutingTable {
}
},
NLRIEncoding::IP_MPLS(_) => (),
}
},
NLRIEncoding::IP_MPLS(_) => (),
+ NLRIEncoding::IP_MPLS_WITH_PATH_ID(_) => (),
+ NLRIEncoding::IP_VPN_MPLS(_) => (),
+ NLRIEncoding::L2VPN(_) => (),
+ NLRIEncoding::FLOWSPEC(_) => (),
};
}
}
};
}
}
@@
-196,8
+204,8
@@
impl<'a> std::io::Read for BytesDecoder<'a> {
}
}
}
}
-struct MsgCoder
<'a>(&'a Printer
);
-impl
<'a> codec::Decoder for MsgCoder<'a>
{
+struct MsgCoder
(Option<Capabilities>
);
+impl
codec::Decoder for MsgCoder
{
type Item = Message;
type Error = std::io::Error;
type Item = Message;
type Error = std::io::Error;
@@
-206,13
+214,12
@@
impl<'a> codec::Decoder for MsgCoder<'a> {
buf: bytes,
pos: 0
};
buf: bytes,
pos: 0
};
- match (Reader {
+ let def_cap = Default::default();
+ let mut reader = Reader {
stream: &mut decoder,
stream: &mut decoder,
- capabilities: Capabilities {
- FOUR_OCTET_ASN_SUPPORT: true,
- EXTENDED_PATH_NLRI_SUPPORT: true,
- }
- }).read() {
+ capabilities: if let Some(cap) = &self.0 { cap } else { &def_cap },
+ };
+ match reader.read() {
Ok((_header, msg)) => {
decoder.buf.advance(decoder.pos);
Ok(Some(msg))
Ok((_header, msg)) => {
decoder.buf.advance(decoder.pos);
Ok(Some(msg))
@@
-224,12
+231,12
@@
impl<'a> codec::Decoder for MsgCoder<'a> {
}
}
}
}
}
}
-impl
<'a> codec::Encoder for MsgCoder<'a>
{
+impl
codec::Encoder for MsgCoder
{
type Item = Message;
type Error = std::io::Error;
fn encode(&mut self, msg: Message, res: &mut bytes::BytesMut) -> Result<(), std::io::Error> {
type Item = Message;
type Error = std::io::Error;
fn encode(&mut self, msg: Message, res: &mut bytes::BytesMut) -> Result<(), std::io::Error> {
- msg.
writ
e(&mut BytesCoder(res))?;
+ msg.
encod
e(&mut BytesCoder(res))?;
Ok(())
}
}
Ok(())
}
}
@@
-340,7
+347,7
@@
impl BGPClient {
future::err(())
})
}).and_then(move |stream| {
future::err(())
})
}).and_then(move |stream| {
- let (write, read) = Framed::new(stream.0, MsgCoder(
printer
)).split();
+ let (write, read) = Framed::new(stream.0, MsgCoder(
None
)).split();
let (mut sender, receiver) = mpsc::channel(10); // We never really should send more than 10 messages unless they're dumb
tokio::spawn(write.sink_map_err(|_| { () }).send_all(receiver)
.then(|_| {
let (mut sender, receiver) = mpsc::channel(10); // We never really should send more than 10 messages unless they're dumb
tokio::spawn(write.sink_map_err(|_| { () }).send_all(receiver)
.then(|_| {
@@
-359,7
+366,7
@@
impl BGPClient {
OpenCapability::AddPath(vec![
(AFI::IPV4, SAFI::Unicast, AddPathDirection::ReceivePaths),
(AFI::IPV6, SAFI::Unicast, AddPathDirection::ReceivePaths)]),
OpenCapability::AddPath(vec![
(AFI::IPV4, SAFI::Unicast, AddPathDirection::ReceivePaths),
(AFI::IPV6, SAFI::Unicast, AddPathDirection::ReceivePaths)]),
- ])]
+ ])]
,
}));
TimeoutStream::new_persistent(read, timeout).for_each(move |bgp_msg| {
if client.shutdown.load(Ordering::Relaxed) {
}));
TimeoutStream::new_persistent(read, timeout).for_each(move |bgp_msg| {
if client.shutdown.load(Ordering::Relaxed) {