summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorOdd Stranne <odd@mullvad.net>2020-01-31 19:06:49 +0100
committerOdd Stranne <odd@mullvad.net>2020-02-03 13:42:46 +0100
commitb0c0b86acd7b147a1dfcbee71e4d00dcb22ea711 (patch)
tree773b228b81dc23d303140ef4e72ad4008a70621b
parent33b61325f9c025cf73e24be9f99c8ed5d5e9789e (diff)
downloadmullvadvpn-b0c0b86acd7b147a1dfcbee71e4d00dcb22ea711.tar.xz
mullvadvpn-b0c0b86acd7b147a1dfcbee71e4d00dcb22ea711.zip
Fix calls to FormatIpv4
-rw-r--r--windows/winnet/src/winnet/routing/routemanager.cpp31
1 files changed, 9 insertions, 22 deletions
diff --git a/windows/winnet/src/winnet/routing/routemanager.cpp b/windows/winnet/src/winnet/routing/routemanager.cpp
index 8a57a1e088..81ee4e3d96 100644
--- a/windows/winnet/src/winnet/routing/routemanager.cpp
+++ b/windows/winnet/src/winnet/routing/routemanager.cpp
@@ -162,29 +162,19 @@ InterfaceAndGateway ResolveNode(ADDRESS_FAMILY family, const std::optional<Node>
return InterfaceAndGateway{ InterfaceLuidFromGateway(node.gateway().value()), node.gateway().value() };
}
-// TODO: Move to libcommon
-uint32_t ByteSwap(uint32_t val)
-{
- return
- (
- ((val & 0xFF) << 24) |
- ((val & 0xFF00) << 8) |
- ((val & 0xFF0000) >> 8) |
- ((val & 0xFF000000) >> 24)
- );
-}
-
std::wstring FormatNetwork(const Network &network)
{
+ using namespace common::string;
+
switch (network.Prefix.si_family)
{
case AF_INET:
{
- return common::string::FormatIpv4(ByteSwap(network.Prefix.Ipv4.sin_addr.s_addr), network.PrefixLength);
+ return FormatIpv4<AddressOrder::NetworkByteOrder>(network.Prefix.Ipv4.sin_addr.s_addr, network.PrefixLength);
}
case AF_INET6:
{
- return common::string::FormatIpv6(network.Prefix.Ipv6.sin6_addr.u.Byte, network.PrefixLength);
+ return FormatIpv6(network.Prefix.Ipv6.sin6_addr.u.Byte, network.PrefixLength);
}
default:
{
@@ -491,10 +481,7 @@ void RouteManager::undoEvents(const std::vector<EventEntry> &eventLog)
// static
std::wstring RouteManager::FormatRegisteredRoute(const RegisteredRoute &route)
{
- //
- // TODO: Fix broken IP formatting
- // Update FormatIpv4 function with an additional argument to specify network/host byte order.
- //
+ using namespace common::string;
std::wstringstream ss;
@@ -504,10 +491,10 @@ std::wstring RouteManager::FormatRegisteredRoute(const RegisteredRoute &route)
if (0 != route.nextHop.Ipv4.sin_addr.s_addr)
{
- gateway = common::string::FormatIpv4(ByteSwap(route.nextHop.Ipv4.sin_addr.s_addr));
+ gateway = FormatIpv4<AddressOrder::NetworkByteOrder>(route.nextHop.Ipv4.sin_addr.s_addr);
}
- ss << common::string::FormatIpv4(ByteSwap(route.network.Prefix.Ipv4.sin_addr.s_addr), route.network.PrefixLength)
+ ss << FormatIpv4<AddressOrder::NetworkByteOrder>(route.network.Prefix.Ipv4.sin_addr.s_addr, route.network.PrefixLength)
<< L" with gateway " << gateway
<< L" on interface with LUID 0x" << std::hex << route.luid.Value;
}
@@ -520,10 +507,10 @@ std::wstring RouteManager::FormatRegisteredRoute(const RegisteredRoute &route)
if (0 != std::accumulate(begin, end, 0))
{
- gateway = common::string::FormatIpv6(route.nextHop.Ipv6.sin6_addr.u.Byte);
+ gateway = FormatIpv6(route.nextHop.Ipv6.sin6_addr.u.Byte);
}
- ss << common::string::FormatIpv6(route.network.Prefix.Ipv6.sin6_addr.u.Byte, route.network.PrefixLength)
+ ss << FormatIpv6(route.network.Prefix.Ipv6.sin6_addr.u.Byte, route.network.PrefixLength)
<< L" with gateway " << gateway
<< L" on interface with LUID 0x" << std::hex << route.luid.Value;
}