Add an extra hop in the path length now that we have fewer threads
[dnsseed-rust] / src / bgp_client.rs
index dc5c6736a923fdfdbc2487d0fc51e2718034a40e..60c80cf0ad9dbfda7fe172548868e7960f61c333 100644 (file)
@@ -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() {