diff --git a/controller/src/controller.rs b/controller/src/controller.rs index 32ef810d0..39556d07e 100644 --- a/controller/src/controller.rs +++ b/controller/src/controller.rs @@ -67,9 +67,7 @@ impl Controller { recently_authorized: RwLock::new(HashMap::new()), })) } else { - Err(Box::new(InvalidParameterError( - "local controller's identity not readable by database", - ))) + Err(Box::new(InvalidParameterError("local controller's identity not readable by database"))) } } @@ -238,8 +236,7 @@ impl Controller { if member.node_id != *m { if let Some(peer) = self.service.read().unwrap().upgrade().and_then(|s| s.node().peer(*m)) { revocations.clear(); - Revocation::new(member.network_id, time_clock, member.node_id, *m, &self.local_identity, false) - .map(|r| revocations.push(r)); + Revocation::new(member.network_id, time_clock, member.node_id, *m, &self.local_identity, false).map(|r| revocations.push(r)); self.send_revocations(&peer, &mut revocations); } } @@ -565,8 +562,7 @@ impl InnerProtocolLayer for Controller { }; // Launch handler as an async background task. - let (self2, source, source_remote_endpoint) = - (self.self_ref.upgrade().unwrap(), source.clone(), source_path.endpoint.clone()); + let (self2, source, source_remote_endpoint) = (self.self_ref.upgrade().unwrap(), source.clone(), source_path.endpoint.clone()); self.reaper.add( self.runtime.spawn(async move { let node_id = source.identity.address; diff --git a/controller/src/filedatabase.rs b/controller/src/filedatabase.rs index 6fb5d9e68..f4b5aeecc 100644 --- a/controller/src/filedatabase.rs +++ b/controller/src/filedatabase.rs @@ -50,8 +50,8 @@ impl FileDatabase { let db_weak = db_weak_tmp.clone(); let runtime2 = runtime.clone(); - let local_identity = load_node_identity(base_path.as_path()) - .ok_or(std::io::Error::new(std::io::ErrorKind::NotFound, "identity.secret not found"))?; + let local_identity = + load_node_identity(base_path.as_path()).ok_or(std::io::Error::new(std::io::ErrorKind::NotFound, "identity.secret not found"))?; let controller_address = local_identity.address; let db = Arc::new(Self { @@ -144,8 +144,7 @@ impl FileDatabase { .send(Change::NetworkChanged(old_network, new_network)); } (true, None) => { - let _ = - db.change_sender.send(Change::NetworkCreated(new_network)); + let _ = db.change_sender.send(Change::NetworkCreated(new_network)); } _ => {} } @@ -155,13 +154,11 @@ impl FileDatabase { if let Ok(Some(new_member)) = Self::load_object::(changed).await { match db.cache.on_member_updated(new_member.clone()) { (true, Some(old_member)) => { - let _ = db - .change_sender - .send(Change::MemberChanged(old_member, new_member)); + let _ = + db.change_sender.send(Change::MemberChanged(old_member, new_member)); } (true, None) => { - let _ = - db.change_sender.send(Change::MemberCreated(new_member)); + let _ = db.change_sender.send(Change::MemberCreated(new_member)); } _ => {} } @@ -315,9 +312,7 @@ impl Database for FileDatabase { if ent.file_type().await.map_or(false, |t| t.is_file() || t.is_symlink()) { let osname = ent.file_name(); let name = osname.to_string_lossy(); - if name.len() == (zerotier_network_hypervisor::protocol::ADDRESS_SIZE_STRING + 6) - && name.starts_with("M") - && name.ends_with(".yaml") + if name.len() == (zerotier_network_hypervisor::protocol::ADDRESS_SIZE_STRING + 6) && name.starts_with("M") && name.ends_with(".yaml") { if let Ok(member_address) = u64::from_str_radix(&name[1..11], 16) { if let Some(member_address) = Address::from_u64(member_address) { diff --git a/controller/src/postgresdatabase.rs b/controller/src/postgresdatabase.rs index 8b48ab8c5..379b44a6e 100644 --- a/controller/src/postgresdatabase.rs +++ b/controller/src/postgresdatabase.rs @@ -88,18 +88,13 @@ impl PostgresConnection { let (client, connection) = tokio_postgres::connect(postgres_path, tokio_postgres::NoTls).await?; Ok(Box::new(Self { s_list_networks: client - .prepare_typed( - "SELECT id FROM ztc_network WHERE controller_id = $1 AND deleted = false", - &[Type::TEXT], - ) + .prepare_typed("SELECT id FROM ztc_network WHERE controller_id = $1 AND deleted = false", &[Type::TEXT]) .await?, s_list_members: client .prepare_typed("SELECT id FROM ztc_member WHERE network_id = $1 AND deleted = false", &[Type::TEXT]) .await?, s_get_network: client.prepare_typed(GET_NETWORK_SQL, &[Type::TEXT]).await?, - s_get_network_members_with_capabilities: client - .prepare_typed(GET_NETWORK_MEMBERS_WITH_CAPABILITIES_SQL, &[Type::TEXT]) - .await?, + s_get_network_members_with_capabilities: client.prepare_typed(GET_NETWORK_MEMBERS_WITH_CAPABILITIES_SQL, &[Type::TEXT]).await?, client, connection_task: runtime.spawn(async move { if let Err(e) = connection.await { @@ -144,12 +139,7 @@ pub struct PostgresDatabase { } impl PostgresDatabase { - pub async fn new( - runtime: Handle, - postgres_path: String, - num_connections: usize, - local_identity: Valid, - ) -> Result, Error> { + pub async fn new(runtime: Handle, postgres_path: String, num_connections: usize, local_identity: Valid) -> Result, Error> { assert!(num_connections > 0); let (sender, _) = channel(4096); let mut connections = Vec::with_capacity(num_connections); @@ -217,11 +207,7 @@ impl Database for PostgresDatabase { let c = self.get_connection().await?; let network_id_string = id.to_string(); if let Some(r) = c.client.query_opt(&c.s_get_network, &[&network_id_string]).await? { - if let Ok(with_caps) = c - .client - .query(&c.s_get_network_members_with_capabilities, &[&network_id_string]) - .await - { + if let Ok(with_caps) = c.client.query(&c.s_get_network_members_with_capabilities, &[&network_id_string]).await { (r, with_caps) } else { (r, Vec::new()) @@ -341,10 +327,7 @@ impl Database for PostgresDatabase { if let Ok(member_id) = Address::from_str(wc.get(0)) { if let Ok(cap_ids) = serde_json::from_str::>(wc.get(1)) { for cap_id in cap_ids.iter() { - members_by_cap - .entry(*cap_id) - .or_insert_with(|| Vec::with_capacity(4)) - .push(member_id); + members_by_cap.entry(*cap_id).or_insert_with(|| Vec::with_capacity(4)).push(member_id); } } } diff --git a/crypto/benches/benchmark_crypto.rs b/crypto/benches/benchmark_crypto.rs index fd01855c9..2157322aa 100644 --- a/crypto/benches/benchmark_crypto.rs +++ b/crypto/benches/benchmark_crypto.rs @@ -31,9 +31,7 @@ pub fn criterion_benchmark(c: &mut Criterion) { group.measurement_time(Duration::new(10, 0)); - group.bench_function("ecdhp384", |b| { - b.iter(|| p384_a.agree(p384_b.public_key()).expect("ecdhp384 failed")) - }); + group.bench_function("ecdhp384", |b| b.iter(|| p384_a.agree(p384_b.public_key()).expect("ecdhp384 failed"))); group.bench_function("ecdhx25519", |b| b.iter(|| x25519_a.agree(&x25519_b_pub))); group.finish(); diff --git a/crypto/src/aes.rs b/crypto/src/aes.rs index 5d0cd2c32..54be9e016 100644 --- a/crypto/src/aes.rs +++ b/crypto/src/aes.rs @@ -135,14 +135,7 @@ mod fruit_flavored { assert_eq!(data.len(), 16); unsafe { let mut data_out_written = 0; - CCCryptorUpdate( - self.0, - data.as_ptr().cast(), - 16, - data.as_mut_ptr().cast(), - 16, - &mut data_out_written, - ); + CCCryptorUpdate(self.0, data.as_ptr().cast(), 16, data.as_mut_ptr().cast(), 16, &mut data_out_written); } } @@ -168,14 +161,7 @@ mod fruit_flavored { assert_eq!(data.len(), 16); unsafe { let mut data_out_written = 0; - CCCryptorUpdate( - self.1, - data.as_ptr().cast(), - 16, - data.as_mut_ptr().cast(), - 16, - &mut data_out_written, - ); + CCCryptorUpdate(self.1, data.as_ptr().cast(), 16, data.as_mut_ptr().cast(), 16, &mut data_out_written); } } } @@ -357,15 +343,9 @@ mod fruit_flavored { pub fn crypt_in_place(&mut self, data: &mut [u8]) { unsafe { if self.1 { - assert_eq!( - CCCryptorGCMEncrypt(self.0, data.as_ptr().cast(), data.len(), data.as_mut_ptr().cast()), - 0 - ); + assert_eq!(CCCryptorGCMEncrypt(self.0, data.as_ptr().cast(), data.len(), data.as_mut_ptr().cast()), 0); } else { - assert_eq!( - CCCryptorGCMDecrypt(self.0, data.as_ptr().cast(), data.len(), data.as_mut_ptr().cast()), - 0 - ); + assert_eq!(CCCryptorGCMDecrypt(self.0, data.as_ptr().cast(), data.len(), data.as_mut_ptr().cast()), 0); } } } diff --git a/crypto/src/aes_gmac_siv/impl_openssl.rs b/crypto/src/aes_gmac_siv/impl_openssl.rs index edd856fd9..7615aafd7 100644 --- a/crypto/src/aes_gmac_siv/impl_openssl.rs +++ b/crypto/src/aes_gmac_siv/impl_openssl.rs @@ -178,15 +178,9 @@ impl AesGmacSiv { self.tmp.copy_from_slice(&tag_tmp[0..16]); self.tmp[12] &= 0x7f; - let _ = self.ctr.replace( - Crypter::new( - aes_ctr_by_key_size(self.k1.len()), - Mode::Encrypt, - self.k1.as_slice(), - Some(&self.tmp), - ) - .unwrap(), - ); + let _ = self + .ctr + .replace(Crypter::new(aes_ctr_by_key_size(self.k1.len()), Mode::Encrypt, self.k1.as_slice(), Some(&self.tmp)).unwrap()); } /// Feed plaintext for second pass and write ciphertext to supplied buffer. @@ -219,15 +213,9 @@ impl AesGmacSiv { pub fn decrypt_init(&mut self, tag: &[u8]) { self.tmp.copy_from_slice(tag); self.tmp[12] &= 0x7f; - let _ = self.ctr.replace( - Crypter::new( - aes_ctr_by_key_size(self.k1.len()), - Mode::Decrypt, - self.k1.as_slice(), - Some(&self.tmp), - ) - .unwrap(), - ); + let _ = self + .ctr + .replace(Crypter::new(aes_ctr_by_key_size(self.k1.len()), Mode::Decrypt, self.k1.as_slice(), Some(&self.tmp)).unwrap()); let mut tag_tmp = [0_u8; 32]; let mut ecb = Crypter::new(aes_ecb_by_key_size(self.k1.len()), Mode::Decrypt, self.k1.as_slice(), None).unwrap(); diff --git a/crypto/src/p384.rs b/crypto/src/p384.rs index 4baea80d9..28f4a0066 100644 --- a/crypto/src/p384.rs +++ b/crypto/src/p384.rs @@ -55,9 +55,7 @@ mod openssl_based { impl P384PublicKey { fn new_from_point(key: &EcPointRef) -> Self { let mut bnc = BigNumContext::new().unwrap(); - let kb = key - .to_bytes(GROUP_P384.as_ref(), PointConversionForm::COMPRESSED, &mut bnc) - .unwrap(); + let kb = key.to_bytes(GROUP_P384.as_ref(), PointConversionForm::COMPRESSED, &mut bnc).unwrap(); let mut bytes = [0_u8; 49]; bytes[(49 - kb.len())..].copy_from_slice(kb.as_slice()); Self { @@ -599,17 +597,12 @@ mod builtin { let mut i: uint = 0; /* p = c0 */ vli_clear(l_tmp.as_mut_ptr()); vli_clear(l_tmp.as_mut_ptr().offset((48 as libc::c_int / 8 as libc::c_int) as isize)); - omega_mult( - l_tmp.as_mut_ptr(), - p_product.offset((48 as libc::c_int / 8 as libc::c_int) as isize), - ); + omega_mult(l_tmp.as_mut_ptr(), p_product.offset((48 as libc::c_int / 8 as libc::c_int) as isize)); vli_clear(p_product.offset((48 as libc::c_int / 8 as libc::c_int) as isize)); /* (c1, c0) = c0 + w * c1 */ i = 0 as libc::c_int as uint; while i < (48 as libc::c_int / 8 as libc::c_int + 3 as libc::c_int) as libc::c_uint { - let mut l_sum: uint64_t = (*p_product.offset(i as isize)) - .wrapping_add(l_tmp[i as usize]) - .wrapping_add(l_carry); + let mut l_sum: uint64_t = (*p_product.offset(i as isize)).wrapping_add(l_tmp[i as usize]).wrapping_add(l_carry); if l_sum != *p_product.offset(i as isize) { l_carry = (l_sum < *p_product.offset(i as isize)) as libc::c_int as uint64_t } @@ -855,12 +848,7 @@ mod builtin { vli_set(X1, t7.as_mut_ptr()); } - unsafe fn EccPoint_mult( - mut p_result: *mut EccPoint, - mut p_point: *mut EccPoint, - mut p_scalar: *mut uint64_t, - mut p_initialZ: *mut uint64_t, - ) { + unsafe fn EccPoint_mult(mut p_result: *mut EccPoint, mut p_point: *mut EccPoint, mut p_scalar: *mut uint64_t, mut p_initialZ: *mut uint64_t) { /* R0 and R1 */ let mut Rx: [[uint64_t; 6]; 2] = std::mem::MaybeUninit::uninit().assume_init(); let mut Ry: [[uint64_t; 6]; 2] = std::mem::MaybeUninit::uninit().assume_init(); @@ -1039,20 +1027,12 @@ mod builtin { } } ecc_native2bytes(p_privateKey, l_private.as_mut_ptr() as *const uint64_t); - ecc_native2bytes( - p_publicKey.offset(1 as libc::c_int as isize), - l_public.x.as_mut_ptr() as *const uint64_t, - ); - *p_publicKey.offset(0 as libc::c_int as isize) = (2 as libc::c_int as libc::c_ulong) - .wrapping_add(l_public.y[0 as libc::c_int as usize] & 0x1 as libc::c_int as libc::c_ulong) - as uint8_t; + ecc_native2bytes(p_publicKey.offset(1 as libc::c_int as isize), l_public.x.as_mut_ptr() as *const uint64_t); + *p_publicKey.offset(0 as libc::c_int as isize) = + (2 as libc::c_int as libc::c_ulong).wrapping_add(l_public.y[0 as libc::c_int as usize] & 0x1 as libc::c_int as libc::c_ulong) as uint8_t; return 1 as libc::c_int; } - pub unsafe fn ecdh_shared_secret( - mut p_publicKey: *const uint8_t, - mut p_privateKey: *const uint8_t, - mut p_secret: *mut uint8_t, - ) -> libc::c_int { + pub unsafe fn ecdh_shared_secret(mut p_publicKey: *const uint8_t, mut p_privateKey: *const uint8_t, mut p_secret: *mut uint8_t) -> libc::c_int { let mut l_public: EccPoint = std::mem::MaybeUninit::uninit().assume_init(); let mut l_private: [uint64_t; 6] = std::mem::MaybeUninit::uninit().assume_init(); let mut l_random: [uint64_t; 6] = std::mem::MaybeUninit::uninit().assume_init(); @@ -1079,8 +1059,7 @@ mod builtin { vli_mult(l_product.as_mut_ptr(), p_left, p_right); l_productBits = vli_numBits(l_product.as_mut_ptr().offset((48 as libc::c_int / 8 as libc::c_int) as isize)); if l_productBits != 0 { - l_productBits = (l_productBits as libc::c_uint) - .wrapping_add((48 as libc::c_int / 8 as libc::c_int * 64 as libc::c_int) as libc::c_uint) + l_productBits = (l_productBits as libc::c_uint).wrapping_add((48 as libc::c_int / 8 as libc::c_int * 64 as libc::c_int) as libc::c_uint) as uint as uint } else { l_productBits = vli_numBits(l_product.as_mut_ptr()) @@ -1094,12 +1073,8 @@ mod builtin { power of two possible while still resulting in a number less than p_left. */ vli_clear(l_modMultiple.as_mut_ptr()); vli_clear(l_modMultiple.as_mut_ptr().offset((48 as libc::c_int / 8 as libc::c_int) as isize)); - l_digitShift = l_productBits - .wrapping_sub(l_modBits) - .wrapping_div(64 as libc::c_int as libc::c_uint); - l_bitShift = l_productBits - .wrapping_sub(l_modBits) - .wrapping_rem(64 as libc::c_int as libc::c_uint); + l_digitShift = l_productBits.wrapping_sub(l_modBits).wrapping_div(64 as libc::c_int as libc::c_uint); + l_bitShift = l_productBits.wrapping_sub(l_modBits).wrapping_rem(64 as libc::c_int as libc::c_uint); if l_bitShift != 0 { l_modMultiple[l_digitShift.wrapping_add((48 as libc::c_int / 8 as libc::c_int) as libc::c_uint) as usize] = vli_lshift(l_modMultiple.as_mut_ptr().offset(l_digitShift as isize), p_mod, l_bitShift) @@ -1186,11 +1161,7 @@ mod builtin { ecc_native2bytes(p_signature.offset(48 as libc::c_int as isize), l_s.as_mut_ptr() as *const uint64_t); return 1 as libc::c_int; } - pub unsafe fn ecdsa_verify( - mut p_publicKey: *const uint8_t, - mut p_hash: *const uint8_t, - mut p_signature: *const uint8_t, - ) -> libc::c_int { + pub unsafe fn ecdsa_verify(mut p_publicKey: *const uint8_t, mut p_hash: *const uint8_t, mut p_signature: *const uint8_t) -> libc::c_int { let mut u1: [uint64_t; 6] = std::mem::MaybeUninit::uninit().assume_init(); let mut u2: [uint64_t; 6] = std::mem::MaybeUninit::uninit().assume_init(); let mut z: [uint64_t; 6] = std::mem::MaybeUninit::uninit().assume_init(); @@ -1210,8 +1181,7 @@ mod builtin { /* r, s must not be 0. */ return 0 as libc::c_int; } - if vli_cmp(curve_n.as_mut_ptr(), l_r.as_mut_ptr()) != 1 as libc::c_int - || vli_cmp(curve_n.as_mut_ptr(), l_s.as_mut_ptr()) != 1 as libc::c_int + if vli_cmp(curve_n.as_mut_ptr(), l_r.as_mut_ptr()) != 1 as libc::c_int || vli_cmp(curve_n.as_mut_ptr(), l_s.as_mut_ptr()) != 1 as libc::c_int { /* r, s must be < n. */ return 0 as libc::c_int; @@ -1233,10 +1203,10 @@ mod builtin { /* Use Shamir's trick to calculate u1*G + u2*Q */ let mut l_points: [*mut EccPoint; 4] = [0 as *mut EccPoint, &mut curve_G, &mut l_public, &mut l_sum]; /* Z = x2 - x1 */ let mut l_numBits: uint = umax(vli_numBits(u1.as_mut_ptr()), vli_numBits(u2.as_mut_ptr())); /* Z = 1/Z */ - let mut l_point: *mut EccPoint = l_points[((vli_testBit(u1.as_mut_ptr(), l_numBits.wrapping_sub(1 as libc::c_int as libc::c_uint)) - != 0) as libc::c_int - | ((vli_testBit(u2.as_mut_ptr(), l_numBits.wrapping_sub(1 as libc::c_int as libc::c_uint)) != 0) as libc::c_int) - << 1 as libc::c_int) as usize]; + let mut l_point: *mut EccPoint = l_points[((vli_testBit(u1.as_mut_ptr(), l_numBits.wrapping_sub(1 as libc::c_int as libc::c_uint)) != 0) + as libc::c_int + | ((vli_testBit(u2.as_mut_ptr(), l_numBits.wrapping_sub(1 as libc::c_int as libc::c_uint)) != 0) as libc::c_int) << 1 as libc::c_int) + as usize]; vli_set(rx.as_mut_ptr(), (*l_point).x.as_mut_ptr()); vli_set(ry.as_mut_ptr(), (*l_point).y.as_mut_ptr()); vli_clear(z.as_mut_ptr()); diff --git a/crypto/src/poly1305.rs b/crypto/src/poly1305.rs index b34da874c..b49183ab0 100644 --- a/crypto/src/poly1305.rs +++ b/crypto/src/poly1305.rs @@ -20,12 +20,12 @@ mod tests { use crate::poly1305::*; const TV0_INPUT: [u8; 32] = [ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ]; const TV0_KEY: [u8; 32] = [ - 0x74, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x33, 0x32, 0x2d, 0x62, 0x79, 0x74, 0x65, 0x20, 0x6b, 0x65, 0x79, 0x20, 0x66, 0x6f, - 0x72, 0x20, 0x50, 0x6f, 0x6c, 0x79, 0x31, 0x33, 0x30, 0x35, + 0x74, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x33, 0x32, 0x2d, 0x62, 0x79, 0x74, 0x65, 0x20, 0x6b, 0x65, 0x79, 0x20, 0x66, 0x6f, 0x72, + 0x20, 0x50, 0x6f, 0x6c, 0x79, 0x31, 0x33, 0x30, 0x35, ]; const TV0_TAG: [u8; 16] = [ 0x49, 0xec, 0x78, 0x09, 0x0e, 0x48, 0x1e, 0xc6, 0xc2, 0x6b, 0x33, 0xb9, 0x1c, 0xcc, 0x03, 0x07, @@ -33,8 +33,8 @@ mod tests { const TV1_INPUT: [u8; 12] = [0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x21]; const TV1_KEY: [u8; 32] = [ - 0x74, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x33, 0x32, 0x2d, 0x62, 0x79, 0x74, 0x65, 0x20, 0x6b, 0x65, 0x79, 0x20, 0x66, 0x6f, - 0x72, 0x20, 0x50, 0x6f, 0x6c, 0x79, 0x31, 0x33, 0x30, 0x35, + 0x74, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x33, 0x32, 0x2d, 0x62, 0x79, 0x74, 0x65, 0x20, 0x6b, 0x65, 0x79, 0x20, 0x66, 0x6f, 0x72, + 0x20, 0x50, 0x6f, 0x6c, 0x79, 0x31, 0x33, 0x30, 0x35, ]; const TV1_TAG: [u8; 16] = [ 0xa6, 0xf7, 0x45, 0x00, 0x8f, 0x81, 0xc9, 0x16, 0xa2, 0x0d, 0xcc, 0x74, 0xee, 0xf2, 0xb2, 0xf0, diff --git a/crypto/src/salsa.rs b/crypto/src/salsa.rs index 0711ba07c..7c1f79b30 100644 --- a/crypto/src/salsa.rs +++ b/crypto/src/salsa.rs @@ -242,14 +242,14 @@ mod tests { use crate::salsa::*; const SALSA_20_TV0_KEY: [u8; 32] = [ - 0x0f, 0x62, 0xb5, 0x08, 0x5b, 0xae, 0x01, 0x54, 0xa7, 0xfa, 0x4d, 0xa0, 0xf3, 0x46, 0x99, 0xec, 0x3f, 0x92, 0xe5, 0x38, 0x8b, 0xde, - 0x31, 0x84, 0xd7, 0x2a, 0x7d, 0xd0, 0x23, 0x76, 0xc9, 0x1c, + 0x0f, 0x62, 0xb5, 0x08, 0x5b, 0xae, 0x01, 0x54, 0xa7, 0xfa, 0x4d, 0xa0, 0xf3, 0x46, 0x99, 0xec, 0x3f, 0x92, 0xe5, 0x38, 0x8b, 0xde, 0x31, + 0x84, 0xd7, 0x2a, 0x7d, 0xd0, 0x23, 0x76, 0xc9, 0x1c, ]; const SALSA_20_TV0_IV: [u8; 8] = [0x28, 0x8f, 0xf6, 0x5d, 0xc4, 0x2b, 0x92, 0xf9]; const SALSA_20_TV0_KS: [u8; 64] = [ - 0x5e, 0x5e, 0x71, 0xf9, 0x01, 0x99, 0x34, 0x03, 0x04, 0xab, 0xb2, 0x2a, 0x37, 0xb6, 0x62, 0x5b, 0xf8, 0x83, 0xfb, 0x89, 0xce, 0x3b, - 0x21, 0xf5, 0x4a, 0x10, 0xb8, 0x10, 0x66, 0xef, 0x87, 0xda, 0x30, 0xb7, 0x76, 0x99, 0xaa, 0x73, 0x79, 0xda, 0x59, 0x5c, 0x77, 0xdd, - 0x59, 0x54, 0x2d, 0xa2, 0x08, 0xe5, 0x95, 0x4f, 0x89, 0xe4, 0x0e, 0xb7, 0xaa, 0x80, 0xa8, 0x4a, 0x61, 0x76, 0x66, 0x3f, + 0x5e, 0x5e, 0x71, 0xf9, 0x01, 0x99, 0x34, 0x03, 0x04, 0xab, 0xb2, 0x2a, 0x37, 0xb6, 0x62, 0x5b, 0xf8, 0x83, 0xfb, 0x89, 0xce, 0x3b, 0x21, + 0xf5, 0x4a, 0x10, 0xb8, 0x10, 0x66, 0xef, 0x87, 0xda, 0x30, 0xb7, 0x76, 0x99, 0xaa, 0x73, 0x79, 0xda, 0x59, 0x5c, 0x77, 0xdd, 0x59, 0x54, + 0x2d, 0xa2, 0x08, 0xe5, 0x95, 0x4f, 0x89, 0xe4, 0x0e, 0xb7, 0xaa, 0x80, 0xa8, 0x4a, 0x61, 0x76, 0x66, 0x3f, ]; #[test] diff --git a/network-hypervisor/src/vl1/endpoint.rs b/network-hypervisor/src/vl1/endpoint.rs index ed43805f8..21a612f65 100644 --- a/network-hypervisor/src/vl1/endpoint.rs +++ b/network-hypervisor/src/vl1/endpoint.rs @@ -216,10 +216,7 @@ impl Marshalable for Endpoint { TYPE_NIL => Ok(Endpoint::Nil), TYPE_ZEROTIER => { let zt = Address::from_bytes_fixed(buf.read_bytes_fixed(cursor)?).ok_or(UnmarshalError::InvalidData)?; - Ok(Endpoint::ZeroTier( - zt, - buf.read_bytes_fixed::(cursor)?.clone(), - )) + Ok(Endpoint::ZeroTier(zt, buf.read_bytes_fixed::(cursor)?.clone())) } TYPE_ETHERNET => Ok(Endpoint::Ethernet(MAC::unmarshal(buf, cursor)?)), TYPE_WIFIDIRECT => Ok(Endpoint::WifiDirect(MAC::unmarshal(buf, cursor)?)), @@ -230,9 +227,7 @@ impl Marshalable for Endpoint { TYPE_HTTP => Ok(Endpoint::Http( String::from_utf8_lossy(buf.read_bytes(buf.read_varint(cursor)? as usize, cursor)?).to_string(), )), - TYPE_WEBRTC => Ok(Endpoint::WebRTC( - buf.read_bytes(buf.read_varint(cursor)? as usize, cursor)?.to_vec(), - )), + TYPE_WEBRTC => Ok(Endpoint::WebRTC(buf.read_bytes(buf.read_varint(cursor)? as usize, cursor)?.to_vec())), TYPE_ZEROTIER_ENCAP => { let zt = Address::from_bytes_fixed(buf.read_bytes_fixed(cursor)?).ok_or(UnmarshalError::InvalidData)?; Ok(Endpoint::ZeroTierEncap(zt, buf.read_bytes_fixed(cursor)?.clone())) @@ -361,10 +356,7 @@ impl FromStr for Endpoint { if endpoint_type == "zt" { return Ok(Endpoint::ZeroTier(Address::from_str(address)?, hash.as_slice().try_into().unwrap())); } else { - return Ok(Endpoint::ZeroTierEncap( - Address::from_str(address)?, - hash.as_slice().try_into().unwrap(), - )); + return Ok(Endpoint::ZeroTierEncap(Address::from_str(address)?, hash.as_slice().try_into().unwrap())); } } } @@ -587,11 +579,7 @@ mod tests { let inet = crate::vl1::InetAddress::from_ip_port(&v, 1234); - for e in [ - Endpoint::Icmp(inet.clone()), - Endpoint::IpTcp(inet.clone()), - Endpoint::IpUdp(inet.clone()), - ] { + for e in [Endpoint::Icmp(inet.clone()), Endpoint::IpTcp(inet.clone()), Endpoint::IpUdp(inet.clone())] { let mut buf = Buffer::<20>::new(); let res = e.marshal(&mut buf); diff --git a/network-hypervisor/src/vl1/identity.rs b/network-hypervisor/src/vl1/identity.rs index ac3793ce5..9b1a33da2 100644 --- a/network-hypervisor/src/vl1/identity.rs +++ b/network-hypervisor/src/vl1/identity.rs @@ -222,9 +222,7 @@ impl Identity { /// It would be possible to change this in the future, with care. pub fn upgrade(&mut self) -> Result { if self.secret.is_none() { - return Err(InvalidParameterError( - "an identity can only be upgraded if it includes its private key", - )); + return Err(InvalidParameterError("an identity can only be upgraded if it includes its private key")); } if self.p384.is_none() { let p384_ecdh = P384KeyPair::generate(); @@ -292,9 +290,8 @@ impl Identity { /// This is somewhat time consuming due to the memory-intensive work algorithm. pub fn validate(self) -> Option> { if let Some(p384) = self.p384.as_ref() { - let mut self_sign_buf: Vec = Vec::with_capacity( - ADDRESS_SIZE + 4 + C25519_PUBLIC_KEY_SIZE + ED25519_PUBLIC_KEY_SIZE + P384_PUBLIC_KEY_SIZE + P384_PUBLIC_KEY_SIZE, - ); + let mut self_sign_buf: Vec = + Vec::with_capacity(ADDRESS_SIZE + 4 + C25519_PUBLIC_KEY_SIZE + ED25519_PUBLIC_KEY_SIZE + P384_PUBLIC_KEY_SIZE + P384_PUBLIC_KEY_SIZE); let _ = self_sign_buf.write_all(&self.address.to_bytes()); let _ = self_sign_buf.write_all(&self.x25519); let _ = self_sign_buf.write_all(&self.ed25519); @@ -331,11 +328,7 @@ impl Identity { /// /// This does NOT validate either identity. Ensure that validation has been performed. pub fn is_upgraded_from(&self, other: &Identity) -> bool { - self.address == other.address - && self.x25519 == other.x25519 - && self.ed25519 == other.ed25519 - && self.p384.is_some() - && other.p384.is_none() + self.address == other.address && self.x25519 == other.x25519 && self.ed25519 == other.ed25519 && self.p384.is_some() && other.p384.is_none() } /// Perform ECDH key agreement, returning a shared secret or None on error. @@ -493,13 +486,12 @@ impl Identity { s.push(':'); } s.push_str(":2:"); // 2 == IDENTITY_ALGORITHM_EC_NIST_P384 - let p384_joined: [u8; P384_PUBLIC_KEY_SIZE + P384_PUBLIC_KEY_SIZE + P384_ECDSA_SIGNATURE_SIZE + ED25519_SIGNATURE_SIZE] = - concat_arrays_4( - p384.ecdh.as_bytes(), - p384.ecdsa.as_bytes(), - &p384.ecdsa_self_signature, - &p384.ed25519_self_signature, - ); + let p384_joined: [u8; P384_PUBLIC_KEY_SIZE + P384_PUBLIC_KEY_SIZE + P384_ECDSA_SIGNATURE_SIZE + ED25519_SIGNATURE_SIZE] = concat_arrays_4( + p384.ecdh.as_bytes(), + p384.ecdsa.as_bytes(), + &p384.ecdsa_self_signature, + &p384.ed25519_self_signature, + ); s.push_str(base64_encode_url_nopad(&p384_joined).as_str()); if self.secret.is_some() && include_private { let secret = self.secret.as_ref().unwrap(); @@ -600,9 +592,7 @@ impl FromStr for Identity { if keys[0].len() != C25519_PUBLIC_KEY_SIZE + ED25519_PUBLIC_KEY_SIZE { return Err(InvalidFormatError); } - if !keys[2].is_empty() - && keys[2].len() != P384_PUBLIC_KEY_SIZE + P384_PUBLIC_KEY_SIZE + P384_ECDSA_SIGNATURE_SIZE + ED25519_SIGNATURE_SIZE - { + if !keys[2].is_empty() && keys[2].len() != P384_PUBLIC_KEY_SIZE + P384_PUBLIC_KEY_SIZE + P384_ECDSA_SIGNATURE_SIZE + ED25519_SIGNATURE_SIZE { return Err(InvalidFormatError); } if !keys[3].is_empty() && keys[3].len() != P384_SECRET_KEY_SIZE + P384_SECRET_KEY_SIZE { @@ -632,8 +622,7 @@ impl FromStr for Identity { Some(IdentityP384Public { ecdh: ecdh.unwrap(), ecdsa: ecdsa.unwrap(), - ecdsa_self_signature: keys[2].as_slice() - [(P384_PUBLIC_KEY_SIZE * 2)..((P384_PUBLIC_KEY_SIZE * 2) + P384_ECDSA_SIGNATURE_SIZE)] + ecdsa_self_signature: keys[2].as_slice()[(P384_PUBLIC_KEY_SIZE * 2)..((P384_PUBLIC_KEY_SIZE * 2) + P384_ECDSA_SIGNATURE_SIZE)] .try_into() .unwrap(), ed25519_self_signature: keys[2].as_slice()[((P384_PUBLIC_KEY_SIZE * 2) + P384_ECDSA_SIGNATURE_SIZE)..] @@ -667,10 +656,8 @@ impl FromStr for Identity { } else { Some(IdentityP384Secret { ecdh: { - let tmp = P384KeyPair::from_bytes( - &keys[2].as_slice()[..P384_PUBLIC_KEY_SIZE], - &keys[3].as_slice()[..P384_SECRET_KEY_SIZE], - ); + let tmp = + P384KeyPair::from_bytes(&keys[2].as_slice()[..P384_PUBLIC_KEY_SIZE], &keys[3].as_slice()[..P384_SECRET_KEY_SIZE]); if tmp.is_none() { return Err(InvalidFormatError); } @@ -711,16 +698,8 @@ impl Marshalable for Identity { let x25519 = buf.read_bytes_fixed::(cursor)?; let ed25519 = buf.read_bytes_fixed::(cursor)?; - let ( - mut ecdh, - mut ecdsa, - mut ecdsa_self_signature, - mut ed25519_self_signature, - mut x25519_s, - mut ed25519_s, - mut ecdh_s, - mut ecdsa_s, - ) = (None, None, None, None, None, None, None, None); + let (mut ecdh, mut ecdsa, mut ecdsa_self_signature, mut ed25519_self_signature, mut x25519_s, mut ed25519_s, mut ecdh_s, mut ecdsa_s) = + (None, None, None, None, None, None, None, None); if type_flags == 0 { const C25519_SECRETS_SIZE: u8 = (C25519_SECRET_KEY_SIZE + ED25519_SECRET_KEY_SIZE) as u8; @@ -736,9 +715,7 @@ impl Marshalable for Identity { _ => return Err(UnmarshalError::InvalidData), } } else { - if (type_flags & (Self::ALGORITHM_X25519 | Self::FLAG_INCLUDES_SECRETS)) - == (Self::ALGORITHM_X25519 | Self::FLAG_INCLUDES_SECRETS) - { + if (type_flags & (Self::ALGORITHM_X25519 | Self::FLAG_INCLUDES_SECRETS)) == (Self::ALGORITHM_X25519 | Self::FLAG_INCLUDES_SECRETS) { x25519_s = Some(buf.read_bytes_fixed::(cursor)?); ed25519_s = Some(buf.read_bytes_fixed::(cursor)?); } @@ -772,17 +749,12 @@ impl Marshalable for Identity { secret: if let Some(x25519_s) = x25519_s { Some(IdentitySecret { x25519: X25519KeyPair::from_bytes(x25519, x25519_s).ok_or(UnmarshalError::InvalidData)?, - ed25519: Ed25519KeyPair::from_bytes(ed25519, ed25519_s.ok_or(UnmarshalError::InvalidData)?) - .ok_or(UnmarshalError::InvalidData)?, + ed25519: Ed25519KeyPair::from_bytes(ed25519, ed25519_s.ok_or(UnmarshalError::InvalidData)?).ok_or(UnmarshalError::InvalidData)?, p384: if let Some(ecdh_s) = ecdh_s { Some(IdentityP384Secret { - ecdh: P384KeyPair::from_bytes(ecdh.ok_or(UnmarshalError::InvalidData)?, ecdh_s) + ecdh: P384KeyPair::from_bytes(ecdh.ok_or(UnmarshalError::InvalidData)?, ecdh_s).ok_or(UnmarshalError::InvalidData)?, + ecdsa: P384KeyPair::from_bytes(ecdsa.ok_or(UnmarshalError::InvalidData)?, ecdsa_s.ok_or(UnmarshalError::InvalidData)?) .ok_or(UnmarshalError::InvalidData)?, - ecdsa: P384KeyPair::from_bytes( - ecdsa.ok_or(UnmarshalError::InvalidData)?, - ecdsa_s.ok_or(UnmarshalError::InvalidData)?, - ) - .ok_or(UnmarshalError::InvalidData)?, }) } else { None @@ -810,9 +782,7 @@ impl Eq for Identity {} impl Ord for Identity { #[inline(always)] fn cmp(&self, other: &Self) -> Ordering { - self.address - .cmp(&other.address) - .then_with(|| self.fingerprint.cmp(&other.fingerprint)) + self.address.cmp(&other.address).then_with(|| self.fingerprint.cmp(&other.fingerprint)) } } @@ -941,11 +911,7 @@ mod tests { let gen_unmarshaled = Identity::from_bytes(bytes.as_bytes()).unwrap(); assert!(gen_unmarshaled.secret.is_some()); if !gen_unmarshaled.eq(&gen) { - println!( - "{} != {}", - hex::to_string(&gen_unmarshaled.fingerprint), - hex::to_string(&gen.fingerprint) - ); + println!("{} != {}", hex::to_string(&gen_unmarshaled.fingerprint), hex::to_string(&gen.fingerprint)); } assert!(Identity::from_str(string.as_str()).unwrap().secret.is_some()); diff --git a/network-hypervisor/src/vl1/inetaddress.rs b/network-hypervisor/src/vl1/inetaddress.rs index c95de313e..bbfed8651 100644 --- a/network-hypervisor/src/vl1/inetaddress.rs +++ b/network-hypervisor/src/vl1/inetaddress.rs @@ -892,11 +892,7 @@ impl Marshalable for InetAddress { AF_INET6 => { let b = buf.append_bytes_fixed_get_mut::<19>()?; b[0] = 6; - copy_nonoverlapping( - (&(self.sin6.sin6_addr) as *const in6_addr).cast::(), - b.as_mut_ptr().offset(1), - 16, - ); + copy_nonoverlapping((&(self.sin6.sin6_addr) as *const in6_addr).cast::(), b.as_mut_ptr().offset(1), 16); b[17] = *(&self.sin6.sin6_port as *const u16).cast::(); b[18] = *(&self.sin6.sin6_port as *const u16).cast::().offset(1); } @@ -913,10 +909,7 @@ impl Marshalable for InetAddress { Ok(InetAddress::from_ip_port(&b[0..4], u16::from_be_bytes(b[4..6].try_into().unwrap()))) } else if t == 6 { let b: &[u8; 18] = buf.read_bytes_fixed(cursor)?; - Ok(InetAddress::from_ip_port( - &b[0..16], - u16::from_be_bytes(b[16..18].try_into().unwrap()), - )) + Ok(InetAddress::from_ip_port(&b[0..16], u16::from_be_bytes(b[16..18].try_into().unwrap()))) } else { Ok(InetAddress::new()) } diff --git a/network-hypervisor/src/vl1/mac.rs b/network-hypervisor/src/vl1/mac.rs index 820d7939f..81c709929 100644 --- a/network-hypervisor/src/vl1/mac.rs +++ b/network-hypervisor/src/vl1/mac.rs @@ -27,12 +27,7 @@ impl MAC { pub fn from_bytes(b: &[u8]) -> Option { if b.len() >= 6 { NonZeroU64::new( - (b[0] as u64) << 40 - | (b[1] as u64) << 32 - | (b[2] as u64) << 24 - | (b[3] as u64) << 16 as u64 - | (b[4] as u64) << 8 - | b[5] as u64, + (b[0] as u64) << 40 | (b[1] as u64) << 32 | (b[2] as u64) << 24 | (b[3] as u64) << 16 as u64 | (b[4] as u64) << 8 | b[5] as u64, ) .map(|i| MAC(i)) } else { @@ -94,10 +89,7 @@ impl Marshalable for MAC { impl ToString for MAC { fn to_string(&self) -> String { let b: [u8; 6] = self.to_bytes(); - format!( - "{:0>2x}:{:0>2x}:{:0>2x}:{:0>2x}:{:0>2x}:{:0>2x}", - b[0], b[1], b[2], b[3], b[4], b[5] - ) + format!("{:0>2x}:{:0>2x}:{:0>2x}:{:0>2x}:{:0>2x}:{:0>2x}", b[0], b[1], b[2], b[3], b[4], b[5]) } } diff --git a/network-hypervisor/src/vl1/node.rs b/network-hypervisor/src/vl1/node.rs index 98a63bf89..4db0ec531 100644 --- a/network-hypervisor/src/vl1/node.rs +++ b/network-hypervisor/src/vl1/node.rs @@ -388,14 +388,7 @@ impl Node { /// Get the root sets that this node trusts. #[inline] pub fn root_sets(&self) -> Vec { - self.roots - .read() - .unwrap() - .sets - .values() - .cloned() - .map(|s| s.remove_typestate()) - .collect() + self.roots.read().unwrap().sets.values().cloned().map(|s| s.remove_typestate()).collect() } pub fn do_background_tasks(&self, app: &Application) -> Duration { @@ -463,8 +456,7 @@ impl Node { for (_, rs) in roots.sets.iter() { for m in rs.members.iter() { - if m.endpoints.is_some() && !address_collisions.contains(&m.identity.address) && !m.identity.eq(&self.identity) - { + if m.endpoints.is_some() && !address_collisions.contains(&m.identity.address) && !m.identity.eq(&self.identity) { debug_event!( app, "[vl1] examining root {} with {} endpoints", @@ -551,11 +543,7 @@ impl Node { ); *best_root = best.clone(); } else { - debug_event!( - app, - "[vl1] selected new best root: {} (was empty)", - best.identity.address.to_string() - ); + debug_event!(app, "[vl1] selected new best root: {} (was empty)", best.identity.address.to_string()); let _ = best_root.insert(best.clone()); } } @@ -648,11 +636,7 @@ impl Node { // Lock in write mode and remove dead paths, doing so piecemeal to again avoid blocking. for dp in dead_paths.iter() { - self.paths - .write() - .unwrap() - .get_mut::>() - .remove(dp); + self.paths.write().unwrap().get_mut::>().remove(dp); } // Finally run keepalive sends as a batch. @@ -704,15 +688,9 @@ impl Node { app, "[vl1] {} -> #{} {}->{} length {} (on socket {}@{})", source_endpoint.to_string(), - packet - .bytes_fixed_at::<8>(0) - .map_or("????????????????".into(), |pid| hex::to_string(pid)), - packet - .bytes_fixed_at::<5>(13) - .map_or("??????????".into(), |src| hex::to_string(src)), - packet - .bytes_fixed_at::<5>(8) - .map_or("??????????".into(), |dest| hex::to_string(dest)), + packet.bytes_fixed_at::<8>(0).map_or("????????????????".into(), |pid| hex::to_string(pid)), + packet.bytes_fixed_at::<5>(13).map_or("??????????".into(), |src| hex::to_string(src)), + packet.bytes_fixed_at::<5>(8).map_or("??????????".into(), |dest| hex::to_string(dest)), packet.len(), source_local_socket.to_string(), source_local_interface.to_string() @@ -780,8 +758,7 @@ impl Node { for i in 1..assembled_packet.have { if let Some(f) = assembled_packet.frags[i as usize].as_ref() { if f.len() > v1::FRAGMENT_HEADER_SIZE { - ok |= - combined_packet.append_bytes(&f.as_bytes()[v1::FRAGMENT_HEADER_SIZE..]).is_ok(); + ok |= combined_packet.append_bytes(&f.as_bytes()[v1::FRAGMENT_HEADER_SIZE..]).is_ok(); } } } @@ -831,12 +808,7 @@ impl Node { #[cfg(debug_assertions)] { debug_packet_id = u64::from_be_bytes(packet_header.id); - debug_event!( - app, - "[vl1] [v1] #{:0>16x} forwarding packet to {}", - debug_packet_id, - dest.to_string() - ); + debug_event!(app, "[vl1] [v1] #{:0>16x} forwarding packet to {}", debug_packet_id, dest.to_string()); } if packet_header.increment_hops() > v1::FORWARD_MAX_HOPS { #[cfg(debug_assertions)] @@ -993,10 +965,7 @@ impl Node { time_ticks: i64, ) -> Arc { let paths = self.paths.read().unwrap(); - if let Some(path) = paths - .get::>() - .get(&PathKey::Ref(ep, local_socket)) - { + if let Some(path) = paths.get::>().get(&PathKey::Ref(ep, local_socket)) { path.clone() } else { drop(paths); diff --git a/network-hypervisor/src/vl1/peer.rs b/network-hypervisor/src/vl1/peer.rs index e53800df6..1b2bc3e86 100644 --- a/network-hypervisor/src/vl1/peer.rs +++ b/network-hypervisor/src/vl1/peer.rs @@ -324,11 +324,7 @@ impl Peer { let mut aes_gmac_siv = self.v1_proto_static_secret.aes_gmac_siv.get(); aes_gmac_siv.encrypt_init(&self.v1_proto_next_message_id().to_be_bytes()); - aes_gmac_siv.encrypt_set_aad(&v1::get_packet_aad_bytes( - self.identity.address, - node.identity.address, - flags_cipher_hops, - )); + aes_gmac_siv.encrypt_set_aad(&v1::get_packet_aad_bytes(self.identity.address, node.identity.address, flags_cipher_hops)); let payload = packet.as_bytes_starting_at_mut(v1::HEADER_SIZE).unwrap(); aes_gmac_siv.encrypt_first_pass(payload); aes_gmac_siv.encrypt_first_pass_finish(); @@ -419,8 +415,7 @@ impl Peer { let message_id = self.v1_proto_next_message_id(); { - let f: &mut (v1::PacketHeader, v1::message_component_structs::HelloFixedHeaderFields) = - packet.append_struct_get_mut().unwrap(); + let f: &mut (v1::PacketHeader, v1::message_component_structs::HelloFixedHeaderFields) = packet.append_struct_get_mut().unwrap(); f.0.id = message_id.to_ne_bytes(); f.0.dest = self.identity.address.to_bytes(); f.0.src = node.identity.address.to_bytes(); @@ -545,16 +540,9 @@ impl Peer { return match verb { message_type::VL1_NOP => PacketHandlerResult::Ok, message_type::VL1_HELLO => self.handle_incoming_hello(app, inner, node, time_ticks, message_id, source_path, &payload), - message_type::VL1_ERROR => self.handle_incoming_error( - app, - inner, - node, - time_ticks, - source_path, - packet_header.hops(), - message_id, - &payload, - ), + message_type::VL1_ERROR => { + self.handle_incoming_error(app, inner, node, time_ticks, source_path, packet_header.hops(), message_id, &payload) + } message_type::VL1_OK => self.handle_incoming_ok( app, inner, @@ -567,13 +555,9 @@ impl Peer { &payload, ), message_type::VL1_WHOIS => self.handle_incoming_whois(app, inner, node, time_ticks, message_id, &payload), - message_type::VL1_RENDEZVOUS => { - self.handle_incoming_rendezvous(app, node, time_ticks, message_id, source_path, &payload) - } + message_type::VL1_RENDEZVOUS => self.handle_incoming_rendezvous(app, node, time_ticks, message_id, source_path, &payload), message_type::VL1_ECHO => self.handle_incoming_echo(app, inner, node, time_ticks, message_id, &payload), - message_type::VL1_PUSH_DIRECT_PATHS => { - self.handle_incoming_push_direct_paths(app, node, time_ticks, source_path, &payload) - } + message_type::VL1_PUSH_DIRECT_PATHS => self.handle_incoming_push_direct_paths(app, node, time_ticks, source_path, &payload), message_type::VL1_USER_MESSAGE => self.handle_incoming_user_message(app, node, time_ticks, source_path, &payload), _ => inner.handle_packet(app, node, self, &source_path, packet_header.hops(), message_id, verb, &payload, 1), }; @@ -617,8 +601,7 @@ impl Peer { } self.send(app, node, Some(source_path), time_ticks, |packet| -> Result<(), Infallible> { - let f: &mut (OkHeader, v1::message_component_structs::OkHelloFixedHeaderFields) = - packet.append_struct_get_mut().unwrap(); + let f: &mut (OkHeader, v1::message_component_structs::OkHelloFixedHeaderFields) = packet.append_struct_get_mut().unwrap(); f.0.verb = message_type::VL1_OK; f.0.in_re_verb = message_type::VL1_HELLO; f.0.in_re_message_id = message_id.to_ne_bytes(); diff --git a/network-hypervisor/src/vl2/networkconfig.rs b/network-hypervisor/src/vl2/networkconfig.rs index bf4f1d953..04c1d6435 100644 --- a/network-hypervisor/src/vl2/networkconfig.rs +++ b/network-hypervisor/src/vl2/networkconfig.rs @@ -116,10 +116,7 @@ impl NetworkConfig { d.set_u64(proto_v1_field_name::network_config::VERSION, 6); - d.set_str( - proto_v1_field_name::network_config::NETWORK_ID, - self.network_id.to_string().as_str(), - ); + d.set_str(proto_v1_field_name::network_config::NETWORK_ID, self.network_id.to_string().as_str()); if !self.name.is_empty() { d.set_str(proto_v1_field_name::network_config::NAME, self.name.as_str()); } @@ -253,8 +250,7 @@ impl NetworkConfig { let mut nc = Self::new(nwid, issued_to_address); - d.get_str(proto_v1_field_name::network_config::NAME) - .map(|x| nc.name = x.to_string()); + d.get_str(proto_v1_field_name::network_config::NAME).map(|x| nc.name = x.to_string()); nc.private = d.get_str(proto_v1_field_name::network_config::TYPE).map_or(true, |x| x == "1"); nc.timestamp = d .get_i64(proto_v1_field_name::network_config::TIMESTAMP) @@ -358,16 +354,10 @@ impl NetworkConfig { authentication_expiry_time: d .get_i64(proto_v1_field_name::network_config::SSO_AUTHENTICATION_EXPIRY_TIME) .unwrap_or(0), - issuer_url: d - .get_str(proto_v1_field_name::network_config::SSO_ISSUER_URL) - .unwrap_or("") - .to_string(), + issuer_url: d.get_str(proto_v1_field_name::network_config::SSO_ISSUER_URL).unwrap_or("").to_string(), nonce: d.get_str(proto_v1_field_name::network_config::SSO_NONCE).unwrap_or("").to_string(), state: d.get_str(proto_v1_field_name::network_config::SSO_STATE).unwrap_or("").to_string(), - client_id: d - .get_str(proto_v1_field_name::network_config::SSO_CLIENT_ID) - .unwrap_or("") - .to_string(), + client_id: d.get_str(proto_v1_field_name::network_config::SSO_CLIENT_ID).unwrap_or("").to_string(), }) } @@ -464,10 +454,7 @@ pub struct IpRoute { impl Marshalable for IpRoute { const MAX_MARSHAL_SIZE: usize = (InetAddress::MAX_MARSHAL_SIZE * 2) + 2 + 2; - fn marshal( - &self, - buf: &mut zerotier_utils::buffer::Buffer, - ) -> Result<(), zerotier_utils::marshalable::UnmarshalError> { + fn marshal(&self, buf: &mut zerotier_utils::buffer::Buffer) -> Result<(), zerotier_utils::marshalable::UnmarshalError> { self.target.marshal(buf)?; if let Some(via) = self.via.as_ref() { via.marshal(buf)?; diff --git a/service/src/main.rs b/service/src/main.rs index 52fe57242..5927891cb 100644 --- a/service/src/main.rs +++ b/service/src/main.rs @@ -171,10 +171,7 @@ fn main() { if suggested.is_empty() { eprintln!("Unrecognized option '{}'. Use 'help' for help.", invalid); } else { - eprintln!( - "Unrecognized option '{}', did you mean {}? Use 'help' for help.", - invalid, suggested - ); + eprintln!("Unrecognized option '{}', did you mean {}? Use 'help' for help.", invalid, suggested); } } std::process::exit(exitcode::ERR_USAGE); @@ -184,9 +181,7 @@ fn main() { let flags = Flags { json_output: global_args.is_present("json"), - base_path: global_args - .value_of("path") - .map_or_else(platform_default_home_path, |p| p.to_string()), + base_path: global_args.value_of("path").map_or_else(platform_default_home_path, |p| p.to_string()), auth_token_path_override: global_args.value_of("token_path").map(|p| p.to_string()), auth_token_override: global_args.value_of("token").map(|t| t.to_string()), }; diff --git a/utils/src/dictionary.rs b/utils/src/dictionary.rs index f9dd18b73..db47b3d86 100644 --- a/utils/src/dictionary.rs +++ b/utils/src/dictionary.rs @@ -93,13 +93,11 @@ impl Dictionary { } pub fn get_u64(&self, k: &str) -> Option { - self.get_str(k) - .map_or(None, |s| u64::from_str_radix(s, 16).map_or(None, |i| Some(i))) + self.get_str(k).map_or(None, |s| u64::from_str_radix(s, 16).map_or(None, |i| Some(i))) } pub fn get_i64(&self, k: &str) -> Option { - self.get_str(k) - .map_or(None, |s| i64::from_str_radix(s, 16).map_or(None, |i| Some(i))) + self.get_str(k).map_or(None, |s| i64::from_str_radix(s, 16).map_or(None, |i| Some(i))) } pub fn get_bool(&self, k: &str) -> Option { diff --git a/utils/src/json.rs b/utils/src/json.rs index 8b76fd10e..4d83e6941 100644 --- a/utils/src/json.rs +++ b/utils/src/json.rs @@ -44,11 +44,7 @@ pub fn json_patch(target: &mut serde_json::value::Value, source: &serde_json::va /// /// If there are no changes, None is returned. The depth limit is passed through to json_patch and /// should be set to a sanity check value to prevent overflows. -pub fn json_patch_object( - obj: O, - patch: &str, - depth_limit: usize, -) -> Result, serde_json::Error> { +pub fn json_patch_object(obj: O, patch: &str, depth_limit: usize) -> Result, serde_json::Error> { serde_json::from_str::(patch).map_or_else( |e| Err(e), |patch| { diff --git a/utils/src/lib.rs b/utils/src/lib.rs index c9dc4da25..8f211d91e 100644 --- a/utils/src/lib.rs +++ b/utils/src/lib.rs @@ -55,10 +55,7 @@ pub fn base64_decode_url_nopad(b64: &str) -> Option> { /// Get milliseconds since unix epoch. #[inline] pub fn ms_since_epoch() -> i64 { - std::time::SystemTime::now() - .duration_since(std::time::UNIX_EPOCH) - .unwrap() - .as_millis() as i64 + std::time::SystemTime::now().duration_since(std::time::UNIX_EPOCH).unwrap().as_millis() as i64 } /// Get milliseconds since an arbitrary time in the past, guaranteed to monotonically increase. diff --git a/vl1-service/src/constants.rs b/vl1-service/src/constants.rs index 436708eee..070e111ac 100644 --- a/vl1-service/src/constants.rs +++ b/vl1-service/src/constants.rs @@ -2,15 +2,15 @@ /// A list of unassigned or obsolete ports under 1024 that could possibly be squatted. pub const UNASSIGNED_PRIVILEGED_PORTS: [u16; 299] = [ - 4, 6, 8, 10, 12, 14, 15, 16, 26, 28, 30, 32, 34, 36, 40, 60, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 285, 288, 289, 290, - 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 703, 708, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, - 728, 732, 733, 734, 735, 736, 737, 738, 739, 740, 743, 745, 746, 755, 756, 766, 768, 778, 779, 781, 782, 783, 784, 785, 786, 787, 788, - 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 802, 803, 804, 805, 806, 807, 808, 809, 811, 812, 813, 814, 815, 816, 817, 818, - 819, 820, 821, 822, 823, 824, 825, 826, 827, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 849, 850, 851, 852, 853, - 854, 855, 856, 857, 858, 859, 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, - 884, 885, 889, 890, 891, 892, 893, 894, 895, 896, 897, 898, 899, 904, 905, 906, 907, 908, 909, 910, 911, 914, 915, 916, 917, 918, 919, - 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, - 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, - 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1023, + 4, 6, 8, 10, 12, 14, 15, 16, 26, 28, 30, 32, 34, 36, 40, 60, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 285, 288, 289, 290, 291, 292, + 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 334, 335, 336, 337, + 338, 339, 340, 341, 342, 343, 703, 708, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 732, 733, 734, 735, 736, + 737, 738, 739, 740, 743, 745, 746, 755, 756, 766, 768, 778, 779, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, + 797, 798, 799, 802, 803, 804, 805, 806, 807, 808, 809, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 834, + 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, 862, 863, 864, 865, 866, 867, + 868, 869, 870, 871, 872, 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, 885, 889, 890, 891, 892, 893, 894, 895, 896, 897, 898, 899, 904, + 905, 906, 907, 908, 909, 910, 911, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 930, 931, 932, 933, 934, 935, + 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, + 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 1001, 1002, 1003, 1004, + 1005, 1006, 1007, 1008, 1009, 1023, ]; diff --git a/vl1-service/src/sys/udp.rs b/vl1-service/src/sys/udp.rs index ba8d3a949..19a950e46 100644 --- a/vl1-service/src/sys/udp.rs +++ b/vl1-service/src/sys/udp.rs @@ -31,11 +31,7 @@ fn socket_read_concurrency() -> usize { unsafe { let mut t = THREADS_PER_SOCKET; if t == 0 { - t = std::thread::available_parallelism() - .unwrap() - .get() - .max(1) - .min(MAX_PER_SOCKET_CONCURRENCY); + t = std::thread::available_parallelism().unwrap().get().max(1).min(MAX_PER_SOCKET_CONCURRENCY); THREADS_PER_SOCKET = t; } t @@ -43,13 +39,7 @@ fn socket_read_concurrency() -> usize { } pub trait UdpPacketHandler: Send + Sync { - fn incoming_udp_packet( - self: &Arc, - time_ticks: i64, - socket: &Arc, - source_address: &InetAddress, - packet: PooledPacketBuffer, - ); + fn incoming_udp_packet(self: &Arc, time_ticks: i64, socket: &Arc, source_address: &InetAddress, packet: PooledPacketBuffer); } /// A local port to which one or more UDP sockets is bound. diff --git a/vl1-service/src/vl1service.rs b/vl1-service/src/vl1service.rs index e6ed37682..f7f8c6669 100644 --- a/vl1-service/src/vl1service.rs +++ b/vl1-service/src/vl1service.rs @@ -113,8 +113,7 @@ impl VL1Service { if !state.settings.fixed_ports.contains(p) { let (total_smart_ptr_handles, most_recent_receive) = s.read().unwrap().liveness(); if total_smart_ptr_handles < most_stale_binding_liveness.0 - || (total_smart_ptr_handles == most_stale_binding_liveness.0 - && most_recent_receive <= most_stale_binding_liveness.1) + || (total_smart_ptr_handles == most_stale_binding_liveness.0 && most_recent_receive <= most_stale_binding_liveness.1) { most_stale_binding_liveness.0 = total_smart_ptr_handles; most_stale_binding_liveness.1 = most_recent_receive; diff --git a/vl1-service/src/vl1settings.rs b/vl1-service/src/vl1settings.rs index 1e928ea14..56bc4bf37 100644 --- a/vl1-service/src/vl1settings.rs +++ b/vl1-service/src/vl1settings.rs @@ -27,8 +27,7 @@ pub struct VL1Settings { impl VL1Settings { #[cfg(target_os = "macos")] - pub const DEFAULT_PREFIX_BLACKLIST: [&'static str; 11] = - ["lo", "utun", "gif", "stf", "iptap", "pktap", "feth", "zt", "llw", "anpi", "bridge"]; + pub const DEFAULT_PREFIX_BLACKLIST: [&'static str; 11] = ["lo", "utun", "gif", "stf", "iptap", "pktap", "feth", "zt", "llw", "anpi", "bridge"]; #[cfg(target_os = "linux")] pub const DEFAULT_PREFIX_BLACKLIST: [&'static str; 5] = ["lo", "tun", "tap", "ipsec", "zt"]; diff --git a/zssp/src/fragged.rs b/zssp/src/fragged.rs index e1b0629e6..77ac96d44 100644 --- a/zssp/src/fragged.rs +++ b/zssp/src/fragged.rs @@ -39,13 +39,7 @@ impl Fragged { unsafe { zeroed() } } - pub fn assemble( - &mut self, - counter: u64, - fragment: Fragment, - fragment_no: u8, - fragment_count: u8, - ) -> Option> { + pub fn assemble(&mut self, counter: u64, fragment: Fragment, fragment_no: u8, fragment_count: u8) -> Option> { if fragment_no < fragment_count && (fragment_count as usize) <= MAX_FRAGMENTS { debug_assert!((fragment_count as usize) <= MAX_FRAGMENTS); debug_assert!((fragment_no as usize) < MAX_FRAGMENTS);