X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=src%2Fbgp_client.rs;h=60c80cf0ad9dbfda7fe172548868e7960f61c333;hb=1e966747a23601301d3dd1e861702ff7c7bd6568;hp=dc5c6736a923fdfdbc2487d0fc51e2718034a40e;hpb=7ef74563891ca09202cd0a59f96f516fa44318f7;p=dnsseed-rust diff --git a/src/bgp_client.rs b/src/bgp_client.rs index dc5c673..60c80cf 100644 --- a/src/bgp_client.rs +++ b/src/bgp_client.rs @@ -22,7 +22,7 @@ use futures::sync::mpsc; use crate::printer::{Printer, Stat}; use crate::timeout_stream::TimeoutStream; -const PATH_SUFFIX_LEN: usize = 2; +const PATH_SUFFIX_LEN: usize = 3; #[derive(Clone)] struct Route { // 32 bytes with a path id u32 path_suffix: [u32; PATH_SUFFIX_LEN], @@ -31,7 +31,7 @@ struct Route { // 32 bytes with a path id u32 med: u32, } #[allow(dead_code)] -const ROUTE_LEN: usize = 32 - std::mem::size_of::<(u32, Route)>(); +const ROUTE_LEN: usize = 36 - std::mem::size_of::<(u32, Route)>(); // To keep memory tight (and since we dont' need such close alignment), newtype the v4/v6 routing // table entries to make sure they are aligned to single bytes. @@ -145,7 +145,6 @@ impl RoutingTable { NLRIEncoding::IP_MPLS_WITH_PATH_ID(_) => (), NLRIEncoding::IP_VPN_MPLS(_) => (), NLRIEncoding::L2VPN(_) => (), - NLRIEncoding::FLOWSPEC(_) => (), }; } @@ -176,7 +175,6 @@ impl RoutingTable { NLRIEncoding::IP_MPLS_WITH_PATH_ID(_) => (), NLRIEncoding::IP_VPN_MPLS(_) => (), NLRIEncoding::L2VPN(_) => (), - NLRIEncoding::FLOWSPEC(_) => (), }; } } @@ -222,6 +220,9 @@ impl codec::Decoder for MsgCoder { match reader.read() { Ok((_header, msg)) => { decoder.buf.advance(decoder.pos); + if let Message::Open(ref o) = &msg { + self.0 = Some(Capabilities::from_parameters(o.parameters.clone())); + } Ok(Some(msg)) }, Err(e) => match e.kind() {