+ pub fn get_path(&self, addr: IpAddr) -> (u8, [u32; PATH_SUFFIX_LEN]) {
+ let lock = self.routes.lock().unwrap();
+ let (prefixlen, mut path_vecs) = lock.get_route_attrs(addr);
+ if path_vecs.is_empty() { return (0, [0; PATH_SUFFIX_LEN]); }
+
+ path_vecs.sort_unstable_by(|path_a, path_b| {
+ path_a.pref.cmp(&path_b.pref)
+ .then(path_b.path_len.cmp(&path_a.path_len))
+ .then(path_b.med.cmp(&path_a.med))
+ });
+
+ let primary_route = path_vecs.pop().unwrap();
+ (prefixlen, primary_route.path_suffix)
+ }
+