summaryrefslogtreecommitdiffhomepage
path: root/mullvad-management-interface/src
diff options
context:
space:
mode:
authorDavid Lönnhager <david.l@mullvad.net>2024-08-14 13:21:07 +0200
committerDavid Lönnhager <david.l@mullvad.net>2024-08-16 09:13:30 +0200
commit57285fa162fced4bd62ff6bb7b71e1e0ccd42309 (patch)
tree7b39314a6c384b8cce7bc091d0a7d9a99e6cb819 /mullvad-management-interface/src
parent7b305bf624fe19e783fba8a46edf9fa54ed0d1d0 (diff)
downloadmullvadvpn-57285fa162fced4bd62ff6bb7b71e1e0ccd42309.tar.xz
mullvadvpn-57285fa162fced4bd62ff6bb7b71e1e0ccd42309.zip
Use range types for all port ranges
Breaks backwards compatibility with relays.json (which is acceptable)
Diffstat (limited to 'mullvad-management-interface/src')
-rw-r--r--mullvad-management-interface/src/types/conversions/relay_list.rs43
1 files changed, 21 insertions, 22 deletions
diff --git a/mullvad-management-interface/src/types/conversions/relay_list.rs b/mullvad-management-interface/src/types/conversions/relay_list.rs
index 83f56b1595..e38b32eeed 100644
--- a/mullvad-management-interface/src/types/conversions/relay_list.rs
+++ b/mullvad-management-interface/src/types/conversions/relay_list.rs
@@ -1,5 +1,6 @@
use std::{
net::{Ipv4Addr, Ipv6Addr},
+ ops::RangeInclusive,
str::FromStr,
};
@@ -79,11 +80,11 @@ impl From<mullvad_types::relay_list::WireguardEndpointData> for proto::Wireguard
}
}
-impl From<(u16, u16)> for proto::PortRange {
- fn from(range: (u16, u16)) -> Self {
+impl From<RangeInclusive<u16>> for proto::PortRange {
+ fn from(range: RangeInclusive<u16>) -> Self {
proto::PortRange {
- first: u32::from(range.0),
- last: u32::from(range.1),
+ first: u32::from(*range.start()),
+ last: u32::from(*range.end()),
}
}
}
@@ -373,14 +374,8 @@ impl TryFrom<proto::WireguardEndpointData> for mullvad_types::relay_list::Wiregu
let port_ranges = wireguard
.port_ranges
.into_iter()
- .map(|range| {
- let first = u16::try_from(range.first)
- .map_err(|_| FromProtobufTypeError::InvalidArgument("invalid wg port"))?;
- let last = u16::try_from(range.last)
- .map_err(|_| FromProtobufTypeError::InvalidArgument("invalid wg port"))?;
- Ok((first, last))
- })
- .collect::<Result<Vec<(u16, u16)>, FromProtobufTypeError>>()?;
+ .map(RangeInclusive::try_from)
+ .collect::<Result<Vec<_>, FromProtobufTypeError>>()?;
let ipv4_gateway = Ipv4Addr::from_str(&wireguard.ipv4_gateway)
.map_err(|_| FromProtobufTypeError::InvalidArgument("Invalid IPv4 gateway"))?;
@@ -390,16 +385,8 @@ impl TryFrom<proto::WireguardEndpointData> for mullvad_types::relay_list::Wiregu
let shadowsocks_port_ranges = wireguard
.shadowsocks_port_ranges
.into_iter()
- .map(|range| {
- let first = u16::try_from(range.first).map_err(|_| {
- FromProtobufTypeError::InvalidArgument("invalid shadowsocks port")
- })?;
- let last = u16::try_from(range.last).map_err(|_| {
- FromProtobufTypeError::InvalidArgument("invalid shadowsocks port")
- })?;
- Ok((first, last))
- })
- .collect::<Result<Vec<(u16, u16)>, FromProtobufTypeError>>()?;
+ .map(RangeInclusive::try_from)
+ .collect::<Result<Vec<_>, FromProtobufTypeError>>()?;
let udp2tcp_ports = wireguard
.udp2tcp_ports
@@ -419,3 +406,15 @@ impl TryFrom<proto::WireguardEndpointData> for mullvad_types::relay_list::Wiregu
})
}
}
+
+impl TryFrom<proto::PortRange> for RangeInclusive<u16> {
+ type Error = FromProtobufTypeError;
+
+ fn try_from(range: proto::PortRange) -> Result<Self, Self::Error> {
+ let first = u16::try_from(range.first)
+ .map_err(|_| FromProtobufTypeError::InvalidArgument("invalid port"))?;
+ let last = u16::try_from(range.last)
+ .map_err(|_| FromProtobufTypeError::InvalidArgument("invalid port"))?;
+ Ok(first..=last)
+ }
+}